Skip to content
cfd-lab:~/zh/posts/2026-05-07-circulation-l…online
NOTE #036DAY THU 유체역학DATE 2026.05.07READ 4 min readWORDS 1,887#유체역학#양력#Magnus#Kutta-Joukowski#Circulation#Potential-Flow

旋转的球为什么会拐弯 — 环量、马格努斯效应与库塔–儒科夫斯基定理

旋转物体获得升力的真正原因,以及起动涡这个看不见的关键角色

旋转的炮弹拒绝直飞的那一天#

1853年,柏林物理学家亨利希·马格努斯把炮兵们已经追问了几个世纪的疑问搬进了风洞。带自旋的炮弹不会沿直线飞行,而是会向侧面偏转。他将一根竖直的旋转圆柱悬挂在气流中,在垂直于旋转轴的方向测到了恒定的侧向力。旋转产生了升力。

剩下的问题是「为什么」。在没有粘性的理想流体里,物体表面是滑动的,凭什么上侧流速会更快、下侧会更慢呢?答案只有一个词,环量(circulation)。本文从环量的定义出发,展示旋转圆柱如何被向上拉起,沿着这条线索走到库塔–儒科夫斯基定理 — 它把这一结论推广到所有二维举升体。最后我们面对非粘性理论独自无法解答的那一点 — 静止流体里的环量到底是怎么「产生」的 — 用起动涡(starting vortex)作出解答。

环量 — 闭曲线上的一行积分#

环量 Γ\Gamma 的定义很简洁。

Γ=Cuds\Gamma = \oint_{C} \mathbf{u}\cdot d\mathbf{s}

沿闭曲线 CC 把速度的切向分量绕一圈积起来。u\mathbf{u} 是速度向量,dsd\mathbf{s} 是曲线的微元切矢。

用斯托克斯定理改写为面积分,

Γ=SωdA\Gamma = \iint_{S} \boldsymbol{\omega}\cdot d\mathbf{A}

其中 ω=×u\boldsymbol{\omega} = \nabla\times\mathbf{u} 是涡量,dAd\mathbf{A} 是闭曲线所围曲面的法向微元面积。换句话说,环量就是被这条闭曲线锁住的涡量总量

有两点值得记住。哪怕闭曲线内部每一点的涡量都是零,环量仍可以不为零 — 围绕一个自由涡(涡量集中于中心点)的大闭曲线就是这种情形。另外,涡量与环量的量纲不同。涡量是 [1/s],环量是 [m²/s],后者是涡量再乘上面积。

旋转圆柱为什么被向上拽起#

在不可压、无旋、无粘的流动中,构造定常解最干净的办法是把基本解叠加起来。均匀来流 + 偶极子 = 静止圆柱。再在中心放一个点涡,就成了旋转圆柱。

打包成一个复势,

W(z)=Uz+UR2z+iΓ2πlnzW(z) = U_\infty z + \frac{U_\infty R^2}{z} + \frac{i\Gamma}{2\pi}\ln z

三项依次对应均匀流、偶极子、点涡(约定顺时针方向为正 Γ\Gamma)。表面 r=Rr = R 上的切向速度是

uθ(R,θ)=2UsinθΓ2πRu_\theta(R, \theta) = -2 U_\infty \sin\theta - \frac{\Gamma}{2\pi R}

在上表面(θ=π/2\theta = \pi/2)两项同号叠加,uθ|u_\theta| 变大;在下表面(θ=π/2\theta = -\pi/2)互相抵消,变小。上面更快,所以由伯努利方程

p+12ρu2=constp + \tfrac{1}{2}\rho u^2 = \text{const}

上表面压力更低。沿着圆柱周线把压力差积分起来,剩下的就是一个向上的合力。

在下面的模拟里直接动手调一调。

Streamlines from uniform flow U∞ + doublet (cylinder) + point vortex Γ. Top flow accelerates, bottom decelerates: by Bernoulli, low pressure on top → upward force L′ = ρU∞Γ. Yellow dots are stagnation points; when |Γ| > 4πU∞R they merge and detach below the cylinder (red dot).

Γ|\Gamma| 从零往上调,黄色的驻点会向下滑。当 Γ>4πUR|\Gamma| > 4\pi U_\infty R 时,两个驻点合并成一点并脱离圆柱表面 — 越过这个临界自旋,流动的拓扑就完全翻转了。

库塔–儒科夫斯基定理 — L′ = ρU∞Γ#

把表面压力直接积一遍,结果非常干净。在非粘定常流中阻力恰好为零,单位展长的升力是

L=ρUΓL' = \rho U_\infty \Gamma

1894年英国的兰彻斯特把它作为猜想提出来,20世纪初德国的库塔与俄国的儒科夫斯基各自独立地把它证明成定理。

这条公式之所以强大,有两个原因。第一,物体形状消失了。任何二维截面只要绕它的环量相同,产生的升力就一样。第二,升力正比于环量,而不是旋转本身。一片不旋转的机翼,只要剖面形状和迎角合适,翼周围一样会产生环量,从而产生升力。

起动涡和粘性那只看不见的手#

但这里出现了一个矛盾。静止流体里到处都是零涡量,所以任何闭曲线的环量都是零。开尔文环量定理 — 在非粘且体积力保守的流动中,沿物质曲线的环量随时间不变 — 要求这个零必须永远保持下去。

那飞机是怎么飞起来的?

答案是粘性。机翼从静止刚一加速时,非粘理论就要求后缘(trailing edge)的尖角处出现无穷大速度。真实流体里,粘性立刻把这部分动能磨掉,后缘处的涡剥离脱落 — 这就是起动涡(starting vortex)。它是一团逆时针方向的涡。

开尔文定理还要求,即便起动涡飘走之后,把机翼和尾迹一起圈进来的足够大的闭曲线,其总环量仍要保持为零。于是机翼周围必然留下一个大小相等、方向顺时针的环量 — 这就是束缚涡(bound vortex),也是库塔–儒科夫斯基升力的真正来源。

请按下面的 start motion 按钮看一看。

Press start motion: a counterclockwise starting vortex sheds from the trailing edge while an equal-magnitude clockwise bound circulation grows around the wing. Their sum is zero (Kelvin's circulation theorem). The bound circulation is what produces lift L′ = ρU∞Γ_bound. t=0.00 s, Γ_bound=0.00, Γ_shed=0.00.

把迎角调大,顺时针的束缚环量就会增大,同等大小的逆时针起动涡也会从后缘脱落。两者之和始终为零。看似无粘的机翼升力,其实只是用非粘理论重新读一次起动涡剥离之后的状态而已。

代码:表面速度与升力系数#

把马格努斯效应压进一页 NumPy:流函数、表面压力系数、升力系数一起出。

import numpy as np
 
def cylinder_streamfunction(x, y, U_inf, gamma, R):
    """流函数 ψ = U sinθ (r - R²/r) + Γ/(2π) ln(r/R), 约定 Γ>0 为顺时针."""
    r = np.hypot(x, y)
    theta = np.arctan2(y, x)
    safe = np.maximum(r, 1e-9)
    psi_uniform = U_inf * np.sin(theta) * (safe - R ** 2 / safe)
    psi_vortex = (gamma / (2 * np.pi)) * np.log(safe / R)
    return psi_uniform + psi_vortex
 
def surface_pressure_coeff(theta, U_inf, gamma, R):
    """表面 r=R 上的压力系数 Cp = 1 - (u/U∞)²."""
    u_theta = -2 * U_inf * np.sin(theta) - gamma / (2 * np.pi * R)
    return 1.0 - (u_theta / U_inf) ** 2
 
def magnus_lift_coefficient(gamma, U_inf, R):
    """L' = ρU∞Γ → C_L = 2Γ/(U∞·d), 直径 d = 2R."""
    return gamma / (U_inf * R)
 
# 跑三组直接看(取 ρ = 1)
U_inf, R = 10.0, 0.5
for gamma in [0.0, np.pi * U_inf * R, 4 * np.pi * U_inf * R]:
    theta = np.linspace(-np.pi, np.pi, 360)
    cp = surface_pressure_coeff(theta, U_inf, gamma, R)
    L_per_span = U_inf * gamma
    cl = magnus_lift_coefficient(gamma, U_inf, R)
    print(f"Γ={gamma:6.2f}  C_L={cl:5.2f}"
          f"  Cp_top={cp[270]:+.2f}  Cp_bot={cp[90]:+.2f}"
          f"  L'/ρ={L_per_span:6.2f}")

Γ=0\Gamma = 0 时升力严格为零,上下表面的 Cp 完全对称。把 Γ\Gamma 推到临界值 4πUR4\pi U_\infty R,两个驻点会合并成一点 — 也就是上面可视化里的那个红点。

三句话带走#

  • 升力来自环量,而不是旋转本身。单位展长 L=ρUΓL' = \rho U_\infty \Gamma 对所有二维举升体都成立。
  • 旋转圆柱可以被均匀流 + 偶极子 + 点涡精确地叠出来。上侧流快、下侧流慢,伯努利负责把它向上托起。
  • 没有粘性就没有升力。后缘脱落的起动涡保住了开尔文定理,同时在翼周围留下大小相同方向相反的束缚涡 — 这就是飞行所依靠的东西。

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