연구동향
조회수 4385 좋아요 14 댓글 0
전산유체 해석분야에서의 오픈 소스 코드(OpenFOAM) 동향
김채형(한국항공우주연구원 한국형발사체개발사업본부)

전산유체 해석(CFD, computaional fluid dynamics)은 물리적 공간을 수치적으로 차분하여 포인트에서 포인트로 선형적으로 계산된 결과를 반영하여 속도, 온도, 압력 등의 물리적 결과를 수치화하거나 가시화 하는 방법이다. 컴퓨터의 개발과 함께 여러 계산 방법과 이론들이 연구개발 되었으며, C(C++), Fortran 등의 컴퓨터 프로그램 언어들을 사용하여 개발되었다.

 

2차원, 3차원으로 가시화 하여 유동을 보여주며 실험으로 측정하기 힘든 부분을 계산해주기에 현재 전산수치 해석은 많은 분야에 사용되고 있다. 전산유체 해석 코드를 개발하는데 많은 시간이 소요되기 때문에 실험과 전산유체 해석을 병행할 경우 일반적으로 상용코드를 많이 사용한다. 그 이유는 여러 전문 개발자에 의해 개발 및 검증되었기에 해석 결과에 대해서 믿을만하며 전산유체 해석에 대한 전문 지식이 적어도 쉽게 접근가능하기 때문이다. 그리고 대학교(대학원)에서도 아카데미 버전으로 상용해석 코드를 사용하여 교육 및 연구활동이 이루어지고 있다.


연구소에서는 전문 개발자에 의해 개발된 자체 인하우스(in-house) 코드를 개발하여 특정 연구환경에 맞는 해석을 수행한다. 하지만 보안 등의 이유로 공개되거나 배포하지는 않는다. 상용 해석 프로그램은 기업에서 만들어 판매하는 소프트웨어이다. 가장 대표적인 상용 CFD프로그램은 FLUENT이다. ANSYS에서 FLUENT를 인수하여 현재는 ANSYS로 불리며 발사체의 연소기나 외부 유동 해석에도 많이 사용되고 있다.

한국형 발사체에서도 연소기나 발사대 화염 등의 유동 해석에도 사용되고 있다. ANSYS는 설계 소프트웨어 회사인데 FLUENT와 함께 CFX라는 해석 소프트에어 회사도 인수하였으며, CFX는 터보펌프의 성능 해석에 사용되기도 한다. CFD-ACE+는 미국회사로 ESI에서 인수하여 유럽의 아틀라스 연소기 해석이나 SSME 해석에 사용되었다. STAR-CCM+는 Siemens에 인수된 CD-adapco의 개발한 소프트웨어로 아리안 로켓의 외부 유동 해석에 사용되었다. 필자의 경우 실험을 주로 하는 연구자이지만 앞서 소개한 CFD-FLUENT, CFD-ACE+의 CFD-Fastran을 사용하여 유동 해석을 수행한 바가 있으며, 최근에 STAR-CCM+를 사용한 초음속 디퓨져 내부 유동 계산을 수행한 바가 있다.

인하우스 코드의 장점은 내가 자유롭게 코드 내용을 수정가능하고 무료이지만 단점은 코드 개발이나 사용을 위해서는 수치해석에 대한 심도 있는 지식과 긴 시간이 필요하다. 상용 CFD코드의 장점은 전산유체 해석에 대한 기본 지식만 있어도 쉽게 사용 가능하며 계산 결과도 다양한 후처리 툴을 사용하여 표현이 가능하지만 매우 비싼 사용료와 내가 원하는 특정 해석조건으로 수정이 자유롭지 못하다는 단점이 있다.


인하우스 코드와 상용 소프트웨어의 중간으로 오픈 소스 소프트웨어가 있다. 오픈 소스 소프트웨어는 프로그램 개발자가 자신이 만든 인하우스 코드를 무료로 배포하여 누구나 사용하고 수정해서 업그레이드가 가능한 소프트웨어이다.
 

전산수치 해석분야에서 가장 대표적인 오픈 소스 프로그램으로 OpenFOAM(Open Source Field Operaion and Manipulation)이 있다. OpenFOAM은 1990년 초에 임페리얼 대학의 Henry Welder와 Hrvoje Jasak에 의해 개발되었으며, 2004년 이후 OpenCFD Ltd를 통해 배포되어 무료로 다양한 분야에서 사용되고 있다[1]. OpenFOAM은 C++을 기반으로 다양한 라이브러리를 가지며 격자 생성에서 솔버(solver), 후처리(post-processing) 가시화까지 제공한다. 하지만 리눅스 TUI(text user interface)기반으로 GUI(graphic user interface)에 익숙한 사용자에게는 낯설고 사용하기 위해서는 기본 교육과정이 필요하다.

해당 보고서에서는 OpenFOAM을 사용한 국내외 최근 연구 사례를 소개하고자 한다.

해당 참고문헌[2]은 OpenFOAM의 일반적인 적용사례로 2017년 PERRIN에서 개발한 F1 레이싱카의 외부 유동 해석에 대한 결과를 제시하고 있다. CAD 프로그램을 사용한 F1 레이싱카는 stl파일(STereoLithography format)은 OpenFOAM에서 읽을 수 있도록 변환되어 SnappyHexMesh를 통해 격자 생성이 가능하다. 계산의 격자 영역은 F1 레이싱 카 크기의 18배로 하며 가상의 풍동에 있는 것과 같은 형상을 가진다(Fig 1).


벽면에서의 첫 번째 격자 거리는 0.6 mm이며 격자 팽창률은 1.2이다. F1 레이싱카의 동체 길이는 3.475m이다. 격자는 그림 1에서와 같이 F1 레이싱카 주변 격자는 조밀하게 하며 후방으로 감에 따라 격자 간격은 증가시켰다. 난류 해석 모델은 kw-SST와 Spalart Allmaras 모델을 사용하고 해석 솔버는 비압축성 RANS인 SimpleFoam을 사용하였다. 계산결과 다운포스는 20%, 저항계수는 11%이며 참고자료 대비 오차는 각각 6%, 7%이다.


Fig 2와 같이 3차원 계산결과에서 앞뒤바퀴와 동체의 구조로 인한 와류 유동도 가시화 가능하며 차량 앞날개에 의한 다운포스는 26%, 뒷날개에 의한 다운포스는 27.5% 발생하는 것을 알 수 있다. 이는 날개, 동체, 바퀴의 좁은 통로를 유동이 흘러가면서 벤츄리 효과, 그라운드 효과 등에 의해 발생한다. F1 레이싱 카의 주요 저항은 앞/뒤 바퀴에 의해 발생하며, 그 이유는 강한 와류를 발생시키기 때문이다. 레이싱 카의 고속 안정성은 주로 그라운드 효과에 의해 영향을 받기 때문에 하부구조가 제일 큰 영향을 미치며, 앞 날개 부분이 벤츄리 효과에 의해 다운포스를 추가로 발생하여 고속 안정성을 향상시키게 된다.

OpenFOAM은 C++기반 오픈 소스이며 참고문헌[3]에서는 RTE(radiative trasfer equation)를 풀기 위해 OpenFOAM을 수정한 radiationFoam을 개발하여 이에 대한 검증 결과를 제시하고 있다. 비정렬 격자를 위해 OpenFOAM의 격자 라이브러리 snappyHexMesh를 사용하고 계산과정에서의 도메인 분해를 위해 MPI를 사용하였다. 고체 각 공간(solid angular space) 차분을 위해 DOM(discrete ordinates method)을 사용하고 제어 체적(control volume)과 고체 각 적분을 위해 FVM(finite volume method)을 사용하였다. 길이 1m의 삼각 기둥의 사각면 A-A선에서 무차원화 시킨 열전달 값이 radiationFoam의 계산 결과와 일치하는 것을 그림 3에서 확인할 수 있다.

k=0.1, 1.0, 10 일 경의 raidiationFoam과 Grissa et al이 제어볼륨 FEM(finite element method)으로 계산한 값의 상대오차는 각각 6.166%, 5.339%, 1.327%로 유사한 결과를 보여준다. RTE 계산을 위한 radiationFoam은 서로 다른 흡입률을 가지는 물질의 흡수, 배출에 대한 솔버로 OpenFOAM에 기반을 두고 개발한 것으로 해당 논문[3]에서는 다른 계산 결과와의 비교를 통해 성능을 검증하고 있다. 여기서 OpenFOAM은 사용자가 얼마든지 새로운 솔버를 자유롭게 개발 가능한 것을 알 수 있다.


국내에서도 OpenFOAM을 사용한 연구가 많이 이루어 지고 있다. 건축, 선박, 기계, 원자력 등 다양한 분야 중 연소와 관련된 논문을 소개하고자 한다. 압축성 연소 솔버인 reatingFoam과 LES 모델중의 하나인 WALE 기법을 사용하여 GE7EA 1/3 축소 모델 연소기를 H2와 CH4 합성가스를 사용하여 계산을 수행하였다[4]. PIV 가시화 결과와 비교했을 경우 두 결과가 잘 일치 하는 것을 볼 수 있다.


OpenFOAM 라이브러리에는 Rettenmaier에 의해 개발된 하중 균형(load balance) 적응형 격자 세밀화 (AMR: Adaptive Mesh Refinement)이 개발되어 적용되어 있다[5]. AMR은 적응형 격자 세밀화로 특정 해석 영역에 따라 격자의 조밀도를 조절할 수 있다.


Fig 5에서처럼 화염 면과 내부는 공간 해상도를 높이기 위해 격자를 조밀하게 하며, 화염 외부와 같이 주요하지 않는 영역은 격자를 듬성하게 하여 계산에 소요되는 부하를 줄일 수 있다. Fig
6과 같이 AMR을 적용했을 경우와 조밀한 격자를 사용했을 때의 해상도가 거의 일치하는 것을 볼 수 있다.

계산에 소요되는 비용을 계산해 보면 조밀한 격자는 700,000개가 사용되었으며, AMR은 182,120가 사용되었다. 계산 시간의 경우 조밀한 격자는 1회 계산에 6초, 하중 균형을 사용한 AMR은 2.07초가 소용되었다. AMR을 사용한 경우 조밀한 격자보다 3배 빠른 것을 확인할 수 있다.


Fig 6과 같이 AMR을 적용했을 경우와 조밀한 격자를 사용했을 때의 해상도가 거의 일치하는 것을 볼 수 있다. 계산에 소요되는 비용을 계산해 보면 조밀한 격자는 700,000개가 사용되었으며, AMR은 182,120가 사용되었다.

계산 시간의 경우 조밀한 격자는 1회 계산에 6초, 하중 균형을 사용한 AMR은 2.07초가 소용되었다. AMR을 사용한 경우 조밀한 격자보다 3배 빠른 것을 확인할 수 있다.

최근에 상용 CFD 프로그램 성능이 막강해지다 보니 기업체나 연구원에서도 많이 사용되고 있다. 하지만 성능이 좋아진 만큼 구매 비용도 높아져서 개인 연구자나 학교 등에서 사용하기에 부담스러운 면이 있다. 이에 오픈 소스 프로그램인 OpenFOAM이 최근에 많은 관심을 받고 있다.

OpenFOAM은 국내에서 여러 대학과 기관들이 교육과 개발을 위해 EDISON(Everything for Computational Science & Engineering) 사이트를 운용 중이다[6]. OpenFOAM은 전산수치해석 개발자가 아니면 리눅스 기반의 TUI가 익숙하지 않기에 개발자 요구조건에 맞게 GUI를 개발해주기도 하는 곳이 있다.

국내에서는 OpenFOAM 개발과 GUI 공급 업체로 넥스트폼[7]이라는 업체가 있다. 필자의 경우도 최근에 OpenFOAM을 시작하여 아직 모르는 부분이 많지만 오픈 소스라는 부분은 내가 자유롭게(라이센스) 사용할 수 있다는 장점이 있다. 전산수치 해석에 관심이 있지만 복잡한 코딩 작업이 부담스럽거나 고가의 상용 CFD프로그램을 살 수 없는 연구자들이나 학생들에게는 매우 유용한 프로그램이라고 생각된다.




 

 

  • 전산유체해석
  • OpenFOAM
  • C++
  • TUI
  • SnappyHexMesh
인쇄 Facebook Twitter 스크랩

  전체댓글 0

[로그인]

댓글 입력란
사용자 프로필 이미지
0/500자