Roadmap#

This page is the public commitment to what’s done, what’s in progress, and what’s planned for femorph-solver. It’s the single place to look for “is X coming?” — items not on this list are either out of scope or not yet on the engineering radar.

Anything checked-off ships in the version listed in the Changelog; in-progress items have an issue link. Planned items are intent, not commitment, and may move.

Status legend#

  • Done — released in the version shown.

  • In progress — actively under development; check the linked tracker for progress.

  • Planned — on the roadmap but not yet scheduled. Order in the list does not imply priority.

Capabilities#

Element library#

Element

Status

Notes / tracker

HEX8

Done (v0.20.0)

Plain Gauss + B-bar + EAS variants.

HEX20

Done (v0.20.0)

Serendipity 20-node, full Gauss.

TET10

Done (v0.20.0)

Quadratic, 4-point Gauss.

WEDGE15 / PYR13

Done (v0.20.0)

Quadratic mid-side variants.

QUAD4 (plane / shell)

Done (v0.20.0)

Plane-stress / plane-strain plus DKT shell.

BEAM2

Done (v0.20.0)

Hermite-cubic Euler–Bernoulli + Timoshenko roadmap.

TRUSS2 / SPRING / POINT_MASS

Done (v0.20.0)

Linear, axial only.

SHELL281 (8-node quadratic shell)

In progress

#552.

PLANE183 (8-node serendipity quad)

In progress

#543.

PLANE182 enhanced strain (Wilson Q6)

In progress

#544.

PIPE family (PIPE16 / PIPE18 / PIPE288)

In progress

#580.

Axisymmetric solid + axisymmetric shell

In progress

#581.

Analysis types#

Analysis

Status

Notes / tracker

Linear static

Done (v0.20.0)

Pluggable SPD / LU backends.

Modal (eigenproblem)

Done (v0.20.0)

ARPACK / LOBPCG / PRIMME / dense.

Cyclic-symmetry modal

Done (v0.20.0)

One-sector reduction with phase constraints.

Transient (Newmark-β)

Done (v0.20.0)

Implicit; consistent / lumped mass; Rayleigh damping.

Harmonic (frequency response)

Done (v0.20.0)

Modal superposition; per-mode or Rayleigh damping.

Linear buckling

Planned

Eigenproblem on the geometric stiffness; uses the modal-solver infrastructure.

Pre-stressed modal

Planned

Static + linearised geometric-stiffness step before Model.solve_modal().

Nonlinear static

Out of scope today

Material nonlinearity (plasticity, hyperelasticity) and contact are explicitly not on the near-term roadmap; small-strain linear elasticity is the v1.0 scope.

Foreign-deck interop#

Reader

Status

Notes / tracker

NASTRAN BDF

Done (v0.20.0)

Statics / SOL 103 / SOL 108 cards.

Abaqus INP

Done (v0.20.0)

*STEP / *FREQUENCY / *BOUNDARY.

MAPDL CDB

Done (v0.20.0)

ET / MP / D / F / CSYS,1.

OptiStruct FEM

Done (v0.20.0)

Read-only.

MAPDL .dat (native APDL deck)

In progress

#513.

LS-DYNA .k

Planned

No tracker yet.

Verification corpus#

Suite

Status

Notes / tracker

Analytical / closed-form (Bathe, Timoshenko, Cook, Rao, NAFEMS LE-1, …)

Done (v0.20.0)

First-principles regression — every assertion traces to a published formula.

MSC NASTRAN Verification Guide

In progress

#345.

Ansys MAPDL 2025R1 Verification Manual

In progress

#511.

Comprehensive cross-vendor catalogue

In progress

#338.

Documentation#

Item

Status

Notes / tracker

Multi-version docs site (sphinx-multiversion + version switcher)

Done (v0.20.0)

Lives at the Cloudflare Pages tenant.

Theory reference (variational form, isoparametric, quadrature, …)

Done (v0.20.0)

doc/source/reference/theory/.

Element reference (per-element shape functions / integration / mass)

Done (v0.20.0)

doc/source/reference/elements/.

Commercial-release documentation overhaul

In progress

#583. Six-phase plan covering API docstrings, user-guide depth, reference completion, tutorials, and the final commercial polish (changelog, FAQ, roadmap, architecture page, diagrams, DocSearch).

Versioning policy#

Pre-1.0, minor bumps may break the public API; bumps after 1.0 will not. Every release follows Semantic Versioning; the Changelog carries the per-version notes.

The “public API” surface is the symbols enumerated by femorph_solver.__all__ plus the public methods of the classes they re-export. Anything under a leading underscore module path (e.g. femorph_solver.cyclic_model, femorph_solver._state) is not public — those names exist for the package’s own internal imports and may move without warning, regardless of version.

See also#