최근 수정 시각 : 2023-02-08 01:22:59

OpenFOAM

1. 개요2. 사용법
2.1. 병렬 프로그래밍
3. 문법4. 표준솔버 및 비표준솔버5. 히스토리6. 배포 버전7. 설치8. 관련 프로그램9. 관련 문서

1. 개요

OpenFOAM(오픈폼)은 무료이자 오픈소스 소프트웨어 패키지로 OpenFOAM 재단에서 상표권을 가지고 있다. OpenFOAM 재단(홈페이지)에서 관리하는 버전과 Extend-Project(openFOAMextensions홈페이지)에서 관리하는 버전 등 두 가지의 다른 버전이 관리되고 있으며 두 버전은 각각 별개로 개발되고 있다. 전산유체역학을 풀기 위하여 개발이 시작되었으나 편미분방정식 형태의 다양한 보존방정식을 FVM(유한체적법,Finite Volume Method) 기법을 이용하여 풀 수 있도록 구성되어 있으며, 포함된 방대한 라이브러리를 이용하여 압축성과 비압축성을 포함한 복잡한 유체 유동, 직접수치해석법(DNS), 화학반응, 난류(Turbulence), 열전달, 전자기장, 고체역학, 금융공학 문제 등을 시뮬레이션 할 수 있다.

오픈 소스 소프트웨어의 특성 상 프로그램 자체의 편집이 자유로운 편이다. 이 때문에 다른 상용소프트웨어들 (fluent, CFX, STARCD 등) 과는 다르게 원하는 기능을 직접 프로그래밍하여 적용 시킬 수 있다는 점이 가장 큰 강점이다. 하지만 GUI의 부재로 인해(post processing의 경우에는 ParaView라는 서드파티 프로그램을 연동하여 손쉽게 진행 할 수 있다.) 기능을 사용할 때 진입장벽이 높다. 앞서 언급한 상용소프트웨어들이 마우스 클릭 몇 번과 키보드 타이핑 몇 번으로 손쉽게 시뮬레이션을 할 수 있다는 것과는 다르게, 초기치와 경계조건, 각종 상수들을 포맷에 맞게 프로그램 하듯이 코딩(프로그램이 C++로 짜여 있기 때문에 코딩이 맞다.)해 주어야 한다. 거기다 프로그램이 지원하지 않는 기능을 추가하기 위해서는 정말로 C++코딩을 제대로 해야한다.

또한 MPI가 지원되어 멀티코어를 사용해 시뮬레이션의 속도를 증가 시킬 수 있다. 따라서 일반 PC보다는 되도록 자신 주위에 사용가능한 클러스터가 있는지 확인해보고 그곳에 설치해서 사용하도록 하자.

처음 설치를 하게 되면 실행 파일 하나 없이 폴더만 놓여 있어 무엇부터 해야하는지 난감 하므로, 익숙해 지기 전까지 튜토리얼 폴더 안에 있는 각종 예제를 참고하여 연습해 보는 것이 필요하다.

2. 사용법

OpenFOAM을 사용하는데 있어서는 세 개의 폴더에 자신이 원하는 정보를 입력하여 넣어 주어야 한다. [1]
  • 초기치 및 경계 조건 ("0" 폴더): 시뮬레이션 하고자 하는 모든 스칼라와 벡터들(속도, 온도, 압력 등; 압력의 경우 압축성 유동과 비 압축성 유동의 단위가 다르므로 작성에 주의 하자.)의 초기치 및 경계 조건을 입력 해 주어야 한다.
  • 상수 ("constant" 폴더): 시뮬레이션을 하는데 필요한 물성치들과 메쉬에 대한 정보가 들어간다. 기본적으로 OpenFOAM을 blockMesh라는 structured mesh 생성기가 포함 되어 있는데, 매우 귀찮은 일련의 과정들을 통해 (hexahedron 메쉬를 생성하는데 있어 모든 점들을 오른손 법칙에 의거하여 입력해야만 한다거나, 입력되는 점들의 정보로 좌표계가 결정되기 때문에 임의로 입력하면 안된다거나 하는 등의 고려를 다 한 후) 메쉬를 생성하면, 모든 점, 면 등의 정보가 바로 이 폴더 안의 polymesh폴더에 저장이 된다. 이 과정을 편하게 하려면 자신이 익숙한 CAD 프로그램으로 geometry를 작성하고, Meshing프로그램을 이용하여 FLUENT 포맷으로 저장하자. OpenFOAM에는 FLUENT 메쉬 파일을 변환시켜주는 툴이 있어 손쉽게 주어진 메쉬를 이용할 수 있다.
  • 제어 파일 ("system" 폴더): 수치해석 방법을 변경하거나, relaxation factor, timestep등 잡다하지만 매우 필요한 정보들이 저장된다.

3가지 정보가 다 입력되면 커맨드 창에서 자신히 사용하려고 하는 solver를 치면 시뮬레이션이 시작된다.

2.1. 병렬 프로그래밍

OpenFOAM 패키지는 MPI같은 병렬 프로그래밍을 지원하고 있다.

3. 문법

편미분방정식 및 벡터 미적분학 표현을 OpenFOAM 라이브러리의 솔버(solver)로 구현한 소스코드 [2]
편미분방정식 및 벡터 미적분학 표현 [math( \dfrac{\partial \rho \textbf{U}}{\partial t} + \nabla \cdot \phi \textbf{U} -\nabla \cdot \mu \nabla \textbf{U} = - \nabla p )]
OpenFOAM 라이브러리의 솔버(solver) 표현 solve (
fvm::ddt(rho,U)
+fvm::div(phi,U)
-fvm::laplacian(mu,U)
==
-fvc::grad(p)
);

4. 표준솔버 및 비표준솔버

GNU GPL이다보니 유저가 사용하다가 개선이나 개발한 솔버가 역시 GNU GPL로 공개의무에 따라 꽤 훌륭한 비표준솔버들이 많이 있다. 심지어는 GUI 툴도 있다.

5. 히스토리

영국 런던의 임페리얼 칼리지(Imperial College)에서 개발된 것을 나블라(Nabla)라는 회사가 FOAM이라는 제품명으로 판매했었다. 이후 이에대한 권리를 소유한 OpenCFD사 2004년에 OpenFOAM이라는 명칭으로 GNU GPL인 오픈소스로 공개하였다. 2011년 8월 OpenCFD사는 SGI(Silicon Graphics사)에 인수되었으나 GNU GPL에 따르는 OpenFOAM의 공식적인 배포 및 관리는 비영리단체 오픈폼재단(OpenFOAM Foundation)에서 해오고 있다. 2012년 9월 OpenCFD사는 또한번 ESI그룹(ESI Group)에 재인수된바 있다.
한편 2015년 OpenFOAM의(더 정확히는 FOAM의) 초기 멤버인 헨리 웰러(Henry Weller)는 OpenCFD사에서 나와 CFD Direct라는 회사를 설립한것으로 알려져있다.[3]

6. 배포 버전

2016년 현재 'OpenFOAM'이라는 상표는 OpenCFD사가 상표등록하고 권리를 가지고 있다.OpenFOAM의 상표권 보유자에 의한 공식적인 배포는 오픈폼재단(OpenFOAM Foundation)에 의한 OpenFOAM과, OpenCFD사(ESI그룹)에 의한 OpenFOAM버전이 있다. [4]
한편 이와는 별개로 초창기부터 Extend-Project로 알려진 openFOAMextensions에서 관리하는 버전도 인지도가 있다.[5]

7. 설치

리눅스 우분투 및 버전10 기준의 권장 설치절차[6]
인스톨 절차
sudo sh -c "wget -O - https://dl.openfoam.org/gpg.key > /etc/apt/trusted.gpg.d/openfoam.asc"
sudo add-apt-repository http://dl.openfoam.org/ubuntu
sudo apt-get update
sudo apt-get -y install openfoam10
환경설정
gedit ~/.bashrc (.bashrc파일 맨 마지막 줄에 다음 문구 [math( \text{\color{red}{source /opt/openfoam10/etc/bashrc}} )] 를 삽입 후 저장)
simpleFoam -help
설치완료 테스트

8. 관련 프로그램

9. 관련 문서



[1] \[The OpenFOAM Foundation\] 12th July 2022 ,Download OpenFOAM v10 | Ubuntu Versionshttps://openfoam.org/download/10-ubuntu/[2] 공개 전산열유체 시뮬레이션 OpenFOAM의 설치 및 사용 메뉴얼 손일엽 (KISTI) 김병윤, 노현석 (넥스트폼) 한국과학기술정보연구원https://repository.kisti.re.kr/bitstream/10580/6541/1/2014-197%20%EA%B3%B5%EA%B0%9C%20%EC%A0%84%EC%82%B0%EC%97%B4%EC%9C%A0%EC%B2%B4%20%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98%20OpenFOAM%EC%9D%98%20%EC%84%A4%EC%B9%98%20%EB%B0%8F%20%EC%82%AC%EC%9A%A9%20%EB%A9%94%EB%89%B4%EC%96%BC.pdf[3] \[OSS\] OpenFOAM이란 (OpenFOAM 시작하기)https://www.oss.kr/info_techtip/show/f12c29c1-fa26-48a7-9c83-4d34a77507a2[4] \[OpenCFD사,ESI그룹\]About OpenFOAM https://www.openfoam.com/[5] OpenFOAM extensions-The foam-extend project https://sourceforge.net/projects/openfoam-extend/[6] 2022 OpenFOAM V10, Ubuntu Version,Installation https://openfoam.org/download/10-ubuntu/