Design Overview#
This page describes the actual core abstractions that exist in the current codebase and how they connect.
Mesh and grid#
Meshstores raw vertex arrays and element connectivity.Grid<1>andGrid<2>build adjacency (vertex/edge/face) from faces.Mixed triangle + quad surface meshes are supported.
DoF layout and mapping#
DofLayout<2>describes per‑element DoF counts on vertices/edges/faces.DofMap<2>builds global DoF indices for a specific mesh.
Reference element, mapping, Piola#
FiniteElementprovides shape functions on the reference element.ElementMappingmaps reference coordinates to physical coordinates.PiolaTransformpushes H(div) basis to physical space.
FunctionSpace#
FunctionSpace<SpaceType::Hdiv, 2, 3> ties together:
Grid<2,3>FiniteElement(RWG/RT0)ElementMappingandPiolaTransformDofMap
Operators#
Scalar BEM
ScalarSingleLayerOperator builds a dense single‑layer boundary operator for Laplace/Helmholtz with analytic singular correction on triangles.
Maxwell EFIE
ElectricFieldOperator implements the surface EFIE with RWG basis and includes quadrature assembly and self‑term corrections.
Solvers#
Gmres is a matrix‑free iterative solver that only depends on LinearOperator::apply(...).
Post‑processing and IO#
MaxwellComputeCellCenterCurrentAndChargefor magnitude fields.MaxwellFarFieldRcsfor far‑field RCS at arbitrary angles.WriteVtkPolyDataCellFieldsfor ParaView.
Dependencies (bird’s‑eye)#
Mesh -> Grid -> DofMap -> FunctionSpace -> Operators -> GMRES
\-> ElementMapping -> Piola --^