The mmg3d application allows to discretize and optimize an implicitly defined surface (which mean a surface defined by a level-set function). You can find more informations about the used algorithm here.
We start from the cube.mesh cube mesh and the discrete level-set function at the mesh nodes (elephant.sol file) displayed figure 1.
To split the domain on the 0 value of the level-set function:
mmg3d_O3 cube -sol elephant.sol -ls -nr -hausd 0.001 -hgrad 1.3 -hmax 0.05
- As previously, we specify the name of the .sol file, that contains here the level-set function values at mesh nodes, using the -sol option (more infos about the -sol option).
- The -ls option states that the input .sol file is in fact a level-set file and that we want to discretize the implicit surface defined by the 0 level of the level-set.
- A level-set function is a smooth function, thus we don’t want to detect ridges and we use the -nr option;
- The cube mesh bounding box size is of [1 x 1 x 1] thus a hausdorff parameter (-hausd option) of 0.001 allows to have a good surface approximation (more infos about the -hausd option).
- We increase the authorized ratio between consecutive edges using the -hgrad option (more infos about the -hgrad option).
- Last, the -hmax option ensure that we do not create edges longer than 0.05 (more infos about the -hmax option).
We obtain two domains separated by a surface that is an optimized mesh of the initial implicit surface (see figure 2).
Note that Mmg impose the reference (=color) of the isosurface and of the domains :
- The isosurface is created with the ref 10;
- The volume inside the iso surface has the ref 3;
- The volume outside the ref 2.