다상유동
위어(Weir) 유동
개요
위어(Weir)는 수공학에서 수로에 설지하는 구조물로 물이 넘치게 만들어 특정 수위를 유지하거나 유량을 측정하는데 사용한다. CFD에서는 이론식으로 구할 수 있는 유량과 해석 결과를 비교하여 코드 검증용으로 사용하기도 한다.
본 예제는 사각 위어에서 수위가 일정한 경우에 유량 해석을 위한 예제이다.
계산 조건은 다음과 같다.
- 물의 입구 수위 : 1.6 m, 15696 Pa
- 솔버 : interFoam
- 난류모델 : standard 𝑘 − ε
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [Volume of Fluid]를 선택한다. 중력은 (0 0 -9.81)로 설정한다.
격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.
기본조건(General)
[시간(Time)]은 [비정상상태(Transient)]로 설정한다.
[중력(Gravity)]는 (0 0 -9.81)을 사용한다.
모델(Models)
난류 모델은 \(standard\) \(k-\epsilon\) 모델을 사용하고 나머지는 디폴트를 사용한다.
물질(Materials)
본 예제는 이상유동이므로 두 개의 유체가 필요하다. [물질(Material)]의 상단 오른쪽의 (+)를 누르면 유체를 추가할 수 있다. water-liquid를 추가하고 이름을 water로 바꾸어 준다.
-
water
- 밀도 : 1000
- 점성계수 : 0.001
-
air
- 밀도 : 1.225
- 점성계수 : 1.79e-5
Materials 설정
셀존 조건(Cell zone Conditions)
[셀존 조건(Cell zone Conditions)]에는 region0가 있다.(다중영역일 때는 여러개의 영역이 표시된다.) 영역의 유체를 설정한다. region0를 더블 클릭하면 설정창이 열린다. [첫번째 유체(Primary Material)]은 air, [두번째 유체(Secondary material)]은 water로 지정한다. 표면장력(Surface Tension)은 0을 사용한다.
Cell Zone Conditions 설정
경계조건(Boundary Conditions)
경계조건은 다음과 같이 설정한다.
- water-in : 입구 압력(Pressure Inlet)
- 전압력(Total Pressure) : 15696
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, water) : 1
- air-in : 입구 압력(Pressure Inlet)
- 전압력(Total Pressure) : 0
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, water) : 0
- top : 출구 압력(Pressure Outlet), 유입류 조건(Specify Backflow Properties)
- 전압력(Total Pressure) : 0
- 유입류 난류 강도(Backflow Turbulent Intensity) : 1
- 유입류 난류 점도 비율(Backflow Turbulent Viscosity Ratio) : 10
- 유입류 체적분율(Backflow Volume Fraction, water) : 0
-
out, out-1 : 유출(Outflow)
-
weir, bottom : 벽면(wall)
- front, front-1, back, back-1 : 대칭(symmetry)
수치해석 기법(Numerical Conditions)
수치해석 조건은 다음과 같이 설정한다.
-
압력-속도 연성 기법(Pressure-Velocity Coupling Scheme) : SIMPLE
-
운동량방정식 계산(Use Momentum Predictor) : On
-
이산화 기법(Discretization Scheme)
- 시간 : 1차 음해법(First Order Implicit)
- 압력 : Momentum Weighted Reconstruct
- 운동량 : 2차 상류기법(Second Order Upwind)
- 난류 : 1차 상류기법(First Order Upwind)
- 체적분율 : 2차 상류기법(Second Order Upwind)
-
완화계수(Under-Relaxation Factors) : 모두 1로 설정
-
안정성 향상(Improve Stability) : Off
-
시간당 반복계산 회수(Max Iterations per Time Step) : 1
-
압력보정 회수(Number of Correctors) : 2
-
다상유동(Multiphase)와 수렴 판정 기준(Convergence Criteria) : 디폴트 사용
모니터(Monitor)
[추가(Add)]-[면(Surface)]를 선택하여 아래 그림과 같이 설정한다.
초기화(Initialization)
초기조건은 다음과 같이 입력한다.
- 속도 : (0 0 0)
- 압력 : 0
- 속도 크기(Scale of Velocity) : 1
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, water) : 0
water 영역의 초기조건을 주기 위해 두 개의 섹션을 만든다.
[초기화(Initialization)]-[추가설정(Advanced)]-[영역(Section)]-[만들기(Create)]를 클릭한 후 다음과 같이 설정한다.
-
region1
- 영영 형태(Section Type) : 육면체(Hex)
- 최소(Min.point) : (0.05 -1 0)
- 최대(Max.point) : (2 1 0.2)
- 체적분율(Volume Fraction, water) : 1
-
region2
- 영영 형태(Section Type) : 육면체(Hex)
- 최소(Min.point) : (-2 -1 0)
- 최대(Max.point) : (-0.05 1 1.6)
- 체적분율(Volume Fraction, water) : 1
[경계면도 포함(Override Boundary Value)] 옵션은 사용하지 않는다.
[추가설정(Advanced)]-[영역(Section)]에 두 개의 섹션이 만들어졌고 각 항목의 눈 모양 표시를 클릭하면 영역을 디스플레이 할 수 있다.
초기화 영역 디스플레이
하단의 [초기화(Initialize)] 버튼을 클릭한다. 그 후, 메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.
계산
메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.
[계산 조건(Run Conditions)]은 다음과 같이 설정하고 [계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.
- 시간 전진 기법(Time Stepping Method) : 적응시간기법(Adaptive)
- Courant Number : 1
- Courant Number for VoF : 1
- 종료시간(End Time) : 20
- 자동 저장 간격(Save Interval) : 0.1
계산이 시작되면 아래와 같이 모니터링 그래프가 그려진다.
유량 모니터링 화면
후처리
물의 흐름을 그려본다.
메뉴에서 [외부 프로그램(External tools)]-[ParaView] 버튼을 클릭해서 paraview를 실행한다.
병렬연산이면 [Case Type]을 [Decomposed Case]로 변경한다.
[Clip] 필터를 이용해서 Volume fraction이 0.5 이상인 영역을 잘라준다.
[Field]를 [U]로 변경한다. Pipeline Browser의 baram.foam을 [Outline]으로 표시하고, weir.stl 파일을 읽어 [Solid Color]로 표시하면 아래 그림과 같이 된다.
[Play] 아이콘을 누르면 동영상을 볼 수 있다.
선박 저항 - KCS(KRISO Container Ship)
개요
본 예제는 자유수면을 포함하는 선박의 저항 해석에 대한 검증 문제이다. 대상 선형은 KCS이며 아래 논문의 결과와 비교하였다. 자유수면 계산을 위해 interFoam 솔버를 사용하고, LTS(Local Time Step) 기법을 사용하는 정상상태 계산이며 난류모델은\(SST\) \(k-\omega\)를 사용한다.
Measurement of flows around modern commercial ship models, Kim,W J.Kim, Van, S H, Kim, D H, Experiments in Fluids, 2001
계산 및 실험 조건은 다음과 같다.
- 선박의 속도 : 2.196 \(m/s\)
- 기준 면적(침수면적, wetted surface area) : 9.5121 \(m^2/s\)
- draft : 0.3418 \(m\) (격자에서 z좌표는 0)
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [Volume of Fluid]를 선택한다. 중력은 (0 0 -9.81)로 설정한다.
launcher 설정
격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.
기본조건(General)
정상상태 계산이기 때문에 모든 설정은 디폴트 조건을 사용한다. 시작 창에서 설정한 중력이 표시된다. 시작 창에서 중력을 주지 않았을 때 여기서 설정할 수 있다.
General 설정
모델(Models)
난류 모델은 \(SST\) \(k-\omega\) 모델을 사용하고 나머지는 디폴트 조건을 사용한다.
Turbulence Model 설정
물질(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]로 선택하면 다음과 같은 그림을 확인할 수 있다.
캐비테이션 - NACA66 하이드로포일
개요
NACA66 익형 주위의 캐비테이션 해석 검증 문제이다.
캐비테이션 문제 검증용으로 많이 사용되는 아래 논문의 형상 및 조건을 사용하였다.
Viscous and Nuclei Effects on Hydrodynamic Loadings and Cavitation of NACA66(MOD) Foil section, Y.T.Shen, P.E. Dimotakis, J. Fluids Eng. sep. 1989
속도는 2.01 m/s 이며, 캐비테이션 수는 0.84 이다.
캐비테이션 모델은 Schnerr-Sauer를 사용하였으며 계수들은 다음과 같다.
- 증발계수(Evaporation Coefficient) : 1
- 응축계수(Condensation Coefficient) : 1
- 기포직경(Bubble Diameter) : 2e-6
- 기포의 수밀도(Bubble Number Density) : 1.6e+9
- 증기압(Vapor pressure) : 2420 Pa
프로그램의 구동 및 격자
프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multiphase Model)]은 [Volume of Fluid]를 선택한다. 중력은 (0 0 0)으로 설정한다.
격자는 주어진 polyMesh 폴더를 활용한다. 상단 탭에서 [파일(File)]-[격자 불러오기(Load Mesh)]-[OpenFOAM]을 순서대로 클릭하고 polyMesh 폴더를 선택한다.
기본조건(General)
[시간(Time)]은 [비정상상태(Transient)]로 설정한다.
모델(Models)
난류 모델은 \(standard\) \(k-\epsilon\) 모델을 사용하고 나머지는 디폴트를 사용한다.
물질(Materials)
본 예제는 이상유동이므로 두 개의 유체가 필요하다. [물질(Material)]의 상단 오른쪽의 (+)를 누르면 유체를 추가할 수 있다. waterLiquid와 waterVapor를 추가한다.
셀존 조건(Cell zone Conditions)
[셀존 조건(Cell Zone Conditions)]에는 region0가 있다.(다중영역일 때는 여러개의 영역이 표시된다.) 영역의 유체를 설정한다. region0를 더블 클릭하면 설정창이 열린다. [첫번째 유체(Primary Material)]은 waterVapor, [두번째 유체(Secondary material)]은 waterLiquid로 지정한다. 표면장력(Surface Tension)은 0.07을 사용한다.
캐비테이션(Cavitation) 옵션을 켠다. 모델은 [Schnerr-Sauer]를 선택하고 [증기압(Vaporization Pressure)]는 2430을 입력한다. Model Constants 는 다음의 값을 사용한다.
- 증발계수(Evaporation Coefficient) : 1
- 응축계수(Condensation Coefficient) : 1
- 기포직경(Bubble Diameter) : 2.0e-06
- 기포의 수밀도(Bubble Number Density) : 1.6e+9
경계조건(Boundary Conditions)
경계조건은 다음과 같이 설정한다.
- B_INLET : 입구 속도(Velocity Inlet)
- 속도 크기(Velocity Magnitude) : 2.01
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, waterLiquid) : 1
- B_OUTLET : 출구 압력(Pressure Outlet)
- 압력(Pressure) : 4113.788
-
B_SYM : 대칭(Symmetry)
-
FOIL_DOWN, FOIL_UP : 벽면(Wall)
-
EMPTY : 2차원 경계(Empty)
수치해석 기법(Numerical Conditions)
수치해석 조건은 다음과 같이 설정한다.
-
압력-속도 연성 기법(Pressure-Velocity Coupling Scheme) : SIMPLE
-
운동량방정식 계산(Use Momentum Predictor) : On
-
이산화 기법(Discretization Scheme)
- 시간 : 1차 음해법(First Order Implicit)
- 압력 : Momentum Weighted Reconstruct
- 운동량 : 2차 상류기법(Second Order Upwind)
- 난류 : 1차 상류기법(First Order Upwind)
- 체적분율 : 2차 상류기법(Second Order Upwind)
-
완화계수(Under-Relaxation Factors) : 디폴트 값 사용
- 안정성 향상(Improve Stability) : Off
- 시간당 반복계산 회수(Max Iterations per Time Step) : 10
- 압력보정 회수(Number of Correctors) : 2
- 다상유동(Multiphase)와 수렴 판정 기준(Convergence Criteria) : 디폴트 사용
초기화(Initialization)
초기조건은 다음과 같이 입력한다.
- 속도 : (2.01 0 0)
- 압력 : 4113.788
- 속도 크기(Scale of Velocity) : 2.01
- 난류 강도(Turbulent Intensity) : 1
- 난류 점도 비율(Turbulent Viscosity Ratio) : 10
- 체적분율(Volume Fraction, waterLiquid) : 1
하단의 [초기화(Initialize)] 버튼을 클릭한다. 그 후, 메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.
계산
메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.
[계산 조건(Run Conditions)]은 다음과 같이 설정하고 [계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.
- 시간 전진 기법(Time Stepping Method) : 일정(Fixed)
- 시간 전진 간격(Time Step Size) : 0.01
- 종료시간(End Time) : 10
- 자동 저장 간격(Save Interval) : 0.5
후처리
메뉴에서 [외부 프로그램(External tools)]-[ParaView] 버튼을 클릭해서 ParaView를 실행한다
병렬연산이면 [Case Type]을 [Decomposed Case]로 변경한다.
[Coloring]을 [p_rgh] 혹은 [alpha.waterLiquid]를 선택하면 압력과 체적분율을 확인할 수 있다.
하이드로포일 표면의 압력데이터를 얻으려면 원하는 경계면(FOIL-UP)만 선택하고, 메뉴의 [File]-[Save Data]를 실행하면 csv 형식의 데이터 파일을 얻을 수 있다.