Skip to content
cfd-lab:~/zh/posts/2026-04-28-rankine-vorte…online
NOTE #027DAY TUE 유체역학DATE 2026.04.28READ 4 min readWORDS 1,979#Vortex#Vorticity#유체역학#유동현상#Helmholtz

漩涡的两副面孔 — 自由涡、强迫涡与亥姆霍兹

从浴缸漩涡到龙卷风,涡量到底度量了什么

把浴缸的塞子拔掉,水会一圈圈地转。我们把这一幕称作"水在旋转"。可流体力学家面对这片区域的大部分时,会反过来说:"这里没有发生旋转(irrotational)。"看似矛盾的两句话里,藏着涡(vortex)真正的样子。本文把同一幅画里共存的两种漩涡分开:自由涡(free vortex,速度按 1/r1/r 分布)与强迫涡(forced vortex,速度按 ωr\omega r 分布),讲清楚涡量(vorticity,流体微团自转角速度的两倍)究竟在度量什么,再追到亥姆霍兹定理为什么把涡称作"不灭"。

浴缸漩涡真的是"旋转"吗#

"旋转"这一个词里塞着两层意思。其一是 公转 — 围着某个点做圆周运动。其二是 自转 — 微团自己绕自己的轴转。在浴缸漩涡里,水的微团确实公转。可是自转呢?远离排水口的那块区域几乎没有。一片漂在水面的小叶子沿着圆形轨迹走,可它自己并不转动,始终把同一面对着排水口。

在流体力学里,"旋转"指的就是自转。所以自由涡除了奇异的中心点以外,整个区域都被归为"无旋"。

强迫涡与自由涡:同一幅画,不同的灵魂#

往一个旋转的容器里搅水搅久了,整桶水会像刚体一样一起转。这叫 强迫涡。每一个微团既公转也自转。

uθ(r)=ωru_\theta(r) = \omega \, r

其中 uθu_\theta 是切向速度,ω\omega 是刚体的角速度,rr 是到中心的距离。速度与半径成正比。

而在忽略粘性的理想流体里自然形成的漩涡,是 自由涡(即势涡)。

uθ(r)=Γ2πru_\theta(r) = \frac{\Gamma}{2\pi r}

Γ\Gamma环量(circulation) — 沿一条闭合曲线的速度线积分。速度按 1/r1/r 衰减,到中心发散。这一奇点在真实流体里被粘性所驯服。

强迫涡自由涡
速度ωr\omega rΓ/2πr\Gamma / 2\pi r
自转
能量输入持续不断仅在最初一次
日常例子搅动的杯水浴缸、龙卷风

同样的圆形流动,自转的有无却相反。把这一差异化为单一标量的,就是涡量。

涡量度量了什么#

涡量 ω\boldsymbol{\omega} 是速度场的旋度(curl)。

ω=×u\boldsymbol{\omega} = \nabla \times \mathbf{u}

二维情形里只剩 zz 分量:

ωz=vxuy\omega_z = \frac{\partial v}{\partial x} - \frac{\partial u}{\partial y}

其中 u,vu, v 分别是 x,yx, y 方向的速度分量。这一值正好等于 流体微团自转角速度的两倍

代入强迫涡,ωz=2ω\omega_z = 2\omega 是常数 — 整片区域都在自转。代入自由涡,除中心外处处 ωz=0\omega_z = 0。流线一样圆,自转情况却恰好相反。

兰金组合涡 — 龙卷风的蓝图#

真实世界里的漩涡不会只听一种法则。靠近中心的地方粘性强,流体像刚体一样转;远处粘性可忽略,自由涡的法则接管。把两者拼起来的模型就是 兰金(Rankine)组合涡

uθ(r)={UmaxRr,rRUmaxRr,r>Ru_\theta(r) = \begin{cases} \dfrac{U_{\max}}{R}\, r, & r \le R \\[6pt] \dfrac{U_{\max}\, R}{r}, & r > R \end{cases}

RR 是核心半径,UmaxU_{\max} 是核心边界处的最大切向速度。两段表达式在 r=Rr = R 光滑相接。龙卷风的风速分布、飞机翼尖脱出的翼尖涡、排水口上方的吸入涡,都接近这一形状。核心内是有旋区,核心外是无旋区。

亥姆霍兹定理 — 涡的不灭#

在无粘流体中,作用在微团上的力只有压力,而压力指向微团中心,无法产生力矩。所以 此前不自转的微团永远不会开始自转,正在自转的微团永远不会停下。这就是亥姆霍兹涡定理的一行总结。

更精确的说法是 开尔文(Kelvin)定理:沿一条闭合物质曲线测得的环量 Γ\Gamma 不随时间变化。

DΓDt=0\frac{D\Gamma}{Dt} = 0

D/DtD/Dt 是物质导数(跟随流体微团求导)。涡管不能被切断也不能被分开,被拉长后转得更快 — 跟花样滑冰运动员收紧手臂是同一件事。真实流体有粘性,涡终究会扩散,但在水或空气这种低粘性介质中,它们能存活好几天。这也是为什么飞机航迹上的凝结涡能久久可见。

速度势打开的那扇门#

在无旋(ω=0\boldsymbol{\omega} = 0)区域,向量恒等式直接送一份礼:

×u=0u=ϕ\nabla \times \mathbf{u} = 0 \quad \Longrightarrow \quad \mathbf{u} = \nabla \phi

这一标量函数 ϕ\phi 称为 速度势。如果还满足不可压缩性 u=0\nabla \cdot \mathbf{u} = 0,那么

2ϕ=0\nabla^2 \phi = 0

正是拉普拉斯方程。无粘、无旋、不可压缩流可以由单一标量函数完全描述。十九世纪的流体力学之所以能用解析手段处理翼型升力、源汇模型,秘诀就在这里。自由涡本身可以写成 ϕ=(Γ/2π)θ\phi = (\Gamma / 2\pi)\, \theta — 一个与角度 θ\theta 成正比的势函数。

用代码看这两种涡#

把兰金涡的速度和离散涡量画出来,差别一目了然。

import numpy as np
 
def rankine_speed(r, R_core, U_max):
    """兰金组合涡的切向速度"""
    speed = np.where(r <= R_core,
                     U_max * r / R_core,
                     U_max * R_core / np.maximum(r, 1e-9))
    return speed
 
def vorticity_field(u, v, dx, dy):
    """二维离散旋度: omega_z = dv/dx - du/dy"""
    dvdx = (v[1:-1, 2:] - v[1:-1, :-2]) / (2 * dx)
    dudy = (u[2:, 1:-1] - u[:-2, 1:-1]) / (2 * dy)
    return dvdx - dudy
 
# 在 200x200 网格上采样
N, L = 200, 2.0
x = np.linspace(-L, L, N)
y = np.linspace(-L, L, N)
X, Y = np.meshgrid(x, y)
R = np.hypot(X, Y)
THETA = np.arctan2(Y, X)
 
U_max, R_core = 1.0, 0.5
u_theta = rankine_speed(R, R_core, U_max)
u =  -u_theta * np.sin(THETA)
v =   u_theta * np.cos(THETA)
 
dx = dy = x[1] - x[0]
omega = vorticity_field(u, v, dx, dy)
 
# 核心内外的平均涡量
mask_in  = R[1:-1, 1:-1] <  R_core
mask_out = R[1:-1, 1:-1] >  1.5 * R_core
print(f"核心内平均 omega_z ~ {omega[mask_in].mean():.3f}")   # ~ 2 * U_max / R_core
print(f"核心外平均 omega_z ~ {omega[mask_out].mean():.3f}")  # ~ 0

核心内 ωz2Umax/R\omega_z \approx 2 U_{\max}/R 几乎是常数,核心外则接近零。同样的圆形流动里,把"旋转"与"不旋转"分隔开的边界,正好画在 r=Rr = R 上。

在仿真中亲手调一调#

请在下面的仿真中亲手调动参数。被困在中央圆盘里的黄色示踪粒子构成强迫涡核心;外围漂动的蓝色粒子生活在自由涡区域。

Yellow tracers sit inside the forced-vortex core and rotate as a solid body (ω = 2U/R). Blue tracers outside follow u_θ = ΓR/r — circular streamlines but zero local spin. The Rankine combined vortex is the simplest model for a bath-tub drain or tornado.

把核心半径 RR 调小,自转区域就变窄 — 这正是龙卷风"风眼"收紧的模型。把 UmaxU_{\max} 调大,核心涡量 ω=2Umax/R\omega = 2 U_{\max}/R 也跟着放大。右上角的小图显示:rRr \le R 区段是直线(ωr\omega r),r>Rr > R 区段是双曲线(1/r1/r),它们在 r=Rr = R 处光滑相接。

下次再看到漩涡#

把有自转的区域和没自转的区域分开。这就是这一小时留下的一句话。下次见到浴缸漩涡、茶杯里的小漩、卫星上的台风云图,记得回想三件事。

  • 公转和自转不是一回事。 同样圆的流线可以承载零涡量。
  • 兰金组合涡是最简单的现实模型。 核心内做刚体转动,核心外按 1/r1/r
  • 亥姆霍兹定理回答了"涡为何这么难消失" — 粘性越小,活得越久。

带着这三行,下次乱流课上"涡量输运方程"再登场,就不会陌生。涡量本身不再守恒,但精神还停在原处。

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