초음속 우주왕복선
개요
본 예제는 밀도기반 솔버를 사용하는 정상상태 압축성 초음속 유동해석 예제이다.
계산 조건은 다음과 같다.
- 솔버 : TSLAeroFoam
- 난류모델 : SST k-$\omega$
- 마하수 : 3
- 받음각 : 15 degree
- 원방경계 압력 : 100000 Pa
- 원방경계 온도 : 288 K
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [밀도기반(Density-based)]를 선택한다.

격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.

기본조건(General)
본 예제에서는 디폴트 조건을 사용한다.
모델(Models)
난류 모델은
모델을 선택한다.
물질(Materials)
밀도는 완전기체(Perfect Gas), 점성계수는 Sutherland를 선택한다. 나머지는 디폴트 조건을 사용한다.
경계조건(Boundary Conditions)
경계조건은 다음과 같이 설정한다.
- spaceShuttle : 벽면(Wall)
- 속도 조건(Velocity Condition) : 정지(No slip)
- 온도 조건(Temperature Condition) : 단열(adiabatic)
- maxy : 대칭(symmetry)
- minx, maxx, miny, minz, maxz : 압축성 원방 리만(Far-Field Riemann)
- 유동 방향(Flow Direction) : 받음각 15에 해당하는 방향, (0.965926, 0, 0.258819)
- 마하수 : 3
- 게이지 압력(Static Pressure) : 100000
- 온도(Static Temperature) : 288
- 난류 강도(Turbulent Intensity) : 0.1
- 난류 점도 비율(Turbulent Viscosity ratio) : 1

기준값(Reference Values)
- 면적, 길이 : 1
- 밀도 : 1.2097(원방 조건)
- 압력 : 100000(원방 조건)
- 속도 : 1020.5933(원방 조건)
수치해석 기법(Numerical Conditions)
[Formulation]은 [Implicit], [Flux Type]은 [Roe-FDS]를 사용한다. [Entropy Fix Coefficient]는 0.5를 사용한다.
[이산화 기법(Discretization Schemes)]에서 [유동(Flow)]와 [난류(Turbulence)] 모두 [2차 상류기법(Second Order Upwind)]를 사용한다.
[수렴 판정 기준(Convergence Criteria)]에서 밀도를 1e-5로 설정한다.

모니터(Monitor)
[추가(Add)]-[힘(Forces)]를 선택하고 다음과 같이 설정한다.
- 양력 방향(Lift Direction) : (-0.258819, 0, 0.965926)
- 항력 방향(Drag Direction) : (0.965926, 0, 0.258819)
- 경계면(Boundaries) : spaceShuttle
초기화(Initialization)
초기조건은 다음과 같이 설정한다.
- 속도 : (985.817, 0, 264.149)
- 압력 : 100000
- 온도 : 288
- 난류
- 속도 크기 : 1020.5933
- 난류 강도 : 0.1
- 난류 점도 비율 : 1
값을 입력하고 하단의 [초기화(Initialize)] 버튼을 클릭한다. 그 후, 메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.
계산
메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.
[계산 조건(Run Conditions)]은 다음과 같이 설정하고 [계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.
- 계산 회수(Number of Iterations) : 3000
- Courant Number : 0.1
- 자동 저장 간격(Save Interval) : 500
초음속 유동의 경우 Courant Number를 높게 시작하면 초기에 발산하는 경우가 많아 작은 값으로 시작한 후 계산이 어느 정도 안정되면 조금씩 높여주면 수렴 속도를 높일 수 있다. 계산 중 [계산 조건(Run Conditions)]에서 값을 수정하고 [계산(Run)]에서 [설정 변경 바로 적용(Update Configuration)] 버튼을 누르면 적용된다. 이 예제에서는 0.1로 시작해서 400번 정도에서 값을 1로 높여주고 700번 정도에서 100으로 높여주었다.
계산이 시작되면 아래와 같이 잔차(residual) 그래프가 그려진다.

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