Skip to content
cfd-lab:~/en/posts/2026-05-05-reynolds-pipe…● online

Translated from the author's Korean original. Read the original (한국어)

NOTE #032DAY TUE 유체역학DATE 2026.05.05UPDATED 2026.10.19READ 8 min read#Fluid-Dynamics#Turbulence#Reynolds#Boundary-Layer#Flow-Phenomena

When the Stream Breaks — Reynolds' Critical Number and the Layered Turbulent Boundary

Park the first grid point in the log layer and the viscous sublayer never gets computed. Wall friction then hangs on a single intercept, B.

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. The note stays with why the threshold sits near Re ≈ 2300, and how the boundary layer past it splits into a viscous sublayer, a buffer, and a log region. Set the Re slider at 1500 and the dye streak stays straight; push it toward 8000 and color fills the pipe.

Laminar (Re_crit ≈ 2300)

Crossing 2300, only the tip wobbles at first. Before 4000 the eddies appear in patches and vanish again. Pause on that frame and the transition does not finish in one picture.

When the colored streak suddenly tangles#

Reynolds injected dye through the centerline of a glass pipe. He varied diameter dd, mean speed uu, and kinematic viscosity ν\nu, asking one thing: when does the streak fall apart?

Across every combination, transition started near a single value of one dimensionless group:

Re=u dν\mathrm{Re} = \frac{u\, d}{\nu}

Here uu is the mean velocity, dd is the characteristic length (pipe diameter), and ν=μ/ρ\nu = \mu / \rho 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 1/Re1/\mathrm{Re}. 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. The same number splitting an insect's swim from a ship's wake is the subject of how Reynolds number changes the scale of a flow.

For a flat-plate boundary layer (the thin viscous-dominated film near a wall), the relevant scale is different. With distance xx from the leading edge, Rex=U∞x/ν\mathrm{Re}_x = U_\infty x / \nu goes critical near 3×1053 \times 10^5. Use boundary-layer thickness δ\delta and the threshold becomes Reδ≈2700\mathrm{Re}_\delta \approx 2700. The same physics keeps reappearing under different scaling.

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:

y+=y uτν,uτ=τw/ρy^+ = \frac{y\, u_\tau}{\nu}, \qquad u_\tau = \sqrt{\tau_w / \rho}

uτu_\tau is the wall friction velocity (square root of wall shear stress over density). ν/uτ\nu / u_\tau is the distance over which molecular momentum diffusion acts — the viscous length. So y+y^+ 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 uτu_\tau as u+=u/uτu^+ = u / u_\tau exposes three regions:

RegionRangeProfile
Viscous sublayer0<y+<50 < y^+ < 5u+=y+u^+ = y^+
Buffer layer5<y+<305 < y^+ < 30smooth blend
Log-law (inertial)30<y+<0.2 δ+30 < y^+ < 0.2\, \delta^+u+=1κln⁡y++Bu^+ = \frac{1}{\kappa} \ln y^+ + B

Here κ≈0.41\kappa \approx 0.41 is the von Kármán constant and B≈5.0B \approx 5.0 for a smooth wall.

Right next to the wall, eddies are choked off; molecular diffusion handles momentum transport. With shear stress nearly constant, integrating τw=μ du/dy\tau_w = \mu\, du/dy recovers u+=y+u^+ = y^+ exactly. As a scale: at 20 m/s, 2 m downstream of a leading edge, y+=1y^+ = 1 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 ℓ=κy\ell = \kappa y near the wall, assume constant shear stress, integrate, and the logarithmic profile drops into your lap.

Tweak the log-law constant BB in the plot below.

Move BB from 5.0 up to 5.5 and the log line shifts upward in parallel — rough walls reduce BB, suction increases it. The roughness state of an entire surface compresses into the intercept of one straight line.

Drop only the log law in at y+ = 30 and u+ is (1/0.41) ln(30) + 5.0. ln(30) is about 3.40; divide by 0.41 and you get about 8.30; add B and the result is about 13.3. The linear law at that same height says u+ = 30, so the two disagree by nearly 17. At y+ = 5 the linear law is 5. Force the log law there and ln(5) ≈ 1.61 gives u+ ≈ 8.9. The gap between 5 and 8.9 is the buffer. Stitch the formulas into one expression and that band gets counted twice.

At 20 m/s and 2 m from the leading edge, y+ = 1 was 0.02 mm, so y+ = 5 is 0.10 mm. The linear law lives inside that tenth of a millimeter. Across the wall-function decade from 30 to 300, a tenfold rise in y+ adds about 2.30 to the log and only about 5.6 to u+ after dividing by 0.41. Sliding B from 5.0 to 5.5 lifts the whole log layer by 0.5. That 0.5 is about 9 percent of the 5.6 gained over one decade. Miss the intercept by half a unit because the wall is rough, and the friction velocity from the wall function shifts with it.

Mixing length — eddies as molecules#

In laminar flow, momentum is carried by molecules. Newton's viscosity law τ=μ du/dy\tau = \mu\, du/dy 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 ℓ\ell. Then the velocity fluctuation u′u' is roughly the velocity difference over that distance, and the Reynolds shear stress becomes

u′v′‾≈−ℓ2(duˉdy)2\overline{u' v'} \approx -\ell^2 \left(\frac{d\bar{u}}{dy}\right)^2

That defines an eddy viscosity νt\nu_t:

νt=ℓ2∣duˉdy∣\nu_t = \ell^2 \left|\frac{d\bar{u}}{dy}\right|

Near a wall, νt\nu_t can exceed molecular ν\nu by four orders of magnitude. Air's molecular kinematic viscosity is ν≈1.5×10−5\nu \approx 1.5 \times 10^{-5} 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 kk-ε\varepsilon, and in kk-ω\omega. 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 y+≈1y^+ \approx 1 to resolve the viscous sublayer, or in 30<y+<30030 < y^+ < 300 if a wall function will fill in. A single one-digit number sets the grid budget.

Put the first point in the log layer and the sublayer drops out#

If the first cell sits near y+ of 30, the band where u+ equals y+ is never computed. Wall shear then hangs on the log-law intercept B. For a smooth wall B is 5.0. Leave that number on a rough wall and the 0.5 parallel shift above moves into the friction velocity. The code's 0.817 is the smooth-pipe 1/7-power fit near Re of 100,000. At the same centerline speed the turbulent volume flux is 1.63 times the laminar 0.500. Attach that ratio to a pipe with the wrong intercept and the flow rate is off.

The ratio holds only after the profile is fully developed. How far a pipe must run before the parabola, or the 1/7 power, even exists is counted in entrance length and Hagen–Poiseuille. Skip that length and the 0.500 versus 0.817 comparison gets applied to a station that does not have either profile yet.

Share if you found it helpful.