Skip to content
cfd-lab:~/zh/posts/2026-05-26-jet-in-crossf…● online

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

NOTE #053DAY TUE 유체역학DATE 2026.05.26UPDATED 2026.10.19READ 5 min read#Jet-in-Crossflow#Vortex#Wake#Strouhal#Flow-Phenomena

烟囱里的烟为何卷着上升而不是平躺 — 横流中的射流与反向旋转涡对

轨迹的尺子是rd,把截面托成肾形的是喷口附近生成的反向旋转涡对。

寒冷清晨的火电厂烟囱,起初看起来相当老实。烟笔直上升。到了某个高度向旁边折转,横切烟柱,既不是甜甜圈也不是圆,而是一对肾脏。这就是横穿来风的射流(jet in crossflow, JICF)。握住轨迹的把手不是雷诺数,而是速度比 rr。

把 r 从 2 提到 10,射流在折转之前会扎得高得多。

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,6,10r = 2, 6, 10 的轨迹。改变 B 时速度比不动,变的只是弯折的弧度。看白线贴在哪一条幽灵上。

烟囱里的烟为何卷着上升而不是平躺

喷入横风的射流在我们身边随处可见。烟囱的烟、燃气轮机燃烧室的燃料喷射、保护涡轮叶片的气膜冷却(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)。

r=vju∞r = \frac{v_j}{u_\infty}

其中 vjv_j 是喷口出口速度,u∞u_\infty 是横风速度。当两种流体密度不同时,更合适的尺度是动量通量比(momentum flux ratio)。

J=ρj vj2ρ∞ u∞2J = \frac{\rho_j\, v_j^2}{\rho_\infty\, u_\infty^2}

其中 ρj, ρ∞\rho_j,\ \rho_\infty 分别是射流与横风的密度。密度相等时 J=r2J = r^2。雷诺数只决定细节——剪切层何时转捩为湍流、旋涡的褶皱碎得多细——而轨迹与扎入深度这个大局,由 rr(或 JJ)握着。

轨迹以 rd 为尺#

无数实验汇聚到同一个结论。射流中心线的平均轨迹遵循幂律。

zrd=A(xrd)B\frac{z}{r d} = A \left( \frac{x}{r d} \right)^{B}

其中 xx 是顺风方向距离,zz 是高度,dd 是喷口直径。系数在各实验中聚于 A≈1.6–2.1A \approx 1.6\text{–}2.1,指数聚于 B≈0.28–0.34B \approx 0.28\text{–}0.34(Pratte–Baines 1967,Margason 1993)。决定性的是那把尺。若以 rdrd 而非单独的 dd 来量长度,不同速度比的轨迹便重叠到一条曲线上。速度比越大,在相同的 x/dx/d 处升得越高。

下面的代码用系数 A=1.6、指数 B=0.33、d=1。x=10 时尺子 rd 就是 r。r=2 时 x/(rd)=5,5 的 0.33 次方约为 1.701,1.6 乘 2 乘 1.701 等于 5.44,与输出第一行一致。r=4 时 x/(rd)=2.5,2.5 的 0.33 次方是 1.353,1.6 乘 4 乘 1.353 等于 8.66。r=8 时 x/(rd)=1.25,1.25 的 0.33 次方是 1.076,1.6 乘 8 乘 1.076 等于 13.77,四舍五入后就是印出的 13.78。

把 r 加倍,高度并不会加倍。5.44 到 8.66,再从 8.66 到 13.78,两个比值都在 1.59 附近。高度 z 正比于 r 的 (1−B) 次方。B=0.33 时指数是 0.67,2 的 0.67 次方是 1.59。在同一个 x 上把速度比加倍,扎入深度只增加 59%。r 从 2 到 8 是四倍,高度约变为 2.53 倍,5.44d 变成 13.78d。同一段里 J 从 4 到 64,是十六倍。动量比和轨迹高度不是同一把尺子。

反向旋转涡对 — 蘑菇截面是怎样形成的

CVP 诞生于射流的圆筒状剪切层在横风中倾斜、折叠。射流两侧的剪切层重新组织,在截面上变成两个方向相反的旋涡。二者之间流体上升,在外侧折回下沉。结果便是肾形/蘑菇形截面。

其强度正比于射流的环量 Γj∝vjd\Gamma_j \propto v_j d——射流越快,涡对越强。正如源文献所述,CVP 在喷口出口极近处生成,并随着向下游推进、涡量扩散而减弱。

数字印在紧接着的输出里。中心上升,边缘下沉。蘑菇就放在那段输出的正下方。

比圆柱更懒的节拍 — JICF 的斯特劳哈尔数#

尾流涡脱落的频率 ff 被收进无量纲的斯特劳哈尔数。

St=f du∞St = \frac{f\, d}{u_\infty}

其中 ff 是涡脱落频率,dd 是喷口直径。在硬质圆柱后方,St≈0.21St \approx 0.21 在很宽的雷诺范围内几乎恒定。然而 Hester 等人(1971)在亚音速风洞中测得的 JICF 尾流,其斯特劳哈尔数还不到同等尺寸圆柱的一半。

圆柱 St≈0.21St \approx 0.21 的一半是 0.105。Hester 等人测到的 JICF 落在这之下。这里不把他们的测量改写成一个新数字。把 0.21 照搬成射流的节拍,频率至少会快一倍。

为何如此懒?圆柱从硬壁上干净地分离,以单一节拍脱落旋涡。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 -> 下沉)

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.

速度比翻一倍、翻两番,在相同的下游距离便扎得更高。涡对正中向上、边缘向下——蘑菇生长的算术,直接显现在数字里。

左涡逆时针(+Γ+\Gamma),右涡顺时针(−Γ-\Gamma)。中央的染料上升,向外折叠,蘑菇随之长出。把 downstream 滑块推向 1,扩散就啃食 Γ\Gamma,蘑菇停滞。输出里中心上升变小的地方就在这里。这与真实 CVP 在远离喷口处减弱一致。

中心在 y=0、z=2,间距 b=1.5,所以两个涡核在 y=±0.75。core=0.15,距离平方上要多加 0.0225。到左核 dy=0.75、dz=0,分母是 0.5625+0.0225=0.585。Γ=3 时 Γ/(2π) 约为 0.477。一个涡核的垂直速度是 0.477 乘 0.75 除以 0.585,约 0.612。对面的核以同样大小、同样方向补上,得到 +1.224。边缘 y=1.5 处,较近的右核给出 −0.612,较远的左核补上 +0.211,合计 −0.401。上升大约是下沉的三倍,因为中心处两个核相加,边缘处近核压过远核。这个核速度与自由涡的诱导速度是同一副骨架。只有 0.15 的核芯加进分母,中心速度才不会爆掉。

把圆柱的0.21照搬成射流节拍时#

把 St 固定在 0.21,只代入喷口直径和横风来求频率,得到的节拍至少比 JICF 尾流快一倍。0.21 的一半 0.105 也只是上界。不把「障碍物不是硬壁」写进频率公式,节拍就会这样偏掉。

轨迹也一样。只用 d 去量 x、把 r 丢掉,r=2 的 5.44d 和 r=8 的 13.78d 不会落到同一条曲线上。把手是速度比 r=vj/u∞r = v_j/u_\infty(或动量通量比 JJ),叠合用的尺子是 rdrd。对准烟囱之前,先把这两件事定下来。

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