SIMPACK Multibody Dynamics (.spck, .sim, .mbs)
ModelScript integrates native support for SIMPACK (Dassault Systèmes), the premier high-frequency vibration, kinematic, and spatial multibody dynamics (MBD) simulation system.
Capabilities
- Modern & Classic Ingestion:
- Ingests modern SIMPACK XML models (
.spck) containing<body/>,<marker/>, and<joint/>tags. - Ingests classic ASCII keyword decks (
.sim,.mbs) with$BODY,$MARKER, and$JOINTcards.
- Ingests modern SIMPACK XML models (
- Grübler-Kutzbach Mobility Analysis:
- Calculates mechanism degrees of freedom (
) in 3D spatial mechanisms. - Automatically identifies overconstrained kinematic loops (
).
- Calculates mechanism degrees of freedom (
- WebAssembly Kinematics Kernel:
- Zero-allocation AssemblyScript linear memory kernel (
kinematics.wasm) evaluating 3D Euler/Cardan rotation matrices, Rodrigues rotation, and spatial joint constraint equations (revolute, spherical, prismatic, cylindrical, planar, universal). - High-throughput batched transformations and residual evaluations.
- Zero-allocation AssemblyScript linear memory kernel (
- Closed Kinematic Chains:
- Evaluates cut-joint loop closure residual vectors for spatial mechanisms.
- Direct DAE Lowering:
- Lowers 3D translational and rotational kinematic relations directly into
DAEBuilderin linear WebAssembly memory.
- Lowers 3D translational and rotational kinematic relations directly into
- FMI 2.0 / 3.0 Co-Simulation FMU Export:
- Packages complete multibody assemblies into standalone
.fmuarchives withmodelDescription.xml, C co-simulation wrappers, and kinematic state telemetry.
- Packages complete multibody assemblies into standalone
- Interactive 3D Viewport:
- WebGL/Three.js 3D visualization rendering rigid bodies, joint couplings, coordinate markers, and spring elements with orbit navigation.
- Modelica Projection:
- Automatically translates SIMPACK mechanisms into standard
Modelica.Mechanics.MultiBodycomponents.
- Automatically translates SIMPACK mechanisms into standard
CLI Usage
bash
# Check structural references and joints
msx simpack lint mechanism.spck
# Analyze degrees of freedom and overconstrained loops
msx simpack mobility mechanism.spck
# Direct DAE simulation in WebAssembly arena with CSV trajectory export
msx simpack simulate suspension.spck --stop-time=5.0 --step=0.005 --out=results.csv
# Export mechanism as an FMI 2.0/3.0 Co-Simulation FMU
msx simpack to-fmu suspension.spck --out=Suspension.fmu
# Export mechanism to standard Modelica MultiBody
msx simpack to-modelica suspension.sim --out=Suspension.moBenchmarks
- Automotive Double-Wishbone Suspension (
languages/simpack/testsuite/DoubleWishbone.spck):- 5 moving bodies (lower control arm, upper control arm, wheel hub, tie rod, chassis mount), 12 markers, 5 spatial joints, and coilover spring-damper strut.
- Mobility analysis verifies
spatial DOFs (6 free chassis DOFs, 1 vertical jounce DOF, 1 steering DOF, 1 wheel spin DOF).
MCP Tools
AI agents interacting via the ModelScript MCP server have access to:
simpack_lint: Checks marker references, parent bodies, and joint validity.simpack_mobility: Evaluates Grübler-Kutzbach spatial degrees of freedom and overconstraint status.
Diagnostic Rules
6 rules4 error2 warning Run with msx simpack lint
| Code | Rule | Severity | Message |
|---|---|---|---|
K7001 | invalid-body-mass | error | Body '<id>' has non-positive mass (<mass> kg). |
K7002 | dangling-body-reference | error | Marker '<markerId>' references unknown parent body '<bodyId>'. |
K7003 | unknown-from-marker | error | Joint '<jointId>' references unknown from-marker '<marker>'. |
K7004 | unknown-to-marker | error | Joint '<jointId>' references unknown to-marker '<marker>'. |
K7005 | overconstrained-mobility | warning | Mechanism is overconstrained according to Grübler-Kutzbach criterion (Mobility = <mobility> < 0). |
K7006 | baumgarte-divergence | warning | Joint '<jointId>' Baumgarte stabilization parameter '<param>' is non-positive or divergent (<val>). |
Generated from languages/simpack/src/errors.ts. All languages →

