Skip to content
cfd-lab:~/zh/posts/2026-05-12-laval-nozzle-…● online

本文译自作者的韩语原文。 阅读原文(한국어)

NOTE #039DAY TUE 유체역학DATE 2026.05.12UPDATED 2026.10.19READ 4 min read#Fluid-Dynamics#Compressible-Flow#Mach#Laval-Nozzle#Shock-Wave#Flow-Phenomena

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

背压超过设计静压比0.063,扩张段就离开超音速分支。马赫1.5的正激波把压力乘上2.46。

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

0.5 / 1.0 / 2.0 are key regimes

1 以下,波还跑在声源前面。滑块一过 1,包络就变成斜线,靠近 2 时半角往 30 度收。用 Pause 停住那条斜线,圆锥外面是安静的。

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

马赫数(流速 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°。滑块刚过 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 给出

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

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

(1−1Ma2)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,括号为正):所有符号反转。截面积缩小反而让密度上升、速度下降。试图把气体更快地挤过更窄的通道,结果只会堵塞流动。要加速就必须让截面积增大。

马赫 0.3 时,1/Ma² 是 1/0.09,约 11.1,括号 (1−1/Ma²) 约为 −10.1。密度变化等于面积变化除以这个数。面积变 10%,密度只动大约 1%。离音速还远的时候,面积和密度几乎各走各的。

马赫 2 时,1/Ma² 是 0.25,括号是 +0.75。符号反过来之后,密度变化大约是面积变化的 1.33 倍。面积加大 10%,密度大约降 13%,速度上升。马赫 1 时括号是 0,面积变化也必须是 0,式子才站得住。喉道缩成一个站位,就是这个数。

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

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

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

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 决定。把背压拉得足够低,扩张段的马赫分布就能跨过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 附近。

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.

面积比2.5的喷管按设计运行时,出口马赫数2.44,静压降至滞止压力的6.3%。背压比抬过 0.063,扩张段曲线在喉道后折断,马赫掉到 1 以下。如果在喷管内嵌一个马赫1.5的垂直激波,压力会跳升2.46倍,流动瞬间切换为亚音速。

把出口马赫 2.443 代回锥角关系,sin μ = 1/2.443 约为 0.409,半角约 24 度,比马赫 2 的 30 度更窄。输出里的 2.458 不是另一套计算。γ=1.4 时 2γ/(γ+1) 是 2.8/2.4,马赫 1.5 的 Ma²−1 是 1.25。1 加上 (2.8/2.4)×1.25 就是 2.458。

激波 — 压缩的极限

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

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

空化气泡崩溃时的微激波、鞭梢突破音速时的"啪"声、陨石进入大气时的加热,是同一个公式的不同面孔。同一个跳跃立在自由表面上,就是水槽里的水跃。变的只是速度尺度,从声速换成弗劳德数。

背压过了 0.063,出口马赫就没了#

背压高于设计静压比 0.0633 时,扩张段留不住超音速分支。马赫 2.443 和静压占滞止压的 6.33% 是一套。只抬背压,面积比仍是 2.5,出口马赫也会掉到 1 以下。里面立着的马赫 1.5 激波把压力乘上 2.458,补上这个缺口。

喉道把质量流量锁死的条件不在这篇笔记里。收缩-扩张喷管把流量锁住的位置写的是喉道马赫 1 之后的流量。面积比和背压都对上了,流量仍和设计不符,就到那里看喉道是不是真的达到了声速。

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