PaceDynamics Documentation Open the app
Contents

Springs and dampers

Ride and roll rates

How stiff the car is in heave, roll and pitch, from the springs, the bars and the tyres under them.

Model as of 0.338Figures from the Formula Student single-car templateOctave check Exact

A spring's rate means little on its own. What the car feels is the rate at the wheel, in the way the body moves, with the tyre underneath. This page builds the car's three stiffnesses from those parts: heave, which sets the ride frequency; roll, which sets how far the body leans in a corner and how the load divides between the axles; and pitch, under braking and drive.

Three elements, two motions

An axle moves in two ways. In heave both wheels rise together; in roll one rises and the other falls. Three kinds of element can spring a wheel, and each works in some of these motions only:

  • a corner spring works in both,
  • a heave element, a third spring between the two wheels' rockers, works only in heave,
  • a roll element or anti-roll bar works only in roll.
An axle in heave and in roll, seen from behind: which elements each motion worksHeave: both wheels move togetherWorks the corner springs and the heave element.Roll: one wheel up, the other downWorks the corner springs and the roll element or bar.
Fig. 1
Heave moves both wheels of an axle one way; roll moves them opposite ways. Each element is built to see one or both.
Schematic

A car with corner springs and a bar is coupled: its corner springs carry heave and part of the roll. A car without corner springs is decoupled: the heave element sets the ride and the roll element the roll, each on its own. The template is decoupled at both ends.

Every rate on this page is at the wheel: an element's own rate times the square of its motion ratio, the element's travel per unit of wheel travel. A heave or roll element is stated as the rate each wheel feels from it in its motion.

The tyre in series

The suspension does not stand on the road. It stands on the tyre, and the two are springs in series: each carries the whole load, and their deflections add. The pair is softer than either:

k=ksktks+kt(1)
ks
the suspension's rate at the wheel in the motion: corner spring plus heave element for heave, corner spring plus roll element for roll
kt
the tyre's vertical rate, 110 N/mm on the template
A body rolled by an angle on two wheel springs a track apart, and the series of a spring and a tyreφk·φ·t/2k·φ·t/2tRolled by φ about the centre-lineIn series: the tyre under the springktkwFEach carries F: their deflections add.
Fig. 2
Roll stiffness of a wheel pair, and a spring in series with its tyre.
Schematic

Heave: the ride rate

In heave the suspension offers its corner spring and its heave element:

Show the equations with
kride=(kw+kh)ktkw+kh+kt(2)
kride,f=(0+34.93)⋅1100+34.93+110=26.51 N/mm(2)
kw
the corner spring at the wheel
kh
the heave element at the wheel

The ride rate and a corner's share of the sprung mass give the ride frequency, 3.27 Hz at the front and 3.20 Hz at the rear of the template; see Sprung and unsprung mass.

Roll: the roll rate

Roll the body by a small angle φ about the car's centre-line, and each wheel of an axle moves by φt/2, one up and one down. Each pushes back with kφt/2, a lever of t/2 from the centre, so the pair resists with a moment

Show the equations with
Kφ=2kroll(t2)2=12krollt2,kroll=(kw+kb)ktkw+kb+kt(3)
Kφ,f=12⋅36.64 N/mm⋅(1200 mm)2=26377 Nm/rad=460.4 Nm/deg(3)
kb
the roll element or anti-roll bar at the wheel
t
the axle's track

The rear's is 468.9 N·m/deg, so the front carries 49.5 % of the car's roll stiffness. That share is the strongest lever on how the load transfer divides between the axles, and so on the car's balance; see Load transfer.

Wheel rates of the template in heave and roll: the element, the tyre, and the two in series, front and rear020406080100120Front, heave34.911026.5Front, roll54.911036.6Rear, heave38.711028.6Rear, roll53.711036.1N/mm at the wheel
Suspension at the wheel (heave or roll element)TyreIn series, frontIn series, rear
Fig. 3
What each axle stands on: the suspension’s rate, the tyre’s, and the softer pair in series.
Measured

How far the body rolls

The body does not roll about its centre-line but about the roll axis, the line through the front and rear roll centres (see Roll and pitch centres). The sideways inertia force acts at the centre of gravity, a height hra above that axis, and rolls the body against both axles' stiffness. As the body rolls its centre of gravity swings outboard, and its weight adds a moment of its own, msghraφ. Together:

Show the equations with
φay/g=msghraKφGφ,Gφ=11−msghra/Kφ(4)
Gφ=1.0149,φay/g=0.853 deg/g(4)
Kφ
both axles' roll stiffness, 929.3 N·m/deg on the template
hra
the CG's height above the roll axis where the CG is, 297.0 mm
Gφ
how much the CG swinging outboard adds; it grows without bound as the springs get too soft to hold the body up

A roll gradient near 1 deg/g is soft for a Formula Student car and usual for a road car; with aerodynamic downforce to protect, race cars run less.

Pitch

Under braking the front axle compresses and the rear extends, each on its ride rate: the body pitches about a point between them. With kF and kR the two axles' rates, both wheels together, over the wheelbase L:

Show the equations with
Kθ=L2kFkRkF+kR(5)
Kθ=1230 Nm/deg(5)
θ|ax|/g=mghL2(1kF+1kR)Gθ,Gθ=11−σ(1kF+1kR),σ=msghL2(6)
Gθ=1.0113,θ|ax|/g=0.726 deg/g(6)
h
the CG height, 300 mm
σ
the load the CG puts on the front axle per metre of nose-down movement, as it goes forward with the pitch

Equation (6) takes the load transfer mgh/L per g, compresses the front and extends the rear by it, and divides by the wheelbase. Like the roll gradient it is stated as a magnitude: nose down per g of braking, nose up per g of drive. The anti features, which take some of the transfer through the links instead of the springs, are not in this number; see Roll and pitch centres.

What the model assumes

  • Every rate is linear and taken at the static ride: the motion ratios do not change with travel, and the tyre's rate does not change with load.
  • The body is rigid. It does not twist between the axles.
  • The roll centres and the roll axis stay where they are at the static ride.
  • Heave, roll and pitch are separate. On a real car with unequal axles they couple a little.
  • The roll gradient is the body's roll on its springs and tyres. Roll the tyres' own lean adds through their sidewalls is in the tyre rate, not separate.

In the app

Vehicle Dynamics › Balance & loads, under "Ride & roll (steady state)", lists the ride rates, ride frequencies, roll rates, roll gradient, pitch rate, pitch gradient and the front's share of the roll stiffness, "Roll-stiffness front". The roll and pitch rates are in N·m per degree, as equations (3) and (5) give them.

Kinematics, under "Rates" in the readout rail, gives each axle's roll rate with the bar and heave element at the wheel, and the car's pitch rate and both gradients. The rates there are the ones the model starts from: the springs and elements times the square of their motion ratios, read off the linkage.

Check it yourself

The script builds the three stiffnesses of the template from example_car.m and compares all fourteen numbers with the app's.

ride_and_roll_rates.mwith example_car.m, pd_compare.mExact: agrees to machine precision
>> ride_and_roll_rates

  Quantity                                This script   PaceDynamics       Diff
  -----------------------------------------------------------------------------
  Ride rate, front [N/mm]                     26.5109        26.5109         0% 
  Ride rate, rear [N/mm]                      28.6472        28.6472         0% 
  Ride frequency, front [Hz]                  3.26536        3.26536         0% 
  Ride frequency, rear [Hz]                   3.19647        3.19647         0% 
  Roll rate at the wheel, front [N/mm]        36.6351        36.6351         0% 
  Roll rate at the wheel, rear [N/mm]            36.1           36.1         0% 
  Roll stiffness, front [N*m/deg]              460.37         460.37   1.2e-14% 
  Roll stiffness, rear [N*m/deg]              468.894        468.894   1.2e-14% 
  Front share of roll stiffness [-]          0.495414       0.495414         0% 
  CG roll gain [-]                            1.01489        1.01489         0% 
  Roll gradient [deg/g]                      0.852918       0.852918         0% 
  CG pitch gain [-]                           1.01131        1.01131         0% 
  Pitch gradient [deg/g]                     0.725694       0.725694   1.5e-14% 
  Pitch stiffness [N*m/deg]                   1230.39        1230.39   1.8e-14% 

  All 14 quantities agree with PaceDynamics (largest difference 1.8e-14 %).
The script
%% Ride and roll rates: what the car stands on, in heave, roll and pitch
%
% Companion to the documentation page "Ride and roll rates". Runs unchanged in GNU Octave
% (7 or later) and MATLAB. Edit the car in example_car.m and run:
%
%   >> ride_and_roll_rates
%
% Three elements can spring a wheel, and each works in some modes only:
%
%   corner spring     heave, pitch and roll
%   heave element     heave and pitch       (both wheels of an axle rise together)
%   roll element/bar  roll                  (one wheel rises, the other falls)
%
% In every mode the tyre is in series with what the suspension offers. All rates are
% at the wheel: a spring's own rate times the square of its motion ratio, which the
% Kinematics tool works out from the hardpoints.
%
% References: W. F. Milliken and D. L. Milliken, Race Car Vehicle Dynamics (SAE, 1995),
% ch. 16 and 18; T. D. Gillespie, Fundamentals of Vehicle Dynamics (SAE, 1992), ch. 5.
%
% Part of the PaceDynamics documentation, https://pacedyn.dev/docs
% SPDX-License-Identifier: MIT

[car, app] = example_car();
app = app.rates;

g  = 9.81;                                          % m/s^2
mm = 1e-3;                                          % m per mm
series = @(a, b) a .* b ./ (a + b);

m_u  = 4 * car.unsprungPerCorner;                   % kg
m_s  = car.massTotal - m_u;                         % kg, sprung
m_sf = m_s * car.frontMassFrac;
m_sr = m_s * (1 - car.frontMassFrac);

%% Heave: ride rate and ride frequency
k_ride_f = series(car.wheelRateFront + car.heaveSpringFront, car.tireRateFront);   % N/mm at the wheel
k_ride_r = series(car.wheelRateRear  + car.heaveSpringRear,  car.tireRateRear);
f_ride_f = sqrt(k_ride_f / mm / (m_sf / 2)) / (2 * pi);                          % Hz, a corner's sprung mass
f_ride_r = sqrt(k_ride_r / mm / (m_sr / 2)) / (2 * pi);

%% Roll: a wheel pair of rate k on a track t resists roll with K = k t^2 / 2
k_roll_f = series(car.wheelRateFront + car.arbFront, car.tireRateFront);           % N/mm at the wheel
k_roll_r = series(car.wheelRateRear  + car.arbRear,  car.tireRateRear);
K_f = (k_roll_f / mm) * (car.trackFront * mm)^2 / 2;                               % N*m/rad
K_r = (k_roll_r / mm) * (car.trackRear  * mm)^2 / 2;
K   = K_f + K_r;

% The body rolls about the roll axis, through the two roll centres. Its weight, moved
% outboard by the roll, adds a moment of its own: m_s g h_ra phi.
h_rc = car.rcHeightFront + (car.rcHeightRear - car.rcHeightFront) * (1 - car.frontMassFrac);   % mm, at the CG
h_ra = (car.cgHeight - h_rc) * mm;                                                 % m
G_roll = 1 / (1 - m_s * g * h_ra / K);
roll_gradient = m_s * g * h_ra / K * G_roll * 180 / pi;                            % deg per g

%% Pitch: the two axles in series over the wheelbase
L    = car.wheelbase * mm;                          % m
kF   = 2 * k_ride_f / mm;                           % N/m, both front wheels
kR   = 2 * k_ride_r / mm;
dW   = car.massTotal * g * car.cgHeight * mm / L;   % N moved front to rear per g of a_x
sigma   = m_s * g * car.cgHeight * mm / L^2;        % N/m: front load per metre of nose-down rake
G_pitch = 1 / (1 - sigma * (1 / kF + 1 / kR));
pitch_gradient = (dW / kF + dW / kR) / L * G_pitch * 180 / pi;                     % deg per g, nose down braking
K_pitch = L^2 * series(kF, kR);                                                    % N*m/rad

%% Against the app
pd_compare('Ride rate, front [N/mm]',           k_ride_f,          app.rideRateFront);
pd_compare('Ride rate, rear [N/mm]',            k_ride_r,          app.rideRateRear);
pd_compare('Ride frequency, front [Hz]',        f_ride_f,          app.rideFreqFront);
pd_compare('Ride frequency, rear [Hz]',         f_ride_r,          app.rideFreqRear);
pd_compare('Roll rate at the wheel, front [N/mm]', k_roll_f,       app.rollWheelRateFront);
pd_compare('Roll rate at the wheel, rear [N/mm]',  k_roll_r,       app.rollWheelRateRear);
pd_compare('Roll stiffness, front [N*m/deg]',   K_f * pi / 180,    app.rollRateFront);
pd_compare('Roll stiffness, rear [N*m/deg]',    K_r * pi / 180,    app.rollRateRear);
pd_compare('Front share of roll stiffness [-]', K_f / K,           app.frontRollStiffFrac);
pd_compare('CG roll gain [-]',                  G_roll,            app.cgRollGain);
pd_compare('Roll gradient [deg/g]',             roll_gradient,     app.rollGradient);
pd_compare('CG pitch gain [-]',                 G_pitch,           app.cgPitchGain);
pd_compare('Pitch gradient [deg/g]',            pitch_gradient,    app.pitchGradient);
pd_compare('Pitch stiffness [N*m/deg]',         K_pitch * pi / 180, app.pitchRate);
pd_compare();

Download: ride_and_roll_rates.m · example_car.m · pd_compare.m. The scripts are MIT licensed.

Further reading

  • W. F. Milliken and D. L. Milliken, Race Car Vehicle Dynamics (SAE, 1995), ch. 16, on ride and roll rates.
  • T. D. Gillespie, Fundamentals of Vehicle Dynamics (SAE, 1992), ch. 5 and 7.
  • J. C. Dixon, Suspension Geometry and Computation (Wiley, 2009), on roll and the roll axis.
ChapterRide and roll rates
PartSprings and dampers
Model as of0.338
Example carthe Formula Student single-car template