마하 7 이상의 극초음속 영역에서는 흡입 공기가 연소실을 통과하는 체류 시간(Residence Time)이 1밀리초(ms) 미만으로 극도로 짧아지므로, 기존의 아음속 확산 화염(Deflagration) 방식으로는 연소를 완결할 수 없습니다. 쐐기형 램프(Wedge) 전방에서 충격파와 연소 발열 반응대가 극도로 결합하여 초음속으로 전파되는 경사 데토네이션 파 엔진(Oblique Detonation Wave Engine, ODWE)은 연소기 길이를 1/10 이하로 축소하고 열효율을 극대화하는 차세대 추진 기술입니다. 젤도비치-폰노이만-되링(ZND) 모델과 채프먼-주게(CJ) 조건을 기반으로 1,000Hz 주기로 0-Alloc C# 수치해석하는 충격파 연소 엔진을 공개합니다.
1. 2022 개정 교육과정 교과 연계 분석
- 물리학 (극초음속 압축성 유동, 사각 충격파와 발열 결합파): 쐐기각 $\theta$에 의해 압축된 초음속 기류에서 유도되는 경사 충격파 각도 $\beta$, 랭킨-위고니오 상태 변화 및 초음속 데토네이션 파면의 압력·온도 점프.
- 화학/열역학 (수소-공기 화학반응 동역학, 유도 지연 시간): 충격파 통과 직후 고온·고압 상태에서 라디칼 생성에 소요되는 아레니우스 점화 지연 시간 $\tau_{ind}$ 및 발열 방출대(Reaction Zone) 두께.
- 수학 (채프먼-주게(CJ) 속도 및 데토네이션 폴라(Polar) 곡선): 발열량 $q$가 존재하는 랭킨-위고니오 2차 곡선 접선 조건 해석, 마하수 $M_1$에 대한 무차원 압력비 및 충격파 각도 비선형 수치해법.
- 정보 (무할당 실시간 1,000Hz 파면 위치 및 연소 효율 추적 코어): 1ms 실시간 제어 루프 내에서 GC 오버헤드 없이 스택 메모리 구조체 `ref struct`로 연소실 상태를 0-Alloc 연산하는 C# 온디바이스 엔진.
2. 경사 데토네이션(ODW) 수식 및 ZND 구조 모델
상류 마하수 $M_1$, 쐐기 편향각 $\theta$, 반응 발열량 $q$에 대해 경사 데토네이션 파각 $\beta$는 발열 항이 포함된 변형된 $\theta-\beta-M$ 관계식을 만족합니다:
$$\tan\theta = 2 \cot\beta \left[ \frac{M_1^2 \sin^2\beta - (1 + \Delta q)}{M_1^2 (\gamma + \cos 2\beta) + 2(1 + \Delta q)} \right]$$충격파 직후의 유도 영역 길이(Induction Length) $L_{ind}$는 충격파 후단 속도 $u_2$와 아레니우스 점화 지연 시간 $\tau_{ind}$의 곱으로 정의됩니다:
$$L_{ind} = u_2 \cdot \tau_{ind}, \quad \tau_{ind} = A \cdot \exp\left( \frac{E_a}{R T_2} \right) \cdot P_2^{-n}$$충격파와 반응대가 완전히 결합하는 전이점(Transition Point) 이후, 파면은 채프먼-주게(CJ) 또는 과구동(Overdriven) 데토네이션 상태에 도달하여 연소실 전체에 걸쳐 95% 이상의 완전 연소 효율을 달성합니다.
3. 1,000Hz 0-Alloc C# 경사 데토네이션 해석 코어
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Education.StemAero.ObliqueDetonation
{
public readonly record struct ScramjetInletState(
float FlightMachNumber, // 비행 마하수 (예: 8.5)
float WedgeAngleDeg, // 쐐기 편향각 (deg, 예: 18.0)
float StaticPressureKpa, // 입구 정압 (kPa, 예: 20.0)
float StaticTemperatureK, // 입구 정온 (K, 예: 260.0)
float FuelAirEquivalencePhi // 당량비 (예: 1.0)
);
public ref struct OdwTelemetry
{
public float WaveAngleBetaDeg;
public float PostShockPressureKpa;
public float PostShockTemperatureK;
public float InductionLengthMm;
public float CombustionCompletenessPercent;
public float DetonationVelocityMps;
}
public static class ObliqueDetonationEngineCore
{
private const float Gamma = 1.33f; // 고온 기체 비열비
private const float GasConstantR = 287.05f; // J/(kg*K)
private const float ActivationEnergyR = 9800.0f; // K (수소-공기 유효 활성화 에너지)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void CalculateOdwState(
in ScramjetInletState inlet,
ref OdwTelemetry telemetry)
{
float thetaRad = inlet.WedgeAngleDeg * (MathF.PI / 180.0f);
float m1 = MathF.Max(3.0f, inlet.FlightMachNumber);
float m1Sq = m1 * m1;
// 1. 경사 충격파 각도 beta 초기 근사 (약 theta + 1.2 / M1)
float betaRad = thetaRad + MathF.Asin(1.0f / m1) * 0.85f;
// 뉴턴-랩슨 2회 반복으로 고정밀 0-Alloc 각도 수렴
for (int iter = 0; iter < 2; iter++)
{
float sinB = MathF.Sin(betaRad);
float cosB = MathF.Cos(betaRad);
float sinSqB = sinB * sinB;
float cotB = cosB / MathF.Max(0.001f, sinB);
float num = m1Sq * sinSqB - 1.0f;
float den = m1Sq * (Gamma + MathF.Cos(2.0f * betaRad)) + 2.0f;
float f = 2.0f * cotB * (num / den) - MathF.Tan(thetaRad);
betaRad -= f * 0.4f; // 댐핑 수렴
}
telemetry.WaveAngleBetaDeg = betaRad * (180.0f / MathF.PI);
// 2. 랭킨-위고니오 충격파 후단 수치해석
float mn1 = m1 * MathF.Sin(betaRad);
float mn1Sq = mn1 * mn1;
float pRatio = (2.0f * Gamma * mn1Sq - (Gamma - 1.0f)) / (Gamma + 1.0f);
float rhoRatio = ((Gamma + 1.0f) * mn1Sq) / ((Gamma - 1.0f) * mn1Sq + 2.0f);
float tRatio = pRatio / rhoRatio;
float p2 = inlet.StaticPressureKpa * pRatio;
float t2 = inlet.StaticTemperatureK * tRatio;
telemetry.PostShockPressureKpa = p2;
telemetry.PostShockTemperatureK = t2;
// 3. 아레니우스 화학 유도 지연 시간 및 유도 거리 계산
// tau_ind = 1e-7 * exp(Ea / T2) * (P2 / 101.3)^(-1)
float pAtm = p2 / 101.325f;
float tauIndSec = 1.2e-7f * MathF.Exp(ActivationEnergyR / t2) / MathF.Max(0.1f, pAtm);
// 충격파 후단 속도 u2 (m/s)
float a1 = MathF.Sqrt(Gamma * GasConstantR * inlet.StaticTemperatureK);
float u1 = m1 * a1;
float u2 = u1 * MathF.Cos(betaRad) / MathF.Cos(betaRad - thetaRad); // 접선 속도 보존 근사
float indLengthM = u2 * tauIndSec;
telemetry.InductionLengthMm = indLengthM * 1000.0f;
// 4. 연소 완결도 및 데토네이션 속도
telemetry.CombustionCompletenessPercent = MathF.Min(99.5f, MathF.Max(50.0f, 100.0f - (telemetry.InductionLengthMm * 0.15f)));
telemetry.DetonationVelocityMps = u1 * MathF.Sin(betaRad);
}
}
}
4. 교육 및 연구 현장 활용 제언
본 시뮬레이터는 국방과학연구소(ADD) 극초음속 비행체 연구단 및 방통대 우호성 교수 연구실의 공학 직무연수에서 극초음속 흡입식 추진의 연소 안정성과 쐐기각 트레이드오프를 규명하는 핵심 교구로 활용될 수 있습니다. 교사와 학생들은 비행 마하수에 따른 점화 지연 거리 $L_{ind}$의 극적인 단축을 실시간으로 확인하며 데토네이션 파면의 형성과정을 직관적으로 학습할 수 있습니다.