아음속 공동(Cavity) 유동
개요
아음속 2차원 공동(cavity) 유동을 계산하는 예제이다.
형상과 유동 조건은 다음과 같다.
- L/D = 2 (Cavity의 길이와 높이의 비율)
- 마하수 = 0.6
- 레이놀즈 수 = 2.75e+5
- 프란틀 수 = 0.7
격자는 matlab으로 만든 plot3d 형식의 격자를 변환하였다.
솔버는 넥스트폼이 개발한 압력기반 열유동 해석 솔버인 buoyantPimpleNFoam을 사용한다.
출구와 상면의 경계조건은 압력파의 반사가 없는 waveTransmissive(non-reflecting) 조건을 사용한다.
계산 조건은 다음과 같다.
- 솔버 : buoyantPimpleNFoam
- 난류 모델 : SST k-$\omega$ 모델
- 밀도 : Perfect Gas
- 입구 온도 : 300 K
- 입구 압력 : 101325 Pa
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [None]을 선택한다.

격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.
기본조건(General)
본 예제에서는 비정상상태(Transient) 조건을 사용한다. 중력은 고려하지 않고 작동압력은 101325를 사용한다.

모델(Models)
난류 모델은
모델을 사용한다.
[에너지(Energy)]를 [포함(include)]한다.
물질(Materials)
물성치는 다음과 같이 설정한다.
- 밀도(Density) : 완전기체(Perfect Gas)
- 정압비열(Specific heat) : 1006
- 점성계수(Viscosity) : 0.00178 (레이놀즈 수를 맞추기 위한 값)
- 열전도도(Thermal Conductivity) : 2.562 (프란틀 수를 맞추기 위한 값)
- 분자량(Molecular Weight) : 28.966

경계조건(Boundary Conditions)
아래와 같이 경계면 타입과 경계값을 설정한다.
- inlet : 입구 속도(Velocity Inlet)
- 속도 크기(Velocity Magnitude) : 208.31
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity ratio) : 10
- 온도(Temperature) : 300

- outlet, top : 출구 압력(Pressure Outlet)
- 압력(Pressure) : 0
- Non-Reflecting Boundary 옵션 사용

- cavityFront, cavityBottom, cavityRear, frontBottom, rearBottom : 벽면(Wall)
- 속도 조건(Velocity Condition) : 정지(No Slip)
- frontPlane, backPlane : 2차원 경계(Empty)
수치해석 기법(Numerical Conditions)
다음과 같이 설정한다.
- [압력-속도 연성기법(Pressure-Velocity coupling)] : SIMPLE
- [이산화 기법(Discretization)]
- 시간 : 2차 음해법(Second Order Implicit)
- 압력 : Momentum Weighted Reconstruct
- 운동량, 에너지, 난류 : 2차 상류기법(Second Order Wpwind)
- 시간당 반복계산 회수(Max iterations per Time Step) : 20
- 압력보정 회수(Number of Correctors) : 2
- [완화계수(Relaxation factors)]
- 압력 : 0.3 / 1
- 운동량, 난류 : 0.7 / 1
- 에너지, 밀도 : 1 / 1
모니터(Monitor)
본 예제에서는 공동(cavity) 중앙의 점에서 압력을 모니터링한다. [추가(Add)]-[점(Point)]를 선택한다.
좌표는 (0 -0.5 0.25)를 입력한다.

초기화(Initialization)
초기조건은 다음과 같이 설정한다.
- 속도 : (208.31 0 0)
- 압력 : 0
- 온도 : 300
- 속도 크기(Scale of velocity) : 208.31
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity ratio) : 10
공동 내부의 속도를 0으로 초기화한다. [추가설정(Advanced)]-[영역(Sections)]에서 [만들기(Create)]-[육면체(Hex)]를 선택하고 최소/최대 좌표에 (-1 -1 -1), (1 0 1)을 입력한다. [속도(Velcity)]를 선택하고 값은 (0 0 0)을 준다.

하단의 [초기화(Initialize)] 버튼을 클릭한다. 그 후, 메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.
계산
메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.
[계산 조건(Run Conditions)]은 다음과 같이 설정하고 [계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.
- 시간 전진 기법(Time Stepping Method) : 일정(Fixed)
- 시간 전진 간격(Time Step Size) : 1e-5
- 종료 시간(End Time) : 0.5
- 자동 저장 간격(Save Interval) : 0.002 sec

후처리
메뉴에서 [외부 프로그램(External tools)]-[ParaView] 버튼을 눌러 ParaView를 실행한다.
병렬연산이면 [Case Type]을 [Decomposed Case]로 변경한다.
[Coloring]을 [U]로 선택하면 다음과 같은 그림을 확인할 수 있다.
