GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • ModelScriptBeta
  • Pricing
  • Explore on Ansatz
  • Visual Studio Code
  • Overview & Matrix
  • Modelica
  • SysML v2 / KerML
  • ReqIF Requirements
  • NIST OSCAL Security
  • SSP System Packaging
  • OWL2 Ontology
  • STEP CAD (ISO 10303)
  • QIF Digital Metrology
  • OpenSCAD CSG

This view

  • Original page
  • New address

GeezerVison is showing modelscript.org — SIMPACK Multibody Dynamics (.spck, .sim, .mbs) | ModelScript

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 $JOINT cards.
  • Grübler-Kutzbach Mobility Analysis:
    • Calculates mechanism degrees of freedom (M=6n−∑ci) in 3D spatial mechanisms.
    • Automatically identifies overconstrained kinematic loops (M<0).
  • 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.
  • 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 DAEBuilder in linear WebAssembly memory.
  • FMI 2.0 / 3.0 Co-Simulation FMU Export:
    • Packages complete multibody assemblies into standalone .fmu archives with modelDescription.xml, C co-simulation wrappers, and kinematic state telemetry.
  • 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.MultiBody components.

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.mo

Benchmarks ​

  • 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 M=9 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

CodeRuleSeverityMessage
K7001invalid-body-masserrorBody '<id>' has non-positive mass (<mass> kg).
K7002dangling-body-referenceerrorMarker '<markerId>' references unknown parent body '<bodyId>'.
K7003unknown-from-markererrorJoint '<jointId>' references unknown from-marker '<marker>'.
K7004unknown-to-markererrorJoint '<jointId>' references unknown to-marker '<marker>'.
K7005overconstrained-mobilitywarningMechanism is overconstrained according to Grübler-Kutzbach criterion (Mobility = <mobility> < 0).
K7006baumgarte-divergencewarningJoint '<jointId>' Baumgarte stabilization parameter '<param>' is non-positive or divergent (<val>).

Generated from languages/simpack/src/errors.ts. All languages →

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.