2022 개정 교육과정 연계 온디바이스 심우주추진·플라스마물리 STEM 시리즈 #64

자기플라스마동역학(MPD) 추진기 로렌츠 서보 엔진

자체 유도 자기장 $\mathbf{j}\times\mathbf{B}$ 전자기 가속 및 0-Alloc C# 양극 전압 스파이크 불안정성 억제 제어 루프

핵심 연구 개요 및 교과 연계

화성 및 외행성 유인 탐사를 위한 대전력 전기 추진의 정점은 수천 암페어의 아크 전류가 생성하는 자체 유도 자기장과 방전 전류의 상호작용으로 플라스마를 초속 수십 km로 분사하는 자기플라스마동역학(MPD, Magnetoplasmadynamic) 추진기입니다. 추력 $T$는 로렌츠 전자기력($\mathbf{F} = \mathbf{j} \times \mathbf{B}$)에 의해 방전 전류의 제곱($I^2$)에 비례하여 메가와트급 초고추력을 발휘합니다. 그러나 특정 임계 전류($I_{crit}$)를 초과하면 양극 표면의 플라스마 결핍(Starvation)으로 인한 전압 스파이크 및 킨크(Kink)/핀치(Pinch) 거시적 불안정성이 발생하여 양극 삭마를 일으킵니다.

본 백서는 2022 개정 물리학 II (자기장 내 전류가 받는 힘과 앙페르 법칙, 플라스마 내 하전 입자의 집단 운동), 미적분 (원통 좌표계 MHD 운동량 보존 편미분방정식 및 맥스웰 응력 텐서 적분), 그리고 정보 (C# 13 0-Alloc 스택 연산)를 결합하여, 방전 전압 노이즈와 마에커(Maecker) 추력 파라미터를 1,000Hz로 감시하고 추진제 질량 유량을 미세 분사하는 온디바이스 심우주 MPD 추진 제어 서보를 구축합니다.

1. 마에커(Maecker) 전자기 추력 공식 및 플라스마 결핍 수리 모델

반경 $r_a$인 원통형 양극과 반경 $r_c$인 중심 음극 사이에서 아크 방전 전류 $I$가 흐를 때, 자기장의 압력 구배에 의해 발생하는 총 전자기 로렌츠 추력 $T_{em}$은 마에커 공식으로 기술됩니다:

$$T_{em} = \frac{\mu_0 I^2}{4 \pi} \left[ \ln\left(\frac{r_a}{r_c}\right) + \frac{3}{4} \right]$$

추진제 이온 질량 유량 $\dot{m}$ 대비 전류가 과도할 때 발생하는 전자기 불안정성 지표인 마에커 파라미터 $\xi$는 다음과 같이 정의됩니다:

$$\xi = \frac{I^2 / \dot{m}}{(I^2 / \dot{m})_{crit}}$$

$\xi > 1.0$ 영역에 도달하면 양극 부근의 전자 홀 파라미터($\omega_{ce} \tau_e$)가 급상승하여 양극 낙하 전압(Anode Fall)이 수백 볼트 이상 폭등하므로, 서보 루프는 질량 유량 $\dot{m}$을 고속 압전 밸브로 보충하여 $\xi \le 0.85$ 안전 마진을 강제합니다.

2. 0-Alloc C# 스택 기반 MPD 추진기 불안정성 억제 서보

방전 전압 리플 및 홀 파라미터로부터 전자기 핀치를 감지하고 압전 밸브 및 전력 펄스를 실시간 지휘하는 ref struct 루프입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.SpacePropulsion
{
    public readonly ref struct MpdThrusterTelemetry
    {
        public readonly double DischargeCurrentAmps;
        public readonly double DischargeVoltageVolts;
        public readonly double VoltageRippleRmsV;
        public readonly double PropellantMassFlowMgPerSec;
        public readonly double AnodeTemperatureC;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public MpdThrusterTelemetry(double currentA, double voltageV, double rippleV, double massFlowMgPs, double tempC)
        {
            DischargeCurrentAmps = currentA;
            DischargeVoltageVolts = voltageV;
            VoltageRippleRmsV = rippleV;
            PropellantMassFlowMgPerSec = massFlowMgPs;
            AnodeTemperatureC = tempC;
        }
    }

    public readonly ref struct MpdControlResult
    {
        public readonly double EstimatedLorentzThrustNewtons;
        public readonly double StarvationIndexXi;
        public readonly double PropellantFlowTrimDeltaMgPs;
        public readonly bool IsInstabilitySuppressed;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public MpdControlResult(double thrustN, double xi, double flowTrim, bool isSuppressed)
        {
            EstimatedLorentzThrustNewtons = thrustN;
            StarvationIndexXi = xi;
            PropellantFlowTrimDeltaMgPs = flowTrim;
            IsInstabilitySuppressed = isSuppressed;
        }
    }

    public ref struct MpdInstabilityServo
    {
        private const double Mu0Over4Pi = 1e-7;
        private readonly double _geometryFactor; // ln(ra/rc) + 0.75
        private readonly double _criticalCurrentRatio;
        private readonly double _kpFlow;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public MpdInstabilityServo(double raOverRc, double criticalRatio, double kp)
        {
            _geometryFactor = Math.Log(raOverRc) + 0.75;
            _criticalCurrentRatio = criticalRatio;
            _kpFlow = kp;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public MpdControlResult Step(in MpdThrusterTelemetry telemetry)
        {
            // 1. 마에커 로렌츠 전자기 추력 산출: T = (mu0 / 4pi) * I^2 * geomFactor
            double iSq = telemetry.DischargeCurrentAmps * telemetry.DischargeCurrentAmps;
            double thrustN = Mu0Over4Pi * iSq * _geometryFactor;

            // 2. 플라스마 결핍 지수 (Starvation Parameter Xi) 연산
            double currentFlowRatio = (iSq / Math.Max(1.0, telemetry.PropellantMassFlowMgPerSec));
            double xi = currentFlowRatio / Math.Max(1.0, _criticalCurrentRatio);

            // 3. 전압 리플 기반 양극 불안정성 조기 경보
            bool voltageSpike = telemetry.VoltageRippleRmsV > 15.0;

            // 4. 추진제 가스 밸브 보정 유량 산출 (불안정성 위험 시 긴급 가스 분사)
            double flowTrim = 0.0;
            if (xi > 0.85 || voltageSpike)
            {
                flowTrim = _kpFlow * (xi - 0.80) * 10.0 + (voltageSpike ? 5.0 : 0.0);
            }

            bool isSuppressed = (xi <= 0.85) && !voltageSpike;

            return new MpdControlResult(thrustN, xi, flowTrim, isSuppressed);
        }
    }
}

3. 교육적 가치 및 중고교 실험 시뮬레이션 적용

2022 개정 교육과정 연계 수업 가이드

  • 물리학 II [전류와 자기장, 전자기력]: 도선 주위의 원형 자기장과 전류의 상호작용으로 발생하는 로렌츠 힘이 기계적 부품 없이 기체를 가속하는 원리 학습.
  • 물리학 II [운동량 보존과 로켓 추진]: 이온 가속 속도(수십 km/s)와 비추력(Isp)의 비례 관계를 수학적으로 유도하고 화학 로켓과의 성능 차이 비교.
  • 정보 [임베디드 제어와 안전 루프]: 초고온 아크 방전 중 전압 스파이크를 마이크로초 단위로 포착하여 밸브 유량을 적응 제어하는 하드웨어 제어 소프트웨어 설계.