안녕하세요.
오늘은 OpenFOAM의 비압축성 정상상태 해석에 대해 알아보려해요.
OpenFOAM은 아래의 그림과 같이 여러 솔버들로 나뉘어 있는데요.
해석 문제에 따른 솔버 선택도 해석을 정확하게 하기 위해 중요해요.
해석을 하기전 어떤 해석을 진행할 것인지 정확히 이해한 후 OpenFOAM 메뉴얼에 솔버에 대한 정보를 읽어보고 솔버를 정해야해요.
오늘은 비압축성 정상상태 솔버인 simpleFoam tutorial을 통해 simpleFoam 솔버에 대해 알아보도록 할게요.
simpleFoam 해석 개요
1. Tutorial 경로 : /opt/openfoam10/tutorial/incompressible/simpleFoam/pitzDaily
2. 해석버전 : OpenFOAM v10 (The OpenFOAM Foundation)
3. 해석솔버 : simpleFoam
4. 해석격자 : blockMesh
5. 해석 절차
(1) blockMesh를 통해 격자 생성
(2) constant/physicalProperties 파일에서 해석 물성 설정 ( viscosity 설정)
(3) constant/momentumTransport 파일에서 난류 모델 설정
(4) 0 폴더에서 U,p,k,epsilon,nut 등 Primitive type 또는 Derived type 경계조건 설정
(5) system/controlDict 파일에서 저장타임 및 해석 시간 설정
(6) system/fvSolution, system/fcSchemes 설정 및 확인
(7) simpleFoam 실행
blockMesh 설정
간단한 형상에 대해서는 blockMesh를 사용하고 복잡한 형상의 경우 자동격자인 snappyHexMesh를 사용해요.
이번 tutorial은 간단한 형상이므로 blockMesh를 사용했어요.
제일 처음줄은 형상의 크기 기준을 뜻해요. 1m 기준 0.001 이므로 1은 1mm가 돼요.
그 다음은 형상의 점의 좌표를 입력해줘요.
다음으로 block을 설정해줘요.
총 5개의 block으로 이루어져 있구요. 격자는 육면체격자(hex)에요.
그 다음 괄호는 각 block의 x, y, z 축의 격자 개수를 뜻해요.
마지막으로 격자를 한쪽 방향으로 조밀하게 하는 simpleGrading, edgeGrading을 설정해줘요.
$negY, $posY, $posYR은 위에 설정된 변수로 차례대로 각각의 변수에 들어가게 돼요.
마자막으로 경계조건 이름, base type의 경계조건, 경계면을 설정해 줘요.
blockMesh를 실행해주고 paraFoam으로 확인해 보면 다음과 같은 격자 모양으로 나와요.
constant 폴더 파일 설정
constant 폴더는 polyMesh폴더, momentumTransport 파일, physicalProperties 파일로 이루어져 있어요.
polyMesh 폴더는 blockMesh를 실행한 후 생성된 파일이 저장돼요.
(1) momentumTransport
momentumTransport 파일은 난류모델을 설정해 주는 파일이구요.
현재 문제에서는 가장 기본적은 난류 모델인 kEpsilon 모델을 사용했어요.
kEpsilon 모델 외에도 realizableKE, kOmega, kOmega2006, kOmegaSST, v2f 등의 많은 난류모델이 들어가있고 추후 업데이트되며 새로운 난류모델들이 추가돼요.
(2) physicalProperties
physicalProperties 파일은 작동 유체의 물성을 설정해줘요.
온도를 고려하지 않기 때문에 kinematic viscosity를 설정하며 단위는 m2/s에요.
system 폴더 파일 설정
system 폴더는 해석시간 및 결과저장, function Objects, 지배방정식의 이산화방법, 이산화된 방정식의 행렬 계산 방법을 설정하는 파일들이 모여 있어요.
(1) controlDict 파일
해석시간 및 결과 저장, function Object 설정하는 파일이에요.
파일 내용을 보면 solver는 simpleFoam을 사용하였고 해석시간은 2000 iteration, 저장 간격은 timeStep 100번 마다 저장 돼요.
끝에 functions라고 되어있는 부분이 function Objects 인데요.
이 해석에는 steamline과 kEpsion:G를 출력하는 function Objects 를 사용했네요.
나중에 function Objects에 대해 자세히 설명할게요.
(2) fvSchemes 파일 설정
지배장정식의 각 항에 따른 이산화 방법을 설정하는 파일이에요.
파일 내용을 보면 ddtSchemes을 steadyState로 설정해 주었으므로 정상상태 해석으로 진행돼요.
divSchemes는 convection 항을 해석하는 곳으로 2nd order를 사용하여 해석 정확성을 높였어요.
간단한 형상의 경우 2nd order를 사용해도 되지만 해석 안정성을 위해 1st order를 사용을 추천드려요.
(3) fvSolution 파일 설정
격자에 따른 이산화된 방정식을 계산할 matrix를 설정하는 파일이에요.

파일 내용을 보면 p,U,k,epsion 등의 변수들의 matrix 솔버를 지정하구요.
residualControl을 통해 intial residual이 p 1e-2, U 1e-3, 나머지도 1e-3이 될때 해석이 수렴되었다 판단되어 해석을 멈추고 저장해요.
rexationFactors는 급격한 해석값의 변화를 완화시켜주는 Factor로 낮을수록 해석은 안정화되지만 많은 iteration을 통해 수렴이 되어 해석 시간이 길어지는 단점이 있어요.
해석 결과
paraview를 통해 위와 같은 결과를 확인할 수 있어요.
결론
오늘은 tutorial 중에서 가장 간단한 simpleFoam에 대해 알아봤어요.
simpleFoam은 비압축성 솔버에 온도 변화가 없고 밀도가 일정한 해석에 적용할수 있어요.
정상상태 해석을 빠르게 해석할 수 있어서 기본적인 유동을 해석할때 주로 사용해요.
가장 간단한 tutorial이니 꼭 꼼꼼히 봐주세요.
질문은 댓글로 달아주시고 오늘도 끝까지 읽어 주셔서 감사해요.
이미지 무단 도용을 금합니다.
copyright ⓒ 택이5 All rights reserved
'OpenFOAM basic' 카테고리의 다른 글
OpenFOAM 내 압축성 정상상태 (rhoSimpleFoam) 해석방법 (2/2) (0) | 2024.06.04 |
---|---|
OpenFOAM 내 압축성 정상상태 (rhoSimpleFoam) 격자 생성 (1/2) (0) | 2024.06.03 |
OpenFOAM 내 기본 격자 (blockMesh) (0) | 2024.06.01 |
paraview 소개 및 설치 (0) | 2024.05.31 |
OpenFOAM system 폴더 파일 설명 (0) | 2024.05.30 |
댓글