대한민국 해군 최신예 차세대 호위함 충남급(FFG-III, 3,600톤급)의 핵심 전투체계인 4면 고정형 능동위상배열(AESA) 다기능 레이다(MFR)는 기계식 회전 없이 4면의 갈륨질화물(GaN) 안테나 면을 통해 360도 전방위 영공 및 해상 표적을 동시 탐색·추적(TWS)합니다. 시스키밍 대함미사일 다수 동시 내습 상황에서 한정된 펄스 시간 및 송신 전력 자원을 위협도에 따라 0.1ms 단위로 최적 배분하는 1,000Hz 0-Alloc C# 적응 빔 스케줄러 수리공학 백서를 공개합니다.

1. 2022 개정 교육과정 교과 연계 분석

  • 물리학 (전자기파 위상배열 간섭, 시간지연 빔형성, 상대속도 도플러): 안테나 소자 간 위상 천이($\Delta \phi_k = \frac{2\pi d k}{\lambda} \sin\theta_0$)에 의한 지향성 합성 및 도플러 편이에 따른 표적 시선속도($v_r = \frac{\lambda f_d}{2}$) 산출.
  • 수학 (다목적 효용 최적화와 시분할 큐잉 이론): 위협 잔여시간(Time-to-Go) 및 교전 우선순위에 기반한 다목적 볼록 최적화 함수 $U_i(t)$와 빔 드웰 시간(Dwell Time) 분배.
  • 지구과학 (해상 전파 굴절률 덕팅과 해면 다중경로 반사): 해수면 증발덕트(Evaporation Duct) 내 전파 갇힘 현상 및 반사파 간섭에 의한 수평선 너머(OTH) 시스키밍 표적 신호 진폭 변동 해석.
  • 정보 (무할당 실시간 펄스 스케줄러): 1ms 실시간 주기 내에서 가비지 컬렉션 지연 없이 최대 128개 표적 추적 빔을 스택 메모리로 스케줄링하는 C# 임베디드 아키텍처.

2. 4면 AESA 빔 조향 및 적응형 드웰 스케줄링 수식 모델

$K$개 소자로 구성된 각 어레이 면에서 방위각 $\theta_0$, 고각 $\phi_0$로 메인로브를 형성하기 위한 $k$번째 복사 소자의 여진 위상 $\psi_k$는 다음과 같습니다.

$$\psi_k = -\frac{2\pi}{\lambda} \left( x_k \sin\theta_0 \cos\phi_0 + y_k \sin\phi_0 \right)$$

4개 면 중 $i$번째 표적이 위치한 안테나 면에 대해, 표적 공분산 $P_{k|k}$의 대각합(오차 타원체 체적)과 위협도 $W_i$에 따른 최적 빔 관측 시간 $\tau_i$는 자원 제한 조건 $\sum_{i} \tau_i \le T_{frame}$ 하에서 다음과 같이 최적화됩니다.

$$\max_{\tau_i} \sum_{i=1}^N W_i \cdot \ln\left( 1 + \frac{\tau_i \cdot \mathrm{SNR}_i}{\mathrm{Tr}(P_{k|k, i})} \right), \quad W_i = \frac{v_{closing, i}}{R_i} \cdot C_{type}$$

고위협 표적에 대해 우선적으로 추적 빔(Tracking Dwell)을 재할당하고 잔여 시간을 배경 탐색 빔(Search Dwell)에 배분합니다.

3. 1,000Hz 0-Alloc C# 충남급 AESA MFR 스케줄러 코어

using System;
using System.Numerics;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Defense.Navy.RadarMfr
{
    public readonly record struct MfrTargetTrack(
        int TargetId,
        Vector3 PositionMeters,    // 함정 기준 상대위치
        Vector3 VelocityMps,       // 상대속도
        float RcsM2,               // 레이더 단면적
        float EstimationCovariance // 오차 분산 공분산 크기
    );

    public ref struct ScheduledBeamDwell
    {
        public int TargetId;
        public int ArrayFaceIndex;       // 0: 선수(0°), 1: 우현(90°), 2: 선미(180°), 3: 좌현(270°)
        public float AzimuthDeg;
        public float ElevationDeg;
        public float DwellDurationMs;
        public bool IsDedicatedTracking; // true: 정밀추적, false: 일반TWS탐색
    }

    public static class ChungnamMfrCore
    {
        private const float SpeedOfLight = 299792458.0f;
        private const float FrequencyHz = 3.0e9f; // S-Band 3GHz
        private const float Wavelength = SpeedOfLight / FrequencyHz;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static int ScheduleBeams(
            ReadOnlySpan activeTracks,
            float frameTimeBudgetMs,
            Span outputSchedule)
        {
            if (activeTracks.IsEmpty || outputSchedule.IsEmpty) return 0;

            int scheduleCount = 0;
            float remainingTimeMs = frameTimeBudgetMs;

            // 스택 기반 위협 지수 산출
            Span threatScores = stackalloc float[activeTracks.Length];
            for (int i = 0; i < activeTracks.Length; i++)
            {
                ref readonly var t = ref activeTracks[i];
                float range = MathF.Max(t.PositionMeters.Length(), 10.0f);
                
                // 표적의 접근 속도 (Closing Velocity)
                Vector3 toTarget = Vector3.Normalize(t.PositionMeters);
                float closingSpeed = -Vector3.Dot(t.VelocityMps, toTarget);

                // 위협도 = 접근속도 / 거리 * (RCS 가중치)
                float threat = (closingSpeed > 0.0f) 
                    ? (closingSpeed / range) * (1.0f + 1.0f / (t.RcsM2 + 0.01f)) 
                    : (10.0f / range);

                threatScores[i] = threat * (1.0f + t.EstimationCovariance);
            }

            // 고위협 표적 순 빔 스케줄링 (0-Alloc 간이 정렬)
            for (int scheduled = 0; scheduled < activeTracks.Length && scheduleCount < outputSchedule.Length; scheduled++)
            {
                // 최고 위협 표적 색인 검색
                int bestIdx = -1;
                float maxThreat = -1.0f;
                for (int i = 0; i < activeTracks.Length; i++)
                {
                    if (threatScores[i] > maxThreat)
                    {
                        maxThreat = threatScores[i];
                        bestIdx = i;
                    }
                }

                if (bestIdx < 0 || maxThreat <= 0.0f) break;
                threatScores[bestIdx] = -1.0f; // 재선택 방지

                ref readonly var track = ref activeTracks[bestIdx];
                float x = track.PositionMeters.X;
                float y = track.PositionMeters.Y;
                float z = track.PositionMeters.Z;

                float range2D = MathF.Max(MathF.Sqrt(x * x + y * y), 1.0f);
                float azimDeg = MathF.Atan2(y, x) * (180.0f / MathF.PI);
                if (azimDeg < 0.0f) azimDeg += 360.0f;
                float elevDeg = MathF.Atan2(z, range2D) * (180.0f / MathF.PI);

                // 4면 중 담당 어레이 면 선택 (선수 기준 45도 분할)
                int faceIdx = ((int)MathF.Round(azimDeg / 90.0f)) % 4;

                // 드웰 시간 배분: 위협도에 따라 0.5ms ~ 2.5ms
                float dwellMs = MathF.Min(MathF.Max(maxThreat * 0.2f, 0.5f), 2.5f);
                if (remainingTimeMs < dwellMs)
                {
                    dwellMs = remainingTimeMs;
                }

                ref var dwell = ref outputSchedule[scheduleCount++];
                dwell.TargetId = track.TargetId;
                dwell.ArrayFaceIndex = faceIdx;
                dwell.AzimuthDeg = azimDeg;
                dwell.ElevationDeg = elevDeg;
                dwell.DwellDurationMs = dwellMs;
                dwell.IsDedicatedTracking = (maxThreat > 5.0f);

                remainingTimeMs -= dwellMs;
                if (remainingTimeMs <= 0.05f) break;
            }

            return scheduleCount;
        }
    }
}

4. 방통대 우호성 교수 랩실 연구 연계 및 AIDT 교구 활용

본 백서의 수리 모델은 2022 개정 교육과정 고등학교 물리학(전자기파와 위상차 간섭, 상대속도 벡터) 및 정보(실시간 스케줄링 알고리즘, 무할당 고성능 프로그래밍)를 연계한 국방 AI 디지털 교과서(AIDT)의 최적화된 시뮬레이션 교구로 채택될 수 있습니다. 4면 고정형 능동위상배열 레이더가 복잡한 서해 다도해 환경에서 다수의 극초음속 대함미사일과 무인기를 완벽하게 다중 추적하는 국방 소프트웨어 주권의 핵심 아키텍처를 입증합니다.