차수축소모델(Reduced Order Model)

차수축소모델은 일괄 계산(Batch Run)으로 계산된 결과를 바탕으로 임의의 조건에 대한 결과를 예측하여 만들어내는 기능이다.

적합직교분해(Proper Orthogonal Decomposition)를 이용하여 데이터를 분석하고 차수축소모델(Reduced Order Model)을 만든 다음, 이를 이용하여 입력된 조건에 대한 3차원 결과를 만들어 낸다.

만들어진 결과는 계산된 결과와 동일한 형식이며 일괄 계산의 조건에 추가되어 계산된 결과와 같이 다루어 진다.

‘ROM 제작(Build Model)’과 ‘결과 재건(Reconstruct from Model)’와 ‘Model Enhancement’의 세 부분으로 구성된다.

ROM 제작(Build Model)

‘ROM 제작’ 버튼을 누르면 새로운 창이 열리고 일괄 계산에 있는 조건들 중 ROM을 만들 때 사용할 것들을 선택할 수 있다. 마우스로 사용할 것들을 선택(전체를 선택할 때는 Ctrl-A 버튼 사용)하고 추가(Add) 버튼을 누른다.

OK 버튼을 누르면 ROM 제작에 사용할 변수를 선택하는 창이 나타난다. 왼쪽에 일괄 계산 조건에서 읽었던 excel 혹은 csv 파일의 변수들이 모두 나타나고 이중 사용할 파라미터들을 선택한다. Excel 혹은 csv 파일에는 계산 조건에 해당하지 않는 여러 변수들이 있을 수 있는데 이것들을 제외하지 않으면 ROM이 결과를 제대로 예측하지 못한다.

OK 버튼을 누르면 ROM이 만들어 지고, ‘스냅샷 케이스(Snapshot Cases)’에 선택한 조건들이 표시된다.

결과 재건(Reconstruct from Model)

ROM 제작에 사용할 변수로 선택된 것들 각각에 대해 슬라이드 바 이동 혹은 값의 입력을 통해 조건을 설정한다. ‘케이스 이름(Case name)’에 원하는 이름을 써주고 ‘ROM으로 결과 재건(Reconstruct case with ROM)’ 버튼을 누르면 예측 결과가 만들어 진다.

만들어진 결과는 ‘실행(Run)’ – ‘일괄계산 케이스(Batch Cases)’ 창에 입력한 ‘케이스 이름’으로 추가된다. 추가된 것은 다른 계산된 것들과 동일하게 취급된다.

만들어진 결과를 마우스 오른쪽 버튼으로 ‘불러오기(Load)’를 선택하면 후처리 작업을 할 수 있고, 메뉴에서 ParaView를 실행하면 이 결과가 열린다. 마우스 오른쪽 버튼으로 ‘계산목록(Schedule Calculation)’을 선택하고 ‘계산 시작(Start Calculation)’ 버튼을 누르면 예측된 결과를 초기 조건으로 계산이 시작된다.

Model Enhancement

샘플 개수의 부족으로 ROM 결과의 정확도가 떨어질 때 샘플을 추가할 수 있다. ‘Evaluate/Enhance ROM’ 버튼을 누르면 그림~\ref{fig:romE1}의 창이 나타난다. 여기서 추가할 샘플의 개수를 입력하고, CFD와 ROM의 결과를 교차검증하기 위한 비교 값을 설정한다. 공력계수, point/surface/volume의 값 등을 선택할 수 있다.

계산 조건은 Gaussian Process Regression(GPR) 방법으로 오차가 가장 큰 지점에 자동으로 추가된다. 각 계산 조건에 대해 ROM으로 값을 구하고 CFD 해석을 진행한 다음 두 값과 차이를 표로 보여준다.

차수축소모델 개요

여기서는 POD(Proper Orthogonal Decomposition) 기반 차수축소법(ROM)의 핵심 아이디어와 구현 절차를 간략히 정리한다. 요지는 다음과 같다. 먼저 3차원 열유동 해석으로부터 다수의 “스냅샷(snapshot)”을 모아 행렬을 만들고, 이를 통계학의 주성분분석(Principal Component Analysis, PCA)과 동일한 수학적 틀로 분해하여 에너지가 큰 순서의 직교 기저벡터와 그 선형결합 계수를 얻는다. 이후 새로운 운전 조건에 대해서는 학습된 “입력조건→계수” 관계를 보간(선형 회귀, 가우시안 회귀, 혹은 간단한 AI 회귀 등)하여 계수를 예측하고, 예측된 계수와 기저벡터의 선형결합으로 전체 유동장을 빠르게 재구성한다.

스냅샷 행렬 구성 및 주성분 분석

해석 결과로 얻는 속도, 온도, 압력 등의 필드는 시공간 격자 위의 고차원 데이터이며, 이것을 격자 수 만큼의 길이를 갖는 1차원 열벡터로 평탄화할 수 있다. 해석 조건(운전 시 입구 유량, 온도 등)이 서로 다른 N개의 해석결과 열벡터를 쌓아 스냅샷 행렬 $\mathbf{Y} \in \mathbb{R}^{n \times N}$을 구성하고, 데이터의 중심화를 위해 N개 열벡터의 평균인 $\mathbf{\bar{y}}$를 구하여 스냅샷 행렬의 각 열에서 차감한다. 최종적으로 구성된 스냅샷 행렬 $\mathbf{Y_c} \in \mathbb{R}^{n \times N}$ 는 다음과 같다.

여기서 $u_{ij}$는 $i$ 번째 격자가 N번째 해석 결과에서 갖는 물리량 값이며, $\bar{u_i}$는 평균 열벡터 $\mathbf{\bar{y}}$의 $i$ 번째 격자에서의 값이다.

스냅샷 행렬 $\mathbf{Y_c}$를 특이치분해(Singular Value Decomposition, SVD)하면 전체 해석 결과를 가장 효율적으로 투영할 수 있는 기저벡터를 얻을 수 있다. 그런데 일반적인 CFD 해석 결과의 경우 격자 개수가 스냅샷 개수에 비해 대단히 크므로($n \gg N$), 행렬 $\mathbf{Y_c}$ 자체에 SVD 연산을 직접 적용하는 것은 계산 비용이 매우 크다. 이를 우회하기 위해 아래와 같이 공분산행렬 $\mathbf{C}$를 정의한다.

$\mathbf{C} = \mathbf{Y_c}^T \mathbf{Y_c}$

해당 행렬은 스냅샷 행렬에 비해 훨씬 축소된 크기($N \times N$)를 갖는 정사각행렬이며, 고유치 문제를 빠르게 풀어 고유값과 고유벡터를 계산할 수 있다.

$\mathbf{C}$의 고유값/고유벡터와 $\mathbf{Y_c}$의 특이값/특이벡터의 관계는 다음과 같다.

$\mathbf{C} \vec{v_i} = \lambda_i \vec{v_i}$, $\mathbf{Y_c} = U \sum V^T$

이때 고유값 $\lambda_i$는 특이값 $\sigma_i$의 제곱에 해당하며, 우고유벡터와 우특이벡터는 동일하다. $\mathbf{Y_c}$의 좌특이벡터는 다음과 같이 계산된다.

$\vec{u_i} = \frac{\mathbf{Y_c} \vec{v_i}}{\sigma_i}$

위의 $\vec{u_i}$가 곧 POD 기저벡터가 된다.

전체 특이치분해 과정은 데이터 로드 및 수차례의 행렬 연산만으로 빠르게 수행되므로, 본래의 CFD 해석 소요 시간 대비 수십 배 이상 짧은 시간 내에 완료된다.

POD 기저벡터 및 확장계수

스냅샷 행렬 $\mathbf{Y_c}$ 를 특이치분해하여 얻어진 N개의 기저벡터 $\vec{u_i}$는 서로 직교하며 유동장의 대표적 공간 패턴을 이룬다. 물리적으로는 전체 유동장이 이들 패턴의 선형결합으로 근사될 수 있음을 뜻한다.

$\mathbf{\vec{y}} = \mathbf{\bar{y}} + \sum_{i=1}^{N} a_i \vec{u_i}$

여기서 $a_i$는 해당 조건에서의 확장계수(expansion coefficient)이다. 이는 각 스냅샷을 기저벡터에 사영한 값으로, 해당 스냅샷이 각각의 공간 패턴(모드)을 얼마나 강하게 포함하는가를 나타낸다. 이러한 공간 패턴들은 계산 과정 중에 특이치가 큰 순서대로 나열되는데, 에너지가 큰(특이치가 큰) 모드일수록 유동장의 대규모 구조(예: 주된 제트, 큰 규모의 온도 분포 등)를 설명하고, 에너지가 작은 고차 모드는 주로 세부/잔차 구조를 담당한다.

일반적으로 스냅샷 개수 N을 충분히 확보할 경우, 특이치 $\sigma$는 일정 개수 이후로 급격히 감소하는 경향을 보인다. 이는 유동장에서 형성될 수 있는 공간 패턴이 소수의 지배적인 모드로 압축됨을 의미한다. 따라서 전체 모드 중 상위 K개의 모드만 고려하더라도, 전체 유동장의 주요 거동을 높은 정확도로 근사할 수 있다.

$\mathbf{\vec{y}} = \mathbf{\bar{y}} + \sum_{i=1}^{N} a_i \vec{u_i} \approx \mathbf{\bar{y}} + \sum_{i=1}^{K} a_i \vec{u_i}$

이때 K는 누적 에너지 비율(예: 99% 이상)을 기준으로 결정하는 경우가 많으며, 이렇게 선택된 기저벡터 집합은 본래의 방대한 해석 데이터를 매우 소수의 모드로 압축하여 표현하는 역할을 한다. 이러한 차수축소는 계산 효율을 극적으로 향상시키는 동시에, 물리적으로도 지배적 유동 구조를 직관적으로 해석할 수 있게 해 준다.

확장계수 보간 및 유동장 재구성

적합직교분해(POD) 연산을 통해 전체 CFD 해석 데이터셋을 모드벡터 $\vec{u}$와 스칼라 확장계수 $a$의 선형결합으로 나타낼 수 있다. 해석 조건이 달라지더라도 모드벡터 $\vec{u}$들은 고정된 공간 패턴으로 유지되며, 확장계수 벡터 $\vec{a}$만 해석 조건에 종속하여 변동하게 된다. 그러므로 입력매개변수 벡터 $\vec{x}$와 확장계수 $\vec{a}$간의 함수 관계를 추정하면, 임의의 입력 조건에 대한 유동장을 빠르게 모사할 수 있다.

이러한 함수 관계 추정에는 다양한 보간 기법을 적용할 수 있다. 가장 단순한 방법은 선형 보간(Linear Interpolation) 또는 저차 최소제곱 회귀(Least-Squares Regression)로, 인접한 표본으로부터 국소적인 평면을 적합하여 확장계수를 추정하는 방식이다. 보다 정교한 접근으로는 가우시안 프로세스 회귀(Gaussian Process Regression, GPR)를 수행하거나 인공신경망(AI Regression)을 활용하여, 비선형 관계를 포착하고 고차원 입력공간의 복잡한 매핑을 정밀하게 추정할 수 있다.

미지의 해석 조건에 해당하는 입력매개변수 벡터 $\vec{x}$에 대해 예측된 확장계수 벡터 $\vec{a}$를 얻으면, 이것을 기저벡터와 선형결합하여 전체 유동장을 즉시 복원할 수 있다.

$\mathbf{\hat{y}} = \sum_{i=1}^{K} a_i \vec{u_i} + \mathbf{\bar{y}}$

이 과정은 간단한 보간 계산 및 행렬 연산만으로 이루어지므로, 대규모 해석 케이스에 대해서도 수 초~수십 초 이내에 전체 유동장을 빠르게 예측할 수 있다. 그러므로 본래 해석 결과의 주요 유동 특성을 유지하면서도 계산 비용을 대폭 절감하는 효율적인 예측 도구로 활용될 수 있으며, 디지털 트윈이나 실시간 시뮬레이션에 활용될 가능성을 확인할 수 있다.

병렬 해석 케이스의 데이터 취합 문제

병렬 해석을 위해 다수의 노드에 데이터가 분산되어 있을 경우, 전체 영역에서의 일관된 POD 연산을 위해 1개 노드에 전체 해석 결과를 취합하는 것을 고려할 수 있다. 그러나 대규모 해석 데이터셋의 경우 수천만 개 단위 격자에서의 해석 결과 열벡터를 스냅샷 개수만큼 메모리에 적재하는 것이 용량 문제로 불가능할 수 있으며, 네트워크를 통한 데이터 전송에도 상당한 시간이 소요될 수 있다.

이를 해결하기 위해 공분산행렬의 계산 과정을 변경할 수 있다. 본래 공분산행렬 $\mathbf{C}$는 전체 스냅샷 행렬 $\mathbf{Y}$로부터 아래와 같이 계산된다.

$\mathbf{C} = \mathbf{Y^T} \mathbf{Y}$

이때 행렬 $\mathbf{Y}$는 병렬 해석을 위해 여러 조각 $\mathbf{Y_p}$로 행 방향 분할되어 각 노드에 위치하고 있다. 각 조각 $\mathbf{Y_p}$의 행 방향 크기는 해당 노드에 할당된 분할 격자 개수와 같으며, 열 방향 크기는 데이터셋에서 주어진 스냅샷 개수와 같다.

$ \mathbf{Y} = \begin{bmatrix} Y_1 \\ Y_2 \\ … \\ Y_N \end{bmatrix}$

위의 식에서 N은 전체 노드 개수이다. 이제 행렬 곱의 특성에 의해 아래와 같이 공분산행렬을 계산할 수 있다.

각 MPI 프로세스가 자신이 보유한 스냅샷 조각 $\mathbf{Y_p}$에 대해 부분 공분산 $C_p = \mathbf{Y_p}^T \mathbf{Y_p}$를 계산하고, 마지막에 모든 프로세스가 이 $C_p$들을 MPI reduce 연산으로 합산하여 전역 공분산행렬 $C = \sum_{p=1}^{N} C_p $로 완성하고 이를 POD 연산에 활용할 수 있다.

이 방식은 메모리 사용량과 통신 대역폭을 모두 줄이는 분산형 POD 계산법으로, 스냅샷 데이터 자체를 모으지 않고도 동일한 결과를 얻을 수 있다. 각 노드는 독립적으로 로컬 행렬 곱셈만 수행하므로 계산 병목이 거의 없으며, 네트워크를 통해 주고받는 데이터는 $N \times N$ 크기의 공분산행렬뿐이어서 통신 비용이 선형 스냅샷 크기에 비해 매우 작다. 결과적으로 대규모 병렬 해석 데이터셋에서도 안정적인 POD 처리가 가능해진다.

대규모 해석 케이스의 메모리 사용량 문제

스냅샷 개수가 수천~수만 개 이상으로 많을 경우, 단일 노드에서 공분산행렬을 계산하는 것조차 장비 내 메모리 제한으로 인해 어려워질 수 있다. 이 경우, 에너지 비중이 큰 상위 일부 기저벡터만 산출하여도 충분한 정확도로 실제 물리현상을 모사할 수 있다는 점을 활용하여, 전체 스냅샷 행렬을 구성하지 않고도 근사적인 고유벡터를 추출하는 기법으로써 확률적 특이치분해(randomized SVD)를 적용할 수 있다.

전통적인 SVD가 전체 스냅샷 행렬 에 대해 완전한 적합직교분해 연산을 수행하는 반면, randomized SVD는 무작위 투영(random projection)을 통해 저차 근사(subspace approximation)를 만든 뒤 그 내부에서만 축약된 SVD를 계산한다. 구체적으로는,

$Y \approx Q (Q^T Y)$

형태로 임의의 정규직교기저 $Q$를 구성하여, 고차원 행렬 $Y$보다 훨씬 작은 크기의 $Q^T Y$에 대해 적합직교분해를 수행한다.

이 과정의 복잡도는 $O(N_{cell} k$수준으로 낮으며, $k$는 사용하고자 하는 기저벡터 개수이다. 즉, 스냅샷 개수가 수천 단위를 넘더라도 필요한 모드 수를 수십~수백 개 정도로 제한하여, 전체 공분산행렬을 구성하지 않고도 거의 동일한 수준의 POD 기저벡터를 구할 수 있다. 또한 이 과정은 반복적 갱신이나 스트리밍 처리에도 적합하여, 스냅샷을 순차적으로 읽으며 점진적으로 기저를 갱신할 수도 있다.

따라서 대규모 데이터셋에서는 기존의 정밀 SVD 대신 randomized SVD 등의 근사 POD 알고리즘을 적용하는 것이 현실적이다. 이는 메모리 사용량과 계산 시간을 대폭 줄이면서도, 에너지 측면에서 지배적인 기저벡터를 올바르게 산출함으로써 정확도를 거의 동일하게 유지한다. 결과적으로 수 TB급 해석 데이터셋에서도 적합직교분해 기반 차수축소모델 구축이 가능해진다.

POD-ROM의 특성과 한계

적합직교분해(POD) 기반 차수축소법(ROM)은 복잡한 유동장을 소수의 지배적 모드로 표현함으로써, 반복해석의 계산 비용을 획기적으로 절감하는 데에 사용될 수 있다. 그러나 그 정확도와 효율성은 학습 단계에서 사용된 스냅샷 데이터의 품질과 다양성에 직접적으로 의존한다.

특히 모델의 정확성-속도 간 절충을 위해 스냅샷의 개수가 적절하게 선정되어야 한다. 스냅샷의 개수가 부족하면 주요 유동 패턴을 충분히 포착하지 못하고, 반대로 너무 많으면 차수축소법의 계산 효율이 떨어진다. 따라서 적절한 스냅샷 개수는 입력매개변수의 차원 수, 유동 현상의 복잡도, 그리고 POD 고유치 분포(에너지 스펙트럼)의 완만도 등을 고려해 결정되어야 한다. 통상적으로는 전체 CFD 해석 대비 적어도 4배 이상의 효율 향상이 가능한 것으로 여겨진다.

또한 스냅샷 데이터는 예측하고자 하는 물리 현상의 전체 범위를 충분히 포괄해야 한다. 예를 들어 유동 박리나 와류 천이 등 입력매개변수 범위에 따라 급격히 변동하는 물리 현상을 예측하고자 하는 경우, 해당 구간을 포함해 입력매개변수 공간 전역에 학습용 스냅샷이 균일하게 분포하도록 설계되어야 한다.

POD-ROM은 본질적으로 선형대수학적 기법으로, 스냅샷들의 선형결합을 통해 새로운 해를 구성한다. 이로 인해 연속적인 구배나 점진적 변화의 예측에는 효과적이지만, 불연속적인 구배(충격파, 자유수면 경계 등)를 포함하는 유동장과 관련해서는 정확도가 떨어질 수 있다. 이러한 한계를 극복하기 위해 불연속 추적 POD(Discontinuity-Tracking POD), 합성곱 신경망(Convolutional Neural Network) 등 다양한 보완 연구가 진행되고 있다.

요약하자면, POD-ROM은 연속적이고 매끄러운 유동을 빠르게 예측하는 데 탁월한 기법이지만, 급격히 변동하거나 불연속적인 구배를 포함하는 물리 현상을 다루기 위해서는 데이터셋의 충분한 확보와 더불어 보완/확장된 기법적 접근이 필요하다.