Geometry Tolerant Meshinghammer

Note: This feature is under development. The command to enable or disable features under development is:

Set Developer Commands {On|OFF}

Applies to:Volumes, Surfaces

Mesh Type: Triangle, Tetrahedral, Quadrilateral

Summary:The geometry tolerant meshing algorithm takes a volume and generates a mesh by ignoring small features, gaps, slivers, and surface alignment problems in the geometry.

To create a tolerant mesh:

  1. In the Command Line, type Set Developer Commands On (Set Dev On).
  2. On the Command Panel, click on Mesh and then Volume.
  3. Click on the Tolerant Mesh action button.
  4. Select Tolerant Mesh from the drop-down menu.
  5. Enter the appropriate values for Volume ID(s). This can also be done using the Pick Widget function.
  6. Select Triangle, Tetrahedal or Quadrilateral from the Algorithm mennu.
  7. Select FEM, New or Old.
  8. Enter the appropriate value for Tolerance Fraction.
  9. Click Apply.

Mesh Tolerant Volume <range> {Triangle|Tet|Quadrilateral} {Free} {Fraction <number>} {Fem|New|Old}

To fix or free an entity:

  1. In the Command Line, type Set Developer Commands On (Set Dev On).
  2. On the Command Panel, click on Mesh and then Volume.
  3. Click on the Tolerant Mesh action button.
  4. Select Fix/Free Entities from the drop-down menu.
  5. Select Fix or Free.
  6. Select Volume, Surface, Curve or Vertext from the drop-down menu and enter the appropriate value.
  7. Click Apply.

Mesh Tolerant [Fix|Free] [Volume|Surface|Curve|Vertex] <range>

To create a tolerant mesh:

  1. In the Command Line, type Set Developer Commands On (Set Dev On).
  2. On the Command Panel, click on Mesh and then Volume.
  3. Click on the Tolerant Mesh action button.
  4. Select Visualize Mesh from the drop-down menu.
  5. Enter the appropriate value for Volume ID(s). This can also be done using the Pick Widget function.
  6. Click Apply.

Mesh Tolerant Volume <range> Facet


Many geometric assemblies contain imperfections or small features that hinder mesh generation. These imperfections can be caused by excessive detail, data format translation errors, poorly constructed initial models and a variety of other factors. Rather than performing time-consuming geometry operations to remove these features, the geometry tolerant meshing scheme will be "tolerant" of these details, and generate a mesh that ignores features below a certain size threshold. Since there may be features under that threshold which the user desires to retain in the final mesh, there is also the option to "fix" certain geometric features so they are retained in the final mesh.

The basic approach to this method involves using the model’s facet data to create a a loose representation of the geometry using the geometry’s native kernel. This faceted representation is modified to conform to the features of the model which are either "fixed" by the user, or larger than a user-provided size. Small edges are removed from the mesh, and long edges are refined. The final mesh is created by iterating over patches of triangles from the initial mesh, and re-meshing these patches with good quality elements.

Initial Mesh Size

An initial mesh size must be input by the user before using the geometry tolerant meshing scheme. This initial mesh size is important to the final outcome. If the edge lengths are initially much smaller than the mesh size, the algorithm will have to do significant work to coarsen the mesh. On the other hand, if the mesh edges are too large, the final mesh will either not capture the geometry well, or the geometry information will, later, have to be extracted from the original model. The mesh sizing is set using the regular interval specification methods.

The sizing algorithm will assign a mesh size to each geometry element. The initial faceted mesh will be a loose approximation of these sizes.

Fixing a Geometric Entity

Before meshing the geometry, the user may wish to specify geometry that will be fixed in the final mesh. A fixed geometric entity is one that should be unchanged by the final mesh. The user may specify a volume, surface, curve, or vertex to fix. After the initial coarse representation is created, the mesh edges that belong to any of these geometric entities will be marked as fixed. One consequence of fixing an entity is that the size of the initial mesh edges that are created by the geometry kernel will be unchanged throughout the rest of the meshing process. If the faceting engine produces small mesh edges in a region, they will remain in the final mesh.

Mesh Tolerant Fix [Volume|Surface|Curve|Vertex] <range>

To reverse the effects of fixing a geometric entity, the user may "free" an entity using the following syntax

Mesh Tolerant Free [Volume|Surface|Curve|Vertex] <range>

Tolerance Fraction

The user-provided fraction controls which of non-fixed features are large enough to be included in the final mesh. It is possible for the tolerance fraction to be any number greater than zero, but in practice this number is usually less than 1. The fraction can be thought of as the percentage of the mesh size that defines a tolerable feature. After the initial faceted mesh has been created, the algorithm will loop through all of the mesh edges on the entity. Mesh edges which are smaller than the value of the (mesh size)*(tolerance fraction) will be removed if they do not belong to a fixed edge. In addition, each triangle on the surface is compared to the tolerant size to determine if it is too small. The tolerance size for a triangle is the minimum of the tolerance for the vertices. If the altitude of the triangles is shorter than that tolerance, the shortest edge of the triangle is removed. For example, if the following commands were issued:
volume 1 size 0.5
mesh tolerant volume 1 fraction 0.25

the tolerance value in the above example would be 0.5*0.25 or 0.125. Any mesh edges (from the initial faceted representation) that are smaller than 0.125 would be removed, unless fixed. Like the initial mesh size, the choice of an appropriate tolerance fraction for a given mesh size is an important to the final outcome. A larger tolerance fraction will remove more small features and possibly require you to specify more fixed edges explicitly. A smaller tolerance fraction will respect most of the original geometry, but may include features you wish to ignore.

Creating the tolerant mesh

A typical sequence of events to create a tolerant mesh would be to:

  1. Specify a mesh size
  2. Determine tolerance fraction
  3. Fix geometric entities that have features that are smaller than that mesh size * tolerance fraction using the Mesh Tolerant Fix command
  4. Mesh the geometry using the Mesh Tolerant command
The command syntax for the meshing step is shown below

Mesh Tolerant Volume <range> {Triangle|Tet|Quadrilateral} {Free} {Fraction <number>} {Fem|New|Old}

To create just the initial faceted mesh for visualization purposes the following command may also be used

Mesh Tolerant Volume <range> Facet

The geometry tolerant scheme can also handle merged volumes and sheet bodies, and will respect boundary conditions as appropriate.

Fem/New/Old Options

The FEM/New/Old options refer to how the initial triangle surface mesh is generated. The FEM option will use Trelis' advancing front trimesh scheme as the initial surface mesh. This is more likely to produce better quality elements, but less likely to succeed in meshing. The New and Old options will both create a mesh by using the geometry engine's facetted representaton. There is a slight variation in how the mesh is created, however. The New option will create the facet mesh for the entire volume using a method that requires no stitching, while the Old option will loop over surfaces, assigning sizes and meshing them individually.

Free Mesh vs. Mesh-Based Geometry

The free option of the tolerant meshing algorithm refers to whether the final mesh is a free mesh, or if it attempts to create new mesh-based geometry to conform to the mesh. If the free option is included, the final mesh will be a free mesh, without any associated geometry. The mesh elements will be automatically placed into a group named 'tolerant_mesh_group'. All surface meshes will be placed in groups named 'mesh_from_surface_<id>' where <id> refers to the former surface id number. If the free option is omitted, or the "Create Mesh Based Geometry" button on the GUI is checked, the algorithm will create new mesh-based geometry that resides on top of the old geometry and contains the new mesh.

Quadrilateral Surface Mesh

The quadrilateral surface meshing algorithm is based almost entirely on the triangle meshing algorithm. Only a few special steps are requred to have quadrilaterals at the final stage. The target mesh size is initially scaled by a factor of two, resulting in a slightly coarser representation of the original geometry. After the refinement step that makes the edges close to the scaled target size, each edge of the triangle is split one more time, which allows the resulting facets to be grouped into two pairs. Once this pairing has been identified, each pair is considered a quadrilateral, and the paving algorithm is used to create higher quality elements.

Figure 1. A triangle split into 4 triangles can then be paired into two quadrilaterals, the red and green shown on the right.


Figure 2. Demonstration of the geometry tolerant meshing algorithm to remove a small groove.

Figure 3. Removal of near-tangency between two curves

In Figure 2, the algorithm correctly detects and resolves a near tangency between two curves. However, the interior mesh edges inside the cylindrical region retain much of their original shape. This causes a slight "bulge" in the cylindrical surface. While this may not be desirable, it is the expected behavior of the algorithm.

Figure 4. Tolerant meshing performed on a simple assembly with pre-merged volumes

Figure 5. Quadrilateral shell mesh generated using geometry tolerant meshing scheme. Note that no hexahedral elements were generated.


Accumulated geometric error

By performing the remeshing step on the original facets, we accumulated discretization error. The original facets are an approximation to the original surfaces, and the new facets are an approximation to the original facets. Because of this, the final mesh may not respect the original geometry, especially in areas of high curvature. However, in many cases this accumulation does not seem prohibitive. Because the facets were created to respect the original shape well, the initial discretization error is usually small.

Figure 5. Accumulation of discretization error in geometry tolerant mesh

Loss of Resolution due to initial faceting

If the initial faceting is coarser than the target mesh size, the refinement step is required to make the edges closer to the target size. However, for this step, we do no have a good way, yet, to maintain the geometry well. More work will be required to determine it is feasible to do this without accumulating additional error.

Figure 6. Poor resolution of geometry due to coarse initial faceting

Surface to Surface proximity

The current approach only removes small features that can be detected by the surface mesh. Since there are no elements filling the interior of the volume, two surfaces that are close (but have no overlapping edges) will not be flagged as small features. Regular geometry manipulation would be required in this case to tweak or remove the surfaces. Figure 7 shows an example of where the algorithm fails to recognize close surfaces as distinct surfaces.

Figure 7. Demonstration of geometry-tolerant meshing algorithm failing to recognize a thin region that has no small edges or facets

Mesh size on fixed geometry entities

If a geometric entity is fixed, the original facet edges on that entity are not collapsed regardless of how small, relative to the target mesh size, they may be. Therefore, in the current approach, there is no mechanism for coarsening the feature mesh edges in these regions.