粗糙的球为何飞得更远 — 阻力危机与边界层分离
$C_D$如悬崖般骤降的阻力危机,及其背后的边界层分离
人们容易以为,同样速度下光滑的球比粗糙的球更干净地切开空气。高尔夫球正面推翻了这个直觉。它表面布满数百个凹坑(dimple,高尔夫球上的小凹陷),却比光滑球飞远将近一倍。本文追溯这个悖论的根源——阻力危机(drag crisis)。我们将看到(阻力系数)为何在某个雷诺数处如悬崖般骤降,藏在背后的边界层分离,以及凹坑为何把这道悬崖提前——一直讲到文末的Python计算。
压差阻力与摩擦阻力#
球受到的阻力有两个来源。一个是掠过表面的粘性产生的摩擦阻力(skin friction)。另一个是前后压差产生的压差阻力(form drag)。
对于像球这样的钝体(bluff body),压差阻力占绝对主导。前面空气撞上来形成高压。后面流动剥离后留下低压。这道前后压差把球向后拉。
整个阻力被收进一个无量纲系数里。
其中是流体密度,是相对速度,是正面投影面积,是阻力系数。高尔夫球的秘密在于缩小。而随雷诺数剧烈变化。
是直径,是粘性系数。表示惯性力与粘性力之比。
边界层离开壁面的瞬间#
压差阻力的大小,由流动何时离开壁面决定。这就是边界层分离(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.
用按钮把边界层切换为湍流,分离点向后退,阴影的尾流区域明显收窄。尾流变窄后,压差阻力降到一半以下。与直觉相反,更紊乱的边界层反而减小了阻力。
阻力危机 — 如悬崖般骤降#
把光滑球的对作图,会看到一段长长的平台。从到,徘徊在约0.4~0.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滑块,悬崖就向左移。表面越粗糙,边界层就在更低的处转捩为湍流。凹坑就是故意做粗糙的表面。高尔夫球的飞行(约)若放在光滑球上,仍在阻力危机之前,处于高区段。凹坑把危机提前,让球在飞行速度下就用上低。
Python — 阻力危机前后的高尔夫球#
我们直接计算光滑球与凹坑球的阻力。先在飞行速度下求,再按粗糙度评估阻力系数。
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的飞行速度下,高尔夫球的约为。相同,两者却站在阻力曲线的两侧。光滑球仍在危机之前(),尾流很宽。凹坑球凭借粗糙度已越过危机之后(),尾流很窄。阻力相差四倍以上。真实高尔夫球比光滑球飞得更远,核心正是这段区间的分化。
凹坑,以及其他舞台#
同样的原理随处可见。汽车设计师把车尾收顺,以延后分离、缩小尾流。板球投手只打磨球的一侧,使两侧分离点不对称,从而让球飞行时弯曲。在圆柱上缠一道绊线(trip wire,一根故意把边界层弄成湍流的细丝),就人为地把阻力危机提前。
它们有一条共同的线索。阻力的大小,与其说取决于粘性直接产生的摩擦,不如说取决于流动何时离开壁面。
三行要点#
- 钝体的阻力大多是压差阻力,其大小由边界层在何处分离决定。
- 湍流边界层延后分离、收窄尾流,因此在附近骤降——这就是阻力危机。
- 凹坑、粗糙度与绊线把转捩提前,让物体在更低速度下就用上低。粗糙的球飞得更远。
如果对您有帮助,请分享。