화성 유인 탐사 및 심우주 성간 비행에서 비추력(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) 간 고속 궤도 전이 및 요충지 선점 기동을 상시 수행하는 핵열 추진 엔진 기술 확보.