「渦って、結局どうなってるの?」——流体力学の授業で最初にぶつかる壁、それが渦のイメージです。台風の衛星画像を見ても、コーヒーカップをかき混ぜたときの表面を見ても、「なんかぐるぐる回ってる」以上の理解に至らない。そんなモヤモヤ、ありませんか?
実は渦には真逆の性質を持つ2つのタイプが存在します。しかも、その違いを理解するだけで、ポンプの故障原因や飛行機の翼端にできる危険な後流まで説明できてしまう。今回は、ブラウザ上で動作する渦流れシミュレーターをフル活用しながら、自由渦・強制渦・ランキン渦の正体を、数式とコードで徹底的に解剖します。
「へえ、そうだったのか」が止まらなくなる——そんな記事を目指しました。
ざっくり本質:渦の「回り方」は2種類しかない
渦の速度分布は、たった2つのパターンに分類できます。
- 自由渦(Free Vortex):中心から離れるほど遅くなる。例:洗面台の排水口、台風の外側領域
- 強制渦(Forced Vortex):中心から離れるほど速くなる。例:コーヒーをスプーンでかき混ぜた直後の表面
そして、これらを組み合わせたランキン渦(Rankine Vortex) は、現実の渦(竜巻、タンク排水時の渦)をよく近似します。
「渦の本質は、『中心からの距離』と『回転速度』の関係が直線的か、反比例するかの違いだけ」
この一言で、すべての議論が始まります。
数式で理解する:3つの渦を支配するたった3行の式
自由渦(非回転渦・ポテンシャル渦)
v_\theta = \frac{\Gamma}{2\pi r}, \quad p = p_\infty - \frac{\rho\Gamma^2}{8\pi^2 r^2}
- $v_\theta$:周方向速度(m/s)
- $\Gamma$:循環(m²/s)——渦の「強さ」を表す量
- $r$:渦中心からの距離(m)
- $p_\infty$:無限遠方の圧力(Pa)
- $\rho$:流体密度(kg/m³)
ポイント:速度は $r$ に反比例。中心に近づくほど速度が無限大に発散する(数学的特異点)。圧力も同様に $1/r^2$ で低下するため、中心付近は極端な低圧になる。
強制渦(剛体回転渦)
v_\theta = \omega r, \quad p = p_\infty - \tfrac{1}{2}\rho\omega^2 r^2
- $\omega$:角速度(rad/s)
ポイント:速度は $r$ に比例。まるで円盤が剛体のように回転している。圧力は $r^2$ に比例して低下するため、中心が最も低圧になる(ただし発散はしない)。
ランキン渦(複合モデル)
v_\theta = \begin{cases}\omega r & r < r_c \\ \dfrac{\omega r_c^2}{r}& r \ge r_c\end{cases}
- $r_c$:コア半径(m)——強制渦領域と自由渦領域の境界
ポイント:内側($r < r_c$)は強制渦、外側($r \ge r_c$)は自由渦として振る舞う。境界 $r = r_c$ で速度は連続($v_\theta = \omega r_c$)になるように設計されている。
コードで実装する:20行で渦の速度・圧力を計算する
ここが今回の核心です。上の数式を JavaScript で実装し、任意の半径における速度と圧力を計算できる関数を作ります。このコードは、実際のシミュレーター内部で使われているロジックをほぼそのまま再現しています。
/**
* 渦の速度・圧力を計算する関数
* @param {string} type - 'free' | 'forced' | 'rankine'
* @param {number} r - 中心からの距離 (m)
* @param {number} Gamma - 循環 (m²/s) ※自由渦・ランキン渦で使用
* @param {number} omega - 角速度 (rad/s) ※強制渦・ランキン渦で使用
* @param {number} rc - コア半径 (m) ※ランキン渦のみ使用
* @param {number} pInf - 無限遠方圧力 (Pa)
* @param {number} rho - 流体密度 (kg/m³)
* @returns {{ v: number, p: number }}
*/
function computeVortex(type, r, Gamma, omega, rc, pInf, rho) {
let v = 0, p = pInf;
if (type === 'free') {
// 自由渦: v = Γ/(2πr)
if (r > 0) {
v = Gamma / (2 * Math.PI * r);
p = pInf - (rho * Gamma * Gamma) / (8 * Math.PI * Math.PI * r * r);
}
} else if (type === 'forced') {
// 強制渦: v = ωr
v = omega * r;
p = pInf - 0.5 * rho * omega * omega * r * r;
} else if (type === 'rankine') {
// ランキン渦: 条件分岐
if (r < rc) {
v = omega * r;
p = pInf - 0.5 * rho * omega * omega * r * r;
} else {
v = (omega * rc * rc) / r;
p = pInf - (rho * omega * omega * rc * rc * rc * rc) / (2 * r * r);
}
}
return { v, p };
}
// 使用例:ランキン渦で r=0.05m の速度と圧力を計算
const result = computeVortex('rankine', 0.05, 0, 5, 0.1, 101325, 1000);
console.log(`速度: ${result.v.toFixed(4)} m/s, 圧力: ${result.p.toFixed(1)} Pa`);
// → 速度: 0.2500 m/s, 圧力: 101293.8 Pa
コードのポイント:
- 自由渦では $r=0$ の特異点を避けるため
r > 0の条件を入れている - ランキン渦の外側領域の圧力式は、自由渦の式に $ \Gamma = 2\pi \omega r_c^2 $ を代入して導出している
- 実際のシミュレーターでは、この関数を各半径に対してループ処理し、グラフ描画用の配列を生成している
数値例で確かめる:現実の数値を入れてみる
実際のポンプ設計を想定した条件で計算してみましょう。
条件:
- 流体:水($\rho = 1000 , \text{kg/m}^3$)
- 参照圧力:$p_\infty = 101325 , \text{Pa}$(1気圧)
- ランキン渦:$\omega = 10 , \text{rad/s}$、$r_c = 0.05 , \text{m}$
- 評価点:$r = 0.02 , \text{m}$(コア内部)と $r = 0.1 , \text{m}$(コア外部)
計算過程:
① $r = 0.02 , \text{m}$(コア内部)
- 速度:$v_\theta = \omega r = 10 \times 0.02 = 0.2 , \text{m/s}$
- 圧力:$p = 101325 - \frac{1}{2} \times 1000 \times 10^2 \times 0.02^2 = 101325 - 20 = 101305 , \text{Pa}$
② $r = 0.1 , \text{m}$(コア外部)
- 速度:$v_\theta = \frac{\omega r_c^2}{r} = \frac{10 \times 0.05^2}{0.1} = \frac{0.025}{0.1} = 0.25 , \text{m/s}$
- 圧力:$p = 101325 - \frac{1000 \times 10^2 \times 0.05^4}{2 \times 0.1^2} = 101325 - \frac{1000 \times 100 \times 0.00000625}{2 \times 0.01} = 101325 - 31.25 = 101293.75 , \text{Pa}$
結果の解釈:
- コア内部よりも外部のほうが速度が速い(0.2 → 0.25 m/s)→ 自由渦領域では $r$ が小さいほど速い
- 圧力はコア内部で 101305 Pa、外部で 101294 Pa と、外部のほうが低い → 自由渦領域の圧力低下がより顕著
- この差は $r$ がさらに小さくなると拡大する($r=0.01m$ では $p \approx 101193 , \text{Pa}$)
キャビテーションとの関係:水の飽和蒸気圧は約 2338 Pa(20℃)。今回の計算では圧力はまだ高いが、循環 $\Gamma$ や角速度 $\omega$ を大きくすると、中心付近の圧力が蒸気圧を下回る領域が生じる——これがキャビテーションの発生条件です。
シミュレーターで遊ぶ:3つの実験
実際に 渦流れシミュレーター を開いて、以下の実験を試してみてください。
実験1:自由渦 vs 強制渦の「速度分布の形」を比較
- 渦タイプを「自由渦 (Free Vortex)」に設定
- 循環 $\Gamma$ を 1.0 m²/s に設定 → グラフは $r=0$ 付近で急上昇する双曲線
- 渦タイプを「強制渦 (Forced Vortex)」に切り替え
- 角速度 $\omega$ を 5 rad/s に設定 → グラフは原点を通る直線
何が起きているか:自由渦は「中心ほど速い」、強制渦は「外側ほど速い」。この真逆の性質が、グラフの傾きに如実に現れます。
実験2:ランキン渦のコア半径を変えて「境目」を観察
- 渦タイプを「ランキン渦 (Rankine)」に設定
- $\omega = 5 , \text{rad/s}$、$r_c = 0.1 , \text{m}$ に設定
- 速度グラフに注目:$r < 0.1$ では直線(強制渦)、$r > 0.1$ では曲線(自由渦)
- $r_c$ を 0.05 m に変更 → 強制渦領域が狭まり、速度のピークが中心寄りに移動
何が起きているか:コア半径は「渦の芯の大きさ」を決めるパラメータ。現実の竜巻では、このコア半径が「眼の大きさ」に相当します。
実験3:キャビテーションの発生条件を探る
- 渦タイプを「自由渦」、$\Gamma = 3.0 , \text{m}^2/\text{s}$ に設定
- 圧力グラフの赤い点線(飽和蒸気圧)を確認
- $r$ が小さい領域で圧力が赤線を下回っているかチェック
- 流体密度 $\rho$ を 1000 → 500 kg/m³ に変更 → 圧力低下が緩和される
何が起きているか:圧力が蒸気圧を下回ると、液体が気化して気泡が発生します(キャビテーション)。密度が小さい流体ほど圧力低下が小さいため、キャビテーションが発生しにくくなります。これは実務で「軽い流体ほどキャビテーションに強い」という経験則と一致します。
現場でハマるポイント:理論と現実のギャップ
1. 「自由渦は非粘性」——現実の流体には必ず粘性がある
シミュレーターの自由渦は、粘性を完全に無視した理想モデルです。現実の洗面台の渦は、壁面摩擦や流体の粘性によって中心付近の速度が有限値に抑えられます。「理論曲線はあくまで理想形」 という認識を持ちましょう。
2. 「循環 $\Gamma$」と「角速度 $\omega$」はランキン渦で密接に関係する
ランキン渦では、コア境界 $r=r_c$ で速度が連続になる条件から、以下の関係が自動的に成立します:
\Gamma = 2\pi \omega r_c^2
つまり、$\Gamma$ と $\omega$ を独立に設定すると、非物理的な速度ジャンプが生じます。シミュレーターではこの連続性を自動調整していますが、自分で計算する場合は注意が必要です。
3. 「中心の圧力がマイナス無限大」——その結果を鵜呑みにしない
自由渦の式では $r \to 0$ で $p \to -\infty$ となりますが、現実には圧力が蒸気圧まで下がるとキャビテーションが発生し、流れ場そのものが変化します。「どの程度の低圧領域が、どれくらいの範囲に広がるか」 を定量的に見ることが、実務では重要です。
まとめ:渦の理解が広げるエンジニアリングの視野
- 渦は「自由渦(速度∝1/r)」と「強制渦(速度∝r)」の2タイプ。この違いを数式とコードで理解すれば、流体力学の基礎が一気に固まる
- ランキン渦は現実の渦をよく近似する実用的なモデル。コア半径というたった1つのパラメータで、竜巻からポンプ内部の流れまで表現できる
- キャビテーション予測は「圧力が蒸気圧を下回る領域の有無」で判断。パラメータを変えながら直感的に探れるのが、このシミュレーターの強み
今回使ったツールはこちら:
▶ 渦流れシミュレーター — ブラウザで即動作、登録不要
数式を追うだけでは掴めなかった「渦の挙動」が、グラフとスライダー操作で一瞬で理解できる——そんな体験を、ぜひあなた自身の手で。
NovaSolverでは700以上の工学シミュレーターを無料公開中 👉 一覧はこちら