0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「水しぶきの軌跡を数値で再現する — 跳水現象を流体力学で読み解く」

0
Posted at

「えっ、川の流れが急に壁みたいに盛り上がること、あるの?」

あります。しかもそれは単なる偶然じゃなく、流体力学の法則が作り出す完璧な構造なんです。ダムの下流でゴーゴー泡立っているあの白い水の壁——あれ、実は計算で予測できるんですよ。

今日は、この「水跳び(跳水)」現象を、数式→コード→実務の流れで完全に理解していきます。最後には自分で計算できるようになります。


ざっくり本質:水の「ブレーキ」が跳ね上がる

水理跳躍を一言で表すとこうなります。

「高速で走る水(射流)が、急ブレーキを踏んで低速の水(常流)に変わるとき、その衝撃で水面がドーンと盛り上がる現象」

イメージしてみてください。自転車で全力疾走して急ブレーキ——後輪が浮き上がりますよね。水も同じです。流れの勢い(運動量)が急に抑えられると、そのエネルギーが水面の上昇という形で現れるんです。

ポイントはたった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. 水理跳躍はフルード数とベランジェ方程式で完全に予測できる — たった1つの式で、跳躍後の水深とエネルギー損失が計算可能
  2. 実装は35行で完了する — JavaScriptで書けば、ブラウザ上でリアルタイムに動作する計算機が作れる
  3. 理論値と現場は違う — 下流条件や実際の水路形状を無視すると、設計は失敗する

この知識を活かして、ダムの減勢工や下水処理場のエアレーション設備の設計に役立ててください。

最後に、今回の記事で使ったシミュレーターをもう一度紹介します。

水跳び(跳水)計算ツール — ブラウザで即動作、登録不要

フルード数と水深の関係を「手で触って」理解できる、最高の教材です。ぜひ、今日学んだ式と見比べながら操作してみてください。

NovaSolverでは、この他にも700以上の工学シミュレーターを無料公開しています。流体力学、構造力学、熱力学…気になる分野を探してみてください。

👉 NovaSolver ツール一覧はこちら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?