충격파 하나보다 네 개가 낫다 — 초음속 흡입구의 사교충격파 열
약한 사교충격파를 여러 번 겪는 쪽이 전압력을 훨씬 덜 잃는 이유
1944년 괴팅겐, Klaus Oswatitsch는 초음속 추진체의 흡입구 문제를 붙들고 있었다. 램제트는 들어온 공기를 압축해야 하는데, Mach 3에서 공기를 그냥 세워버리면 압력의 3분의 2가 사라졌다. 그가 내놓은 답은 압축을 더 세게 하는 것이 아니라 여러 조각으로 나누는 것이었다. 경사면을 몇 개 세워 흐름을 조금씩만 꺾는다. 오늘은 이 계산이 왜 맞는지를 사교충격파(비스듬히 선 충격파)의 관계식에서 끌어내고, 램프 개수를 바꿔가며 회수율이 어떻게 움직이는지 직접 세어 본다.
충격파는 무엇을 가져가는가#
충격파를 지나도 질량·운동량·에너지는 보존된다. 정체 온도 도 그대로다. 사라지는 것은 정체 압력(전압력) 하나다.
는 충격파를 지나며 늘어난 엔트로피, 은 기체상수다. 엔트로피가 늘어난 만큼 전압력이 깎인다.
왜 하필 전압력인가. 흡입구가 엔진에 넘겨줄 수 있는 일의 최대치가 곧 전압력이기 때문이다. 정체 압력이 절반이 되면 노즐에서 뽑아 쓸 수 있는 팽창비도 절반이 된다. 흡입구 성능 지표를 회수율 하나로 잡는 이유다.
Mach 3에서 수직충격파 하나를 세우면 이 값이 얼마인가. 정확히 0.3283이다. 전압력의 67%가 열로 흩어진다.
비스듬히 때리면 수직 성분만 남는다#
충격파를 흐름에 비스듬히 세우면 사정이 달라진다. 충격파면에 나란한 속도 성분은 충격파를 지나도 변하지 않는다. 압력 구배가 면에 수직으로만 작용하기 때문이다.
즉 사교충격파는 수직 성분만 겪는 수직충격파다. 파각(wave angle) 가 정해지면 유효 Mach 수는
가 된다. 가 작을수록 이 1에 가까워진다. Mach 3 흐름이라도 면 충격파가 실제로 느끼는 것은 Mach 1.30짜리 약한 충격파다.
흐름이 꺾이는 각 (deflection angle)와 파각 는 다음 관계로 묶인다.
는 비열비(공기는 1.4). 이 식이 이 글의 전부라고 해도 된다.
θ–β–M 하나에 답이 두 개다#
과 를 주고 를 풀면 근이 두 개 나온다. 파각이 작은 쪽이 약한 해(weak solution), 큰 쪽이 강한 해(strong solution)다. 약한 해에서는 충격파 뒤가 대개 초음속으로 남고, 강한 해에서는 아음속이 된다.
자연은 거의 항상 약한 해를 고른다. 뒤쪽 압력이 특별히 높지 않은 한, 쐐기에 붙은 충격파는 약한 쪽이다.
그리고 를 계속 키우면 어느 순간 근이 아예 없어진다. 각 마다 꺾을 수 있는 최대각 가 있다.
| 1.5 | 2.0 | 3.0 | 5.0 | |
|---|---|---|---|---|
| 12.1° | 23.0° | 34.1° | 41.1° |
면 충격파는 물체에 붙어 있지 못하고 앞으로 떨어져 나가 곡선 형태의 이탈충격파(bow shock)가 된다. 이탈하는 순간 코 앞부분은 사실상 수직충격파가 되고, 회수율은 곤두박질친다.
아래 시뮬레이션에서 직접 조작해보자.
슬라이더를 올리면 θ–β 곡선의 무릎(knee)이 오른쪽으로 밀린다. 빠를수록 더 많이 꺾을 수 있다는 뜻이다. 를 너머로 밀어 충격파가 떨어져 나가는 순간과, 그때 숫자가 어떻게 무너지는지를 같이 보라. 오른쪽 그림의 접선 성분 화살표는 충격파 앞뒤로 길이가 같다 — 깎이는 것은 법선 성분뿐이다.
손실은 세제곱으로 줄어든다#
여기서 결정적인 사실 하나. 약한 충격파의 엔트로피 증가는 에 비례하지 않는다. 세제곱에 비례한다.
에서 계수는 0.162다. 이 절반이 되면 손실은 8분의 1이 된다.
이 세제곱이 Oswatitsch의 계산을 지탱한다. Mach 3에서 한 번에 세울 때 충격파가 감당하는 은 8이다. 이걸 네 조각으로 쪼개면 각 조각은 훨씬 작은 값을 감당하고, 손실은 조각별로 세제곱만큼 줄어든다. 조각 수를 늘려 곱해도 총합이 원래보다 훨씬 작다.
실제 숫자로 확인하자. 한 번의 전압력 손실은 2.1%다. 같은 일을 두 번으로 나누면 각각 0.33%, 합쳐도 0.7%에 못 미친다. 충격파 개수는 두 배인데 손실은 3분의 1이다.
Mach 3 흡입구를 조각내 본다#
8°짜리 램프를 하나씩 늘려가며 마지막에 수직충격파로 마무리하는 구성을 계산했다. 각 램프는 앞 램프를 지나온 국소 Mach 수로 다시 계산해야 한다.
import math
GAMMA = 1.4
def stagnation_ratio(mn):
"""수직 Mach 수 mn을 겪는 충격파의 전압력 비 p02/p01"""
g = GAMMA
a = ((g + 1) * mn**2 / 2) / (1 + (g - 1) * mn**2 / 2)
b = (g + 1) / (2 * g * mn**2 - (g - 1))
return a ** (g / (g - 1)) * b ** (1 / (g - 1))
def downstream_normal_mach(mn):
g = GAMMA
return math.sqrt((1 + (g - 1) / 2 * mn**2) / (g * mn**2 - (g - 1) / 2))
def deflection(mach, beta):
"""주어진 파각 beta(rad)가 만드는 꺾임각 theta(rad)"""
g = GAMMA
num = mach**2 * math.sin(beta) ** 2 - 1
den = mach**2 * (g + math.cos(2 * beta)) + 2
return math.atan(2 / math.tan(beta) * num / den)
def wave_angle_weak(mach, theta):
"""theta를 만드는 약한 해 beta. 꺾을 수 없으면 None"""
lo, hi = math.asin(1 / mach), math.pi / 2
grid = [lo + (hi - lo) * i / 4000 for i in range(4001)]
peak = max(grid, key=lambda b: deflection(mach, b))
if theta > deflection(mach, peak):
return None
a, b = lo, peak
for _ in range(80):
mid = 0.5 * (a + b)
if deflection(mach, mid) < theta:
a = mid
else:
b = mid
return 0.5 * (a + b)
def inlet_recovery(mach_inf, n_ramps, ramp_deg):
"""램프 n개 + 종단 수직충격파를 지난 뒤의 전압력 회수율"""
theta = math.radians(ramp_deg)
total, mach = 1.0, mach_inf
for _ in range(n_ramps):
beta = wave_angle_weak(mach, theta)
if beta is None:
break
mn = mach * math.sin(beta)
total *= stagnation_ratio(mn)
mach = downstream_normal_mach(mn) / math.sin(beta - theta)
return total * stagnation_ratio(mach)
for n in range(5):
print(f"램프 {n}개: 회수율 {inlet_recovery(3.0, n, 8.0):.4f}")출력은 이렇다.
램프 0개: 회수율 0.3283
램프 1개: 회수율 0.4497
램프 2개: 회수율 0.5808
램프 3개: 회수율 0.7101
램프 4개: 회수율 0.82358° 램프 네 개면 회수율이 0.33에서 0.82로, 2.5배가 된다. 총 꺾임각은 32°뿐이고, 추가로 넣은 것은 경사면 네 장이 전부다.
Mach 2.4에서 6° 램프로 반복해도 경향은 같다. 0.5401 → 0.7440(2개) → 0.9096(4개).
램프를 무한히 늘리고 각 램프의 꺾임각을 0으로 보내면 압축은 등엔트로피에 수렴한다. 이론적으로 회수율 1이 가능하다는 뜻이다. 실제 Concorde와 SR-71의 흡입구가 곡면 램프와 이동식 스파이크를 쓰는 이유가 여기에 있다.
아래에서 램프 개수와 꺾임각을 직접 바꿔보자.
램프 개수 을 0에서 5까지 올리면서 아래 막대의 회수율이 어떻게 올라가는지 보라. 그다음 램프당 꺾임각을 14°까지 밀어보면, 어느 순간 뒤쪽 램프가 빨간색으로 바뀐다. 흐름이 이미 충분히 느려져서 그 각도로는 더 못 꺾는다는 신호다.
쪼개기는 공짜가 아니다#
그럼 램프를 20개 세우면 되는가. 그렇게 하지 않는 이유가 몇 가지 있다.
첫째, 길이다. 램프를 하나 추가할 때마다 충격파가 카울(cowl) 립에 도달하는 지점이 뒤로 밀린다. 흡입구가 길어지면 그만큼 무게와 마찰 항력이 붙는다. 회수율 3%를 벌자고 동체 1 m를 늘리는 거래는 대개 손해다.
둘째, 설계점을 벗어난 조건이다. 램프 각도는 특정 Mach 수에서 모든 충격파가 카울 립에 정확히 모이도록(shock-on-lip) 맞춘다. 그 Mach 수를 벗어나면 충격파가 립 앞이나 안쪽으로 어긋나고, 공기가 흡입구를 비껴가는 유출 항력(spillage drag)이 생긴다. 램프가 많을수록 이 틀어짐에 민감해진다.
셋째, 경계층이다. 각 램프의 충격파는 벽면 경계층과 만나 압력을 급격히 올린다. 충격파-경계층 간섭이 박리를 일으키면, 계산상의 회수율은 의미를 잃는다. 실제 흡입구가 램프 근처에 흡입 슬롯(bleed)을 두는 이유다.
넷째, 종단 수직충격파는 없앨 수 없다. 엔진 압축기는 아음속 유입을 요구한다. 어딘가에서는 반드시 음속을 통과해야 한다. 램프의 역할은 그 마지막 충격파를 만나는 Mach 수를 낮추는 것이지, 없애는 것이 아니다. 위 계산에서 램프 4개짜리의 종단 충격파는 Mach 1.67에서 일어나고, 그 하나만으로도 13%를 가져간다.
기억할 점 세 줄#
충격파를 지나며 잃는 것은 전압력 하나이고, 손실은 에 비례한다 — 그래서 약한 충격파는 거의 공짜다.
사교충격파는 법선 성분만 겪는 수직충격파이며, –– 관계에는 답이 두 개 있고 를 넘으면 답이 없어져 충격파가 이탈한다.
같은 감속을 여러 조각으로 나누면 세제곱 덕분에 총 손실이 급감한다. Mach 3에서 8° 램프 네 개는 회수율을 0.33에서 0.82로 끌어올린다. 대가는 흡입구 길이와 설계점 이탈에 대한 민감도다.
관련
도움이 됐다면 공유해주세요.