Meshmode provides the "boring bits" of high-order unstructured discretization, for simplices (triangles, tetrahedra) and tensor products (quads, hexahedra). Features:
- 1/2/3D, line/surface/volume discretizations in each, curvilinear supported.
- "Everything is a (separate) discretization." (mesh boundaries are, element surfaces are, refined versions of the same mesh are) "Connections" transfer information between discretizations.
- Periodic connectivity.
- Mesh partitioning (not just) for distributed execution (e.g. via MPI).
- Interpolatory, quadrature (overintegration), and modal element-local discretizations.
- Independent of execution environment (GPU/CPU, numpy, ...) via array contexts.
- Simple mesh refinement (via bisection). Adjacency currently only maintained if uniform.
- Input from Gmsh, Visualization to Vtk (both high-order curvilinear).
- Easy data exchange with Firedrake.
Meshmode emerged as the shared discretization layer for pytential (layer potentials) and grudge (discontinuous Galerkin).
Places on the web related to meshmode: