2022 개정 교육과정 연계 온디바이스 펨토초레이저분광·분자광물리 STEM 시리즈 #53

과도 흡수 분광기(TAS) 처프 보정 서보 엔진

사파이어 판 자기집속 백색광 군지연 분산(GVD) 동적 상쇄 및 0-Alloc C# 압전 광학 지연선 제어 루프

핵심 연구 개요 및 교과 연계

화학 결합이 끊어지고 형성되는 펨토초($10^{-15}\text{ s}$) 찰나의 전이 상태(Transition State)를 포착하는 궁극의 화학 관측 장비는 펨토초 과도 흡수 분광기(TAS, Transient Absorption Spectroscopy)입니다. 강력한 펌프(Pump) 펄스로 분자를 여기시킨 후, 사파이어 결정에서 자기 집속(Self-focusing)으로 생성된 광대역 백색광 연속체(White-light Continuum, $400\sim 800\text{ nm}$) 프로브 펄스를 입사시켜 흡광도 차이($\Delta A(\lambda, t) = -\log_{10}(I_{pump-on} / I_{pump-off})$)를 측정합니다. 그러나 광학 렌즈와 용매를 통과할 때 물질의 파장별 굴절률 차이로 인해 단파장(청색광)이 장파장(적색광)보다 지연되는 군지연 분산(GVD, Group Velocity Dispersion) 처프(Chirp)가 발생하여 파장마다 시간 영점($T_0(\lambda)$)이 수백 펨토초씩 왜곡됩니다.

본 백서는 2022 개정 화학 II (화학 반응 속도와 전이 상태 이론, 빛의 흡수와 분자 오비탈 들뜸), 물리학 II (빛의 굴절과 분산, 비선형 광학 커 효과, 군지연 분산), 미적분 (코시(Cauchy) 분산 공식 2차 테일러 미분 및 2차원 분광 매트릭스 보간 적분), 그리고 정보 (C# 13 0-Alloc 스택 연산)를 융합하여, 다파장 다이오드 어레이 신호로부터 처프 곡선을 실시간 다항식 피팅하고 압전 모터 지연선(Delay Stage)을 1,000Hz로 보정하는 온디바이스 펨토초 분광 서보 엔진을 완성합니다.

1. 백색광 연속체 군지연 분산(GVD) 및 차분 흡광도 수리 모델

매질의 굴절률 $n(\lambda)$이 파장에 따라 변할 때, 위상 지수 $\phi(\omega)$의 주파수에 대한 2차 도함수인 군지연 분산(GVD)은 다음과 같습니다:

$$\text{GVD}(\lambda) = \frac{\lambda^3}{2 \pi c^2} \frac{d^2 n}{d \lambda^2} \quad (\text{fs}^2/\text{mm})$$

두께 $L$인 매질을 통과한 프로브 펄스의 파장별 시간 영점 $T_0(\lambda)$은 코시(Cauchy) 분산식에 의해 포물선 형태로 왜곡됩니다:

$$T_0(\lambda) = T_{ref} + L \left[ A_0 + \frac{B_0}{\lambda^2} + \frac{C_0}{\lambda^4} \right]$$

측정된 원시 차분 흡광도 신호 $\Delta A_{raw}(\lambda, t)$로부터 실제 분자 동역학 고유 신호 $\Delta A_{corr}(\lambda, \tau)$를 복원하기 위한 유효 지연 시간 $\tau$는 시간 영점 편차를 차감하여 정의됩니다:

$$\tau = t - T_0(\lambda) \implies \Delta A_{corr}(\lambda, \tau) = \Delta A_{raw}(\lambda, \tau + T_0(\lambda))$$

서보 루프는 순수 용매의 광학 커 효과(Optical Kerr Effect, OKE) 신호 피크를 0-Alloc 스택에서 유한 차분하여 처프 계수 $B_0, C_0$를 실시간 업데이트합니다.

2. 0-Alloc C# 스택 기반 TAS 펨토초 지연선 서보

분광기 파장별 흡광도 배열로부터 처프 곡선을 보정하고 피코초 압전 스테이지 거리를 1,000Hz로 미세 제어하는 ref struct 루프입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.UltrafastSpectroscopy
{
    public readonly ref struct TasProbeTelemetry
    {
        public readonly double WavelengthNm;
        public readonly double MeasuredDeltaAMilliOd;
        public readonly double DelayStagePositionMm;
        public readonly double LaserRepetitionRateKhz;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public TasProbeTelemetry(double lambdaNm, double deltaA, double stageMm, double repKhz)
        {
            WavelengthNm = lambdaNm;
            MeasuredDeltaAMilliOd = deltaA;
            DelayStagePositionMm = stageMm;
            LaserRepetitionRateKhz = repKhz;
        }
    }

    public readonly ref struct ChirpCorrectionResult
    {
        public readonly double CorrectedDelayTimeFs;
        public readonly double ChirpOffsetFs;
        public readonly double StageTargetPositionMm;
        public readonly bool IsZeroTimeSynchronized;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public ChirpCorrectionResult(double tauFs, double chirpFs, double stageMm, bool synced)
        {
            CorrectedDelayTimeFs = tauFs;
            ChirpOffsetFs = chirpFs;
            StageTargetPositionMm = stageMm;
            IsZeroTimeSynchronized = synced;
        }
    }

    public ref struct TransientAbsorptionServo
    {
        private const double SpeedOfLightMmPerFs = 2.99792458e-4; // 0.2998 um/fs
        private const double ReferenceWavelengthNm = 600.0;
        private readonly double _cauchyB0; // 분산 계수 fs*nm^2
        private double _globalZeroOffsetFs;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public TransientAbsorptionServo(double cauchyB0)
        {
            _cauchyB0 = cauchyB0;
            _globalZeroOffsetFs = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public ChirpCorrectionResult Step(in TasProbeTelemetry telemetry, double targetNominalDelayFs)
        {
            // 1. 코시 분산 기반 파장별 처프 시간 편차 계산 (기준 600nm 대비 펨토초 단위)
            double invLambdaSq = 1.0 / (telemetry.WavelengthNm * telemetry.WavelengthNm);
            double invRefSq = 1.0 / (ReferenceWavelengthNm * ReferenceWavelengthNm);
            double chirpOffsetFs = _cauchyB0 * (invLambdaSq - invRefSq);

            // 2. 광학 왕복 지연선 거리 연산: Stage (mm) = c * (DelayTime + Chirp) / 2
            double requiredDelayFs = targetNominalDelayFs + chirpOffsetFs + _globalZeroOffsetFs;
            double stageTargetMm = (SpeedOfLightMmPerFs * requiredDelayFs) * 0.5;

            // 3. 실제 유효 지연 시간 (fs)
            double currentDelayFs = (telemetry.DelayStagePositionMm * 2.0) / SpeedOfLightMmPerFs;
            double correctedDelayFs = currentDelayFs - chirpOffsetFs - _globalZeroOffsetFs;

            // 4. 시간 영점 동기화 판정 (오차 < 5 fs)
            bool isSynced = Math.Abs(correctedDelayFs - targetNominalDelayFs) < 5.0;

            return new ChirpCorrectionResult(correctedDelayFs, chirpOffsetFs, stageTargetMm, isSynced);
        }
    }
}

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

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

  • 화학 II [반응 속도와 충돌 이론]: 반응물에서 생성물로 전이되는 수백 펨토초 동안의 활성화물(Activated Complex) 수명을 분광학적으로 관측하는 최첨단 물리화학 학습.
  • 물리학 II [빛의 굴절과 분산]: 프리즘에 의해 무지개 빛이 나뉘듯 매질을 통과할 때 파장별 속도 차이로 펄스가 시간적으로 늘어나는 군지연 분산의 수학적 분석.
  • 정보 [초정밀 나노 스테이지 제어 프로그래밍]: 빛의 속도($c$)를 기반으로 나노미터 단위의 모터 이송 거리를 펨토초 시간으로 환산하여 레이저를 동기화하는 임베디드 제어 구현.