원자력 발전소의 궁극적 안전성은 후쿠시마 사고와 같은 외부 전원 완전 상실(Station Blackout, SBO) 상황에서도 노심의 잔류 붕괴열(Decay Heat)을 외부 동력 없이 냉각할 수 있는가에 달려 있습니다. 혁신형 소형 모듈 원자로(i-SMR)는 펌프나 비상 발전기 개입 없이 오직 유체의 온도차에 따른 밀도차와 중력 부력만으로 구동되는 피동 잔열 제거 계통(Passive Residual Heat Removal System, PRHRS)을 채택하고 있습니다. 보우시네스크(Boussinesq) 자연 순환 1차원 운동량-에너지 보존 적분 방정식을 1,000Hz 주기로 0-Alloc C# 수치해석하는 고신뢰성 열수력 시뮬레이터를 공개합니다.

1. 2022 개정 교육과정 교과 연계 분석

  • 물리학 (열역학, 보우시네스크 부력 및 자연 대류 유체역학): 고온 노심과 저온 비상 냉각수조(ECT) 간의 밀도차 $\Delta\rho = -\rho_0 \beta \Delta T$에 의해 발생하는 구동 수두 $\Delta P_{buoyancy} = \oint \rho(z) g dz$ 및 배관 마찰 압력 손실 $\Delta P_{friction} = \sum K \frac{\rho v^2}{2}$.
  • 화학/재료공학 (핵분열 생성물 방사성 붕괴열 및 지르칼로이 수소 취화 방지): 웨이-위그너(Way-Wigner) 잔열 붕괴 공식 $P(t) = P_0 \cdot 0.0622 (t^{-0.2} - (t_0+t)^{-0.2})$, 피복재 온도 1,200°C 이하 억제를 통한 수소 폭발 원천 방지.
  • 수학 (폐루프 적분 방정식 및 비선형 1계 미분방정식 룬게-쿠타 적분): 질량·운동량·에너지 보존 결합 상미분방정식(ODE) $\frac{d \dot{m}}{dt} = \frac{A}{L} \left( g \beta \rho_0 \oint T dz - \frac{f L}{2 D A^2 \rho_0} \dot{m}^2 \right)$의 실시간 수치 적분.
  • 정보 (무할당 실시간 1,000Hz 노심 온도 감시 및 자연 대류 유량 수치 해석 코어): 1ms 제어 주기 내에서 가비지 컬렉션(GC) 멈춤 없이 수천 초의 장기 수동 냉각 거동을 0-Alloc 고속 연산하는 C# 온디바이스 시뮬레이터.

2. SMR 자연 순환 열수력 수식 모델

노심 열출력 $Q_{core}$, 비상 냉각조(ECT) 방열량 $Q_{sink}$, 폐루프 유량 $\dot{m}$ 및 유효 고저차 $H$에 대해 자연 순환 구동력과 유동 마찰 저항의 평형식은 다음과 같습니다:

$$\Delta P_{drive} = \rho_0 g \beta (T_{hot} - T_{cold}) H$$ $$\Delta P_{loss} = \left( f \frac{L}{D} + \sum K_{loss} \right) \frac{\dot{m}^2}{2 \rho_0 A^2}$$

준정상 상태에서 $\Delta P_{drive} = \Delta P_{loss}$가 성립하며, 노심 온도 상승 $\Delta T = \frac{Q_{core}}{\dot{m} C_p}$를 대입하면 정상 자연 순환 유량 $\dot{m}_{ss}$는 3승근 스케일링을 따릅니다:

$$\dot{m}_{ss} = \left( \frac{2 g \beta H A^2 \rho_0^2 Q_{core}}{C_p \sum K_{eff}} \right)^{1/3}$$

3. 1,000Hz 0-Alloc C# 자연 순환 열수력 코어

GC 힙 할당을 완전히 배제하고 ref struct 기반으로 1ms 주기마다 질량 유량과 노심 온도를 고속 갱신하는 순수 C# 고성능 연산 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.NuclearEnergy;

/// 
/// SMR 수동 잔열 제거 계통(PRHRS) 열수력 상태 구조체 (100% Stack Allocation)
/// 
public readonly ref struct PrhrsState
{
    public readonly double CorePowerWatts;       // 노심 붕괴열 (W)
    public readonly double CoreTempCelsius;      // 노심 평균 냉각재 온도 (°C)
    public readonly double SinkTempCelsius;      // 비상냉각수조 온도 (°C)
    public readonly double MassFlowRateKgS;      // 자연 순환 유량 (kg/s)
    public readonly double BuoyancyHeadPa;       // 자연 대류 구동 수두 (Pa)
    public readonly double FrictionLossPa;       // 루프 마찰 손실 압력 (Pa)
    public readonly double CoolingMarginKelvin;  // 피복재 임계 온도 여유도 (K)

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public PrhrsState(
        double corePowerWatts,
        double coreTempCelsius,
        double sinkTempCelsius,
        double massFlowRateKgS,
        double buoyancyHeadPa,
        double frictionLossPa,
        double coolingMarginKelvin)
    {
        CorePowerWatts = corePowerWatts;
        CoreTempCelsius = coreTempCelsius;
        SinkTempCelsius = sinkTempCelsius;
        MassFlowRateKgS = massFlowRateKgS;
        BuoyancyHeadPa = buoyancyHeadPa;
        FrictionLossPa = frictionLossPa;
        CoolingMarginKelvin = coolingMarginKelvin;
    }
}

/// 
/// 1,000Hz 0-Alloc C# i-SMR 피동 잔열 제거 자연 순환 시뮬레이터
/// 
public static class SmrPassiveCoolingEngine
{
    private const double Gravity = 9.80665;              // 중력가속도 (m/s^2)
    private const double Rho0 = 750.0;                   // 고온 고압수 기준 밀도 (kg/m^3)
    private const double Beta = 0.0021;                  // 열팽창계수 (1/K)
    private const double SpecificHeatCp = 5200.0;        // 정압 비열 (J/kg·K)
    private const double LoopHeight = 8.5;               // 노심-열교환기 유효 고저차 (m)
    private const double FlowArea = 0.045;               // 배관 유로 단면적 (m^2)
    private const double TotalLossCoeff = 18.5;          // 총 손실 계수 K_eff
    private const double CladdingLimitTemp = 1200.0;     // 지르칼로이 한계 온도 (°C)

    /// 
    /// 1ms 타임스텝 자연 대류 열수력 미분 연립방정식 전진 오일러 해석 (0-Alloc)
    /// 
    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public static PrhrsState StepSimulation(
        double decayTimeSec,
        double currentCoreTemp,
        double currentFlowRate,
        double dtSec = 0.001)
    {
        // 1. Way-Wigner 붕괴열 연산 (기준 100MWth 노심)
        double tSafe = Math.Max(decayTimeSec, 1.0);
        double decayPower = 100e6 * 0.0622 * (Math.Pow(tSafe, -0.2) - Math.Pow(tSafe + 1e7, -0.2));

        double sinkTemp = 35.0; // 비상냉각수조(ECT) 수온 (°C)
        double deltaT = Math.Max(currentCoreTemp - sinkTemp, 0.1);

        // 2. 부력 구동 수두 계산: ΔP_buoy = ρ0 * g * β * ΔT * H
        double buoyancyHead = Rho0 * Gravity * Beta * deltaT * LoopHeight;

        // 3. 루프 유동 마찰 손실 계산: ΔP_loss = K * m_dot^2 / (2 * ρ0 * A^2)
        double safeFlow = Math.Max(currentFlowRate, 0.01);
        double frictionLoss = TotalLossCoeff * (safeFlow * safeFlow) / (2.0 * Rho0 * FlowArea * FlowArea);

        // 4. 운동량 보존식 미분: dm_dot/dt = (A / L) * (ΔP_buoy - ΔP_loss)
        double loopLength = 22.0;
        double dFlowDt = (FlowArea / loopLength) * (buoyancyHead - frictionLoss);
        double nextFlow = Math.Max(currentFlowRate + dFlowDt * dtSec, 0.05);

        // 5. 에너지 보존식: dT_core/dt = (Q_decay - m_dot * Cp * ΔT) / HeatCapacity
        double coreHeatCap = 1.2e7; // J/K
        double heatRemoved = nextFlow * SpecificHeatCp * deltaT;
        double dTempDt = (decayPower - heatRemoved) / coreHeatCap;
        double nextCoreTemp = currentCoreTemp + dTempDt * dtSec;

        double margin = CladdingLimitTemp - nextCoreTemp;

        return new PrhrsState(
            decayPower,
            nextCoreTemp,
            nextFlow,
            buoyancyHead,
            frictionLoss,
            margin);
    }
}

4. 교육 및 산업적 시사점

2022 개정 교육과정의 물리(열역학 제1법칙, 유체 연속 방정식, 베르누이 정리 및 부력)와 화학(방사성 동위원소 붕괴, 핵반응 질량 결손, 고온 부식 반응)을 단일 폐루프 시스템에서 통합적으로 학습할 수 있습니다. 특히 SMR의 핵심 경쟁력인 피동 안전 개념을 실제 원전 안전해석 코드(RELAP5, MARS)와 동일한 물리 수학적 원리로 온디바이스에서 1,000Hz 실시간 시뮬레이션함으로써, 차세대 원자력 공학 인재 양성에 탁월한 교육 교구로 기능합니다.