[Rebased, 2nd time] MicroMesh & iso-/super-/sub-parametric elements
Rebased. Old MRs: !814 (closed) (original), !821 (closed) (first rebase)
Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functions. Instead of using the blending function feature, the geometry can be interpolated into a (vector-valued) P1 or P2 space. Using the HOG, the local Jacobians can be computed straightforwardly by evaluation of the gradients of the shape functions (see hog!24 (merged)).
Functions to generate appropriate volume meshes from either surface meshes or analytical descriptions of curved geometries are not yet included in this MR.
For more details see docstring of MicroMesh
.
Concrete changes
-
MicroMesh
class and several centralized functions to compute node positions - corresponding VTK output adaptions
- some tests
- new operators via hyteg_operators update
TODOs
Necessary
-
generate isoparametric operators necessary for the tests and update hyteg-operators afterwards -
proper VTK test before merging this (specifically, #278 (closed) would be very nice)
Nice to have / next steps
- proper, stable mesh improvement
- semi-automated meshing from surface representations (e.g., via OpenMesh or gmsh)
- tutorial
- more operators
Images
2D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected and corrected with diffusion)
3D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected with edges)