OpenRadioss User Migration

The vendor package keeps OpenRadioss-specific concepts at the edge and projects them into femorph’s neutral model interface. Existing OpenRadioss users should expect three layers:

  • deck ingestion with read_openradioss for starter and engine decks;

  • neutral model inspection and solving through femorph_model and femorph_solver;

  • native result artifacts written as results.npz, post.npz, and PyVista .pv files for visualization and parity scoring.

Deck To Native Script

Use the deck-to-native script when you want a readable femorph-native projection of an OpenRadioss fixture:

python tools/openradioss/deck_to_native_script.py \
  tests/openradioss/verification_manual/0001_verification_tensile_material \
  native_model.py

Replay A Fixture

Use the fixture runner when checking raw OpenRadioss execution or CI replay:

OPENRADIOSS_PATH=/path/to/OpenRadioss \
  python tools/openradioss/run_fixture.py \
    tests/openradioss/verification_manual/0001_verification_tensile_material

Dynamic Solver Parity

The parity probe runs femorph’s transient solver against fixture reference results and writes a score summary:

python tools/openradioss/probe_dynamic_parity_scoreboard.py \
  tests/openradioss/verification_manual \
  build/openradioss-parity \
  build/openradioss-parity/dynamic_parity_score_summary.toml

The candidate time grid is derived from each fixture’s reference results.npz unless --dt and --n-steps are explicitly supplied.

When CI or a local OpenRadioss replay has produced solver-native reference results outside the committed corpus, pass that directory with --reference-results-root. The planner looks for <fixture>/results.npz under that root and falls back to the committed fixture contract when no external result exists:

python tools/openradioss/probe_dynamic_parity_scoreboard.py \
  tests/openradioss/verification_manual \
  build/openradioss-parity \
  build/openradioss-parity/dynamic_parity_score_summary.toml \
  --reference-results-root build/openradioss-replay/native