Sloshing – dynamic mesh & expert mode

격자 파일 다운로드

계산 파일 다운로드

개요

LNG 선박, 해양플랜트, 자동차 연료 탱크 및 화물 탱크를 비롯한 다양한 분야에서 슬로싱 문제에 시뮬레이션을 활용하고 있다.

다상 유동과 동적격자 기능을 사용하는 예제이다.

본 예제의 격자는 openfoam 튜토리얼이 제공하는 격자를 사용한다. 아래 식으로 표현되는 탱크의 직선 진동운동을 dynamic mesh 기능을 사용해서 구현한다.

$x(t) = x_0 + A sin(\omega t )$

  • A : 진폭(amplitude)
  • $\omega$ : 각주파수 (angular frequency)

프로그램의 구동 및 격자

프로그램 실행 후 [새 작업(New Case)]를 선택한다. 시작 창에서 [솔버 유형(Solver Type)]은 [압력기반(Pressure-based)]를, [다상유동 모델(Multi-phase Model)]은 [Volume of Fluid]를 선택한다. 중력은 (0 0 -9.81)로 설정한다.

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

기본조건(General)

[시간(Time)]은 [비정상상태(Transient)]로 설정한다.

[중력(Gravity)]는 (0 0 -9.81)을 사용한다.

모델(Models)

모두 디폴트를 사용한다.

물질(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을 사용한다.

경계조건(Boundary Conditions)

sloshingCylinder라는 하나의 경계면만 있으며 조건은 다음과 같이 설정한다.

  • 벽면(Wall)
  • Wall Motion : Moving wall – Mesh Motion

이동 격자(Dynamic Mesh)

Motion Type에서 Moving Cell Zone을 선택한다.

아래쪽의 Add Motion을 클릭한다.

Add Motion Function을 클릭하고 Linear Oscillation을 선택한다. Amplitude에 (2 0 0)을 입력하고, Frequency에 0.159를 입력한다.

CellZones에 아무것도 선택하지 않으면 전체 도메인의 운동으로 정의된다.

수치해석 기법(Numerical Conditions)

수치해석 조건은 다음과 같이 설정한다.

  • 운동량방정식 계산(Use Momentum Predictor) : Off
  • 완화계수(Under-Relaxation Factors) : 모두 1로 설정
  • 시간당 반복계산 회수(Max Iterations per Time Step) : 1
  • 압력보정 회수(Number of Correctors) : 2

나머지는 모두 디폴트 값을 사용한다.

모니터(Monitor)

탱크 표면의 한 점(-1.5 0 0)의 압력과 탱크의 최대 압력을 모니터링 한다.

[추가(Add)]-[점(Point)]를 선택한다. 좌표를 입력하고 ‘Snap onto Boundary’에서 sloshingCylinder를 선택한다.

[추가(Add)]-[면(Surface)]를 선택한다. Report Type을 Maximum으로 선택하고 Surface에서 sloshingCylinder를 선택한다.

초기화(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)]를 클릭한 후 다음과 같이 설정한다.

  • 영역 형태(Section Type) : 육면체(Hex)
  • 최소(Min.point) : (-2 -2 -2)
  • 최대(Max.point) : (2 2 -0.3)
  • 체적분율(Volume Fraction, water) : 1

[경계면도 포함(Override Boundary Value)] 옵션은 사용하지 않는다.

[추가설정(Advanced)]-[영역(Section)]에 섹션이 만들어졌고 눈 모양 표시를 클릭하면 영역을 디스플레이 할 수 있다.

하단의 [초기화(Initialize)] 버튼을 클릭한다.

계산 조건 / 계산

메뉴의 [병렬연산(Parallel)]-[환경설정(Environment)]를 클릭하고 원하는 코어수를 입력한다.

[계산 조건(Run Conditions)]은 다음과 같이 설정한다.

  • 시간 전진 기법(Time Stepping Method) : 적응시간기법(Adaptive)
  • Courant Number : 2
  • Courant Number for VoF : 2
  • 종료시간(End Time) : 5
  • 자동 저장 간격(Save Interval) : 0.05

메뉴의 [파일(File)]-[저장(Save)] 버튼을 클릭하여 저장한다.

‘Run Solver Only’ 옵션을 활성화하고 [계산시작(Start Calculation)] 버튼을 누르면 계산이 시작된다.

계산이 시작되면 아래와 같이 모니터링 그래프가 그려진다.

후처리

메뉴에서 [외부 프로그램(External tools)]-[ParaView] 버튼을 클릭해서 paraview를 실행한다.

병렬연산이면 [Case Type]을 [Decomposed Case]로 변경한다.

[Mesh Regions]에서 InternalMesh와 patch/sloshingCylinder를 선택한다.

[Clip] 필터를 이용해서 Volume fraction이 0.5 이상인 영역을 잘라준다. [Invert]를 비활성화 하고 [Coloring]를 U로 변경한다.

메뉴에서 [Filters] – [Extract Block]을 선택하고 boundary-sloshingCylinder를 선택한다. [Coloring]을 [Solid Color]로 바꾸고, [Backface styling] 에서 backface를 [Cull Frontface]로 선택하면 앞부분이 사라지고 아래 그림과 같이 된다.

[Play] 아이콘을 누르면 동영상을 볼 수 있다.