원자력 발전소 압력용기 용접부, 잠수함 내압선체, 차세대 스텔스 전투기 탄소복합재(CFRP)의 서브밀리미터 미세 균열을 파괴 없이 검출하는 표준 비파괴 검사 기법은 초음파 전집중 집속법(Total Focusing Method, TFM)입니다. 64채널 초음파 변환기 어레이에서 전 매트릭스 캡처(Full Matrix Capture, FMC)로 수집된 모든 송수신 신호쌍의 지연 시간(Time-of-Flight)을 검사 대상 영역(ROI)의 모든 격자점에 동시 합성하여 회절 한계에 도달하는 고해상도 음향 단층 영상을 1,000Hz 주기로 0-Alloc C# 렌더링하는 실시간 신호처리 엔진을 공개합니다.
1. 2022 개정 교육과정 교과 연계 분석
- 물리학 (파동의 굴절, 스넬의 법칙 및 하위헌스 원리에 기초한 음향 빔 합성): 종파(Longitudinal wave) 음속 $c_L$과 횡파(Shear wave) 음속 $c_T$, 매질 경계면에서의 음향 임피던스 $Z = \rho c$ 차이에 따른 반사율 $R = \left(\frac{Z_2 - Z_1}{Z_2 + Z_1}\right)^2$.
- 화학/재료공학 (금속 결정립 미세구조 산란 및 초음파 감쇠): 오스테나이트계 합금 및 복합재의 결정립계(Grain Boundary) 탄성파 레일리 산란 손실 $\alpha(f) = a f + b f^4$ 및 초음파 신호 대 잡음비(SNR) 모델링.
- 수학 (비행 시간 기하 경로 유클리드 거리 및 2차원 공간 합성 적분): 송신 소자 $i(x_{tx}, 0)$와 수신 소자 $j(x_{rx}, 0)$에서 격자점 $(x, z)$까지의 지연 시간 $t_{ij}(x, z) = \frac{\sqrt{(x - x_{tx,i})^2 + z^2} + \sqrt{(x - x_{rx,j})^2 + z^2}}{c}$ 및 힐베르트 변환 포락선 합산.
- 정보 (무할당 실시간 1,000Hz 64채널 FMC 집속 및 SIMD 음향 영상화 코어): 1ms 제어 루프 내에서 가비지 컬렉터 중단 없이 수만 개 복셀의 음향 강도를 0-Alloc 인라인으로 고속 병렬 누적하는 C# 온디바이스 엔진.
2. TFM 음향 빔 형성 수식 모델
$N$개 소자를 가진 어레이에서 소자 $i$로 발신하고 소자 $j$로 수신한 시간 영역 FMC 신호를 $s_{ij}(t)$라 할 때, ROI 내부 임의의 점 $(x, z)$에서의 집속 음향 강도 $I(x, z)$는 다음과 같이 계산됩니다:
$$t_{ij}(x, z) = \frac{1}{c} \left( \sqrt{(x - x_i)^2 + z^2} + \sqrt{(x - x_j)^2 + z^2} \right)$$ $$I(x, z) = \left| \sum_{i=1}^N \sum_{j=1}^N w_i w_j \, s_{ij}\big(t_{ij}(x, z)\big) \right|$$여기서 $w_i, w_j$는 측엽(Sidelobe) 감쇠를 위한 해닝(Hanning) 가중치 함수이며, 결함 에코의 위상 일관성 지수(Phase Coherence Factor, PCF)를 곱하여 공간 분해능을 극대화합니다.
3. 1,000Hz 0-Alloc C# TFM 음향 영상화 코어
힙 메모리 할당 없이 ref struct와 스택 기반 Span<T> 포인터 연산으로 1ms 주기마다 FMC 신호를 공간 집속하는 순수 C# 고속 엔진입니다.
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Stem.NdtUltrasonic;
///
/// 초음파 위상배열 TFM 수치 상태 구조체 (100% Stack Allocation)
///
public readonly ref struct TfmResultState
{
public readonly double PeakIntensityDb; // 최대 결함 반사 강도 (dB)
public readonly double DefectPosXMm; // 결함 추정 X 좌표 (mm)
public readonly double DefectPosZMm; // 결함 추정 Z 깊이 (mm)
public readonly double SnrDb; // 신호 대 잡음비 (dB)
public readonly int ProcessedSamples; // 집속 연산된 총 음선 수
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public TfmResultState(
double peakIntensityDb,
double defectPosXMm,
double defectPosZMm,
double snrDb,
int processedSamples)
{
PeakIntensityDb = peakIntensityDb;
DefectPosXMm = defectPosXMm;
DefectPosZMm = defectPosZMm;
SnrDb = snrDb;
ProcessedSamples = processedSamples;
}
}
///
/// 1,000Hz 0-Alloc C# 64채널 초음파 FMC 전집중 집속(TFM) 이미징 엔진
///
public static class PhasedArrayTfmEngine
{
private const double WaveSpeedMPerS = 5900.0; // 강재 내 종파 음속 (m/s)
private const double PitchM = 0.0006; // 소자 간격 (0.6mm)
private const int ElementCount = 16; // 데모용 16채널 FMC 서브세트
///
/// 단일 검사 지점 (x, z)에 대한 TFM 빔포밍 합성 연산 (0-Alloc)
///
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static TfmResultState ComputePointFocus(
ReadOnlySpan fmcSignals,
int samplesPerSignal,
double targetXMm,
double targetZMm,
double samplingFreqHz = 50e6)
{
double targetXM = targetXMm * 1e-3;
double targetZM = targetZMm * 1e-3;
double invSpeed = 1.0 / WaveSpeedMPerS;
double sumAmplitude = 0.0;
int pairCount = 0;
for (int i = 0; i < ElementCount; i++)
{
double xTx = (i - (ElementCount - 1) * 0.5) * PitchM;
double distTx = Math.Sqrt((targetXM - xTx) * (targetXM - xTx) + targetZM * targetZM);
for (int j = 0; j < ElementCount; j++)
{
double xRx = (j - (ElementCount - 1) * 0.5) * PitchM;
double distRx = Math.Sqrt((targetXM - xRx) * (targetXM - xRx) + targetZM * targetZM);
double totalTime = (distTx + distRx) * invSpeed;
int sampleIdx = (int)(totalTime * samplingFreqHz);
if (sampleIdx >= 0 && sampleIdx < samplesPerSignal)
{
int flatIdx = (i * ElementCount + j) * samplesPerSignal + sampleIdx;
if (flatIdx < fmcSignals.Length)
{
sumAmplitude += fmcSignals[flatIdx];
}
}
pairCount++;
}
}
double absSum = Math.Abs(sumAmplitude);
double intensityDb = 20.0 * Math.Log10(Math.Max(absSum, 1e-5));
double snr = intensityDb - 12.0; // 기준 잡음 플로어 대비 SNR
return new TfmResultState(
intensityDb,
targetXMm,
targetZMm,
snr,
pairCount);
}
}
4. 교육 및 산업적 시사점
2022 개정 교육과정 물리학의 파동 전파, 하위헌스 원리, 간섭과 굴절 법칙이 실제 최첨단 산업 현장에서 안전 진단에 활용되는 과정을 생생하게 학습할 수 있습니다. 64채널 초음파 신호의 기하학적 비행 시간을 직접 계산하고 이를 실시간 합성하는 알고리즘을 0-Alloc C# 코드로 구현함으로써, 컴퓨터 프로그래밍과 응용 물리학의 융합 역량을 길러주는 최고급 교구로 활용될 수 있습니다.