Engineering
Haaland Explicit Turbulent Pipe Friction Factor (Moody Chart Formula)
Calculate Darcy-Weisbach pipe friction factor f without iterative Colebrook-White loops using S.E. Haaland's explicit formula (-1.8 * LOG10(((eps / D) / 3.7)^1.11 + (6.9 / Re)))^(-2) with a laminar 64 / Re branch.
Replace implicit Moody-chart Colebrook iteration with Haaland's single-cell formula!
The classical Colebrook-White equation places Darcy friction factor f on BOTH sides of a transcendental logarithm—requiring circular iteration or Goal Seek on every row of a hydraulic network! In 1983, S.E. Haaland introduced a non-iterative explicit equation matching implicit Colebrook-White within ~1.4% across the entire turbulent Moody diagram (4,000 <= Re <= 10^8): 1 / SQRT(f) = -1.8 * LOG10(((eps / D) / 3.7)^1.11 + (6.9 / Re))!
Squaring and inverting gives f directly—and combining Haaland's turbulent formula with the exact Hagen-Poiseuille laminar law f = 64 / Re (for Re <= 2,300) lets hydraulic engineers evaluate smooth drawn tubing, commercial steel, and rough cast-iron mains in one clean cell!
| Pipe Flow Regime | Reynolds Re & Relative Roughness eps/D | Formula Branch | Darcy Friction Factor f |
|---|---|---|---|
| Laminar Oil Pipe | Re = 1,600, any eps/D | 64 / Re (Hagen-Poiseuille) | 0.04000 |
| Commercial Steel Water Main | Re = 100,000, eps/D = 0.0002 | Haaland Turbulent | 0.01874 |
| Rough Corroded Cast Iron | Re = 100,000, eps/D = 0.0050 | Haaland Rough-Wall | 0.03128 |
Combined Laminar (64 / Re) & Haaland Turbulent Friction Factor f
Branches on Reynolds number B2 (<= 0 invalid, <= 2300 laminar 64/Re, > 2300 Haaland explicit equation with relative roughness eps/D in B3).
=IF(OR(B2 <= 0, B3 < 0), "Invalid Re or Roughness", IF(B2 <= 2300, ROUND(64 / B2, 5), ROUND((-1.8 * LOG10(((B3 / 3.7) ^ 1.11) + (6.9 / B2))) ^ -2, 5)))Fully Rough Wholly-Turbulent Limit (Re -> Infinity)
Evaluates asymptotic von Karman-Haaland rough-pipe limit when viscous term 6.9 / Re vanishes at extreme Reynolds numbers.
=IF(B3 <= 0, "Smooth Pipe (f -> 0 as Re -> Inf)", ROUND((-1.8 * LOG10((B3 / 3.7) ^ 1.11)) ^ -2, 5))Try the example
Use the original values or change them to test your understanding.