Remeshing of deformed meshes

Lithospheric deformation models can lead to highly distorted meshes. As pointed out by Wolfgang in Issue #526,

you will eventually come to a point where the cells at the shear band will just be too deformed and there is nothing you can do other than doing a complete remeshing – which the current code cannot do, and I cannot really see how we would support it either.

What are the obstacles for supporting remeshing?

you have to move nodes as a first step in a way that improves the mesh
quality. That is a relatively simple step that could without much
difficulty be implemented in ASPECT. In fact, it’s a process not
terribly different from the way the free surface implementation
reassigns points in the interior.

The more difficult step is that you somehow need to interpolate data
from the old to the new mesh. This implies that you will have to find
where each new node point was located on the old mesh – a very
difficult and expensive step, in particular in parallel. I can imagine
that one could approximate that in a similar way again as is done in the
free surface implementation, where one just takes node values along with
the node locations and then pretends in the next time step that there
was a modified velocity field in action that undoes the accidental moves
of data with nodes. This is something that can be done with good
efficiency in parallel, whereas the interpolation process is something
that I would try to avoid at all costs.


Hi Wolfgang,

  1. Move mesh nodes to improve mesh.
    Currently the mesh deformation implementation reassigns points in the interior by solving the Laplace equation for mesh velocity. Multiplied by the timestep this gives the mesh displacements used in the mapping. Could we add a step that 1) checks the quality of the mesh (skewness, aspect ratio), then if needed, 2) applies some smoothing to the mesh, e.g. some form of Laplacian smoothing. The displacements computed in the smoothing step could then be added to the already computed displacements.

  2. Interpolate data onto new mesh.
    Is this step taken care of when we add to the mesh displacements used in the mapping?

Thanks a lot,