I have accidentally come across this paper https=
://link.springer.com/content/pdf/10.1007/s00466-018-1544-2.pdf which mi=
ght be relevant to this discussion.

BR

K=
ostas

On Thu, May 28, 2020 at 11:56 AM Yves Renard <yves.renard@insa-lyon.fr> wrote:

Dear Kostas,

ALL means INSIDE and OUTSIDE. This is the usefull option since the case to = have to integrate simultaneously the same term on the domain an on the inte= rface does not happen in practice.

This is not so easy here because Gauss points on the interface are some int= ernal Gauss points of the elements cut by the level-set. We can add them, b= ut sometimes it will be necessry to set their respective weights to zero (t= o integrate on the domain) and on the contrary to set the weight of real in= ternal Gauss points to zero (to integrate on the boundary). In practice, th= is means that two different mesh_im are needed with the same Gauss points a= nd different weights.

And of course, you are right, in case of evolving interface, some Gauss poi= nts will appear and some will deseapper, which will cause some difficulties= !

This would say, in the case of a moving interface, that the interpolation o= f the plastic strain on the interface is probably the better strategy.

Best regards,

Yves

----- Mail original -----

De: "logari81" <logari81@googlemail.com>

=C3=80: "yves renard" <yves.renard@insa-lyon.fr>

Cc: "Heungson Lee" <heungson.lee@gmail.com>, "getfem-users" = <Getfem-use= rs@nongnu.org>

Envoy=C3=A9: Mercredi 27 Mai 2020 18:41:03

Objet: Re: Imposing Dirichlet B.C. using Nitsche's method in fictitious= domains for elastoplasticity.

Dear Yves,

Regarding the first adaptation of mesh_im_level_set, do you mean to combine=

INSIDE, OUTSIDE and BOUNDARY? Isn't this what the ALL keyword is about?= I

am probably missing something here.

[image: image.png]

Regarding supporting a mesh_im_level_set based mim_data object. You mean

for a static/fixed level-set right? Because for a level-set that evolves

any information on integration points on the interface will be lost afterthe interface moves. But maybe this is not the case you are talking abouthere.

Best regards

Kostas

On Tue, May 26, 2020 at 5:51 PM Yves Renard <yves.renard@insa-lyon.fr>

wrote:

>

> Dear=C2=A0 Heungson Lee,

>

> I hadn't thought about this case (fictitious domain). You are righ= t, the

> cut integration methods do not support to have both integration points= for

> the elements and for the interface.

> Clearly, it would need two adaptations:

> - mesh_im_level_set level-set object to support both integration point= s on

> the interface and elements.

> - mim_data object to support mesh_im_level_set object, which is not do= ne

> for the moment

> Both seems to be not so complex adaptations (it would need to investig= ate

> a little more, though).

>

> Best regards,

>

> Yves.

>

>

> ----- Mail original -----

> De: "Heungson Lee" <heungson.lee@gmail.com>

> =C3=80: "yves renard" <yves.renard@insa-lyon.fr>

> Cc: "getfem-users" <Getfem-users@nongnu.org>

> Envoy=C3=A9: Mardi 26 Mai 2020 09:23:45

> Objet: Re: Imposing Dirichlet B.C. using Nitsche's method in ficti= tious

> domains for elastoplasticity.

>

> Dear Yves Renard and getfem users.

>

> I am trying to add boundaries to MeshImData. However, in case of a

> fictitious domain method with boundaries specified by a levelset, I wa= s not

> able to find a way to select boundary regions and include it in MeshIm= as

> we do for conforming meshes. The problem is that MeshImData doesn'= t work

> with MeshIm produced with expressions other than 'all(a)'.

>

> I tried these

>

> 1. Because I wanted to add boundary to MeshIm object, I first tried

> mim =3D gf.MeshIm('levelset',mesh_ls,'inside(a)+boundary(a= )',

> gf.Integ('IM_TRIANGLE(6)'))

>

> but the function does not accept expressions like 'inside(a)+bound= ary(a)'.

> 2. In case I use the following script

> mim =3D gf.MeshIm('levelset',mesh_ls,'inside(a)', gf.I= nteg('IM_TRIANGLE(6)'))

> mim.set_integ(4)

>

> This also failed at the line

> mim_data =3D gf.MeshImData(mim, -1, [2, 2])

> And even if I use 'all(a)' there seems to be no way to provide= the boundary

> regions to Neumann term and to add_Dirichlet_condition_with_Nitsche_me= thod

> function.

>

> 3. I also tried to separately generate MeshIm,mim =3D

> gf.MeshIm('levelset',mesh_ls,'inside(a)', gf.Integ(= 9;IM_TRIANGLE(6)'))

> mim_bound =3D gf.MeshIm('levelset',mesh_ls,'boundary(a)= 9;,

> gf.Integ('IM_TRIANGLE(6)'))

> but this also failed at mim_bound_data =3D gf.MeshImData(mim_bound, -1= , [2,

> 2])

>

> 4. using cut_mesh() of MeshLevelSet

> These meshes are composed of rectangular elements and triangle element= s (

> rectangular elements cut by a level set). And I was not able to define=

> MeshIm that works with this composition.

>

> Am I missing something here?

>

> Respectfully yours.

>

>

> On Thu, May 21, 2020 at 8:21 PM Yves Renard <yves.renard@insa-lyon.fr>

> wrote:

>

> >

> > Dear Heungson Lee,

> >

> > There is a priori two known approaches for the used of Nitsche= 9;s methode

> > for plasticity. The easiest is to consider some additional Gauss = points

> on

> > the boundary in order to have the plastic strain there as you men= tion, or

> > to extrapolate it from the internal Gauss points as it is mention= ned for

> > instance in Seitz thesis

> > https://mediatum.ub.tum.de/doc/1454145/1= 454145.pdf

> >

> > For the first approach (additional Gauss points on the boundary) = you can

> > normally specify a mesh region where you include both the domain = and the

> > boundary where you want to prescribe the Dirichlet condition, whi= ch means

> > that the region will contain both some elements and some faces of=

> elements.

> > Then you create the mim_data object with this mesh region.

> >

> >

> > Concerning the variants with nonzero theta parameter, this is ind= eed

> > complicated for nonlinear material laws, since the constitutive l= aw has

> to

> > be derivated. This is much more complicated for plasticity where = the

> > constitutive law is only piecewise regular and thus cannot be der= ivated

> > twice for the solve with Newton algorithm. So it seems that, unle= ss the

> use

> > of a regularization, the only variant of Nitsche's method tha= t can be use

> > for plasticity is the one with theta =3D 0.

> >

> > Best regards,

> >

> > Yves

> >

> >

> >

> > ----- Mail original -----

> > De: "Heungson Lee" <heungson.lee@gmail.com>

> > =C3=80: "getfem-users" <Getfem-users@nongnu.org>

> > Envoy=C3=A9: Lundi 18 Mai 2020 09:07:18

> > Objet: Imposing Dirichlet B.C. using Nitsche's method in fict= itious

> > domains for elastoplasticity.

> >

> > Dear getfem++ users. I am Heungson Lee.

> >

> >=C2=A0 I am trying to impose Dirichlet B.C. using Nitsche's me= thod in

> fictitious

> > domains for elastoplasticity. For linear elastic problems, it jus= t works

> > fine. But for elastoplastic problems such as Prandtl Reuss plasti= city, I

> > was not able to make it work.

> >

> > I think the major problem is:

> >

> > 1. Stress tensor and its variation on the Dirichlet boundary.

> > -> Nitsche's method brick requires Neumann term on the bou= ndary which

> uses

> > plastic strain. And the elastoplasticity brick requires plastic s= train to

> > be stored in MeshImData. I was not able to find a way to compute = plastic

> > strain on the boundary and store it in MeshImData for this purpos= e.

> >

> > These two problems might be not that important right now.

> >

> > 2. Nitsche's method brick does not recognize nonlinear variab= les for

> small

> > strain elastoplasticity brick.

> > -> So I temporarily modified the getfem source code and python= interface

> > related to the function 'add_Dirichlet_condition_with_Nitsche= _method' to

> > receive an additional boolean parameter from users which tells if= the

> > problem is linear or nonlinear problem. It seems that this walk-a= round

> > works.

> >

> > 3. Fails to calculate the derivative of the Neumann term when the= ta (one

> of

> > Nitsche's method parameter) is not zero.

> > -> It seems that Neumann term includes the Heaviside function = which is

> > originated from the yield function to distinguish whether it'= s in elastic

> > or plastic region. Inside 'add_Dirichlet_condition_with_Nitsc= he_method'

> > function, derivative of the Neumann term is symbolically evaluate= d, but

> it

> > fails because of the Heaviside function.

> >

> >

> > Please refer to the attached file to see what I am trying to do.<= br> > >

> > If you have any idea how to make this work. please let me know. I= would

> > really appreciate it.

> >

> > Respectfully yours.

Dear=C2=A0getfem++ users. I am Heungson=C2=A0Lee.

I am having trouble finding a way to compute local m=
atrices of elements.

To elaborate let's say I =
have a fem variable 'u' for a nonlinear problem which is updated ev=
ery load step.

With this 'u', I want to co=
mpute a local matrix of an element (for example local stiffness matrix) and=
get eigenvalues of this matrix.

I was not able to=
find a way to do this.=C2=A0 FYI, I am using the python interface.

I would really appreciate it if you could give me some ad=
vice on this.

Respec=
tfully yours.

= --000000000000bcd20105a8534111-- From MAILER-DAEMON Sat Jun 20 14:33:46 2020 Received: from list by lists.gnu.org with archive (Exim 4.90_1) id 1jmiJF-00074b-UQ for mharc-getfem-users@gnu.org; Sat, 20 Jun 2020 14:33:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33240) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from

Thank you. Your advice is of great help to me. I've tr=
ied interpolating variables=C2=A0from original=C2=A0elements to=20
discontinuous elements and assembling the matrices with those variables=20
for each nonlinear load step. It seems that it works well.

Respectfully yours.=C2=A0=C2=A0

On Sun, Jun 21, 2020 at 3:33 AM=
Yves Renard <yves.renard@insa-lyon.fr> wrote:

Dear Heungson Lee,

There is indeed no specific function to extract an elementary matrix in Get= fem from the python interface. Of course, one way is to define a discontinu= ous element method corresponding to the finite element you use and then per= form an assembly. Doing that, you will have separate elementary matrices ..= .

If you just want to see what is going on with the elementary matrix, you ca= n also just use the "Print" command of the weak form language (fo= r instance for a Poisson problem "Print(Grad_u.Grad_Test_u)").

Best regards,

Yves

----- Mail original -----

De: "Heungson Lee" <heungson.lee@gmail.com>

=C3=80: "getfem-users" <getfem-users@nongnu.org>

Envoy=C3=A9: Jeudi 18 Juin 2020 05:20:11

Objet: Local stiffness matrix of an each element

Dear getfem++ users. I am Heungson Lee.

I am having trouble finding a way to compute local matrices of elements.

To elaborate let's say I have a fem variable 'u' for a nonlinea= r problem

which is updated every load step.

With this 'u', I want to compute a local matrix of an element (for = example

local stiffness matrix) and get eigenvalues of this matrix.

I was not able to find a way to do this.=C2=A0 FYI, I am using the pythoninterface.

I would really appreciate it if you could give me some advice on this.

Respectfully yours.