MSC Adams Multibody Dynamics
ModelScript features comprehensive, native support for MSC Adams (.adm, .cmd), the classic industrial standard for mechanical systems simulation and multibody dynamics (MBD). Engineers can parse legacy Adams View command files and solver datasets, perform Grübler-Kutzbach spatial mobility analysis, evaluate 3D joint constraint residuals, and project mechanisms to modern SIMPACK and Modelica formats.
Capabilities & Supported Formats
| Format | Extension | Description |
|---|---|---|
| Adams Solver Dataset | .adm | Numerical dataset specifying rigid parts (PART), marker frames (MARKER), kinematic joints (JOINT), force elements (SPRINGDAMPER, BUSHING), and constraints. |
| Adams View Command File | .cmd | Interactive parametric command scripts defining mechanism geometry, design variables, and simulation runs. |
Key Architectural Features
- Lexer & Parser:
- Robust deck ingestion supporting scientific notation (
1.5D-03), inline comments (!), line continuations (...), and block cards. - Lossless serialization back to standardized
.admsolver format viaserializeAdams().
- Robust deck ingestion supporting scientific notation (
- Spatial 3D Kinematics:
- Full evaluation of Euler 3-1-3 and Tait-Bryan 1-2-3 rotation matrices.
- Analytical joint constraint formulation for standard spatial joint primitives (Revolute, Spherical, Prismatic, Cylindrical, Planar, Universal).
- Grübler-Kutzbach Mobility Analysis:
- Calculates mechanism degrees of freedom (
). - Identifies redundant kinematic constraints and overconstrained multi-loop linkages.
- Calculates mechanism degrees of freedom (
- Multibody Linters (
M7301–M7310):- Flags missing ground parts, dangling marker references, unphysical inertia tensors violating the triangle inequality (
), massless moving parts, and negative spring/damping parameters.
- Flags missing ground parts, dangling marker references, unphysical inertia tensors violating the triangle inequality (
- Cross-Domain Projections:
- SIMPACK MBD: Maps parts, markers, and spatial joints to SIMPACK
.spckXML models. - Modelica MultiBody: Synthesizes standard
Modelica.Mechanics.MultiBodyparts and joint components.
- SIMPACK MBD: Maps parts, markers, and spatial joints to SIMPACK
Command Line Interface (msx adams)
bash
msx adams <action> [files...] [options]| Action | Description | Key Options |
|---|---|---|
lint | Runs structural validation, inertia verification, and kinematic sanity checks. | — |
mobility | Evaluates spatial degrees of freedom and overconstrained loops. | — |
to-simpack | Projects Adams mechanism to SIMPACK XML (.spck). | --out=<file.spck> |
to-modelica | Projects Adams mechanism to Modelica.Mechanics.MultiBody. | --out=<file.mo> |
simulate | Lowers to a DAE and integrates it in time. | --stop-time, --step, --stabilization=baumgarte|algebraic |
Examples
bash
# Calculate mechanism spatial degrees of freedom
msx adams mobility FourBarLinkage.adm
# Validate inertia tensors and marker references
msx adams lint LandingGear.adm
# Convert Adams dataset into SIMPACK XML format
msx adams to-simpack RobotArm.adm --out=RobotArm.spck
# Compute mechanism mobility (degrees of freedom)
msx adams mobility ExcavatorMechanism.admMultibody Linters & Diagnostic Rules
9 rules6 error3 warning Run with msx adams lint
| Code | Rule | Severity | Message |
|---|---|---|---|
M7301 | overconstrained-mobility | error | Mechanism is overconstrained according to Grübler-Kutzbach criterion (Mobility = <mobility> < 0). |
M7302 | gimbal-lock-orientation | warning | Euler orientation angles for marker '<markerId>' indicate near-gimbal-lock singularity (psi = <value>\xB0). |
M7303 | dangling-marker-reference | error | <source> references non-existent marker '<targetId>'. |
M7304 | non-physical-inertia-tensor | error | Part '<partId>' has non-physical inertia tensor: <reason>. |
M7305 | massless-part-floating | error | Moving part '<partId>' has zero or negative mass without kinematic grounding. |
M7307 | coincident-joint-markers | warning | Joint '<jointId>' uses identical I and J markers ('<iMarker>'). |
M7308 | negative-spring-damping | error | Spring-damper '<springId>' defines non-physical negative <param> (<value>). |
M7309 | missing-ground-part | error | Dataset does not define a ground reference body ('PART/... GROUND'). |
M7310 | unconstrained-part | warning | Part '<partId>' is completely disconnected from joints or force elements (floating rigid body). |
Generated from languages/adams/src/errors.ts. All languages →

