Adaptive mesh refinement

Dear NGSolve community,

currently I am working on setting up a simulation for a phase field equation coupled with
a Stokes equation. To resolve the diffuse interfacial layer, I want to use the mesh refinement
technology already implemented in NGSolve, which works very well in a static situation.
However, I would like to account for the movement of the interface in time.
I see two options at the moment:
First, I could use a moving mesh approach based on the fluid velocity,
but this would neglect the deformation of the interface due to other effects (the Ginzburg-Landau
energy for example).
Second, I could refine the mesh depending on the gradient of the phase field therefore also
accounting for “non-fluidic” deformations in the mesh. Going with the second approach, I
find myself producing a lot additional nodes which I don’t need anymore when the interface has moved on.
I could not find a possibility to remove elements from the mesh once added, so at the
moment I would just rebuild the whole mesh after certain time steps.
Is there maybe a possibility to selectively join some refined elements to a coarse one again?

Many thanks in advance!

With kind regards,

Hi Philipp,

I am also interested in the problem.
I have experience in the first approach in the ALE framework. It works nicely for two-phase flow as long as the interface deformation is not too strong, otherwise, it would be easy to observe mesh tangling.
For the second approach, due to the use of unstructured conforming meshes, the adaptive mesh refinement currently only support mesh refine but not coarsening. I have no idea how to “remove” the additional nodes either. I have searched a bit in the literature on mesh coarsening for unstructured mesh some time ago, but didn’t find any practical algorithms yet…


Hi Guosheng,

thanks for the information. Now I know that it is no trivial task and I didn’t just overlook the means to do it. It is also interesting that there seems no practical algorithm for this yet.

Please keep me informed if you someday discover a means to do it :). If I find something, I will surely post it.

All the best,