Solvers›Reference

Crates

Ferro is split across a set of focused Rust crates under physics/ferro/crates/. This is the reference to reach for if you're working in the Ferro source itself, or deciding which crate to depend on for a given task.

CratePurpose
ferro-coreCore data structures for structural FEA — mesh, element, and node types.
ferro-femThe FEM formulations themselves: elements, materials, solvers, thermal, dynamics, contact, topology optimization, plasticity, and more.
ferro-ioMesh I/O — Gmsh, Nastran, and VTK readers/writers.
ferro-configSerializable configuration types. This is the API contract — the FerroRequest schema every surface (Prism, CLI, Python) ultimately produces.
ferro-projectThe multi-load-case project model — FerroCase and Environment, in the Ansys Mechanical style described in Cases & Environments.
ferro-resultsThe canonical persisted results-of-record format (.fres, CBOR-encoded).
ferro-runnerFilesystem-based execution — takes a ferro-config request and ferro-fem solver and runs it against files on disk.
ferro-cliThe thin CLI wrapper around ferro-config/ferro-runner — see Workflow.
ferro-exportVisualization data export — GLB/glTF, JSON, and binary formats for downstream viewers.
ferro-pyPython bindings via PyO3 — see Workflow.

ferro-config is the crate to read first if you're integrating with Ferro programmatically — it defines FerroRequest, the single input format every other surface converges on.

Building

From the physics/ workspace root (never from the repo root — see the monorepo's root CLAUDE.md):

cd physics
cargo build -p ferro-cli --release

Validation

cargo test -p ferro-validation -- --nocapture

runs Ferro's benchmark suite: NAFEMS reference cases (elliptic membrane, skew plate, thick elliptic plate, several modal and buckling benchmarks) plus classical closed-form comparisons (thick cylinder under pressure, a plate with a central hole, conduction/convection, and a shear-locking comparison between Tet10 and Hex8 elements). See physics/ferro/validation/README.md in the source tree for the full table of cases and error margins.