MeshAdapt uses general mesh modification procedures for anisotropic unstructured mesh adaptation running in parallel on distributed meshes. It can account for boundary layers with mixed element types. The procedures accept an anisotropic mesh metric and boundary layer size field information as inputs and apply local mesh modifications to adapt the mesh to match that size field, fully accounting for the actual geometry of curved domains while maintaining the semi-structured nature of the elements in any boundary layers the mesh may include.
Figure 1. Local Mesh Modification Operators
Given the mesh size field, the strategy is to employ a complete set of mesh modification operations to alter the given mesh into the desired one. For that purpose, mesh modification procedure is implemented as the following: first, drive the mesh modification loop at the element level
- look at element edge lengths and shape (in transformed space)
- if both satisfactory continue to the next element
- if not satisfied select “best” modification
- elements with edges that are too long must have edges split or swapped out
- short edges eliminated
Then, continue the loop until size and shape is satisfied or no more improvement possible. As for correction indication, MeshAdapt uses a posteriori information (error estimates, error indicators, or correction indicator) to construct new mesh size field which provides the following advantages:
- supports general changes in mesh size including construction of anisotropic meshes
- can deal with any level of geometric domain complexity
- can obtain level of accuracy desired
- solution transfer can be applied incrementally - provides more control to satisfy constraints (like mass conservation)
Figure 2. Mesh Adaptation with Evolving Geometry: initial (left) and adapted (right) shape with metal forming using PUMI and MeshAdapt.
Figure 3. Parallel Boundary Layer Adaptation: initial (left) and adapted (right) mesh after refinement and node repositioning with limited coarsening and swapping.