메뉴 건너뛰기


이노빠빠
조회 수 : 1907
2016.04.27 (17:36:50)

이 글은 OpenFoam User Guide Line을 참고하여 기술하고 있습니다.

 

OpenFOAM(Open source Field Operation And Manipulation) 이라는 것은 GNU General Public License (GPL)을 기반으로 공개 되어 있는 오픈소스의 수치유체역학(Computational Fluid Dynamics : CFD) 엔진이다. 객체 지향 프로그래밍(OOP) 언어 C++로 개발되어 편미분방정식 솔버(Solver) 개발용 클래스 라이브러리로서, C++의 문법을 전반적으로 활용하여 높은 기술성과 확장성을 실현하고 있다. 예를 들면, 스칼라 운송방정식을 푸는 코드는 다음과 같이 기술이 가능하다.

solve
(
    fvm::ddt(T)
  + fvm::div(phi, T)
  - fvm::laplacian(DT, T)
);

  수치유체역학의 지식이 있으면, 대략의 의미을 알 수 있는 표현으로 Field의 방정식의 솔버를 기술할 수 있는 것이 특징이다.

 

OpenFOAM은 클래스 라이브러리를 이용하여 쓰여진 표준 솔버와 툴을 다수 내포하고 있다. 표준 솔버 속에는 문제에 따라 곧 활용 가능한 레벨의 것도 포함하고 있다.

 

  본시 영국의 Imperial College 에서 개발되었던 것을 Nabla사가 "FOAM"이라는 이름으로 판매하였지만, 2004년 OpenCFD사로부터 "OpenFOAM"으로서 오픈소스로 공개되었다. 2011년 8월 OpenCFD사는 Silicon Graphics사(SGI)에 합병되어 OpenFOAM은 비영리단체 OpenFOAM Foundation으로부터 계속 오픈소스로서 공개되도록 되었다. 2012년 9월 OpenCFD사는 또다시 ESI Group에 합병되었다. "OpenFOAM"은 OpenCFD사의 등록 상표이다.

 

  2015년 3월, OpenFOAM의 아버지 Henry Weller씨는 OpenCFD사에서 나와 CFD Direct라고 하는 회사를 세워, OpenFOAM Foundation / OpenFOAM 프로젝트 멤버의 입장으로 OpenFOAM의 개발을 이어가고 있는 것으로 알려졌다.

 

  2016년 현재, OpenFOAM의 권리보유자에 의해 [공식]릴리즈로서, OpenFOAM Foundatio 에 의한 OpenFOAM과 OpenCFD사(ESI)에 의한 OpenFOAM+가 있다. 이것에 대하여 CFD Online에서 OpenFOAM v3.0? 이 의논되고 있다. OpenFOAM+를 레드햇으로 본다면, OpenFOAM을 페도라로 볼 수 있을까?

 

  OpenFOAM은 소위 유체해석솔버가 아니고, 유한체적법을 중심으로 하는 편미분방정식 솔버 개발용 클래스 라이브러리와 이것에 의해 만들어진 몇가지 솔버 및 툴의 군이다. 자신의 문제에 이용할 때, 일반적인 상용 솔버와 같은 필요한 기능을 유효하게 하는 스위치를 누르는 것이 아니고, 필요한 기능을 가진 솔버를 표준 솔버 속에서 선택한다. 적당한 기능을 구비한 솔버가 표준 솔버 속에 없는 경우는 자신이 솔버를 개발할 필요가 있다. 어떤 의미로도 가능하다만, 그 나름대로의 지식과 시간, 경우에 따라서는 돈이 필요하게 된다.

 

 

   무엇이 가능할까?

 

  표준 솔버의 범위로는 아래와 같은 것이 가능하다.

 

1. 비압축성 유체의 정상/비정상 난류 해석

2. 압축성 유체의 정상/비정상 열대류 해석

3. 유체, 고체 전열(CHT) 해석

4. 혼상류해석(계면추적법/다유체모델)

 

  이 외에, 그다지 일반적이지 않은 연소모델을 사용한 연소해석 솔버와, 천음속초음속을 포함한 압축성 유체 솔버 등이 있다. 입자 계산도 일단 가능하지만, 일부 특수한 솔버가 대응되어 있다. 상용 솔버와 비교하면, 표준 솔버는 일반적으로 그다지 수렴성이 좋지 못하고, 메시 품질에 대한 신뢰성도 없고, 계산을 성공시키는 것 자체가 어려운 경우가 적지 않다. 솔직히 처음 첫 초심자에게는 추천하고 싶지 않은 해석 솔버이다.

 

  덧붙여, 고체의 열전달해석에 의한다면, OpenFOAM 이라는 것보다, Salome-Meca를 추천한다.

 

  OpenFOAM을 이용하는 데에는, 기존의 솔버를 수정하거나, 새로운 솔버와 라이브러리를 개발하거나 하는 필요성이 발생하는 것이 적지 않다. 또, 기본적으로 리눅스상에서 동작한다는 것을 생각해 두어야 한다. 따라서, 유저는 리눅스 사용에 익숙하고, C++로 프로그래밍이 가능하며, 수치유체역학의 이론과 문제의 현상에 대하여 잘 알고 있을 필요가 있다. 그래서, 주된 대상은 연구소나 학생, 수치계산에 충분한 시간을 할애할 수 있는 엔지니어 등이 된다.  ^_^;

 

  OpenFOAM은 오픈소스 소프트웨어로서, 무료로 사용할 수 있는 유체해석 소프트웨어로 주목되고 있지만, [무료] 자체는 오픈소스 소프트웨어의 성질이 아니다. 오픈소스 소프트웨어라는 것은 소스 코드가 공개되어 있어서 소스 코드의 재배포가 가능한 소프트웨어를 말한다. 그렇다면, 소프트웨어를 유료로 구입했다하더라도 구입한 사람이 무료로 소스코드를 재배포 시켜버릴 가능성이 높다. 이 때문에 결과적으로 무료로 제공되고 있는 것이 많다.

 

  유료의 오픈소스 소프트웨어도 있을 수 있다. 개인이 살 수 없는 것과 같은 가격(예를 들면, 1억원 이상)을 붙여버리면, 재배포를 실질적으로 막는 것이 가능하다. 특히 OpenFOAM과 같은 전문성이 높은 소프트웨어의 경우, 실제로 일어날 수 있다. 소스 코드의 내용에 있어서 비밀보호계약을 체결해 버리면, 확실히 재배포을 막을 수 있다.

 

  오픈소스 소프트웨어의 이용에 있어서 아래와 같은 제한이 있다.

 

1. 무보증

2. 소스 코드을 변경하여 만든 소프트웨어을 제공할 경우, 제공하는 측에 대한 소스코드를 공개하지 않으면 안됨.(GPL의 제한)

 

  2번의 제한은 OpenFOAM을 포함한 리눅스를 시작하여 많은 오픈소스 소프트웨어가 체용하고 있는 라이선스로 GNU General Public License(GPL)의 제한이다. 정확히는 [GPL의 소프트웨어를 변경하여 제공하는 경우는 그 소프트웨어를 GPL로서 제공하지 않으면 안됨] 이다.

 

  결국, 단순히 자신이 이용하는 경우에는 제한이 없다. 단, 무료로 무보증이기 때문에, 자급자족이 필요한 부분이 있다. 사용성이 좋지 않고, 혹은 특수한 오픈소스 소프트웨어도 적지 않다. 이것은 OpenFOAM도 예외가 아니다. 그래서 [불만이 있다면 상용 소프트웨어를 사용해!] 라고 하는 것이 아니라 [마음에 들지 않으면, 지신이 개선하여 프로젝트에 헌신해 주오]라는 것이다.  이용하기 위한 정보가 정리되어 있지 않은 것도 많아서( 이것도 OpenFOAM도 예외가 아님), 인터넷 웹상에서 단편적인 정보나 소스코드부터 필요한 정보를 입수하는 필요가 있다. 자기 자신의 손으로 문제를 해결하지 않으면, 만족하지 않는다는 기개로 접근하는 사람이지 않으면 OpenFOAM을 포함한 모든 오픈소스 소프트웨어의 이용은 불가능하다. 흠냐.

 

  이용에 있서서는 자급자족으로 투자하여 비용(시간 등을 포함하여) 이 무료라고 하는 금전적인 장점을 상회하는 경우를 생각할 수 있고, 고가의 상용 소프트웨어가 현실적인 선택일 경우도 있어서 OpenFOAM의 이용에 있어서 충분한 사전 검토가 필요하다. ^^

 

   [무료]라는 것이 심리적으로 저항할 수 없는 어떤 힘이 있다는 것을 잘 알고 있지 않은가.... 

 

   어떤식으로 사용할 것인가?

 

  OpenFOAM을 상용 솔버의 대체로서 사용하는 것을 생각해 볼 수 있지만, OpenFOAM은 설정이 기본적으로 텍스트 기반으로 되어 있고, 솔버의 개발과 수정의 필요가 발생되어지기 때문에 일반적인 상용 솔버 보다도 제법 손이 많이 간다는 것을 각오해야 한다. 상용 솔버의 라이선스 비용과 OpenFOAM을 씀으로서 발생되는 인건비와 시간을 공평하게 나누어 판단해보는 것이 좋다. [Free] 라는 것은 시간으로 금전을 사는 것이므로, 돈으로 시간을 사는 쪽이 좋은 경우도 있다.

 

  상용 솔버에는 라이선스 비용이 막대하게 증가하기 쉬운 대규모 병렬 해석에 OpenFOAM을 이용하는 것도 생각해 볼 수 있다. 현재로서는 OpenFOAM 이용의 비용보다도 대규모 병렬용의 상용 라이선스의 쪽이 압도적으로 비싸기 때문에 대규모 병렬 해석으로 OpenFOAM 을 이용하는 가치는 높다.

 

   어느 제품이든 설계 등의 문제를 한정적으로 특정지을 수 있다면, 이것에 대하여 솔버와 간단한 인터페이스를 만들어, 전용의 설계 툴로서 이용하는 것도 좋다. 물론 초기 투자는 필요하지만, 일단 만들어버리면 무료로 계속 이용할 수 있기 때문에, 상용 솔버에 비한다면 초기 투자는 금방 회수될 것이다.

 

   처음부터 상용 솔버를 사지 않기 위해서 OpenFOAM을 이용한다는 것을 생각할 수 있지만, 이것을 그다지 추천할 사항이 아닌 것 같다. 그러나, 현실적으로 이것 밖에 선택의 여지가 없을 때도 있다. 이경우 독학으로 어떻게든 하겠다는 용기가 필요하다.

 

   OpenFOAM은 오픈소스로서 소스코드를 자유로이 건드릴 수 있다는 것이 특징이다. 고드는 적당하게 추상화되어 있어 구석구석 읽기 쉽게 쓰여져 있기 때문에 수치유체역학의 학습을 위해 좋은 교재로서도 이용 가능하다.

 

  먼저 무엇부터 시작해야 하는가?

 

   위의 글까지 읽고서도 아직까지 하겠다는 의지가 남아있다면 우선, 윈도우나 맥의 가상머신(VirtualBox 나 VMWare 등)에 OpenFOAM이 들어있는 리눅스(DEXCS for OpenFOAM 등)를 설치하는 것이 가볍게 시작할 수 있어서 좋다. 아니면 우분투를 구해서 자신이 OpenFOAM을 인스톨해 보자. 그닥 힘든 것은 아니다.

 

   OpenFOAM의 환경이 준비되었다면, 유저가이드의 튜토리얼을 실행해보는 것부터 시작하는 것이 좋다.

 

   OpenFOAM의 이용 방법

 

   OpenFOAM을 이용하는 방법으로서 다음과 같은 방법이 있다.

 

1. OpenFOAM 이 설치된 시스템을 도입하는 것.

2. 리눅스 시스템을 준비하여 OpenFOAM을 설치하는 것.

3. Docker를 사용하는 것.

4. Windows용을 사용하는 것.

 

   1. OpenFOAM이 설치된 시스템을 도입

 

   리눅스나 OpenFOAM의 셋업 장애가 있는 사람들을 위해 OpenFOAM이 셋업되어 있는 리눅스 환경이 준비되어 있다.

 

가. DEXCS for OpenFOAM

나. CAELinux

다. GeekoCFD

 

   가. DEXCS for OpenFOAM  (DEXCS)

 

   처음엔 덴소사의 사내 교육용 시스템으로서 개발되었던 것으로서, ADVENTURE(솔버의 일종)를 사용했던 시스템이었지만, OpenFOAM판도 등장했다. LiveDVD판으로서 제공되고 있다. 하드디스크에 인스톨하는 것도 가능하다.

 

   나. CAELinux  (CAELinux)

 

   OpenFOAM뿐만이 아니라 다양한 무료(?) CAE 소프트웨어가 인스톨되어져 있는 리눅스 환경이다. LiveDVD.

 

   다. GeekoCFD  (GeekoCFD)

 

   OpenFOAM을 중심으로 CFD 관련 소프트웨어가 인스톨되어 있는 리눅스 환경이다. LiveDVD.

 

 

   2. 리눅스 시스템을 준비하여 OpenFOAM을 인스톨

 

   OpenFOAM은 리눅스용으로 개발되어져 있기에, 리눅스 시스템을 준비하는 것이 최적이다. 리눅스를 도입하는 방법으로서 다음과 같이 해 볼 수 있다.

 

가. 리눅스 전용 시스템을 준비하기

나. 멀티 부팅 환경을 만들기

다. 가상머신을 설치하기

라. CD/DVD기동 리눅스을 사용하기

마. USB 메모리기동의 리눅스를 사용하기

 

   가. 리눅스 전용 시스템을 준비

 

   제일 최적의 방법. 본격적으로 사용하고 싶은 사람에게 추천한다. 시스템을 준비하여 자신이 리눅스를 설치하는 방법과 리눅스가 인스톨되어져 있는 것을 구입하는 방법이 있다.

 

   나. 멀티부팅 환경 만들기

 

   요즘에 출시되는 대기업 매이커가 아니라도 조립식 PC를 준비하자. 하드디스크를 2개로 나누어, 각각에 윈도우즈와 리눅스를 인스톨한다. 이미 사용 중의 PC에 하드디스크를 2개로 나누어 리눅스를 설치하는 것도 가능하지만 실패하면 기존 윈도우환경이 날라가 버리는 수도 있다. 그닥 추천하지 않는 방법이다.

 

   다. 가상머신을 설치

 

   VirtualBox나 VMWare등의 가상머신을 사용하자. 그럭저럭 간편하고 안전한 방법이다. 가상화 자체의 실행부하가 높다는 것이 단점이다. 최근의 가상화 지원기능을 갖춘 메니코어 CPU라면 쾌적하게 사용할 수 있을지도 모른다. SSD로 한다면 더욱 좋다. 또한 리눅스에서 윈두우즈나 맥으로 데이터를 전달하는데에도 자유롭다. 필자로서는 리눅스 전용 시스템을 준비하지 못한다면 이 방법이 최적이라고 생각한다. 적극 추천.

 

   라. CD/DVD기동 리눅스 사용

 

   실험용. DVD 드라이버에 넣어 기동하면 리눅스가 올라온다. LiveCD/LiveDVD라고 불리고 있는데, 기동만 되면 하드디스크에 데이터를 넘길 수도 있다. 데이터 보존용USB와 함께 사용한다면 자신만의 전용 리눅스 환경을 들도 다닐 수 있다.

 

   마. USB 메모리 기동의 리눅스 사용

 

   USB 메모리에 리눅스를 넣어서 사용한다. USB 로 기동이 가능한 PC에 USB 메모리는 넣고 기동하면 리눅스가 올라온다. LiveCD/LiveDVD를 USB에 실현한 것인데, CD/DVD와는 달리데이터의 저장이 가능하다. 파일시스템(FAT32)의 관계로 용량의 제한이 있다.(최대 4GB)

 

   바. 배포

 

   리눅스에는 Red Hat, openSUSE, Ubuntu 등 다양한 배포판이 있다. 기본적으로 아무것이나 상관없다. 다만, OpenFOAM과의 궁합이 좋다 안좋다가 있다. 최근에는 우분토용에 OpenFOAM의 바이너리 패키지가 배표되어 있어, 우분투가 무난할지도 모른다. 지난 버전이란다면 우분투 이외에도 openSUSE, Red Hat Enterprise Linux, Fedora 용의 바이너리가 있다.

 

   사. 문제점

 

   리눅스의 인스톨은 배포판과 PC간의 궁합이 차차로 순조롭게 될 것이다만, 심히 고생할 수도 있다. 또, OpenFOAM의 셋업에 관해서도, 문제없이 완료되는가 어떤가는 배포판과의 궁합에 따른다. 문제 해결을 위해 리눅스의 지식이나 프로그래밍 지식이 요구될 때가 있다. 이래저래 리눅스의 사용과 관리 자체에 장애가 높을 수 있다.

 

 

   3. Docker를 사용

 

   Docker라는 것은 컨테이너형 가상화 기술의 하나로서, VirtualBox와 같은 가상화에 비해 동작이 가벼운것이 특징이다. OpenCFD사가 내놓은 OpenFOAM+가 Docker 컨테이너로서 제공되고 있다.

 

 

   Linux/Windows/Mac OS X 어느 쪽이든 작동한다. 컨테이너의 내부는 리눅스라서, 원리적으로는 기능을 모두 사용할 수 있는 것이지만, 윈도우즈판은 POST를 컨테이너에서 기동하는 것이 불가능하여, 조금 불편하다. 컨테이터의 기동시간을 제거하면, 솔버의 실행 속도는 윈도우즈용으로 컴파일된 바이너리보다 빠른 것 같다.

 

   마음에 든다면, Docker를 사용하여 자신만의 OpenFOAM 환경을 구축하는 것이 가능하다. SSH/X11을 사용하면 윈도우즈에도 컨테이너로부터 POST를 기동하는 것이 가능하다. 단, 환경 구축이 제법 귀찮다. 흠.

 

   4. 윈도우즈판 사용

 

   원래는 리눅스용의 OpenFOAM이지만 윈도우즈판도 있기는 하다.

 

  • simFlow engine (OpenFOAM for Windows)
  • OpenFOAM for Windows (CFD support)
  • Caelus

 

   이전 버전

 

  • OpenFOAM extensions
  • OpenFOAM for MS windows binary release
  • OpenFOAM 1.6 binary for win32
  • OpenFOAM 1.7.0 for Win32
  • OpenFOAM 2.1.x for Win64
  • OpenFlow
  • blueCFD

 

   가. simFlow engine ( OpenFOAM for Windows)  (simFlow)

 

   Version 2.3.0, 2.3.1의 Windows 바이너리를 제공. 패치도 제공되고 있다.

 

   나. OpenFOAM for Windows (CFD support)

 

   Version 2.3.x의 윈도우즈 바이너리를 제공

 

  다. Caelus  (Caelus (Applied CCM))

 

   OpenFOAM의 fork과 같음. 윈도우즈의 바이너리를 제공.

 

 

   관련 프로젝트

 

   OpenFOAM에 관련된 프로젝트가 있다.

 

  • OpenFOAM extensions
  • PyFoam
  • swak4Foam
  • Helyx-OS

 

   1. OpenFOAM extensions (OpenFOAM extensions)

 

   OpenFOAM의 확장판, Git 혹은 SVN을 사용하여 구할 수 있다.

 

 

 

http://www.geocities.jp/penguinitis2002/study/OpenFOAM/OpenFOAM-info.html

profile
번호
 
닉네임 조회 등록일
19 Qt 빌딩스케치 개요 및 설치하는 법 파일
이노빠빠
2542 2017-02-09
Selected OpenFOAM OpenFOAM 에 대하여
이노빠빠
1907 2016-04-27
17 FreeCAD FreeCAD에서 Python 사용하기 파일
이노빠빠
7284 2013-06-11
16 SALOME-MECA piston 구조해석 파일
이노빠빠
4707 2013-05-23
15 FreeCAD 모델링 데이터 변환하기(STL, IGES, STEP) 파일 (1)
이노빠빠
6983 2013-04-20
14 FreeCAD 모델링 예제 5 파일 [1]
이노빠빠
5070 2013-03-12
13 FreeCAD 모델링 예제 4 파일
이노빠빠
5492 2013-01-28
12 FreeCAD 모델링 예제 3 파일 [1]
이노빠빠
6209 2012-12-27
11 Qt ERROR : undefined reference to vtable for <Class Name> (1)
이노빠빠
4272 2012-12-26
10 FreeCAD 모델링 예제 2 파일 [1]
이노빠빠
6439 2012-11-30
9 FreeCAD 모델링 예제 1 파일 [1]
이노빠빠
7510 2012-10-23
8 FreeCAD 환경설정 파일
이노빠빠
5275 2012-10-06
7 FreeCAD Mode 및 기본 동작 파일
이노빠빠
9222 2012-09-19
6 FreeCAD FreeCAD 구성 (2) 파일
이노빠빠
6105 2012-09-12
5 FreeCAD FreeCAD 구성 (1)
이노빠빠
10155 2012-08-26
4 FreeCAD FreeCAD 인스톨 하기 파일 (9)
이노빠빠
17785 2012-08-22
3 Qt 한글 깨짐 현상 잡기
이노빠빠
10983 2012-03-07
2 안드로이드 이클립스에 안드로이드폰 연결하기 파일
이노빠빠
8049 2011-12-01
1 Qt Win32 Qt SDK 4.7.0 설치하기
이노빠빠
5016 2011-04-29
Tag List

to top