渦の二つの顔 — 自由渦・強制渦、そしてヘルムホルツ
風呂場の渦から竜巻まで、渦度とは何を測っているのか
風呂の栓を抜くと水がぐるぐる回ります。私たちはその光景を「水が回転している」と呼びます。けれども流体力学者は、その領域の大部分について「ここでは回転は起きていない(irrotational)」と答えます。一見矛盾するこの言い方の中に、渦(vortex)の本当の姿が隠れています。本稿では同じ絵の中に共存する自由渦(free vortex、 速度)と強制渦(forced vortex、 速度)を切り分け、渦度(vorticity、流体粒子の自転角速度の二倍)が何を測っているのかを示し、ヘルムホルツの定理が渦を「不滅」と呼ぶ理由までたどります。
風呂の渦は本当に「回転」なのか#
「回転」という一語に二つの意味が混ざっています。一つ目は 公転 — ある点を中心に円運動する。二つ目は 自転 — 粒子自身が軸の周りを回る。風呂の渦で水の粒子は公転します。けれど自転は? 排水口から離れた領域ではほとんど起きません。水面に浮かぶ小さな葉は円形の経路を描きながらも、自分自身は回らず、いつも同じ面が排水口を向いています。
流体力学で「回転」とは自転のことです。だから自由渦は中心点を除く全域で「回転なし」と分類されます。
強制渦と自由渦:同じ絵、違う魂#
回転する容器の中の水を長く混ぜ続けると、液体全体が剛体のように一緒に回ります。これを 強制渦 と呼びます。粒子は公転と同時に自転しています。
ここで は接線速度、 は剛体回転の角速度、 は中心からの距離です。速度が距離に比例します。
一方、粘性を無視した理想流体で自然に生じる渦は 自由渦(=ポテンシャル渦)です。
は 循環(circulation)— 閉じた経路に沿った速度の線積分です。速度は で減衰し、中心では発散します。この特異点を実流体では粘性が和らげます。
| 強制渦 | 自由渦 | |
|---|---|---|
| 速度 | ||
| 自転 | あり | なし |
| エネルギー供給 | 連続的 | 最初の一度だけ |
| 身近な例 | かき混ぜたカップ | 風呂・竜巻 |
同じ円形の流れでも自転の有無が逆。この差を一つの量で測るのが渦度です。
渦度が測るもの#
渦度 は速度場の回転(curl)です。
二次元では 成分だけが残り
となります。 はそれぞれ 方向の速度成分。この値は 流体粒子の自転角速度の二倍 に等しいです。
強制渦に代入すると で一定 — 領域全体が自転しています。自由渦に代入すると、中心点以外では 。同じ丸い流線でも、自転の様子は正反対です。
ランキン組合せ渦 — 竜巻の青写真#
現実の渦はどちらか片方だけに従いません。中心付近では粘性が強く剛体のように回り、遠方では粘性が無視されて自由渦の法則に従います。これらをつないだモデルが ランキン組合せ渦 です。
はコア半径、 はコア境界での最大接線速度。二式は で滑らかに接続します。竜巻の風速分布、航空機翼端から放たれる翼端渦、排水口の吸い込み渦はすべてこの形に近いです。コア内は回転領域、コア外は非回転領域です。
ヘルムホルツの定理 — 渦の不滅#
粘性を無視すれば流体粒子に働く力は圧力のみで、圧力は粒子中心を向くため、トルクを生みません。したがって 自転していない粒子は永遠に自転を始めず、自転している粒子は永遠に止まらない。これがヘルムホルツの渦定理の一行要約です。
より精密には ケルビン(Kelvin)の定理 があります。閉じた物質曲線に沿った循環 は時間が経っても変化しない。
は物質微分(流体粒子に追随する微分)。渦管は切れず分かれず、引き伸ばすほど速く回ります — フィギュアスケートで腕を縮めるのと同じ物理。実流体には粘性があるので渦はやがて拡散しますが、粘性の小さい水や空気では数日生き残ります。航空機の通った跡に渦の凝結雲が長く見えるのはこのためです。
速度ポテンシャルが開く扉#
非回転領域()では、ベクトル恒等式が一行の贈り物をくれます。
スカラー関数 を 速度ポテンシャル と呼びます。さらに非圧縮性 を仮定すれば
ラプラス方程式です。非粘性・非回転・非圧縮の流れは、たった一つのスカラー関数の問題に帰着します。19世紀の流体力学が翼の揚力やソース・シンク模型を解析的に扱えた秘密です。自由渦自身は で表されます — 角度 に比例するポテンシャルです。
コードで見る二つの渦#
ランキン渦の速度と離散渦度を描けば、違いが一目でわかります。
import numpy as np
def rankine_speed(r, R_core, U_max):
"""ランキン組合せ渦の接線速度"""
speed = np.where(r <= R_core,
U_max * r / R_core,
U_max * R_core / np.maximum(r, 1e-9))
return speed
def vorticity_field(u, v, dx, dy):
"""2次元の離散curl: omega_z = dv/dx - du/dy"""
dvdx = (v[1:-1, 2:] - v[1:-1, :-2]) / (2 * dx)
dudy = (u[2:, 1:-1] - u[:-2, 1:-1]) / (2 * dy)
return dvdx - dudy
# 200x200 格子でサンプリング
N, L = 200, 2.0
x = np.linspace(-L, L, N)
y = np.linspace(-L, L, N)
X, Y = np.meshgrid(x, y)
R = np.hypot(X, Y)
THETA = np.arctan2(Y, X)
U_max, R_core = 1.0, 0.5
u_theta = rankine_speed(R, R_core, U_max)
u = -u_theta * np.sin(THETA)
v = u_theta * np.cos(THETA)
dx = dy = x[1] - x[0]
omega = vorticity_field(u, v, dx, dy)
# コア内とコア外の平均渦度
mask_in = R[1:-1, 1:-1] < R_core
mask_out = R[1:-1, 1:-1] > 1.5 * R_core
print(f"コア内 平均 omega_z ~ {omega[mask_in].mean():.3f}") # ~ 2 * U_max / R_core
print(f"コア外 平均 omega_z ~ {omega[mask_out].mean():.3f}") # ~ 0コア内では でほぼ一定、コア外ではゼロに近い。同じ丸い流れの中に、自転を分ける鋭い境界がコア半径 にぴたりと描かれます。
シミュレーションを直接動かしてみよう#
下のシミュレーションで実際にパラメータを動かしてみてください。中央に閉じ込められた黄色のトレーサーが強制渦コア、外を漂う青いトレーサーが自由渦領域です。
コア半径 を小さくすると自転が起きる領域が狭まります — 竜巻の「目」が縮むモデルです。 を大きくするとコア渦度 も大きくなります。右上のグラフを見ると、 の区間は直線()、 の区間は双曲線()として滑らかにつながっています。
次に渦を見たら#
自転のある領域とない領域を切り分ける。これが本稿の一行のお土産です。次に風呂の渦・お茶の中の小渦・台風の衛星画像を目にしたら、三つを思い出してみてください。
- 公転と自転は別物。 同じ円形の流線でも渦度はゼロかもしれません。
- ランキン組合せ渦は最も単純な現実モデル。 コア内は剛体回転、外は 。
- ヘルムホルツの定理は「なぜ渦はなかなか消えないのか」への答え。 粘性が小さいほど長生きします。
この三行を持っていれば、次の乱流講義で「渦度輸送方程式」が登場しても戸惑いません。渦度そのものは保存されなくなるだけで、その精神は同じ場所にあります。
役に立ったらシェアしてください。