1. 서 론
2. 연구 방법론
2.1 지배 방정식
2.2 LU-SGS 시간 적분법
2.3 Block LU-SGS
2.4 Multi-Coloring Algorithm
2.5 pyBaram 유동 해석자
3. 수치 실험 결과
3.1 Transonic Inviscid Flow over a NACA 0012 Airfoil
3.2 Subsonic Laminar Flow over a Flat Plate
3.3 Transonic Turbulent Flow over a RAE2822 Airfoil
3.4 Transonic Turbulent Flow over an ONERA M6 Wing
3.5 Supersonic Turbulent Flow around a HB-2 Standard Model
4. 결 론
1. 서 론
정상상태 유동 해석은 비정상 유동 해석과 달리 정상해(steady solution)에 빠르게 도달하는 것이 목표이다. 따라서 일반적으로 1차 정확도의 시간 이산화를 적용하며, 비교적 큰 시간 간격을 가질 수 있는 내재적 시간 전진 기법이 주로 사용된다[1]. 현재까지 다양한 내재적 기법이 개발되어왔고, 그중에서도 Lower-Upper Symmetric Gauss-Seidel(LU-SGS) 기법[2]은 가장 널리 사용되는 반복적 수치 기법의 하나이다. 강건성이 우수하고 높은 CFL 수에서 안정적으로 수렴한다는 특징과 내재적 연산자의 계산 과정에서 존재하는 역행렬 계산이 필요하지 않기 때문에[3] 다른 내재적 기법과 비교했을 때 효율적인 계산이 가능하다는 장점이 있다.
하지만 LU-SGS 기법은 강한 데이터 의존성(Data dependency)으로 인해 SMP(Shared Memory Parallelism) 병렬화를 적용하기 어렵다는 단점이 존재한다[4]. 이 기법은 크게 forward sweep과 backward sweep 두 단계로 구성되어 있는데, 각 sweep에서 각 셀의 물성치를 계산할 때 인접한 셀의 갱신된 물성치 정보가 필요하다. 만약 데이터 의존성을 무시하고 격자 내 모든 셀의 물성치 정보를 동시에 계산할 경우, 인접 셀의 갱신 여부가 불분명한 race condition[5]이 발생하여 계산 결과를 신뢰할 수 없게 된다. 특히 CFD 분야에서는 그 이름에 내포되어 있듯이 컴퓨팅 기술에 대한 영향을 필연적으로 받을 수밖에 없는데[6], 이러한 데이터 의존성은 멀티코어 CPU 및 GPU와 같은 매니코어 컴퓨팅 환경에서 고성능 병렬 컴퓨팅 기술의 적용을 어렵게 하여 계산 가속화를 방해하는 요인으로 작용한다.
따라서 LU-SGS 기법의 데이터 의존성을 제거하기 위한 다양한 방법이 고안되었다. Li 등[4]은 기존의 shared-memory parallelism에 사용되는 pipeline 접근법을 개선한 two-level pipeline LU-SGS 기법을 제안하였다. Pipeline 접근법은 3차원에서 k-방향으로 각 스레드가 동시에 실행할 수 있는 일종의 파이프를 생성, 격자의 대각 방향으로 병렬화를 진행한다. Hyper-plane/hyper-line 접근법을 적용한 LU-SGS[7]보다 성능이 우수하다고 알려져 있으나[8], pipeline의 깊이가 증가할수록 병렬화에 의한 성능 향상 효과가 감소하는 문제가 발생한다. Two-level pipeline 기법은 j-방향으로 sub-task를 생성하여 하나의 커다란 pipeline을 여러 개의 sub-pipeline으로 분할함으로써 이러한 병목 현상을 해결하였다. 또한, Gong 등[9]은 3차원 정렬 격자에서 wavefront 병렬화 알고리즘을 적용한 LU-SGS 기법을 개발하였으며, 방대한 분산 메모리 클러스터에 적용이 가능함을 보였다.
상기한 선행 연구의 LU-SGS 병렬화 기법은 3차원 정렬 격자를 대상으로 하며, 비정렬 격자계의 경우 i, j, k 방향으로 인접한 셀의 정보가 불규칙적이기 때문에 데이터 의존성을 제거하기 위한 다른 방법이 필요하다. 대표적으로 다중 색상 알고리즘(Multi-coloring algorithm)은 인접 셀의 정보를 그래프 형태로 나타내어 여러 색으로 구분하는 방식을 사용한다. 이때 같은 색으로 구성된 셀의 집합은 서로 데이터 의존성을 가지지 않으므로 동시에 계산하는 것이 가능하다. Gauss-Seidel, LU-SGS 등의 시간 적분 기법에 적용되었으며[10,11], 동시 계산 성능이 뛰어나 hyper-plane 알고리즘과 비교했을 때 월등한 병렬 계산 특성을 가지고 있다. 하지만 hyper-plane 알고리즘이 격자 셀을 재배치, 시스템 행렬의 bandwidth를 축소하여 수렴 효율을 향상시키는 것과는 대조적으로, 다중 색상 알고리즘을 적용한 Colored LU-SGS 기법은 시간 적분법의 내재적 특성을 저하하여 수렴성이 악화한다는 단점이 존재한다[11].
LU-SGS 기법의 수렴성 향상을 위해, 각 격자에서 행렬 연산자(Block operator)를 활용하는 Block LU-SGS 기법이 연구되었다. Spectral radius로 Jacobian 행렬을 근사화하는 기존의 LU-SGS 기법과 달리, 행렬 연산자를 사용한 Block LU-SGS 기법은 내재적 연산자의 행렬 특성을 유지함으로써 수렴성을 개선한다[12,13]. Block operator를 저장하기 위한 추가적인 메모리와 대각 행렬 연산에서의 역행렬 계산이 필요하지만, LU-SGS 기법의 수렴 효율을 능가한다는 장점이 있다.
따라서 다중 색상 알고리즘과 행렬 연산자를 적용한 Colored Block LU-SGS 기법이 제안되었으며, 선행 연구[14]에서는 이기종 컴퓨팅 환경에서 무격자 기법(meshless method)을 적용하여 수치 기법의 CPU 및 GPU 계산 성능을 비교한 바 있다. 본 연구에서는 Colored Block LU-SGS 기법의 수렴 특성을 파악하기 위해 CPU 클러스터 환경에서 Colored LU-SGS 기법과의 성능을 비교 분석하고자 한다. 2차원 및 3차원 유동 해석을 통해 반복 횟수 및 계산 시간에 따른 잔류항과 공력 계수의 수렴 그래프를 도시하였으며, 행렬 연산자를 적용함으로써 Colored LU-SGS 기법에서의 수렴성 저하 문제를 보완할 수 있음을 확인하였다.
2. 연구 방법론
2.1 지배 방정식
본 연구에서는 압축성 유동의 정상해 해석을 목표로 한다. 유한 체적법(Finite Volume Method, FVM)을 적용한 Navier-Stokes 방정식은 식 (1)과 같이 적분 형태로 나타낼 수 있다. 는 conservative variables, , 는 각각 convective flux와 viscous flux를 의미한다. Backward Euler 시간 이산화를 적용하여 식 (1)을 차분 형태로 작성하면 식 (2)와 같이 폐적분을 부분합으로 변환할 수 있다. 상첨자 은 다음 시간 간격에서의 물리량을 나타내며, 는 현재 셀과 인접한 셀 경계면에서의 수치 flux vector, 는 각 제어 체적을 둘러싼 경계면의 개수이다. 는 제어 체적의 부피, 는 셀 경계면의 면적, 는 각 셀에서의 시간 간격을 의미한다.
식 (2)에서 는 식 (5)와 같이 Taylor series 전개를 통해 선형화할 수 있으며, 그 결과는 식 (6), (7)과 같다.
식 (6)에서 flux Jacobian을 수치적으로 계산하는 방법은 공간 이산화의 기법에 따라 달라진다. 식 (7)은 외재적 연산자(Explicit operator)라고 불리며, 수치해의 공간 정확도를 결정한다[1]. 난류 유동 해석을 위해 RANS 난류 모델을 사용하였으며, 난류 모델 방정식 또한 유동 방정식과 동일한 과정으로 이산화할 수 있다. 이때 RANS 난류 모델 방정식은 유동 방정식과 분리하여 계산할 수 있다[15,16].
2.2 LU-SGS 시간 적분법
LU-SGS 기법은 선형 방정식 (8)의 해를 구하기 위한 반복적 수치 기법으로, 내재적 연산자 를 식 (9)과 같이 근사화한다. 는 상삼각행렬, 은 하삼각행렬, 는 대각 행렬을 의미한다. 식 (9)는 식 (10), (11)의 Forward sweep 및 Backward sweep 두 단계로 분리하여 해를 구할 수 있다. LU-SGS는 각 sweep을 1번씩 진행하여 다음 시간 간격의 물성치를 갱신한다.
Forward sweep:
Backward sweep:
일반적으로 시스템 행렬 는 flux Jacobian을 포함한 매우 큰 희소행렬 형태이다. LU-SGS 기법은 Rusanov flux를 사용하여 Jacobian 항을 1차 정확도로 근사화한다. Forward sweep에서 의 초기값을 0으로 가정하면 LU-SGS 기법의 각 sweep 과정은 식 (14), (15)로 표현된다. 는 셀 경계면에서의 spectral radius, 와 는 각각 현재 셀과 인접 셀의 convective flux를 의미한다. 식 (12)는 Rusanov flux의 계산 식을, 식 (13)은 Jacobian의 Taylor series 전개를 통한 1차 정확도 근사화 식을 나타낸다.
Forward sweep:
Backward sweep:
식 (16)에서 내재적 연산자의 대각 행렬은 단위행렬에 계수가 곱해진 형태임을 알 수 있다. 따라서 sweep 과정에서 나타나는 역행렬 계산은 상수의 나눗셈 연산으로 변환된다. , 는 각각 현재 제어 체적에서의 하단과 상단 인접 셀을 의미하며, 비정렬 격자계에서는 셀의 상단과 하단을 식 (17)과 같이 격자의 색인에 따라 구분한다[17].
2.3 Block LU-SGS
Block LU-SGS 기법은 LU-SGS 기법과 달리 flux Jacobian을 spectral radius로 근사화하지 않고, 행렬 연산자 형태를 유지한다. 식 (10), (11)의 내재적 연산자를 식 (6) 형태로 변환하면 다음과 같이 Block LU-SGS 기법에서의 forward 및 backward sweep 식 (18), (19)를 얻을 수 있다. 는 forward sweep 이후의 해를 의미하며, 는 +1 단계에서의 해를 의미한다.
Forward sweep:
Backward sweep
Block LU-SGS 기법은 forward 및 backward sweep을 반복하여 의 값을 여러 번 갱신할 수 있으며, 이 과정을 통해 각 시간 간격에서의 해를 더 정확하게 포착할 수 있다. 내부 반복 계산 횟수는 식 (21)을 기준으로 조절한다[12]. , 𝜖은 사용자 지정 매개변수이며, 각각 최대 반복 횟수와 내부 허용 오차를 의미한다. 은 첫 번째 내부 반복 이후의 물성치를 나타낸다. 내부 반복 횟수가 에 도달할 경우, 식 (21)의 허용 오차 기준을 만족하지 않더라도 다음 시간 간격으로 넘어가게 된다.
식 (18), (19)에서 flux Jacobian을 해석적으로 구하는 것은 매우 어렵다. 따라서 참고문헌 [12]에서는 식 (13)과 Roe의 Flux Difference Splitting[18] 기법을 사용하여 Jacobian 행렬을 1차 정확도로 근사화하였다. Roe 기법을 사용하는 경우 점성 유동 해석에서 수렴 안정성이 저하될 수 있으므로[19], 본 연구에서는 van Leer의 Flux Vector Splitting[20] 기법을 이용하여 flux Jacobian을 계산하였다.
LU-SGS 기법과 달리 Block LU-SGS는 flux Jacobian의 형태가 남아있기 때문에 대각 행렬이 단위행렬로 표현되지 않으므로[12], Forward 및 Backward sweep에서 역행렬 계산 과정이 필요하다. 본 연구에서는 각 셀의 대각 행렬 성분을 LU 분해하여 저장한 뒤, 역행렬 계산 단계에서 전진 및 후진 대입법을 사용함으로써 반복 계산 시 계산량을 최소화하였다.
본 연구에서 convective flux는 van Leer FVS, viscous flux는 Thin-Layer approximation, turbulent flux는 Upwind scheme[21]을 적용하여 Jacobian을 계산하였다. 1-equation Spalart-Allmaras[22] 및 2-equation k𝜔-SST[23] 난류 모델의 flux Jacobian은 각각 식 (22), (23)으로 표현된다. , 는 각각 난류 모델 방정식에서의 flux와 conservative variables를, 는 contravariant velocity, 는 현재 셀과 인접한 셀의 중심 거리를 의미한다. , , 는 난류 모델에서의 상수이며 , 는 난류 동점성계수 및 eddy viscosity를 나타낸다. 이때 eddy viscosity는 상수로 가정한다[16].
Spalart-Allmaras :
k𝜔-SST :
원천 항(source term)의 경우 Spalart’s “third strategy”[22]에 의하여 항(production term)은 외재적으로, 항(destruction term)은 선형화하여 내재적으로 처리한다[16]. 원천 항의 Jacobian은 식 (24), (25)와 같다. 는 wall distance를 나타내며, , , , 는 각 난류 모델에서의 상수이다. Jacobian의 모든 원소는 양수 값만을 취하여 계산에 포함하였다.
Spalart-Allmaras :
k𝜔-SST :
2.4 Multi-Coloring Algorithm
다중 색상 알고리즘(Multi-coloring algorithm)은 비정렬 격자계에서 race condition을 제거하기 위해 사용되는 대표적인 방법으로, 각 셀의 인접 정보를 파악하여 서로 인접하지 않은 셀을 하나의 집합(cluster)으로 만든다. 2차원 정렬 격자의 경우 red black ordering 또는 checkerboard 기법이라 불리는 알고리즘[24,25,26]을 적용하면 2개의 색깔만으로 분류할 수 있으나, 비정렬 격자의 경우 인접한 셀의 정보가 불규칙적으로 배열되어 있으므로 일반적으로 3개 이상의 색을 사용한다. 격자 내에 존재하는 모든 셀은 인접한 셀과 다른 색으로 분류되어야 하며, 계산은 각 색깔의 묶음으로 이루어진 셀 내부에서 동시적으로 진행된다[10,11]. 같은 색으로 분류된 셀은 서로 연관성이 없으므로 데이터 의존성이 존재하지 않아 물리적 정보가 동시에 갱신되어도 race condition이 발생하지 않는다.
Fig. 1은 비정렬 격자에서의 다중 색상 알고리즘 적용 예시를 나타낸 것이다. 비정렬 격자 Fig. 1(a)는 Fig. 1(b)와 같이 무방향 그래프(undirected graph) 형태로 표현할 수 있다. 그래프의 노드는 격자의 셀을, 간선은 각 셀의 인접 정보를 의미한다. 알고리즘을 적용한 결과를 3개의 색상으로 구분하면 Fig. 1(c)와 같다. 본 연구에서는 Python 기반 모듈인 NetworkX[27]를 사용하여 다중 색상 알고리즘을 구현하였으며, 이 알고리즘을 적용한 수치 기법의 자세한 설명은 선행연구[10,11]에 기재되어 있다.
2.5 pyBaram 유동 해석자
본 연구에서는 pyBaram[28] 유동 해석자를 사용하여 전산 해석을 진행하였다. pyBaram은 Python 언어로 작성된 비정렬 격자 기반의 오픈소스 압축성 유동 해석 프로그램이다. CGNS, Gmsh 격자 형식을 지원하며, Euler, Navier-Stokes, RANS 지배 방정식의 해석이 가능하다. 또한 Numba[29] 고성능 Python 패키지에 내장된 Just-In-Time Compilation 기술을 적용하여 인터프리터 언어의 속도 문제를 개선하였다. LU-SGS, Colored LU-SGS 내재적 시간 적분 기법과, 비정렬 격자계에 대해 유한 체적법을 적용한 공간 차분 기법이 구현되어 있다. 특히 MLP(Multi-dimensional Limiting Process)-u 기울기 제한자[30]와 Rotated-RoeM[31] 등의 정밀한 수치 flux를 적용하여 고속 유동장을 강건하고 정밀하게 해석할 수 있다.
병렬화의 경우 격자 분할을 통한 MPI 병렬 계산 및 Colored LU-SGS 기법을 사용한 SMP 병렬 계산이 가능하다. pyBaram 해석자에 대한 자세한 설명 및 사용 방법은 참고문헌[28] 및 코드 저장소의 documentation 페이지에 기재되어 있다. 또한, 본 연구에서 구현한 Block LU-SGS 및 Colored Block LU-SGS 기법의 코드는 저장소의 ‘develop’ branch에서 확인할 수 있다.
3. 수치 실험 결과
다중 색상 알고리즘을 적용한 Colored Block LU-SGS 기법의 효율성을 분석하고자 비정렬 격자에서의 전산 유동 해석을 진행하였다. 수렴 성능 비교를 위해 반복 횟수뿐만 아니라 전체 계산 시간을 함께 비교하였다. 이때 첫 번째 반복 계산에서는 JIT Compilation으로 인해 초기 코드 컴파일 시간을 포함하기 때문에 두 번째 반복 계산부터 시간을 측정하였다. 계산 시간은 Colored LU-SGS 기법의 수렴 시간을 기준으로 무차원화 하였다. 각 시간 적분 기법은 최대 CFL 수를 기준으로 계산하였으며, 잔류항 및 공력 계수 수렴 그래프의 범례에 그 값을 표기하였다. 공간 차분 기법으로는 2차 공간 정확도를 갖는 MUSCL-type linear reconstruction에 MLP-u2 기울기 제한자를 적용하였다. 비점성 수치 flux 함수로는 Roe기법[18]을 적용하였고, 난류 방정식은 1차 공간 정확도로 계산하였다. Colored Block LU-SGS 기법에서 최대 내부 반복 횟수와 내부 허용 오차의 기본값은 각각 10과 0.1로 설정하였다.
3.1 Transonic Inviscid Flow over a NACA 0012 Airfoil
첫 번째 해석 문제는 NACA 0012 에어포일의 천음속 비점성 유동 해석이다. 자유류의 마하수는 0.8, 받음각은 1.25°이다. 코드 길이는 1.0이며, 격자는 에어포일의 윗면과 아랫면이 각각 150개의 경계면으로 구성된 총 14,876개의 triangular 셀로 이루어져 있다. Fig. 2는 NACA0012 에어포일 형상 및 압력 계수 분포를 도시한 그림이다. Table 1은 수렴해의 공력 계수를 요약한 것으로, 선행연구와 유사한 결과를 나타내고 있다.
Table 1.
Lift and drag coefficients of transonic inviscid flow over NACA0012 airfoil
| Test case | ||
| Vassberg and Jameson[32] | 0.3562 | 0.0227 |
| AGARD 211[33] | 0.3463 | 0.0223 |
| Present | 0.3502 | 0.0213 |
공유 메모리 환경에서 다중 색상 알고리즘을 적용한 LU-SGS 기법의 수렴성 비교 결과는 Fig. 3와 같다. 최대 CFL 수는 Colored Block LU-SGS 기법이 100, Colored LU-SGS 기법이 7의 값을 가졌다. 최대 CFL 수에서의 수렴 반복 횟수 및 계산 시간을 Table 2에 정리하였으며, 최대 CFL 수에서 수렴 횟수는 약 16배의 차이를 보였다. 계산 시간을 기준으로 두었을 때(Fig. 3(b))에는 동일한 CFL 수에서 Colored Block LU-SGS 기법의 성능이 오히려 감소하였고, 이는 행렬 연산자의 역행렬 저장 및 내부 반복 계산으로 인한 계산량 증가 영향이 수렴 가속화 효과보다 크다는 것을 의미한다. 최대 CFL 수에서의 속도 또한 차이가 다소 감소하였으나, 행렬 연산자의 수렴성 개선 효과로 Colored Block LU-SGS 기법에서 더 높은 최대 CFL 수를 가질 수 있어 약 30%의 성능 향상을 보였다.
Table 2.
Iteration number and normalized computation time for inviscid transonic flow over NACA0012 airfoil until convergence
| Method | Maximum CFL | Iteration | Normalized computation time |
| Colored LU-SGS | 7.0 | 64,511 | 1.0 |
| Colored Block LU-SGS | 50.0 | 3,977 | 0.7663 |
3.2 Subsonic Laminar Flow over a Flat Plate
다음으로 2차원 평판에서의 아음속 점성 유동 해석을 진행하였다. 자유류의 마하수는 0.2, 레이놀즈 수는 700,000이며, 격자는 가로 55개, 세로 60개로 총 3,300개의 quadratic 셀로 구성되어 있다. 경계조건은 Fig. 4과 같이 설정하였다. Inflow는 total condition으로, total pressure 및 total enthalpy를 부여하였다. Outflow는 back pressure를 지정한 경계조건을 부여하였다. 하단 벽면의 경우 평판에서 x축 방향으로 전방 19개까지의 격자는 symmetric, 그 이후는 adiabatic wall 경계조건을 부여하였다. 격자의 첫 번째 벽면 거리는 무차원화 하여 약 10-5으로 설정했다. 계산 결과 =0.2 위치에서 경계층의 방향 속도 성분을 비교하여 Fig. 5에 도시하였으며, 두 기법 모두 Blasius 해와 정확히 일치하는 것을 확인하였다.
다중 색상 알고리즘을 적용한 LU-SGS 기법의 계산 결과를 Fig. 6에 나타내었다. 평판에서는 y축 방향으로의 속도 성분이 중요하기 때문에 잔류항 지표를 밀도와 y축 속도의 곱으로 설정하였다. Fig. 3과 유사하게 동일한 CFL 수에서는 Colored LU-SGS 기법이 계산 시간 측면에서 비교적 우수한 수렴 성능을 보였다. Fig. 6(a)에서 잔류항 감소 경향의 차이가 뚜렷하게 드러나는데, 이는 Colored Block LU-SGS 기법이 내부 반복 계산 과정에서 초기 경계층 근처의 해를 더 정확하게 포착하기 때문이다. Fig. 6(a)에서 반복 횟수를 기준으로 비교했을 때 동일한 CFL 수의 Block LU-SGS 기법은 LU-SGS 기법에 비해 좋은 성능을 보이나, 계산 시간을 기준으로 한 Fig. 6(b)를 보면 밀도 잔류항의 자릿수가 10-4 이하로 감소한 이후에는 LU-SGS 기법이 조금 더 빠르게 수렴해에 접근한다. 하지만 행렬 연산자를 사용했을 경우 CFL 수를 50까지 높일 수 있으며, 이 경우 반복 횟수 및 계산 시간 모두 Colored Block LU-SGS 기법의 수렴 속도가 월등히 높았다. 이렇듯 최대 CFL 수의 증가는 반복 계산에서의 각 시간 간격을 크게 측정하여 정상해에 더 빠르게 도달할 수 있으므로 효율적인 계산이 가능하다.
3.3 Transonic Turbulent Flow over a RAE2822 Airfoil
RANS 방정식의 해석을 검증하기 위해 천음속 RAE2822 에어포일의 난류 유동 해석을 수행했다. 자유류의 마하수는 0.729, 받음각은 2.31°이며 레이놀즈수는 6.5×106으로 설정하였다. 난류 모델은 2-equation Menter’s k𝜔-SST 모델을 사용하였다. 격자는 18,042개의 triangular 셀과 4,800개의 quadratic 셀로 이루어져 있으며, y+의 값은 1.0 이하를 유지하였다. 또한, Colored Block LU-SGS 기법에서 최대 내부 반복 계산 횟수는 3으로 설정했다. Fig. 7은 RAE2822 에어포일의 형상과 압력 계수 분포를 나타낸 것이다. 두 기법 모두 압력 계수가 실험값과 잘 일치하는 것을 확인할 수 있다.
Fig. 8을 통해 RAE2822 에어포일의 수렴 그래프를 도시하였다. 다중 색상 알고리즘을 적용했을 때 최대 CFL 수는 LU-SGS 기법이 5, Block LU-SGS 기법이 15로 제한되었다. 반복 횟수를 기준으로 Colored LU-SGS 기법은 약 15000번에서 잔류항의 자릿수가 10-4까지 감소하나, 그 이후에는 특정한 구간 사이에서 진동하는 것을 볼 수 있다. 하지만 Colored Block LU-SGS 기법을 사용한 경우 잔류항이 안정적으로 감소하였으며, CFL 수가 5, 15일 때 수렴하기까지의 반복 횟수는 약 2.5배의 차이를 보였다(Fig. 8(a)). 계산 시간을 기준으로는 동일한 CFL 수에서 두 기법 모두 잔류항의 자릿수가 10-4까지 유사한 속도로 감소하였으며, Colored Block LU-SGS 기법을 비교했을 때 최대 CFL 수에서 약 2.5배의 성능 향상을 확인하였다(Fig. 8(b)).
3.4 Transonic Turbulent Flow over an ONERA M6 Wing
3차원 난류 유동 해석을 검증하기 위한 문제로 ONERA M6 날개 표면의 천음속 유동을 해석하였다. 난류 모델은 2-equation Menter’s k𝜔-SST를 사용했으며, 자유류의 마하수는 0.84, 레이놀즈수는 14.6×106, 받음각은 3.06°로 설정하였다. 격자는 NASA Turbulence Modeling Research[34]에서 제공하는 medium mixed grid로, 270,336개의 prism 셀과 811,008개의 hexahedral 셀로 이루어져 있다. 4개의 프로세서를 통해 MPI 병렬화 계산을 수행하였고, 각 프로세서에서는 28개의 스레드를 사용했다. Colored Block LU-SGS 기법의 최대 내부 반복 계산 횟수는 2로 설정하였다. Fig. 9는 ONERA M6 wing의 압력 계수 분포를 나타낸 그림이다.
공력 계수는 반복 계산을 거치면서 하나의 값으로 수렴하는데, 시간 전진 기법의 영향을 받지 않으므로 값이 변하지 않는 지점에서의 반복 횟수와 계산 시간을 측정하여 각 기법 간의 수렴 성능을 비교할 수 있다. 본 문제에서는 양력 계수를 지표로 사용하여 반복 횟수 및 계산 시간에 따른 수렴도를 Fig. 9에 도시하였다. 수렴 기준은 일정 범위의 공력 계수 값과 계산 마지막 공력 계수를 비교하여 모두 허용 오차 이하의 값일 때 수렴하였다고 판단한다. 각 지점을 포함한 전후 4개의 값 총 9개의 공력 계수를 조사하였으며, 허용 오차는 10-4로 설정하였다. 또한, 초기 CFL 수를 고정한 경우와 수렴 과정에서 CFL 수를 선형적으로 증가시킨 경우를 함께 비교하여 도시하였다. 각 기법에서 설정한 CFL 수는 Table 3과 같다.
Table 3.
Maximum CFL number and linear ramping information of each time-integration method
| Method | Maximum constant CFL | Linear CFL ramping | |||
| Initial CFL | Initial iteration | Maximum iteration | Maximum CFL | ||
| Colored LU-SGS | 6.0 | 2.0 | 500 | 1,000 | 6.0 |
| Colored Block LU-SGS | 12.0 | 5.0 | 16.0 | ||
수렴 완료 지점을 Fig. 10에서 ‘x’ 마커로 표시하였으며, 각 지점에서의 반복 횟수 및 무차원화 계산 시간, 성능 개선율을 Table 4에 요약하였다. 무차원화 시간은 CFL 수를 고정한 Colored LU-SGS 기법의 계산 시간을 기준으로 하였으며, 시간 성능 개선율은 식 (26)과 같이 계산한다. 은 CFL 수를 고정한 Colored LU-SGS의 계산 시간을, 는 성능 비교 대상의 계산 시간을 의미한다.
Table 4.
Convergence performance comparison between time integration methods for transonic turbulent flow over ONERA M6 wing
Colored LU-SGS 기법의 경우 CFL 수를 선형적으로 증가시켰을 때의 최댓값이 6.0으로 초기 CFL 수를 고정했을 때와 같은 값을 가졌다(Table 3). 그 이상의 값을 사용했을 경우 수렴이 일정 수준 진행되었음에도 공력 계수가 다시 진동하여 수치적으로 불안정한 현상을 보였으며, 선형적 증가 과정에서는 초기 CFL 수를 낮게 설정하기 때문에 계산 시간을 기준으로 오히려 성능이 약 12.25% 감소하였다. 반면 Colored Block LU-SGS 기법은 CFL 수를 선형적으로 증가시켰을 때 최대 16.0의 값을 가질 수 있었고, 수렴 성능이 계산 시간 기준 약 10% 향상되었다(Table 4). CFL 수를 선형적으로 증가시킬 시 수렴해와 근접한 구간에서 초기 CFL 수보다 더 큰 값을 가질 수 있으나, Colored Block LU-SGS 기법의 경우 높은 CFL 수에서는 각 시간 간격에서 내부 허용 오차에 도달하기 위해 더 많은 내부 반복 계산이 필요하므로 수렴 가속화 효과와 내부 반복 계산의 계산량 증가 영향이 서로 상쇄된다. 따라서 해석 문제에 따라 적절한 초기 CFL 수 및 선형 증가 구간 설정이 필요하다.
3.5 Supersonic Turbulent Flow around a HB-2 Standard Model
초음속에서의 3차원 난류 유동 해석을 검증하기 위해 HB-2 형상 주위의 유동 해석을 진행하였다. 난류 모델은 1-equation Spalart-Allmaras를 사용하였다. 자유류 마하수는 2.0, 레이놀즈수는 1.7×106, 받음각은 2.0°로 설정하였다. 또한 초음속 유동에서의 수치 불안정성을 억제하기 위하여 AUSMPW+[35] 수치 flux 기법을 사용하였다. 격자는 1,096,280개의 mixed cell로 구성되어 있고, 4개의 프로세서를 통한 MPI 병렬화와 각 프로세서당 28개의 스레드를 사용하여 공유 메모리 병렬화를 구현하였다. Fig. 11은 symmetry plane에서의 마하 수 분포를 가시화한 그림으로, 노즈 앞전에서의 활모양 충격파(bow shock)와 동체 후방의 경사 충격파(oblique shock)가 잘 포착된 것을 볼 수 있다.
공력 계수의 수렴 그래프를 통해 성능을 비교하였으며, 본 문제에서는 수직력 계수를 지표로 사용하였다. 각 지점을 포함한 전후 3개의 값 총 7개의 공력 계수를 조사하였으며, 허용 오차는 10-4로 설정하였다. 수렴 완료 지점을 ‘x’ 마커로 표시하여 그래프를 도시하면 Fig. 12와 같고, 각 기법의 수렴 위치에서 반복 횟수와 무차원화 계산 시간을 요약하여 Table 5에 정리하였다.
Table 5.
Convergence performance comparison between time integration methods for supersonic turbulent flow around HB-2 standard model
| Method | Iteration | Normalized computation time | Performance improvement(%) |
| Colored LU-SGS, CFL = 1.5 | 2,930 | 1.0 | N/A |
| Colored Block LU-SGS, CFL = 2.5 | 1,750 | 1.1930 | -16.18 |
최대 CFL 수는 Colored LU-SGS 기법이 1.5, Colored Block LU-SGS 기법이 2.5로 이전의 해석 문제에 비해 적은 차이를 보였다. Colored Block LU-SGS 기법은 공력 계수가 수렴하기까지 Colored LU-SGS 기법보다 적은 반복 횟수를 가졌으나, 수치 기법의 계산량 증가 영향이 수렴 가속화 효과를 뛰어넘지 못해 수렴 효율이 역전되어 계산 시간을 기준으로 측정했을 때에는 오히려 수렴하기까지 약 16% 더 많은 시간이 소요되었다.
4. 결 론
본 연구에서는 공유 메모리 환경에서 Colored LU-SGS 기법을 적용했을 때 발생하는 수렴성 저하 문제를 보완하기 위해 다중 색상 알고리즘과 행렬 연산자를 적용한 Colored Block LU-SGS 기법을 pyBaram 유동 해석자에 구현하였으며, 그 성능을 Colored LU-SGS 기법과 비교 분석하였다. 기존의 LU-SGS 기법에서 내재적 연산자를 spectral radius로 근사화하는 것과 달리 Block LU-SGS는 행렬 특성을 유지하여 수렴 안정성을 높인다.
각 유동 해석 사례에서 밀도 잔류항 및 공력 계수의 수렴 그래프를 함께 도시하여 반복 횟수와 계산 시간을 기준으로 최대 CFL 수에서 Colored Block LU-SGS 기법의 성능 향상 결과를 가시화하였다. 그 결과 행렬 연산자 적용 및 내부 반복 계산을 통한 수렴성 개선 효과를 확인하였고, 아음속 및 천음속 유동 해석에서 Colored LU-SGS 기법보다 높은 CFL 수에서도 안정적으로 수렴하여 효율적인 계산이 가능하였다. 특히 Navier-Stokes 방정식 해석의 경우 내부 반복 계산을 통해 경계층 근처에서의 해를 더 정확하게 포착함으로써 초기 잔류항이 빠르게 감소하는 경향을 보였으며, 행렬 연산자의 적용을 통해 난류 유동 해석에서 Colored LU-SGS 기법을 사용했을 때 발생하는 잔류항 진동 현상을 해결할 수 있음을 확인하였다. 또한, 3차원 유동 해석 시 공력 계수의 수렴 속도를 비교하여 성능 개선율을 계산한 결과 천음속 유동 해석에서 Colored Block LU-SGS 기법이 최대 약 105% 높은 성능을 보였다.














