始于锅底的混沌 — 瑞利-贝纳对流与洛伦兹方程
浮力战胜黏性的那一刻,对流卷如何变成混沌
1900年,法国物理学家亨利·贝纳从下方加热一层薄油时看到了奇怪的现象。原本静止的液体在某一刻自行裂成六角形的蜂窝图案。没有人搅动它,液体却开始规则地运动。十六年后瑞利勋爵用一个数解释了这道门槛,又过了四十七年,爱德华·洛伦兹在同一组方程里发现了混沌。
本文分三步追踪从锅底加热时发生的事:衡量浮力与黏性、扩散拉锯的瑞利数(浮力与黏性扩散之比),对流点燃的门槛即临界瑞利数1708,以及把这种对流缩成三个方程后跳出来的洛伦兹混沌。我们用 Python 积分洛伦兹系统,直接看清对流的三副面孔。
静止的液体为何开始运动
设想一层下热上冷的液体。被加热的下层液体膨胀而变轻。轻的在下,重的在上——这是倒置的密度排布。浮力想要把它翻过来。
然而液体不会立刻涌起。有两样东西拽住浮力。黏性阻碍流动。热扩散把上升热团的温度泄漏给周围,杀死抬起它的浮力。两者都是抑制对流的刹车。
对流是否点燃最终由拉锯决定。浮力获胜,液体便翻转,生成环流(对流卷)。刹车获胜,液体保持静止,热只靠传导传递。
瑞利数 — 翻转之力与拽住之力之比
把这场拉锯压缩成一个无量纲数,就是瑞利数。
其中 是重力加速度, 是热膨胀系数(温度升高时体积增大的程度), 是上下温差, 是液层厚度, 是运动黏度, 是热扩散率。分子是要翻转的浮力,分母是拽住的黏性与扩散。
关键在 。液层变厚,瑞利数按立方增大。薄油膜很难对流,而深海或地球地幔在极小的温差下就会对流。这就是把锅稍加深,对流便容易得多的原因。
临界瑞利数1708 — 对流点燃的门槛#
瑞利的线性稳定性分析给出惊人简洁的答案。在上下自由的理想边界下,对流开始的门槛是 。在实验中常见的刚性壁边界下,。
当 时,任何微小扰动都会被黏性与扩散吞掉而消失。液体回到静止。一旦越过 ,某个特定波长的扰动便开始自行生长。这就是对流卷的种子。
在下面的模拟里亲手操作一下。提高瑞利数,就能看到对流点燃的门槛。
把 Ra 放在1708以下,粒子几乎不动,温度形成平滑的水平层(传导)。越过门槛,出现相互反向旋转的卷,热柱上升、冷柱下沉。Ra 越高,卷旋转得越快。
对流卷的形状与努塞尔数
刚越过门槛的对流以特定波长的卷出现。临界波数为 ,即一个卷的宽度与层厚相近。卷大致呈正方形。这个形状并非偶然:最容易生长(在最低 Ra 点燃)的模式恰好具有那个波长。
对流搬运热的能力用**努塞尔数(总传热与纯传导传热之比)**衡量。
其中 是实际热流密度, 是无对流时的传导热流密度。只有传导时 。对流增强时,实验给出约 。对流不只是多搬一点热,而是以传导永远达不到的规模把热舀走。
洛伦兹缩成三个方程的对流
1963年,气象学家爱德华·洛伦兹把这种对流极度简化。只保留温度场和流场最粗的几个模态(伽辽金截断),偏微分方程就坍缩成仅仅三个常微分方程。
其中 是对流卷的环流强度, 是上升与下降柱之间的温差, 是竖直温度分布的扭曲。 是普朗特数(动量扩散与热扩散之比), 是几何常数,而 正是 ——我们一直在讲的那个瑞利比。
提高 等同于把锅加热得更猛。 时所有轨道都奔向原点(传导)。 时收敛到偏离原点的固定点(定常对流卷)。越过 ,轨道再也不落在任何固定点上,而是永远在两片翼之间往返。这就是混沌。
Python — 积分对流的三副面孔#
我们用四阶龙格-库塔积分洛伦兹系统,观察对流随 如何变化。
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,静止的液体便自行组织成对流卷。对流是一种开关式的门槛现象。
- 洛伦兹的三方程是这种对流的缩影,把加热 调高,定常对流便坍缩为混沌。天气预报的极限,正始于这口锅的锅底。
如果对您有帮助,请分享。