I just had a mistake in the order of the Interpolate arguments, it should be
md.add_interpolate_transformation_from_expression("head_to_tf", *meshh*,
*meshtf*, *"X"*)
md.add_filtered_fem_variable(*"multmortar", mfutf, EDGE_RG*)
md.add_nonlinear_generic_assembly_brick(mim,
"(u_tf-Interpolate(u_head, head_to_tf)).multmortar",
EDGE_RG)

On Fri, Nov 19, 2021 at 12:11 AM Konstantinos Poulios <
logar...@googlemail.com> wrote:

> There are different ways to bind a surface mesh to a volume mesh. If your
> meshes are conformal, i.e. sharing nodes along the interface, you can merge
> all meshes into one mixed mesh and create a mesh_fem on the combined mesh.
> The following example shows a mesh_fem defined on a mixed mesh with common
> nodes between surface and volume elements:
>
> import getfem as gf
> m0 = gf.Mesh('cartesian',[0,1,2,3],[0,1,2],[-1,0])
> m0.add_convex(gf.GeoTrans('GT_QK(2,1)'),[[0,0,-.8, -1],
>                                          [0,1,  0,1.1],
>                                          [0,0,  0,  0]])
> mf0 = gf.MeshFem(m0);
> mf0.set_classical_fem(1)
> mf0.export_to_vtk('mixed_mesh.vtk','ascii')
> print(mf0.nbdof())
>
> The other approach, which is more general is to keep the separate meshes
> and implement a mortar condition between the edge of the surface mesh and
> the volume mesh. To implement such a condition you will need to define a
> multiplier and an interpolation operation between the two domains with
> something like
>
> md.add_interpolate_transformation_from_expression("head_to_tf", *meshh*,
> *meshtf*, *"X"*)
> md.add_filtered_fem_variable(*"multmortar", mfutf, EDGE_RG*)
> md.add_nonlinear_generic_assembly_brick(mim,
> "(u_tf-Interpolate(head_to_tf,u_head)).multmortar", EDGE_RG)
>
> Haven't tested it but conceptually it should work
>
> BR
> Kostas
>
>
>
>
>
>
>
>
>
>
> On Thu, Nov 18, 2021 at 9:37 PM Lesage,Anne Cecile J <
> ajles...@mdanderson.org> wrote:
>
>> Dear all
>>
>>
>>
>> To describe a brain geometrical space contrains, I have three meshes part
>> in my python script
>>
>>
>>
>> meshb=gf.Mesh('import','gid','brainr25tet4h5.GiD.msh')
>>
>> meshtf=gf.Mesh('import','gid','tentoriumfalxr25h5.GiD.msh')
>>
>> meshh=gf.Mesh('import','gid','headr25tet4h5.GiD.msh')
>>
>>
>>
>> meshb and mesh are 3d and meshtf is a fine membrane described by a
>> triangle mesh surface
>>
>>
>>
>> mesh and meshtf are attached at several places (nodes in common), how do
>> I ensure that the fem takes this boundary condition in account?
>>
>>
>>
>> To set up that the brain is sliding without friction inside the head, I
>> wrote the following python lines
>>
>>
>>
>> fbb = meshb.outer_faces()  # Boundary of the brain
>>
>> fbh = meshh.outer_faces()  # Boundary of the head
>>
>>
>>
>> HEAD_BOUND = 1;
>>
>> BRAIN_BOUND = 2;
>>
>>
>>
>> # selection of faces for contact condition
>>
>> meshh.set_region(HEAD_BOUND, fbh)
>>
>> meshb.set_region(BRAIN_BOUND, fbb)
>>
>>
>>
>> md.add_penalized_contact_between_nonmatching_meshes_brick(mim3h, uh, ub,
>> datanamer, HEAD_BOUND, BRAIN_BOUND, 1, lambda1_n)
>>
>>
>>
>> Is it a good option? How to choose the parameters datanamer and lambda1?
>>
>>
>>
>> I would like the brain to slide along the whole meshtf. How to define a
>> set of faces that contains the entire triangles mesh?
>>
>>
>>
>> Thank you
>>
>> Regards
>>
>> Anne-Cecile
>>
>>
>> The information contained in this e-mail message may be privileged,
>> confidential, and/or protected from disclosure. This e-mail message may
>> contain protected health information (PHI); dissemination of PHI should
>> comply with applicable federal and state laws. If you are not the intended
>> recipient, or an authorized representative of the intended recipient, any
>> further review, disclosure, use, dissemination, distribution, or copying of
>> this message or any attachment (or the information contained therein) is
>> strictly prohibited. If you think that you have received this e-mail
>> message in error, please notify the sender by return e-mail and delete all
>> references to it and its contents from your systems.
>>
>

Reply via email to