「えっ、川の流れが急に壁みたいに盛り上がること、あるの?」
あります。しかもそれは単なる偶然じゃなく、流体力学の法則が作り出す完璧な構造なんです。ダムの下流でゴーゴー泡立っているあの白い水の壁——あれ、実は計算で予測できるんですよ。
今日は、この「水跳び(跳水)」現象を、数式→コード→実務の流れで完全に理解していきます。最後には自分で計算できるようになります。
ざっくり本質:水の「ブレーキ」が跳ね上がる
水理跳躍を一言で表すとこうなります。
「高速で走る水(射流)が、急ブレーキを踏んで低速の水(常流)に変わるとき、その衝撃で水面がドーンと盛り上がる現象」
イメージしてみてください。自転車で全力疾走して急ブレーキ——後輪が浮き上がりますよね。水も同じです。流れの勢い(運動量)が急に抑えられると、そのエネルギーが水面の上昇という形で現れるんです。
ポイントはたった2つ:
- フルード数 $Fr_1$ が1より大きい(超臨界流)こと
- 下流の水深が、跳躍後の理論水深(共役水深)より深いこと
この2つが揃うと、水は「跳ぶ」んです。
数式で理解する:たった3つの式で水跳びが解ける
水理跳躍の計算を支配するのは、ベランジェ方程式というたった1つの式です。導出は運動量保存則から来ていますが、実務で使う形だけ押さえましょう。
共役水深比(跳躍後の水深が何倍になるか)
\frac{y_2}{y_1} = \frac{\sqrt{1 + 8Fr_1^2} - 1}{2}
- $y_1$:跳躍前の水深(上流側)
- $y_2$:跳躍後の水深(下流側)
- $Fr_1$:上流のフルード数
この式のすごいところは、水路の幅に依存しないこと。フルード数さえ決まれば、水深比は一意に決まります。
エネルギー損失(跳躍で失われるエネルギー)
\Delta E = \frac{(y_2 - y_1)^3}{4 y_1 y_2}
跳躍前後の水深差が大きいほど、エネルギー損失は3乗で増大します。これが減勢工設計の根拠です。
フルード数(流れの「速さの性格」を決める)
Fr_1 = \frac{v_1}{\sqrt{g y_1}}
- $v_1$:上流の流速
- $g$:重力加速度(9.81 m/s²)
フルード数が1を超えると「射流(超臨界流)」、1未満だと「常流(亜臨界流)」です。水跳びが起きるのは必ず射流から常流へ遷移するときだけ。
コードで実装する:JavaScriptでリアルタイム計算機を作る
ここが一番大事。実際に動くコードを書きます。このコードは、先ほどのシミュレーターの核となる計算ロジックを完全に再現しています。
/**
* 水理跳躍(水跳び)計算モジュール
* 入力: 上流水深 y1 (m), 流量 Q (m³/s), 水路幅 B (m)
* 出力: フルード数, 共役水深, エネルギー損失, 跳躍タイプ
*/
function hydraulicJump(y1, Q, B) {
const g = 9.81; // 重力加速度 [m/s²]
// 1. 単位幅当たり流量 q = Q / B
const q = Q / B;
// 2. 上流流速 v1 = q / y1
const v1 = q / y1;
// 3. フルード数 Fr1 = v1 / sqrt(g * y1)
const Fr1 = v1 / Math.sqrt(g * y1);
// 4. フルード数が1未満なら跳躍は発生しない
if (Fr1 < 1.0) {
return {
Fr1: Fr1,
y2: null,
deltaE: null,
type: "跳躍発生せず(常流)"
};
}
// 5. 共役水深 y2 をベランジェ方程式で計算
const y2 = y1 * (Math.sqrt(1 + 8 * Fr1 * Fr1) - 1) / 2;
// 6. エネルギー損失 ΔE = (y2 - y1)^3 / (4 * y1 * y2)
const deltaE = Math.pow(y2 - y1, 3) / (4 * y1 * y2);
// 7. 跳躍タイプの判定(フルード数による分類)
let type;
if (Fr1 < 1.7) {
type = "波状跳躍(Fr1=1〜1.7)";
} else if (Fr1 < 2.5) {
type = "弱跳躍(Fr1=1.7〜2.5)";
} else if (Fr1 < 4.5) {
type = "振動跳躍(Fr1=2.5〜4.5)";
} else if (Fr1 < 9.0) {
type = "定常跳躍(Fr1=4.5〜9.0)";
} else {
type = "強跳躍(Fr1=9.0以上)";
}
return {
Fr1: Fr1,
y2: y2,
deltaE: deltaE,
type: type
};
}
// ===== 使用例 =====
const result = hydraulicJump(0.5, 5.0, 2.0);
console.log("フルード数:", result.Fr1.toFixed(3));
console.log("共役水深 y2:", result.y2.toFixed(3), "m");
console.log("エネルギー損失 ΔE:", result.deltaE.toFixed(3), "m");
console.log("跳躍タイプ:", result.type);
このコード、たったの35行で水理跳躍の計算が完結しています。ポイントは:
-
Math.sqrt(1 + 8 * Fr1 * Fr1)でベランジェ方程式のルート部分を計算 -
Fr1 < 1.0のガードで、跳躍が起こらない条件を明示的に除外 - フルード数の範囲で跳躍タイプを5段階に分類
数値例で確かめる:実際の値を入れてみる
具体的な数値で計算してみましょう。
条件:
- 上流水深 $y_1 = 0.5$ m
- 流量 $Q = 5.0$ m³/s
- 水路幅 $B = 2.0$ m
ステップ1:単位幅流量
q = \frac{Q}{B} = \frac{5.0}{2.0} = 2.5 \text{ m²/s}
ステップ2:上流流速
v_1 = \frac{q}{y_1} = \frac{2.5}{0.5} = 5.0 \text{ m/s}
ステップ3:フルード数
Fr_1 = \frac{5.0}{\sqrt{9.81 \times 0.5}} = \frac{5.0}{\sqrt{4.905}} = \frac{5.0}{2.215} = 2.257
ステップ4:共役水深比
\frac{y_2}{y_1} = \frac{\sqrt{1 + 8 \times (2.257)^2} - 1}{2} = \frac{\sqrt{1 + 8 \times 5.094} - 1}{2} = \frac{\sqrt{41.752} - 1}{2} = \frac{6.462 - 1}{2} = 2.731
ステップ5:共役水深
y_2 = 0.5 \times 2.731 = 1.366 \text{ m}
ステップ6:エネルギー損失
\Delta E = \frac{(1.366 - 0.5)^3}{4 \times 0.5 \times 1.366} = \frac{0.866^3}{2.732} = \frac{0.649}{2.732} = 0.238 \text{ m}
結果:
- フルード数:2.257 → 弱跳躍
- 跳躍後の水深:1.366 m(上流の約2.7倍!)
- エネルギー損失:0.238 m(上流の総エネルギーに対して約27%が消散)
先ほどのコードで計算すると、まったく同じ値が出力されます。試してみてください。
シミュレーターで遊ぶ:パラメータを動かして現象を体感する
実際に 水跳び計算ツール を開いて、一緒に実験してみましょう。
実験1:流量を増やすと何が起きる?
初期状態: $y_1=0.5$m, $Q=3.0$m³/s, $B=2.0$m
- → $Fr_1=1.354$(波状跳躍), $y_2=0.843$m
Qを5.0に増やす:
- → $Fr_1=2.257$(弱跳躍), $y_2=1.366$m
Qを10.0に増やす:
- → $Fr_1=4.514$(定常跳躍), $y_2=2.976$m
なぜ? 流量が増えると流速が上がり、フルード数が大きくなります。式 $\frac{y_2}{y_1} = \frac{\sqrt{1+8Fr_1^2}-1}{2}$ で $Fr_1$ が大きいほど $y_2$ が急増するのがわかります。
実験2:上流水深を極端に小さくする
設定: $y_1=0.1$m, $Q=5.0$m³/s, $B=2.0$m
- → $Fr_1=11.29$(強跳躍), $y_2=1.518$m
水深が5分の1になったのに、跳躍後の水深はほぼ変わらない。これはフルード数が9を超えると、水深比の増加が頭打ちになるためです。エネルギー損失も大きくなりますが、実務ではFr₁が9を超える設計は避けます——構造物への衝撃が強すぎるからです。
実験3:水路幅の影響を確認する
設定: $y_1=0.5$m, $Q=5.0$m³/s, $B=1.0$m(幅を半分に)
- → $Fr_1=4.514$(定常跳躍), $y_2=2.976$m
幅を狭めると単位幅流量 $q$ が増え、流速が上がり、フルード数が大きくなります。同じ流量でも水路が狭いほど跳躍は激しくなる——これ、水路設計では超重要です。
現場でハマるポイント:理論と現実のギャップ
落とし穴1:「跳躍は必ず起こる」と思い込むな
シミュレーターは「跳躍が起こった場合」の計算しかしません。実際には、下流の水深が共役水深より浅いと跳躍は「逃げて」 発生しません。
例えば、計算で $y_2=1.366$m と出ても、実際の下流水深が1.0mしかなければ、跳躍は下流に押し流されて消えます。これが洗掘被害の原因です。
落とし穴2:極端なパラメータは現実的じゃない
スライダーを思い切り動かすと $Fr_1=30$ とか出ますが、実務で使うフルード数は4〜9程度がせいぜい。それ以上だとエネルギー消散率が頭打ちになり、構造物への負荷が大きすぎます。
落とし穴3:これは「一点」の計算にすぎない
実際の開水路は勾配や粗度が変化する非一様流。このツールはその断面での理論値を示しているだけで、跳躍の発生位置や安定性までは保証しません。あくまで相対的な関係性を理解する補助として使ってください。
まとめ:水跳びを「計算できる」武器にする
今日学んだことを3つにまとめます。
- 水理跳躍はフルード数とベランジェ方程式で完全に予測できる — たった1つの式で、跳躍後の水深とエネルギー損失が計算可能
- 実装は35行で完了する — JavaScriptで書けば、ブラウザ上でリアルタイムに動作する計算機が作れる
- 理論値と現場は違う — 下流条件や実際の水路形状を無視すると、設計は失敗する
この知識を活かして、ダムの減勢工や下水処理場のエアレーション設備の設計に役立ててください。
最後に、今回の記事で使ったシミュレーターをもう一度紹介します。
▶ 水跳び(跳水)計算ツール — ブラウザで即動作、登録不要
フルード数と水深の関係を「手で触って」理解できる、最高の教材です。ぜひ、今日学んだ式と見比べながら操作してみてください。
NovaSolverでは、この他にも700以上の工学シミュレーターを無料公開しています。流体力学、構造力学、熱力学…気になる分野を探してみてください。