Article
Solid Mechanics · Impact Dynamics · ⏱ ~10 min read · Last updated: 9 July 2026

Hertz Contact Mechanics — Why Nothing Touches Perfectly

Two "rigid" balls colliding never truly touch at a single point — both surfaces flatten elastically over a tiny circular patch, and it is the stiffness of that patch that decides how hard the bounce is, how long the impact lasts, and how much energy survives. Heinrich Hertz worked out the mathematics of this deformation in 1881 while studying Newton's rings; the same equations now size ball bearings, gear teeth, railway wheels, and every impact you see rendered on a physics engine.

TL;DR: Hertz theory shows that colliding elastic bodies flatten into a tiny circular contact patch whose size, pressure distribution, and nonlinear stiffness (force grows as deflection to the 3/2 power) set the impact's peak force, duration, and how much energy survives. It underlies fatigue and design limits in ball bearings, gear teeth, and railway wheels.

1. The Contact Problem

Classical rigid-body mechanics treats colliding spheres as dimensionless points, exchanging momentum instantaneously. Real materials are elastic: when two curved bodies are pressed together, a finite contact patch forms and grows as the load increases. Hertz assumed both bodies are elastic half-spaces, the contact area is small compared to the radii of curvature, and friction inside the patch is negligible — assumptions that hold remarkably well for hard, smooth, dry contacts such as steel balls, ball bearings, and most sports equipment.

2. Contact Radius and Approach

For two spheres of radii R₁ and R₂ pressed together with force F, Hertz theory gives the radius a of the circular contact patch and the mutual approach δ (how much the centres move closer than the sum of the radii):

Effective radius: 1/R* = 1/R₁ + 1/R₂ Effective modulus: 1/E* = (1−ν₁²)/E₁ + (1−ν₂²)/E₂ Contact radius: a = ( 3·F·R* / (4·E*) )^(1/3) Mutual approach: δ = a² / R* = ( 9·F² / (16·R*·E*²) )^(1/3) Contact stiffness (secant): k = F / δ ∝ F^(1/3)

E* is the "effective" or reduced modulus — the softer material dominates. For a steel ball on a rigid rubber pad, E* is essentially the rubber's modulus even though steel is thousands of times stiffer.

3. Pressure Distribution

Contrary to intuition, pressure is not uniform across the contact patch — it is highest at the centre and falls to zero at the edge, following an ellipsoidal (hemispherical) profile:

p(r) = p₀ · sqrt(1 − (r/a)²), r ≤ a Peak pressure: p₀ = 3F / (2·π·a²) Mean pressure: p_mean = 2/3 · p₀ Subsurface: max shear stress occurs BELOW the surface, at depth z ≈ 0.48·a — this is where fatigue cracks (spalling) typically nucleate in bearings and gears.

4. Nonlinear Contact Stiffness

Because δ ∝ F^(2/3), the force-deflection relationship is nonlinear: F = k_H · δ^(3/2), where the Hertzian stiffness constant is:

F = (4/3) · E* · sqrt(R*) · δ^(3/2) Tangent stiffness: dF/dδ = 2 · E* · sqrt(R* · δ) → stiffness INCREASES with penetration (hardening spring) Contrast with a linear spring (F = k·δ) used in most simplified rigid-body-engine contact resolution.

This hardening behaviour is why a soft rubber ball feels progressively firmer the harder you squeeze it, and why real impacts are not symmetric sine-wave pulses.

5. Impact Duration and Restitution

Treating the Hertzian contact as a nonlinear spring lets us derive the impact duration and peak force for a sphere striking a massive target at velocity v:

Effective mass: m* = (1/m₁ + 1/m₂)⁻¹ Peak force: F_max = ( (5/4)·m*·v² )^(3/5) · ( (4/3)·E*·sqrt(R*) )^(2/5) Contact duration: t_c ≈ 2.94 · δ_max / v (δ_max = max approach) Typical values: steel ball bearing, v = 1 m/s, R = 10 mm: t_c ≈ 10⁻⁴ s, F_max ≈ several hundred N Coefficient of restitution e (purely elastic Hertz contact): e = 1 Real e < 1 comes from plastic deformation, viscoelastic damping, and acoustic/vibrational energy radiated away — NOT from the elastic Hertz spring itself.

6. Engineering Applications

Ball Bearings

Subsurface shear stress from Hertz contact drives rolling contact fatigue. Bearing life (L10) formulas trace directly back to Hertzian peak pressure.

Gear Teeth

Meshing gear teeth are modelled as contacting cylinders; Hertz pressure sets the pitting and scuffing limits used in gear design standards (AGMA, ISO 6336).

Sports Equipment

Golf ball vs. clubface, tennis ball vs. racket string bed — Hertzian stiffness plus material damping sets the "feel" and the coefficient of restitution regulators test for.

Railway Wheel-Rail Contact

Wheel-rail contact patches (~1 cm²) carry tonnes of load; Hertz theory underlies rolling-contact-fatigue and wear-rate models for rail networks.

7. JavaScript Hertzian Impact Simulator

// Hertzian nonlinear-spring impact model (normal impact, no damping)
function effectiveModulus(E1, nu1, E2, nu2) {
  const inv = (1 - nu1**2)/E1 + (1 - nu2**2)/E2;
  return 1 / inv;
}

function hertzImpact({ m1, m2, R1, R2, E1, nu1, E2, nu2, v0, dt = 1e-7 }) {
  const mStar = 1 / (1/m1 + 1/m2);
  const RStar = 1 / (1/R1 + 1/R2);
  const EStar = effectiveModulus(E1, nu1, E2, nu2);
  const k = (4/3) * EStar * Math.sqrt(RStar); // F = k * delta^1.5

  let delta = 0, vRel = v0;
  const trace = [];
  while (vRel > 0 || delta > 0) {
    const F = delta > 0 ? k * delta ** 1.5 : 0;
    const a = F / mStar; // relative deceleration
    vRel -= a * dt;
    delta += vRel * dt;
    trace.push({ delta, F, vRel });
    if (trace.length > 2e6) break; // safety cap
  }
  const Fmax = Math.max(...trace.map(t => t.F));
  return { steps: trace.length, durationS: trace.length * dt, Fmax };
}

// 10 mm steel ball bearing dropped at 1 m/s onto a massive steel plate
const result = hertzImpact({
  m1: 0.0325, m2: 1e6,       // plate treated as effectively infinite mass
  R1: 0.005, R2: 1e6,        // flat plate: R2 -> infinity
  E1: 210e9, nu1: 0.3,
  E2: 210e9, nu2: 0.3,
  v0: 1.0
});
console.log(`Contact duration ${(result.durationS*1e6).toFixed(1)} µs, Fmax ${result.Fmax.toFixed(0)} N`);

8. Limits of the Theory

Hertz's assumptions break down under several common conditions, each requiring an extended model: