Engineering & Science
Ocean Ekman Spiral Depth (DE) & Wind-Driven Ekman Transport Formula
Calculate Vagn Walfrid Ekman’s turbulent upper-ocean boundary layer thickness D_E = PI() * SQRT((2 * A_z) / |f|) (m) and depth-integrated 90°-deflected Ekman mass transport M_E = tau_wind / |f| (kg/(m*s)).
Why coastal winds parallel to shore drive cold nutrient-rich ocean upwelling 90° offshore!
Fridtjof Nansen noticed during the 1893–1896 Fram Arctic drift that sea ice drifted 20°–45° to the right of the wind—prompting Vagn Walfrid Ekman (1905) to solve the balance between vertical turbulent eddy viscosity A_z (m^2/s) and planetary Coriolis acceleration f = 2 * Omega * sin(phi)! Velocity vectors rotate clockwise with depth (in the Northern Hemisphere) across the Ekman Spiral Depth D_E = PI() * SQRT((2 * A_z) / |f|), where current speed decays to EXP(-pi) = 4.3% of its surface value!
Integrating over the entire Ekman layer yields a remarkable oceanography result independent of eddy viscosity A_z: net depth-integrated Ekman Mass Transport M_E = tau_wind / |f| (kg/(m*s)) flows 90° to the right of the wind in the Northern Hemisphere (90° left in the Southern Hemisphere), powering Peru, California, and Benguela coastal fisheries upwelling! At 45° latitude (|f| = 1.0313e-4 s^-1), eddy viscosity A_z = 0.02 m^2/s, and wind stress tau = 0.15 N/m^2, Ekman depth D_E = 61.9 m and offshore Ekman mass transport reaches 1,454.5 kg/(m*s) (~1.42 m^2/s volumetric Sverdrup-per-km transport)!
| Upper-Ocean Wind State (45° Lat, tau = 0.15 N/m^2) | Eddy Viscosity Az (m^2/s) | Ekman Layer Depth DE (m) | Ekman Mass Transport ME (kg/(m*s)) |
|---|---|---|---|
| Moderate Trade/Westerly Mixing | 0.02 m^2/s | 61.9 m | 1,454.5 kg/(m*s) (90° to wind) |
| Storm-Enhanced Eddy Mixing (4x Az) | 0.08 m^2/s | 123.7 m (2x Deeper) | 1,454.5 kg/(m*s) (Unchanged!) |
| Equator (0° Latitude -> f = 0) | Any Az | Coriolis Singularity Guard | "Equatorial / Invalid Ekman Inputs" |
Ocean Surface Ekman Boundary-Layer Depth D_E (m) = PI() * SQRT((2 * A_z) / |f|)
Evaluates local Coriolis frequency |f| = 2 * 0.000072921 * ABS(SIN(RADIANS(Latitude))) from latitude B2.
=IF(OR(B2 = 0, ABS(B2) > 90, B3 <= 0, B4 < 0), "Equatorial / Invalid Ekman Inputs", ROUND(PI() * SQRT((2 * B3) / (2 * 0.000072921 * ABS(SIN(RADIANS(B2))))), 1))Depth-Integrated Ekman Mass Transport M_E (kg/(m*s)) = tau_wind / |f|
Divides surface wind stress tau_wind (N/m^2, cell B4) by |f|.
=IF(OR(B2 = 0, ABS(B2) > 90, B3 <= 0, B4 < 0), "Equatorial / Invalid Ekman Inputs", ROUND(B4 / (2 * 0.000072921 * ABS(SIN(RADIANS(B2)))), 1))Try the example
Use the original values or change them to test your understanding.