Skip to content
cfd-lab:~/zh/posts/2026-07-09-rayleigh-bena…online
NOTE #099DAY THU 유체역학DATE 2026.07.09READ 4 min readWORDS 1,795#Fluid-Mechanics#Rayleigh-Benard#Natural-Convection#Lorenz-System#유동현상

始于锅底的混沌 — 瑞利-贝纳对流与洛伦兹方程

浮力战胜黏性的那一刻,对流卷如何变成混沌

1900年,法国物理学家亨利·贝纳从下方加热一层薄油时看到了奇怪的现象。原本静止的液体在某一刻自行裂成六角形的蜂窝图案。没有人搅动它,液体却开始规则地运动。十六年后瑞利勋爵用一个数解释了这道门槛,又过了四十七年,爱德华·洛伦兹在同一组方程里发现了混沌。

本文分三步追踪从锅底加热时发生的事:衡量浮力与黏性、扩散拉锯的瑞利数(浮力与黏性扩散之比),对流点燃的门槛即临界瑞利数1708,以及把这种对流缩成三个方程后跳出来的洛伦兹混沌。我们用 Python 积分洛伦兹系统,直接看清对流的三副面孔。

静止的液体为何开始运动

设想一层下热上冷的液体。被加热的下层液体膨胀而变轻。轻的在下,重的在上——这是倒置的密度排布。浮力想要把它翻过来。

然而液体不会立刻涌起。有两样东西拽住浮力。黏性阻碍流动。热扩散把上升热团的温度泄漏给周围,杀死抬起它的浮力。两者都是抑制对流的刹车。

对流是否点燃最终由拉锯决定。浮力获胜,液体便翻转,生成环流(对流卷)。刹车获胜,液体保持静止,热只靠传导传递。

瑞利数 — 翻转之力与拽住之力之比

把这场拉锯压缩成一个无量纲数,就是瑞利数。

Ra=gβΔTL3να\mathrm{Ra} = \frac{g \beta \, \Delta T \, L^3}{\nu \, \alpha}

其中 gg 是重力加速度,β\beta 是热膨胀系数(温度升高时体积增大的程度),ΔT\Delta T 是上下温差,LL 是液层厚度,ν\nu 是运动黏度,α\alpha 是热扩散率。分子是要翻转的浮力,分母是拽住的黏性与扩散。

关键在 L3L^3。液层变厚,瑞利数按立方增大。薄油膜很难对流,而深海或地球地幔在极小的温差下就会对流。这就是把锅稍加深,对流便容易得多的原因。

临界瑞利数1708 — 对流点燃的门槛#

瑞利的线性稳定性分析给出惊人简洁的答案。在上下自由的理想边界下,对流开始的门槛是 Rac=27π4/4657.5\mathrm{Ra}_c = 27\pi^4/4 \approx 657.5。在实验中常见的刚性壁边界下,Rac1708\mathrm{Ra}_c \approx 1708

Ra<Rac\mathrm{Ra} < \mathrm{Ra}_c 时,任何微小扰动都会被黏性与扩散吞掉而消失。液体回到静止。一旦越过 Ra>Rac\mathrm{Ra} > \mathrm{Ra}_c,某个特定波长的扰动便开始自行生长。这就是对流卷的种子。

在下面的模拟里亲手操作一下。提高瑞利数,就能看到对流点燃的门槛。

Rac = 1708전도 (still) — conduction

把 Ra 放在1708以下,粒子几乎不动,温度形成平滑的水平层(传导)。越过门槛,出现相互反向旋转的卷,热柱上升、冷柱下沉。Ra 越高,卷旋转得越快。

对流卷的形状与努塞尔数

刚越过门槛的对流以特定波长的卷出现。临界波数为 kc3.117/Lk_c \approx 3.117/L,即一个卷的宽度与层厚相近。卷大致呈正方形。这个形状并非偶然:最容易生长(在最低 Ra 点燃)的模式恰好具有那个波长。

对流搬运热的能力用**努塞尔数(总传热与纯传导传热之比)**衡量。

Nu=qtotalqconduction\mathrm{Nu} = \frac{q_\text{total}}{q_\text{conduction}}

其中 qtotalq_\text{total} 是实际热流密度,qconductionq_\text{conduction} 是无对流时的传导热流密度。只有传导时 Nu=1\mathrm{Nu}=1。对流增强时,实验给出约 NuRa1/3\mathrm{Nu} \sim \mathrm{Ra}^{1/3}。对流不只是多搬一点热,而是以传导永远达不到的规模把热舀走。

洛伦兹缩成三个方程的对流

1963年,气象学家爱德华·洛伦兹把这种对流极度简化。只保留温度场和流场最粗的几个模态(伽辽金截断),偏微分方程就坍缩成仅仅三个常微分方程。

x˙=σ(yx)y˙=x(ρz)yz˙=xyβz\begin{aligned} \dot{x} &= \sigma (y - x) \\ \dot{y} &= x(\rho - z) - y \\ \dot{z} &= xy - \beta z \end{aligned}

其中 xx 是对流卷的环流强度,yy 是上升与下降柱之间的温差,zz 是竖直温度分布的扭曲。σ\sigma 是普朗特数(动量扩散与热扩散之比),β\beta 是几何常数,而 ρ\rho 正是 Ra/Rac\mathrm{Ra}/\mathrm{Ra}_c——我们一直在讲的那个瑞利比。

提高 ρ\rho 等同于把锅加热得更猛。ρ<1\rho<1 时所有轨道都奔向原点(传导)。1<ρ<24.741<\rho<24.74 时收敛到偏离原点的固定点(定常对流卷)。越过 ρ>24.74\rho>24.74,轨道再也不落在任何固定点上,而是永远在两片翼之间往返。这就是混沌。

Python — 积分对流的三副面孔#

我们用四阶龙格-库塔积分洛伦兹系统,观察对流随 ρ\rho 如何变化。

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

同一组方程仅凭一个加热旋钮,就在静止、定常对流与混沌之间切换。在下面的模拟里亲手操作一下。

카오스 — 나비 날개 (chaotic convection)
가로축 x = 롤 순환 세기, 세로축 z = 수직 온도 왜곡. 노란 점 = 고정점 C±.

ρ\rho 放在24.74以下,轨道会被吸入黄色固定点(定常对流卷)之一。越过门槛,那著名的蝴蝶翼便出现。按 reset 给一个略微不同的初始点,起初重叠的两条轨道很快就完全分开——这就是蝴蝶效应。

值得记住的

  • 瑞利数是翻转浮力与拽住的黏性、扩散之比。它按 L3L^3 缩放,因此越深的层越容易对流。
  • 越过1708,静止的液体便自行组织成对流卷。对流是一种开关式的门槛现象。
  • 洛伦兹的三方程是这种对流的缩影,把加热 ρ\rho 调高,定常对流便坍缩为混沌。天气预报的极限,正始于这口锅的锅底。

如果对您有帮助,请分享。