Skip to content
cfd-lab:~/ko/posts/2026-05-14-viscosity-kin…online
NOTE #043DAY THU 유체역학DATE 2026.05.14READ 4 min readWORDS 2,244#유체역학#Viscosity#Kinetic-Theory#Transport-Phenomena#Newtonian-Fluid

짚신벌레가 헤엄치는 꿀 — 점성의 분자적 기원과 Newton·Fourier·Fick의 한 줄

분자가 운동량을 옮기면 점성이 된다, 그 한 줄이 열과 확산까지 묶는다

수도꼭지를 틀면 물은 매끈하게 흘러내린다. 같은 물 한 컵에 짚신벌레를 풀어 놓으면 그 물은 인간이 꿀 속을 헤엄치는 것과 같은 끈적임으로 그를 붙잡는다. 둘 다 같은 H₂O인데 한쪽은 매끄럽고 한쪽은 끈끈하다. 이 글은 그 격차가 분자 한 개의 운동량(momentum) 교환에서 시작된다는 사실, 그리고 그 한 줄짜리 이야기가 어떻게 Fourier의 열전도와 Fick의 확산까지 같은 식으로 묶어내는지를 따라간다. 끝에는 분자 충돌만으로 점성계수 μ를 측정하는 Python 코드를 직접 돌려본다.

0.2 mm 짚신벌레의 물은 사람의 꿀이다#

크기가 0.2 mm인 짚신벌레가 0.1 mm/s로 헤엄친다. Reynolds 수(관성력/점성력 비) Re = UL/ν는 약 2×10⁻⁵다. 1 m 크기의 돌고래가 1 m/s로 헤엄치면 Re ≈ 10⁶다. 같은 물에서 차이가 11자릿수다. 짚신벌레에게는 관성이 거의 의미가 없다. 노 젓듯 한쪽으로 밀어도 멈추는 데 1마이크로초가 채 걸리지 않는다. 그가 사는 세계는 "끈끈한 점성의 바다"이고, 그 사실을 만들어낸 것은 분자 하나의 거동이다.

점성은 분자가 들고 다니는 운동량이다#

기체 분자는 끊임없이 충돌하며 위·아래·앞·뒤·좌·우 6방향으로 평균 속력 cˉ\bar{c}로 흩어진다. 분자가 다음 충돌 전에 평균적으로 진행하는 거리를 평균자유행정(mean free path) \ell이라 한다. 1기압 공기에서 cˉ\bar{c}는 약 470 m/s, \ell은 약 68 nm다.

이제 기체 안에 가상의 수평면 하나를 그어 보자. 위쪽 흐름은 속도 u+du/dyu + \ell \cdot du/dy로, 아래쪽 흐름은 udu/dyu - \ell \cdot du/dy로 움직인다고 두자. 위쪽에서 면을 가로질러 내려오는 분자는 자기 운동량(빠른 속도)을 아래쪽에 떨군다. 아래쪽에서 올라오는 분자는 느린 운동량을 위로 가져간다. 결과적으로 두 층은 서로 브레이크를 건다. 그 브레이크의 크기가 전단응력(shear stress) τ\tau다.

이 그림은 Couette 흐름에서 직접 만져볼 수 있다. 아래 시뮬레이션에서 분자가 위·아래 판 사이를 돌아다니며 운동량을 옮기는 모습을 직접 조작해보자.

Couette layer with discrete molecules. Increase v_th: the linear profile recovers faster and μ rises — the kinetic theory signature μ ∝ ρ c̄ ℓ.

상부 판의 속도 U를 키울수록 평균 속도 분포 u(y)u(y)가 점선(이론치)에 더 빠르게 들러붙는다. 열속도 vthv_{th}를 키우면 시뮬레이션이 만든 유효 점성 μeff\mu_{eff}가 함께 올라간다 — 분자가 더 빠르게 돌아다닐수록 운동량을 더 많이, 더 빨리 옮긴다는 뜻이다.

μ ∝ ρ c̄ ℓ — 한 줄 유도#

기체 분자의 수밀도를 NN이라 하면 단위 시간에 면을 위로 통과하는 분자 수는 16Ncˉ\frac{1}{6}N\bar{c}다. 각 분자가 가져오는 평균 xx-운동량 차이는 m2du/dym \cdot 2\ell \cdot du/dy. 따라서 단위 면적당 운동량 플럭스는

τ=16Ncˉm2dudy=ρcˉ3dudy\tau = \frac{1}{6} N \bar{c} \cdot m \cdot 2\ell \frac{du}{dy} = \frac{\rho \bar{c} \ell}{3} \frac{du}{dy}

여기서 ρ=Nm\rho = Nm. 이 식을 Newton의 점성법칙 τ=μdu/dy\tau = \mu\, du/dy와 견주면

μ    13ρcˉ\mu \;\simeq\; \frac{1}{3} \rho \bar{c} \ell

가 나온다. 엄밀한 Chapman–Enskog 풀이는 계수를 1/3에서 1/2로 미세 조정하지만 비례식 μρcˉ\mu \propto \rho \bar{c} \ell 자체는 그대로다. 여기서 결정적인 사실 하나 — ρ\rho \ell은 압력에 거의 무관하다(NN\ell은 단면적 역수). 따라서 기체의 점성은 압력과 거의 무관하고 온도가 오르면(=cˉ\bar{c}가 오르면) 커진다. 1859년 Maxwell이 이론으로 예측하고 실험으로 확인한, 직관에 반하는 결과다.

액체에서는 거꾸로 — 데우면 묽어진다#

기름이나 꿀은 온도를 올리면 더 잘 흐른다. 정반대 거동이다. 이유는 메커니즘이 다르기 때문이다. 액체 분자는 자유롭게 날아다니지 못하고 항상 이웃과 손을 잡고 있다. 한 분자가 흐르려면 잡은 손을 놓고 새 손을 잡아야 하는데, 그 결합 에너지가 점성을 결정한다. 온도가 오르면 결합이 약해지므로 손을 떼기 쉽고, μ\mu내려간다. Eyring(1936)의 활성화 에너지 모델은 이 거동을

μ(T)    Aexp ⁣(EakT)\mu(T) \;\simeq\; A \exp\!\left(\frac{E_a}{kT}\right)

로 적는다. EaE_a는 점성 활성화 에너지, kk는 Boltzmann 상수, TT는 절대온도다. 30°C에서 90°C로 데우면 물의 점성은 약 2.5배 줄어든다. 같은 변화가 공기에서는 약 1.2배 증가다. 같은 한 단어 "점성"이지만 분자 수준에서는 완전히 다른 이야기를 한다.

Newton·Fourier·Fick — 셋이 같은 한 줄#

방금 그린 기체의 운동량 수송 그림을 그대로 들고, "운동량" 자리에 "열에너지" 또는 "분자 개수"를 끼워 넣어 보자. 위층은 T+dT/dyT + \ell \cdot dT/dy, 아래층은 TdT/dyT - \ell \cdot dT/dy. 똑같은 1/6 × NcˉN\bar{c} × mC2dT/dym C \cdot 2\ell \cdot dT/dy 계산이 그대로 q=λdT/dyq = -\lambda\, dT/dy의 Fourier 열전도법칙을 만든다. 농도 CC를 대입하면 j=DdC/dyj = -D\, dC/dy의 Fick의 법칙이다. 분자의 거동은 한 가지인데, 그것이 옮기는 양만 운동량·열·물질로 바뀐다.

Same linear profile, three different fields. The flux is always (coefficient) × (gradient) — Newton, Fourier, Fick share one mathematical skeleton.

세 탭을 번갈아 눌러보자. 같은 사다리꼴 분포, 같은 화살표 방향, 비례계수만 다르다. 1차원의 선형 구배 위에서는 자연이 같은 형식을 세 번 반복한다.

동점성계수 ν = μ/ρ가 진짜 의미하는 것#

운동량 플럭스를 τ=μdu/dy=(μ/ρ)d(ρu)/dy\tau = \mu\, du/dy = (\mu/\rho)\, d(\rho u)/dy로 다시 쓰면 ν=μ/ρ\nu = \mu/\rho가 운동량 밀도 ρu\rho u의 확산계수라는 사실이 드러난다. 즉 열확산계수 α=λ/(ρcp)\alpha = \lambda/(\rho c_p)가 열에너지 ρcpT\rho c_p T를 퍼뜨리는 것과 같은 역할을 ν\nu가 운동량 밀도에 대해 한다. 단위가 둘 다 m²/s인 것은 우연이 아니다. 운동량은 1차원 막대 안에서 확산방정식 (ρu)/t=ν2(ρu)/y2\partial(\rho u)/\partial t = \nu\, \partial^2(\rho u)/\partial y^2를 따라간다. 짚신벌레의 세계에서 관성이 의미를 잃는 이유는, 그가 만든 모든 운동량이 곧장 주변으로 "퍼져버리기" 때문이다.

Python 50줄 — 분자 충돌로 본 μ#

이론 없이 분자 충돌만으로 μ\mu가 나오는지 확인해 보자. 2차원 box 안에 N개 점입자를 넣고, 위·아래 판이 각각 속도 UU00으로 분자를 thermalize시킨다. 끝까지 돌리고 τ=vxvyρ\tau = -\langle v_x v_y \rangle \rho를 측정한다.

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

ν\nuvthv_{th}에 거의 선형으로 비례한다. 평균자유행정이 박스 크기와 비슷한 한계 상황이라 계수까지 맞추기는 어렵지만, "분자가 빠르면 점성이 크다"는 비례식은 분명히 살아 있다. 더 큰 N과 명시적 충돌을 넣으면 1/3 계수까지 수렴한다.

핵심 3줄 요약#

  • 점성은 분자가 한 층에서 다른 층으로 운동량을 옮긴 결과이고, 그 양은 μρcˉ/3\mu \simeq \rho \bar{c} \ell / 3로 적힌다.
  • 기체에서는 온도가 오르면 cˉ\bar{c}가 커져 μ\mu증가하지만, 액체에서는 분자간 결합이 약해져 μ\mu감소한다. 메커니즘이 정반대다.
  • Newton·Fourier·Fick은 같은 분자 그림을 운동량·열·물질에 끼워 넣은 결과로, ν=μ/ρ\nu = \mu/\rho는 운동량의 확산계수다.

도움이 됐다면 공유해주세요.