Skip to content
cfd-lab:~/ja/posts/2026-05-26-jet-in-crossf…online
NOTE #055DAY TUE 유체역학DATE 2026.05.26READ 5 min readWORDS 2,704#Jet-in-Crossflow#Vortex#Wake#Strouhal#유동현상

煙突の煙はなぜ横に寝ずに巻き上がるのか — 横断流中のジェットと逆回転渦対

横風を横切るジェットが腎臓型の渦対をつくる理由。

寒い朝、火力発電所の煙突から立ちのぼる煙を思い浮かべてください。はじめはまっすぐ上に伸びます。やがてある高さで横に折れます。その柱を横に切ると、ドーナツでも円でもなく、腎臓を二つ並べたような渦が埋まっています。この記事では、横風を横切るジェット(jet in crossflow, JICF)がなぜこう振る舞うのかを追います。軌道を握る取っ手がレイノルズ数ではなく速度比 rr であること、四種類の渦が一つのノズルから同時に生まれること、その主役である逆回転渦対(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)です。

r=vjur = \frac{v_j}{u_\infty}

ここで vjv_j はノズル出口速度、uu_\infty は横風の速度です。密度が異なる二流体なら、より適切な尺度は運動量フラックス比(momentum flux ratio)です。

J=ρjvj2ρu2J = \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 はノズル直径です。係数は実験ごとに A1.62.1A \approx 1.6\text{–}2.1、指数は B0.280.34B \approx 0.28\text{–}0.34 の範囲に集まります(Pratte–Baines 1967, Margason 1993)。決定的なのは物差しです。長さを dd ひとつではなく**rdrd**で測ると、異なる速度比の軌道が一本の曲線に重なります。速度比が大きいほど、同じ x/dx/d でより高く上がります。

下のシミュレーションで実際に操作してみましょう。

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 へ上げると、折れる前にはるかに高く突き上がります。ピンクの三本のゴースト曲線は r=2,6,10r = 2, 6, 10 の軌道です。B を変えると、曲がり方の反り具合が比べられます。

逆回転渦対 — キノコ断面はどうできるか#

CVP は、ジェットの円筒状せん断層が横風の中で傾き、折れ畳まれて生まれます。ジェットの両側のせん断層が再配置され、断面で互いに逆向きに回る二つの渦になります。その間で流体は上に昇り、外側で折れて下りてきます。結果が腎臓・キノコ型の断面です。

強さはジェットの循環 Γjvjd\Gamma_j \propto v_j d に比例します。つまり、ジェットが速いほど渦対は強くなります。そしてソース文献が述べるように、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.

左の渦は反時計回り(+Γ+\Gamma)、右は時計回り(Γ-\Gamma)に回ります。中央の染料が上に昇り、外へ折れてキノコが育ちます。downstream スライダーを 1 側へ押すと、拡散が Γ\Gamma を削り、キノコが止まります — 実際の CVP が下流ほど弱まるのと同じです。

円柱より怠けた拍子 — JICF のストローハル数#

後流渦が落ちる周波数 ff は、無次元のストローハル数にまとめられます。

St=fduSt = \frac{f\, d}{u_\infty}

ここで ff は渦放出周波数、dd はノズル直径です。硬い円柱の後方では、広いレイノルズ範囲で St0.21St \approx 0.21 がほぼ一定に保たれます。ところが 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 の軌道を握る取っ手はレイノルズではなく速度比 r=vj/ur = v_j/u_\infty(または運動量フラックス比 JJ)です。長さを rdrd で測れば、異なるジェットの軌道が一本の曲線に重なります。
  • 一つのノズルから四つの渦(せん断層の輪・CVP・馬蹄・後流)が同時に生まれ、遠方で断面を支配する主役は、中央をすくい上げる逆回転渦対です。
  • JICF の後流が円柱の半分にも満たないストローハル数で渦を落とすのは、実効的な障害物が硬い壁ではなく、横風が染み込む軟らかい流体の柱だからです。

役に立ったらシェアしてください。