소행성 탐사선(하야부사, DART)과 심우주 탐사선의 핵심 전기 추진 기관인 정전 그리드형 이온 추진기(Gridded Ion Thruster)는 크세논($\text{Xe}$) 플라즈마에서 추출한 양이온을 수 킬로볼트($\text{kV}$)의 고전압 그리드 시스템을 통해 가속하여 3,000초 이상의 초고비추력($I_{sp}$)을 발휘합니다. 그러나 추출 전류 밀도를 제한하는 차일드-랭뮤어(Child-Langmuir) 공간전하 효과와 전하교환(CEX) 이온에 의한 몰리브덴 가속 그리드의 스퍼터링 침식(Sputter Erosion)은 추진기 수명을 결정하는 최대 병목입니다. 이온 빔 광학 궤적과 그리드 마모를 1,000Hz 주기로 0-Alloc C# 시뮬레이션하는 우주 추진 제어 엔진을 공개합니다.

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

  • 물리학 (전기장과 전위, 로런츠 힘 및 공간전하 제한 전류): 정전기 가속 쿨롱 힘 $\mathbf{F} = q\mathbf{E}$, 차일드-랭뮤어(Child-Langmuir) 1차원 공간전하 제한 전류 밀도 $J_{CL} = \frac{4\epsilon_0}{9} \sqrt{\frac{2q}{m}} \frac{V^{3/2}}{d^2}$, 이온 배출 속도 $v = \sqrt{2qV/m}$.
  • 화학/플라즈마물리 (기체 방전 전리, 충돌 단면적 및 이온 스퍼터링): 크세논 전자 충격 이온화($\text{Xe} + e^- \to \text{Xe}^+ + 2e^-$), 전하교환(CEX, $\text{Xe}^+_{fast} + \text{Xe}^0_{slow} \to \text{Xe}^0_{fast} + \text{Xe}^+_{slow}$) 저에너지 이온 생성 및 야마무라(Yamamura) 스퍼터 침식 수율.
  • 수학 (프와송 정전기 편미분방정식 및 이온 궤적 4차 룬게-쿠타 적분): 비선형 프와송 방정식 $\nabla^2 V = -\frac{\rho_{ion}}{\epsilon_0}$ 자기일치(Self-Consistent) 유한차분 해석 및 그리드 홀 통과 이온 빔 발산각 최소화.
  • 정보 (초저지연 1,000Hz 0-Alloc 스크린-가속 그리드 전압 안전 서보 코어): 1ms 루프 내에서 가비지 컬렉터 부하 없이 스택 메모리(`ref struct`)로 그리드 간 마이크로 방전 아킹(Arcing) 징후를 감지하고 빔 전류를 실시간 제어하는 C# 알고리즘.

2. 차일드-랭뮤어 공간전하 및 그리드 CEX 침식 수식 모델

스크린 그리드(전위 $V_s > 0$)와 가속 그리드(전위 $V_a < 0$) 사이의 유효 가속 간격 $d_{eff}$에서의 1차원 차일드-랭뮤어 공간전하 제한 전류 밀도 $J_{CL}$는 다음과 같습니다:

$$J_{CL} = \frac{4\epsilon_0}{9} \sqrt{\frac{2q}{M_{Xe}}} \frac{V_{total}^{3/2}}{d_{eff}^2}, \quad V_{total} = V_s + |V_a|$$

여기서 $M_{Xe} \approx 2.18 \times 10^{-25}\,\text{kg}$입니다. 추출 전류 밀도 $J$가 $J_{CL}$에 근접하면 그리드 홀 중심에서 이온 빔이 과도 발산(Perveance Mismatch)하여 가속 그리드 홀 가장자리에 직접 충돌(Direct Impingement)하게 됩니다.

또한 미전리된 중성 크세논 가스와 고속 이온 간의 전하교환(CEX)으로 생성된 저속 $\text{Xe}^+$ 이온은 음전위 가속 그리드로 끌려가 충돌하며 스퍼터링 침식 속도 $\dot{d}_{wear}$를 유발합니다:

$$\dot{d}_{wear} = \frac{J_{CEX} Y(E_{ion}, \theta) M_{grid}}{\rho_{grid} e N_A} \quad [\text{m/s}]$$

여기서 몰리브덴(Mo) 그리드의 스퍼터 수율 $Y(E)$는 입사 이온 에너지 $E_{ion} \approx e |V_a|$의 함수입니다. 가속 그리드의 웹 두께가 침식되어 관통되면 홀 기하구조가 붕괴되어 빔 제어가 불가능해집니다.

3. 1,000Hz 0-Alloc C# 이온 추진기 제어 엔진

다음은 1ms 샘플링 레이트에서 가비지 컬렉터 없이 스택 메모리를 활용하여 공간전하 한계비, 추력, 비추력 및 그리드 침식 마모율을 연산하는 C# 엔진입니다.

IonThrusterGridEngine.cs (Zero-Allocation C# Electric Propulsion Core)
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.ElectricPropulsion;

public readonly ref struct IonThrusterState
{
    public readonly double BeamCurrentAmperes;
    public readonly double ThrustMilliNewtons;
    public readonly double SpecificImpulseSec;
    public readonly double GridErosionRateNmPerHour;
    public readonly bool IsDirectImpingementRisk;

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public IonThrusterState(double iBeam, double thrustMn, double isp, double erosionNmH, bool risk)
    {
        BeamCurrentAmperes = iBeam;
        ThrustMilliNewtons = thrustMn;
        SpecificImpulseSec = isp;
        GridErosionRateNmPerHour = erosionNmH;
        IsDirectImpingementRisk = risk;
    }
}

public ref struct IonThrusterGridSimulator
{
    private const double Epsilon0 = 8.8541878e-12;
    private const double ElectronCharge = 1.602176634e-19;
    private const double XenonMassKg = 2.18e-25; // Xe 원자 질량
    private const double GridGapMeters = 0.001; // 1mm 그리드 간극
    private const double GridAreaM2 = 0.07; // 30cm 직경 그리드 유효 면적
    private const double GravityG0 = 9.80665;

    private double _screenVoltageV;
    private double _accelVoltageV;

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public IonThrusterGridSimulator(double screenV = 1100.0, double accelV = -250.0)
    {
        _screenVoltageV = screenV;
        _accelVoltageV = accelV;
    }

    [MethodImpl(MethodImplOptions.AggressiveInlining)]
    public IonThrusterState Step(double requestedBeamCurrentA, double neutralGasLeakFraction = 0.15)
    {
        double vTotal = _screenVoltageV + Math.Abs(_accelVoltageV);

        // 1. 차일드-랭뮤어 공간전하 제한 전류 밀도 산출 (A/m^2)
        double prefactor = (4.0 * Epsilon0 / 9.0) * Math.Sqrt(2.0 * ElectronCharge / XenonMassKg);
        double jChildLangmuir = prefactor * Math.Pow(vTotal, 1.5) / (GridGapMeters * GridGapMeters);
        double maxBeamCurrentA = jChildLangmuir * GridAreaM2 * 0.7; // 그리드 개구율 70%

        // 2. 유효 빔 전류 및 펄비언스 불일치(Direct Impingement) 위험 판정
        double actualBeamCurrent = Math.Min(requestedBeamCurrentA, maxBeamCurrentA);
        double perveanceRatio = actualBeamCurrent / Math.Max(0.01, maxBeamCurrentA);
        bool directImpingement = perveanceRatio > 0.88 || perveanceRatio < 0.35; // 과소/과대 시 빔 발산 충돌

        // 3. 이온 배출 속도, 비추력 및 추력 산출
        double ionVelocityMps = Math.Sqrt(2.0 * ElectronCharge * _screenVoltageV / XenonMassKg);
        double specificImpulseSec = (ionVelocityMps * 0.98) / GravityG0; // 발산 손실 보정
        double massFlowRateKgS = (actualBeamCurrent / ElectronCharge) * XenonMassKg * (1.0 + neutralGasLeakFraction);
        double thrustNewtons = (actualBeamCurrent / ElectronCharge) * XenonMassKg * ionVelocityMps * 0.98;
        double thrustMilliNewtons = thrustNewtons * 1e3;

        // 4. 전하교환(CEX) 이온에 의한 몰리브덴 가속 그리드 스퍼터 마모율 (nm/hour)
        double accelEnergyEv = Math.Abs(_accelVoltageV);
        double sputterYieldMo = 0.012 * Math.Sqrt(Math.Max(0.0, (accelEnergyEv - 40.0) / 100.0)); // 40eV 문턱 전위
        double cexCurrentA = actualBeamCurrent * neutralGasLeakFraction * 0.08;
        double erosionRateMps = (cexCurrentA * sputterYieldMo * 0.096) / (10280.0 * ElectronCharge * 6.022e23); // Mo 밀도 10280 kg/m^3
        double erosionRateNmPerHour = erosionRateMps * 1e9 * 3600.0;

        return new IonThrusterState(actualBeamCurrent, thrustMilliNewtons, specificImpulseSec, erosionRateNmPerHour, directImpingement);
    }
}

4. 심우주 탐사선 및 첨단 우주추진 실무 응용

  • 한국항공우주연구원(KARI) 및 인공위성 전기추진 개발팀: 정지궤도 위성 동서/남북 위치유지(SK) 및 심우주 소행성 탐사용 고효율 정전 그리드 추진기 수명 모델링 교구.
  • 방통대 우호성 교수 랩실: 2022 개정 물리학Ⅰ 정전기력과 등가속도 운동 및 화학Ⅰ 이온화 에너지 단원을 결합한 최첨단 우주추진 공학 직무연수 프로그램.
  • 우주항공청(KASA) 및 위성 제조 기업: 10,000시간 연속 운전 신뢰성 보장을 위한 1,000Hz 0-Alloc 스택 C# 온디바이스 그리드 아킹 감지 및 전원 제어기(PPU) 구축.