[Gmsh] Remeshing of deformed meshes and tracking of subdomains

Tim Furlan tim.furlan at udo.edu
Fri May 29 17:33:34 CEST 2020

Dear gmsh users and developers,

i am dealing with high-deformation FEM simulations involving contact. I
would like to replace the deformed mesh with a new one after a certain
number of steps (potentially many times during one simulation). I use
Abaqus as the FEM solver if it matters, and use the python api of gmsh.

For the remeshing, i create geometrical surfaces for all faces of my
elements on the boundary of the domain. This means also creating lines for
all element edges and keeping track of them, since they might occur more
than once and with different directions.

I need to track certain subdomains (e.g. parts of the surface) to impose
the boundary conditions, and the solution i came up with is to compound
the corresponding surface faces and their respective boundaries (to allow
both refinement and coarsening). To do this, i need to split the
boundaries of the subdomains in a lot of segments (so that they end when a
domain ends).

Tracking the subdomains only through physical tags seems unfeasible since
the subdomain boundaries are then only preserved inaccurately.

I feel that i might be missing an easier way to do what i want. I looked
into the tutorials and found the following options:

- The createGeometry() command is able to create geometry from a mesh
(basically doing what i do by hand i guess?). However, i did not find an
easy way to track boundary conditions using this, as i can not rely on
identifying them by feature angles. Is there any way to obtain the
elements the resulting entities are derived from?

- The tutorial on meshing of discrete curves looks like it follows a
similar approach. However, i was unable to extend this approach to 3d
surfaces. Is it possible to define discrete entities for the different
parts of the body surface i want to remesh instead of using compounds? I
was especially confused with how to handle e.g. element edges that belong
to multiple surface parts.

I would appreciate any input on a more elegant/efficient way to solve the

Kind regard and thanks in advance


More information about the gmsh mailing list