선박 저항 – KCS(KRISO Container Ship)
개요
본 예제는 자유수면을 포함하는 선박의 저항 해석에 대한 검증 문제이다. 대상 선형은 KCS이며 아래 논문의 결과와 비교하였다. 자유수면 계산을 위해 interFoam 솔버를 사용하고, LTS(Local Time Step) 기법을 사용하는 정상상태 계산이며 난류모델은 SST k-$\omega$를 사용한다.
Ref) Measurement of flows around modern commercial ship models, Kim,W J.Kim, Van, S H, Kim, D H, Experiments in Fluids, 2001
계산 및 실험 조건은 다음과 같다.
- 선박의 속도 : 2.196
- 기준 면적(침수면적, wetted surface area) : 9.5121
- draft : 0.3418(격자에서 z좌표는 0)
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [Volume of Fluid]를 선택한다. 중력은 (0 0 -9.81)로 설정한다.

격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.
기본조건(General)
정상상태 계산이기 때문에 모든 설정은 디폴트 조건을 사용한다. 시작 창에서 설정한 중력이 표시된다. 시작 창에서 중력을 주지 않았을 때 여기서 설정할 수 있다.

모델(Models)
난류 모델은
모델을 사용하고 나머지는 디폴트 조건을 사용한다.

물질(Materials)
본 예제는 이상유동이므로 두 개의 유체가 필요하다. [물질(Material)]의 상단 오른쪽의 (+)를 누르면 유체를 추가할 수 있다. water-liquid를 추가하고 이름을 water로 바꾸어 준다.
각 유체의 물성치는 다음과 같이 설정한다.
- water
- 밀도 : 1000
- 점성계수 : 0.001
- air
- 밀도 : 1.225
- 점성계수 : 1.79e-5

셀존 조건(Cell zone Conditions)
[셀존 조건(Cell Zone Conditions)]에는 region0가 있다.(다중영역일 때는 여러개의 영역이 표시된다.) 영역의 유체를 설정한다. region0를 더블 클릭하면 설정창이 열린다. [첫번째 유체(Primary Material)]은 Air, [두번재 유체(Secondary material)]은 water로 지정한다.
표면장력(Surface Tension)은 0을 사용한다.

경계조건(Boundary Conditions)
경계조건은 다음과 같이 설정한다.
- far_inlet : 입구 속도(Velocity Inlet)
- 속도 크기 : 2.196
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, water) : 0

- far_outlet : 개수로 출구(Open Channel Outlet)
- 속도 크기(Umean) : 2.196
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10

- far_top : 출구 압력(Pressure Outlet)
- 전압력(Total Pressure) : 0
- 유입류 난류 강도(Backflow Turbulent Intensity) : 1
- 유입류 난류 점도 비율(Backflow Turbulent Viscosity Ratio) : 10
- 유입류 체적분율(Backflow Volume Fraction, water) : 0

- KCS_dummy_hub, KCS_hub_aft, KCS_hub_cap, KCS_hull, KCS_transom, KCS_deck : 벽면(wall)

- centerplane, far_side, far_bottom : 대칭(symmetry)
기준값(Reference Values)
유체력계수를 계산하기 위한 기준값을 다음과 같이 설정한다.
- 면적 : 4.75605(대칭 조건을 사용하므로 침수면적의 절반)
- 밀도 : 1000
- 길이 : 7.2786
- 속도 : 2.196

수치해석 기법(Numerical Conditions)
수치해석 조건은 다음과 같이 설정한다.
- 압력-속도 연성 기법(Pressure-Velocity Coupling Scheme) : SIMPLE
- 운동량방정식 계산(Use Momentum Predictor) : Off
- 이산화 기법(Discretization Schemes) : 압력은 Momentum Weighted Reconstruct, 나머지는 모두 2차 상류기법(Second Order Upwind)
- 완화계수(Under-Relaxation Factors) : 모두 1
- 안정성 향상(Improve Stability) : Off
- 시간당 반복계산 회수(Max Iteration per Time Step) : 1
- 압력 보정 회수(Number of Correctors) : 2
- 다상유동(Multiphase)와 수렴 판정 기준(Convergence Criteria) : 디폴트 사용

모니터(Monitor)
선박의 유체력계수를 모니터링 한다.
Add-Forces 선택 후 다음과 같이 설정한다.
- 양력 방향(Lift Direction) : (0 0 1)
- 항력 방향(Drag Direction) : (-1 0 0)
- 회전 중심(Center of Rotation) : (0 0 0)
- 경계면(Boundaries) : KCS_dummy_hub, KCS_hub_aft, KCS_hub_cap, KCS_hull, KCS_transom, KCS_deck

초기화(Initialization)
초기조건은 다음과 같이 입력한다.
- 속도 : (-2.196 0 0)
- 압력 : 0
- 속도 크기(Scale of Velocity) : 2.196
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, water) : 0

water 영역의 초기조건을 주기 위해 섹션을 만든다.
[초기화(Initialization)]-[추가설정(Advanced)]-[영역(Section)]-[만들기(Create)]를 클릭한 후 다음과 같이 설정한다.
- 영영 형태(Section Type) : 육면체(Hex)
- 최소(Min.point) : (-999 -999 -999)
- 최대(Max.point) : (999 999 0)
- 체적분율(Volume Fraction, water) : 1
[경계면도 포함(Override Boundary Value)] 옵션을 사용하여 경계조건의 값도 바꾸어 준다.

계산
메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.
[계산 조건(Run Conditions)]에서 [계산회수(Number of Iterations)]을 2000으로 준다.
[계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.

계산이 시작되면 아래와 같이 잔차(residual) 그래프가 그려진다.

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