Skip to content
cfd-lab:~/ko/posts/2026-05-12-laval-nozzle-…online
NOTE #041DAY TUE 유체역학DATE 2026.05.12READ 4 min readWORDS 2,031#유체역학#Compressible-Flow#Mach#Laval-Nozzle#Shock-Wave#유동현상

초음속에선 늘어나야 빨라진다 — 마하수, 충격파, 그리고 라발 노즐의 역설

음속을 넘는 순간 노즐과 디퓨저의 역할이 뒤집힌다. 그 한 줄의 수식을 따라간다.

1947년 10월 14일, 척 예거의 X-1이 마하 1.06을 찍었다. 그날 풍동 엔지니어들이 진짜 놀란 것은 음속 돌파 자체가 아니라, 그 직전까지 멀쩡하던 디퓨저가 갑자기 가속기처럼 굴기 시작한 일이었다. 이 글은 그 역설의 출처인 한 줄의 면적-마하수 관계식을 따라가며, 라발 노즐이 왜 가운데가 잘록해야 하는지, 그리고 초음속 흐름에 충격파가 왜 끼어드는지를 풀어 본다. 마지막에는 Python 30줄로 등엔트로피 노즐 곡선을 직접 그려 본다.

마하수 — 압축성을 가르는 한 숫자#

마하수(유속 UU 와 음속 aa 의 비)는 단순히 빠르기를 재는 척도가 아니다. 단위 체적당 관성력은 ρU2/l\rho U^2 / l, 탄성력은 Kl2/l3K l^2 / l^3 에 비례하므로 두 값의 평방근비가 마하수다.

Ma=Ua,a=Kρ\mathrm{Ma} = \frac{U}{a}, \qquad a = \sqrt{\frac{K}{\rho}}

여기서 KK 는 체적탄성계수(부피 압축에 대한 강성), ρ\rho 는 밀도다. 즉 마하수는 "유동이 매질의 탄성을 얼마나 두드리는가"의 척도다. 통상 Ma<0.3\mathrm{Ma} < 0.3 이면 밀도 변화가 5% 미만이라 비압축 가정이 통한다. 그 이상에서는 유동 자체가 매질을 누르기 시작한다.

음속을 넘는 순간 — 도플러에서 마하 원추로#

정지한 음원이 내는 파면은 동심원이다. 음원이 움직이면 앞쪽 파장은 짧아지고 뒤쪽은 길어진다. 도플러 효과다. 그런데 음원이 음속에 도달하면 모든 파면이 한 평면으로 겹친다. 음속을 넘어서면, 음원은 자기가 만든 파면을 추월한다. 파면의 포락선은 원추가 되고, 이 마하 원추 바깥에는 어떤 음도 도달하지 못한다.

원추의 반각 μ\mu 는 기하만으로 결정된다.

sinμ=1Ma\sin\mu = \frac{1}{\mathrm{Ma}}

마하 2 비행기의 충격 원추는 μ30°\mu \approx 30°, 마하 5 라면 11.5°11.5° 까지 좁아진다. 아래 시뮬레이션에서 직접 조작해보자. 마하수를 0.6에서 2.5까지 올리면, 어느 순간 파면이 음원 뒤로 한꺼번에 쓸려 가는 모습이 보인다.

0.5 / 1.0 / 2.0 are key regimes

음원이 마하 1을 넘는 순간 파면들이 사선으로 정렬되는 점, 그리고 마하수가 커질수록 원추가 좁아지는 점이 핵심 관찰 포인트다.

역설의 한 줄 — (1−1/Ma²)dρ/ρ + dA/A = 0#

이제 본론. 단면적 A(x)A(x) 가 변하는 1차원 정상류를 보자. 질량보존을 미분형으로 풀어쓰면

dρρ+dAA+duu=0\frac{d\rho}{\rho} + \frac{dA}{A} + \frac{du}{u} = 0

이고, 등엔트로피 가정에서 오일러 방정식과 음속 정의 a2=dp/dρa^2 = dp/d\rho 를 결합하면

udu=dpρ=a2dρρu\, du = -\frac{dp}{\rho} = -a^2 \frac{d\rho}{\rho}

가 나온다. 두 식을 합쳐 dudu 를 소거하면 다음 한 줄이 남는다.

(11Ma2)dρρ+dAA=0\left(1 - \frac{1}{\mathrm{Ma}^2}\right) \frac{d\rho}{\rho} + \frac{dA}{A} = 0

여기서 ρ\rho 는 밀도, AA 는 단면적, Ma\mathrm{Ma} 는 마하수다. 부호 분석을 하면 모든 모순이 풀린다.

아음속에서 (Ma<1\mathrm{Ma} < 1, 괄호 음수): 단면적이 줄면 (dA<0dA<0) 밀도도 줄고(dρ<0d\rho<0), 결과적으로 속도가 는다. 우리가 일상에서 보는 호스 끝과 같다.

초음속에서 (Ma>1\mathrm{Ma} > 1, 괄호 양수): 부호가 모두 뒤집힌다. 단면적이 줄면 밀도가 늘고 속도는 줄어든다. 좁은 관에 더 빨리 밀어 넣으려는 시도는 오히려 흐름을 막는다. 반대로 단면적이 늘어나야 속도가 는다.

라발 노즐 — 좁아져서는 빨라지지 않는다#

이 역설이 라발 노즐의 모양을 결정한다. 아음속을 받아 초음속까지 가속하려면, 우선 좁아져서 음속까지 끌어올린 다음, 다시 넓어져야 한다. 가운데 잘록한 부분(스로트)에서 정확히 Ma=1\mathrm{Ma} = 1 에 도달한다. 식에서 11/Ma2=01 - 1/\mathrm{Ma}^2 = 0 이 되려면 dA=0dA = 0 이어야 하기 때문이다.

스로트 단면적 AA^* 와 임의 단면적 AA 의 비는 마하수만으로 결정된다.

AA=1Ma[2γ+1(1+γ12Ma2)]γ+12(γ1)\frac{A}{A^*} = \frac{1}{\mathrm{Ma}} \left[ \frac{2}{\gamma+1} \left( 1 + \frac{\gamma-1}{2}\mathrm{Ma}^2 \right) \right]^{\frac{\gamma+1}{2(\gamma-1)}}

같은 면적비에서 아음속 해와 초음속 해가 동시에 존재한다. 어느 가지를 따라가는지는 출구 배압 PbP_b 가 결정한다. 아래에서 슬라이더로 면적비와 배압비를 조작해 보자.

throat (Ma=1)inletexitMa_exit (design sup): 2.44regime: over-expanded (shock inside)

Cyan curve: Ma along axis (normalized). Dashed red line: throat. Lower P_b makes the diverging part accelerate to supersonic. Raise P_b above the design and a normal shock appears inside.

배압을 충분히 낮추면 디버전트(확장부)에서 마하 분포가 1을 넘어 단조 증가한다. 반대로 배압을 디자인 값보다 높이면, 노즐 안 어디선가 정상 충격파가 발생해 흐름이 다시 아음속으로 떨어진다.

Python으로 본 등엔트로피 면적-마하수 관계#

위의 면적비 공식과 등엔트로피 압력비를 NumPy 30줄로 따라가 본다. 이분법으로 면적비에서 마하수를 거꾸로 푼다.

import numpy as np
 
GAMMA = 1.4
 
def area_mach_relation(M, gamma=GAMMA):
    """A/A* — 등엔트로피 면적-마하수 식."""
    exp = (gamma + 1) / (2 * (gamma - 1))
    inner = (2 / (gamma + 1)) * (1 + 0.5 * (gamma - 1) * M ** 2)
    return (1 / M) * inner ** exp
 
def solve_supersonic_branch(area_ratio, gamma=GAMMA, lo=1.0001, hi=25.0):
    """면적비 → 초음속 마하수 (이분법)."""
    for _ in range(80):
        mid = 0.5 * (lo + hi)
        if area_mach_relation(mid, gamma) < area_ratio:
            lo = mid
        else:
            hi = mid
    return 0.5 * (lo + hi)
 
def pressure_ratio_isentropic(M, gamma=GAMMA):
    """p/p0 — 정체압 대비 정압비."""
    return (1 + 0.5 * (gamma - 1) * M ** 2) ** (-gamma / (gamma - 1))
 
def normal_shock_p2_p1(M1, gamma=GAMMA):
    """수직 충격파 후방 정압비 p2/p1."""
    return 1 + (2 * gamma / (gamma + 1)) * (M1 ** 2 - 1)
 
# 라발 노즐: 면적비 = 2.5 인 출구
A_ratio = 2.5
M_exit = solve_supersonic_branch(A_ratio)
p_exit = pressure_ratio_isentropic(M_exit)
 
print(f"design exit  Ma = {M_exit:.3f}")
print(f"design exit  p/p0 = {p_exit:.4f}")
print(f"if Ma1=1.5 normal shock, p2/p1 = {normal_shock_p2_p1(1.5):.3f}")

실행하면 다음과 같이 떨어진다.

design exit  Ma = 2.443
design exit  p/p0 = 0.0633
if Ma1=1.5 normal shock, p2/p1 = 2.458

면적비 2.5짜리 노즐을 설계대로 운용하면 출구에서 마하 2.44, 정압은 정체압의 6.3% 까지 떨어진다. 노즐 안에서 마하 1.5짜리 정상 충격파가 잡히면 압력이 2.46배로 급상승하면서 흐름이 즉시 아음속으로 바뀐다.

충격파 — 압축의 한계#

압축파가 자기 자신을 따라잡으면 충격파가 된다. 파동 후미는 압축으로 온도가 올라가고, 음속이 빨라져서 앞을 추월한다. 결국 두께가 분자 평균자유행정의 몇 배 수준(공기에선 마이크로미터 단위)인 얇은 면에 모든 압력 점프가 모인다.

수직 충격파의 압력비 p2/p1=1+2γγ+1(Ma121)p_2/p_1 = 1 + \frac{2\gamma}{\gamma+1}(\mathrm{Ma}_1^2 - 1) 는 마하수 1을 기준으로 0이고, 마하수가 커질수록 폭발적으로 커진다. 초음속 라발 노즐에서 배압이 디자인보다 높으면, 흐름이 그 압력 차이를 메우려 노즐 내부에 충격파를 만들어 자기 자신을 감속시킨다. "과팽창(over-expanded)" 상태다.

흥미롭게도 캐비테이션 기포가 붕괴할 때 나오는 마이크로 충격파, 채찍 끝이 음속을 넘으며 내는 "쉭" 소리, 운석이 대기에 진입하며 가열되는 메커니즘 — 이 모두 같은 식의 다른 얼굴이다.

기억할 점#

  • 면적-마하수 식 (11Ma2)dρρ+dAA=0\left(1 - \tfrac{1}{\mathrm{Ma}^2}\right) \tfrac{d\rho}{\rho} + \tfrac{dA}{A} = 0 한 줄이 노즐과 디퓨저의 역할 반전을 모두 담는다.
  • 라발 노즐의 잘록한 스로트는 Ma=1\mathrm{Ma} = 1 만 허용되는 유일한 단면이고, 출구 마하수와 압력비는 면적비 + 배압비가 함께 결정한다.
  • 충격파는 등엔트로피 가정이 깨지는 자리에서 등장한다. 노즐 내부에 충격이 보이면 배압이 디자인보다 높다는 신호다.

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