鍋底から始まったカオス — レイリー・ベナール対流とローレンツ方程式
浮力が粘性に勝つ瞬間、対流ロールはどうカオスになるのか
1900年、フランスの物理学者アンリ・ベナールは薄い油の層を下から温めていて、奇妙なものを目にしました。静止していた液体が、ある瞬間に自ら六角形のハニカム模様へと割れたのです。誰もかき混ぜていないのに、液体が規則的に動き始めました。16年後にレイリー卿がその閾値を一つの数で説明し、さらに47年後、エドワード・ローレンツは同じ方程式の中にカオスを見つけました。
この記事では、鍋を下から温めたときに起きることを三段階で追います。浮力と粘性・拡散の綱引きを測るレイリー数(浮力と粘性・拡散の比)、対流が点火する閾値である臨界レイリー数1708、そしてこの対流を三つの方程式へ縮めたときに飛び出すローレンツのカオスまで。Python でローレンツ系を積分し、対流の三つの顔を直接確かめます。
静止した液体はなぜ動き出すのか
下が熱く上が冷たい液体層を思い浮かべてください。温められた下の液体は膨張して軽くなります。軽いものが下、重いものが上。逆さまの密度配置です。浮力はこの配置をひっくり返そうとします。
ところが液体はすぐには噴き上がりません。二つのものが浮力を引き止めます。粘性は流れを妨げます。熱拡散は、上昇しようとする熱い塊の温度を周囲へ逃がし、浮力を殺します。どちらも対流を抑えるブレーキです。
結局、対流が点火するかは綱引きで決まります。浮力が勝てば液体は反転し、循環(対流ロール)が生まれます。ブレーキが勝てば液体は静止したまま、熱は伝導だけで運ばれます。
レイリー数 — ひっくり返す力と引き止める力の比
この綱引きを一つの無次元数へ圧縮したものがレイリー数です。
は重力加速度、 は熱膨張係数(温度が上がると体積が増える度合い)、 は上下の温度差、 は液体層の厚さ、 は動粘性係数、 は熱拡散係数です。分子はひっくり返そうとする浮力、分母は引き止める粘性と拡散です。
肝心なのは です。層が厚くなるとレイリー数は三乗で大きくなります。薄い油膜はなかなか対流しませんが、深い海や地球のマントルはごく小さな温度差でも対流します。鍋を少し深くするだけで対流がずっと点火しやすくなる理由です。
臨界レイリー数1708 — 対流が点火する閾値#
レイリーの線形安定性解析は驚くほど綺麗な答えを与えます。上下が自由な理想境界では対流の始まる閾値は 。実験で一般的な剛体壁境界では です。
なら、どんな小さな揺らぎも粘性と拡散に食われて消えます。液体は静止状態へ戻ります。 を超えた瞬間、特定の波長の揺らぎが自ら育ち始めます。これが対流ロールの種です。
下のシミュレーションで直接操作してみましょう。レイリー数を上げると、対流が点火する閾値を目で確認できます。
Ra を1708より下に置くと、粒子はほとんど止まったままで温度は上下に滑らかな層を作ります(伝導)。閾値を超えると互いに逆回りのロールが現れ、熱い柱が上がり冷たい柱が下がります。Ra をさらに上げるほどロールの回転は速くなります。
対流ロールの形とヌッセルト数
閾値を超えた直後の対流は、特定の波長のロールとして現れます。臨界波数は 、つまりロール一つの幅は層の厚さとほぼ同じです。ロールはおおよそ正方形です。この形は偶然ではなく、最も育ちやすい(最も低い Ra で点火する)モードがその波長を持つからです。
対流が熱をどれだけよく運ぶかは**ヌッセルト数(全熱伝達と純伝導熱伝達の比)**で測ります。
は実際の熱流束、 は対流がないときの伝導熱流束です。伝導だけなら 。対流が強まると実験的には ほどに大きくなります。対流は単に少し多く熱を運ぶのではなく、伝導では不可能な規模で熱を汲み出します。
ローレンツが三つの方程式へ縮めた対流
1963年、気象学者エドワード・ローレンツはこの対流を極端に単純化しました。温度場と流れ場を最も粗いいくつかのモードだけ残して切り落とすと(ガラーキン切断)、偏微分方程式はわずか三つの常微分方程式へ縮みます。
は対流ロールの循環の強さ、 は上昇・下降する柱の温度差、 は鉛直温度分布の歪みです。 はプラントル数(運動量拡散と熱拡散の比)、 は幾何定数、そして はまさに ——ずっと語ってきたレイリー比です。
を上げることは鍋をより強く温めることと同じです。 ならすべての軌道は原点へ向かいます(伝導)。 なら原点から外れた固定点へ収束します(定常対流ロール)。 を超えると軌道はどの固定点にも落ち着かず、二つの翼の間を永遠に行き来します。カオスです。
Python — 対流の三つの顔を積分する#
ローレンツ系を4次ルンゲ・クッタで積分し、 に応じて対流がどう変わるかを見ます。
import numpy as np
SIGMA, BETA = 10.0, 8.0 / 3.0
def lorenz_deriv(state, rho):
x, y, z = state
return np.array([
SIGMA * (y - x), # ロール循環の強さの変化
x * (rho - z) - y, # 上昇・下降の温度差の変化
x * y - BETA * z, # 鉛直温度歪みの変化
])
def integrate_rk4(rho, dt=0.01, n=20000, s0=(0.6, 0.4, 0.2)):
s = np.array(s0, dtype=float)
traj = np.empty((n, 3))
for i in range(n):
k1 = lorenz_deriv(s, rho)
k2 = lorenz_deriv(s + 0.5 * dt * k1, rho)
k3 = lorenz_deriv(s + 0.5 * dt * k2, rho)
k4 = lorenz_deriv(s + dt * k3, rho)
s = s + (dt / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4)
traj[i] = s
return traj
def convection_regime(rho):
tail = integrate_rk4(rho)[-4000:] # 過渡を捨てた尾の部分
spread = tail[:, 0].max() - tail[:, 0].min()
if abs(tail[-1, 0]) < 1e-3 and rho < 1.0:
return "conduction" # 原点へ収束
if spread < 0.1:
return "steady roll" # 固定点へ収束
return "chaos" # 二つの翼の間で振動
for rho in (0.8, 15.0, 28.0):
print(f"rho={rho:5.1f} -> {convection_regime(rho)}")出力は次のとおりです。
rho= 0.8 -> conduction
rho= 15.0 -> steady roll
rho= 28.0 -> chaos同じ方程式が、温めの強さ一つで静止・定常対流・カオスを行き来します。下のシミュレーションで直接操作してみましょう。
を24.74より下に置くと、軌道は黄色い固定点(定常対流ロール)の一方へ吸い込まれます。閾値を超えると、あの有名な蝶の翼が現れます。reset を押してほんの少し違う初期点を与えると、最初は重なっていた二つの軌道がやがて完全に分かれます——バタフライ効果です。
覚えておくこと
- レイリー数はひっくり返す浮力と引き止める粘性・拡散の比です。 に比例し、深い層ほど対流しやすくなります。
- 1708を超えると、静止した液体が自ら対流ロールへ組織化します。対流は点火・消灯する閾値現象です。
- ローレンツの三方程式はこの対流の縮小版で、温めの強さ を上げると定常対流はカオスへ崩れます。天気予報の限界は、まさにこの鍋底から始まりました。
役に立ったらシェアしてください。