Dynamic adaptive remeshing, hereafter known as adaptivity, is a process of adapting the mesh according to an error, which is a function of the current model state and user-defined functions. This allows the a posteriori metric to be used to alter the mesh as the simulation proceeds. Once a posteriori metrics have been computed, there are many possible ways of modifying the discretisation to achieve some error target. These include h-adaptivity, which changes the connectivity of the mesh Berger1989; p-adaptivity, which increases the polynomial order of the approximation Babuvska1994; and r-adaptivity, which relocates the vertices of the mesh while retaining the same connectivity Budd2009. Combinations of these methods are also possible (e.g., Houston2001,Ledger2003).

Fluidity uses a powerful combination of hr-adaptivity, since the meshes produced are not constrained by the previous mesh; therefore, this approach allows for maximum flexibility in adapting to solution features. However, this flexibility comes at a cost: guiding the adaptive remeshing procedure (choosing what mesh to construct), executing the adaptation (constructing the chosen mesh) and data transfer of solution fields (from the previous mesh to the newly adapted mesh) become more complicated than with hierarchical refinement.

The metric, M, on which adaptivity is carried out is calculated as follows. For each field, fi to be included in the metric, metrics:

 (1)

where is a user defined weight and |H(fi)| is the matrix formed using the absolute values of the eigenvalues of the Hessian matrix. The use of a tensor allows anisotropic directional information to be included and hence influence the adaptivity.

The adaptive algorithm carries out the following stages (also see Fig 2):

1. Construct the Hessian of the fields the user has specified for inclusion in the error metric, which depends on a number of user-defined parameters, such as minimum and maximum edge lengths.
2. Convert these Hessians into metric tensors (as above).
3. Merge the metric tensors from each field to provide a single metric.
4. Smooth the metric to prevent large jumps in mesh size, equivalent to mesh gradation.
5. Apply any other user-specified constraints on the metric, such as the maximum number of nodes allowed.
6. This metric is now passed to the adaptivity library which constructs a new mesh based on it.
7. Fields are then transferred from the old mesh to the new mesh via interpolation Farrell2011.

More details of the algorithm and the methods employed can be found in the Fluidity manual and [Farrell et al.(2009)Farrell, Piggott, Pain, Gorman and Wilson]

Jon Hill 2012-03-02