유체역학 Fluid Mechanics | ||
{{{#!wiki style="margin:0 -10px -5px; min-height:2em; word-break:keep-all" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-6px -1px -11px" | <colbgcolor=#0D98BA><colcolor=#fff> 유체와 힘 | <colbgcolor=#fff,#1f2023>유체 · 뉴턴 유체 · 비뉴턴 유체(멱법칙 유체 · 오스트발트-드 웰 관계식 · 허쉘-버클리 유체 · 리-아이링 이론) · 압력 · 부력 (아르키메데스의 원리) · 항력 (수직항력 · 스토크스 법칙) · 응력(응용) · 양력 · 표면장력 · 상 · 밀도 · 기체 법칙 (이상 기체 법칙) · 달랑베르의 역설 |
유체동역학 | 유동 (압축성 · 탄성 · 점성/점성계수) · 난류 및 층류 · 레이놀즈 수송 정리 (체적 검사) | |
무차원수 | 마하 수 · 레이놀즈 수 · 프란틀 수 · 레일리 수 · 그라스호프 수 · 슈미트 수 · 네버러 수 · 프루드 수 | |
방정식 | 나비에-스토크스 방정식 · 연속 방정식 · 오일러 방정식 · 구성 방정식 · 베르누이 방정식 · 파스칼의 원리 · 브라운 운동 방정식 · 하겐-푸아죄유 법칙 · 글래드스톤-데일 방정식 | |
응용 및 현상 | 날씨 · 모세관 현상 · 마그누스 효과 · 케이 효과 · 카르만 효과 · 사이펀의 원리 · 대류 현상 · 슬립 스트림 · 최대동압점 · 스탈링 방정식 · 벤추리 효과 · 레인-엠든 방정식 · 엠든-찬드라세카르 방정식 · 라이덴프로스트 효과 | |
유체역학 연구 | 전산유체역학(CFD) · 풍동 실험 · 차원분석 | }}}}}}}}} |
전산유체역학[1] / Computational Fluid Dynamics (CFD) / 電算流體力學[2]
1. 개요
전산유체역학은 컴퓨터로 유체의 움직임과 그 효과를 묘사하는 유체역학의 한 방법이다. 영어로 Computational Fluid Dynamics이기 때문에 이를 줄인 CFD라고 표현하곤 한다. CFD는 항공공학, 일기예보, 기계공학, 화학공학, 환경공학, 생명공학 뿐만 아니라 영화나 비디오 게임에서 사용하는 컴퓨터 그래픽스(CG) 등 다양한 방면에서 활용되고 있다.2. 상세
유체의 움직임을 수학적으로 표현하는 방정식, 즉 지배방정식은 나비에-스토크스 방정식인데 이 방정식은 해당항목에서 보면 알 수 있듯이 손으로 엄밀한 해를 구하는 방법이 알려지지 않았다. 그래서 사용자가 관심 있는 영역에 한정하여 컴퓨터를 이용해 수치해석적으로 해를 구하는 것이 전산유체역학이다. 워낙 나비에-스토크스 방정식이 풀기 어려운 관계로 여러가지 가정을 붙여서 컴퓨터 프로그램을 만드는 경우가 많다.2020년에 나온 핸드폰의 계산 능력이 1990년의 슈퍼 컴퓨터의 계산 능력보다 더 출중한 요즘 세상에는, 간단한 문제 정도는 노트북 정도를 이용해도 상당히 정확한 값을 몇 분 내에 계산할 수 있다. 그러나 복잡한 문제의 경우 CPU를 수백개 동원하더라도 며칠 혹은 몇주 이상이 걸리는 경우도 흔하다. 대체로 난류가 발생하거나 연소와 같이 기본 나비에-스토크스에 더해 추가적인 물리 현상이 일어나는 경우에 문제의 복잡도가 올라간다. 그런데 비행기, 헬리콥터, 공력 소음 시뮬레이션과 같이 많은 실제 공학 문제와 일기예보와 같은 과학 문제가 이 복잡한 경우에 해당된다. 결국 빠르게 계산하기 위해 각종 물리 모델을 넣어서 조금이나마 간단하게 만들어 계산하게 되는데 이 때문에 CFD 단독 해석의 경우 그 정확도를 섣불리 장담할 수 없으며 (결과가 아주 틀린 경우는 잘 없다) 그럼에도 불구하고 후처리된 결과만 보면 알록달록하고 이뻐보이며 전문적으로 보이기 때문에 때때로 CFD 전공자들도 CFD를 Colorful Fluid Dynamics(형형색색의 유체역학)라고 부르는 경우도 많다.
일기예보도 결국 이 전산유체역학으로 미래의 날씨를 예측하는 건데, 정확하고 빠른 예측을 위해서는 많은 연산량이 필요한 데다가 날씨예측이 너무 오래 걸려 예보가 나온 시점에 이미 과거가 되어버리면 의미가 없기 때문에, 결국 기상청은 슈퍼컴퓨터를 이용한다. 그러나 한반도 주변의 일기 예보를 하는 정도의 난이도만 해도 슈퍼컴퓨터를 이용해도 현실을 그대로 시뮬레이션하는 것은 힘들고, 문제를 간결하게 하는 모델링이 요구된다. 모델링은 엄밀한 해석 결과가 아니기 때문에 계산이 수렴하여도 엉뚱한 결과가 나올 수 있고, 초기 조건을 정확히 아는 것이 거의 불가능하므로 일기예보가 자주 틀리는 원인이 된다.[3] 일기예보가 자주 틀리게 되면 모델링을 현지에 잘 맞도록 수정한다.
정확한 결과를 얻으려면 수치해석 모델뿐만 아니라 계산을 위한 격자(Grid/Mesh 또는 Lattice)도 잘 고려해야 한다. 유체는 기본적으로 연속체이지만, 이를 컴퓨터에서 연산하려면 컴퓨터가 처리할 수 있도록 이산화(discretization)시켜야 한다. 쉽게 말해서 큰 공간을 잘게 잘라 바둑판과 같은 격자를 만들고, 각 격자점이 주변의 유동장(flow field) 데이터를 대표하게 하는 것이다. 격자를 만들 때 유동장이 복잡하게 변하는 부분에 격자를 조밀하게 넣어 주어야만 제대로 된 수치해를 구할 수 있다. 하지만 반면에 격자를 불필요하게 많이 넣는다면 지나치게 많은 연산량을 요구하게 된다. 예를 들어 3차원 공간에서 각 방향으로 격자수를 2배로 늘린다면 총 격자수는 2의 세제곱인 8배가 된다.[4] 결국 원래 하루가 걸릴 계산이 불필요한 격자점 때문에 1주일이 넘게 소요되는 것이다. 각 문제에 적절한 격자수는 유체역학 이론과 문제의 유동 특성을 바탕으로 결정해야 하는데, 시뮬레이션을 돌리기도 전에 유동 특성을 대략적으로 예측하려면 결국 사람의 짬밥이 중요한 요소가 된다. 또한 일반적으로 격자의 모양이 지나치게 납작하지 않은 것이 좋은데,[5] 이러한 부분도 잘 고려할 필요가 있다.
전산유체역학에는 격자를 이용하여 계산하지 않는 다양한 방식 또한 존재한다. 대표적으로 유체 역학적인 문제들을 풀기위한 라그랑주 기법(Lagrangian method)이나 Smoothed particle hydrodynamics (SPH) 같은 방법이 있다. 참고로 스펙트럼 기법(Spectral method)이나 격자 볼츠만 기법(Lattice Boltzmann method: LBM)은 격자가 필요하기 때문에 무격자 방식으로 분류하기 힘들다. 유체역학에서 사용하는 스펙트럼 기법은 각 격자에서 미분값을 유한차분법(finite difference method)보다 정확하게 계산하기 위해 사용하고, 격자 볼츠만 기법에서도
전산유체역학에서 가장 큰 걸림돌이 되는 것은 스케일 분리(scale separation)라는 물리 현상이다. 스케일 분리는 비행기와 같은 물체 주변의 유동을 자세히 들여다 봤을 때 비행기 스케일의 큼지막하고 전반적인 유동 현상도 있지만 그 속에 자잘하고 부분적인 작은 스케일의 유동 현상이 섞여 있으며, 큰 스케일은 작은 스케일에 영향을 주고, 작은 스케일은 큰 스케일에 영향을 준다는 것이다. 특히 난류가 발생한 상황이라면 스케일 분리가 엄청나게 크게 일어나서 큰 스케일과 작은 스케일의 크기 차이가 수십만배가 되기도 한다. 작은 스케일이 큰 스케일의 유동에 영향을 주기 때문에 정확한 시뮬레이션을 위해서는 가장 작은 스케일까지 전부 고려한 시뮬레이션을 돌려야 하는데, 순항하고 있는 민항기 수준이라면 가장 작은 스케일의 크기는 머리카락 두께 정도라, 이 정도 작은 스케일의 물리 현상을 비행기 전체에 대해서 풀려고 하면 격자의 수가 너무 많아져서 컴퓨터가 터져나갈 지경이 된다. 그래서 스케일 분리가 크게 일어나는 난류 유동을 간략화시켜서 풀기 위해 난류 모델(turbulent model)이라는 것을 도입하곤 한다 (다양한 난류 모델에 대한 설명은 아래의 역사 항목을 참조).
나비에-스토크스 방정식이 마하 0.3을 기준으로 더 저속은 비압축성(incompressible) 방정식이 되고 더 고속은 압축성(compressible) 방정식이 되는 것과 마찬가지로 CFD 프로그램도 비압축성 프로그램와 압축성 프로그램으로 나뉜다. 비압축성 프로그램에는 유한차분법, 스펙트럼 기법 등 다양한 수치해석 기법에 동원되는 반면에, 압축성 프로그램에는 충격파를 풀기 위해 유한부피법(finite volume method)이 주로 쓰인다. 비압축성 프로그램은 압축성 문제를 풀 수 없는 반면에 압축성 프로그램은 비압축성 문제와 압축성 문제를 모두 풀 수 있다. 물론 비압축성 문제는 비압축성 프로그램으로 푸는 것이 더 빠르고 정확하기 때문에[6] 가능하다면 두 가지 프로그램을 따로 준비하는 것이 좋기는 하다.
많은 경우, 나비에-스토크스 방정식을 다른 방정식들과 동시에 풀 수 있다. 여기에 들어가는 방정식으로는 질량 전달 (mass transfer or species concentration), 화학 반응 (chemical reactions), 열 전달(heat transfer) 등이 있다. 혈액과 같은 비뉴턴 유체(non-Newtonian fluids)는 물론 연소와 같은 화학 반응이 일어나는 유동도 이에 맞추어 해석자를 개발할 경우 해석이 가능하다.
비싼 돈을 받고 파는 상용프로그램에 여러가지 문제를 위한 솔루션이 잘 준비되어 있으나, 상용 프로그램은 계산의 정확도를 희생시켜서라도 계산의 안정성를 확보하도록 개발되어 있다. 따라서 대학원 연구실에서 직접 개발한 전산유체역학 프로그램이 같은 문제에 대해 상용프로그램보다 더 정확한 결과를 내놓곤 한다. 대학원 연구실에서 자체 개발한 프로그램은 처음부터 특정 형태의 문제만을 타겟으로 개발되는 경우가 많아서 정확도를 높이기가 쉬우며, 시뮬레이션에 문제가 발생하더라도 공짜나 다름없는 대학원생을 밤낮으로 갈아넣어서 문제를 해결하면 되므로 안정성보다는 정확도에 방점을 둘 수 있기 때문이다. 그래도 회사들이 검증된 전산유체역학 박사학위 소지자들을 뽑아서 상용프로그램을 개발하며, 만약 상용프로그램의 정확도가 실제 설계에 적용할 수 없을만큼 낮다면 아무도 구입하지 않아 진작에 회사가 망했을 것이기 때문에, 상용프로그램은 최소한 업계에서 요구하는 정확도 수준을 보장한다. 뉴비들을 위한 튜토리얼만 보고 상용프로그램을 돌렸을때 결과가 형편없게 나오던 것이, 프로그램 제작 회사에서 나온 엔지니어가 같은 문제를 돌렸을 때 정확도가 수직상승하는 것은 이 업계의 클리셰와 같다. 본인이 CFD에 익숙하지 않은 경우 격자를 더 잘 만들어보고, 경계 조건이 제대로 들어갔는지 확인해보자.
전산유체역학의 바이블로 통하는 교과서로 스탠퍼드 대학교의 교수였던 퍼지거(Ferziger)가 쓴 Computational Methods for Fluid Dynamics가 많이 거론된다. 주저자인 퍼지거가 2004년에 사망하였지만 공저자들이 개정판을 내고 있다.
2.1. 압축성과 비압축성
마하 0.3을 기준으로 저속에서는 나비에-스토크스 방정식이 비압축성(incompressible) 방정식이 되고 고속에서는 압축성(compressible) 방정식이 되는 것과 마찬가지로, CFD 프로그램도 비압축성 프로그램와 압축성 프로그램을 다르게 만들어야 한다.비압축성의 경우 풀어야 하는 변수가 속도와 압력인데, 나비에-스토크스 방정식에서 속도와는 다르게 압력은 시간에 대한 미분항이 없는 데다가, 항상 비회전 장(irrotational field)이어서 베르누이 방정식을 통해 속도에서 압력을 쉽게 계산해 낼 수 있는 것도 아니기 때문에, 비정상(unsteady) 문제를 풀려면 속도를 계산하면서 압력을 함께 구하기 위한 특별한 기교가 들어가야 한다.
압축성의 경우 국지적이라도 속력이 마하 1을 넘어가면 충격파가 발생하는데, 충격파가 생기면 기본적으로 유체의 데이터가 충격파를 통과하면서 갑자기 비연속적으로 점프해 버리는지라, 이를 격자점 위에서 표현하다 보면 충격파 주변에서 깁스 현상(Gibbs Phenomenon)이라고 불리는 비물리적인 진동이 생성되어 버린다. 그런데 이 가상의 진동을 억제하지 못하면 시간이 지날수록 진동이 점점 커지고 심지어는 해를 무한대로 발산시켜버리기도 하기 때문에 수치해석적으로 진동을 억누르는 충격파 포착(shock capturing) 기법을 사용해야 한다. 충격파 포착 기법은 비물리적 진동을 잡기 위해 어쩔 수 없이 해를 뭉개버리기 때문에 정확도를 떨어뜨리지만[7] 이것이 없으면 충격파를 전혀 풀 수가 없어서 필요악같은 존재이다. 이때문에 충격파 포착 기법을 최대한 적게 쓸수록 좋지만, 충격파가 없더라도 예상하지 못하게 데이터가 튈 때 충격파 포착 기법이 이를 억눌러 줄 수 있기 때문에 많은 상용프로그램들이 안정성을 위해 오히려 충격파 포착 기법을 광범위하게 적용한다.
충격파 포착은 크게 볼츠만 방식이라고도 불리는 유속 벡터 분리(flux vector splitting) 계열[8]과 리만(Riemann) 방식 또는 고두노프(Godunov) 방식이라고도 부르는 유속 차이 분리(flux difference splitting) 계열[9]로 나뉜다. 다만 모든 충격파 포착 기법이 이 두가지 계열에 속하는 것은 아니며, MUSCL[10]과 같이 기본형은 유속 벡터 분리 계열이지만 구현하기에 따라 유속 차이 분리로 발전시킬 수 있는 기법도 있고 고점도(hyper viscosity) 기법처럼 아예 둘 중 어디에도 속하지 않는 기법도 있다. 또한 본질적 비진동(Essentially non-oscillatory: 줄여서 ENO) 기법과 같이 유속을 계산하기 앞서 처음부터 가상의 진동을 억누르며 해의 재구성을 하는 방법도 주요한 연구 대상이다.[11]
전산유체역학 수업을 들으면 비압축성이나 압축성 중에서 한 분야만 씐나게 배우다가 한 학기가 끝나는 경우가 많다. 두 분야가 매우 이질적인 데다가 각자 배울 것이 많아서 한 학기에 둘 다 진도를 나가기 어렵긴 하다. 그리고 교수들도 사람인지라 자기 분야가 아니면 잘 몰라서 가르치기가 힘들고 자기가 모르는 것은 중요하지 않다(…)고 여기곤 한다. 심지어 수치해석이 선수 과목이 아니어서 수치해석부터 시작하는 경우에는 둘 다 안배우기도(…) 한다.
3. 역사
전산유체역학에 대한 시도는 1940년대에 최초의 컴퓨터가 개발된 이후 1950년을 전후로 하여 시작되었으나, 실질적인 전산유체역학의 시작은 1967년에 패널 기법(Panel methods)이 개발된 시점으로 본다. 물론 그 이전에도 이미 1920년대에 여러 수치해석 방법이 개발되었으며, 1930년대에 개발된 공형 변환(Conformal transformation)도 컴퓨터를 사용하지 않았을 뿐이지 계산을 통해 유체 문제를 푼다는 점에서 전산유체역학과 비슷한 면이 있었다.1960년대의 패널 기법은 2차원 공간에서 점성 효과를 무시한 포텐셜 유동(Potential flow)만을 풀수 있었지만, 1970년대 초부터 점성 효과를 포함한 시뮬레이션이나 3차원 공간의 시뮬레이션 기법이 나오기 시작하였다. 이 때 가장 큰 족적을 남긴 것이 앤서니 재머슨(Anthony Jameson)[12]으로 3차원 공간에서 오일러 방정식(Euler equation)[13]을 제대로 풀 수 있다는 것을 보여주었다.
유체역학의 최대 난제인 난류의 계산은 어느정도 전산유체역학이 성숙화된 이후에 등장했다. 처음에는 평판 위의 경계층(boundary layer) 내에 존재하는 난류를 풀기 위해 나비에-스토크스 방정식에서 난류 계산에 덜 중요한 항들을 최대한 덜어내고 간략화시킨 경계층 방정식(boundary-layer equation)을 풀었고, 이후에는 후술할 '레이놀즈 평균화 나비에 스토크스(Reynolds-averaged Navier-Stokes: 줄여서 RANS)' 방법과 같이 나비에-스토크스 방정식을 조금만 변형하고 대신에 난류 모델항을 더하는 방식이 대세가 되었다.
1950년대에 로타(Rotta)가 RANS 기법을 체계화한 이후, 1970년대부터 RANS 방식의 시뮬레이션이 시도되기 시작했고, 1974년 런더(Launder)의 케이-엡실론 (k-ε) 모델, 1988년 윌콕스(Wilcox)의 케이-오메가(k–ω) 모델,[14] 1992년 스팔랏(Spalart)[15]의 스팔랏-알마라스(Spalart–Allmaras) 모델 등이 나오면서 1990년대부터는 RANS가 실무현장에서 가장 널리 쓰이는 유체 시뮬레이션 기법이 되었다. 케이-엡실론 모델은 경계층이 없거나 경계층이 중요하지 않은 난류 문제에서, 케이-오메가 모델은 난류 경계층이 있는 문제에서,[16] 스팔랏-알마라스 모델은 유선형 물체에서 주로 사용된다. 또한 레이놀즈 응력 텐서(Reynolds stress tensor)의 모든 요소를 푸는 '레이놀즈 응력 방정식 모델(Reynolds stress equation model: 줄여서 RSM)' 계열도 있는데, 이론적으로 RSM이 여러 RANS 모델 중에서 가장 정확해야 하지만, 경우에 따라서 이상한 해가 예기치 않게 튀어나오곤 하는데다가 프로그램을 짜는 것도 만만치 않은 관계로 전산유체역학의 난류 모델을 배우면서 수업시간에 한번씩 거쳐가기는 하지만 실무에서는 별로 사용되지 않는다.
RANS보다 더 정확도가 높은 난류 모델인 '큰 와류 시뮬레이션(Large eddy simulation: 줄여서 LES)' 기법은 1963년 스마고린스키(Smagorinsky)가 처음 제시하였고, 1990년을 전후로 하여 모인(Moin)[17]이 LES가 상당한 정확도로 난류 유동을 시뮬레이션 할 수 있다는 것을 보여주었다. LES는 RANS보다 더 정확해도 훨씬 더 고성능의 컴퓨터를 필요로 하는 데다가 잘 훈련된 전문 인력을 필요로 하기 때문에 한동안 연구 목적으로나 사용했지 업체들은 실험삼아 간을 보았을 뿐 주력 시뮬레이션 기법으로 사용하지 않았다. 그래도 2010년을 전후로 하여 업계에도 서서히 보급되고 있는 중이나, 2020년 경에도 여전히 실무 현장에서 주력 시뮬레이션 기법이라고 보기는 힘들다.
최근에는 스팔랏(Spalart)이 1997년에 제안한 '분리 와류 시뮬레이션(Detached eddy simulation: 줄여서 DES)' 기법도 각광을 받고 있다. DES는 비교적 저렴하다는 RANS의 장점과 더 높은 정확도라는 LES의 장점을 합친 시뮬레이션 기법으로, RANS가 제대로 풀지 못하는 경계층 박리 지역이나 물체 표면에서 멀리 떨어진 난류 지역은 LES처럼 풀고 나머지 부분은 비정상(unsteady) RANS[18]로 푸는 혼성 방식이다. 하지만 시뮬레이션 비용이 RANS보다 비싼데도 경우에 따라서 딱히 RANS보다 더 정확한 결과를 내놓지 못한다는 불만도 있으며, 심지어 기본 RANS보다도 더 부정확한 결과를 내놓을 때도 있다. 그래도 기본적으로 스팔랏-알마라스 RANS 모델의 연장형이라 기존에 있던 비정상 RANS 프로그램을 조금만 손보면 바로 DES 프로그램으로 탈바꿈한다는 점은 엄청난 강점이며, 잘 훈련된 사람이 DES를 돌릴 경우 LES보다는 못하더라도 RANS보다는 확연히 좋은 결과를 내놓는다.
가장 정확도가 높으며 아무런 난류 모델 없이 생으로 나비에-스토크스 방정식을 푸는 '직접 수치 시뮬레이션(Direct numerical simulation: 줄여서 DNS)' 기법은 김(Kim)[19]과 모인(Moin)의 기념비적인 1987년 논문에 기인한다.[20] 이 논문 이전에는 '유체역학 시뮬레이션이 근본적으로 정확도를 보장하지 못한다'는 회의적인 의견이 있었지만, 이 논문 이후로 그런 논란이 쑥 들어가버리게 되었다. 하지만 DNS는 그 비싸다는 LES보다도 더 고성능의 컴퓨터를 요구하기 때문에 연구 목적으로만 한정적으로 사용되고, 그나마도 빵빵한 재정 재원을 받을 수 있는 부자 연구실에서만 사용한다.
4. 소프트웨어
틀:그래픽 툴 및 유한요소해석의 목록도 참고. 회사명 ABC 순서.- 메이저
- Ansys - fluent, CFX
위의 두 Ansys의 CFD 툴들은 유체공학 연구분야에서 가장 널리 사용되는 유동해석 소프트웨어에 속한다. 유체역학 연구현장에서는 주로 Fluent를 사용하며, 터보머신 분야에서는 CFX를 쓰는 경우가 많다. 보통 필드에서 유동해석 툴이라 하면 대부분 위 두 제품인 경우가 많고 상대적으로 다른 툴들은 사용 빈도가 현저히 적다.
CFX와 Fluent의 차이는 다음과 같다: - 격자 연산 방식: CFX(Node-based), Fluent(Cell-based)
- 2차원 격자 구현: CFX(불가능, 1개 두께의 3D 격자로 대신 구현), Fluent(구현 가능)
- 업데이트 빈도: CFX < Fluent
- GPU 가속: CFX(불가능), Fluent(가능)
- Dassault - SolidWorks Flow Simulation
- OpenFOAM Foundation - OpenFOAM
현재까지는 유일한 오픈소스 Solver로, 프로그램 모딩에 대한 자유도가 높은 대신 프로그램 진입장벽이 높아 위의 메이저 상용 툴에 비해 사용자가 적다. - Siemens - STAR CCM+
한편 Ansys는 사용기간 1년, CPU 코어 수 4개, 격자 수 1,000,000개 (Node 및 Element) 제한이 걸린 학생용 버전을 배포하고 있다. 본격적인 유동해석용으로는 한계가 있지만 학습용으로는 매우 유용하다. #
- 마이너
- Ansys - Icepak, Discovery
Discovery의 경우 기본 탑재된 해석 기능들 중 하나로 CFD를 지원하는데, 정량적 평가를 위한 Post 처리가 제한되어 있고 연산속도를 위해 정확도를 더 희생시켰으므로 Fluent나 CFX에 비해 잘 사용되지 않는 편이다. - Autodesk - CFD
- Altair - AcuSolve, HyperWorks, CFD, SimLab
- CASCADE technologies - CFD
- Cadence - Fidelity CFD
- Comsol - MultiPhysics, CFD
- Dassault - Simulia, PowerFlow
- Elmer
- Flow Science - FLOW-3D
- IVRESS
- NASA - TetrUSS
- Nora Scientific - Flowsquare
- ParaView - CFD
- PipeSIM
- SU2
- SimFlow
- Simulation X
- SimScale GmbH - SimScale
- Siemens - Simcenter(STAR-CCM+ 포함)
- SimsScale
- Flow360
웹 페이지에서 직접 전산해석을 수행할 수 있는 CFD 프로그램을 지원한다.
NVIDIA GPU를 사용하는 CFD 툴. 기존 CPU를 사용하는 Solver에 비해 수십배 이상 연산속도가 빠른 것으로 알려져 있다. 웹 버전과 설치형 버전을 동시에 동시에 지원한다.
5. 응용
애니메이션과 같은 컴퓨터 그래픽스 분야에서 유체를 시뮬레이션 하기 위해 응용될 수 있다. 다만, CFD를 그대로 쓰기보단 그래픽스에 알맞게 변형된 기법을 사용한다.[21] 실례로, 위 영상은 눈을 시뮬레이션 하기 위해 애니메이션 겨울왕국에 적용된 MPM 기법을 소개하고 있다.
2000년대 들어 컴퓨터 하드웨어가 빠르게 발달함에 따라, 다수의 컴퓨터를 병렬로 연결하여 대량 연산량을 요구하는 작업을 수행하는 병렬 프로그래밍의 활용성이 늘어났고, 이로 인해 CFD의 실제 공학적 활용이 활발히 이뤄지고 있다. 주로 사용되는 분야는 조선, 항공, 자동차 등의 제조업이며 수조 시험, 풍동 시험의 재현과 다수의 설계 인자에 대한 설계물의 성능 평가에 이용된다. 실제 현대중공업, 대우조선해양, 현대기아자동차 등의 기업에서 CFD 팀(실)의 규모는 실험팀과 유사한 수준이며 실험팀에서 CFD를 직접 활용하기도 하거나 둘을 동시에 수행하는 조직을 두기도 한다.
6. 정확성
2020년대 기준에서 각 분야의 CFD 예측 정확도는 아직 정량적인 값을 정확히 맞출 수준은 아니다. 하지만 학교, 기업 등에서 축적된 데이터를 통해 각종 난류 변수가 잘 튜닝된 정상 상태의 시뮬레이션에서는 낮게는 5%, 높게는 2% 이내의 정량적 오차율을 기대할 수 있다. 하지만 CFD에서 산출되는 정량적 결과는 너무 많은 변수 요인에 의해 영향을 받은 것은 것이므로, 우연히 값이 일치한 것일 수 있다. 이에, 정량적인 값을 비교하는 것만으로는 CFD를 통해 실제 현상 에서 벌어지는 각각의 국부적인 유동들을 정확히 예측했다 말하기 어렵다. 따라서, 매우 높은 정확도의 DNS 시뮬레이션을 수행할 수 있는 시대가 오기 전에는 CFD가 각 디자인 간의 정성적 차이를 예측하는데에 의미가 있다고 바라보고 활용하는 것이 합리적일 것이다.CFD가 실제 적용되는 주된 이유는 실험에 비해 해석에서 소요되는 시간적, 공간적 비용이 상대적으로 작기 때문이며 정확도는 완벽히 보장할 수 없다. 따라서 특수한 경우를 제외하고 CFD로 해석된 결과물이 실제 실험 결과나 실제 제품 운용 결과와 매우 유사하다고 생각하면 안된다. 그러나 실험 또한 변인 통제가 완벽히 되지 않고 근사할 수 밖에 없는 것들이 있으므로, CFD 결과와 풍동 실험 결과가 상이할 경우 CFD와 실험을 전공한 사람들이 서로를 의심하는 진풍경을 볼 수 있다. (서로를 의심하는 경우도 있지만, 서로 자기 것이 틀렸다고 주장하는 풍경이 펼쳐지기도 한다) 이럴 경우 보통 제 3자 입장에서는 실제 현상인 실험에 손을 들어주게 된다. 물론 실험과 CFD 해석 결과가 다를 때에도 그 결과가 아주 크게 다르지는 않다. 다만 공학적으로 의미가 있는 수준까지 다른 경우는 매우 많다.
현재 기술력으로는 CFD는 풍동 또는 수동(수조 실험)을 절대로 대체할 수 없다. 그럼에도 CFD가 사용되는 이유는, 첫 번째로 실험할 때마다 비용이 많이 소모되는 실험과는 달리 CFD는 클러스터만 한 번 구축해놓으면 인건비와 전기 요금 외에 추가로 소요되는 비용이 없기 때문이다. 두 번째로 실제로 모델을 만들지 않고도 적당한 수준의 정확도로 결과물의 경향과 실험으로는 알기 어려운 세부적인 수치를 알 수 있다는 장점이 존재한다. 세 번째로 유동장 혹은 구조물의 일부 조건만 변경하여 같은 문제에 대한 해석을 다량의 횟수로 수행 시 (실험계획법) 실제 물리적 실체를 변경해줘야 하는 실험에 비해 훨씬 간편한 절차로서 결과를 얻어낼 수 있기 때문이다. 위와 같은 장점들로 인해 기업 및 연구소 입장에서 CFD는 매력적일 수 밖에 없다. 따라서 기업 및 연구소에서는 CFD 결과물을 전적으로 신뢰하지는 않으면서도 실험의 상호 검증 및 데이터 확보를 위해, 그리고 경향성을 알아보기 위해 CFD 해석을 수행하는 경우가 많다. 이러한 CFD의 경향성 파악 측면에서의 활용은 실험의 케이스 수를 크게 줄여줄 수 있기 때문에 실험을 수행하는 입장에서 도움이 될 수 있다. 따라서, CFD를 통해 실제 현상을 대체한다기 보다는 실험과 CFD를 상호보완적으로 활용하고 서로를 존중하며 연구 활동을 수행하는 것이 현재로써는 가장 바람직하다 할 수 있겠다.
상술한 CFD의 한계점이라고 할 수 있는 정확성 문제를 최대한 개선하기 위한 엔지니어들의 노력들이 존재한다. 대표적인 것이 격자 의존성을 확인하는 것인데, 같은 유동장에 대해 격자의 수를 (혹은 격자의 평균 체적) 달리하여, 격자가 해석 결과에 미치는 영향을 정량화 한 후 계산 비용과 오류 사이의 타협을 통한 합리적인 해석 결과를 도출하는 과정이다. 격자 의존성을 검증하는 방법론으로는 격자 독립성 시험(Grid dependency test), 격자 민감도 시험(Grid sensitivity test) 등이 있으며, 특별히 유체기기 (팬, 펌프, 압축기) 연구 분야에서는 격자 수렴성 지표(GCI; Grid Convergence Index)를 자주 사용한다.
상용 프로그램 개발사에서도 마찬가지로 해석의 정확성과 수렴성을 향상시키기 위한 튜닝을 적용하기도 한다. 가령 일반적인 반복 솔버에서 초기 값이 크게 튀어 해석 시간과 수렴성에 영향을 주는 것을 완화하기 위해 다중 격자계를 구성하는 방법을 사용하기도 한다. 프로그램이 사용자가 구성한 격자계보다 더 느슨한 격자를 구성하고 해석을 구동하여 초기 해의 정확도를 높힌 상태에서 반복 연산을 통한 수렴을 진행시킨다.
7. 관련 문서
[1] 수치유체역학, 계산유체역학 등으로도 불린다.[2] 일본어: 数値流体力学[3] 모델 뿐만 아니라 시뮬레이션에 넣는 실제 측정값이 부정확하거나 불완전한 것도 큰 원인이다. 예를 들어 한반도 근처는 대체로 바람이 서쪽에서 불어오기 때문에 중국과 서해에서 측정한 기상 데이터가 정확해야 한반도의 일기 예보가 제대로 되는데, 충분한 측정 데이터가 없거나 이 데이터를 믿을 수 없을 때 문제가 발생할 수 있다.[4] 이렇게 각 방향으로 격자수를 조금씩 늘려도 2차원이나 3차원 공간에서 총 격자수가 기하급수적으로 증가하게 되는 것을 차원수의 저주(curse of dimensionality)라고 한다.[5] RANS와 같은 기법에서는 긴 변과 짧은 변 사이의 비율이 1000을 넘어가는 경우도 흔하지만, LES와 같은 기법에서는 아무리 커도 100 미만을 유지해야 한다.[6] 예를 들어 마하 0.1 미만의 아주 느린 속력을 가진 비압축성 문제를 압축성 프로그램으로 풀 경우 비압축성 프로그램보다 10배 이상의 시간이 걸리는 경우가 수두룩하다.[7] 많은 충격파 포착 기법이 자신은 딱 가상의 진동만 잡는다고 광고하나 현실적으로 멀쩡한 해를 전혀 뭉개지 않는 충격파 포착 기법은 없다.[8] 유속 벡터 분리 계열은 스티거-워밍(Steger-Warming) 기법이 대표적인데, 프로그램을 만들기가 비교적 쉽고 암시적 방법(implicit method)와 결합하여 사용하기 좋으며 쉽게 발산하지 않지만 정확도가 높지 않다.[9] 유속 차이 분리 계열에는 로(Roe) 기법, AUSM 기법 등이 있는데, 국지적인 비연속 함수(흔히 리만 문제라고 부르는 것)를 풀어야 해서 복잡해지곤 하지만 대신에 더 정확한 경우가 많다. 로 기법은 미시간 대학교의 교수인 천문학자 로(Roe)가 1981년에 개발한 기법으로, 가장 인지도가 높고 무안단물처럼 충격파 포착이 필요한 온갖 분야에서 쓰이고 있다. '어슴'이라고 많이 읽는 AUSM은 Advection Upstream Splitting Method의 약자인데, '기막히게 뛰어난'이라는 뜻을 가진 영어 단어인 awesome과 비슷한 음이 되게 만든 언어유희로 보인다.[10] 네덜란드 출신의 유체역학자이자 미시간 대학교 교수인 반 리어(van Leer)가 1979년에 개발한 기법. MUSCL을 '머슬'이라고 읽는다. MUSCL은 Monotonic Upstream-centered Scheme for Conservation Laws의 약자인데, 사실 그런 것은 중요하지 않고 근육을 뜻하는 영어 단어인 muscle과 같은 발음이 되도록 만든 언어유희로 보인다. 1979년에 처음 나왔을 정도로 상당히 오래된 기법이지만, 기법이 직관적이고 프로그램에 잘 구현할 경우 준수한 정확도를 보이기 때문에 여전히 현역에서 뛰는 노익장을 과시하고 있다.[11] ENO는 해를 재구성 하는 기법이라 단독으로 쓰기보다는 (주로) 유속 차이 분리 계열 중에 하나와 같이 쓰이지만, 학회에서 발표자가 그냥 ‘3차 ENO를 썼습니다’라고만 하고 더 자세히 말하지 않는 경우가 많다. 어차피 이 정도만 말해도 청중들이 시뮬레이션의 정확도와 특성에 대해서 대략적으로 파악할 수 있기 때문이다.[12] 1934년 영국 출생으로 케임브리지 대학교에서 박사 학위 받음. 뉴욕 대학교 (1972~1980), 프린스턴 대학교 (1980~1997), 스탠퍼드 대학교 (1997~2015), 텍사스 A&M 대학교 (2015~) 교수[13] 나비에-스토크스 방정식에서 점성에 관련된 항이 전부 삭제된 방정식[14] 윌콕스가 여러 차례 자신의 모델을 조금씩 수정하였기 때문에, 현재는 윌콕스의 케이-오메가 모델이라고 하면 2006년판이나 2008년판을 일컫는다.[15] 프랑스 출신의 유체역학자. 젊은 시절에는 NASA에서 일하면서 본문에서 후술된 DNS를 돌리기도 하였고, 1990년에 보잉으로 이직한 이후 현재까지 보잉에 소속되어 있다. 보잉으로 이직한 직후 개발한 스팔랏-알마라스 모델은 비교적 간단한 RANS 모델인데도 불구하고, 비행기 날개와 같이 유선형 물체 주변의 유동에서는 더 복잡한 다른 RANS 모델의 정확도와 비슷하거나 더 뛰어난 성능을 보여준다.[16] 멘터(Menter)가 1994년에 수정한 '멘터 SST 케이-오메가 모델'을 쓰는 경우가 더 많다.[17] 스탠퍼드 대학교 교수. 난류 모델링, 수치해석 기법 개발, 유동 제어, 소음 해석, 난류 연소, 2상(two phase) 유동, 극초음속 유동 등 전산유체역학에서 안 건드린 부분이 없을 정도이며, 각 분야를 창시했거나 최고권위자로 있는 굇수같은 인물이다.[18] RANS는 시간에 대한 변화를 나타내는 항이 있냐와 없냐에 따라 각각 비정상(unsteady) RANS와 정상(steady) RANS로 나뉜다. 비정상 RANS에 대해 'RANS가 (사실상) 나비에-스토크스 방정식에서 시간에 대한 평균을 내서 만들어진 것인데 무슨 시간항이 들어가 있냐'는 비판이 있는 반면에, '시간에 대한 평균이 아니라 모둠(ensemble) 평균을 낸 것으로 보면 아무 문제가 없다'는 옹호론이 있다. 비정상 RANS가 비교적 천천히 변하는 유동에 대해서는 좋은 해를 내주기 때문에 모둠 평균이라는 말에 일리가 있어 보이지만, 빠르게 휙휙 변하는 유동에 대해서는 형편없는 예측값을 내는 한계도 있다. 참고로 LES나 본문에서 후술된 DNS는 비정상 방식만 가능하며, 빠르게 휙휙 변하는 유동을 푸는데 강점이 있다.[19] 참고로 서울대학교에서 학사 학위를 받은 한국인이다. 현재 UCLA 교수.[20] 이 논문 이전에 DNS로 문제를 푸려는 노력이 없었다는 것은 아니지만, 이 논문이 주는 교훈은 "너님의 시뮬레이션이 잘 안된 이유는 님이 잘 못해서 그럼 ㅇㅇ"이라는 것이다. 이 논문은 현재의 기준으로도 (최신 기법을 동원해서 조금 개선할 점이 있을지는 몰라도) 딱히 오류를 찾을 수가 없다.[21] 연산량이 큰 것도 있고 사용목적 자체가 다르다. 정밀한 근사에 초점을 둔 CFD와 달리, 그래픽스는 그럴듯한 시각화에 초점을 두기 때문이다.