# Methodology: how the opensus solver works

> How opensus solves suspension kinematics with a general rigid-body constraint solver, finds instant centers from real motion, models the whole car by virtual work, simulates transients, and the assumptions and limits that apply.

opensus solves every suspension with one general rigid-body solver rather than a formula per suspension type, finds instant centers from the upright's actual motion, and models the whole car with one set of equations derived by virtual work. This page describes each layer and its limits.

## 1. Linkage solver

Each moving part (upright, arms, rocker, sway bar arm) is a rigid body with six degrees of freedom. Joints are constraints between bodies:

| Joint | Removes |
|---|---|
| Rigid link (rod end to rod end) | 1 freedom: fixes a distance |
| Ball joint | 3: a shared point |
| Hinge | 5: a shared axis |
| Strut | 2: a point stays on a line (MacPherson top mount) |
| Cylinder, slider, weld | 4, 5, 6 |

The solver drives the wheel center to a target height and finds body positions that satisfy every constraint by Newton's method on the constraint equations. Before solving, it counts the free motions from the rank of the constraint Jacobian. A working corner has exactly **one** (wheel travel) or two with steering; anything else is reported in plain language, naming the loose or over-constrained body.

Steering moves a rack body sideways. Adjusters (link length changes, shims on a point) are applied before solving.

## 2. Corner metrics

Camber, toe, caster, kingpin inclination, scrub radius and trail come from the solved upright and steering axis. For multilinks the steering axis runs between the virtual ball joints where pairs of links cross.

Instant centers are found from motion, not drawn: the corner is solved 0.05 mm above and below the current position, giving the upright's velocity and rotation rate, and the front-view and side-view instant centers are the points with zero velocity in those views. The [roll center](/docs/roll-center/) and [anti geometry](/docs/anti-dive-anti-squat/) follow from them. This is exact for any linkage, including struts and multilinks.

For speed, each corner's motion is precomputed into a table over wheel travel and rack position and interpolated; the table agrees with the exact solve to within 0.001 mm (see [validation](/docs/validation/)).

## 3. Whole-car model

The car has seven coordinates: heave, roll and pitch of the body, and the travel of each wheel. Generalized forces come from virtual work: tire forces, springs, bump stops, damper end stops, sway bars, aero downforce and drag, and inertia, each multiplied by how fast its point moves as each coordinate changes. Jacking from lateral force, anti-dive and anti-squat therefore emerge from the geometry instead of being added as separate terms.

- **Steady state** (Cornering and braking): solves for zero generalized force at a constant acceleration.
- **Transients** (Bumps and transients): integrates the same equations through time with a fourth-order Runge-Kutta method at a 1 ms step, with a mass matrix from the sprung and unsprung masses and the body's roll and pitch inertia.

Springs are solved to hold the car at the drawn **loaded static position**: the perch each spring needs is found by bisection on the spring's force curve, including helper springs. Locking the setup freezes the perches.

## 4. Tires

The tire model is a simplified Magic Formula with load sensitivity, a camber penalty around an optimum camber, and camber thrust. It is not fitted to test data. Lateral forces at each axle are found by solving for the slip angle that gives the axle force the manoeuvre needs; vertical stiffness and damping are linear.

## 5. Compliance and loads

[Compliance](/docs/compliance/) adds a spring of one reference stiffness to every constraint direction (hinges as two bearings), locks the suspension and steering, and solves for the upright's deflection under unit loads. [Load cases](/docs/load-cases/) solve the same structure for the force in every member, with the springs as members and dampers and the sway bar as applied forces.

## Coordinates

All calculations use ISO 8855 axes in millimetres, newtons and kilograms; see [coordinates](/docs/coordinates/). Units and axis directions shown on screen and in exports are a display setting and never change the design.

## Limits

- Links are rigid: no bushing or link compliance in the kinematics.
- The tire model is simplified and not fitted to data.
- Transients prescribe the car's acceleration: they show ride and attitude on a known manoeuvre, not free yaw or sideslip.
- Coil count and wire size are drawn but coil bind is not modelled.
- Kinematic roll sweeps rotate the body about the centreline at ground level; pitch sweeps about a lateral line under the CG.

Source: https://opensus.app/docs/methodology/ (last updated 2026-11-07)
