Skip to content
cfd-lab:~/ja/posts/2026-07-02-froude-hydrau…● online

この記事は著者が韓国語で書いた原文の翻訳です。 原文(한국어)を読む

NOTE #090DAY THU 유체역학DATE 2026.07.02UPDATED 2026.10.19READ 7 min read#Fluid-Dynamics#Froude-Number#Hydraulic-Jump#Open-Channel-Flow#Flow-Phenomena

台所のシンクに毎日生まれる衝撃波 — フルード数と跳水

跳水の高さは運動量でしか合わない。比エネルギーを保存して下流水深を出すと、出力の0.714 mからずれる。

蛇口をひねって、平らなシンクの底に水を落としてみてください。水が当たる点の周りに薄くて速い水の膜が広がり、ある半径で突然水が分厚く盛り上がってリングを描きます。このリングが**跳水(hydraulic jump)**です。毎日台所で起きるこの現象は、驚くことに超音速ノズルで生まれる衝撃波と同じ方程式に従います。この記事では、開水路(open channel)流れを支配するフルード数とは何か、なぜ水深が一瞬で跳ね上がるのか、そして浅い水がどのように圧縮性気体を真似るのかを、小さな Python コードと二つのシミュレーションで触れていきます。最後まで読めば、シンクのリングとラバルノズルの衝撃波がなぜ従兄弟なのかが分かります。

qq と水深 hh のスライダーを動かすと、同じ比エネルギー曲線の上で乗る枝が変わります。

u = q/h = 4.00 m/s
Fr = u/√(gh) = 2.86
E = 1.02 m
h_c = 0.40 m
supercritical (사류)

同じ EE に二つの水深が対応します。上の枝(深くて遅い流れ)と下の枝(浅くて速い流れ)です。限界水深 hch_c の先端を過ぎると、二つの世界が分かれます。

管を満たさない流れ

開水路は上部が大気に開いた水路です。河川、排水路、灌漑用水路がすべてここに含まれます。管の中を満たして流れる水は、上流と下流の圧力差で押されます。開水路の水は違います。底の勾配と重力が流れを作ります。

自由表面が自由に上下できるという点が核心です。この自由表面の上を波が伝わります。浅い水で小さな表面波が伝わる速度は、水深だけで決まります。

c=ghc = \sqrt{g h}

ここで cc は浅水波(shallow-water wave)の伝播速度、gg は重力加速度、hh は水深です。水が深いほど波は速くなります。

比エネルギーと限界水深

底を基準にした流れのエネルギーを水頭(head、長さ単位のエネルギー)で表したものが**比エネルギー(specific energy)**です。幅 bb が一定の矩形水路で、単位幅流量を q=Q/bq = Q/b と置くと、

E=h+u22g=h+q22gh2E = h + \frac{u^2}{2g} = h + \frac{q^2}{2 g h^2}

第一項 hh は位置エネルギー(水深)、第二項は運動エネルギーです。qq を固定して EE を hh の関数として描くと、興味深い曲線が現れます。水深が浅すぎると流速が大きくなって運動エネルギーが急増し、深すぎると位置エネルギーが大きくなります。その間のどこかで EE が最小になります。

dE/dh=0dE/dh = 0 を解くと、その点の水深が得られます。

hc=(q2g)1/3h_c = \left( \frac{q^2}{g} \right)^{1/3}

この hch_c が**限界水深(critical depth)**です。この点では Emin⁡=32hcE_{\min} = \tfrac{3}{2} h_c となり、流速はちょうど浅水波の速度と等しくなります: uc=ghcu_c = \sqrt{g h_c}。

フルード数:常流と射流

流速と波の速度の比が流れの性格を決めます。この無次元数が**フルード数(慣性力/重力波速度の比)**です。

Fr=ughFr = \frac{u}{\sqrt{g h}}

Fr<1Fr < 1 なら流速が波より遅いです。下流の障害物が作った水面の変化が上流へ遡ることができます。この深くて穏やかな流れを**常流(subcritical flow)と呼びます。Fr>1Fr > 1 なら流速が波を追い越します。下流の信号が上流に届きません。この浅くて速い流れが射流(supercritical flow)**です。Fr=1Fr = 1 が限界状態で、このとき水深がちょうど hch_c です。

もう分かってきたでしょう。フルード数は気体力学のマッハ数(流速/音速の比)とまったく同じ役割を果たします。音が情報を運ぶ圧縮性気体のように、開水路では浅水波が情報を運びます。射流は超音速、常流は亜音速です。ノズルの中でその逆転がどう見えるかは、広がらないと速くならない超音速のほうが短いです。

跳水:水が厚くなる瞬間

射流が常流に変わらなければならないとき、問題が生じます。比エネルギー曲線上で下の枝から上の枝へ滑らかに移る道がありません。自然は不連続で解決します。浅くて速い水が突然厚くて遅い水へ跳ね上がるのです。これが跳水です。

跳水の前後を結ぶ関係は、エネルギーではなく運動量保存から出てきます。跳水の中では乱流の渦(ローラー)がエネルギーを容赦なく食い尽くすからです。運動量フラックスと静水圧を跳水の両側で合わせると、跳水前の水深 h1h_1 と跳水後の水深 h2h_2 の間に共役水深(conjugate depth)の関係が成り立ちます。

h2h1=12(1+8 Fr12−1)\frac{h_2}{h_1} = \frac{1}{2} \left( \sqrt{1 + 8\,Fr_1^2} - 1 \right)

Fr1Fr_1 は跳水直前(射流)のフルード数です。跳水で失われる比エネルギーは次のようにきれいに求まります。

ΔE=(h2−h1)34 h1h2\Delta E = \frac{(h_2 - h_1)^3}{4\, h_1 h_2}

この損失こそが、ダムの余水吐や減勢工で跳水をわざと作る理由です。速い水の破壊的な運動エネルギーを乱流に散らし、下流の河床を浸食から守ります。

コードで再現する

共役水深とエネルギー損失を直接計算してみましょう。単位幅流量 q=0.8 m2/sq = 0.8\ \mathrm{m^2/s}、跳水前の水深 h1=0.2 mh_1 = 0.2\ \mathrm{m} の場合です。

import numpy as np
 
g = 9.81  # m/s^2
 
def froude(u, h):
    """フルード数 = 流速 / 浅水波速度。"""
    return u / np.sqrt(g * h)
 
def critical_depth(q):
    """単位幅流量 q に対する限界水深(比エネルギー最小)。"""
    return (q**2 / g) ** (1.0 / 3.0)
 
def specific_energy(h, q):
    """比エネルギー E = h + q^2 / (2 g h^2)。"""
    return h + q**2 / (2.0 * g * h**2)
 
def conjugate_depth(h1, q):
    """跳水前の水深 h1(射流)に対する跳水後の水深 h2。"""
    u1 = q / h1
    fr1 = froude(u1, h1)
    return 0.5 * h1 * (np.sqrt(1.0 + 8.0 * fr1**2) - 1.0)
 
def jump_dissipation(h1, h2):
    """跳水で失われる比エネルギー(乱流散逸)。"""
    return (h2 - h1)**3 / (4.0 * h1 * h2)
 
q, h1 = 0.8, 0.2
u1 = q / h1
h2 = conjugate_depth(h1, q)
u2 = q / h2
 
print(f"上流(射流)  u1={u1:.2f} m/s  Fr1={froude(u1,h1):.2f}")
print(f"跳水後      h2={h2:.3f} m  u2={u2:.2f} m/s  Fr2={froude(u2,h2):.2f}")
print(f"限界水深    hc={critical_depth(q):.3f} m")
print(f"エネルギー損失 dE={jump_dissipation(h1,h2):.3f} m")

出力は次のとおりです。

上流(射流)  u1=4.00 m/s  Fr1=2.86
跳水後      h2=0.714 m  u2=1.12 m/s  Fr2=0.42
限界水深    hc=0.403 m
エネルギー損失 dE=0.238 m

上流の Fr1Fr_1 スライダーを上げると、横から見た水の筋が厚くなり、ローラーが濃くなります。

h2/h1 = 3.77Fr2 = 0.41ΔE/h1 = 1.41

Fr1Fr_1 を 1.5 付近まで下げると跳水が弱まり、水面がなだらかに膨らみます。5 以上に上げると h2/h1h_2/h_1 が 6 倍を超え、白い泡のローラーが激しくなります。

Fr1=2.86Fr_1 = 2.86 の射流が跳水を経て Fr2=0.42Fr_2 = 0.42 の常流に変わりました。水深は 3.6 倍厚くなり、流速は同じ倍率で遅くなります(連続の式 uh=constu h = \text{const})。その代償として比エネルギー 0.238 m が乱流に散らばります。跳水後の水深 h2=0.714h_2 = 0.714 m が限界水深 hc=0.403h_c = 0.403 m より大きいことが、常流であることを確認してくれます。

出力の数字を比エネルギーで読み直すと、跳水の値が噛み合います。上流流速 4.00 m/s は、流量 0.8 を水深 0.2 で割った値そのものです。波速は g と h の積の平方根です。9.81 掛ける 0.2 は 1.962、平方根は約 1.40 m/s。4.00 を 1.40 で割ると、印刷された Fr 2.86 になります。波が上流へ戻れない理由です。比エネルギーは、水深に流速の二乗を 2g で割った項を足したものです。上流は 0.2 に、16 を 19.62 で割った 0.816 を足して約 1.016 m。下流は 0.714 に、1.12 の二乗を 19.62 で割った 0.064 を足して約 0.778 m。差は 0.238 m で、出力のエネルギー損失と一致します。上流の比エネルギーの約四分の一がローラーへ漏れます。限界水深 0.403 m は 0.2 と 0.714 の間にあります。跳水は比エネルギー曲線の鼻を横切って枝を変えます。最小比エネルギーは限界水深の 1.5 倍、約 0.605 m なので、下流の 0.778 m はまだ鼻の上です。エネルギーを底まで食ったわけではありません。

共役水深の式に Fr を 1 として入れると、1 足す 8 の平方根は 3 です。そこから 1 を引いて半分にすると比は 1 です。跳水のない限界です。出力の Fr 2.86 なら比は約 3.57、0.2 m を掛けると 0.714 m になります。図でいう Fr 5 は、1 足す 8 掛ける 25 が 201、平方根が約 14.2、半分から 1 を引くと約 6.6 倍です。6 倍を超えるという文と同じ式です。

浅い水が気体を真似るとき

ここがこの記事の白眉です。幅が一定の浅い水槽を流れる定常流の連続の式は uh=constu h = \text{const} です。断面が一定の管を流れる圧縮性気体の定常流の連続の式は ρv=const\rho v = \text{const} です。水深 hh と気体密度 ρ\rho がぴったり対応します。

浅水エネルギー式 h+u2/(2g)=consth + u^2/(2g) = \text{const} を微分して u du+g dh=0u\,du + g\,dh = 0 を得て、そこに波速 uc=ghu_c = \sqrt{g h} を入れると、浅水波が気体の音波と同じ席を占めることが分かります。まとめると次の相似が完成します。

浅い水(浅水)圧縮性気体
水深 hh密度 ρ\rho
浅水波速度 gh\sqrt{gh}音速 κRT\sqrt{\kappa R T}
フルード数 FrFrマッハ数 MM
射流 / 常流超音速 / 亜音速
跳水衝撃波

この相似は κ=2\kappa = 2 の仮想気体に相当します(h↔Th \leftrightarrow T、h2↔ph^2 \leftrightarrow p)。だから昔の航空研究者は、高価な超音速風洞の代わりに「浅水水槽(shallow water table)」に物体を置き、水面の跳水を観察して衝撃波パターンを定性的に研究しました。シンクのリングが二次元物体の前の弓形衝撃波(bow shock)に似ているのは、まさにこの理由からです。

エネルギーで跳水高さを合わせると下流水深がずれる

フルード数 Fr=u/ghFr = u/\sqrt{gh} は開水路のマッハ数です。Fr<1Fr<1 は常流、Fr>1Fr>1 は射流、Fr=1Fr=1 は限界です。跳水高さを比エネルギーの保存で合わせると、下流は上流と同じ枝に残ります。出力の 0.714 m は運動量から出た値です。共役水深 h2/h1=12(1+8Fr12−1)h_2/h_1 = \tfrac{1}{2}(\sqrt{1+8Fr_1^2}-1) をエネルギー式に置き換えると、その水深は出てきません。

同じ Fr が水面を分ける別の場所は航跡です。速度だけ上げてもくさび角が一点に張り付く理由は、水深フルードがケルビン角を開く場所にあります。跳水の Fr と航跡の Fr はどちらも波速で流速を測りますが、片方は水深比を決め、片方は角を固定します。

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