Skip to content
cfd-lab:~/zh/posts/2026-06-18-de-laval-nozz…● online

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

NOTE #076DAY THU 유체역학DATE 2026.06.18UPDATED 2026.10.19READ 4 min read#Flow-Phenomena#Compressible-Flow#De-Laval-Nozzle#Choked-Flow#Gas-Dynamics

想超声速就把管子加宽 — 缩放喷管与壅塞

把背压降到 0.0298 以下并不会提高质量流量。变的是正激波还留不留在扩张段里。

捏住花园水管的出口,水会喷得更冲。收窄,就更快。火箭喷管在喉部之后反过来,像小号一样张开。气体过了声速,管子不加宽就无法再加速。

把面积比滑块推到 1 以上,同一个面积上的两个马赫数根会向两侧分开。

M=1M=0.20M=2.64Mach numberA / A*
subsonic: M=0.197, p/p0=0.973  |  supersonic: M=2.637, p/p0=0.047

亚声速根往 0 掉,超声速根往上走。面积比靠近 4 时,如果超声速根落在 2.94 附近,后面的输出就是这条曲线上的一个点。

收窄会加速,越过声速则相反

可压缩流动里密度会变,面积和速度的关系跟着马赫数翻转。一维等熵流的面积速度关系把这个翻转写成一行。

dAA=(M2−1) dVV\frac{dA}{A} = (M^2 - 1)\,\frac{dV}{V}

这里 AA 是横截面积,VV 是速度,MM 是马赫数(速度除以声速)。符号决定面积该往哪边动。

M=0.5M=0.5 时 M2−1=−0.75M^2-1=-0.75。速度提高 1%,面积就要减小 0.75%。M=2M=2 时 M2−1=3M^2-1=3。同样再快 1%,面积得增大 3%。3 除以 0.75 等于 4。系数大了四倍,符号也反了。捏水管的手只熟悉亚声速那个 0.75。

亚声速(M<1M<1)时 M2−1<0M^2-1<0。要提高速度(dV>0dV>0),就得缩小面积(dA<0dA<0)。捏水管的感觉在这一边。

超声速(M>1M>1)时 M2−1>0M^2-1>0。想再快,就得把面积加大。符号翻过来了。

把同一个符号翻转和激波跳跃放在一起读,就接到超声速下必须加宽才能加速的原因。

所以要把气体送到声速之外,先收窄到 M=1M=1,从那一点再加宽。先收后扩的形状就是缩放喷管(de Laval 喷管)。最窄的地方是喉部。

一个面积,两个马赫数

面积马赫关系把等熵流里的横截面积和马赫数绑在一起。

AA∗=1M[2γ+1(1+γ−12M2)]γ+12(γ−1)\frac{A}{A^*} = \frac{1}{M}\left[\frac{2}{\gamma+1}\left(1 + \frac{\gamma-1}{2}M^2\right)\right]^{\frac{\gamma+1}{2(\gamma-1)}}

A∗A^* 是 M=1M=1 处的临界截面积(喉部面积),γ\gamma 是比热比(定压比热除以定容比热,空气约为 1.4)。

右端是一条 U 形曲线,在 M=1M=1 处最小值为 1。每个大于 1 的面积比都带着两个马赫数根,一个亚声速,一个超声速。

上面的面积比滑块已经把这两个根拉开。面积比越大,亚声速根越贴向 0,超声速根越大。形状相同,走哪一支仍由出口背压来选。

壅塞 — 喉部再也容纳不下的瞬间

背压一降,质量流量就升。升不到没有头。喉部速度碰到声速(M=1M=1)就停。

压力扰动以声速往上游走。喉部一旦是声速,下游的压力信号就过不了喉部。喉部上游听不到背压又降了。流量锁在最大值上。这个状态叫壅塞。

壅塞后的最大流量只由喉部面积 A∗A^* 和滞止状态写出来。

m˙=A∗ p0γRT0(2γ+1)γ+12(γ−1)\dot{m} = A^* \, p_0 \sqrt{\frac{\gamma}{R T_0}} \left(\frac{2}{\gamma+1}\right)^{\frac{\gamma+1}{2(\gamma-1)}}

p0p_0 是滞止压力,T0T_0 是滞止温度,RR 是气体常数。

质量流量里只剩 γ\gamma 的因子是 (2/(γ+1))(γ+1)/(2(γ−1))(2/(\gamma+1))^{(\gamma+1)/(2(\gamma-1))}。γ=1.4\gamma=1.4 时就是 (2/2.4)3=(5/6)3≈0.5787(2/2.4)^3=(5/6)^3\approx 0.5787。(5/6)3=125/216=0.5787037(5/6)^3=125/216=0.5787037,所以 0.5787 是在第四位上四舍五入。背压 pbp_b 不在这个式子里。喉部达到声速之后,流量由 A∗A^*、p0p_0、T0T_0、RR 和这个 0.5787 锁住。背压再降,流量数字也不动。剩下的选择是扩张段把激波吞进去,还是把它推出出口。

火箭推力按喉部尺寸来定,根据就是这个式子。背压站在因子外面。

背压下降时依次发生的七个阶段

壅塞之后才是喷管里面的事。把背压 pbp_b 从滞止压力 p0p_0 往下降,内部流动就换档。背压比从 1.0 到 0.05 就是这些档。滑块留到输出里的设计压力比出现之后再用。

(a) 亚声速文丘里。 背压足够高时,全段都是亚声速。在喉部最快,然后在扩张段重新变慢。压力在喉部最低,在出口几乎恢复。

(b) 第一临界点。 再降背压,喉部恰好达到 M=1M=1。壅塞从这里开始。

(c)~(d) 喷管内部的激波。 继续降,流动在扩张段加速到超声速,然后遇到正激波(把流动骤然拉回亚声速的间断面)。激波之后是亚声速,于是减速并匹配背压。背压越低,激波越被推向出口一侧。

(e) 过膨胀。 激波移出出口后,喷管内部完全是超声速。但出口压力低于背压,于是喷管外的斜激波来弥合差异。这称为过膨胀(overexpanded)。

(f) 设计点。 出口压力恰好等于背压的那一个点。喷管内外都没有激波。这是效率最高的工作状态。

(g) 欠膨胀。 背压低于设计值时,出口气体在喷管外通过膨胀波继续膨胀。这称为欠膨胀(underexpanded)。

随着火箭升高、环境压力(背压)下降,它会依次经过 (e) → (f) → (g)。这就是为什么在海平面过膨胀的喷管,到了高空会越过设计点、变成欠膨胀。

用代码求解喷管

用二分法找面积马赫关系的超声速根,并由出口面积比 4.0 算出设计压力。

import numpy as np
 
def area_ratio(mach, gamma=1.4):
    """等熵面积比 A/A*(Mach 的函数)"""
    t = 1.0 + 0.5 * (gamma - 1.0) * mach**2
    expo = (gamma + 1.0) / (2.0 * (gamma - 1.0))
    return (1.0 / mach) * (2.0 / (gamma + 1.0) * t) ** expo
 
def invert_area_ratio(target, gamma=1.4, branch="sub"):
    """给定 A/A* 求 Mach 解(亚声速/超声速支)"""
    lo, hi = (1e-4, 1.0) if branch == "sub" else (1.0, 8.0)
    for _ in range(80):
        mid = 0.5 * (lo + hi)
        f = area_ratio(mid, gamma)
        # 亚声速支递减,超声速支递增
        ascending = (branch == "sup")
        if (f < target) == ascending:
            lo = mid
        else:
            hi = mid
    return 0.5 * (lo + hi)
 
def pressure_ratio(mach, gamma=1.4):
    """静压/滞止压力比 p/p0"""
    return (1.0 + 0.5 * (gamma - 1.0) * mach**2) ** (-gamma / (gamma - 1.0))
 
# 出口面积比为 4.0 的喷管的设计条件
ae_over_astar = 4.0
m_exit = invert_area_ratio(ae_over_astar, branch="sup")
p_design = pressure_ratio(m_exit)
 
print(f"设计出口 Mach     = {m_exit:.3f}")
print(f"设计压力比 pe/p0  = {p_design:.4f}")
print(f"反算面积比校验    = {area_ratio(m_exit):.3f}")

运行结果:

设计出口 Mach     = 2.940
设计压力比 pe/p0  = 0.0298
反算面积比校验    = 4.000

把背压比滑块从 1.0 降到 0.05,喷管里的颜色(马赫数)和下方压力曲线会从 (a) 走到 (g)。停在 0.0298 附近时,出口压力和背压相遇;高于它,一道正激波留在扩张段里;再往下,膨胀就延续到出口外面。

把 γ=1.4\gamma=1.4 代进 M=1M=1,方括号里是 1,A/A∗A/A^* 也是 1。喉部就是这一点。输出里的设计点读的是超声速那一支。把 M=2.940M=2.940 代回同一个面积公式,面积比回到 3.9993,压力比回到 0.029795,贴着印出来的 4.000 和 0.0298。面积比 4 的另一个根是亚声速。把同一条公式往另一支读,MM 大约是 0.1465,p/p0p/p_0 大约是 0.985。列表把 branch 固定成 sup,所以那个根不会被印出来。

印出来的设计点是马赫数 2.940、压力比 0.0298。出口压力大约是滞止压力的 3%。反算面积比回到 4.000,两个函数就互为反函数。

背压停在 0.0298 以上时,扩张段会吞下一道激波#

设计压力比 0.0298 是出口静压等于背压的那一个点。滑块停在它上面,扩张段里的超声速行程就断在一道正激波上。出口又变回亚声速,加宽的面积用来减速,不再用来加速。

再往下放,激波就离开出口,变成斜激波。喷管外漏出的一张,和关在管道里反复出现的一串,是同一个压力比的结果吗?超声速进气道里的斜激波串接着问这件事。

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