This is a 2D field version of Hertzian rolling-contact fatigue: instead of tracking one point in 3D, the whole raceway circumference is unrolled flat on the horizontal axis, with true subsurface depth on the vertical axis. Every grid cell independently accumulates its own fatigue damage from real Hertz-contact physics as rollers sweep past overhead.
b = √(4·Q′·R / (π·E*)) p₀ = 2·Q′/(π·b)
τxz(x,z)/p₀ = n·(m²−z²)/(m²+n²)
m²,n² from (1−(x/b)²+(z/b)²)² + 4(x/b)²(z/b)²
sign(n) = sign(x)
The peak of |τxz/p₀| is the textbook κ ≈ 0.25, located at x ≈ ±0.87b and z ≈ 0.50b below the surface — the classic Lundberg–Palmgren subsurface fatigue-initiation site. Each time a roller's contact patch sweeps over a raceway cell, that cell's local τxz/p₀ (at its own depth and lateral offset from the passing contact centre) is evaluated and damage += (τ/τlim)⁹ is added — the same steep Lundberg–Palmgren exponent used industry-wide, where a small change in stress moves fatigue life by orders of magnitude. This constant is illustrative, not a certified L10 life calculation.
- Radial load Fr — shared across loaded rollers by Stribeck's equation Q(ψ) = Qmax·cos1.5ψ inside a ±100° load zone; it sets Q′, b and p₀ for whichever roller is currently over a given raceway cell.
- Shaft speed — how fast contact patches sweep across the unrolled raceway, i.e. how many passes per second any given cell accumulates.
- Fatigue shear strength τlim — a stand-in for steel cleanliness/hardness; damage accrues as (τ₀/τlim)⁹ per pass.
- The heatmap shows every cell's own accumulated damage (green → yellow → red). Once any cell reaches 100% it turns black — a spall has formed at that raceway location, and it always appears first at the subsurface depth the physics predicts (z ≈ 0.5b), not at the surface.