1. 개요: 불투명하고 짙은 나노 유체의 평형/비평형 열운동을 포착하는 결맞는 X선
동적 광산란(Dynamic Light Scattering, DLS)은 가시광선을 사용하므로 다중 산란이 발생하는 불투명하거나 고농도인 나노 현탁액 내부를 관측할 수 없습니다. 반면 4세대 고휘도 방사광 및 X선 자유전자 레이저의 공간적 결맞음(Spatial Coherence)을 갖는 X선 빔을 시료에 조사하면, 입자들의 순간적인 나노스케일 배열에 따라 무작위 회절 간섭 무늬인 스펙클 패턴(Speckle Pattern)이 형성됩니다.
X선 광자 상관 분광법(X-ray Photon Correlation Spectroscopy, XPCS)은 나노 입자나 고분자 사슬의 브라운 운동 및 응력 완화에 의해 스펙클 패턴이 시간에 따라 요동치는 과정을 초고속 2D 픽셀 검출기(예: EIGER)로 추적하여, 나노미터(\(1 \sim 100\\,\text{nm}\)) 공간 영역에서의 중간 산란 함수(Intermediate Scattering Function, \(f(q, t)\))와 완화 시상수(\(\tau(q)\))를 실시간 연산하는 10,000Hz 0-Alloc C# 서보 아키텍처를 구현합니다.
2. 지글러(Siegert) 관계식 및 콜로이드 확산 수식 모델
특정 산란 벡터 \(\mathbf{q}\)에서의 스펙클 강도 시간 시계열 \(I(\mathbf{q}, t)\)로부터 계산되는 2차 정규화 강도 자기상관 함수 \(g_2(\mathbf{q}, t)\)는 지글러(Siegert) 관계식에 의해 1차 필드 상관 함수 \(f(\mathbf{q}, t)\)와 연결됩니다:
여기서 \(\beta \approx 0.1 \sim 0.5\)는 빔의 공간 결맞음도 및 검출기 개구비에 따른 스펙클 콘트라스트 계수입니다. 단순 열적 브라운 확산의 경우 단일 지수 감쇠 \(f(q, t) = \exp(-\Gamma t) = \exp(-D_0 q^2 t)\)를 따르며, 유리질 상전이나 젤화(Gelation) 잼밍계에서는 신축 지수(Kohlrausch-Williams-Watts, KWW) 형태를 나타냅니다:
여기서 \(\gamma < 1\)은 압축 완화(잼밍 상태의 탄성 응력 완화), \(\gamma = 1\)은 순수 확산, \(\tau(q) = 1 / (D_{eff} q^2)\)로부터 유효 확산 계수와 유체역학적 반경 \(R_H = \frac{k_B T}{6\pi \eta D_0}\)을 완벽히 도출합니다.
3. 0-Alloc C# 10,000Hz 실시간 XPCS 멀티-타우 상관 서보 아키텍처
멀티-타우(Multi-tau) 로그 스케일 지연 버퍼 및 동적 콘트라스트 보정을 가비지 컬렉션 없이 100㎲ 확정 주기로 연산하는 C# ref struct 구현체입니다.
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Stem.Xpcs
{
public readonly ref struct XpcsSpeckleState
{
public readonly double ScatteringQInvNm; // 산란 파수 q (1/nm)
public readonly double RelaxationTimeTauMs; // 완화 시상수 tau (ms)
public readonly double DiffusionCoefficient; // 유효 확산 계수 D (10^-12 m^2/s)
public readonly double SpeckleContrastBeta; // 스펙클 결맞음 콘트라스트 beta
public readonly double HydrodynamicRadiusNm; // 스토크스-아인슈타인 반경 RH (nm)
public readonly double AutocorrelationG2; // 현재 지연 시간 g2 값
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public XpcsSpeckleState(double q, double tau, double diff, double beta, double rh, double g2)
{
ScatteringQInvNm = q;
RelaxationTimeTauMs = tau;
DiffusionCoefficient = diff;
SpeckleContrastBeta = beta;
HydrodynamicRadiusNm = rh;
AutocorrelationG2 = g2;
}
}
public ref struct XpcsCorrelatorEngine
{
private const double Kb = 1.380649e-23; // J/K
private const double SolventViscosityPaS = 1.002e-3; // 20도 물 점도 (Pa*s)
private double _temperatureK; // 시료 온도 (K)
private double _speckleContrast; // 광학 결맞음 계수 beta
public XpcsCorrelatorEngine(double tempK = 293.15, double initBeta = 0.25)
{
_temperatureK = tempK;
_speckleContrast = initBeta;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public XpcsSpeckleState StepServo(double qInvNm, double measuredG2At10Ms, double dtSec)
{
double safeQ = Math.Max(qInvNm, 0.005);
// 1. Siegert 관계식으로부터 1차 상관값 역산
// g2 = 1 + beta * exp(-2 * t / tau)
double excessG2 = Math.Clamp(measuredG2At10Ms - 1.0, 0.001, _speckleContrast);
double fieldCorrSquared = excessG2 / _speckleContrast;
double fieldCorr = Math.Sqrt(Math.Clamp(fieldCorrSquared, 0.0001, 1.0));
// 2. 완화 시상수 tau (ms) 계산 (t = 10 ms 기준)
double decayRateGamma = -Math.Log(fieldCorr) / 10.0; // 1/ms
double tauMs = (decayRateGamma > 1e-5) ? (1.0 / decayRateGamma) : 1000.0;
tauMs = Math.Clamp(tauMs, 0.1, 5000.0);
// 3. 확산 계수 D = 1 / (tau * q^2) 계산 (m^2/s)
// q in 1/nm -> 1e9 1/m, tau in ms -> 1e-3 s
double qMeters = safeQ * 1e9;
double tauSec = tauMs * 1e-3;
double diffM2PerS = 1.0 / (tauSec * qMeters * qMeters);
// 4. 스토크스-아인슈타인 유체역학적 반경 R_H (nm)
// RH = Kb * T / (6 * pi * eta * D)
double rhMeters = (Kb * _temperatureK) / (6.0 * Math.PI * SolventViscosityPaS * Math.Max(diffM2PerS, 1e-16));
double rhNm = Math.Clamp(rhMeters * 1e9, 0.5, 500.0);
return new XpcsSpeckleState(
q: safeQ,
tau: tauMs,
diff: diffM2PerS * 1e12,
beta: _speckleContrast,
rh: rhNm,
g2: measuredG2At10Ms
);
}
}
}
4. 교육 및 나노유체/유리질 상전이 응용 가치
- 초·중·고 STEM 교구: 레이저 간섭 스펙클 무늬의 형성과 열적 브라운 운동, 스토크스-아인슈타인 확산 법칙 교육.
- 콜로이드 유리질 및 겔화(Gelation) 전이: 나노 입자 밀집도가 임계값에 도달할 때 발생하는 비에르고딕(Non-ergodic) 정지 거동 분석.
- 이차전지 슬러리 유변학 나노 동역학: 전극 바인더-활물질 복합 분산액의 분산 안정성 및 건조 과정 상분리 실시간 진단.