AIDT 온디바이스 STEM 심해 해양 음향 단층촬영(OAT) 멍크(Munk) 음속 프로파일 역산 및 음향선 추적 벡터 서보 엔진

SOFAR 사운드 채널 축 굴절, 해수온-염분 프로파일 Munk 역산, 스넬-해밀토니안 음향선 전파 10,000Hz C# 엔진

1. 개요: 심해 해양 단층촬영(OAT)과 SOFAR 음향 채널

해양 음향 단층촬영(Ocean Acoustic Tomography, OAT)은 광범위한 대양 분지(Ocean Basin)에서 수중 저주파 음파가 전달되는 정밀 도달시간(Travel Time)을 측정하여 수온 및 유속 3차원 공간 분포를 역산하는 지구물리학적 원격 탐사 기법입니다. 수온이 급격히 하강하는 상층 수온약층(Thermocline)에서는 온도 저하로 음속이 감소하고, 심해층에서는 정수압(Hydrostatic Pressure) 증가로 음속이 다시 상승합니다. 이로 인해 수심 약 1,000m 지점에 음속이 극소값을 형성하는 SOFAR(Sound Fixing and Ranging) 채널이 형성되며, 음파는 굴절에 의해 채널 축 주변에 갇혀 수천 킬로미터를 에너지 감쇠 없이 전파됩니다.

2. 멍크(Munk) 음속 프로파일 및 해밀토니안 음선 방정식 수식 모델

월터 멍크(Walter Munk)의 표준 해양 음속 프로파일 \(c(z)\)은 수심 \(z\), 사운드 채널 축 수심 \(z_0\), 축 음속 \(c_0\), 스케일 깊이 \(B\)로 정형화됩니다:

\[ c(z) = c_0 \left[ 1 + \epsilon \left( \eta + e^{-\eta} - 1 \right) \right], \quad \eta = \frac{2(z - z_0)}{B} \]

기하 음향 근사(Ray Acoustics)에서 음선의 궤적 \(\vec{r}(s)\)과 파동 슬로우니스 벡터 \(\vec{p} = \nabla \tau = \vec{k}/\omega\)는 해밀토니안 음선 미분방정식을 만족합니다:

\[ \frac{d\vec{r}}{ds} = c(z) \vec{p}, \quad \frac{d\vec{p}}{ds} = -\frac{1}{c(z)^2} \nabla c(z) \]

수평 성층 해양에서 스넬의 법칙(Snell's Law)에 따라 음향선 발사각 \(\theta(z)\)와 음속의 비는 보존되며, 수온 변동 \(\delta T\)에 따른 음향 도달시간 섭동 \(\delta \tau_i\)는 다음과 같은 선적분으로 표현됩니다:

\[ \frac{\cos \theta(z)}{c(z)} = \frac{\cos \theta_0}{c(z_0)} = \text{const}, \quad \delta \tau_i = -\int_{\Gamma_i} \frac{\delta c(s)}{c_0(s)^2} ds \approx -\alpha \int_{\Gamma_i} \frac{\delta T(s)}{c_0(s)^2} ds \]

3. 0-Alloc C# OAT 음향선 역산 서보 엔진 구현

다중 고유음선(Eigenray) 도달시간을 역산하여 수온 프로파일을 10,000Hz 주기로 추정하는 무할당 ref struct 구현체입니다:

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.OceanAcoustics
{
    public readonly ref struct OceanAcousticState
    {
        public readonly float SoundSpeedAtAxisMs;
        public readonly float EstimatedTempDeltaC;
        public readonly float TravelTimeAnomalyMs;
        public readonly float RayCurvatureRadiusM;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OceanAcousticState(float c0, float dt, float travelTimeAnomaly, float rCurv)
        {
            SoundSpeedAtAxisMs = c0;
            EstimatedTempDeltaC = dt;
            TravelTimeAnomalyMs = travelTimeAnomaly;
            RayCurvatureRadiusM = rCurv;
        }
    }

    public ref struct OceanAcousticTomographyServo
    {
        private const float BaseSoundSpeedC0 = 1490.0f; // m/s at 1000m SOFAR axis
        private const float AxisDepthM = 1000.0f;
        private const float ScaleDepthB = 1300.0f;
        private const float MunkEpsilon = 0.00737f;
        private const float TempSoundSpeedCoeff = 4.5f; // m/s per deg C

        private float _estimatedDeltaT;
        private float _baselineTravelTimeSec;

        public OceanAcousticTomographyServo(float rangeKm = 100.0f)
        {
            _estimatedDeltaT = 0.0f;
            _baselineTravelTimeSec = (rangeKm * 1000.0f) / BaseSoundSpeedC0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public float EvaluateMunkSoundSpeed(float depthZ)
        {
            float eta = 2.0f * (depthZ - AxisDepthM) / ScaleDepthB;
            float cProfile = BaseSoundSpeedC0 * (1.0f + MunkEpsilon * (eta + MathF.Exp(-eta) - 1.0f));
            return cProfile + (_estimatedDeltaT * TempSoundSpeedCoeff);
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OceanAcousticState UpdateServo(float measuredTravelTimeSec, float rayDepthM, float dt = 0.0001f)
        {
            float travelTimeAnomaly = (measuredTravelTimeSec - _baselineTravelTimeSec) * 1000.0f; // ms

            // Inversion feedback: travel time decrease implies warmer ocean (higher sound speed)
            float deltaTEstimate = -travelTimeAnomaly / 32.5f;
            _estimatedDeltaT += (deltaTEstimate - _estimatedDeltaT) * (dt * 50.0f);

            float localC = EvaluateMunkSoundSpeed(rayDepthM);
            
            // Ray curvature radius R = - c / (dc/dz * sin(theta))
            float eta = 2.0f * (rayDepthM - AxisDepthM) / ScaleDepthB;
            float dc_dz = BaseSoundSpeedC0 * MunkEpsilon * (2.0f / ScaleDepthB) * (1.0f - MathF.Exp(-eta));
            float rCurv = MathF.Abs(dc_dz) > 1e-6f ? MathF.Abs(localC / dc_dz) : 100000.0f;

            return new OceanAcousticState(localC, _estimatedDeltaT, travelTimeAnomaly, rCurv);
        }
    }
}

4. 실시간 SOFAR 음향선 궤적 인터랙티브 시뮬레이터

수심에 따른 멍크 음속 프로파일과 음향선 발사각에 따른 SOFAR 축 주기적 굴절 진동을 실시간 관측하십시오.

5. 교육 연계 및 국방/해양 탐사 실무적 의의

  • 2022 개정 교육과정 지구과학 II: 해수의 성질, 수온의 연직 분포, 수온약층과 심해층의 경계 조건 및 SOFAR 음향 통로의 원리 지도.
  • 물리학 II: 파동의 굴절과 스넬의 법칙, 연속적인 굴절률 변화 매질에서의 페르마 최소 시간 원리 및 전반사 유도.
  • 국방 MUM-T / 해양 안보: 대잠전(ASW) 수중 소나망 및 자율무인잠수정(UUV)의 장거리 수중 음향 통신, 도플러 음향 채널 보정 필터 탑재.