2. Multibody system fundamentals for MADYMO
MADYMO is built on a multibody formulation in which the occupant, restraint system, and vehicle interior are represented as a set of rigid bodies connected by kinematic joints. Before any restraint model can be trusted, the analyst must understand how MADYMO defines bodies, how joints remove or permit motion, how constraints close kinematic loops, and how the equations of motion are assembled and integrated. This chapter establishes that foundation using the conventions MADYMO actually applies.
Rigid bodies and the global reference frame
Every MADYMO body is a rigid body with mass, a center of gravity (CG), and a full 3×3 inertia tensor expressed in a body-fixed local frame. The body's state is described by the position of its local origin and its orientation relative to the global (inertial) reference frame. MADYMO uses a right-handed Cartesian global frame; the default vehicle convention places x forward, y to the left, and z upward, with rotations about these axes defined as roll, pitch, and yaw respectively. All sign conventions in this course follow that definition unless a local frame is explicitly introduced.
A body's local frame is positioned by a translation vector from the global origin and oriented by a rotation matrix or a set of Euler parameters. In MADYMO input, this appears as the body's initial position and orientation, for example:
BODY
ID = 101
NAME = "torso"
MASS = 32.0
INERTIA = 0.42, 0.38, 0.21, 0.0, 0.0, 0.0
POS = 0.0, 0.0, 0.95
ORIENT = 0.0, 0.0, 0.0
END
The inertia tensor is given about the CG in the body-fixed frame. If the CG is offset from the local origin, MADYMO applies the parallel-axis theorem internally, but the analyst must still supply the CG location so that gravity and joint reaction loads act at the correct point.
Joints and degrees of freedom
A joint constrains the relative motion between two bodies. MADYMO supports a library of standard joints, each of which removes a fixed number of degrees of freedom (DOF) from the six possible relative motions. The table below summarizes the joints most often used in occupant models.
| Joint type | Relative DOF | Constrained DOF | Typical use |
|---|---|---|---|
| Spherical | 3 rotations | 3 translations | Shoulder, hip |
| Revolute (hinge) | 1 rotation | 3 translations, 2 rotations | Knee, elbow |
| Cylindrical | 1 rotation, 1 translation | 3 translations, 2 rotations | Sliding column |
| Translational | 1 translation | 3 rotations, 2 translations | Seat track, pretensioner |
| Universal | 2 rotations | 3 translations, 1 rotation | Steering column |
| Free | 6 | 0 | Free-flying body |
Each joint is defined between a parent body and a child body, with a joint location and orientation. The joint's local axes determine which motion is free and which is locked. For a revolute knee joint, the rotation axis is normally the body-fixed y axis, so the joint permits flexion/extension while blocking abduction and axial rotation. Specifying the wrong axis is one of the most common causes of an occupant model that "explodes" during the first few milliseconds.
Constraints and kinematic loops
Joints alone produce a tree-structured system. Real restraint systems, however, contain closed loops: a belt routed from the retractor through a D-ring to the buckle, or a steering column connected to both the dashboard and the column bracket. MADYMO closes these loops with constraints, which are algebraic equations of the form Φ(q, t) = 0 that remove DOF without adding a joint. Constraints are classified as:
- Position constraints — fix a point, distance, or orientation between two bodies.
- Velocity constraints — enforce a prescribed relative velocity, used for belt slip and retractor locking.
- Acceleration constraints — derived by differentiating position constraints twice; they enter the equations of motion directly.
Because constraints are enforced algebraically rather than through joint coordinates, they introduce Lagrange multipliers into the equations of motion. The number of independent DOF of the system is therefore n = 6·Nbodies − Njoint constraints − Nloop constraints. A model with 20 bodies, 18 joints, and 2 loop constraints has 6·20 − 18·(constrained DOF) − 2 independent DOF; the analyst should verify this count before running, because an over-constrained model will produce large constraint forces and numerical instability.
Equations of motion and integration
MADYMO assembles the equations of motion in the form:
M(q) q̈ + Φ_q^T λ = Q(q, q̇, t)
Φ(q, t) = 0
where M is the mass matrix, q the generalized coordinates, Φ_q the constraint Jacobian, λ the Lagrange multipliers, and Q the applied generalized forces (gravity, joint torques, contact forces, belt forces). The system is a set of differential-algebraic equations (DAEs). MADYMO solves it with an implicit integrator that enforces the constraints at each time step; the default is a variable-step, variable-order scheme with a typical initial step of 1×10−6 s and a maximum step of 1×10−3 s for crash events.
Two practical consequences follow. First, the mass matrix must be positive definite; a body with zero mass or a degenerate inertia tensor will cause the solver to fail. Second, constraint violations are corrected by the integrator, but persistent violations above roughly 1×10−4 m indicate a modeling error such as a misaligned joint axis or a redundant constraint.
Worked example: a two-body arm
Consider an upper arm (body 201, mass 2.1 kg) and forearm (body 202, mass 1.4 kg) connected by a revolute elbow joint. The upper arm is attached to the torso by a spherical shoulder joint. The system has 6·2 = 12 possible DOF; the spherical joint removes 3, the revolute removes 5, leaving 4 independent DOF (3 shoulder rotations + 1 elbow rotation). If a translational constraint is added to represent a forearm strap, one more DOF is removed, leaving 3. The analyst can confirm this by requesting the DOF report in the MADYMO output, which lists the number of independent coordinates and any redundant constraints.
Typical failure symptoms and their causes:
- Solver aborts with "singular mass matrix" — a body has zero mass or an invalid inertia tensor.
- Large constraint forces at t = 0 — a loop constraint is inconsistent with the initial body positions.
- Joint separates visibly — the joint axis is defined in the wrong local frame, or the parent/child assignment is reversed.
- Energy grows without external work — the time step is too large for the stiffest joint or contact stiffness.
Verifying the model before simulation
Three checks catch most multibody errors before a crash run. First, request the DOF report and confirm the independent coordinate count matches the intended kinematics. Second, run a gravity-only settle and inspect joint reaction forces; they should be steady and of the order of the supported weight. Third, apply a small prescribed motion to one joint and confirm the child body follows the expected path without constraint drift. Only after these checks should belt, airbag, and contact definitions be activated, because those elements add large nonlinear forces that can mask a kinematic error.
With bodies, joints, constraints, and the DAE formulation understood, the next step is to populate a model with realistic occupant geometry and inertia properties, which is the subject of the following chapter.