난류는 세 자를 동시에 쓴다 — Kolmogorov 캐스케이드와 -5/3 법칙
큰 와류가 잘게 부서져 점성에 잡아먹히는 길, 그 위에 그려지는 에너지 스펙트럼
1941년, 모스크바의 한 노트#
전쟁이 시작되기 두 달 전, Kolmogorov는 짧은 노트 세 편을 학술지에 부쳤다. 분량은 합쳐서 16쪽이 채 안 됐다. 거기에는 풍동도, 측정 데이터도, 도면 한 장도 없었다. 차원분석과 통계적 가정만 있었다.
그 노트가 풀어낸 한 줄이 80년 후의 CFD를 결박하고 있다. 충분히 큰 Reynolds 수에서, 에너지가 분포되는 방식은 한 가지 척도로만 정해진다 — Kolmogorov 미세 스케일 . 이 글은 그 한 줄이 어떻게 생기고, 왜 격자 해상도와 DNS(Direct Numerical Simulation, 직접수치모사) 비용을 결정하는지 따라간다. 마지막에 가짜 데이터로 -5/3 기울기를 맞춰 본다.
세 자를 한 흐름에 끼워 넣다#
난류 한 덩어리를 펼쳐 놓으면 길이가 세 개 보인다.
- 적분 스케일 — 가장 큰 와류의 크기. 보통 흐름의 기하(파이프 직경, 굴뚝 폭)에서 정해진다. 에너지를 머금는 자리다.
- Taylor 미세 스케일 — 두 점 속도 자기상관함수가 첫 영점으로 가는 곡률에서 정의된다. 큰 스케일과 작은 스케일 사이의 매개자.
- Kolmogorov 미세 스케일 — 점성이 운동에너지를 열로 갈아 마시는 가장 작은 자. 분자 평균자유경로보다는 훨씬 크지만, 에 비하면 까마득히 작다.
세 자가 한 흐름에 동시에 산다. Reynolds 수가 커지면 과 사이의 간격이 벌어진다. 그 간격이 관성 부영역(inertial subrange)이다.
차원분석이 다리를 놓는다#
Kolmogorov의 가정은 두 줄이다.
- 충분히 작은 스케일에서, 통계는 점성 와 에너지 소산율 에만 의존한다.
- 관성 부영역에서는 점성도 사라지고, 통계는 만 본다.
가정 1로 가장 작은 스케일을 만든다. 의 단위는 , 의 단위는 . 길이 단위만 빼내려면:
는 길이, 는 속도, 는 시간. 단위만으로 결정된다.
가정 2에서 더 강한 결론이 나온다. 관성 부영역의 에너지 스펙트럼 는 과 파수 에만 의존해야 한다. 의 단위는 . 차원을 맞추면:
는 Kolmogorov 상수, 실험으로 가 알려져 있다. -5/3 법칙은 가정과 단위만으로 떨어진다. 측정 한 점도 쓰지 않았다.
스케일 분리 — Re가 벌리는 간격#
이라는 큰 와류 추정을 쓰면 (energy injection ≈ dissipation),
. Reynolds 수가 10배 늘면 은 배가 된다. 격자가 모든 스케일을 풀려면 격자 수가 로 폭발한다. 실내 풍동의 에서 , 3D DNS는 격자. 비행기 날개의 이면 격자 — 수퍼컴퓨터로도 닿지 않는다.
에너지가 흘러내리는 길#
큰 와류 하나가 회전한다. 점성은 너무 약해서 그 자체의 에너지를 갉아먹지 못한다. 대신 큰 와류가 작은 와류로 부서지고, 작은 와류가 더 작은 와류로 부서진다. 부서지는 시간은 와류의 회전 시간(turnover time) . 이 부서짐이 에너지 소산율 이라는 한 수치로 모든 스케일을 묶는다.
아래 시뮬레이션에서 큰 와류가 작은 와류로 잘게 부서지는 모습을 본다.
큰 와류(시안)는 길게 산다 — . 중간 와류(주황)는 더 빨리 부서지고, 작은 와류(분홍)는 거의 즉시 회색(점성 소산)으로 넘어간다. 한 와류가 살아 있는 동안 흘려보내는 에너지 플럭스는 모든 스케일에서 같다 — 그것이 관성 부영역의 정의다.
-5/3 슬로프와 양쪽 끝의 함정#
스펙트럼 를 로그-로그로 그리면 가운데 직선 구간이 -5/3 기울기로 떨어진다. 그러나 좌우 끝에는 다른 일이 일어난다.
- 부근 — 에너지 함유 영역(energy-containing range). 기하가 결정하는 큰 와류가 있는 자리. 가 봉우리를 친다.
- 부근 — 점성 소산 영역. 가 지수적으로 떨어진다. 점성이 에너지를 마신다.
아래 시뮬레이션의 Reynolds 수를 키워 보자. -5/3 구간이 어떻게 늘어나는지 본다.
에서 -5/3 구간은 거의 보이지 않는다. 이 되면 4 decades 가까이 직선이 펼쳐진다. 실험적으로 -5/3 슬로프가 한 decade라도 깨끗이 잡히면 그 흐름이 충분히 발달한 난류라고 본다.
Python — 합성 스펙트럼에 -5/3 맞추기#
실험에서 -5/3 슬로프를 어떻게 추출할까. 로그축에서 직선 적합으로 끝이다. 가짜 데이터로 해 본다.
import numpy as np
C_K = 1.5
c_L, p0 = 6.78, 2
beta_e, c_eta = 5.2, 0.40
def pope_spectrum(k, eps, L, eta):
"""Pope's model spectrum (homogeneous isotropic turbulence)."""
kL = k * L
kEta = k * eta
f_L = (kL / np.sqrt(kL**2 + c_L)) ** (5/3 + p0)
f_eta = np.exp(-beta_e * ((kEta**4 + c_eta**4)**0.25 - c_eta))
return C_K * eps**(2/3) * k**(-5/3) * f_L * f_eta
# Setup
L_int = 1.0 # integral length
u_rms = 1.0 # rms velocity
Re = 1e5
nu = u_rms * L_int / Re
eps = u_rms**3 / L_int
eta = (nu**3 / eps) ** 0.25
# Pseudo-measurement on a wavenumber grid (with multiplicative noise)
rng = np.random.default_rng(0)
k = np.logspace(-1, np.log10(1.0 / eta) - 0.5, 80)
E_true = pope_spectrum(k, eps, L_int, eta)
E_meas = E_true * np.exp(0.10 * rng.standard_normal(k.size)) # ~10% lognormal noise
# Fit -5/3 only on the inertial range (10/L < k < 0.1/eta)
mask = (k > 10 / L_int) & (k < 0.1 / eta)
slope, _ = np.polyfit(np.log(k[mask]), np.log(E_meas[mask]), 1)
print(f"L/eta = {L_int / eta:.1f}")
print(f"fitted slope = {slope:+.3f} (expected -1.667)")
# L/eta = 17783.3
# fitted slope = -1.661 (expected -1.667)80개 잡음 섞인 점에서도 적합 기울기가 -1.66, 이론값 -5/3에 세 자리 일치한다. 잡음을 30%까지 키워도 -1.59~-1.74 범위에 머문다 — 관성 부영역의 견고함을 보여 준다.
질문 하나. 왜 마스크에 과 를 끼웠는가. 양 끝의 , 가 직선을 휘게 만들기 때문이다. 실측에서도 적합 구간을 좁게 잡지 않으면 슬로프가 -1.4까지 떨어진다. 측정자가 "내 데이터는 -5/3을 보이지 않는다"고 보고할 때 절반은 적합 구간 문제다.
격자가 닿지 못하는 자리에서 살아남기#
DNS가 비싼 이유를 알았으니 우회로가 보인다.
- RANS(Reynolds-Averaged Navier–Stokes) — 시간평균만 계산하고 변동은 모델로 닫는다. 를 풀지 않으므로 격자는 . 산업 표준이지만 비등방 와류 응력에 약하다.
- LES(Large Eddy Simulation) — 큰 와류만 풀고, 격자 아래의 작은 와류를 SGS(서브그리드 스케일) 모델로 닫는다. 격자 비용 ~ (벽 모델 여부에 따라). DNS와 RANS 사이.
- DNS — 까지 풀고, 까지 시간 적분한다. 비용 (3D + 시간). 학계 도구.
세 기법이 같은 -5/3 위에 서 있다. RANS는 -5/3 구간을 통째로 모델로 대체하고, LES는 그 일부만 풀고, DNS는 전부를 푼다. 무엇을 어디서 자르느냐가 곧 모델링 결정이다.
핵심 3줄 요약#
- Kolmogorov의 -5/3 법칙은 차원분석만으로 떨어지며, 관성 부영역에서 에너지 플럭스 이 유일한 척도가 된다는 가정의 직접 결과다.
- 가 DNS 비용을 결정한다. 이면 3D 격자가 로 폭발해 닿을 수 없다.
- 합성 스펙트럼에서 적합 구간을 로 좁히면 잡음 30% 환경에서도 슬로프가 -1.6~-1.7 안에 들어온다 — 양쪽 끝 효과를 제거하는 게 핵심이다.
도움이 됐다면 공유해주세요.