KOREAN SOCIETY FOR FLUID MACHINERY
1

Introduction

The KSFM Journal of Fluid Machinery - Vol. 25 , No. 2

[ Original Paper ]
The KSFM Journal of Fluid Machinery - Vol. 25, No. 2, pp. 29-37
Abbreviation: KSFM
ISSN: 2287-9706 (Print)
Print publication date 01 Apr 2022
Received 25 Aug 2021 Revised 20 Jan 2022 Accepted 25 Jan 2022
DOI: https://doi.org/10.5293/kfma.2022.25.2.029

가스 터빈의 수치 해석을 위한 오픈폼 활용
강승환*, ; 정희윤* ; 강영석* ; 전상욱* ; 윤태호**
*한국항공우주연구원 항공추진연구부
**한국과학기술정보연구원

Use of OpenFOAM for Numerical Simulation of Gas Turbine
Seung-Hwan Kang*, ; Heeyoon Chung* ; Young Seok Kang* ; Sangook Jun* ; Tae Ho Yoon**
*Aeropropulsion Research Division, Korea Aerospace Research Institute
**Korea Institute of Science and Technology Information
Correspondence to : E-mail : hahacar@kari.re.kr

Funding Information ▼

Abstract

This study has been conducted to verify the feasibility of OpenFOAM, one of the open source CFD codes, as a numerical simulation tool for the gas turbine fluid analysis. The turbomachinery specified solver is included in a community-driven version called foam-extend, and among them steadyUniversalMRFFoam was used. Although this solver is composed for the turbomachinery fluid analysis, some main variables of it are missed out in the code resulting in discontinuity of enthalpy and temperature at the interface between the stationary and rotating domains. Thus, it was corrected for the rothalpy jump to be applied properly. For the calculating machine, KISTI supercomputer Nurion was used, which enabled the parallel calculation in a node. The one stage of uncooled turbine with the mesh made by TurboGrid was used for the analysis. kOmegSST was used for the turbulence model, smoothSolver for the linear system solver, and upwind and linearUpwind for the convective discretization scheme. The calculation results by steadyUniversalMRFFoam showed good agreement with those by Ansys CFX in estimation for the mass flow rate, while it overestimated the temperature at the walls leaving the future work for this problem.


Keywords: Axial turbine, CFD, Gas turbine engine, OpenFOAM, Supercomputer
키워드: 축류 터빈, 전산유체역학, 가스터빈엔진, 오픈폼, 슈퍼컴퓨터

1. 서 론

가스터빈 엔진 개발에 있어 공력 성능 및 열전달 특성을 예측하는 것이 중요하며, 전산수치해석을 활용하는 경우 각 구성품에 대한 세부적인 성능 분석이 가능하다. 특히 가스터빈 엔진의 성능 및 효율을 향상시키기 위하여 막냉각 터빈과 같은 기술이 개발되었으며, 이와 같은 구성품의 성능 분석을 위해 고정밀도 해석이 요구 된다. 고정밀도의 해석은 더 많은 계산 능력을 요구하는 만큼 슈퍼컴퓨터와 같은 고사양의 컴퓨터에서 대규모의 병렬 계산을 수행하는 것이 유리하다.

특히 대규모의 병렬 해석을 수행하기 위하여 오픈소스 코드를 사용하는 것이 합리적이다. 기존의 상용 해석 코드는 사용하는 코어 수가 증가할수록 라이선스 비용이 커지기 때문에 대규모 병렬 해석을 수행함에 있어 연구실 및 기업체에서도 운용에 부담이 커지며, 이에 현재는 기업에서도 상용 코드에서 오픈소스로 옮겨 가고 있다(1). 오픈소스를 사용하는 경우 라이선스 비용에 부담이 없어 장소에 구애받지 않고 누구나 사용할 수 있으며, 대규모 병렬 해석을 수행하는 데 있어서도 제한이 없다.

오픈소스 CFD (Computational fluid dynamics) 코드 중 하나인 오픈폼(OpenFOAM)은 국내에 도입된 지 약 10여 년이 되었고, 조선, 해양, 비압축성 공력 해석 등 여러 분야에서 연구가 진행되고 있으나 압축성 솔버 및 가스터빈 엔진과 관련된 분야에 대한 연구는 미미하다(2, 3). 반면, 국외에서는 터보유체기계와 관련된 오픈폼 연구가 계속 진행되어 왔으며(4-11), 비록 몇몇 오류들이 발견되는 등 완성도는 낮지만 관련 솔버가 foam-extend라는 번외 버전에 포함되어 공개되고 있다.

본 연구에서는 터보유체기계의 압축성 유동 해석을 위해 foam-extend-4.1 버전을 시험해 보았고, 그중 steadyUniversalMRFFoam 솔버를 사용하여 해석의 가용성을 확인해 보았다. 특히 해당 솔버를 터빈 1단 스테이터(Stator)-로터(Rotor)에 적용 시, 로탈피 점프(Rothalpy jump) 등 여러 파라미터가 접촉면에서 잘 계산이 되는지 여부를 살펴보고자 하였다. Foam-extend 버전은 국내에 소개된 바가 없기에 본 논문에서 관련된 내용을 상세히 설명하고자 한다.

한편, 오픈폼의 대규모 병렬 계산의 가용성을 확인하기 위하여 KISTI 슈퍼컴퓨터 누리온을 사용하여 계산을 수행하였다. 슈퍼컴퓨터에서의 오픈폼 사용 방법 및 이슈도 함께 소개한다.


2. 오픈폼 해석 방법
2.1 오픈폼 버전 및 설치

가스터빈 엔진의 터보유체기계 부분은 크게 압축기와 터빈으로 나눌 수 있으며, 큰 압축비나 팽창비를 얻기 위하여 이들은 대개 여러 단(Stage)으로 구성이 되어있다. 축류 터빈의 경우 한 단은 정지해 있는 스테이터와 회전하는 로터로 구성되어 있다. 또한 터보유체기계는 동일한 형상이 반복되기 때문에 전체 형상을 해석하기 보다는 일부분만을 해석 도메인으로 삼고 주기성을 이용하여 해석하는 것이 보통이다. 이와 같이 터보유체기계를 해석하기 위해선 다양한 경계면을 다뤄주는 기능이 필요하다.

오픈폼은 현재 여러 버전이 있으며 그중 ESI Group의 버전(현재 v2112)과 CFD Direct Ltd.에서 제공하는 버전(현재 v9)이 통용되고 있다. 이들 버전에서 주기 조건인 cyclicAMI 인터페이스(Interface)를 제공하고 있지만 형상이 불일치한 접촉면에서는 사용할 수 없기 때문에 위에서 소개한 내용의 해석이 불가능하다. 한편, 오픈폼의 한 분파로서 커뮤니티에 의해 제공되는 foam-extend 버전(현재 4.1)은 기존의 오픈폼 버전에서 제공하지 않는 특수 솔버들이나 기능을 포함하고 있다. 특히 터보유체기계를 해석하기 위한 솔버나 기능을 제공하고 있기 때문에 foam-extend를 사용하는 것이 편리하다. 오픈폼을 이용하여 압축기 및 터빈을 해석한 기존의 사례를 살펴보면 거의 모두 foam-extend를 사용하였으며 overlapGgimixingPlane과 같은 인터페이스를 사용하여 접촉면 해석을 수행한 것을 확인할 수 있다(49).

한편, foam-extend 버전은 기존의 버전들과는 구조나 세팅에 있어 차이가 있고 호환이 잘 이뤄지지 않으며, 커뮤니티에 의해 제공되는 만큼 오류도 다수 발생하는 것으로 알려져 있어 이에 따른 주의가 필요하다.

Foam-extend-4.1을 윈도우즈 환경에서 리눅스 터미널을 통해 사용하고자 할 경우 Windows10에서 먼저 WSL2 (Windows Subsystem for Linux)를 설치하여야 사용이 가능하다. 본 연구에선 WSL2 설치 후, 리눅스 시스템 중 하나인 Ubuntu 18.04 LTS에 foam-extend-4.1을 설치하여 연구를 수행하였다.

2.2 솔버 및 기능

Foam-extend-4.1에서 제공하는 여러 솔버 중 압축성 유체를 다루며 회전도메인과 같은 여러 도메인 (Multiple rotating reference frame, MRF) 해석이 가능한 솔버를 통하여 터빈 해석을 수행할 수 있다. 본 연구에선 그중 하나인 steadyUniversalMRFFoam 솔버를 사용하였다. 오픈폼에서 사용하는 대표적인 유동해석 알고리즘으로 SIMPLE (Semi-Implicit Method for Pressure Linked Equtions) 법과 PISO (Pressure-Implicit with Splitting of Operators) 법이 있다. 이 두 방법을 조화시킨 압축성 솔버는 rhoPimpleFoam인데, 이 rhoPimpleFoam을 기반으로 하여 steadyUniversalMRFFoam이 구성되었다.

터빈 해석의 접촉면을 다뤄주는 인터페이스로는 overlapGgimixingPlane이 있다. 우선 이들의 모체가 되는 GGI(General Grid Interface)는 각 접촉면의 노드가 불일치한 경우에 면과 면을 연결하기 위해 사용하는 기능으로서, 현재 면인 마스터 패치(Master patch)와 상대 면인 쉐도우 패치(Shadow patch) 사이에 가중치(Weighting factor)를 산출하여 해석값을 전달한다. 주기조건 인터페이스인 cyclicGgi는 GGI의 변형으로서 회전축과 각도를 정의하여 회전방향으로 반복되는 주기면에 대해 사용하게 한 기능이다(10).

하지만, 터빈과 같이 스테이터와 로터의 피치(Pitch)가 달라서 각 도메인의 형상이 접촉면에서 어긋나는 경우엔 GGI를 사용할 수 없다. 이 땐 overlapGgi를 사용할 수 있으며, 이는 각 면을 여러 번 이어 붙여서 완전한 형상이 되게 한 후 GGI 방법으로 인터페이스를 계산하고 다시 일부만 산출하는 방법이다(11).

mixingPlane은 각 면 사이에 원주방향으로 평균값을 갖는 360° 리본 패치(Ribbon patch)를 형성하고 U(Upstream) 패치 또는 D(Downstream) 패치와 GGI 방법으로 인터페이스를 계산하는 방법으로서, 정상상태를 해석할 때 사용하기 적합하다(11,12).

2.3 로탈피 점프

터보유체기계 해석 시엔 로탈피 개념을 사용하는 것이 효과적이다. 먼저, 작동유체가 1에서 2로 터보기계를 지날 때 축에 작용하는 토크는 다음과 같다.

τ=m˙r2Cθ2-r1Cθ1(1) 

여기서 C는 유체의 절대속도, Cθ는 유체의 접선속도, r은 반지름을 나타낸다. 위 식에서 각속도 Ω를 곱하여 일률 P(Power)를 나타낼 수 있다.

P=τΩ=m˙Urot2Cθ2-Urot1Cθ1(2) 

여기서 날개의 속도는 Urot = Ωr이다. 위 식에서 질량유량을 나눠줌으로써 단위질량당 일을 나타낼 수 있으며, 이는 오일러 공식으로 알려져 있고 다음과 같다.

Δw=h02-h01=Urot2Cθ2-Urot1Cθ1(3) 

여기서 h0는 전체엔탈피를 나타내며, Δw가 양수인 경우 터보기계가 일을 하여 유체의 에너지가 높아졌기 때문에 압축기 또는 펌프에 해당하는 식이 되고, Δw가 음수인 경우 유체가 터보기계에 일을 가하여 에너지를 잃었기 때문에 터빈에 해당하는 식이 된다. 위 오일러 공식을 다시 정리하면,

h01-Urot1Cθ1=h02-Urot2Cθ2=const.(4) 

터보기계의 검사체적에 대하여 입구와 출구의 값이 일정하다는 것을 알 수 있고, 이를 로탈피로 정의한다. 즉,

i=h0-UrotCθ=h0-ΩrCθ(5) 

식 (5)에서 나타내는 것과 같이 회전이 없는 스테이터에선 로탈피 i와 전체엔탈피 h0의 값이 동일하지만 로터에선 회전에 따른 -ΩrCθ 만큼의 차이가 발생한다. 따라서 스테이터와 로터로 구성된 터빈 한 단의 해석에서 접촉면의 로탈피 차이, 즉 로탈피 점프를 고려해주어야 한다. h0=h+12C2의 관계를 이용하여 속도삼각형을 통해 식 (5)를 다시 정리하면 다음과 같다.

i=h+12Urel2-Urot2(6) 

여기서 Urel는 유체의 상대속도를 나타낸다.

Foam-extend 버전을 사용하여 유체기계를 해석한 다른 연구(8, 9)에서도 로탈피 점프의 중요성을 강조하고 있지만 실제로 공개된 foam-extend-4.1 버전에선 로탈피 점프를 계산하는 부분에서 오류가 발생하기 때문에 이에 대한 수정이 필요하며, 다음 항에서 자세히 다룬다.

2.4 솔버 검증

솔버 검증을 위하기 위하여 Ansys CFX tutorial에서 제공하는 터빈 격자를 사용하여 해석 테스트를 진행하였다. 이 터빈의 해석 도메인은 Fig. 1과 같이 비정렬 격자로 된 1개의 스테이터 베인(Vane)과 정렬 격자로 된 2개의 로터 블레이드(Blade)로 구성되어 있다. 접촉면에서 형상 및 격자가 어긋나기 때문에 위에서 소개한 접촉면 인터페이스를 테스트해보기 알맞다. 경계조건으로 입구 전온도는 340 K, 전압력은 0.25 atm이고, 출구 정압력 12 kPa, 회전수 5,000 RPM, 난류모델에는 kEpsilon을 적용하였다.


Fig. 1 
Test turbine mesh with unequal interface

기본 상태의 steadyUniversalMRFFoam 솔버로 해석 시, 매 타임스텝마다 오류메시지를 출력한다. 그 내용은 각 패치면에 대하여 로탈피 i 필드에서 엔탈피값을 업데이트할 때 발생하는 것으로 “Velocity fields U or URot or UTheta not found.”라는 메시지인데, U와 Urot 변수는 솔버 내에서 사용되고 있으나 코드에서 대소문자를 구분하기 때문에 URot를 읽지 못하였으며, UTheta 변수는 존재하지 않았음을 알 수 있다. 먼저 이 상태로 overlapGgi로 계산한 온도 분포는 Fig. 2와 같고, 접촉면에서 불연속이 발생하는 것을 알 수 있다. 엔탈피 결과는 온도 결과와 동일한 분포를 가진다. 반면 Fig. 3에는 로탈피값을 나타내었고, 여기선 접촉면에서 연속적인 값을 보이고 있다. 즉, 로탈피 점프가 적용되지 않았음을 알 수 있다. Fig. 45에는 mixingPlane으로 계산 시 접촉면에서의 엔탈피 h와 로탈피 i의 결과를 나타내었다. 마찬가지로 엔탈피 결과의 접촉면에서 불연속한 결과를 보이고 있으며, 로탈피의 경우 mixingPlane의 특성상 회전방향의 평균값을 전달하기 때문에 접촉면의 결과가 달라져 보일 뿐, 각 면의 평균값을 계산해보면 동일한 값이 산출되어 실제로는 로탈피 점프가 적용되지 않았음을 알 수 있다.


Fig. 2 
Temperature distribution by default


Fig. 3 
Rothalpy distribution by default


Fig. 4 
Enthalpy distribution by default


Fig. 5 
Rothalpy distribution by default

steadyUniversalMRFFoam 솔버의 코드 구조를 살펴보면, 루프에서 속도장과 압력장을 차례로 풀고 난 후 로탈피를 계산하게 되어있고, 로탈피 장으로부터 로탈피 점프값만큼을 보상하여 엔탈피 장을 산출하게 되어 있으며, 그 식은 다음과 같다.

h=i+0.5*magSqrUrot-magSqrUrel;(7) 

즉, 실제 로탈피 i를 푸는 과정에선 로탈피 점프가 적용되지 않아 연속적인 값으로 계산되었지만 엔탈피 h를 산출하는 과정에선 로탈피 점프값이 적용됨에 따라 엔탈피 및 온도값에서 불연속면이 발생하게 되었다.

이 오류와 관련된 문제 제기나 해결 방법들이 cfd-online 커뮤니티에 여럿 게시되어 있으며, 이를 바탕으로 수정(13)하면 해당 문제를 해결할 수 있다. 그 내용을 간략히 소개하면, foam-extend가 설치된 디렉토리에서 MRF관련 파일들에 UTheta 관련 내용을 추가하는 것으로, 해당 디렉토리는 /foam-extend-4.1/src/finiteVolume/cfdTools/general/MRF이며, 수정해야할 파일들은 MRFZone.C, MRFZone.H, MRFZones.C 및 MRFZones.H이다.

또한, 해당 솔버인 steadyUniversalMRFFoam 폴더에서 수정해야 할 파일들은 createFields.H 및 iEqn.H이며, UTheta와 URot가 업데이트 되도록 수정해준다.

이러한 과정을 거친 후 라이브러리와 해당 솔버를 컴파일하여 해석을 진행하였고, 그 결과를 Fig. 69에 나타내었다. overlapGgimixingPlane에 대하여 각각 로탈피 점프가 잘 적용되어 로탈피 결과에선 접촉면에서 불연속이 나타났고 엔탈피 결과에선 연속적인 값이 산출되었다.


Fig. 6 
Enthalpy distribution after correction


Fig. 7 
Rothalpy distribution after correction


Fig. 8 
Enthalpy distribution after correction


Fig. 9 
Rothalpy distribution after correction

Fig. 1011은 같은 해석문제에 대해 오픈폼과 CFX로 계산한 결과를 비교한 것으로서, 각 해석 툴의 산출 영역이 달라 입구값에 맞추어 비교하여 나타내었다. Fig. 10의 오픈폼의 경우 인터페이스에서 로탈피 점프값은 약 63,000 J/kg, CFX에선 66,000 J/kg로 산출되어 양 코드에서 약 5 % 이내의 유사한 로탈피 점프값을 계산하는 것을 확인할 수 있다. Fig. 11은 엔탈피를 나타낸 것으로 인터페이스에서 연속적인 값이 산출되는 것을 확인할 수 있다. 도메인의 하류로 갈수록 각 코드에서 세부 분포의 차이를 보이지만, 전체적인 경향으로 판단했을 때 오픈폼 계산에서도 기존의 상용코드와 같이 터보유체기계에 대한 해석을 잘 수행해주는 것을 확인하였다.


Fig. 10 
Rothalpy comparison


Fig. 11 
Enthalpy comparison


3. 슈퍼컴퓨터 누리온에서의 오픈폼 활용

본 연구에선 KISTI 슈퍼컴퓨터 “누리온”을 활용하여 계산을 수행하였다. 누리온은 Knight Landing (이하 KNL)과 Skylake (이하 SKL) 시스템으로 이루어져 있으며, 그중 주로 사용한 KNL의 CPU는 Intel Xeon Phi 7250 1.4GHz로 한 노드당 68개의 코어, 총 8천여 개의 노드로 이루어져 있다(14). 또한 누리온에는 각 개발 그룹의 오픈폼(v7, v1912, foam-extend-4.1)이 설치되어 있어 사용자에게 필요한 버전을 알맞게 사용할 수 있다.

Foam-extend-4.1의 steadyUniversalMRFFoam 솔버를 누리온에서 사용하기 위해선 위에서 설명한 것과 같이 솔버 수정이 수반되어야 한다. 일반적으로 솔버 수정은 해당 코드를 개인폴더로 복사하여 솔버 이름 및 코드 내용을 수정하는 것이 보통이다. 또한 위에서 소개한 수정 방법은 라이브러리도 수정해야 하는데, 일반 사용자는 누리온 시스템의 관리자 권한이 없어서 바로 수정할 수 없기 때문에 라이브러리 폴더도 개인 폴더로 복사하여 수정 후 연동하는 과정이 필요하다.

누리온에서 해당 라이브러리 수정 방법을 간략히 소개하면, 우선 foam-extend-4.1/src 디렉토리에 있는 Allwmake 파일과 finiteVolume 폴더를 개인폴더에 복사한다. 복사한 Allwmake 파일에서 필요한 부분만 남기고 나머지는 주석처리 한다. 그리고 finiteVolume 폴더 내 Make/file 파일에서 마지막 줄의 FOAM_LIBBIN을 FOAM_USER_LIBBIN으로 바꿔 줌으로써 FOAM_LIBBIN보다 FOAM_USER_LIBBIN이 우선순위를 가지게 된다. 마지막으로 Allwmake 파일을 실행시켜 개인라이브러리를 컴파일한다. 이후 개인라이브러리를 쓰고자 하는 개인솔버 폴더의 Make/options 파일에 Table 1의 내용을 추가하여 컴파일하면 개인라이브러리를 사용할 수 있다.

Table 1 
Correction for Make/options of a solver
EXE_INC = \
  - I $(FOAM_RUN)/myfiniteVolume/lnI nclude \
...
EXE_LIBS = \
  - L$(FOAM_USER_LI BBIN) \
  -lmyfiniteVolume \
...

이후 2.4 절에서 설명한 라이브러리 및 솔버 코드 수정을 통해 steadyUniversalMRFFoam 솔버를 누리온에서도 사용할 수 있다.

한편, foam-extend-4.1은 Ubuntu-18.04 환경에서 개발되었고 이 운영체제를 지원(15)하는 반면, 누리온은 CentOS로 시스템이 구축되었다. 이로 인해 프로그램과 시스템 사이의 호환성 문제로 인하여 mpirun 실행 시 시스템 기본 라이브러리 및 메모리 영역에서 core dump가 발생한다. 따라서 foam-extend-4.1 계산 수행 시 현재는 여러 노드 간의 병렬 해석은 수행할 수 없고, 한 노드 안에서의 병렬해석은 가능하다. 또한, 동일한 해석 파일에서 병렬해석 할 코어 수에 따라 계산 가능 또는 오류 여부가 갈리는 이슈도 발생하고 있다. 이러한 내용들에 대해선 추후 연구가 필요하다.


4. KARI 무냉각 터빈 해석
4.1 터빈 형상 및 해석 전처리

한국항공우주연구원(이하 항우연)에서 연구 중인 냉각 터빈 모델 중에서 비교대상으로 만들어진 터빈 1단의 무냉각(Uncooled) 터빈으로 해석을 진행하였다. 총 56개의 노즐 베인과 104개의 터빈 블레이드를 지니고 있고, 해석 조건 등은 Table 2에, 그 형상과 격자의 모습은 Fig. 12에 나타내었고, 자세한 설계 내용 등은 선행연구(16, 17)에 소개되어 있다.

Table 2 
Design specifications of turbine
Inlet total pressure 30.685 bar
Inlet total temperature 1673 K
Outlet static pressure 11.5 bar
Rotational speed 17,000 RPM
Tip clearance 0.2 mm


Fig. 12 
Uncooled turbine and mesh

격자는 TurboGrid를 통해 생성하였고, 격자수는 스테이터가 643,376 개, 로터가 1,102,895 개이며, CFX로 계산된 y+ 값은 평균 3 수준으로 산출되었다. 같은 격자를 가지고 CFX와 오픈폼에서 해석을 수행하여 결과를 서로 비교하고자 하였다.

오픈폼의 한 해석 그룹은 기본적으로 총 3개의 폴더로 구성되어 있다. 솔버 조건 등을 설정하는 ‘system’ 폴더, 격자와 물성치, 난류 조건 등을 담당하는 ‘constant’ 폴더, 그리고 변수들의 초기값을 설정하는 ‘0’ 폴더가 있다.

4.1.1 system

3개의 기본 폴더 외에도 system/controlDict 파일에서 writeIntervalpurgeWrite 항의 설정 내용에 따라 해석이 수행되면서 ‘0’ 폴더 이후의 결과 폴더가 시간별로 생성된다.

system/fvSchemes 파일에선 각종 차분법을 설정하며, 특히 공간차분법을 다루는 divSchemes 항에선 Gaussupwind 또는 Gauss linearUpwind를 설정하여 1차 및 2차 공간정확도에 대해서 각각 테스트를 진행하였다.

system/fvSolution 파일에선 선형 방정식을 푸는 솔버를 지정해주며, 본 해석에선 smoothSolver를 설정하여 해석을 진행하였다.

SIMPLE 법 기반인 솔버의 경우 system/fvSolution 파일의 relaxationFactors 항에 적절한 하향이완계수(Under relaxation factor) 값을 설정하는 것이 중요한데, 본 연구에선 각 변수에 대하여 0.5를 지정하는 경우 안정적인 반복계산(Iteration)에 따른 수렴 해를 얻을 수 있었다.

반복계산이 불안정하거나 발산하는 경우 fieldBounds 항에서 한계값을 설정해줌으로써 계산의 안정성을 확보할 수 있다. steadyUniversalMRFFoam 솔버의 경우 압력에 대하여 하한값과 상한값을, 속도에 대하여 상한값을 지정해 줄 수 있다.

병렬계산을 수행하기 위해선 system/decomposeParDict 파일을 설정해 주어야 한다. 특히 foam-extend-4.1에서 접촉면을 다루는 솔버를 사용하는 경우에는 globalFaceZones 항을 특정하여 모든 접촉면을 지정해주어야 한다. 분할 방법으론 scotch를 사용하였다. numberOfSubdomains 항에 분할할 개수를 기입하고, decomposePar 유틸리티를 통하여 해석 도메인을 지정한 개수만큼 분할할 수 있다.

4.1.2 constant

constant/MRFZones 파일에선 회전도메인을 설정하고 회전 정보를 설정한다. Foam-extend 버전은 정식 버전과 다르게 기준점, 축, 회전속도(origin, axis, omega)에 대하여 오픈폼의 단위설정방법에 따라 SI 기본 단위를 각 파라미터마다 지정해 주어야 한다. 본 해석에선 회전속도에 대하여 1780.236 (rad/s)을 설정하였다.

constant/RASProperties 파일에선 난류모델을 설정하며, 본 해석에선 RASModel 항목에 kOmegaSST 난류모델을 설정하였다.

constant/thermophysicalProperties 파일에선 구성이 불친절하게 되어 있어서 주의가 필요하다. 정식버전에선 ‘옵션항목 – 옵션명’, ‘변수이름 – 변수값’의 형태로 기입하도록 되어있지만, foam-extend에선 별도의 항목에 대한 설명 없이 모든 항목값을 연속적으로 나열하게 되어있다. 가령 thermoType에 대해선 다음과 같이 설정하였다. hPsiThermo<pureMixture<sutherlandTransport<specieThermo<janafThermo<perfectGas>>>>>

이에 대응하는 값들을 mixture 항목에 띄어쓰기 또는 줄바꿈으로 구분하여 연속적으로 기입하며, 그 순서는 기존 버전에서 설정하는 순서와 대개 같고, 위의 항목과 같이 설정한 경우 기입하는 순서와 내용은 다음과 같다. 1) 작동유체이름, 2) 몰 수, 3) molWeight, 4) Tlow, 5) Thigh, 6) Tcommon, 7) highCpCoeffs a0∼a6, 8) lowCpCoeffs a0∼a6 (이상 4∼8은 정압비열을 JANAF 옵션(18, 19)으로 설정하는 경우), 9) As (Sutherland coefficient), 10) Ts (Sutherland temperature) (이상 9, 10은 점성계수로 Sutherland 옵션을 설정하는 경우). 각 계수의 값은 선행 연구(2)에서 사용한 값과 같다.

Ansys Fluent에서 사용하는 파일 확장자 msh 형식의 격자는 fluent3DMeshToFoam 유틸리티를 사용하여 오픈폼 격자로 변환할 수 있다. 오픈폼 격자를 생성하는 경우 constant/polyMesh 폴더가 생성되고 그 아래에 격자 파일들이 생성된다. 이 중 boundary 파일에서 기본 설정으로 되어있는 각 경계면을 각각의 성격에 맞도록 patch, wall, ggi, cyclicGgi, mixingPlane 등으로 수정해 주어야 하며, 각각의 type에 맞는 세부 설정을 추가해 주어야 한다.

한편 접촉면을 설정하기 위해선 zone 설정이 필요하다. 먼저, setBatchMixingPlane 파일에 모든 접촉면에 대하여 설정한 후 setSetbatch 명령어 및 setsToZonesnoFlipMap 명령어를 통하여 zone 설정을 수행할 수 있다.

4.1.3 0 (초기 조건 파일)

격자 설정이 마무리 된 이후엔 0 폴더에서 각 파라미터 파일에 대하여 초기 경계조건을 설정할 수 있다. 해당 솔버에서 kOmegaSST를 난류모델로 사용하는 경우 기본적으로 필요한 초기 파일은 alphat, i, k, mut, omega, p, T, U 등 총 여덟 개의 파일이다. 각 파일에서 로터와 스테이터 사이의 접촉면에 대하여 mixingPlane 패치 타입을 적용했으며, 특히 i와 T파일에 대해선 mixingPlaneEnthalpyJump를 설정하였다. alphat, k, mut 및 omega 파일에 대하여 wall 패치 타입인 경우 벽함수를 설정할 수 있다. Foam-extend 버전의 각 벽함수 패치 타입의 명명법은 기존의 정식버전과 다르기 때문에 주의가 필요하다.∼/foam/foam-extend-4.1/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions 디렉토리에 각 파일에서 쓰이는 벽함수에 대한 함수 파일이 있으며, 각 벽함수 폴더의 헤더파일에서 타입명 (TypeName)을 참고할 수 있다. 한편, mut 파일 대하여 총 아홉 가지의 벽함수가 제공되며, 본 연구에선 default 옵션으로 사용되는 mutkWallFunction을 사용하였다.

4.2 계산 결과

KISTI 슈퍼컴퓨터 누리온의 KNL 시스템을 사용했고, 한 개의 노드에서 최대 68 개의 코어를 사용하여 계산을 수행하였다. linearUpwind로 해석한 결과를 CFX 계산 결과와 비교하여 각 파라미터에 대한 mid-span에서의 분포를 Fig. 1316에 나타내었다. 압력과 속도, 마하수에 대한 분포는 서로 유사한 결과를 보이고 있지만 온도에 대해선 차이를 보이는 것을 확인할 수 있다.


Fig. 13 
KARI uncooled turbine pressure distribution


Fig. 14 
KARI uncooled turbine relative velocity distribution


Fig. 15 
KARI uncooled turbine Mach number distribution


Fig. 16 
KARI uncooled turbine temperature distribution

또한 출구 압력을 변화시켜가며 해석한 후, 입⋅출구에 대한 압력비-유량 및 압력비-온도비에 대한 성능곡선을 Fig. 1718에 나타내었다. 유량 예측에 있어서 1차 정확도를 갖는 upwind와 2차 정확도를 갖는 linearUpwind 사이에 결과차이가 발생하기 때문에 고차 정확도의 scheme을 사용하는 것이 중요하다. 또한 CFX 결과와 비교할 경우에도 오픈폼의 결과가 유량을 잘 예측하는 것을 알 수 있다.


Fig. 17 
KARI uncooled turbine, performance curve: mass flow rate vs. pressure ratio


Fig. 18 
KARI uncooled turbine, performance curve: temperature ratio vs. pressure ratio

온도 예측에 대해선 공간차분법에 의한 차이가 크지 않은 것으로 나타났으나, CFX 계산 결과와 비교 시 차이가 발생하였다. 이는 날개 표면에서 온도가 높게 계산됨에 따라 발생하는 결과로서, CFX에 비해 오픈폼에서 날개 표면의 평균 온도가 약 10 % 높게 예측 되었다. 이 표면 온도가 전체 온도장에 영향을 미치게 되어 출구의 온도도 높아짐에 따라 온도비는 CFX 결과보다 낮게 산출되었다. 해당 솔버는 로탈피를 계산하는 iEqn.H 파일에 점성가열 항을 포함하고 있으며 로탈피 경계조건으로 gradientEnthalpy 타입을 소개하고 있다. 하지만 이 두 기능으로 인해 표면 온도가 다른 옵션에 비해 높게 예측되는 것이 확인되었다. 따라서 이 부분 또한 추후 연구를 통해 보완이 기대된다.


5. 결 론

본 연구는 오픈 소스 CFD 코드 중 하나인 오픈폼을 이용하여 가스터빈 엔진의 유동을 해석하기 위해 수행되었다. 특히 가스터빈 엔진과 같은 압축성 터보유체기계를 해석하기 위하여 접촉면 기능 및 압축성 회전도메인 솔버를 제공하는 foam-extend-4.1 버전을 사용하였다. 특히 터보유체기계의 해석을 위해 접촉면에서 로탈피 점프가 고려되어야 하는데, steadyUniversalMRFFoam 솔버의 기본 코드에선 URot 및 UTheta 관련 부분에 대한 누락이 있기 때문에 이 부분에 대한 수정 이후 합리적인 계산 결과 도출이 가능하였다. 계산은 KISTI 슈퍼컴퓨터 누리온으로 수행하였고, foam-extend 버전과의 호환성 문제 등의 이슈가 있으나, 현재 한 노드에서 병렬계산이 가능함을 확인하였다. 해석 대상은 항우연에서 개발한 무냉각 터빈으로 선정하였고, 오픈폼 해석 결과를 상용코드인 CFX 해석 결과와 비교 시 유동 및 압력에 대하여 1 % 이내에서 일치함을 보였고, 벽면 평균 온도는 약 10 % 정도의 차이를 보여 온도에 대해선 계산의 차이가 발생하는 것으로 나타났다. 이와 같이 터보유체기계 해석을 위한 오픈폼의 가용성을 확인하였으며, 프로그램과 시스템 간의 호환성 문제 및 해석 코드의 정확도 문제 등에 대한 추후 연구가 뒷받침됨에 따라 대규모 계산을 활용한 가스터빈 엔진 해석에 오픈폼이 사용될 수 있을 것으로 기대된다.


Acknowledgments

본 연구는 한국항공우주연구원에서 지원하는 ‘시드형-마이크로 가스터빈 기반 초소형 터보팬 엔진 개발’ 사업과 한국과학기술정보연구원 국가초고성능컴퓨팅센터의 ‘2021년도 슈퍼컴퓨터 5호기 활용 초고성능컴퓨팅 기반 RnD 혁신지원 프로그램 3차 (KSC-2021-CRE-0603)’ 및 ‘2021년 최적병렬화’ 프로그램의 지원을 받아 수행되었습니다.


References
1. Van Phuc, P., Chiba, S. and Minami, K., 2016, “Large Scale Transient CFD Simulations for Buildings using OpenFOAM on a World’s Top-class Supercomputer,” The 4th Annual OpenFOAMUser Conference 2016, Cologne, Germany.
2. Kang, S. H., Chung, H., Kang, Y. S., Jun, S. and Yoon, T. H., 2021, “Compressible flow analysis of turbine-nozzle using open source CFD code,” The KSFM Journal of Fluid Machinery, Vol. 24, No. 1, pp. 19∼26.
3. Kim, B. Y., Kim, B. H. and Gill, J. H., 2012, “CFD simulation of nozzle-turbine in gas turbine engine using open source CFD code OpenFOAM,” Korean Society for Computational Fluids Engineering.
4. Reis, A. J. F., 2013, “Validation of NASA rotor 67 with openFOAM’s transonic density-based solver,” Master Thesis, Department of Mechanical and Industrial Engineering, Faculdade de Ciências e Tecnologia da Universidade Nova de Lisboa, Caparica, Portugal.
5. Kadhim, H. T. K., Rona, A., Gostelow, J. P., Leschke, K., 2017, “Mitigating secondary flows in a 1½ stage axial turbine by a guide groove casing,” 23rd ISABE conference, Manchester, UK.
6. Obaida, H. M. B., Kadhim, H. T. K., Rona, A., Leschke, K. and Gostelow, J. P., 2017, “A numerical study of secondary flows in a 1.5 stage axial turbine guiding the design of a non-axisymmetric hub,” Proceedings of ASME Turbo Expo 2017: Turbomachinery Technical Conference and Exposition. Volume 2B: Turbomachinery, Charlotte, NC, USA, GT2017-65251.
7. Kadhim, H. T. K., Rona, A., Obaida, H. M. B. and Gostelow, J. P., “Numerical Study of the Flow Past an Axial Turbine Stator Casing and Perspectives for its Management,” Proceedings of the ASME Turbo Expo 2017: Turbomachinery Technical Conference and Exposition. Volume 2B: Turbomachinery. Charlotte, North Carolina, USA, GT2017-63055.
8. Bartolec, B., 2017, “Numerical simulation of the flow in a multi-stage axial compressor,” Master Thesis, Faculty of Mechanical Engineering and Naval Architecture, University of Zagreb, Croatia.
9. De Dominicis I., Cvijetić G., Willetts M., Jasak H., 2019, “Enhanced Turbomachinery Capabilities for Foam-Extend: Development and Validation,” OpenFOAM® : selected Papers of the 11th Workshop, pp. 145∼155
10. Beaudoin, M. and Jasak, H., 2008, “Development of a General Gid Interface for turbomachinery simulations with OpenFOAM,” Open Source CFD International Conference 2008, Berlin, Germany.
11. Jasak, H. and Beaudoin, M., 2011, “OpenFOAM Turbo Tools: From general purpose CFD to Turbomachinery simulations,” Proceedings of the ASME-JSME-KSME Joint Fluids Engineering Conference 2011, Hamamatsu, Shizuoka, Japan, AJK2011-05015.
12. Beaudoin, M., Nilsson, H., Page, M., Magnan, R., and Jasak, H., 2014, “Evaluation of an improved mixing plane interface for OpenFOAM,” Proc. IOP Conference Series: Earth and Environmental Science, Vol. 22, pp. 022004.
13. https://www.cfd-online.com/Forums/openfoam/210386-unphysical-temperature-mixing-plane.html#post779039
14. http://www.ksc.re.kr
15. Release notes for foam-extend-4.1: https://sourceforge.net/p/foam-extend/foam-extend-4.1/ci/master/tree/ReleaseNotes
16. Kang, Y. S., Rhee, D. H. and Cha, B. J., 2013, “Numerical Study of Contoured Wall Effects on Axial Turbine Internal Flow Field,” Proceeding of 2013 KSME Fluid Engineering Division Conference, pp. 21∼22.
17. Kim, J. U., Bak, J. G., Kang, Y. S., and Cho, J. S., 2015, “Conjugate heat transfer analysis for high pressure cooled turbine vane in aircraft gas turbine”, The KSFM Journal of Fluid Machinery, Vol. 18, No. 2, pp. 60∼66.
18. Chase, M. W., Curnutt, J. L., Hu, A. T., Prophet, H., Syverud, A. N. and Walker, C., 1974, “JANAF Thermochemical Tables, 1974 Supplement,” Journal of Physical and Chemical Reference Data, Vol. 3, No. 2, pp. 311∼480.
19. OpenFOAM User Guide version 7: https://cfd.direct/openfoam/user-guide/v7-thermophysical/#x36-2680007.1.3