Static analysis#
Linear elastostatic problem
\(\mathbf{K}\, \mathbf{u} = \mathbf{f}\), driven by
Model.solve.
Algorithm#
Assemble the global stiffness \(\mathbf{K}\) and force \(\mathbf{f}\) from the per-element
keandapply_forcecalls (see Global assembly).Eliminate Dirichlet DOFs. The free / constrained partition gives \(\mathbf{K}_{ff}\, \mathbf{u}_f = \mathbf{f}_f - \mathbf{K}_{fc}\, \mathbf{u}_c\) — the reduced system the backend factorises (see Boundary-condition elimination).
Factor and solve \(\mathbf{K}_{ff}\) through the registered linear backend (see Linear-solver backends). Backend dispatch order:
Pardiso → CHOLMOD → MUMPS → UMFPACK → SuperLU, first-installed wins.Reaction recovery — \(\mathbf{r}_c = \mathbf{K}_{cf}\, \mathbf{u}_f + \mathbf{K}_{cc}\, \mathbf{u}_c - \mathbf{f}_c\). Populates
StaticResult.reaction.Stress / strain recovery is lazy — the static result returns a DOF-indexed displacement plus a thin accessor protocol that calls
Model.eel(u)/compute_nodal_stresson demand.
Public API#
femorph_solver.Model.solve()— the main entry point.femorph_solver.solvers.static.StaticResult— the return type, withdisplacement/reaction/free_maskarrays.femorph_solver.io.static_result_to_grid()— scatter the DOF vector onto(n, 3)UX/UY/UZpoint data on a copy of the input grid.
Verification cross-references#
The verification gallery exercises every static-solve path:
Single-hex uniaxial tension — Hooke’s law + Poisson check — single-hex Hooke’s law.
Cantilever tip deflection — Euler-Bernoulli closed form — Euler-Bernoulli cantilever.
Cantilever under uniformly distributed load — Euler–Bernoulli closed form — uniform-distributed load.
Cantilever beam under a tip moment — tip moment, parabolic deflection.
Propped cantilever under uniformly-distributed load — statically-indeterminate beam.
Simply-supported beam under a central point load — simply-supported beam.
Clamped-clamped beam under a central point load — clamped-clamped beam.
Lamé thick-walled cylinder under internal pressure — Lamé thick-cylinder.
Clamped square plate under uniform pressure (NAFEMS LE5) — NAFEMS LE5.
Simply-supported plate under uniform pressure (Navier series) — Navier plate.
NAFEMS LE1 — elliptic membrane (plane stress) — NAFEMS LE1 plane-stress.
Implementation: femorph_solver.solvers.static.
References#
Cook, R. D., Malkus, D. S., Plesha, M. E., Witt, R. J. (2002) Concepts and Applications of Finite Element Analysis, 4th ed., Wiley, §2.10 (Dirichlet partitioning).
Bathe, K.-J. (2014) Finite Element Procedures, 2nd ed., §3.4 (boundary-condition imposition), §8 (linear elastic static analysis).
Saad, Y. (2003) Iterative Methods for Sparse Linear Systems, 2nd ed., SIAM, §3 (sparse direct solvers).