Mesh Refinement Routines

Hello.

i) Which refinement routine is used for local (adaptive) mesh refinements? I haven’t found anything in the documentation.

ii) Is there a simple way to include an alternative routine like the one of Maubach in “Local Bisection Refinement for N-Simplicial Grids Generated by Reflection”?

iii) Are there already different refinement routines included?

Kind regards,
Johannes

Hi Johannes,

regarding (i), the doc-string of the Mesh class states

| Refine(…)
| Refine(self: ngsolve.comp.Mesh, mark_surface_elements: bool = False, onlyonce: bool = False) → None
|
| Local mesh refinement based on marked elements, uses element-bisection algorithm

regarding (iii) In the Navier-Stokes workshop materials from the third NGSolve User Meeting, there is a script wich implements barycentric mesh refinement in python. This may be a good starting point to implement your own mesh refinement routine.

Best wishes
Henry

Hi, thanks for your answer. Is the bisection routine somewhere specified, that is, does the program use longest-edge bisection or the bisection routine of Maubach/Traxler?

Kind regards,
Johannes

Hi, can I access the code mentioned in point (iii) somehow? The website for the code material from NGSolve user meeting 3 is not working. I would love to see how one can implement a barycentric mesh refinement.

Hi,
the bisection is based on
Douglas N. Arnold, Arup Mukherjee, and Luc Pouly. Locally adapted tetrahedral meshes using bisection . SIAM J. Sci. Comput. , 22(2):431-448, 2000

You can have a look into the code here:

Joachim

I see. I am interested in the barycentric refinement, also sometimes called Clough-Tocher split (used in e.g. “A CutFEM Divergence-Free Discretization for the Stokes Problem” by Haoran Liu, Michael Neilan, and Maxim Olshanskii.

Do you have it?

see cell [10] here:
https://docu.ngsolve.org/latest/i-tutorials/unit-2.6-stokes/stokes.html

and some more using PETSc DMPlex:
https://ngspetsc.readthedocs.io/en/latest/notebooks/Meshes.html

Joachim

1 Like