냄비 바닥에서 시작된 카오스 — Rayleigh–Bénard 대류와 Lorenz 방정식
두께를 두 배로 하면 Rayleigh 수는 8배다. 그 8배는 ρ=8이라, 카오스 문턱 24.74에는 아직 닿지 않는다.
1900년, 앙리 베나르(Henri Bénard)는 얇은 기름층을 바닥부터 데우다 액체가 스스로 육각 벌집으로 갈라지는 것을 봤다. 젓지 않았다. 16년 뒤 레일리 경이 그 문턱을 숫자 하나로 적었고, 47년 뒤 로렌츠는 같은 계에서 카오스를 꺼냈다.
문턱은 Rayleigh 수 1708이다. 그 아래는 전도, 그 위는 롤이다. 롤을 세 식으로 자르면 가열 파라미터 ρ가 남고, 24.74를 넘기면 고정점이 궤적을 붙잡지 못한다.
Ra 슬라이더를 1708 아래로 내리면 입자가 거의 멈추고, 그 위로 밀면 서로 반대로 도는 롤이 켜진다.
1708 아래의 온도는 수평층으로만 쌓인다. 넘긴 뒤 슬라이더를 더 밀면 같은 롤이 더 빨리 돈다.
정지한 액체는 왜 움직이기 시작하나#
아래가 뜨겁고 위가 찬 층. 데워진 아래쪽은 팽창해 가벼워진다. 가벼운 것이 아래, 무거운 것이 위. 부력은 이 배치를 뒤집으려 한다.
바로 솟지는 않는다. 점성은 흐름을 붙잡고, 열확산은 올라가는 덩어리의 열을 주변에 흘려 부력을 죽인다. 둘 다 브레이크다.
부력이 이기면 순환, 즉 대류 롤이 생긴다. 브레이크가 이기면 액체는 그대로고 열은 전도만 탄다. 부력이 통로에서 새면 롤까지 가지도 못한다. 굴뚝을 1 m 낮춰 드래프트 7 Pa이 사라진 경우가 그 예산이다.
Rayleigh 수 — 뒤엎으려는 힘과 붙잡는 힘의 비#
힘겨루기를 무차원수 하나로 누르면 Rayleigh 수다.
는 중력 가속도, 는 열팽창 계수(온도가 오를 때 부피가 늘어나는 정도), 는 위아래 온도차, 은 액체층 두께, 는 동점성 계수, 는 열확산 계수다. 분자는 뒤엎으려는 부력, 분모는 붙잡는 점성과 확산이다.
큰 자리는 이다. 층이 두꺼워지면 Rayleigh 수는 세제곱으로 커진다. 얇은 기름막은 좀처럼 대류하지 않는다. 깊은 바다나 맨틀은 아주 작은 온도차에도 움직인다. 냄비를 조금만 깊게 해도 문턱이 성큼 가까워지는 이유다.
임계 Rayleigh 수 1708 — 대류가 켜지는 문턱#
레일리의 선형 안정성 분석은 경계 조건마다 숫자가 다르다. 위아래가 자유로운 이상적 경계에서 문턱은 . 실험에서 흔한 강체 벽에서는 이다.
이면 작은 흔들림은 점성과 확산에 먹혀 사라진다. 액체는 정지로 돌아간다. 를 넘는 순간, 특정 파장의 흔들림이 스스로 자란다. 대류 롤의 씨앗이다.
657.5와 1708을 나누면 약 2.6이다. 같은 유체, 같은 두께라면 강체 벽은 온도차를 약 2.6배 더 요구한다. 두께로 메우면 세제곱근이라, 배면 된다. 뚜껑을 자유 미끄럼에서 강체로 바꾸는 대가가 이 정도다.
대류 롤의 모양과 Nusselt 수#
문턱 직후의 롤은 특정 파장을 고른다. 임계 파수는 이다. 한 파장의 길이는 라, 로 나누면 약 이다. 맞붙은 롤 두 개가 그 파장이고, 롤 하나의 폭은 절반인 근처다. 정사각형이라는 말은 이 나눗셈이다. 가장 낮은 Ra에서 켜지는 모드가 그 파장을 갖는다.
열이 얼마나 더 나가는지는 **Nusselt 수(전체 열전달/순수 전도 열전달 비)**다.
은 실제 열유속, 은 대류가 없을 때의 전도 열유속이다. 전도만 있으면 . 대류가 세지면 실험적으로 정도다. 이 지수만 읽으면 Ra가 8배가 될 때 Nu는 2배다. 문턱 직후는 해당하지 않는다. 거기서는 Nu가 아직 1 근처다.
Lorenz가 세 방정식으로 줄인 대류#
1963년 에드워드 로렌츠는 온도장과 유동장을 가장 굵은 모드만 남기고 잘랐다. Galerkin 절단이다. 편미분 방정식이 상미분 세 개로 줄어든다.
는 대류 롤의 순환 세기, 는 상승·하강 기둥의 온도차, 는 수직 온도 분포의 뒤틀림이다. 는 Prandtl 수(운동량 확산/열 확산 비), 는 기하 상수, 는 다.
를 올리는 것은 냄비를 더 세게 데우는 것이다. 이면 궤적은 원점으로 간다. 전도다. 이면 원점이 아닌 고정점으로 모인다. 정상 롤이다. 를 넘으면 어느 고정점에도 안착하지 않고 두 날개 사이를 돈다. 카오스다.
정상점은 세 도함수를 0으로 둔 자리다. 이면 다. 이면 이다. 남은 식은 이다. 코드의 , 이면 , 이다. 가운데 출력 steady roll은 꼬리 4000점에서 의 폭이 0.1보다 좁다는 뜻이다. 이면 , 라 두 날개가 그 자리에 있고, 출력 chaos는 그 꼬리가 0.1 문을 통과하지 못했다는 뜻이다.
Python — 대류의 세 얼굴을 적분한다#
4차 Runge–Kutta다. , , 시간 간격 0.01, 20000걸음. 꼬리는 마지막 4000점이다.
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만 넘기면 끝났다고 적으면 실패한다#
두께를 두 배로 하면 때문에 Ra는 8배다. 막 1708에 걸린 층을 그렇게 깊게 하면 이다. 로렌츠의 정상 롤 구간은 1과 24.74 사이다. 8은 그 안이다. 카오스까지 가려면 ρ를 24.74까지 올려야 하고, 같은 온도차에서 두께는 배다. 문턱 직후의 롤을 카오스라고 적으면 이 간격만큼 틀린다.
그 간격은 를 상수로 둔 채 만 키워 만든다. 온도차가 30 K를 넘는 순간, 이 상수가 먼저 거짓이 되지 않을까. 그 온도에서 Boussinesq가 무너지는 쪽을 열면, 1708과 24.74 중 어느 쪽이 먼저 숫자를 잃는지가 보인다.
관련
도움이 됐다면 공유해주세요.