Skip to content
cfd-lab:~/zh/posts/2026-06-09-drag-crisis-b…online
NOTE #069DAY TUE 유체역학DATE 2026.06.09READ 3 min readWORDS 1,682#유동현상#Drag-Crisis#Boundary-Layer#Flow-Separation#Reynolds-Number

粗糙的球为何飞得更远 — 阻力危机与边界层分离

$C_D$如悬崖般骤降的阻力危机,及其背后的边界层分离

人们容易以为,同样速度下光滑的球比粗糙的球更干净地切开空气。高尔夫球正面推翻了这个直觉。它表面布满数百个凹坑(dimple,高尔夫球上的小凹陷),却比光滑球飞远将近一倍。本文追溯这个悖论的根源——阻力危机(drag crisis)。我们将看到CDC_D(阻力系数)为何在某个雷诺数处如悬崖般骤降,藏在背后的边界层分离,以及凹坑为何把这道悬崖提前——一直讲到文末的Python计算。

压差阻力与摩擦阻力#

球受到的阻力有两个来源。一个是掠过表面的粘性产生的摩擦阻力(skin friction)。另一个是前后压差产生的压差阻力(form drag)。

对于像球这样的钝体(bluff body),压差阻力占绝对主导。前面空气撞上来形成高压。后面流动剥离后留下低压。这道前后压差把球向后拉。

整个阻力被收进一个无量纲系数里。

FD=12ρU2ACDF_D = \tfrac{1}{2}\, \rho\, U^2\, A\, C_D

其中ρ\rho是流体密度,UU是相对速度,AA是正面投影面积,CDC_D是阻力系数。高尔夫球的秘密在于缩小CDC_D。而CDC_D随雷诺数剧烈变化。

Re=ρUDμRe = \frac{\rho\, U\, D}{\mu}

DD是直径,μ\mu是粘性系数。ReRe表示惯性力与粘性力之比。

边界层离开壁面的瞬间#

压差阻力的大小,由流动何时离开壁面决定。这就是边界层分离(separation)。

在球的前半部,空气加速,压力下降。这是顺风。后半部则相反:空气减速,压力重新升高。这是逆压梯度(adverse pressure gradient,压力沿流动方向增大的状态)。

边界层中靠近壁面的空气,早已因粘性损失了大量动量。它没有力气一路顶住这股逆风。在某处它停下,被反向推回。边界层就在那里离开壁面,身后留下一片宽阔的低压尾流(wake)。

分离越早,尾流越宽。尾流越宽,压差阻力越大。

层流边界层与湍流边界层的分工#

转折就在这里。分离的时机取决于边界层是层流还是湍流。

层流边界层很温顺。各层之间互不混合。壁面附近又慢又缺动量,所以一遇到逆压梯度就早早屈服——在距前驻点约82°处分离。

湍流边界层剧烈翻搅。它把外层快速的空气拽向壁面,使壁面附近更结实。于是它能更久地顶住同样的逆风,把分离推到约120°,尾流随之变窄。

在下面的模拟中亲手试一试。

Toggle the boundary layer. The turbulent one carries momentum closer to the wall, separates later, and leaves a thinner wake — the shaded region behind the cylinder shrinks and the pressure drag drops.

用按钮把边界层切换为湍流,分离点向后退,阴影的尾流区域明显收窄。尾流变窄后,压差阻力降到一半以下。与直觉相反,更紊乱的边界层反而减小了阻力。

阻力危机 — CDC_D如悬崖般骤降#

把光滑球的CDC_DReRe作图,会看到一段长长的平台。从Re103Re \sim 10^33×1053{\times}10^5CDC_D徘徊在约0.4~0.5。

可是在Re3×105Re \approx 3{\times}10^5附近,它突然跌破0.1。流动方向并没有改变。是边界层从层流转捩(transition)为湍流,把分离点向后推。变窄的尾流把系数拖下悬崖。这次骤降就是阻力危机。

在下面的图中亲手试一试。

cyan: sphere C_D  ·  green: Stokes 24/Re. Raise roughness and the drag-crisis cliff slides toward lower Re — a dimpled ball trips the boundary layer early.

拉高roughness滑块,悬崖就向左移。表面越粗糙,边界层就在更低的ReRe处转捩为湍流。凹坑就是故意做粗糙的表面。高尔夫球的飞行ReRe(约2×1052{\times}10^5)若放在光滑球上,仍在阻力危机之前,处于高CDC_D区段。凹坑把危机提前,让球在飞行速度下就用上低CDC_D

Python — 阻力危机前后的高尔夫球#

我们直接计算光滑球与凹坑球的阻力。先在飞行速度下求ReRe,再按粗糙度评估阻力系数。

import math
 
def cd_subcritical(Re):
    # Clift-Gauvin 关联式 (在 Re < 3e5 时有效)
    return (24.0 / Re) * (1 + 0.15 * Re**0.687) + 0.42 / (1 + 42500 * Re**-1.16)
 
def smoothstep(x, a, b):
    t = max(0.0, min(1.0, (x - a) / (b - a)))
    return t * t * (3 - 2 * t)
 
def drag_coefficient(Re, roughness):
    # roughness 0(光滑)~1(凹坑): 把临界 Re 左移
    sub = cd_subcritical(Re)
    log_re = math.log10(Re)
    log_crit = 5.55 - 1.35 * roughness
    t = smoothstep(log_re, log_crit - 0.18, log_crit + 0.18)
    sup = 0.08 + 0.13 * smoothstep(log_re, log_crit, 7.0)  # 危机之后的分支
    return sub * (1 - t) + sup * t
 
def drag_force(U, D, roughness, rho=1.2, mu=1.8e-5):
    Re = rho * U * D / mu
    Cd = drag_coefficient(Re, roughness)
    A = math.pi * (D / 2) ** 2          # 正面投影面积
    Fd = 0.5 * rho * U**2 * A * Cd
    return Re, Cd, Fd
 
D = 0.0427   # 高尔夫球直径 [m]
U = 70.0     # 击出后的速度 [m/s]
 
for label, rough in [("smooth", 0.0), ("dimpled", 0.85)]:
    Re, Cd, Fd = drag_force(U, D, rough)
    print(f"{label}: Re={Re:.2e}  C_D={Cd:.3f}  F_D={Fd:.3f} N")

输出:

smooth: Re=1.99e+05  C_D=0.487  F_D=2.049 N
dimpled: Re=1.99e+05  C_D=0.116  F_D=0.488 N

在70 m/s的飞行速度下,高尔夫球的ReRe约为2×1052{\times}10^5ReRe相同,两者却站在阻力曲线的两侧。光滑球仍在危机之前CD0.49C_D\approx0.49),尾流很宽。凹坑球凭借粗糙度已越过危机之后CD0.12C_D\approx0.12),尾流很窄。阻力相差四倍以上。真实高尔夫球比光滑球飞得更远,核心正是这段区间的分化。

凹坑,以及其他舞台#

同样的原理随处可见。汽车设计师把车尾收顺,以延后分离、缩小尾流。板球投手只打磨球的一侧,使两侧分离点不对称,从而让球飞行时弯曲。在圆柱上缠一道绊线(trip wire,一根故意把边界层弄成湍流的细丝),就人为地把阻力危机提前。

它们有一条共同的线索。阻力的大小,与其说取决于粘性直接产生的摩擦,不如说取决于流动何时离开壁面。

三行要点#

  • 钝体的阻力大多是压差阻力,其大小由边界层在何处分离决定。
  • 湍流边界层延后分离、收窄尾流,因此CDC_DRe3×105Re \approx 3{\times}10^5附近骤降——这就是阻力危机。
  • 凹坑、粗糙度与绊线把转捩提前,让物体在更低速度下就用上低CDC_D。粗糙的球飞得更远。

如果对您有帮助,请分享。