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 Model wraps a pyvista.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 decks

    • femorph_solver.interop.nastran.from_bdf() — NASTRAN BDF

    • femorph_solver.interop.abaqus.from_inp() — Abaqus INP

    • femorph_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.