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

BR
Kostas

On Thu, May 28, 2020 at 11:56 AM Yves Renard <[email protected]>
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
> interface does not happen in practice.
>
> This is not so easy here because Gauss points on the interface are some
> internal Gauss points of the elements cut by the level-set. We can add
> them, but sometimes it will be necessry to set their respective weights to
> zero (to integrate on the domain) and on the contrary to set the weight of
> real internal Gauss points to zero (to integrate on the boundary). In
> practice, this means that two different mesh_im are needed with the same
> Gauss points and different weights.
>
> And of course, you are right, in case of evolving interface, some Gauss
> points will appear and some will deseapper, which will cause some
> difficulties !
>
> This would say, in the case of a moving interface, that the interpolation
> of the plastic strain on the interface is probably the better strategy.
>
> Best regards,
>
> Yves
>
>
>
> ----- Mail original -----
> De: "logari81" <[email protected]>
> À: "yves renard" <[email protected]>
> Cc: "Heungson Lee" <[email protected]>, "getfem-users" <
> [email protected]>
> Envoyé: 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 after
> the interface moves. But maybe this is not the case you are talking about
> here.
>
> Best regards
> Kostas
>
> On Tue, May 26, 2020 at 5:51 PM Yves Renard <[email protected]>
> wrote:
>
> >
> > Dear  Heungson Lee,
> >
> > I hadn't thought about this case (fictitious domain). You are right, 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 points
> on
> > the interface and elements.
> > - mim_data object to support mesh_im_level_set object, which is not done
> > for the moment
> > Both seems to be not so complex adaptations (it would need to investigate
> > a little more, though).
> >
> > Best regards,
> >
> > Yves.
> >
> >
> > ----- Mail original -----
> > De: "Heungson Lee" <[email protected]>
> > À: "yves renard" <[email protected]>
> > Cc: "getfem-users" <[email protected]>
> > Envoyé: Mardi 26 Mai 2020 09:23:45
> > Objet: Re: Imposing Dirichlet B.C. using Nitsche's method in fictitious
> > 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 was
> 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 = gf.MeshIm('levelset',mesh_ls,'inside(a)+boundary(a)',
> > gf.Integ('IM_TRIANGLE(6)'))
> >
> > but the function does not accept expressions like
> 'inside(a)+boundary(a)'.
> > 2. In case I use the following script
> > mim = gf.MeshIm('levelset',mesh_ls,'inside(a)',
> gf.Integ('IM_TRIANGLE(6)'))
> > mim.set_integ(4)
> >
> > This also failed at the line
> > mim_data = 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_method
> > function.
> >
> > 3. I also tried to separately generate MeshIm,mim =
> > gf.MeshIm('levelset',mesh_ls,'inside(a)', gf.Integ('IM_TRIANGLE(6)'))
> > mim_bound = gf.MeshIm('levelset',mesh_ls,'boundary(a)',
> > gf.Integ('IM_TRIANGLE(6)'))
> > but this also failed at mim_bound_data = gf.MeshImData(mim_bound, -1, [2,
> > 2])
> >
> > 4. using cut_mesh() of MeshLevelSet
> > These meshes are composed of rectangular elements and triangle elements (
> > 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 <[email protected]>
> > wrote:
> >
> > >
> > > Dear Heungson Lee,
> > >
> > > There is a priori two known approaches for the used of Nitsche'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 mention,
> or
> > > to extrapolate it from the internal Gauss points as it is mentionned
> for
> > > instance in Seitz thesis
> > > https://mediatum.ub.tum.de/doc/1454145/1454145.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, which
> 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 indeed
> > > complicated for nonlinear material laws, since the constitutive law has
> > to
> > > be derivated. This is much more complicated for plasticity where the
> > > constitutive law is only piecewise regular and thus cannot be derivated
> > > twice for the solve with Newton algorithm. So it seems that, unless the
> > use
> > > of a regularization, the only variant of Nitsche's method that can be
> use
> > > for plasticity is the one with theta = 0.
> > >
> > > Best regards,
> > >
> > > Yves
> > >
> > >
> > >
> > > ----- Mail original -----
> > > De: "Heungson Lee" <[email protected]>
> > > À: "getfem-users" <[email protected]>
> > > Envoyé: Lundi 18 Mai 2020 09:07:18
> > > Objet: Imposing Dirichlet B.C. using Nitsche's method in fictitious
> > > domains for elastoplasticity.
> > >
> > > Dear getfem++ users. I am Heungson Lee.
> > >
> > >  I am trying to impose Dirichlet B.C. using Nitsche's method in
> > fictitious
> > > domains for elastoplasticity. For linear elastic problems, it just
> works
> > > fine. But for elastoplastic problems such as Prandtl Reuss plasticity,
> 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 boundary which
> > uses
> > > plastic strain. And the elastoplasticity brick requires plastic strain
> 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 purpose.
> > >
> > > These two problems might be not that important right now.
> > >
> > > 2. Nitsche's method brick does not recognize nonlinear variables 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-around
> > > works.
> > >
> > > 3. Fails to calculate the derivative of the Neumann term when theta
> (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_Nitsche_method'
> > > function, derivative of the Neumann term is symbolically evaluated, but
> > it
> > > fails because of the Heaviside function.
> > >
> > >
> > > Please refer to the attached file to see what I am trying to do.
> > >
> > > If you have any idea how to make this work. please let me know. I would
> > > really appreciate it.
> > >
> > > Respectfully yours.

Reply via email to