When the Stream Breaks — Reynolds' Critical Number and the Layered Turbulent Boundary
Where laminar flow falls apart, and how the turbulent boundary stacks itself in three sublayers
Open a faucet slowly and the water falls as a smooth glass rod. Turn the handle a touch more and the rod shatters into a noisy, splaying mess. Same water, same nozzle — only the speed has changed. What sets the threshold? Reynolds answered this in 1883 with a single dye streak in Manchester, and his answer compresses into one dimensionless number. This post traces why that threshold lands near Re ≈ 2300, and how the turbulent boundary layer beyond it stacks into a viscous sublayer, a buffer layer, and a log-law region. At the end you can drag the Re slider and watch the streak come apart.
When the colored streak suddenly tangles#
Reynolds injected dye through the centerline of a glass pipe. He varied diameter , mean speed , and kinematic viscosity , asking one thing: when does the streak fall apart?
Across every combination, transition started near a single value of one dimensionless group:
Here is the mean velocity, is the characteristic length (pipe diameter), and is the kinematic viscosity (dynamic viscosity over density). Cross the threshold and the streak loses its balance.
What Re ≈ 2300 actually says#
Re is more than an experimental constant. Non-dimensionalize the momentum equation and the viscous term gets multiplied by exactly . So Re is the ratio of inertial to viscous forces.
- Low Re → viscosity dominates, small disturbances are smeared out → laminar flow survives.
- High Re → inertia dominates, small disturbances grow nonlinearly → flow tips into turbulence.
For pipe flow the empirical critical Re sits around 2300. The number is fragile, though. With a polished pipe, vibration-free mounts, and a smooth inlet, researchers have held laminar flow up to Re ≈ 50,000. So "Re_crit ≈ 2300" is a working engineering threshold; the real story is whether disturbances have an energy pathway wide enough to amplify.
For a flat-plate boundary layer (the thin viscous-dominated film near a wall), the relevant scale is different. With distance from the leading edge, goes critical near . Use boundary-layer thickness and the threshold becomes . The same physics keeps reappearing under different scaling.
Drag the slider below to push the streak through transition.
Start at Re = 1500. Around 2300 the tip of the streak begins to wobble; past 4000 eddies are visible everywhere. Note how the breakdown is intermittent at first rather than abrupt — that intermittency is the signature of the transition regime.
Prandtl's boundary layer — outer and inner#
A year after Reynolds' transition law (1904), Prandtl asked a different question. If viscosity is small, why does friction near walls still matter at all?
His answer: separate the region where viscosity matters from the rest. The thin film where the no-slip condition forces the fluid from zero up to free-stream speed is the boundary layer; outside it, treat the flow as inviscid potential flow. With this split, the 2.5–25 mm sliver above an aircraft wing is enough to capture viscous drag, transition, and separation.
A turbulent boundary layer is not one slab. Once distance from the wall is non-dimensionalized correctly, a universal layered structure appears:
is the wall friction velocity (square root of wall shear stress over density). is the distance over which molecular momentum diffusion acts — the viscous length. So is "distance from the wall, measured in viscous lengths."
Law of the wall — three regions#
In a flat-plate turbulent boundary layer, scaling velocity by as exposes three regions:
| Region | Range | Profile |
|---|---|---|
| Viscous sublayer | ||
| Buffer layer | smooth blend | |
| Log-law (inertial) |
Here is the von Kármán constant and for a smooth wall.
Right next to the wall, eddies are choked off; molecular diffusion handles momentum transport. With shear stress nearly constant, integrating recovers exactly. As a scale: at 20 m/s, 2 m downstream of a leading edge, corresponds to roughly 0.02 mm — the viscous sublayer is about a fifth of a hair's width.
The log region falls out of Prandtl's mixing length argument (an eddy's average travel before it equilibrates with its surroundings). Set near the wall, assume constant shear stress, integrate, and the logarithmic profile drops into your lap.
Tweak the log-law constant in the plot below.
Move from 5.0 up to 5.5 and the log line shifts upward in parallel — rough walls reduce , suction increases it. The roughness state of an entire surface compresses into the intercept of one straight line.
Mixing length — eddies as molecules#
In laminar flow, momentum is carried by molecules. Newton's viscosity law is the result. In turbulent flow, eddies (organized fluid blobs of many sizes) take that role.
Prandtl borrowed the idea of a mean free path from kinetic gas theory. Call the average distance an eddy travels before merging with its surroundings the mixing length . Then the velocity fluctuation is roughly the velocity difference over that distance, and the Reynolds shear stress becomes
That defines an eddy viscosity :
Near a wall, can exceed molecular by four orders of magnitude. Air's molecular kinematic viscosity is m²/s, while atmospheric eddy viscosity reaches 0.01–0.1 m²/s near the surface and 1–100 m²/s in large-scale flows.
The mixing-length idea is a hypothesis, but its scaffolding survives in zeroth-order RANS, in -, and in -. Treating eddies like molecules turned out to be the simplification that built industrial CFD.
Laminar vs turbulent profile in NumPy#
Pipe laminar flow has a clean closed form — the Hagen–Poiseuille parabola. Turbulent flow in the same pipe is much flatter; a 1/n power law approximates it well.
import numpy as np
import matplotlib.pyplot as plt
def laminar_poiseuille(r, R, U_max):
"""Hagen-Poiseuille: paraboloid-of-revolution profile."""
return U_max * (1.0 - (r / R) ** 2)
def turbulent_power_law(r, R, U_centerline, n=7):
"""1/n power-law turbulent fit (n=7 holds near Re ~ 1e5)."""
return U_centerline * (1.0 - np.abs(r) / R) ** (1.0 / n)
def law_of_the_wall(y_plus, kappa=0.41, B=5.0):
"""Three-region composite: viscous / buffer blend / log."""
y_plus = np.asarray(y_plus, dtype=float)
u_visc = y_plus
u_log = (1.0 / kappa) * np.log(np.maximum(y_plus, 1e-12)) + B
in_buffer = (y_plus > 5) & (y_plus < 30)
t = np.clip((y_plus - 5) / 25.0, 0.0, 1.0)
u_blend = u_visc * (1 - t) + u_log * t
return np.where(y_plus <= 5, u_visc,
np.where(y_plus >= 30, u_log, u_blend))
R = 1.0
r = np.linspace(-R, R, 201)
u_lam = laminar_poiseuille(r, R, U_max=1.0)
u_tur = turbulent_power_law(r, R, U_centerline=1.0, n=7)
bulk_lam = np.trapz(u_lam * np.abs(r), r) / np.trapz(np.abs(r), r)
bulk_tur = np.trapz(u_tur * np.abs(r), r) / np.trapz(np.abs(r), r)
print(f"laminar bulk/centerline = {bulk_lam:.3f}")
print(f"turbulent bulk/centerline = {bulk_tur:.3f}")
# laminar bulk/centerline = 0.500
# turbulent bulk/centerline = 0.817
y_plus = np.logspace(-1, 3, 200)
u_plus = law_of_the_wall(y_plus)
fig, axes = plt.subplots(1, 2, figsize=(10, 4))
axes[0].plot(r, u_lam, label="laminar")
axes[0].plot(r, u_tur, label="turbulent (n=7)")
axes[0].set(xlabel="r/R", ylabel="u / U_max", title="pipe profile")
axes[0].legend()
axes[1].semilogx(y_plus, u_plus)
axes[1].set(xlabel="y+", ylabel="u+", title="law of the wall")
plt.tight_layout()Two numbers carry the punchline. Laminar mean velocity is exactly half the centerline value — the volume of a paraboloid versus its bounding cylinder. Turbulent mean is 81% of centerline. The same bulk flow needs a lower peak because turbulence mixes momentum across the cross-section. That uniformity is the visible face of an eddy viscosity that sits four orders of magnitude above the molecular value.
Why transition matters in practice#
The split between laminar and turbulent is not just a curiosity.
- Aircraft wings designed for natural laminar flow (NLF) can cut friction drag by nearly half by extending the laminar region.
- Heat exchangers deliberately trip turbulence to raise the heat-transfer coefficient. The same momentum mixing carries heat.
- Pipeline pumping costs jump near the critical Re. Avoiding the transition window often dictates the operating point.
- In LES and RANS, the first off-wall cell must land at to resolve the viscous sublayer, or in if a wall function will fill in. A single one-digit number sets the grid budget.
Three-line takeaway#
- Re_crit ≈ 2300 marks the point where inertia overtakes viscosity enough to grow disturbances. The number is shaky (5,000–50,000 in clean experiments), but one number is enough for engineering design.
- The turbulent boundary layer is layered: viscous sublayer (, linear), buffer (), log region (). This universal structure is the meter stick for RANS and LES grid design.
- Mixing length is a 100-year-old hypothesis. Treating eddies like molecules is the simplification that still powers industrial CFD. Near a wall is the seed of the law of the wall.
Share if you found it helpful.