1. 개요: 음속으로 날아오는 원자를 빛의 압력으로 멈춰 세우는 원자 감속기
원자 오븐(Oven)에서 분출되는 기체 원자(\(^{87}\text{Rb}\), \(^{88}\text{Sr}\))는 상온 열운동으로 인해 수백 \(\text{m/s}\)의 초음속으로 질주하므로, 자기광학포획(MOT)의 최대 포획 속도(\(v_c \approx 30\\,\text{m/s}\))를 초과하여 직접 포획할 수 없습니다. 정면에서 역방향 공명 레이저 광선을 조사하면 광자의 반동 운동량(\(\hbar k\))에 의해 원자가 감속하지만, 속도가 줄어듦에 따라 도플러 천이(\(\Delta \omega_D = -k v\))가 변하여 더 이상 레이저와 공명하지 않고 투과해 버립니다.
제만 슬로워(Zeeman Slower)는 원자 빔 경로를 따라 권선 수가 변화하는 다채널 솔레노이드 코일을 배치하여 위치에 따라 변화하는 자기장 \(B(z)\)를 인가함으로써, 감소하는 도플러 천이를 제만 천이(\(\Delta \omega_Z = \mu_B B(z) / \hbar\))로 정밀하게 실시간 상쇄합니다. 이를 통해 원자가 1미터 이내의 짧은 구간에서 중력가속도의 10만 배에 달하는 최대 감속도(\(a_{\\max} \sim 10^5\\,\text{m/s}^2\))로 급감속하도록 솔레노이드 전류를 제어하는 10,000Hz 0-Alloc C# 서보 아키텍처를 구현합니다.
2. 제만 공명 조건 및 이상적 포물선 자기장 수식 모델
원자가 전체 감속 경로 \(z \in [0, L]\)에서 레이저와 공명을 유지하기 위한 주파수 일치 조건은 다음과 같습니다:
여기서 \(\omega_L - \omega_0 = \Delta\)는 레이저 이조, \(k = 2\pi / \lambda\), \(\mu_B\)는 보어 마그네톤입니다. 원자가 안전 계수 \(\eta = a / a_{\\max} \le 1\) (\(a_{\\max} = \frac{\hbar k \Gamma}{2 M}\))의 등가속도 운동을 할 때, 거리 \(z\)에 따른 원자 속도 \(v(z)\) 및 이상적 자기장 프로파일 \(B(z)\)는 포물선 형태를 따릅니다:
여기서 \(L = v_0^2 / (2 \eta a_{\\max})\)는 최적 감속 길이, \(B_0 = \frac{\hbar k v_0}{\mu_B}\)는 최대 필요 자기장(통상 \(800 \sim 1200\\,\text{Gauss}\))입니다.
3. 0-Alloc C# 10,000Hz 실시간 제만 슬로워 서보 아키텍처
솔레노이드 분할 권선 코일 전류 제어 및 레이저 냉각 파장 이조 드리프트를 가비지 컬렉션 없이 100㎲ 확정 주기로 연산하는 C# ref struct 구현체입니다.
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Stem.ZeemanSlower
{
public readonly ref struct ZeemanSlowerState
{
public readonly double ExitVelocityMps; // 출구 원자 속도 v_exit (m/s)
public readonly double PeakMagneticFieldG; // 최대 자기장 B_max (Gauss)
public readonly double LaserDecelerationA; // 원자 감속도 a (m/s^2)
public readonly double ScatteringRatePhotonS;// 자발 방출 광자 산란율 (photons/s)
public readonly bool IsMotCaptureReady; // MOT 포획 가능 속도 도달 여부
public readonly double SolenoidCurrentAmps; // 메인 코일 구동 전류 (A)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ZeemanSlowerState(double vExit, double bMax, double acc, double scatterRate, bool captureReady, double current)
{
ExitVelocityMps = vExit;
PeakMagneticFieldG = bMax;
LaserDecelerationA = acc;
ScatteringRatePhotonS = scatterRate;
IsMotCaptureReady = captureReady;
SolenoidCurrentAmps = current;
}
}
public ref struct ZeemanSlowerEngine
{
private const double HBar = 1.054571817e-34;
private const double MuB = 9.2740100783e-24; // J/T
private const double MassRb87 = 1.4431606e-25; // kg
private const double GammaRb87 = 2.0 * Math.PI * 6.065e6; // rad/s (D2 line)
private const double WavelengthRb = 780.241e-9; // m
private readonly double _initialVelocityMps; // 초기 열 속도 (m/s, ~500 m/s)
private readonly double _slowerLengthM; // 슬로워 물리적 길이 L (m, 예: 0.85 m)
private double _laserDetuningMhz; // 레이저 적색 편이 (MHz)
private double _coilCurrentAmps; // 솔레노이드 구동 전류 (A)
public ZeemanSlowerEngine(double v0 = 500.0, double lengthM = 0.85, double initDetuningMhz = -400.0)
{
_initialVelocityMps = v0;
_slowerLengthM = lengthM;
_laserDetuningMhz = initDetuningMhz;
_coilCurrentAmps = 25.0; // 25 A
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ZeemanSlowerState StepServo(double currentAdjustmentAmps, double laserPowerIntensityRatio, double dtSec)
{
_coilCurrentAmps = Math.Clamp(_coilCurrentAmps + currentAdjustmentAmps, 5.0, 60.0);
// 1. 최대 이론 감속도 a_max 계산 (m/s^2)
// a_max = (hbar * k * Gamma) / (2 * M)
double k = 2.0 * Math.PI / WavelengthRb;
double aMax = (HBar * k * GammaRb87) / (2.0 * MassRb87); // ~1.1 x 10^5 m/s^2
// 2. 포화도 파라미터 s0에 따른 유효 감속도
double s0 = Math.Clamp(laserPowerIntensityRatio, 0.5, 10.0);
double eta = Math.Clamp(s0 / (1.0 + s0) * 0.70, 0.2, 0.85); // 안전 감속 계수
double actualAcc = eta * aMax;
// 3. 출구 속도 계산 v_exit = sqrt(v0^2 - 2 * a * L)
double vSquared = _initialVelocityMps * _initialVelocityMps - 2.0 * actualAcc * _slowerLengthM;
double vExit = Math.Sqrt(Math.Max(vSquared, 0.0));
// 4. 최대 필요 테이퍼 자기장 B_max (Gauss)
// B0 = hbar * k * v0 / mu_B (Tesla -> Gauss: 1T = 10000G)
double bMaxTesla = (HBar * k * _initialVelocityMps) / MuB;
double bMaxGauss = bMaxTesla * 10000.0 * (_coilCurrentAmps / 25.0);
// 5. MOT 포획 판정 (통상 v_exit < 35 m/s)
bool isCaptureReady = (vExit <= 35.0);
// 6. 광자 산란율 (photons/s)
double scatterRate = (GammaRb87 * 0.5) * (s0 / (1.0 + s0));
return new ZeemanSlowerState(
vExit: vExit,
bMax: bMaxGauss,
acc: actualAcc,
scatterRate: scatterRate,
captureReady: isCaptureReady,
current: _coilCurrentAmps
);
}
}
}
4. 교육 및 광시계/양자 시뮬레이터 응용 가치
- 초·중·고 STEM 교구: 기체 분자 운동론 맥스웰-볼츠만 속도 분포와 빛의 방사압, 제만 분열 에너지 준위 이동 교육.
- 차세대 광격자 원자시계(Optical Lattice Clock): 18자리 정밀도를 위한 스트론튬 원자 빔 고밀도 포획 전치 감속 시스템.
- 중성 원자 양자 컴퓨터 큐비트 로딩: 3차원 광학 집게 배열로의 단일 원자 고속 연속 공급원.