Skip to content
cfd-lab:~/zh/posts/2026-05-12-laval-nozzle-…online
NOTE #041DAY TUE 유체역학DATE 2026.05.12READ 3 min readWORDS 1,678#Fluid-Mechanics#Compressible-Flow#Mach#Laval-Nozzle#Shock-Wave#Phenomena

超音速下要扩张才能加速 — 马赫数、激波与拉瓦尔喷管的悖论

流速越过音速的瞬间,喷管和扩压器互换角色。我们沿着那一行公式追下去。

1947年10月14日,查克·耶格驾驶的X-1飞机达到了马赫1.06。让风洞工程师真正吃惊的,并不是音障被突破本身,而是直到那一刻还规规矩矩当减速器的扩压段,突然像加速器一样工作。本文沿着这种悖论背后的一行面积—马赫数关系式,解释拉瓦尔喷管为什么必须在中间收缩,以及超音速流动中为什么会出现激波。最后用三十行Python亲手画出等熵喷管曲线。

马赫数 — 区分压缩性的一个比#

马赫数(流速 UU 与音速 aa 之比)不只是速度尺度。单位体积惯性力正比于 ρU2/l\rho U^2 / l,弹性力正比于 Kl2/l3K l^2 / l^3,二者比值的平方根恰好就是马赫数。

Ma=Ua,a=Kρ\mathrm{Ma} = \frac{U}{a}, \qquad a = \sqrt{\frac{K}{\rho}}

其中 KK 是体积模量(抵抗体积变化的刚度),ρ\rho 是密度。所以马赫数衡量的是"流动在多大程度上敲打介质的弹性"。经验法则是 Ma<0.3\mathrm{Ma} < 0.3 时密度变化小于5%,可以采用不可压缩近似。超过这个值,流动本身就开始压缩它所穿过的介质。

越过音速 — 从多普勒到马赫锥#

静止声源发出的波面是同心圆。声源运动时前方波长缩短,后方拉长,这就是多普勒效应。当声源达到音速,所有波面叠加到一个平面上。一旦超过音速,声源就会超越自己发出的波面,包络线变成圆锥。这个马赫锥之外不会传到任何声音。

锥的半角 μ\mu 完全由几何决定。

sinμ=1Ma\sin\mu = \frac{1}{\mathrm{Ma}}

马赫2飞行器拖出的锥半角约 30°30°,马赫5则收紧到 11.5°11.5°。在下面的模拟里直接操作一下吧。把马赫数从0.6拉到2.5时,会看到某个瞬间所有波面被一齐扫到声源后方。

0.5 / 1.0 / 2.0 are key regimes

观察重点是:在马赫1的瞬间波面排成斜线,且马赫数越大锥越窄。

悖论的一行 — (1−1/Ma²)dρ/ρ + dA/A = 0#

进入正题。考虑截面积 A(x)A(x) 变化的一维定常流动。质量守恒的微分形式为

dρρ+dAA+duu=0\frac{d\rho}{\rho} + \frac{dA}{A} + \frac{du}{u} = 0

在等熵假设下,欧拉方程结合音速定义 a2=dp/dρa^2 = dp/d\rho 给出

udu=dpρ=a2dρρ.u\, du = -\frac{dp}{\rho} = -a^2 \frac{d\rho}{\rho}.

消去 dudu 后剩下的就是吞下所有矛盾的一行。

(11Ma2)dρρ+dAA=0\left(1 - \frac{1}{\mathrm{Ma}^2}\right) \frac{d\rho}{\rho} + \frac{dA}{A} = 0

这里 ρ\rho 是密度,AA 是截面积,Ma\mathrm{Ma} 是马赫数。符号分析就能解开一切。

亚音速 (Ma<1\mathrm{Ma} < 1,括号为负):截面积缩小 (dA<0dA<0) 时密度也下降 (dρ<0d\rho<0),速度因此上升。这就是花园水管被捏住时的情景。

超音速 (Ma>1\mathrm{Ma} > 1,括号为正):所有符号反转。截面积缩小反而让密度上升、速度下降。试图把气体更快地挤过更窄的通道,结果只会堵塞流动。要加速就必须让截面积增大。

拉瓦尔喷管 — 收缩并不总是加速#

这种符号反转决定了拉瓦尔喷管的形状。要把亚音速气流加速到超音速,必须先收缩到音速,再扩张。中间最细的部分(喉道)刚好处于 Ma=1\mathrm{Ma} = 1。因为 11/Ma2=01 - 1/\mathrm{Ma}^2 = 0 时式子要成立,必须有 dA=0dA = 0

固定喉道面积 AA^* 后,其他截面只由马赫数决定。

AA=1Ma[2γ+1(1+γ12Ma2)]γ+12(γ1)\frac{A}{A^*} = \frac{1}{\mathrm{Ma}} \left[ \frac{2}{\gamma+1} \left( 1 + \frac{\gamma-1}{2}\mathrm{Ma}^2 \right) \right]^{\frac{\gamma+1}{2(\gamma-1)}}

同一个面积比对应一个亚音速解和一个超音速解。流动选哪个分支由出口背压 PbP_b 决定。下面用滑块同时调节面积比和背压比试试。

throat (Ma=1)inletexitMa_exit (design sup): 2.44regime: over-expanded (shock inside)

Cyan curve: Ma along axis (normalized). Dashed red line: throat. Lower P_b makes the diverging part accelerate to supersonic. Raise P_b above the design and a normal shock appears inside.

把背压拉得足够低,扩张段的马赫分布就能跨过1单调上升。把背压抬到设计值之上,喷管内部某处就会出现垂直激波,让流动重新跌回亚音速。

用Python追等熵面积—马赫关系#

把面积比公式和等熵压力比写成NumPy三十行。用二分法从面积比反求马赫数。

import numpy as np
 
GAMMA = 1.4
 
def area_mach_relation(M, gamma=GAMMA):
    """A/A* — 等熵面积-马赫公式。"""
    exp = (gamma + 1) / (2 * (gamma - 1))
    inner = (2 / (gamma + 1)) * (1 + 0.5 * (gamma - 1) * M ** 2)
    return (1 / M) * inner ** exp
 
def solve_supersonic_branch(area_ratio, gamma=GAMMA, lo=1.0001, hi=25.0):
    """面积比 -> 超音速马赫数(二分法)。"""
    for _ in range(80):
        mid = 0.5 * (lo + hi)
        if area_mach_relation(mid, gamma) < area_ratio:
            lo = mid
        else:
            hi = mid
    return 0.5 * (lo + hi)
 
def pressure_ratio_isentropic(M, gamma=GAMMA):
    """p/p0 — 静压与滞止压力之比。"""
    return (1 + 0.5 * (gamma - 1) * M ** 2) ** (-gamma / (gamma - 1))
 
def normal_shock_p2_p1(M1, gamma=GAMMA):
    """垂直激波后静压比 p2/p1。"""
    return 1 + (2 * gamma / (gamma + 1)) * (M1 ** 2 - 1)
 
A_ratio = 2.5
M_exit = solve_supersonic_branch(A_ratio)
p_exit = pressure_ratio_isentropic(M_exit)
 
print(f"design exit  Ma = {M_exit:.3f}")
print(f"design exit  p/p0 = {p_exit:.4f}")
print(f"if Ma1=1.5 normal shock, p2/p1 = {normal_shock_p2_p1(1.5):.3f}")

输出如下:

design exit  Ma = 2.443
design exit  p/p0 = 0.0633
if Ma1=1.5 normal shock, p2/p1 = 2.458

面积比2.5的喷管按设计运行时,出口马赫数2.44,静压降至滞止压力的6.3%。如果在喷管内嵌一个马赫1.5的垂直激波,压力会跳升2.46倍,流动瞬间切换为亚音速。

激波 — 压缩的极限#

压缩波追上自己时就成了激波。波后缘因压缩而温度升高,音速增大,后方追上前方。最终所有压力跳跃集中在分子平均自由程数倍厚的薄层里(在空气中是微米量级)。

垂直激波的压力比 p2/p1=1+2γγ+1(Ma121)p_2/p_1 = 1 + \frac{2\gamma}{\gamma+1}(\mathrm{Ma}_1^2 - 1) 在马赫1时为零,之后随马赫数二次增长。当超音速拉瓦尔喷管的背压高于设计值,流动会在内部立起激波来弥合压力差,使自身减速。这就是"过度膨胀"状态。

有趣的是,空化气泡崩溃时释放的微激波、鞭梢突破音速时的"啪"声、陨石进入大气层时的加热机制 — 都是同一个公式的不同面孔。

值得记住的#

  • 一行式 (11Ma2)dρρ+dAA=0\left(1 - \tfrac{1}{\mathrm{Ma}^2}\right) \tfrac{d\rho}{\rho} + \tfrac{dA}{A} = 0 解释了喷管和扩压器的所有角色反转。
  • 拉瓦尔喷管的细喉道是唯一允许 Ma=1\mathrm{Ma} = 1 的截面,出口马赫数和压力比由面积比加背压共同决定。
  • 激波出现在等熵假设破缺的位置。喷管内出现激波就是"背压高于设计值"的信号。

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