本文译自作者的韩语原文。 阅读原文(한국어)
想超声速就把管子加宽 — 缩放喷管与壅塞
把背压降到 0.0298 以下并不会提高质量流量。变的是正激波还留不留在扩张段里。
捏住花园水管的出口,水会喷得更冲。收窄,就更快。火箭喷管在喉部之后反过来,像小号一样张开。气体过了声速,管子不加宽就无法再加速。
把面积比滑块推到 1 以上,同一个面积上的两个马赫数根会向两侧分开。
亚声速根往 0 掉,超声速根往上走。面积比靠近 4 时,如果超声速根落在 2.94 附近,后面的输出就是这条曲线上的一个点。
收窄会加速,越过声速则相反
可压缩流动里密度会变,面积和速度的关系跟着马赫数翻转。一维等熵流的面积速度关系把这个翻转写成一行。
这里 是横截面积, 是速度, 是马赫数(速度除以声速)。符号决定面积该往哪边动。
时 。速度提高 1%,面积就要减小 0.75%。 时 。同样再快 1%,面积得增大 3%。3 除以 0.75 等于 4。系数大了四倍,符号也反了。捏水管的手只熟悉亚声速那个 0.75。
亚声速()时 。要提高速度(),就得缩小面积()。捏水管的感觉在这一边。
超声速()时 。想再快,就得把面积加大。符号翻过来了。
把同一个符号翻转和激波跳跃放在一起读,就接到超声速下必须加宽才能加速的原因。
所以要把气体送到声速之外,先收窄到 ,从那一点再加宽。先收后扩的形状就是缩放喷管(de Laval 喷管)。最窄的地方是喉部。
一个面积,两个马赫数
面积马赫关系把等熵流里的横截面积和马赫数绑在一起。
是 处的临界截面积(喉部面积), 是比热比(定压比热除以定容比热,空气约为 1.4)。
右端是一条 U 形曲线,在 处最小值为 1。每个大于 1 的面积比都带着两个马赫数根,一个亚声速,一个超声速。
上面的面积比滑块已经把这两个根拉开。面积比越大,亚声速根越贴向 0,超声速根越大。形状相同,走哪一支仍由出口背压来选。
壅塞 — 喉部再也容纳不下的瞬间
背压一降,质量流量就升。升不到没有头。喉部速度碰到声速()就停。
压力扰动以声速往上游走。喉部一旦是声速,下游的压力信号就过不了喉部。喉部上游听不到背压又降了。流量锁在最大值上。这个状态叫壅塞。
壅塞后的最大流量只由喉部面积 和滞止状态写出来。
是滞止压力, 是滞止温度, 是气体常数。
质量流量里只剩 的因子是 。 时就是 。,所以 0.5787 是在第四位上四舍五入。背压 不在这个式子里。喉部达到声速之后,流量由 、、、 和这个 0.5787 锁住。背压再降,流量数字也不动。剩下的选择是扩张段把激波吞进去,还是把它推出出口。
火箭推力按喉部尺寸来定,根据就是这个式子。背压站在因子外面。
背压下降时依次发生的七个阶段
壅塞之后才是喷管里面的事。把背压 从滞止压力 往下降,内部流动就换档。背压比从 1.0 到 0.05 就是这些档。滑块留到输出里的设计压力比出现之后再用。
(a) 亚声速文丘里。 背压足够高时,全段都是亚声速。在喉部最快,然后在扩张段重新变慢。压力在喉部最低,在出口几乎恢复。
(b) 第一临界点。 再降背压,喉部恰好达到 。壅塞从这里开始。
(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, 也是 1。喉部就是这一点。输出里的设计点读的是超声速那一支。把 代回同一个面积公式,面积比回到 3.9993,压力比回到 0.029795,贴着印出来的 4.000 和 0.0298。面积比 4 的另一个根是亚声速。把同一条公式往另一支读, 大约是 0.1465, 大约是 0.985。列表把 branch 固定成 sup,所以那个根不会被印出来。
印出来的设计点是马赫数 2.940、压力比 0.0298。出口压力大约是滞止压力的 3%。反算面积比回到 4.000,两个函数就互为反函数。
背压停在 0.0298 以上时,扩张段会吞下一道激波#
设计压力比 0.0298 是出口静压等于背压的那一个点。滑块停在它上面,扩张段里的超声速行程就断在一道正激波上。出口又变回亚声速,加宽的面积用来减速,不再用来加速。
再往下放,激波就离开出口,变成斜激波。喷管外漏出的一张,和关在管道里反复出现的一串,是同一个压力比的结果吗?超声速进气道里的斜激波串接着问这件事。
相关文章
如果对您有帮助,请分享。