Quadrature formulas
Exactness ranges and default quadrature dispatch.
Contract
A quadrature formula on a reference polytope has points and weights such that
In Rodin, the requested order denotes the polynomial degree of exactness, not the number of quadrature points. The default dispatcher returns a rule exact on with positive weights and points inside .
This exactness choice is part of the assembled mathematical problem, not just a performance setting. See Numerical contracts for how quadrature interacts with interpolation, projection, manufactured solutions, and specialized integrators.
Default dispatch
| Reference polytope | Tabulated rule | Fallback |
|---|---|---|
| Point | Trivial rule | None |
| Segment | Gauss–Legendre | Same rule |
| Triangle | Xiao–Gimbutas, degrees 1–50 | Positive conical product |
| Quadrilateral | Gauss–Legendre tensor product | Same rule |
| Tetrahedron | Xiao–Gimbutas, degrees 1–15 | Positive conical product |
| Hexahedron | Gauss–Legendre tensor product | Same rule |
| Wedge | XG triangle times GL, degrees 1–50 | Conical triangle times GL |
| Pyramid | Witherden–Vincent, degrees 1–10 | Positive conical product |
The complete directly constructible table ranges are:
| Family | Triangle | Quadrilateral | Tetrahedron | Hexahedron | Wedge | Pyramid |
|---|---|---|---|---|---|---|
| Xiao–Gimbutas | 1–50 | – | 1–15 | – | – | – |
| Witherden–Vincent | 1–20 | 1–20 | 1–10 | 1–10 | 1–10 | 1–10 |
The Xiao–Gimbutas [14] and Witherden–Vincent [13] rules are published positive-interior formulas. Rodin vendors their coefficients with the corresponding attribution licenses; no numerical search occurs at runtime.
Conical-product fallback
Let
Each one-dimensional Gaussian factor uses points. The simplex rules follow the Duffy transformation [4] and the associated conical-product construction [11].
For the triangle,
so the rule is a Gauss–Jacobi rule with weight times a Gauss–Legendre rule. For the tetrahedron,
and the Jacobian is carried by two Gauss–Jacobi factors. For the pyramid,
and the Jacobian is carried by the vertical Gauss–Jacobi factor.
These fallbacks are deterministic, positive, interior, and available at arbitrary order. They are not fully symmetric and can use more points than optimized tabulated formulas.
API and caching
using namespace Rodin; const auto& cached = QF::PolytopeQuadratureFormula::get( 8, Geometry::Polytope::Type::Tetrahedron); QF::PolytopeQuadratureFormula owned( 8, Geometry::Polytope::Type::Tetrahedron);
PolytopeQuadratureFormula::get returns a process-wide canonical formula. Repeated per-thread requests are served by a small thread-local cache. PolytopeQuadratureFormula::build and the constructor return owned formulas. XiaoGimbutas, WitherdenVincent, GaussLegendre, GaussLobatto, and GrundmannMoller can also be selected explicitly. Grundmann–Moller is not a default because its weights are signed above degree one.
Curved elements
The rule order applies on the reference polytope. On a physical cell, the mapped integrand also contains the determinant of the geometric Jacobian. Non-affine transformations can therefore require an order above the degree suggested by the finite-element fields alone. A quadrature point must remain inside the reference polytope because a curved transformation is not required to extend beyond it.