getfem-users
[Top][All Lists]

## Re: using level-set for inclusions/non homogeneity

 From: Yves Renard Subject: Re: using level-set for inclusions/non homogeneity Date: Thu, 18 Mar 2021 13:04:00 +0100 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1

Dear Egor,

Yes, If you use the xfem facilities, you can have a single field u cut by the level set and then, a penalty term as you mention
'1e5*(Xfem_plus(u)-Xfem_minus(u)).(Xfem_plus(Test_u)-Xfem_minus(Test_u))'
can prescribe the continuity of the field using an integration on the level-set itslef. Otherwise, you can have two different fields and a penalty term
'1e5*(u1-u2).(Test_u1-Test_u2)'
Both should work (xfem allows to have a single field so may be it is the simplest).

And a Nitsche method to prescribe the continuity should be better, but a first approach with a penalization is ok, of course.

Best regards,

Yves

On 18/03/2021 10:38, Egor Vtorushin wrote:
UPD
Dear Yves,
I think purple one should be like '1e5*(Xfem_plus(u)-Xfem_minus(u)).(Xfem_plus(Test_u)-Xfem_minus(Test_u))'
But anyway i appreciate  any extra hints/thoughts if you would provide some.
Regards, Egor

ср, 17 мар. 2021 г. в 16:28, Egor Vtorushin <vtorushin@gmail.com>:
Dear Yves, thank you for responding!
Looks like I am getting closer to my goal.
But there is a collision with continuity at the interface condition
If I use something like Interior Point condition for example '((u-Interpolate(u,neighbour_elt))*Normal).((Test_u-Interpolate(Test_u,neighbour_elt))*Normal)' there is no level-set zero level faces to apply in mesh linked to  mim_ls_bound integration method i use in assembly
gf.asm('generic', mim_ls_bound, 2, blueExpression, INNER_FACES, 'u', 1, mfls, 0)
here
mim_ls_bound = gf.MeshIm('levelset', mls, 'BOUNDARY', gf.Integ("IM_TRIANGLE(3)"))
mfls = gf.MeshFem('levelset',mls,mfu)
where mls is
mls = gf.MeshLevelSet(m)
for some
ls1 = gf.LevelSet(m, 2, 'x-.25')
lagrangian MeshFem mfu and mesh m

If i use
gf.asm('generic', mim_ls_bound, 2, purpleExpression, -1, 'u', 1, mfls, 0)
I can't use Interpolate(*, neighbour_elt ) term in  purleExpression since there is no convex faces in defined region

This one is not empty : gf.asm('generic', mim_ls_bound, 2, 'Test_u.u', -1, 'u', 1, mfls, 0)
but how to express a jump on interface?

Do you have any thoughts on this? Could you advise me how to implement continuity at the interface condition term properly from your perspective?
I attached a small solid python script as well
Regards, Egor

ср, 17 мар. 2021 г. в 01:38, Yves Renard <Yves.Renard@insa-lyon.fr>:

Dear Egor,

This is of course possible. The best way, I think, is to define two different fields for the matrix and the inclusion by defining an integration method inside the inclusion and outside (If you take only one field for the inclusion and the matrix, you will have some locking effect on the interface). Then you can ensure the continuity at the interface either with a multiplier (but with some possible non satisfaction of the inf-sup condition) or in a better way with Nitsche's method (see Hansbo's publications for instance).

Best regards,

Yves

On 16/03/2021 18:40, Egor Vtorushin wrote:
Dear Yves,
Could you please provide me with a hint on how to implement an inclusion with level set.
I want to implement an inversion/optimization problem with a given conductive homogeneous medium.
There is a dipole  source with given frequency, power and location and i am modeling a field via Helmholtz equation or MaxwelL equation
Then i want to put an anomalous object (that has different non zero conductivity/k ^2) inside the media such a way so field propagation and frequency resolution is sensitive to the anomalia.
My optimization problem is to find the anomalia's position and shape to minimize a misfit with the measured field. It is close to structural_optimization.m example but i don't need holes i need an inclusion.
It still seems to me that it is very reasonable to use a LevelSet based technique to describe the anomalia and its changings.
But using the level-set raises the variable jump immediately instead of the operator coefficient jump that i need for.
I looked through some other examples(like fictitious domains) but still have no way  to come up with.
Please share with me some hints if you have one.
Regards, Egor Vtorushin

```--

Yves Renard (Yves.Renard@insa-lyon.fr)       tel : (33) 04.72.43.87.08
INSA-Lyon
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard

---------
```

```--

Yves Renard (Yves.Renard@insa-lyon.fr)       tel : (33) 04.72.43.87.08
INSA-Lyon
20, rue Albert Einstein
69621 Villeurbanne Cedex, FRANCE
http://math.univ-lyon1.fr/~renard

---------
```