Overview#
femorph-solver is an open-source, Python-first finite-element solver for structural mechanics. It is not a reimplementation, clone, or reverse-engineering of any commercial code — it is an independent solver developed from published FEM theory (Bathe, Zienkiewicz, Hughes, Cook, and the peer-reviewed literature) with the explicit goal of being better, faster, and more transparent than the commercial alternatives.
What it is#
A structural FEM solver. Linear static, modal, harmonic, transient (Newmark-β), and cyclic-symmetry modal analyses on linear-elastic media.
Python-first. A
Modelwraps apyvista.UnstructuredGrid; the rest of the public API is NumPy / SciPy / pyvista.Pluggable under the hood. Elements register into a dispatch registry; linear solvers (PARDISO, CHOLMOD, UMFPACK, SuperLU, MUMPS, MKL Pardiso) and eigen solvers (ARPACK, LOBPCG, PRIMME, dense) register too and are selected at call time.
Multi-solver deck interop. Foreign-deck readers translate established commercial-solver formats into the same neutral
Model:femorph_solver.interop.mapdl.from_cdb()— Ansys MAPDL CDB decksfemorph_solver.interop.nastran.from_bdf()— NASTRAN BDFfemorph_solver.interop.abaqus.from_inp()— Abaqus INPfemorph_solver.interop.optistruct.from_fem()— Altair OptiStruct FEM
Each reader rewrites the deck’s element / load / boundary catalogue into femorph-solver’s neutral kernel names at the boundary; downstream code never sees vendor-specific spelling.
What it isn’t#
Not a clone of any vendor product. Foreign-deck interoperability is a feature, not a goal in itself. Compatibility layers exist so existing users can bring their meshes and load cases over; the solver is evaluated and developed against the academic literature.
Not a nonlinear solver (yet). The current scope is small- strain linear elasticity. Contact, plasticity, large deformation are on the roadmap but not in any released milestone.
Not a mesher. femorph-solver consumes a pyvista mesh or a foreign deck; mesh generation is intentionally delegated to other tools.
Positioning and sources#
Element formulations are derived from published academic sources (textbooks and peer-reviewed papers). Each element’s theory page cites the reference it was built from; nothing in the kernels is sourced from vendor manuals.
File formats (CDB / BDF / INP / FEM input decks; RST / FULL / EMAT binary outputs from MAPDL where exercised) are treated as interoperability interfaces. Their layouts are determined from the files themselves and from public community documentation — not from confidential vendor manuals.
Cross-solver benchmarks use only observable inputs and outputs of legally-licensed installations (mesh in, numbers out). MAPDL is the most-frequently-used yardstick because the project has direct access to it and it is the oldest of the major commercial structural solvers, but it is not a uniquely privileged reference; NASTRAN / Abaqus / OptiStruct check rows land alongside it as their decks come online.
Goal: a best-in-class open-source structural FEM solver that outperforms the commercial alternatives on every axis we measure — accuracy, speed, transparency, ease of use — and whose users can keep their existing decks intact during the migration.