Hex smoothing

nekmeshpy.hexmesh.smoother moves the vertices of a hex mesh, never its connectivity, under the same constraints, Laplace smoothing and shape optimizer as the quad smoother (user guide). The pages call the stages directly; in practice the same stages run as reviewed rounds of a SmoothSession (propose, then accept or undo).

Warning

Experimental. The hex smoother is native (pure NumPy), moves vertices only (on a curved mesh the curved nodes follow), and has been tested on small meshes (a few hundred hexes). MFEM’s TMOP, an optional stage, smooths a curved mesh as curved (MFEM smoother).

Each page below is one small example that shows one behaviour. Every page has a 3-D viewer: the input and each result as variants, a translucent boundary shell and cross-sections coloured by each hex’s worst-corner scaled Jacobian.

page

shows

Laplace, optimizer and schedule

Laplace, the optimizer and the suggested schedule on one perturbed input, boundary frozen

Sliding on a box

boundary="slide": face vertices stay on their planes, edge vertices on their lines, corners fixed

A free curved wall

a free curved wall: boundary="free", "tangent", "slide" and an exact cylinder target

Keeping a thin layer

a designed thin layer, unprotected and kept with KeepLayer

Untangling

inverted hexes repaired by the optimizer’s delta continuation

Every number on these pages is computed by the example script named on the page and written into the page by python docs/_ext/gen_smoother_hex_assets.py; none is typed. The same thin layer under MFEM’s TMOP has a page of its own: Demo: a thin designed layer, and a curved bent pipe: Demo: a bent pipe at order 3.