烟囱里的烟为何卷着上升而不是平躺 — 横流中的射流与反向旋转涡对
横穿来风的射流为何卷成肾形涡对。
设想一个寒冷清晨,火电厂烟囱里冒出的烟。起初它笔直上升。随后在某个高度向旁边折转。把那道烟柱横切开,看到的既不是甜甜圈也不是圆,而是一对形如两颗肾脏的旋涡。本文追问横穿来风的射流(jet in crossflow,JICF)为何如此行事。握住其轨迹的把手并非雷诺数,而是速度比 ;四种不同的涡在同一个喷口同时诞生;主角——反向旋转涡对(CVP)——如何雕出那个肾形截面;以及它的尾流为何以比硬质圆柱更慢的节拍脱落旋涡。文末用一小段 NumPy,把轨迹和涡对的诱导场直接打印出来。
烟囱里的烟为何卷着上升而不是平躺#
喷入横风的射流在我们身边随处可见。烟囱的烟、燃气轮机燃烧室的燃料喷射、保护涡轮叶片的气膜冷却(film cooling)、注入大海的河口、火山灰柱、垂直起降飞机的升力射流——都是同一个问题。
核心是两股动量的较量。在喷口附近,射流的动量占上风,所以烟柱近乎垂直上升。随着上升,横风不断推挤。过了某一点,横风胜出。烟柱折转,最终顺着风向平躺。
但它不只是平躺。它的截面会变形。圆形的射流卷成肾形。在那道卷曲之中,藏着一对方向相反的旋涡。
一个喷口里住着四种涡#
JICF 的涡不止一种。Fric 与 Roshko(1994)把它们归纳为四个不同的涡系。
- 剪切层涡(jet shear-layer vortices):在喷口正上方,射流边界的圆筒状剪切层卷起形成的环。最先出现。
- 反向旋转涡对(counter-rotating vortex pair,CVP):在远处主宰截面的主角——肾形/蘑菇形的本质。
- 马蹄涡(horseshoe vortex):在插入壁面的射流柱前方,边界层像绕过壁上障碍物一样卷起而成的马蹄。
- 尾流涡(wake vortices):从射流后方延伸到壁面的竖直涡。容易与硬质圆柱后方的涡街混淆,但 Fric 与 Roshko 证明它来自壁面边界层的分离,而非射流。
这四者同时存在,正是 JICF 与单纯圆柱尾流决定性的不同。
真正的把手不是雷诺数 — 速度比 r 与动量通量比 J#
决定射流扎入多深的,并不是黏性比即雷诺数。支配变量是速度比(velocity ratio)。
其中 是喷口出口速度, 是横风速度。当两种流体密度不同时,更合适的尺度是动量通量比(momentum flux ratio)。
其中 分别是射流与横风的密度。密度相等时 。雷诺数只决定细节——剪切层何时转捩为湍流、旋涡的褶皱碎得多细——而轨迹与扎入深度这个大局,由 (或 )握着。
轨迹以 rd 为尺#
无数实验汇聚到同一个结论。射流中心线的平均轨迹遵循幂律。
其中 是顺风方向距离, 是高度, 是喷口直径。系数在各实验中聚于 ,指数聚于 (Pratte–Baines 1967,Margason 1993)。决定性的是那把尺。若以 而非单独的 来量长度,不同速度比的轨迹便重叠到一条曲线上。速度比越大,在相同的 处升得越高。
在下面的模拟里亲手调一调吧。
The natural length scale is r·d, not d alone. Raise r and the plume punches higher before the crossflow bends it; the three pink ghosts are the trajectories for r = 2, 6, 10.
把 r 从 2 提到 10,射流在折转之前会扎得高得多。三条粉色幽灵曲线是 的轨迹。改变 B,可比较弯折的弧度如何变化。
反向旋转涡对 — 蘑菇截面是怎样形成的#
CVP 诞生于射流的圆筒状剪切层在横风中倾斜、折叠。射流两侧的剪切层重新组织,在截面上变成两个方向相反的旋涡。二者之间流体上升,在外侧折回下沉。结果便是肾形/蘑菇形截面。
其强度正比于射流的环量 ——射流越快,涡对越强。正如源文献所述,CVP 在喷口出口极近处生成,并随着向下游推进、涡量扩散而减弱。
在下面的模拟里亲手调一调吧。
Left vortex spins counter-clockwise (+Γ), right clockwise (−Γ): between them the dye is pumped upward and folds outward into the kidney-shaped mushroom. Push the downstream slider toward 1 and diffusion saps Γ — the mushroom stalls, just as the real CVP weakens far from the exit.
左涡逆时针(),右涡顺时针()。中央的染料上升,向外折叠,蘑菇随之长出。把 downstream 滑块推向 1,扩散就啃食 ,蘑菇停滞——与真实 CVP 在远离喷口处减弱完全一致。
比圆柱更懒的节拍 — JICF 的斯特劳哈尔数#
尾流涡脱落的频率 被收进无量纲的斯特劳哈尔数。
其中 是涡脱落频率, 是喷口直径。在硬质圆柱后方, 在很宽的雷诺范围内几乎恒定。然而 Hester 等人(1971)在亚音速风洞中测得的 JICF 尾流,其斯特劳哈尔数还不到同等尺寸圆柱的一半。
为何如此懒?圆柱从硬壁上干净地分离,以单一节拍脱落旋涡。JICF 的"障碍物"不是硬壁,而是横风可以渗入的、摇晃的流体柱。况且尾流涡的根扎在壁面边界层里,而非射流本身。有效障碍物既软,脱落的节拍便慢了下来。
Python — 轨迹与 CVP 诱导场#
import numpy as np
def jet_trajectory(x, r, d=1.0, A=1.6, B=0.33):
"""横流射流平均轨迹: z/(rd) = A (x/(rd))^B, x>=0。"""
rd = r * d
x = np.asarray(x, dtype=float)
return np.where(x > 0, A * rd * (x / rd) ** B, 0.0)
def cvp_velocity(y, z, gamma, b, zc=2.0, core=0.15):
"""反向旋转涡对在 (y, z) 处诱导的速度 (u_y, u_z)。
左 +Γ(逆时针), 右 -Γ(顺时针) -> 中央上升。"""
def one(y0, z0, g):
dy, dz = y - y0, z - z0
r2 = dy**2 + dz**2 + core**2
return -g / (2 * np.pi) * dz / r2, g / (2 * np.pi) * dy / r2
uy1, uz1 = one(-b / 2, zc, +gamma)
uy2, uz2 = one(+b / 2, zc, -gamma)
return uy1 + uy2, uz1 + uz2
if __name__ == "__main__":
# 1) 同一喷口下,速度比 r 越大扎得越高
for r in (2, 4, 8):
print(f"r={r:>2}: z(x=10d) = {jet_trajectory(10.0, r):.2f} d")
# 2) 两涡之间的中心线向上,外缘向下 (mushroom)
_, uz_c = cvp_velocity(0.0, 2.0, gamma=3.0, b=1.5)
_, uz_e = cvp_velocity(1.5, 2.0, gamma=3.0, b=1.5)
print(f"center (y=0): u_z = {uz_c:+.3f} (>0 -> 上升)")
print(f"edge (y=b): u_z = {uz_e:+.3f} (<0 -> 下沉)")运行后打印:
r= 2: z(x=10d) = 5.44 d
r= 4: z(x=10d) = 8.66 d
r= 8: z(x=10d) = 13.78 d
center (y=0): u_z = +1.224 (>0 -> 上升)
edge (y=b): u_z = -0.401 (<0 -> 下沉)速度比翻一倍、翻两番,在相同的下游距离便扎得更高。涡对正中向上、边缘向下——蘑菇生长的算术,直接显现在数字里。
下次看见烟囱的烟#
- 握住 JICF 轨迹的把手不是雷诺数,而是速度比 (或动量通量比 )。以 量长度,不同射流的轨迹便重叠到一条曲线。
- 四种涡(剪切层环、CVP、马蹄、尾流)在同一喷口同时诞生,而在远处主宰截面的主角,是把中央托举上去的反向旋转涡对。
- JICF 尾流以不到圆柱一半的斯特劳哈尔数脱落旋涡,是因为它的有效障碍物不是硬壁,而是横风可渗入的软流体柱。
如果对您有帮助,请分享。