Skip to content

3.9 Mesh Adaptor Section

The FEBio Adaptive Mesh Refinement framework (FEAMR, pronounced “femur”) allows users to make modifications to the mesh during the analysis of the model. There are currently two mesh adaptor applications supported, namely mesh erosion, which removes elements from the mesh, and remeshing, which can be used to adaptively refine or coarsen the mesh based on the solution. The mesh adaptors are controlled via user-defined criteria that determine the conditions under which to modify the mesh.

A mesh adaptor is applied at the end of a timestep, after the Newton-iterations and augmentations have converged. If the mesh adaptor modifies the mesh, then the timestep is solved again, using the new mesh. Several adaptors define the criterion property, which evaluates the variable or metric that is used by the adaptor, and optionally, can be used to filter the elements to which the adaptor will be applied. How the criterion is used, depends on the adaptor. For instance, the erosion adaptor uses it to identify the elements to deactivate. Remeshing adaptors will use it to set the new element size. It is allowed to use several mesh adaptors in a single model, but keep in mind that the order in which the mesh adaptors are listed in the input file is important. For instance, if two mesh adaptors are defined, the second adaptor will operate on the mesh created by the first adaptor. Mesh adaptors used for adaptive refinement will also map data between the old mesh and the new mesh. User data, defined in the MeshData section, is always mapped between meshes. If the model is history-dependent, it might be important to map additional data. For instance, a visco-elastic material needs to map stress-history variables. By default, mapping data (except for user-data) is not done unless the user sets a specific flag (map_data). New mesh adaptors and adaptor criteria can be defined via the plugin framework.

The MeshAdaptor Section

Mesh adaptors are added to the FEBio Input file (version 3.0 and above) in a new section, called MeshAdaptor. This section must appear after the Mesh and MeshDomains sections. The MeshAdaptor section may also be defined in a step section in order to apply the adaptor only during that step. Inside the MeshAdaptor section, each mesh adaptor is defined via the mesh_adaptor tag. This tag allows the following attributes:

attribute Description
type set the type of the mesh adaptor.
elem_set The element set to apply the adaptor to (1) (Optional)

Comments:

  1. The elem_set attribute is optional, but can be used to apply the adaptor to only a part of the mesh. This is useful to limit the effect of an adaptor to a part of the mesh. The element set must reference a domain (i.e. defined via Elements) of a mesh, or a set of domains. It cannot be an element set defined through the ElementSet tag. (Note that not all mesh adaptors support this attribute.) If omitted, the adaptor is applied to the entire mesh.

Many mesh adapators require a mesh adaptor criterion. The criterion defines the metric that will assign a value to each element. This value can then in turn be used by the adaptor to decide what to do with a particular element. Adaptor criteria are defined in section Mesh Adaptor Criteria.

Mesh Adaptor Criteria

The purpose of the mesh adaptor criteria is to assign values to elements. Some adaptors also act as filters that limit the effect of the adaptor to certain elements. These values will then be used by the mesh adaptor to modify the mesh. How these values are used depends on the adaptor. For instance, the erosion uses it to decide which elements to erode. The mesh refinement adaptors use it to define the size function.

Limitations

Please take into account the following limitations of the FEAMR framework.

  1. Although contact can be used with the FEAMR framework, currently no contact data is mapped from the old mesh to the new mesh. It is advised to only use penalty-based contact interfaces.

  2. It is not advised to erode elements that are in contact, since this may not produce the correct result. If you want to use erosion with contact, make sure to set the _erode_surfaces _to an appropriate value.

  3. Mapping history-data is supported (if the proper flag is set), but can be very time consuming since FEBio maps all material point data between meshes.

  4. The FEAMR framework does not work with the auto time-stepper. It is advised to use fixed time stepping when using mesh adaptation.