Series: Finite Element MethodReference Domains and Quadrature

The Hexahedron Domain

The reference domain for a hexahedral element is the unit cube T^=[0,1]3\hat{T} = [0,1]^3. Every hexahedral element in a mesh is the image of T^\hat{T} under a trilinear map FeF_e.

Just as the quadrilateral rule is a tensor product of two 1D Gauss–Legendre rules, the hexahedron rule is a tensor product of three. The derivation follows exactly the same reasoning, extended to a third coordinate direction. The n3n^3 quadrature points are all triples (x^i,x^j,x^k)(\hat{x}_i, \hat{x}_j, \hat{x}_k) of 1D nodes, with weights wiwjwkw_i w_j w_k. All weights are positive, sum to 11, and the rule integrates all monomials xaybzcx^a y^b z^c with a,b,cpa, b, c \leq p exactly.

The figure below shows the order-5 rule, which places 3×3×3=273 \times 3 \times 3 = 27 points in a regular grid inside the reference cube.

Tensor-product quadrature points on the reference hexahedron, order 5

In the library, this construction is implemented in refdomains/hexahedron.py by HexahedronDomain, which delegates to LineDomain and forms the tensor product using np.meshgrid. Its quadrature(order) method supports any polynomial order for which LineDomain has a rule.