고속 공기 흐름에서 컴퓨터 시뮬레이션
**전산 유체 역학**(CFD, Computational fluid dynamics)은 유체 현상을 기술한 비선형계 편미분방정식인 나비에-스토크스 방정식(Navier-Stokes Equations)을 유한차분법 (Finite Difference Method), 유한요소법 (Finite Element Method), 유한체적법(Finite Volume Method) 등의 방법들을 사용하여 이산화하여 대수 방정식으로 변환하고, 이를 수치 기법(numerical methods)의 알고리즘을 사용하여 유체 유동 문제를 풀고 해석하는 것이다. 컴퓨터를 사용하여 공학 문제에서 유체와 기체의 상호작용을 시뮬레이션한다. 그러나, 식을 여러 가정을 통해 간단히 하거나 슈퍼컴퓨터를 사용한다 하더라도, 대부분 근사해만을 얻을 수 있다. 적용 모델이 실제에 더욱 가까울수록 아음속이나 난류 문제와 같은 복잡한 현상의 시뮬레이션이 보다 정교해진다. 코드의 검증은 실험을 수행하여 얻은 정량적 정성적 데이터와 그 오차를 비교하여 이루어진다.
전산 유체 역학은 단상 및 다상 유동(single- and multi-phase flow), 연소(combustion) 및 화학 반응(chemical reaction) 등 다양한 문제들을 해석할 수 있도록 개발되고 있다.

배경과 역사
------

단상 유동(single phase flow)에 대해, 모든 유체 역학 문제의 지배적인 방정식은 나비에-스토크스 방정식이다. 나비에-스토크스 방정식은 이제까지 발견된 가장 어려운 방정식 중 하나로 평가되고 있으며, 아직까지 해의 존재성 조차 밝혀지지 않았다(CMI가 선정한 밀레니엄 7대 난제 중 하나). 전산 유체 역학은 이런 나비에-스토크스 방정식을 공간 및 시간에 대한 이산화와 수치 해석적인 기법을 통해 풀기 위하여 개발되었다. 따라서 전산 유체 역학을 나비에-스토크스 방정식을 직접 푸는 것으로 오해하면 안된다. 어디까지나 근사적인 수치해를 구하는 것이기 때문이다.

3차원 날개의 viscous 격자계
나비에-스토크스 방정식에서 점성 항을 제거하면 좀 더 단순한 오일러 방정식이 된다. 여기서 와류 항을 제거하면 좀 더 단순한 완전 퍼텐셜 방정식(full-potential equation)이 된다. 마지막으로, 이 방정식을 선형화하면 선형 퍼텐셜 방정식 (linear-potential equation)이 된다.

이런 단순함으로 인해 역사적으로는 선형 퍼텐셜 방정식을 풀기 위한 기법이 가장 먼저 개발되었다. 1930년대, 이차원 상의 실린더에서 익형 주변 유동에 대한 유동을 등방성 변환(conformal transformations)을 이용하여 계산하는 기법이 개발되었다.

컴퓨터의 발달로 가용 계산량이 점차로 증대함에 따라, 3차원 유동에 대한 해석 기법의 개발이 현실화되기 시작하였다. 1966년에는 실용적인 선형 퍼텐셜 이론에 대한 3차원 해석 기법이 맥도넬 더글러스의 A.M.O. Smith에 의해 발표되었다.이 기법은 어떤 형상의 표면을 패널로 이산화(discretizing)하였고, 이 기법을 패널법(Panel Methods)이라 명칭하였다. 패널법은 매우 간단하여서, 양력이 작용하는 유동뿐만 아니라 선박 및 항공기에까지 적용이 되었다. 1968년, 최초의 양력 패널 코드 (A320)가 보잉의 Paul Rubbert와 Gary Saaris에 의해 발표되었다. 그 동안, 더 발전된 3차원 패널 코드가 보잉 (PANAIR, A502), 록히드 마틴 (Quadpan), 더글러스 (HESS), 맥도넬 (MACAERO), 미국 항공 우주국 (PMARC)와 Analytical Methods (WBAERO, USAERO, VSAERO)社 등에 의해 개발되었다. Quadpan, PMARC, USAERO, VSAERO들이 각 표면 패널에 대해 단일의 특이점을 사용한 데 반해, PANAIR, HESS 그리고 MACAERO와 같은 몇몇 코드들은 고차항까지 계산이 가능하였고, 따라서 고차항의 표면 특이점(surfact singularities) 분포를 사용하였다. 고차항을 사용하지 않는 코드의 장점은 당시 컴퓨터 성능으로도 매우 빠르게 계산가능하다는 것이었다. 현재 VSAERO는 낮은 차수는 물론 고차항까지 폭넓게 계산 가능하며, 현재 가장 폭넓게 사용되는 패널 코드 중 하나이다. 이 프로그램은 다수의 선박, 잠수함, 자동차, 헬기, 항공기는 물론 최근에는 풍차 해석에까지 매우 다양한 용도로 사용되고 있다. 자매 프로그램이라 할 수 있는 USAERO는 고속 열차나 경주용 요트와 같은 물체 주변의 유동을 해석할 수 있는 비정상 패널 코드이다. NASA의 PMARC 코드는 VSAERO의 초기 버전이며, 상용으로 개발된 PMARC의 또 다른 버전인 CMARC가 있다.

이차원에 있어서, 다수의 패널 코드들이 에어포일 해석 및 설계를 위해 개발되었다. 이 코드들은 보통 경계층에 대한 해석도 포함되어 있어서(주로 반경험적인 {\displaystyle e^{n}} method나 에플러 기법 등이 포함된다), 점성 효과를 모델링할 수 있었다. NASA로부터의 약간의 자금 지원을 통해, 슈투트가르트 대학의 Richard Eppler 교수가 PROFIL이라는 코드의 개발을 시작하여 1980년대 초반에 사용하기 시작하였다.곧바로 이를 통해 매사추세츠 공과대학교의 마크 드렐라(Mark Drela) 교수의 XFoil 코드가 개발되었다. PROFIL와 XFoil은 2차원 패널 코드를 포함하고 있으며, 에어포일 해석 작업을 위해 경계층 해석 코드와 연계되어 있다. 두 코드 모두 등방 변환기법을 사용하였지만, PROFIL은 에어포일의 역설계를 위한 것이었고, XFoil은 에어포일 설계를 위한 역 패널법을 적용하였다는 점이 다르다. 두 코드는 현재에도 매우 광범위한 공학적 문제들을 다루는데에 사용되고 있다.

패널 코드와 완전 퍼텐셜 유동 해석 코드의 중간 단계로, 천음속 미소 교란 방정식(Transonic Small Disturbance equations)을 해석하는 코드가 사용되었다. 특히 1980년대 그러먼 항공사의 Charlie Boppe에 의해 개발된 3차원 코드 WIBCO는 다양한 공학적 문제들에 대해 비중있게 사용되었다.

패널 코드가 천음속에서의 유동의 비선형적인 특성을 제대로 예측하지 못하자, 개발자들은 곧바로 완전 퍼텐셜 유동 해석 코드로 눈을 돌렸다. 처음 완전 퍼텐셜 유동 해석 코드에 대해 기술한 것은 1970년 보잉社의 Earll Murman과 Julian Cole이 발표하였다. 뉴욕 대학교 Courant 연구소(CFL Number로 유명한)의 Frances Bauer, Paul Garabedian, David Korn는 현재에도 널리 사용되는 이차원 에어포일에 대한 완전 퍼텐셜 유동 해석 코드들을 잇달이 발표하였다. 그 프로그램을 H라 불리었다. 그러먼 항공사의 Bob Melnik과 그의 동료들은 H를 더욱 발전 시킨 Grumfoil이란 코드를 개발하였다. 1975년 뉴욕대 Courant 연구소의 Antony Jameson(원래는 그러먼 항공社 소속이었다)가 David Caughey와 함께 FLO22란 3차원 완전 포텐션 유동 해석 코드를 개발하였다. 다수의 완전 퍼텐셜 유동 해석 코드가 이 시기에 개발되었고, 보잉社의 Tranair(A633)코드가 개발되면서 정점에 이르렀다. Tranair코드는 현재에도 많이 사용되는 코드이다.

다음 단계는 오일러 해석 코드였다. 오일러 해석 코드는 천음속 유동에 대해 더 정확한 해를 제공해 줄 것으로 기대되었다. 1981년 Jameson에 의해 개발된 3차원 오일러 코드인 FLO57은 이후 록히드社의 TEAM 코드와 IAI/Analytical Method社의 MGAERO 코드의 모태가 되었다. 당시 성공적이었던 NASA의 CART3D 코드, Lockheed社의 SPLITFLOW 코드 그리고 조지아 공과대학의 NASCART-GT와 같은 코드들은 형상에 들어 맞도록 구성된 정렬 격자 코드를 사용한 데 반해, MGAERO는 독특하게도 데카르트 좌표계를 기준으로 삼는 정렬 격자 코드였다. 1985년 Antony Jameson은 또한 3차원 오일러 해석 코드인 AIRPLANE을 개발하는데, 이는 사면체로 구성된 비정렬 격자에 대한 해석을 위한 코드였다.

2차원 영역에서, Mark Drela와 Michael Giles가 MIT의 대학원생 시절 에어포일 설계와 해석에 사용하기 위한 오일러 해석 코드인 ISES를 개발하였다. (사실 이것은 여러 프로그램들을 하나로 묶은 것이었다) 1986년, 이 코드의 실제 사용이 가능해졌고 이후 단일 에어포일뿐만 아니라 다요소 에어포일(앞전의 슬랫이나 뒷전의 플랩 등이 있음을 의미)에 대한 해석, 설계 및 최적화가 가능한 MSES로 발전되게 된다. 현재에도 MSES는 전 세계적으로 널리 사용되고 있다. MSES로부터 발전되어 익렬(블레이드와 같이 여러 에어포일이 나열된 것을 말함)에 대한 해석 및 설계가 가능한 MISES라는 프로그램이 당시 MIT의 대학원생이었던 Harold "Guppy" Youngren에 의해 개발되었다.

현재에도 나비에-스토크스의 해석은 전산 유체 역학 코드 개발자들의 궁극적 목표이다. NASA 에임즈 연구 센터에서 개발된 ARC2D와 같은 2차원 나비에-스토크스 해석 코드가 발표되었다. 그 이후에도 3차원 나비에-스토크스 해석을 위한 OVERFLOW, CFL3D와 같은 NASA의 성공적인 기여작들이 계속해서 개발되었으며, 이는 현재 개발되고 있는 수많은 상용 전산 유체 역학 프로그램의 모태가 되었다.

기술/기법
-----

전산 유체 역학에 있어서 가장 기본적인 고려사항은 연속체로 가정한 유체 입자 집합들을 어떻게 컴퓨터 상에서 계산이 가능하도록 이산화 할 수 있는가이다.
그 중 하나는 공간 도메인(spatial domain)을 매우 작은 공간 격자(volume mesh or grid)로 이산화하고, 각각의 격자에 대해 운동 방정식을 세워
적절한 수치 알고리즘을 이용하여 계산하는 것이다(비점성 유동에서의 오일러 방정식이나 점성 유동에서의 나비에-스토크스 방정식).
추가적으로 이산화된 격자는 일정할 수도 있고 일정하지 않을 수도 있다(2차원의 경우 2차원에서 삼각형 격자나 3차원에서 피라미드 격자를 들 수 있음. 격자의 i, j, k 색인화(indexing)가 가능하며, 실제 격자 노드의 좌표와 논리적인 격자(logical representative grid)간의 1:1 사상(mapping)이 가능한 경우 정렬 격자계(structured grid)라고 하며, 그렇지 않은 경우 비정렬 격자계(unstructured grid)라고 함). 따라서 각각의 격자를 구분하기 위해서는 서로 다른 저장 공간(대표적으로 시스템상의 메모리)에 위치해야 한다. 만약 충격파나 불연속한 곳이 있을 경우, Gibbs 현상(Gibbs Phenomenon)이라 불리는 해석 결과의 진동을 막기 위해서는 전변동 점감 (TVD; Total Variation Diminishing)나, 유속 수정 수송 (FCT; Flux Corrected Transport), 비진동 (ENO; Essentially NonOscillatory) 혹은 MUSCL (Monotone Upstream-centered Schemes for Conservation Laws)과 같은 고차항 계산이 가능한(혹은 고해상의) scheme이 필요하다.

전산 유체 역학에는 격자를 이용하여 계산하지 않는 다양한 방식 또한 존재한다. 대표적으로 Smoothed particle hydrodynamics (SPH)나 유체 역학적인 문제들을 풀기위한 라그랑지언 기법(Lagrangian method), 체비쇼프 다항식이나 구면 조화 함수를 기저 함수(basis function)로 두고 지배 방정식을 투영(projection)하여 계산하는 Spectral methods, 실제 문제를 미소한 격자나 하나의 큰 계가 아니라 데카르트 격자계에 존재하는 중간 크기(mesoscopic)의 계로 등가하여 계산하는 격자볼츠만기법(LBM)등이 그것이다.

일반적으로 전산 유체 역학에서 나비에-스토크스 방정식을 풀기 위해 직접 수치 모사(Direct Numerical Simulation, DNS)와 같이 모든 난류 길이 척도(turbulent length scale)에 대한 해상도를 가진 격자를 이용하거나, 층류 유동일 경우에는 나비에-스토크스 방정식을 단순화하여 직접 계산하기도 한다. 그러나 일반적으로 모든 난류 길이 척도에 대한 해상도를 가진 격자를 계산하는 것은 현존하는 가장 고성능의 컴퓨터를 사용한다 하더라도 매우 어려운 일이다. 이런 경우 난류 유동을 모사하기 위해 난류 모델(turbulent model)이라는 것을 도입하게 된다. 난류 모델에는 DES (Detached Eddy Simulations), LES (Large Eddy Simulations), k-ε 모델, k-ω 모델, 레이놀즈 응력 모델 (RSM; Reynolds Stress Model)과 같은 RANS (Reynolds-averged Navier-Stokes)에 기반한 방정식들이 있다. 이들 난류 모델은 기본적으로 난류 전단 응력과 유동 특성간의 선형 함수 관계를 가정한 Boussinesq 가정(Boussinesq hypothesis)에 기반을 두고 있다. 여기에는 와점성 (Eddy Viscosity)을 나타내는 항인 {\displaystyle \mu \_{t}}가 매우 중요하다. 이를 와점성 모델 (EVM, Eddy Viscosity Model)이라고 한다. 와점성 모델의 단점은 해석하려는 문제에 따라 적합한 난류 모델이 사용되지 않는다면, 그 결과가 실제와 매우 큰 차이를 보이거나 물리적으로 불가능한 유동 현상을 예측할 가능성이 있다는 것이다. 그러나 Boussinesq 가정이 가지는 명쾌함과 단순성 그리고 많은 실제 유동 문제에 대해 비교적 성공적인 예측 결과를 보여 왔다는 점으로 인해 와점성 모델은 매우 유용하다. 또한 와점성 모델은 난류 전단 응력을 계산하는 데 있어서 다른 모델에 비해 상대적으로 계산 비용이 적게 든다는 장점을 가지고 있다. 이런 다양한 장점들로 인해 현재 상용으로 판매되는 대부분의 전산 유체 역학 프로그램들은 와점성 모델 및 RANS 기반의 코드로 이루어져 있다.

많은 경우, 나비에-스토크스 방정식을 다른 방정식들과 동시에 풀 수 있다. 여기에 들어가는 방정식으로는 질량 전달 (mass transfer or species concentration), 화학 반응 (chemical reactions), 열 전달(heat transfer) 등이 있다. 고도로 진보된 전산 유체 역학 코드는 혈액과 같은 비뉴턴 유체(non-Newtonian fluids)는 물론 연소와 같은 화학 반응이 일어나는 유동까지 해석이 가능하다.

관련 프로그램
-------

* ANSYS CFX
* CFD-ACE
* COMSOL Multiphysics
* FloEFD
* FloTHERM
* FLOW-3D
* Fluent
* GEMS (General Equations and Mesh Solver)
* NX Thermal-Flow
* OpenFOAM
* SC/Tetra
* Star-CCM+
* Star-CD
* XFoil
* XFlow
* Autodesk CFD
* NFLOW
* LS-DYNA ICFD
* LS-DYNA CESE
* SimericsMP
* SimericsMP+