Algorithms for Adaptive Mesh Refinement /and/ Coarsening in FEniCS

Hi everyone,

I’m using FEniCS 2019.1.0 to simulate a problem with a moving interface. It would be very nice to implement an algorithm for adaptive mesh refinement and coarsening. I’ve done some digging, and while I have seen several implementations of error-based mesh refinement, I can find nothing for coarsening.

Does anyone know of such an algorithm that’s been implemented in legacy FEniCS (or even FEniCSx)?

As far as I know, neither legacy FEniCS nor DOLFINx has a built-in mesh coarsening function — refinement is supported (via refine with cell markers), but coarsening simply doesn’t exist as a feature, which is why you haven’t found anything. For a moving interface, the usual practical workaround is to periodically rebuild a fresh mesh sized around the current interface position and interpolate the solution onto it. Happy to be corrected if I’ve got that wrong.