The Hex8 element is the simplest hexahedral element: 8 nodes, one at each
corner of the reference cube, with trilinear shape functions. The
reference domain is H^=[0,1]3, matching the
hexahedron reference domain. The 8 nodes
are ordered bottom face first, then top face, each traversed in the same
cyclic order:
In the library, it is implemented in elements/hex8.py
by the class Hex8.
The shape functions extend the pattern of Quad4
from two to three dimensions. Writing ℓ0(t)=1−t and ℓ1(t)=t
for the linear Lagrange basis on [0,1], each Hex8 shape function is a triple
tensor product
Ni(x^,y^,z^)=ℓa(x^)ℓb(y^)ℓc(z^),
where (a,b,c)∈{0,1}3 is the index triple that places node i at
(x^a,y^b,z^c). Written out explicitly:
Each Ni equals one at its own corner and zero at all other seven. The eight
functions form a partition of unity. The gradients follow from the product rule;
for node 0 for example,
and similarly for the remaining nodes with appropriate sign changes on each
factor. As with Quad4, the gradients depend on position because of the cross
terms in the trilinear functions.
Hex8 spans the trilinear space Q1 — all polynomials of degree at
most one in each variable separately. This includes all linear functions, so
the element achieves first-order accuracy. The face element is
Quad4, since each of the six square faces carries
four corner nodes forming a bilinear quadrilateral element.