High-performance 2D/3D structural analysis engine in Rust, implementing the Direct Stiffness Method from scratch with no external linear algebra dependencies.
Read next:
- solver roadmap:
../docs/roadmap/SOLVER_ROADMAP.md - detailed proof and benchmark status:
../docs/BENCHMARKS.md
This file is the engine-facing overview.
- For full benchmark status and solver gap tracking, see
../docs/BENCHMARKS.md. - For repo-level solver priorities, see
../docs/roadmap/SOLVER_ROADMAP.md. - For app and workflow priorities, see
../docs/roadmap/PRODUCT_ROADMAP.md. - For business framing and market position, see
../docs/POSITIONING.md.
This document should stay focused on the engine surface, analysis families, and engine-facing validation summary.
- Linear static (2D & 3D): direct stiffness method, sparse Cholesky solver, parallel element assembly (rayon)
- P-Delta (2D & 3D): second-order geometric nonlinearity with iterative convergence
- Corotational (2D & 3D): large-displacement nonlinear analysis (Newton-Raphson)
- Arc-length / displacement control: Riks-style path following and displacement-controlled nonlinear solve
- Buckling (2D & 3D): linearized eigenvalue buckling (Lanczos eigensolver); 3D path now sparse-assembles
K_ffbefore dense eigensolve - Modal (2D & 3D): natural frequencies and mode shapes via consistent mass matrix; 3D path now sparse-assembles
K_ffbefore dense eigensolve - Spectral (2D & 3D): response spectrum analysis with SRSS/CQC combination
- Time history (2D & 3D): Newmark-beta and HHT-alpha direct integration
- Moving loads (2D & 3D): load envelope by stepping axle groups across the structure
- Influence lines (2D & 3D): Muller-Breslau-style influence workflows and envelopes
- Plastic collapse (2D & 3D): incremental hinge formation to mechanism
- Kinematic analysis (2D & 3D): mechanism detection, degree of indeterminacy, rank check
- Construction staging (2D & 3D): phased activation, support changes, staged loads, prestress hooks
- Harmonic response (2D & 3D): frequency-response analysis with modal damping input; 3D path now sparse-assembles
K_ff - Winkler foundation (2D & 3D): beams/frames on elastic foundation
- Nonlinear SSI (2D & 3D):
p-y,t-z, andq-zspring-family soil interaction - Contact / gap (2D & 3D): unilateral support/contact behavior, uplift, and gap elements
- Constraints (2D & 3D): rigid links, diaphragms, equal-DOF constraints, and general linear MPCs
- Connector elements (2D & 3D): spring connectors, semi-rigid joints, and eccentric connections with constraint force output
- Imperfections / residual stress: initial geometric imperfections and residual-stress-aware nonlinear workflows
- Multi-case solve (2D & 3D): case-by-case analysis, combinations, envelopes
- Cable solver (2D): tension-only cable/catenary-style solve with iterative update
- Fiber nonlinear beam-columns (2D & 3D): distributed plasticity / section-integration solvers
- Creep / shrinkage: time-dependent structural response with EC2-style models
- Plate/shell (3D): DKT/DKMT triangular plates, MITC4 quadrilateral shells (ANS shear tying, EAS-7 membrane), MITC9 9-node quadrilateral shells (ANS shear tying, Bucalem & Bathe 1993), SHB8-ANS solid-shells, and curved-shell elements, with pressure, self-weight, thermal, and edge loading
- Model reduction / substructuring: Guyan condensation and Craig-Bampton reduction for larger-model workflows; 3D reduction paths now sparse-assemble before dense reduced-system work
- Section analysis: polygon-based cross-section properties and section metrics
cd engine && cargo nextest run # default full-suite runner
cd engine && cargo test --test core # core solver tests
cd engine && cargo test --test property # differential fuzz tests
cd engine && cargo test --test integration # integration tests
cd engine && cargo test --test validation # validation crateCI now runs cargo nextest run --profile ci, with engine-local nextest configuration and a Linux-only mold linker setup for faster test builds.
It also runs explicit gate steps for shell benchmarks, shell acceptance models, constraint benchmarks, and sparse 3D parity before the full suite.
Latest reported full-suite status: 5906 passing tests, 0 failures.
The engine is backed by:
- a validation suite measured in the
6300+range 25integration test files- dedicated property / differential fuzz coverage
- benchmark-gate suites for constraints, contact, shells, reduction, sparse / conditioning paths, and sparse 3D parity
- explicit CI gate stages for shell benchmarks, shell acceptance models, and constraint benchmarks
See ../BENCHMARKS.md for detailed status of each benchmark family and current maturity.
| Standard | Files | Tests | What it covers |
|---|---|---|---|
| AISC 360-22 | aisc_stability, effective_length, frame_classification, notional_loads, braced_frame(s) |
46 | B1/B2 amplification, effective length K-factors, frame classification (sway/non-sway), notional loads 0.2-0.5% gravity, X/K/chevron bracing |
| Eurocode 3 (EN 1993-1-1) | eurocode3_buckling, code_provisions, deflection_limits, frame_classification |
28 | alpha_cr elastic critical buckling, Horne's method, frame classification, deflection limits L/360 |
| Eurocode 8 (EN 1998-1) | biggs_extended, code_provisions, seismic_design, 3d_spectral |
26 | Design spectrum Type 1, 90% mass participation, modal combination, multi-directional 100%+30% |
| ASCE 7-22 | code_provisions, drift_verification, serviceability_checks, regulatory_features, wind_load_analysis, multi_story_lateral |
47 | Base shear, inter-story drift H/400, wind profiles, story shear distribution, importance factor |
| AASHTO HL-93 | moving_loads, moving_load_bridges |
16 | Single/multi-axle trucks, bridge influence lines, shear/moment envelopes, mesh convergence |
| EN 1990/EN 1991 | combinations, load_combination_envelope, thermal_effects, wind_load_analysis |
32 | ULS factors 1.35DL+1.50LL+0.9W, thermal EN 1991-1-5, wind profiles, pattern loading |
| GSA 2013 / EN 1991-1-7 | progressive_collapse |
6 | Member removal, alternate load paths, redundancy |
| FEMA 356 / ATC-40 | pushover |
6 | Pushover curves, P-delta stiffness, N2 method |
| IBC 2021 | drift_verification, serviceability_checks |
16 | Drift ratios, deflection limits, ponding |
| Source | Files | Tests | What it covers |
|---|---|---|---|
| ANSYS VM | ansys_vm, ansys_vm_extended, ansys_vm_additional, ansys_vm_benchmarks |
41 | VM1-VM156 plus extended truss, beam, thermal, torsion, space-frame, stepped-beam, and P-delta cases |
| SAP2000/CSI | sap2000, sap2000_extended |
18 | Beam, continuous, portal, modal, leaning column, springs, P-delta, settlement, 3D frame extensions |
| Code_Aster SSLL | code_aster, code_aster_extended |
17 | SSLL truss, frame, buckling, variable-section, and extended reference cases |
| NAFEMS | nafems, nafems_extended, nafems_benchmarks |
22 | FV/LE/T/R benchmark coverage across axial, vibration, stress, thermal, and 3D cases |
| MASTAN2 | mastan2_frames, mastan2_extended |
42 | Ziemian benchmark frames plus extended buckling and P-delta frame checks |
| OpenSees | opensees_crosscheck |
8 | Beam, portal, truss, cantilever, 2-span, 2-story, 3D truss, P-delta cross-checks |
| Robot Structural | robot_structural |
8 | Beam, portal, braced frame, biaxial 3D, Warren truss cross-checks |
| STAAD.Pro | staad_pro |
8 | Cantilever, UDL, continuous beam, truss, portal, Gerber, spring support cross-checks |
| Strand7 / LUSAS | strand7_lusas |
8 | Beam, thermal, truss, settlement, torsion, Euler buckling cross-checks |
| Source | Files | Tests | Topics |
|---|---|---|---|
| Timoshenko (Strength of Materials, Elastic Stability, Vibrations) | 25+ files | ~200 | Beams, buckling (4 BCs), thermal, torsion, plates, shear deformation, arches |
| Chopra (Dynamics of Structures 5th) | chopra_dynamics, modal_frequencies, dynamic_mdof, dynamic_advanced, spectral_response, rsa_crosscheck |
48 | Modal frequencies, time history, MDOF, RSA, Rayleigh damping, DAF |
| Ghali/Neville (Structural Analysis) | continuous_beams, three_moment_equation, influence_lines, frames, kinematic, continuous_patterns |
48 | Continuous beams, three-moment equation, influence lines, moment redistribution |
| Przemieniecki (Matrix Structural Analysis) | 3d_analysis, przemieniecki_extended, matrix_methods, matrix_condensation, stiffness_matrix |
40 | 12x12 stiffness, geometric stiffness, condensation, coordinate transforms |
| McGuire/Gallagher/Ziemian (Matrix Structural Analysis 2nd) | matrix_methods, mastan2_frames, + 3D files |
35 | Assembly, P-delta, stability, 3D frames |
| Kassimali (Structural Analysis 6th) | kassimali_extended, truss_methods, force_method, + 10 files |
50 | Trusses, continuous beams, force method, portal/cantilever methods |
| Hibbeler (Structural Analysis 10th) | hibbeler_problems, truss_method_of_joints, + 15 files |
60 | Reactions, internal forces, deflections, moment distribution, direct stiffness |
| Roark (Formulas for Stress and Strain 9th) | roark_formulas, 3d_distributed_loads, 3d_torsion_effects |
24 | Table 8.1 cases, deflection formulas, torsion, rings |
| Neal (Plastic Methods) | plastic_collapse, plastic_mechanisms, plastic_hinge_sequence, material_nonlinear_benchmarks |
32 | Collapse loads, mechanism analysis, hinge sequences |
| Weaver & Gere (Matrix Analysis of Framed Structures) | matrix_textbooks, transfer_matrix, + 3D files |
24 | Matrix methods, transfer matrix, 3D analysis |
| Hardy Cross (1930) | hardy_cross, moment_distribution |
16 | Moment distribution, carryover, distribution factors |
| Maxwell (1864) / Betti (1872) / Castigliano (1879) | reciprocal_theorem(s), energy_methods, castigliano, fundamental_theorems, virtual_work |
52 | Reciprocal theorems, strain energy, unit load method, virtual work |
| Clapeyron (1857) | three_moment_equation |
8 | Three-moment equation for continuous beams |
| Muller-Breslau (1886) | muller_breslau |
8 | Influence line construction via deflection reciprocity |
| Hetenyi (1946) | winkler_foundation, foundation_interaction |
12 | Beams on elastic foundation, Winkler model |
| Clough & Penzien (Dynamics of Structures 3rd) | damping_frequency, modal_properties, dynamic_advanced |
24 | Damping, modal analysis, numerical integration |
| Bathe (Finite Element Procedures) | convergence, mesh_convergence, stiffness_properties, modal_properties |
30 | h-convergence, Richardson extrapolation, eigenvalue bounds |
| Scordelis & Lo (1964) / MacNeal & Harder (1985) | scordelis_lo, patch_tests |
11 | Plate benchmarks, patch tests |
| Chen & Lui (Stability Design) | stability_advanced, beam_column_interaction, pdelta_benchmarks |
24 | P-delta, beam-column interaction, K-factors, initial imperfections |
| Category | Files | Tests | Key validations |
|---|---|---|---|
| Beam theory (deflections, rotations, elastic curve) | 15 | ~110 | SS/cantilever/fixed-fixed/propped, all load types, Roark table cases |
| Internal forces (V, M, N diagrams) | 14 | ~110 | dV/dx=-q, dM/dx=V, contraflexure, hinge M=0, load discontinuities |
| Continuous beams | 4 | ~30 | Three-moment equation, pattern loading, moment redistribution |
| Indeterminate methods | 14 | ~110 | Slope-deflection, moment distribution, force method, flexibility, matrix methods |
| Energy methods | 8 | ~64 | Castigliano, Maxwell-Betti, virtual work, superposition, unit load |
| Classical methods | 5 | ~40 | Conjugate beam, moment area, transfer matrix, portal/cantilever methods |
| Frames (portal, multi-story, braced, gable, Vierendeel) | 16 | ~130 | Sway, drift, joint rigidity, load path, multi-bay, arch action |
| Trusses | 8 | ~64 | Method of joints/sections, Warren/Pratt/Howe/K-truss, zero-force members, 3D space trusses |
| 3D analysis (beams, frames, torsion, biaxial) | 24 | ~180 | Biaxial bending, torsion, space trusses, grillages, 3D equilibrium, inclined supports |
| Influence lines & moving loads | 4 | ~32 | Muller-Breslau, AASHTO HL-93, bridge envelopes |
| Buckling & stability | 16 | ~130 | Euler (4 BCs), P-delta, B1/B2, geometric stiffness, MASTAN2 frames, effective length |
| Dynamic analysis | 14 | ~100 | Modal frequencies, time history (Newmark/HHT), spectral response, SRSS/CQC, seismic design |
| Plastic analysis | 6 | ~42 | Collapse loads, mechanism formation, hinge sequences, pushover |
| Corotational / large displacement | 3 | ~13 | ANSYS VM14 elastica, snap-through, Williams toggle |
| Plates & shells | 5 | ~25 | DKT element, patch tests, pressure loads, Scordelis-Lo, MITC4 quads, shell benchmark gates |
| Thermal & settlement | 6 | ~52 | Uniform/gradient thermal, prescribed displacements, settlement-induced moments |
| Spring supports & foundations | 3 | ~20 | Winkler foundation, spring stiffness, rotational springs |
| Load combinations & serviceability | 5 | ~40 | LRFD factors, EN 1990 ULS, envelopes, drift limits, deflection checks |
| FEM quality | 4 | ~30 | Patch tests (MacNeal-Harder, Argyris-Kelsey), h-convergence, rigid body modes |
| Stress analysis | 2 | ~16 | Navier, Jourawski, Mohr's circle, Von Mises, Tresca, 3D biaxial stress |
| Structural classification | 3 | ~19 | Mechanism detection, isostatic/hyperstatic, rigid body modes |
| Deformation compatibility | 6 | ~48 | Symmetry/antisymmetry, superposition, indeterminacy effects |
| Wind & lateral | 3 | ~24 | Uniform/triangular wind, story shear, overturning, drift |
| Composite & special | 3 | ~24 | Parallel beams, mixed materials, semi-rigid connections |
Phase 2 is complete — constraint unification, contact refinement, connector elements, eccentric connections, benchmark gate suites, performance architecture, shell benchmark hardening, shell diagnostics, quad nodal stress recovery, MITC9 integration, SHB8-ANS solid-shell integration, curved-shell integration, and parallel element assembly are all in place. The main remaining engine work is:
- performance and scale: sparse assembly runtime, ordering quality, deeper sparse eigensolver reuse, full-workflow performance discipline
- shell-family workflow maturity and selection guidance across
MITC4,MITC9,SHB8-ANS, and curved shells - advanced contact variants (friction cycles, multi-gap mixed states)
- CI hardening and release-grade benchmark gates
- long-tail nonlinear and solver-path consistency hardening
For the detailed gap inventory and benchmark status, use ../BENCHMARKS.md.
90 tests comparing multiple solver paths and locked fixtures across random seeds, validating:
- Displacements, reactions, element forces
- Internal force diagrams at 9 interior points per element
- Support for all element types, load patterns, and boundary conditions
Compact must-pass suites validating the newest solver families:
| Suite | File | Coverage |
|---|---|---|
| Constraints | benchmarks/constraints_benchmark.rs |
Rigid links, diaphragms, equal-DOF, eccentric connections, constraint forces |
| Contact | benchmarks/contact_benchmark.rs |
Gap elements, tension/compression-only, friction, augmented Lagrangian |
| Shells | benchmarks/shell_benchmark.rs |
MITC4 quads, MITC9 quad9s, SHB8-ANS solid-shells, curved shells, membrane/bending, thermal, mesh quality, mixed frame+shell, distortion robustness, pinched cylinder, self-weight, edge loads, warped elements, Navier/Scordelis-Lo/spherical-cap/hypar/hemisphere/twisted-beam/Raasch-hook coverage |
| Reduction | benchmarks/reduction_benchmark.rs |
Guyan condensation, Craig-Bampton, substructuring workflows |
| Sparse | benchmarks/sparse_benchmark.rs |
Sparse assembly, sparse Cholesky, conditioning diagnostics |
| Sparse 3D Parity | benchmarks/sparse_3d_parity.rs |
Dense-vs-sparse assembly/solve parity for shells, frames, prescribed displacements, inclined supports |
| Sparse 3D Benchmark | benchmarks/sparse_3d_benchmark.rs |
Wall-clock and memory comparison, 11-22x memory reduction |
| Sparse 3D Drilling | benchmarks/sparse_3d_drilling_regression.rs |
Drilling DOF regularization, Cholesky silent-failure regression |