2022 개정 교육과정 연계 온디바이스 가속기물리·양자빔광학 STEM 시리즈 #76

방사광 가속기 언듈레이터(Undulator) 위상 오차 및 전자 궤도 보정 서보 엔진

X선 자유전자레이저(XFEL) 간섭성 유지를 위한 서브마이크론 전자 궤도 왜곡 극복 및 0-Alloc C# FOFB 제어 루프

핵심 연구 개요 및 교과 연계

물질의 나노 초미세 구조와 펨토초 화학 반응을 규명하는 첨단 거대연구시설인 4세대 X선 자유전자레이저(XFEL)의 핵심은 수십 개의 주기적 영구자석 배열(Halbach Array)로 구성된 언듈레이터(Undulator) 라인입니다. 수 GeV의 초상대론적 전자가 언듈레이터 자기장($B_y \sim 1\text{ T}$) 속을 사행(Sinuous) 운동할 때 방출되는 X선 펄스와 전자 다발 사이의 마이크로번칭(Microbunching)이 유지되려면, 전자 궤도의 횡방향 이탈이 $1\,\mu\text{m}$ 미만으로, 광자와 전자 간의 위상 미끄러짐(Phase Jitter)이 수 도 이내로 엄격히 제어되어야 합니다.

본 백서는 2022 개정 물리학 II (자기장 내 상대론적 하전 입자의 운동과 로렌츠 힘, 가속 전하의 전자기파 복사), 미적분 (전자기장 적분을 통한 궤도 1차/2차 필드 적분치 산출 및 비선형 빔 동역학), 그리고 정보 (C# 13 0-Alloc 스택 연산)를 융합하여, 수십 개의 스트립라인 빔 위치 모니터(BPM) 데이터를 1,000Hz 주기로 취합하고 보정 전자기석(Corrector Magnet) 전류를 실시간 출력하는 온디바이스 초정밀 고속 궤도 피드백(FOFB) 서보 아키텍처를 설계합니다.

1. 언듈레이터 복사 파장 및 궤도 필드 적분(Field Integrals) 수리 모델

주기 $\lambda_u$, 편향 파라미터 $K = \frac{e B_0 \lambda_u}{2\pi m_e c}$인 언듈레이터에서 축상으로 방출되는 공진 X선 파장은 다음과 같습니다:

$$\lambda_{rad} = \frac{\lambda_u}{2 \gamma^2} \left( 1 + \frac{K^2}{2} + \gamma^2 \theta^2 \right)$$

전자의 각도 휨 $x'(z)$과 위치 편차 $x(z)$는 언듈레이터 자기장의 1차 및 2차 필드 적분치에 의해 지배됩니다:

$$I_1(z) = \int_0^z B_y(z') dz' = \frac{\gamma m_e v_z}{e} x'(z), \quad I_2(z) = \int_0^z I_1(z') dz' = \frac{\gamma m_e v_z}{e} x(z)$$

자석 가공 오차나 온도 변화로 인한 필드 불균일은 $I_1 \neq 0, I_2 \neq 0$ 잔류치를 유발하여 전자가 방사 광선과 어긋나게 하므로, 서보 루프는 언듈레이터 입/출구 수평·수직 보정 자석을 구동하여 궤도 적분을 0으로 강제 수렴시킵니다.

2. 0-Alloc C# 스택 기반 가속기 고속 궤도 피드백(FOFB) 서보

서브마이크론 BPM 측정치로부터 SVD(특이값 분해) 역응답 행렬 곱을 스택 메모리 내에서 1,000Hz로 수행하는 ref struct 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.AcceleratorPhysics
{
    public readonly ref struct BpmOrbitTelemetry
    {
        public readonly double PositionXUm;
        public readonly double PositionYUm;
        public readonly double BeamCurrentMa;
        public readonly double PhaseJitterDeg;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public BpmOrbitTelemetry(double posXUm, double posYUm, double currentMa, double phaseJitterDeg)
        {
            PositionXUm = posXUm;
            PositionYUm = posYUm;
            BeamCurrentMa = currentMa;
            PhaseJitterDeg = phaseJitterDeg;
        }
    }

    public readonly ref struct OrbitCorrectionResult
    {
        public readonly double CorrectorCurrentXAmps;
        public readonly double CorrectorCurrentYAmps;
        public readonly double PhaseShifterDeltaMm;
        public readonly bool IsLasingOptimized;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OrbitCorrectionResult(double currX, double currY, double psDeltaMm, bool isOptimized)
        {
            CorrectorCurrentXAmps = currX;
            CorrectorCurrentYAmps = currY;
            PhaseShifterDeltaMm = psDeltaMm;
            IsLasingOptimized = isOptimized;
        }
    }

    public ref struct UndulatorOrbitServo
    {
        private readonly double _responseMatrixX;
        private readonly double _responseMatrixY;
        private readonly double _kp;
        private readonly double _ki;
        private double _integratedErrorX;
        private double _integratedErrorY;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public UndulatorOrbitServo(double respX, double respY, double kp, double ki)
        {
            _responseMatrixX = respX;
            _responseMatrixY = respY;
            _kp = kp;
            _ki = ki;
            _integratedErrorX = 0.0;
            _integratedErrorY = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OrbitCorrectionResult Step(in BpmOrbitTelemetry telemetry, double dt)
        {
            // 1. 궤도 변위 오차 적분
            _integratedErrorX += telemetry.PositionXUm * dt;
            _integratedErrorY += telemetry.PositionYUm * dt;

            // 2. PI 제어 기반 보정 전자기석 전류 계산 (Amp = Response * Error)
            double deltaCurrentX = _responseMatrixX * (_kp * telemetry.PositionXUm + _ki * _integratedErrorX);
            double deltaCurrentY = _responseMatrixY * (_kp * telemetry.PositionYUm + _ki * _integratedErrorY);

            // 3. 언듈레이터 세그먼트 간 위상 천이기(Phase Shifter) 마이크로 갭 제어
            double phaseShifterDeltaMm = -0.005 * telemetry.PhaseJitterDeg;

            // 4. 레이징 최적화 상태 판별 (변위 0.5um 이내, 위상 오차 5도 이내)
            bool isOptimized = Math.Abs(telemetry.PositionXUm) < 0.5 &&
                               Math.Abs(telemetry.PositionYUm) < 0.5 &&
                               Math.Abs(telemetry.PhaseJitterDeg) < 5.0;

            return new OrbitCorrectionResult(deltaCurrentX, deltaCurrentY, phaseShifterDeltaMm, isOptimized);
        }
    }
}

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

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

  • 물리학 II [자기장과 전자기력]: 교번 자기장 속을 지나는 상대론적 전자가 지그재그로 휘어지며 싱크로트론 전자기파를 방출하는 원리를 3차원 입자 궤적 시뮬레이터로 학습.
  • 물리학 II [특수 상대성 이론과 전자기파]: 빛의 속도에 극도로 가까운 전자의 관점($1/\gamma$ 공간 수축)에서 언듈레이터 주기가 수렴하여 극초단 X선이 생성되는 상대론적 도플러 효과 이해.
  • 정보 [행렬 연산과 피드백 제어]: 다중 입력 다중 출력(MIMO) 궤도 응답 행렬의 역행렬을 이용해 실시간으로 수십 개의 자석 전류를 동기화하는 가속기 제어 컴퓨터 시스템 체험.