[Gmsh] Remeshing of deformed meshes and tracking of subdomains

Tim Furlan tim.furlan at tu-dortmund.de
Fri May 29 17:30:19 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 problem.

Kind regard and thanks in advance


More information about the gmsh mailing list