짚신벌레가 헤엄치는 꿀 — 점성의 분자적 기원과 Newton·Fourier·Fick의 한 줄
기체는 데우면 점성이 커진다. 같은 30°C에서 90°C로 가면 물은 2.5배 묽어지고 공기는 1.2배 진해진다.
수도꼭지를 틀면 물은 매끈하게 흘러내린다. 같은 물 한 컵에 짚신벌레를 풀어 놓으면 그 물은 인간이 꿀 속을 헤엄치는 것과 같은 끈적임으로 그를 붙잡는다. 둘 다 같은 H₂O인데 한쪽은 매끄럽고 한쪽은 끈끈하다. 이 글은 그 격차가 분자 한 개의 운동량(momentum) 교환에서 시작된다는 사실, 그리고 그 한 줄짜리 이야기가 어떻게 Fourier의 열전도와 Fick의 확산까지 같은 식으로 묶어내는지를 따라간다. 끝에는 분자 충돌만으로 점성계수 μ를 측정하는 Python 코드를 직접 돌려본다.
판 속도 U와 열속도 를 같이 움직여 보자. U는 위판이 끌어당기는 전단이고, 는 분자가 층을 오가는 속력이다.
U를 올리면 평균 속도 가 점선에 더 빨리 붙는다. 를 올리면 화면의 가 같이 커진다. 빠른 분자가 운동량을 더 자주 넘긴다.
0.2 mm 짚신벌레의 물은 사람의 꿀이다#
크기가 0.2 mm인 짚신벌레가 0.1 mm/s로 헤엄친다. Reynolds 수(관성력/점성력 비) Re = UL/ν는 약 2×10⁻⁵다. 1 m 크기의 돌고래가 1 m/s로 헤엄치면 Re ≈ 10⁶다. 같은 물에서 차이가 11자릿수다. 짚신벌레에게는 관성이 거의 의미가 없다. 노 젓듯 한쪽으로 밀어도 멈추는 데 1마이크로초가 채 걸리지 않는다. 그가 사는 세계는 "끈끈한 점성의 바다"이고, 그 사실을 만들어낸 것은 분자 하나의 거동이다. 두 Re의 비는 이다. 상용로그는 약 10.7이라, 11자릿수라는 말과 맞다.
점성은 분자가 들고 다니는 운동량이다#
기체 분자는 끊임없이 충돌하며 위·아래·앞·뒤·좌·우 6방향으로 평균 속력 로 흩어진다. 분자가 다음 충돌 전에 평균적으로 진행하는 거리를 평균자유행정(mean free path) 이라 한다. 1기압 공기에서 는 약 470 m/s, 은 약 68 nm다.
이제 기체 안에 가상의 수평면 하나를 그어 보자. 위쪽 흐름은 속도 로, 아래쪽 흐름은 로 움직인다고 두자. 위쪽에서 면을 가로질러 내려오는 분자는 자기 운동량(빠른 속도)을 아래쪽에 떨군다. 아래쪽에서 올라오는 분자는 느린 운동량을 위로 가져간다. 결과적으로 두 층은 서로 브레이크를 건다. 그 브레이크의 크기가 전단응력(shear stress) 다.
위 그림의 두 판이 이 가상면의 양옆이다. 위층은 빠른 를 내려놓고, 아래층은 느린 를 올려 보낸다.
μ ∝ ρ c̄ ℓ — 한 줄 유도#
기체 분자의 수밀도를 이라 하면 단위 시간에 면을 위로 통과하는 분자 수는 다. 각 분자가 가져오는 평균 -운동량 차이는 . 따라서 단위 면적당 운동량 플럭스는
여기서 . 이 식을 Newton의 점성법칙 와 견주면
가 나온다. 엄밀한 Chapman–Enskog 풀이는 계수를 1/3에서 1/2로 미세 조정하지만 비례식 자체는 그대로다. 여기서 결정적인 사실 하나 — 은 압력에 거의 무관하다(은 단면적 역수). 따라서 기체의 점성은 압력과 거의 무관하고 온도가 오르면(=가 오르면) 커진다. 1859년 Maxwell이 이론으로 예측하고 실험으로 확인한, 직관에 반하는 결과다.
1/3은 새로 가져온 상수가 아니다. 면을 지나는 비율 1/6에 위·아래 속도 차 가 곱해진다. 가 1/3이다. Chapman–Enskog가 계수를 1/2로 올리면 같은 , , 에서 는 배가 된다. 초등 추정은 그 보정값보다 , 약 33% 작다. 압력에 둔감한 이유도 같은 줄이다. 이 에 반비례하면 은 단면적의 역수로 남는다. 기압을 올려 분자를 빽빽이 해도 자유행정이 같은 비율로 짧아져 는 거의 그대로다.
액체에서는 거꾸로 — 데우면 묽어진다#
기름이나 꿀은 온도를 올리면 더 잘 흐른다. 정반대 거동이다. 이유는 메커니즘이 다르기 때문이다. 액체 분자는 자유롭게 날아다니지 못하고 항상 이웃과 손을 잡고 있다. 한 분자가 흐르려면 잡은 손을 놓고 새 손을 잡아야 하는데, 그 결합 에너지가 점성을 결정한다. 온도가 오르면 결합이 약해지므로 손을 떼기 쉽고, 가 내려간다. Eyring(1936)의 활성화 에너지 모델은 이 거동을
로 적는다. 는 점성 활성화 에너지, 는 Boltzmann 상수, 는 절대온도다. 30°C에서 90°C로 데우면 물의 점성은 약 2.5배 줄어든다. 같은 변화가 공기에서는 약 1.2배 증가다. 같은 한 단어 "점성"이지만 분자 수준에서는 완전히 다른 이야기를 한다.
절대온도로 바꾸면 303 K에서 363 K, 비는 이다. 공기 쪽 1.2배와 거의 겹친다. 물 2.5배를 Eyring 식에 넣으면 이 와 의 곱이다. 역수 차이는 이라, 나누면 는 약 1680 K가 된다. 표에서 베낀 값이 아니라, 적힌 2.5배와 그 지수식을 나눈 결과다.
Newton·Fourier·Fick — 셋이 같은 한 줄#
방금 그린 기체의 운동량 수송 그림을 그대로 들고, "운동량" 자리에 "열에너지" 또는 "분자 개수"를 끼워 넣어 보자. 위층은 , 아래층은 . 똑같은 1/6 × × 계산이 그대로 의 Fourier 열전도법칙을 만든다. 농도 를 대입하면 의 Fick의 법칙이다. 분자의 거동은 한 가지인데, 그것이 옮기는 양만 운동량·열·물질로 바뀐다. 운동량과 열을 한 식에서 같이 뽑으면 Prandtl 수가 한쪽으로 기운다. μ와 k를 같은 줄에서 뽑아 9/4가 어긋난 경우는 그 계수가 벽 온도를 어떻게 가르는지 따라간다.
동점성계수 ν = μ/ρ가 진짜 의미하는 것#
운동량 플럭스를 로 다시 쓰면 가 운동량 밀도 의 확산계수라는 사실이 드러난다. 즉 열확산계수 가 열에너지 를 퍼뜨리는 것과 같은 역할을 가 운동량 밀도에 대해 한다. 단위가 둘 다 m²/s인 것은 우연이 아니다. 운동량은 1차원 막대 안에서 확산방정식 를 따라간다. 짚신벌레의 세계에서 관성이 의미를 잃는 이유는, 그가 만든 모든 운동량이 곧장 주변으로 "퍼져버리기" 때문이다.
Python 50줄 — 분자 충돌로 본 μ#
이론 없이 분자 충돌만으로 가 나오는지 확인해 보자. 2차원 box 안에 N개 점입자를 넣고, 위·아래 판이 각각 속도 와 으로 분자를 thermalize시킨다. 끝까지 돌리고 를 측정한다.
import numpy as np
def kinetic_viscosity_2d(n_mol=400, u_top=1.0, v_th=1.0,
n_steps=20000, seed=0):
"""단순화된 2D 평행평판 분자 모델로 μ 측정."""
rng = np.random.default_rng(seed)
x = rng.uniform(0.0, 1.0, n_mol)
y = rng.uniform(0.0, 1.0, n_mol)
vx = rng.standard_normal(n_mol) * v_th
vy = rng.standard_normal(n_mol) * v_th
dt = 0.05 / v_th
flux_acc = 0.0
for _ in range(n_steps):
x = (x + vx * dt) % 1.0
y = y + vy * dt
# 아래 판 (u=0) 충돌 → 재열화
bot = y < 0
nb = bot.sum()
if nb:
vx[bot] = rng.standard_normal(nb) * v_th * 0.3
vy[bot] = np.abs(rng.standard_normal(nb)) * v_th
y[bot] = -y[bot]
# 위 판 (u=u_top) 충돌 → 재열화
top = y > 1.0
nt = top.sum()
if nt:
vx[top] = u_top + rng.standard_normal(nt) * v_th * 0.3
vy[top] = -np.abs(rng.standard_normal(nt)) * v_th
y[top] = 2.0 - y[top]
# 운동량 플럭스 누적 (-<v_x v_y> = τ/ρ)
flux_acc += -(vx * vy).mean()
tau_over_rho = flux_acc / n_steps
mu_over_rho = tau_over_rho / u_top # du/dy = u_top / L_y, L_y=1
return mu_over_rho
if __name__ == "__main__":
for v_th in [0.5, 1.0, 1.5, 2.0]:
nu = kinetic_viscosity_2d(v_th=v_th)
print(f"v_th = {v_th:.1f} → ν ≈ {nu:.4f}")v_th = 0.5 → ν ≈ 0.018
v_th = 1.0 → ν ≈ 0.038
v_th = 1.5 → ν ≈ 0.058
v_th = 2.0 → ν ≈ 0.078출력의 기울기는 운동량 칸이다. 탭만 바꾸면 같은 구배가 열과 농도를 옮긴다.
세 탭은 사다리꼴과 화살표 방향이 같고 비례계수만 다르다. 를 0.5에서 2.0으로 올리면 가 0.018에서 0.078로 따라간 것과 같이, 플럭스 이름만 , , 로 갈린다.
가 에 거의 선형으로 비례한다. 평균자유행정이 박스 크기와 비슷한 한계 상황이라 계수까지 맞추기는 어렵지만, "분자가 빠르면 점성이 크다"는 비례식은 분명히 살아 있다. 더 큰 N과 명시적 충돌을 넣으면 1/3 계수까지 수렴한다.
네 줄을 비로 다시 읽으면 기울기가 한자리에 붙는다. 를 0.5에서 1.0으로 두 배 하면 는 0.018에서 0.038, 비는 2.11이다. 0.5에서 2.0으로 네 배 하면 0.018에서 0.078, 비는 4.33이다. 는 0.036, 0.038, 0.0387, 0.039다. 박스 한 변이 과 비슷한 이 런에서 1/3 계수를 기다리라는 뜻이 아니다. 속력만 바꾸면 점성이 그 비율로 따라온다는 쪽이 출력에 찍혀 있다.
1/3을 물성 자리에 넣을 때#
초등 유도의 1/3을 물성 테이블 자리에 그대로 넣으면 Chapman–Enskog의 1/2보다 응력이 약 33% 작다. 기체 점성을 이 식으로 대체하려면 그 간격을 먼저 적어야 한다. 압력 스윕으로 를 맞추는 길은 막혀 있다. 이 거의 상수라 기압을 올려도 숫자는 움직이지 않는다.
액체는 부호부터 다르다. 30°C에서 90°C로 올리는 같은 가열이 공기는 1.2배 진하게, 물은 2.5배 묽게 만든다. 기체용 증가식을 꿀에 넣으면 온도를 올릴수록 벽 전단이 커진다. 컵 안의 꿀은 반대로 풀린다. 분자가 날아다니는지, 이웃과 손을 잡고 있는지만 고르면 된다. 이 가 격자 볼츠만의 완화시간으로 들어가면 이산 전개가 점성을 다른 숫자로 읽는다. τ가 0.51일 때 점성을 51배로 읽은 반 스텝은 연속체 계수가 코드 안으로 넘어가는 다음 장면이다.
관련
도움이 됐다면 공유해주세요.