AIDT 온디바이스 STEM 테라헤르츠(THz) 자이로트론 전자 사이클로트론 공진 캐비티 서보 제어기

상대론적 전자 빔-고주파 TE03 모드 결맞음 상호작용, 마이크로미터 공동 열팽창 보정, 10,000Hz C# 엔진

1. 개요

핵융합 토카막(KSTAR, ITER)의 고온 플라스마 전자 사이클로트론 가열(ECRH) 및 초고출력 서브-밀리미터파 분광학의 핵심 광원인 자이로트론(Gyrotron)은 상대론적 전자 빔이 강한 축방향 자기장 속에서 나선 궤도로 회전할 때 발생하는 사이클로트론 방사를 유도 방출(Stimulated Emission)시켜 메가와트(MW)급 고출력 테라헤르츠 전자기파를 생성합니다. 수십 kV로 가속된 전자 빔이 고품질 인자(\(Q \approx 10,000\))를 갖는 원통형 개방 공진기(Cavity Resonator)를 통과할 때, 방위각 고차 전자기파 모드(\(\text{TE}_{03}\) 등)와 결맞는 에너지 교환을 이룹니다. 그러나 MW급 메가와트 펄스 방사 시 공진기 구리 벽면에 유입되는 막대한 오믹 열부하(\(\sim 1\text{ kW/cm}^2\))는 공동 직경을 마이크로미터 단위로 팽창시켜 공진 주파수 이탈 및 경쟁 기생 모드(Mode Competition)로의 붕괴를 초래합니다. 본 고에서는 10,000Hz 주기로 냉각 유량 및 초전도 마그넷 자장을 미세 튜닝하여 단일 모드 진동을 영구 고정하는 0-Alloc C# 서보 엔진을 구현합니다.

2. 수학적 모델링 및 지배 방정식

상대론적 전자 사이클로트론 공진 주파수 \(\omega_c\) 및 빔-파동 상대론적 상호작용 방정식은 다음과 같습니다:

\[ \omega \approx s \omega_c = s \frac{e B_0}{\gamma_r m_e}, \quad \gamma_r = \frac{1}{\sqrt{1 - v^2/c^2}} = 1 + \frac{e V_{beam}}{m_e c^2} \]

원통형 공진기 모드 \(\text{TE}_{mp}\)의 차단 주파수 \(f_{cut}\) 및 반경 \(R_0\) 관계식은 다음과 같습니다:

\[ f_{cut} = \frac{\chi'_{mp} c}{2\pi R_0(T)}, \quad R_0(T) = R_{0, init} \left( 1 + \alpha_{Cu} \Delta T_{wall} \right) \]

전자 빔 효율 \(\eta_{elec}\) 및 위상 번칭(Phase Bunching) 에너지 변환 미분 방정식은 다음과 같습니다:

\[ \frac{d u_t}{d z} = - \frac{e E_{rf}(z)}{\gamma_r m_e v_z} \cos(\theta_bunch), \quad \eta_{elec} = \frac{\gamma_{in} - \langle \gamma_{out} \rangle}{\gamma_{in} - 1} \ge 35\% \]

기생 모드 발진 억제를 위한 기동 전류(Starting Current) 분리 부등식은 다음과 같습니다:

\[ I_{start}(\text{TE}_{03}) \le I_{beam} \le I_{start}(\text{TE}_{23}) \quad (\Delta I_{margin} \ge 2.0\text{ A}) \]

3. 실시간 C# 서보 제어기 구현

다음은 RF 검출 전력과 공동 벽면 열전대를 10,000Hz 주기로 분석하여 초전도 코일 전류를 보정하는 0-Alloc C# 엔진 구현체입니다:

ThzGyrotronCavityServoEngine.cs
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.Gyrotron
{
    public readonly ref struct GyrotronSensorFrame
    {
        public readonly double OutputRfPowerMegaWatts;
        public readonly double TargetRfPowerMegaWatts;
        public readonly double CavityWallTempCelsius;
        public readonly double BeamVoltageKv;
        public readonly double BeamCurrentAmps;
        public readonly double SuperconductingFieldTesla;

        public GyrotronSensorFrame(
            double outputRfPowerMegaWatts,
            double targetRfPowerMegaWatts,
            double cavityWallTempCelsius,
            double beamVoltageKv,
            double beamCurrentAmps,
            double superconductingFieldTesla)
        {
            OutputRfPowerMegaWatts = outputRfPowerMegaWatts;
            TargetRfPowerMegaWatts = targetRfPowerMegaWatts;
            CavityWallTempCelsius = cavityWallTempCelsius;
            BeamVoltageKv = beamVoltageKv;
            BeamCurrentAmps = beamCurrentAmps;
            SuperconductingFieldTesla = superconductingFieldTesla;
        }
    }

    public ref struct GyrotronControlCommand
    {
        public double MagneticFieldTrimCurrentAmps;
        public double CoolantValveDutyPercent;
        public double ElectronicEfficiencyPercent;
        public double ResonantFrequencyShiftMhz;
        public bool IsSingleModeOscillationStable;
    }

    public ref struct ThzGyrotronCavityServoEngine
    {
        private const double BaseFrequencyGhz = 170.0; // 170 GHz ITER standard
        private readonly double _kpField;
        private readonly double _kiField;
        private readonly double _dt;
        private double _powerErrorIntegral;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public ThzGyrotronCavityServoEngine(double kpField, double kiField, double dt)
        {
            _kpField = kpField;
            _kiField = kiField;
            _dt = dt;
            _powerErrorIntegral = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void ComputeCavityStabilization(in GyrotronSensorFrame frame, out GyrotronControlCommand cmd)
        {
            cmd = default;
            double pErr = frame.TargetRfPowerMegaWatts - frame.OutputRfPowerMegaWatts;
            _powerErrorIntegral += pErr * _dt;
            if (_powerErrorIntegral > 2.0) _powerErrorIntegral = 2.0;
            else if (_powerErrorIntegral < -2.0) _powerErrorIntegral = -2.0;

            // Magnetic field trim (amps in superconducting auxiliary coil)
            double fieldTrim = (_kpField * pErr) + (_kiField * _powerErrorIntegral);
            fieldTrim = Math.Clamp(fieldTrim, -10.0, 10.0);

            // Thermal expansion of cavity: Copper alpha = 16.5e-6 / C
            double deltaT = frame.CavityWallTempCelsius - 25.0;
            double deltaRadiusFraction = 16.5e-6 * deltaT;
            double freqShiftMhz = -BaseFrequencyGhz * 1000.0 * deltaRadiusFraction;

            // Coolant valve duty to maintain cavity <= 60C
            double valveDuty = Math.Clamp((frame.CavityWallTempCelsius - 30.0) / 40.0, 0.1, 1.0) * 100.0;

            // Electrical efficiency = P_rf / (V_beam * I_beam)
            double pInputMw = (frame.BeamVoltageKv * frame.BeamCurrentAmps) * 1e-3;
            double eff = (frame.OutputRfPowerMegaWatts / Math.Max(0.1, pInputMw)) * 100.0;

            cmd.MagneticFieldTrimCurrentAmps = fieldTrim;
            cmd.CoolantValveDutyPercent = valveDuty;
            cmd.ElectronicEfficiencyPercent = eff;
            cmd.ResonantFrequencyShiftMhz = freqShiftMhz;
            cmd.IsSingleModeOscillationStable = Math.Abs(pErr) < 0.05 && eff >= 35.0;
        }
    }
}

4. 교육 및 실무 적용 방안

  • 한국방송통신대학교 AI 교구: 상대론적 전자기학, 사이클로트론 방사, 핵융합 플라스마 ECRH 가열 시뮬레이션.
  • 국가 핵융합연구원(KFE) KSTAR 및 차세대 가열 장치: 테라헤르츠 고출력 자이로트론 공동 온도 및 자장 서보 제어기 탑재.