HEX8 — 8-node trilinear hexahedron#
The workhorse 3D solid kernel in femorph-solver. Eight corner nodes map the reference cube \(\hat\Omega = [-1, +1]^{3}\) to a physical-space hex via the isoparametric scheme of Isoparametric mapping. 24 DOFs per element (three translations per node).
MAPDL alias:
SOLID185Spec:
ELEMENTS.HEX8(default integration), orELEMENTS.HEX8(integration="enhanced_strain")/ELEMENTS.HEX8(integration="plain_gauss")
Shape functions#
Trilinear Lagrange on the reference cube, with corner-node sign vector \((\xi_i, \eta_i, \zeta_i) \in \{-1, +1\}^{3}\):
These satisfy the Kronecker-delta property \(N_i(\boldsymbol{\xi}_j) = \delta_{ij}\) at the eight corner nodes and the partition-of-unity \(\sum_i N_i \equiv 1\) on \(\hat\Omega\). See HEX8 shape-function surfaces on the reference cube for slice-by-slice plots of the eight basis functions.
Integration#
Stiffness uses the 2 × 2 × 2 Gauss-Legendre rule (8 points, degree 3 exact) — see Numerical quadrature. Three integration-mode variants are exposed:
ELEMENTS.HEX8(default) — full 2 × 2 × 2 Gauss with B-bar volumetric stabilisation (Hughes 1980). The volumetric component of the strain field is averaged across the element to suppress volumetric locking when \(\nu \to 0.5\). Recommended for nearly-incompressible elasticity.ELEMENTS.HEX8(integration="enhanced_strain")— Simo–Rifai 9-parameter enhanced assumed strain (Simo & Rifai 1990). Adds nine static-condensed internal modes that fix bending- mode shear-locking in thin-bending problems. The natural choice for plate / shell-bending solid kernels and for every bending-dominated benchmark in Verification.ELEMENTS.HEX8(integration="plain_gauss")— full 2 × 2 × 2 with no B-bar / EAS stabilisation. Useful only for cross-solver comparisons against engines that ship the vanilla 2 × 2 × 2 hex (e.g., scikit-fem); not recommended for production runs because it locks both volumetrically (large \(\nu\)) and in shear (thin bending).
Mass#
Consistent mass at 2 × 2 × 2 Gauss is the default. Row-sum
(HRZ) lumping (Model.modal_solve(lumped=True)) returns a diagonal mass
matrix; off-diagonal contributions are summed onto the diagonal
entry of each row, scaled to preserve total element mass. HRZ
is preferred over naive lumping for explicit dynamics — see
Cook Table 11.6-1.
Stress recovery#
femorph_solver.result._stress_recovery.compute_nodal_stress()
evaluates \(\mathbf{B}(\boldsymbol{\xi}_\mathrm{node})\,
\mathbf{u}_e\) at each of the eight element-local node positions,
applies the 6 × 6 isotropic elasticity matrix
\(\mathbf{C}\) to get Voigt stress, then averages across
every element that touches a node — the standard MAPDL
PLNSOL-style nodal-averaging stress recovery (Cook §6.14).
Performance characteristics#
The HEX8 kernel is the most heavily-tuned in femorph-solver:
Per-element
ke,me,eel_batchroute through a C++ batch entry point so the assembly loop runs in native code with vectorised inner products.Stiffness assembly on a 100 k-cell mesh is ~0.3 s on a single core; mass assembly is comparable.
Verification cross-references#
SOLID185 — uniaxial tension of a unit cube — single-hex uniaxial.
Cantilever tip deflection — Euler-Bernoulli closed form — Euler-Bernoulli cantilever (EAS).
Lamé thick-walled cylinder under internal pressure — Lamé thick cylinder.
Clamped square plate under uniform pressure (NAFEMS LE5) — NAFEMS LE5 clamped plate.
Simply-supported plate — first transverse bending mode — SS plate Kirchhoff fundamental.
Implementation: femorph_solver.elements.hex8.
References#
Zienkiewicz, O. C. and Taylor, R. L. (2013) The Finite Element Method: Its Basis and Fundamentals, 7th ed., Butterworth-Heinemann, §6 (8-node hex Lagrange family), §6.6.2 (volumetric locking + B-bar).
Cook, R. D., Malkus, D. S., Plesha, M. E., Witt, R. J. (2002) Concepts and Applications of Finite Element Analysis, 4th ed., Wiley, §6.2 (hex shape functions), §6.14 (nodal stress recovery), Table 11.6-1 (HRZ lumping).
Hughes, T. J. R. (1980) “Generalization of selective integration procedures to anisotropic and nonlinear media,” International Journal for Numerical Methods in Engineering 15 (9), 1413–1418.
Simo, J. C. and Rifai, M. S. (1990) “A class of mixed assumed strain methods and the method of incompatible modes,” International Journal for Numerical Methods in Engineering 29 (8), 1595–1638.
Bathe, K.-J. (2014) Finite Element Procedures, 2nd ed., §5.3.1 (8-node hex), §5.3.4 (incompatible modes / EAS).