Engineering · Why trust a number

Every number can be traced to where it came from.

This page is for the engineer deciding whether HFG's results can be defended: how the mechanism is solved, how one output is traced end to end, what is deliberately not modelled, what has been verified, and how validation will be published.

01 · Method

Solved in three dimensions. Measured, never typed.

The mechanism

One degree of freedom, solved directly.

With the rack fixed, a double-wishbone corner has one degree of freedom. HFG solves the minimal system — the two wishbone rotations about their actual chassis axes and the upright's spin about the ball-joint axis — against three conditions: the upright is rigid, the tie rod keeps its length, and a drive condition pins the position.

Because wishbones rotate about their real pivot axes, anti-dive built into the side view and castor built into the plan view are exact, not a planar approximation. The pushrod and bell crank are solved afterwards: they are driven by the mechanism, not part of it.

The measurements

Outputs of the mechanism.

There is no input box for motion ratio, roll-centre height, camber gain or anti-dive. Design inputs — spring rate, bar diameter, link length — are stored; results are measured off the solved geometry every time.

Instant centres come from the velocities of the ball joints, which stays correct for canted pivot axes where extending the wishbone lines does not. A centre at infinity is reported as infinity, not as a large number.

Sweeps

Continuation through travel.

A sweep solves the corner station by station, each starting from its neighbour's solution, so the solver stays on the physical branch of the mechanism. Rates such as camber gain, bump steer and motion ratio are derivatives of the swept, exact geometry.

Strength

Calculated member strength.

Loads are traced through the suspension members and checked for stress and yield, buckling and rod-end or joint rating. This is analytical engineering calculation, not finite-element analysis.

02 · Traceability

One number, followed from hardpoint to handling.

A worked trace on HFG's example F1000 geometry, calculated when this site is built, by the same solver port the homepage runs. Inputs are marked; every other value is derived from the row above it.

Front corner of the example vehicle at static ride height. Inputs: spring 100 N/mm, 500 kg, 44 % front, 12 kg unsprung per corner, CG 300 mm.
StepQuantityRelationshipValue
GeometryHardpointsInput — the corner's hardpointstable below
SolveStatic camber · castor · KPIMeasured off the solved wheel and steering axes−2.00° · 5.19° · 6.48°
SolveScrub radius · mechanical trailSteering axis meets the ground29.7 · 17.3 mm
MeasureMotion ratioMR = d(damper) / d(wheel)0.462
InputSpring rateStored design input100 N/mm
StiffenWheel rateKw = Ks · MR²21.3 N/mm
StiffenRide frequencyf = √(Kw / m) / 2π, m = 98 kg2.35 Hz
StiffenFront roll stiffness, springsKφ = Kw · t² / 2, t = 1568 mm457 N·m/°
VehicleFront share of roll stiffnessAgainst the rear axle's 450 N·m/°50.4 %
VehicleRoll centres, front · rearContact patch → front-view instant centre, both sides75.7 · 92.4 mm
VehicleRoll gradientSprung mass × roll-arm ÷ total roll stiffness1.05 °/g
The inputs: front-left hardpoints of the example vehicle
HFG vehicle frame: +X forward, +Y left, +Z up, millimetres from the front-axle centreline at the ground. From HFG's F1000 preset.
HardpointXYZ
Upper wishbone, front pivot110.0430.0275.0
Upper wishbone, rear pivot−130.0430.0255.0
Lower wishbone, front pivot120.0290.0105.0
Lower wishbone, rear pivot−140.0290.0115.0
Upper ball joint−14.0715.0345.0
Lower ball joint6.0740.0125.0
Wheel centre0.0775.0254.0
Tie rod, inner−95.0315.0138.0
Tie rod, outer−95.0720.0165.0
Pushrod, lower0.0640.0145.0
Pushrod, upper65.0300.0400.0
Bell crank, pivot−30.0300.0400.0
Coilover, bell-crank end−30.0232.0451.0
Coilover, chassis end−295.0232.0451.0

In HFG, the chain continues: roll gradient and load transfer feed the dynamics channels, optimisation targets and track studies.

03 · Open Equations

Not a black box.

The Open Equations Bar shows the relationship behind a calculated output: the equation, the variables it used and the assumptions that apply. Open means inspectable — HFG is not open-source software.

Motion ratio

MR = d(damper) / d(wheel)

Measured through the real linkage, so it changes with travel.

Wheel rate

Kw = Ks · MR²

The leading term; a rising-rate linkage adds its own stiffness through d(MR)/dz.

Instant centre

vIC = 0

Where the projected velocity of the upright vanishes — from ball-joint velocities.

Camber

γ = −asin(nz)

From the solved wheel spin axis, in three dimensions.

Roll and pitch stiffness

K(θ) = d²U / dθ²

From stored energy across the swept motion, so linkage non-linearity is included.

Ride frequency

f = √(Kw / m) / 2π

How a target frequency becomes a spring rate, and back.

04 · Assumptions and limits

What is deliberately not modelled.

Stated so nobody assumes otherwise. None of these is approximated with an invented number: a missing input is reported with the reason the analysis needs it.

  • Compliance: links are rigid — no bushing rates, no chassis torsional stiffness, no deflection under load.
  • Gyroscopic effects of the rotating wheels and driveline.
  • Aerodynamic maps beyond a simple downforce and drag model.
  • Tyre transient behaviour: relaxation length, thermal state, wear.
  • Differential internals beyond the powertrain model.
  • Member strength is analytical, not finite-element analysis.

05 · Verification and validation

What is verified, and what is not yet validated.

Two different questions, kept apart. Verification asks whether the software computes what it should. Validation asks whether what it computes matches a physical test. The first table below is verification only. The second is for validation, and it stays empty until there is test data to publish.

Verification: benchmarks with exact answers

Three linkages simple enough to be solved exactly by plane geometry, each solved twice: once by the three-dimensional solver port these pages run, and once by that geometry, in code that shares nothing with the solver. The rows are calculated when this site is built, and a row outside its allowed difference stops the build. They are evidence that the solver solves its equations correctly. They say nothing about how a real car behaves.

Benchmark A

Converging wishbones.

Both pivot axes are parallel to X, so the corner moves in one plane and its front view is a four-bar linkage. The wishbone lines meet 1500 mm inboard of the wheel centre and 100 mm above the ground, which makes the answers checkable by hand.

Benchmark B

Equal, parallel wishbones.

A parallelogram. The upright cannot turn and the instant centre is at infinity: the case a solver must report as infinity, not as a very large number.

Benchmark C

Inclined pivot axes.

Benchmark A pitched 5° about the axle line. The axes slope in side view, the ball joints no longer move in transverse planes and the wheel steers as it rises: a three-dimensional case that still has an exact answer.

The solver port these pages run, against closed-form answers. Under each value: how it was obtained, the construction for the reference and the method for the solver. Differences are absolute. Camber is negative when the top of the wheel leans towards the car; toe-in is positive.
QuantityReferenceSolver portDifferenceAssumptions
A · Camber through ±30 mm of wheel travel−1.329605° at +30 mm
0.968861° at −30 mm

Four-bar linkage in the front view: the upper ball joint is where the upper wishbone's circle meets the circle of upright length about the lower ball joint. The lower wishbone's angle at each travel is found by bisection.

−1.329605° at +30 mm
0.968861° at −30 mm

3-D solve at 25 stations, each started from its neighbour; camber read off the solved wheel axis.

3 × 10−11 °

largest of 25 stations
allowed 10−8 °

Both wishbone axes parallel to X, so the motion is planar. Rigid links, no static camber or toe.
A · Bump steer through ±30 mm0° at every station

The tie rod repeats the lower wishbone in the front view, so the planar motion keeps its length without turning the wheel.

1 × 10−10 ° at most

Toe read off the solved wheel axis at the same 25 stations.

1 × 10−10 °

largest of 25 stations
allowed 10−8 °

Tie rod: inner end on the lower wishbone's axis, outer end level with the lower ball joint. Rack fixed.
A · Front-view instant centre at the design position(−750.0000, 100.0000) mm

Both wishbone lines, extended until they meet.

(−750.0000, 100.0000) mm

Where the perpendiculars to the two ball joints' velocities meet; velocities by central difference over ±0.02 mm of travel.

2 × 10−6 mm

distance between the two points
allowed 10−2 mm

Y from the centreline, Z from the ground.
A · Roll-centre height at the design position50.0000 mm

Line from the contact patch through the instant centre, read at the centreline: 100 × 750 ÷ 1500 mm.

50.0000 mm

Both corners solved, the right one mirrored; the two contact patch → instant centre lines intersected.

2 × 10−7 mm

allowed 10−2 mm

Symmetric axle, 1500 mm track. Thin wheel: the contact patch is the lowest point of the wheel.
A · Camber gain at the design position−0.038197 °/mm

−1 ÷ FVSA, the front-view swing-arm length: 1500 mm from the wheel centre to the instant centre.

−0.038197 °/mm

Central difference of the solved camber over ±0.1 mm of travel.

9 × 10−10 °/mm

allowed 10−7 °/mm

Travel is measured at the wheel centre.
B · Camber change through ±30 mm0° at every station

A parallelogram: the upright is carried without turning.

5 × 10−14 ° at most

3-D solve at 25 stations; camber read off the solved wheel axis.

5 × 10−14 °

largest of 25 stations
allowed 10−8 °

Wishbones equal in length, parallel, and level at the design position.
B · Front-view instant centreAt infinity

Parallel wishbone lines never meet.

At infinity

The two velocity perpendiculars are parallel, and the solver reports no finite centre rather than a very large number.

None

both report no finite centre

Equal, parallel wishbones, as in the row above.
C · Camber through ±30 mm, pivot axes inclined 5°−1.330324° at +30 mm
0.968191° at −30 mm

The same four-bar solution in the pitched plane: camber = −asin(sin ψ · cos 5°), with ψ the upright's rotation at travel ÷ cos 5°.

−1.330324° at +30 mm
0.968191° at −30 mm

3-D solve at 25 stations, as for A.

2 × 10−11 °

largest of 25 stations
allowed 10−8 °

Benchmark A pitched 5° about the axle line: both wishbone axes slope in side view and the ball joints no longer move in transverse planes.
C · Bump steer through ±30 mm, pivot axes inclined 5°0.116409° at +30 mm
−0.084714° at −30 mm

The same solution: toe = atan(tan ψ · sin 5°).

0.116409° at +30 mm
−0.084714° at −30 mm

Toe read off the solved wheel axis at the same 25 stations.

1 × 10−10 °

largest of 25 stations
allowed 10−8 °

Toe-in positive. The tie rod is pitched with the rest of the corner.
C · Front-view instant centre, pivot axes inclined 5°(−755.5025, 98.6003) mm

The upright turns about the pitched instant axis; each ball joint's velocity perpendicular passes through the point where that axis crosses the joint's own transverse plane.

(−755.5025, 98.6003) mm

From the ball-joint velocities, as for A.

2 × 10−6 mm

distance between the two points
allowed 10−2 mm

Once pitched, the ball joints are still 10.1 mm apart in X (castor), so the two perpendiculars are aimed at different points of the axis.
The inputs: hardpoints of the three benchmarks
Left corner in HFG's vehicle frame: +X forward, +Y left, +Z up, millimetres from the axle centreline at the ground. Tyre radius 250 mm, no static camber or toe. C is A turned 5° about the Y axis through the wheel centre.
HardpointXYZ
A · Upper wishbone, front pivot125.000425.000335.000
A · Upper wishbone, rear pivot−125.000425.000335.000
A · Lower wishbone, front pivot125.000250.000140.000
A · Lower wishbone, rear pivot−125.000250.000140.000
A · Upper ball joint−15.000675.000385.000
A · Lower ball joint15.000700.000158.000
A · Wheel centre0.000750.000250.000
A · Tie rod, inner−100.000250.000140.000
A · Tie rod, outer−100.000700.000158.000
B · Upper wishbone, front pivot125.000250.000380.000
B · Upper wishbone, rear pivot−125.000250.000380.000
B · Lower wishbone, front pivot125.000250.000150.000
B · Lower wishbone, rear pivot−125.000250.000150.000
B · Upper ball joint−15.000700.000380.000
B · Lower ball joint15.000700.000150.000
B · Wheel centre0.000750.000250.000
B · Tie rod, inner−100.000250.000150.000
B · Tie rod, outer−100.000700.000150.000
C · Upper wishbone, front pivot131.933425.000323.782
C · Upper wishbone, rear pivot−117.116425.000345.571
C · Lower wishbone, front pivot114.937250.000129.524
C · Lower wishbone, rear pivot−134.111250.000151.313
C · Upper ball joint−3.177675.000385.794
C · Lower ball joint6.925700.000157.043
C · Wheel centre0.000750.000250.000
C · Tie rod, inner−109.207250.000149.134
C · Tie rod, outer−107.638700.000167.066

The application

Over 3,700 automated tests.

HFG's solvers run headless and are regression-tested: checks that the software computes what it is meant to compute. That is verification too. It is not evidence that a car behaves that way.

This website

The demonstrator is tested too.

The browser port used on these pages is tested against the same invariants as HFG's own suite: alignment reads back exactly, rigid lengths are conserved, left and right agree to 10⁻¹², and every contact patch stays on the ground. The benchmarks above are part of this website's test suite.

Validation: comparison with physical test data

Every case will state its reference source, the test conditions and the method, beside HFG's result, the difference and the assumptions. No cases are published yet: this table fills when correlation data exists, not before.

QuantityReference sourceTest conditionsMethodHFG resultDifferenceAssumptions
No validation cases published yet.

Test it against your own numbers.