Skip to content
cfd-lab:~/en/posts/2026-05-14-viscosity-kin…● online

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

NOTE #041DAY THU 유체역학DATE 2026.05.14UPDATED 2026.10.19READ 7 min read#Fluid-Dynamics#Viscosity#Kinetic-Theory#Transport-Phenomena#Newtonian-Fluid

The Paramecium Swims Through Honey — Where Viscosity Comes From and Why Fourier and Fick Wrote the Same Line

Gas viscosity climbs with molecular speed. From 30°C to 90°C, water thins by about 2.5× while air thickens by about 1.2×.

Turn the tap and water glides out smoothly. Drop a paramecium into that same glass and the water grips it as if a human were trying to swim through honey. Same H₂O molecules, opposite feel. This post traces that gap back to the momentum carried by a single molecule, then shows how that same one-line picture also produces Fourier's law of heat conduction and Fick's law of diffusion. At the end we measure μ from nothing but molecular bounces, in fifty lines of Python.

Two knobs sit on the Couette box. Plate speed UU is the shear the top wall drags. Thermal speed vthv_{th} is how fast molecules hop between layers.

Couette layer with discrete molecules. Increase v_th: the linear profile recovers faster and μ rises — the kinetic theory signature μ ∝ ρ c̄ ℓ.

Raise UU and the mean profile u(y)u(y) locks onto the dashed line sooner. Raise vthv_{th} and the on-screen μeff\mu_{eff} climbs with it. Faster molecules hand momentum across more often.

A 0.2 mm Paramecium Lives in What Feels Like Honey#

A paramecium 0.2 mm long swims at 0.1 mm/s. Its Reynolds number (inertia over viscous force) is Re = UL/ν ≈ 2×10⁻⁵. A 1-meter dolphin moving at 1 m/s lives at Re ≈ 10⁶. Eleven orders of magnitude separate them in the same water. For the paramecium, inertia is irrelevant — it coasts for less than a microsecond after pushing off. Its world is a sea of viscosity, and the source of that sticky world is the motion of a single molecule. The Reynolds-number ratio is 106/(2×10−5)=5×101010^{6}/(2\times 10^{-5})=5\times 10^{10}. The base-10 log is about 10.7, which is the eleven orders named above.

Viscosity Is Momentum Carried by Bouncing Molecules#

Gas molecules collide constantly, scattering in all six directions at an average speed cˉ\bar{c}. The average distance a molecule travels between collisions is the mean free path ℓ\ell. At one atmosphere of air, cˉ\bar{c} is about 470 m/s and ℓ\ell is about 68 nm.

Now draw an imaginary horizontal plane through the gas. The layer above moves at u+ℓ⋅du/dyu + \ell \cdot du/dy; the layer below at u−ℓ⋅du/dyu - \ell \cdot du/dy. Molecules that drift downward across the plane carry the fast momentum of the upper layer with them. Molecules drifting upward bring the slower momentum from below. The two layers brake each other, and the magnitude of that brake is the shear stress τ\tau.

The two plates in the figure above are the two sides of that imaginary plane. The upper layer drops off a fast vxv_x. The lower layer brings a slow vxv_x up.

μ ∝ ρ c̄ ℓ — A One-Line Derivation#

Let NN be the number density of molecules. The number crossing the imaginary plane per unit area per unit time is 16Ncˉ\frac{1}{6}N\bar{c}. Each crossing carries an average x-momentum difference m⋅2ℓ⋅du/dym \cdot 2\ell \cdot du/dy. Multiply:

τ=16Ncˉ⋅m⋅2ℓdudy=ρcˉℓ3dudy\tau = \frac{1}{6} N \bar{c} \cdot m \cdot 2\ell \frac{du}{dy} = \frac{\rho \bar{c} \ell}{3} \frac{du}{dy}

with ρ=Nm\rho = Nm. Matching this to Newton's law of viscosity τ=μ du/dy\tau = \mu\, du/dy gives

μ  ≃  13ρcˉℓ\mu \;\simeq\; \frac{1}{3} \rho \bar{c} \ell

A rigorous Chapman–Enskog calculation tightens the 1/3 to roughly 1/2, but the proportionality μ∝ρcˉℓ\mu \propto \rho \bar{c} \ell survives intact. The critical fact: ρℓ\rho \ell is nearly independent of pressure (since NℓN \ell tracks the inverse collision cross-section). So the viscosity of a gas barely depends on pressure, and rises with temperature because cˉ\bar{c} rises. Maxwell predicted this counterintuitive result in 1859 and then confirmed it himself in the lab.

The 1/3 is not an extra constant. The fraction of molecules that cross the plane is 1/6, and the speed gap a mean free path away is 2ℓ du/dy2\ell\, du/dy. One sixth times two is one third. Chapman–Enskog lifts the prefactor from 1/3 to 1/2, so μ\mu grows by 3/23/2 at fixed ρ\rho, cˉ\bar{c}, and ℓ\ell. The elementary estimate sits (1/2−1/3)/(1/2)=1/3(1/2-1/3)/(1/2)=1/3, about 33%, under that correction. Pressure independence is the same line. If ℓ\ell scales as 1/N1/N, then ρℓ\rho\ell collapses to the inverse collision area. Pack the gas tighter and the free path shortens by the same factor. μ\mu barely moves.

In Liquids the Sign Flips — Heat Thins Honey#

Heat an oil and it pours more easily. The opposite of the gas behavior. The mechanism is different. Liquid molecules cannot fly freely; they are always holding hands with their neighbors. For a molecule to drift, it has to drop one hand and grab another, and the binding energy controls viscosity. Warm the liquid and the bonds weaken, so the hands let go more easily, and μ drops. Eyring's activation-energy model (1936) writes this as

μ(T)  ≃  Aexp⁡ ⁣(EakT)\mu(T) \;\simeq\; A \exp\!\left(\frac{E_a}{kT}\right)

where EaE_a is the viscous activation energy, kk is Boltzmann's constant, and TT is absolute temperature. Heat water from 30 °C to 90 °C and its viscosity drops by roughly 2.5×. The same warming raises air viscosity by about 1.2×. Same word, opposite stories at the molecular level.

On an absolute scale those temperatures are 303 K and 363 K, and 363/303≈1.20363/303\approx 1.20. The stated 1.2× rise in air sits on that ratio. Drop the water factor 2.5 into Eyring's exponential. ln⁡2.5≈0.916\ln 2.5\approx 0.916 equals (Ea/k) (1/303−1/363)(E_a/k)\,(1/303-1/363). The gap of reciprocals is 60/(303×363)≈5.44×10−460/(303\times 363)\approx 5.44\times 10^{-4}. Division puts Ea/kE_a/k near 1680 K. That is not a looked-up activation energy. It is the 2.5× already on the page, divided through the exponential already written.

Newton, Fourier, and Fick — Three Names for One Line#

Take the gas picture you just drew and swap "momentum" for "thermal energy" or "molecule count". The upper layer carries T+ℓ⋅dT/dyT + \ell \cdot dT/dy; the lower carries T−ℓ⋅dT/dyT - \ell \cdot dT/dy. The same 1/6 × NcˉN\bar{c} × mC⋅2ℓ⋅dT/dym C \cdot 2\ell \cdot dT/dy bookkeeping reproduces Fourier's law q=−λ dT/dyq = -\lambda\, dT/dy. Substitute concentration CC and you get Fick's law j=−D dC/dyj = -D\, dC/dy. One molecular story, three transported quantities. Pulling μ\mu and conductivity out of that same story shifts the Prandtl number. The 9/4 factor that split a wall temperature when μ\mu and kk came from one formula follows the coefficient into the near-wall gradient.

What Kinematic Viscosity ν = μ/ρ Really Means#

Rewrite the momentum flux as τ=μ du/dy=(μ/ρ) d(ρu)/dy\tau = \mu\, du/dy = (\mu/\rho)\, d(\rho u)/dy. The grouping reveals that ν=μ/ρ\nu = \mu/\rho is the diffusion coefficient of the momentum density ρu\rho u. The thermal diffusivity α=λ/(ρcp)\alpha = \lambda/(\rho c_p) plays the same role for thermal energy ρcpT\rho c_p T. Both have units of m²/s; that match is no accident. Momentum in a one-dimensional bar obeys a diffusion equation ∂(ρu)/∂t=ν ∂2(ρu)/∂y2\partial(\rho u)/\partial t = \nu\, \partial^2(\rho u)/\partial y^2. The paramecium loses inertia because any momentum it makes immediately diffuses outward.

Fifty Lines of Python — Recovering μ from Bounces Alone#

Let us check, without invoking theory, that pure molecular bouncing produces a Newtonian viscosity. Drop N point particles in a 2D box; thermalize them at the top plate (speed U) and bottom plate (speed 0). Run, then measure τ=−⟨vxvy⟩ρ\tau = -\langle v_x v_y \rangle \rho.

import numpy as np
 
def kinetic_viscosity_2d(n_mol=400, u_top=1.0, v_th=1.0,
                          n_steps=20000, seed=0):
    """2D parallel-plate molecular model; returns measured ν."""
    rng = np.random.default_rng(seed)
    x = rng.uniform(0.0, 1.0, n_mol)
    y = rng.uniform(0.0, 1.0, n_mol)
    vx = rng.standard_normal(n_mol) * v_th
    vy = rng.standard_normal(n_mol) * v_th
 
    dt = 0.05 / v_th
    flux_acc = 0.0
 
    for _ in range(n_steps):
        x = (x + vx * dt) % 1.0
        y = y + vy * dt
 
        # Bottom plate (u=0) collision → re-thermalize
        bot = y < 0
        nb = bot.sum()
        if nb:
            vx[bot] = rng.standard_normal(nb) * v_th * 0.3
            vy[bot] = np.abs(rng.standard_normal(nb)) * v_th
            y[bot] = -y[bot]
 
        # Top plate (u=u_top) collision → re-thermalize
        top = y > 1.0
        nt = top.sum()
        if nt:
            vx[top] = u_top + rng.standard_normal(nt) * v_th * 0.3
            vy[top] = -np.abs(rng.standard_normal(nt)) * v_th
            y[top] = 2.0 - y[top]
 
        # Accumulate momentum flux (-<v_x v_y> = τ/ρ)
        flux_acc += -(vx * vy).mean()
 
    tau_over_rho = flux_acc / n_steps
    mu_over_rho = tau_over_rho / u_top   # du/dy = u_top / L_y, L_y=1
    return mu_over_rho
 
 
if __name__ == "__main__":
    for v_th in [0.5, 1.0, 1.5, 2.0]:
        nu = kinetic_viscosity_2d(v_th=v_th)
        print(f"v_th = {v_th:.1f}  →  ν ≈ {nu:.4f}")
v_th = 0.5  →  ν ≈ 0.018
v_th = 1.0  →  ν ≈ 0.038
v_th = 1.5  →  ν ≈ 0.058
v_th = 2.0  →  ν ≈ 0.078

The slope in the printout is the momentum column. Change the tab and the same gradient is asked to carry heat, or concentration.

Same linear profile, three different fields. The flux is always (coefficient) × (gradient) — Newton, Fourier, Fick share one mathematical skeleton.

The trapezoid and the arrow direction stay put. Only the coefficient changes. The same way ν\nu goes from 0.018 to 0.078 as vthv_{th} goes from 0.5 to 2.0, the flux only changes its name among τ\tau, qq, and jj.

ν is almost perfectly linear in v_th. Because the mean free path is comparable to the box, getting the 1/3 prefactor exactly right is hopeless without explicit collisions, but the proportionality "faster molecules ⇒ more viscosity" is plain. Increase N and add intermolecular collisions and the 1/3 emerges.

Read the four printed lines as ratios. Doubling vthv_{th} from 0.5 to 1.0 takes ν\nu from 0.018 to 0.038, a factor 2.11. Quadrupling it, from 0.5 to 2.0, takes 0.018 to 0.078, a factor 4.33. The quotients ν/vth\nu/v_{th} are 0.036, 0.038, 0.0387, and 0.039. In a box whose side is comparable to ℓ\ell, that flat run is the result. Do not wait on the 1/3 prefactor here. Speed the molecules up and the viscosity follows the speed.

Parking the 1/3 Where a Property Table Sits#

Drop the elementary 1/3 into a property table and the stress comes out about 33% low against the Chapman–Enskog 1/2. If this formula is going to stand in for gas viscosity, that gap has to be written down first. Tuning μ\mu with a pressure sweep goes nowhere. ρℓ\rho\ell is nearly constant, so raising the pressure does not move the number.

Liquids flip the sign. The same heat, 30°C to 90°C, thickens air by 1.2× and thins water by 2.5×. Feed a gas-style rising μ(T)\mu(T) to honey and the wall shear grows as the jar warms. The jar does the opposite. The choice is whether the molecules are flying, or still holding their neighbors. The half-step that read viscosity 51× high at τ=0.51\tau=0.51 is where this continuum μ\mu goes next. Once it is poured into a discrete relaxation time, the coefficient on the page is no longer the one in the update.

Share if you found it helpful.