OpenFOAM
1. 개요
무료이자 오픈소스 소프트웨어 패키지로 OpenFOAM 재단에서 상표권을 가지고 있다. OpenFOAM 재단(홈페이지)에서 관리하는 버전과 Extend-Project(홈페이지)에서 관리하는 버전 등 두 가지의 다른 버전이 관리되고 있으며 두 버전은 각각 별개로 개발되고 있다. 전산유체역학을 풀기 위하여 개발이 시작되었으나 편미분방정식 형태의 다양한 보존방정식을 FVM 기법을 이용하여 풀 수 있도록 구성되어 있으며, 포함된 방대한 라이브러리를 이용하여 압축성과 비압축성을 포함한 복잡한 유체 유동, 직접수치해석법(DNS), 화학반응, 난류(Turbulence), 열전달, 전자기장, 고체역학, 금융공학 문제 등을 시뮬레이션 할 수 있다.
오픈 소스 소프트웨어의 특성 상 프로그램 자체의 편집이 자유로운 편이다. 이 때문에 다른 상용소프트웨어들 (fluent, CFX, STARCD 등) 과는 다르게 원하는 기능을 직접 프로그래밍하여 적용 시킬 수 있다는 점이 가장 큰 강점이다. 하지만 GUI의 부재로 인해(post processing의 경우에는 ParaView라는 서드파티 프로그램을 연동하여 손쉽게 진행 할 수 있다.) 기능을 사용할 때 진입장벽이 높다. 앞서 언급한 상용소프트웨어들이 마우스 클릭 몇 번과 키보드 타이핑 몇 번으로 손쉽게 시뮬레이션을 할 수 있다는 것과는 다르게, 초기치와 경계조건, 각종 상수들을 포맷에 맞게 프로그램 하듯이 코딩(프로그램이 C++로 짜여 있기 때문에 코딩이 맞다.)해 주어야 한다. 거기다 프로그램이 지원하지 않는 기능을 추가하기 위해서는 정말로 C++코딩을 제대로 해야한다.
또한 MPI가 지원되여 멀티코어를 사용해 시뮬레이션의 속도를 증가 시킬 수 있다. 따라서 일반 PC보다는 되도록 자신 주위에 사용가능한 클러스터가 있는지 확인해보고 그곳에 설치해서 사용하도록 하자.
처음 설치를 하게 되면 실행 파일 하나 없이 폴더만 놓여 있어 무엇부터 해야하는지 난감 하므로, 익숙해 지기 전까지 튜토리얼 폴더 안에 있는 각종 예제를 참고하여 연습해 보는 것이 필요하다.
2. 사용법
OpenFOAM을 사용하는데 있어서는 세 개의 폴더에 자신이 원하는 정보를 입력하여 넣어 주어야 한다.
- 초기치 및 경계 조건 ("0" 폴더): 시뮬레이션 하고자 하는 모든 스칼라와 벡터들(속도, 온도, 압력 등; 압력의 경우 압축성 유동과 비 압축성 유동의 단위가 다르므로 작성에 주의 하자.)의 초기치 및 경계 조건을 입력 해 주어야 한다.
- 상수 ("constant" 폴더): 시뮬레이션을 하는데 필요한 물성치들과 메쉬에 대한 정보가 들어간다. 기본적으로 OpenFOAM을 blockMesh라는 structured mesh 생성기가 포함 되어 있는데, 매우 귀찮은 일련의 과정들을 통해 (hexahedron 메쉬를 생성하는데 있어 모든 점들을 오른손 법칙에 의거하여 입력해야만 한다거나, 입력되는 점들의 정보로 좌표계가 결정되기 때문에 임의로 입력하면 안된다거나 하는 등의 고려를 다 한 후) 메쉬를 생성하면, 모든 점, 면 등의 정보가 바로 이 폴더 안의 polymesh폴더에 저장이 된다. 이 과정을 편하게 하려면 자신이 익숙한 CAD 프로그램으로 geometry를 작성하고, Meshing프로그램을 이용하여 FLUENT 포맷으로 저장하자. OpenFOAM에는 FLUENT 메쉬 파일을 변환시켜주는 툴이 있어 손쉽게 주어진 메쉬를 이용할 수 있다.
- 제어 파일 ("system" 폴더): 수치해석 방법을 변경하거나, relaxation factor, timestep등 잡다하지만 매우 필요한 정보들이 저장된다.
3. 관련 외부링크
오픈폼 학습 블로그 : https://onedayof.tistory.com/98