화성 유인 탐사 및 심우주 성간 비행에서 비추력(Specific Impulse: $I_{sp} \ge 900\,\text{s}$)을 화학 로켓($\approx 450\,\text{s}$) 대비 2배 이상 혁신하는 궁극의 추진 기술은 '원자력 열추진(NTP: Nuclear Thermal Propulsion)'입니다. 농축 우라늄($\text{HALEU}$) 고체 세라믹 코어에서 발생하는 핵분열 열에너지($T > 2,700\,\text{K}$)로 분자량이 가장 작은 20K 극저온 액체수소($\text{LH}_2$)를 직접 가열 팽창시켜 초음속 노즐로 분사합니다. 이때 코어의 반응도(Reactivity)와 수소 냉각재의 유량 및 상변화는 강력한 열수력 결합 피드백(Thermal-Hydraulic Feedback)을 형성하므로, 중성자 지발군과 터보펌프 블리드 사이클을 1,000Hz 주기로 정밀 제어하지 않으면 코어 용융(Meltdown)이나 노즐 서징(Surge)이 발생합니다. 이를 완벽하게 통제하는 0-Alloc C# 실시간 우주 원자로 서보 엔진을 공개합니다.
1. 2022 개정 교육과정 교과 연계 분석
- 물리학 (핵분열 에너지와 로켓 추진 원리): 질량-에너지 등가성($E = \Delta m c^2$), 우라늄($^{235}\text{U}$) 연쇄반응, 비추력 공식($I_{sp} \propto \sqrt{T_c / \bar{M}}$)에서 수소 분자량($M=2\,\text{g/mol}$)의 열역학적 이점.
- 화학 및 열역학 (초임계 수소 극저온 상태방정식): 20K 액체수소의 초임계 압력 가열, 노즐 재생 냉각(Regenerative Cooling) 열교환, 탄화지르코늄(ZrC)/탄화텅스텐 코팅의 고온 수소 침식 방지 화학.
- 미적분 (지발중성자 원자로 점동역학 연립 미분방정식): 6군 지발중성자 선행핵 붕괴율($\lambda_i$)과 프롬프트 중성자 세대시간($\Lambda$)을 고려한 점동역학 방정식(Point Kinetics Equations: PKE) 수치적분.
- 정보 및 심우주모빌리티제어 (실시간 원자로-터보펌프 서보): 중성자속 센서 및 터보펌프 차압을 1ms(1,000Hz) 주기로 피드백받아 중성자 흡수 제어 드럼 각도와 수소 밸브를 0-Alloc으로 동기화 제어하는 C# 엔진.
2. 핵심 수학적 모델링 및 물리 공식
1) 6군 지발중성자 원자로 점동역학 (Point Kinetics Equations)
원자로 출력 $P(t)$, 총 반응도 $\rho(t)$, 프롬프트 중성자 수명 $\Lambda$, 지발중성자 분율 $\beta = \sum \beta_i$, 선행핵 밀도 $C_i$:
$$\frac{dP(t)}{dt} = \frac{\rho(t) - \beta}{\Lambda} P(t) + \sum_{i=1}^6 \lambda_i C_i(t)$$ $$\frac{dC_i(t)}{dt} = \frac{\beta_i}{\Lambda} P(t) - \lambda_i C_i(t) \quad (i = 1, \dots, 6)$$온도 및 수소 밀도 반응도 피드백:
$$\rho(t) = \rho_{drum}(\theta) + \alpha_D (T_f - T_0) + \alpha_H (\rho_{H_2} - \rho_0)$$여기서 $\alpha_D$는 도플러 음의 피드백 계수, $\alpha_H$는 수소 중성자 감속 양의 피드백 계수.
2) 비추력(Specific Impulse) 및 이상 기체 노즐 팽창 방정식
체임버 연소실 온도 $T_c$, 배기 가스 몰질량 $M$, 비열비 $\gamma$, 노즐 압력비 $p_e/p_c$:
$$v_e = \sqrt{\frac{2 \gamma}{\gamma - 1} \frac{R_u T_c}{M} \left[ 1 - \left( \frac{p_e}{p_c} \right)^{\frac{\gamma - 1}{\gamma}} \right]}, \quad I_{sp} = \frac{v_e}{g_0}$$수소 가스($M = 2.016 \times 10^{-3}\,\text{kg/mol}, \gamma \approx 1.4, T_c \approx 2,700\,\text{K}$) 사용 시 $I_{sp} \approx 925\,\text{s}$에 도달합니다.
3) 초임계 액체수소 재생냉각 코어 열수력 모델
질량 유량 $\dot{m}_{H_2}$, 비열 $c_p(T)$, 열전달 계수 $h_{conv}$, 코어 연료봉 온도 $T_f$:
$$\dot{m}_{H_2} c_p \frac{dT_{coolant}}{dx} = h_{conv} A_s (T_f - T_{coolant})$$ $$m_f c_f \frac{dT_f}{dt} = P_{core}(t) - h_{conv} A_s (T_f - T_{coolant})$$3. 실시간 NTP 원자로-터보펌프 서보 제어 아키텍처
+---------------------------------------------------------------------------------------------------+
| 원자력 열추진(NTP) 1,000Hz 0-Alloc C# 원자로-터보펌프 열수력 서보 아키텍처 |
+---------------------------------------------------------------------------------------------------+
|
[센서 입력 (1kHz, 0-Alloc)] | [핵물리 및 극저온 유체역학 파라미터]
- 코어 중성자속 센서: Neutron Flux / Power P(t) | - 6군 지발중성자 상수 beta_i, lambda_i
- 연료봉 중심 열전대: T_fuel, 노즐 온도 T_nozzle | - 도플러 반응도 궤환 계수 alpha_doppler
- 수소 터보펌프 입출구 압력/온도: P_in, P_pump | - 수소 팽창 상태방정식 NIST REFPROP 근사
v
+---------------------------------------------------------+
| [0-Alloc C# 스택 엔진] NtpThermalHydraulicEngine |
| 1. 지발중성자 점동역학 수치적분 (PKE 6-Group ODE) |
| 2. 도플러 및 수소 밀도 반응도 합산: rho_total |
| 3. 비추력 I_sp 및 노즐 초음속 추력 F_thrust 연산 |
| 4. 코어 열수력 안전 한계 감시 (T_f < 3,000K) |
+---------------------------------------------------------+
|
+---------------------------------------+---------------------------------------+
v v
[구동 액추에이터 제어] [우주 안전 인터록 시스템]
- 베릴륨 반사체/B4C 제어 드럼 회전각 서보 (theta) - 반응도 급격 삽입 방지 SCRAM 스위치
- 수소 터보펌프 바이패스 제어 밸브 PWM 개폐율 - 코어 냉각재 고갈 시 비상 벤트 밸브
- 정상 상태 목표 추력 유지 (100kN ~ 250kN) - 우주 방사선 차폐 감시
+---------------------------------------------------------------------------------------------------+
4. 1,000Hz 0-Alloc C# NTP 원자로 열수력 제어 서보 엔진
1ms 제어 주기 동안 가비지 컬렉션(GC) 없이 스택 메모리로 실행되는 고신뢰성 우주 비행용 C# 구현체입니다:
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Stem.Propulsion.NuclearThermal
{
/// <summary>
/// NTP 우주선 계측 원자로 및 수소 유동 텔레메트리 (0-Alloc Stack Only)
/// </summary>
public readonly ref struct NtpTelemetry
{
public readonly float ReactorPowerMw; // [MW] 원자로 현재 열출력 (예: 500MW)
public readonly float FuelCoreTempK; // [K] 코어 최고 온도 (예: 2,750K)
public readonly float HydrogenMassFlowKgS;// [kg/s] 액체수소 질량 유량 (예: 25.0kg/s)
public readonly float ChamberPressureBar; // [bar] 노즐 연소실 압력 (예: 70bar)
public readonly float ControlDrumAngleDeg;// [deg] 제어 드럼 회전각 (0: 완전흡수 ~ 180: 전반사)
public readonly float PrecursorGroup1; // 지발중성자 선행핵 상대 밀도군
public readonly float PrecursorGroup2;
public readonly float PrecursorGroup3;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public NtpTelemetry(
float reactorPowerMw,
float fuelCoreTempK,
float hydrogenMassFlowKgS,
float chamberPressureBar,
float controlDrumAngleDeg,
float precursorGroup1,
float precursorGroup2,
float precursorGroup3)
{
ReactorPowerMw = reactorPowerMw;
FuelCoreTempK = fuelCoreTempK;
HydrogenMassFlowKgS = hydrogenMassFlowKgS;
ChamberPressureBar = chamberPressureBar;
ControlDrumAngleDeg = controlDrumAngleDeg;
PrecursorGroup1 = precursorGroup1;
PrecursorGroup2 = precursorGroup2;
PrecursorGroup3 = precursorGroup3;
}
}
/// <summary>
/// NTP 서보 제어 연산 결과 구조체
/// </summary>
public readonly ref struct NtpControlResult
{
public readonly float SpecificImpulseSec; // [s] 실시간 비추력 (I_sp)
public readonly float ThrustKiloNewtons; // [kN] 로켓 추력
public readonly float NetReactivityDollar; // [$] 총 유효 반응도
public readonly float CommandedDrumAngleDeg; // [deg] 지령 제어 드럼 각도
public readonly float CommandedH2FlowKgS; // [kg/s] 지령 수소 유량
public readonly bool IsScramTriggered; // 비상 정지(SCRAM) 트리거 플래그
public readonly bool IsThermalSafe; // 코어 한계온도 안전 마진
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public NtpControlResult(
float specificImpulseSec,
float thrustKiloNewtons,
float netReactivityDollar,
float commandedDrumAngleDeg,
float commandedH2FlowKgS,
bool isScramTriggered,
bool isThermalSafe)
{
SpecificImpulseSec = specificImpulseSec;
ThrustKiloNewtons = thrustKiloNewtons;
NetReactivityDollar = netReactivityDollar;
CommandedDrumAngleDeg = commandedDrumAngleDeg;
CommandedH2FlowKgS = commandedH2FlowKgS;
IsScramTriggered = isScramTriggered;
IsThermalSafe = isThermalSafe;
}
}
/// <summary>
/// 1,000Hz 0-Alloc 원자력 열추진(NTP) 열수력-핵분열 연계 제어 서보 엔진
/// </summary>
public static class NtpServoEngine
{
private const float MaxCoreTempK = 3050.0f; // 최대 안전 허용 온도 (초과 시 SCRAM)
private const float TargetCoreTempK = 2750.0f;
private const float GasConstantH2 = 4124.0f; // [J/(kg*K)] 수소 기체 상수
private const float GammaH2 = 1.40f; // 비열비
private const float Gravity0 = 9.80665f; // [m/s^2] 표준 중력가속도
private const float BetaEffective = 0.0065f; // 총 지발중성자 분율
/// <summary>
/// 1ms 주기 원자로 반응도, 비추력, 수소 유량 터보펌프 피드백 루프 연산
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static NtpControlResult ComputeServoCycle(
in NtpTelemetry telemetry,
float targetThrustKn)
{
// 1. 코어 온도 안전 여유 및 SCRAM 감시
bool isThermalSafe = telemetry.FuelCoreTempK < MaxCoreTempK;
bool triggerScram = !isThermalSafe || (telemetry.ReactorPowerMw > 750.0f);
// 2. 비추력(I_sp) 및 초음속 분사 속도 계산
// v_e = sqrt( (2*gamma/(gamma-1)) * R * T_c * (1 - (pe/pc)^((gamma-1)/gamma)) )
// 우주 진공 팽창 효율 약 0.95 감안
float expansionFactor = 1.0f - MathF.Pow(0.01f / telemetry.ChamberPressureBar, (GammaH2 - 1.0f) / GammaH2);
expansionFactor = Math.Clamp(expansionFactor, 0.5f, 0.98f);
float exhaustVelocity = MathF.Sqrt((2.0f * GammaH2 / (GammaH2 - 1.0f)) * GasConstantH2 * telemetry.FuelCoreTempK * expansionFactor);
float ispSec = exhaustVelocity / Gravity0;
// 3. 실제 로켓 추력 F = m_dot * v_e
float currentThrustKn = (telemetry.HydrogenMassFlowKgS * exhaustVelocity) * 0.001f;
// 4. 드럼 회전각에 따른 기하학적 반응도 산출
// rho_drum = rho_max * (1 - cos(theta_rad)) / 2
float drumRad = telemetry.ControlDrumAngleDeg * (MathF.PI / 180.0f);
float rhoDrumDollars = 1.2f * (1.0f - MathF.Cos(drumRad)) * 0.5f - 0.6f;
// 도플러 음의 반응도 피드백 (온도 상승 시 반응도 감소)
float dopplerFeedback = -0.00015f * (telemetry.FuelCoreTempK - TargetCoreTempK);
float netReactivity = rhoDrumDollars + dopplerFeedback;
// 5. 서보 지령값 산출: 목표 추력 달성을 위한 수소 유량 계산
float reqH2FlowKgS = (ispSec > 100.0f) ? (targetThrustKn * 1000.0f / exhaustVelocity) : 20.0f;
reqH2FlowKgS = Math.Clamp(reqH2FlowKgS, 5.0f, 40.0f);
// 6. 목표 코어 온도를 유지하기 위한 제어 드럼 각도 보정 (P-제어)
float tempError = TargetCoreTempK - telemetry.FuelCoreTempK;
float drumAngleDelta = tempError * 0.02f; // deg
float cmdDrumAngle = telemetry.ControlDrumAngleDeg + drumAngleDelta;
if (triggerScram)
{
// SCRAM: 모든 제어 드럼을 중성자 흡수 방향(0도)으로 급속 회전
cmdDrumAngle = 0.0f;
}
else
{
cmdDrumAngle = Math.Clamp(cmdDrumAngle, 0.0f, 180.0f);
}
return new NtpControlResult(
specificImpulseSec: ispSec,
thrustKiloNewtons: currentThrustKn,
netReactivityDollar: netReactivity,
commandedDrumAngleDeg: cmdDrumAngle,
commandedH2FlowKgS: reqH2FlowKgS,
isScramTriggered: triggerScram,
isThermalSafe: isThermalSafe
);
}
}
}
5. 방통대 랩실 및 국방 실무진 교수학습 가이드
1) 방통대 우호성 교수 랩실 교사 연수용 실험 설계
- 분자량과 비추력 상관관계 탐구: 2022 개정 물리학II 운동량과 열역학 단원에서 왜 물($\text{H}_2\text{O}$, $M=18$)이나 이산화탄소($\text{CO}_2$, $M=44$)보다 수소 분자($\text{H}_2$, $M=2$)를 배기 가스로 쓸 때 같은 원자로 온도에서 비추력이 3배 이상 폭증하는지 기체 분자 운동론으로 도출합니다.
- 원자로 지발중성자 동역학 시뮬레이션: 연쇄반응에서 1% 미만의 지발중성자가 원자로 제어 속도를 수백 초 단위로 늦춰 인류가 기계적으로 제어할 수 있게 만들어주는 안전 여유 원리를 수치 적분 코드로 확인합니다.
2) 국방 심우주 작전 및 초장거리 우주 추진체 실무 적용
- 화성 3개월 단축 유인 수송체: 화학 로켓 대비 페이로드(유효 탑재량)를 3배 증대시키고 비행시간을 6개월에서 90일로 단축하여 우주비행사의 우주 방사선 피폭량을 50% 이상 저감.
- 달 궤도 신속 기동 군사 정찰 플랫폼: 추진제 질량 소모를 극소화하면서 지구-달 라그랑주 점(L1/L2) 간 고속 궤도 전이 및 요충지 선점 기동을 상시 수행하는 핵열 추진 엔진 기술 확보.