OpenFOAMとは?(その2)

OpenFOAMは自作PC&無料

 コンピュータプログラムというと、1つの完成したコード(プログラム)が公開されているようにイメージしますが、OpenFOAMは、様々な解析機能を持った計算ライブラリ群の総称です。
 市販のプログラムは、すべての機能が1つのプログラムに入っていて、使いたい機能によってそのルーチンを通るか、通らないかが決まります。 一方で、OpenFOAMの場合は、使いたい機能のルーチン(ライブラリ)を探し出し、それらを結合させて1つのプログラムコードに作り上げます。そのため、一部のサンプルプログラムを除き、計算用のプログラムは自身で構築しなければなりません。
 パソコンに例えるなら、市販プログラムはコンピュータメーカーの完成品で、OpenFOAMはパソコンのパーツを買い集め、自分にとって必要十分な性能のものを組み立てるイメージです。そしてOpenFOAMの世界では、そのパーツは無料で手に入ります。

市販汎用ソフトウェアとOpenFOAMの違いを自作PCでイメージ

完成品PC
(汎用ソフトウェア)
自作PC
(OpenFOAM)
動作保証あり初期不良のみ
組立時の保証なし
すぐに使える組み立てる時間が必要
ハードウェアの知識は不要ハードウェアの知識が必要
ある機能だけ高性能にしにくい
オーバースペックになる
必要十分なスペックを作れる
将来パーツの追加変更が困難将来パーツの追加変更が容易

OpenFOAMの主なCFD機能

一般計算圧縮性、非圧縮性、定常、非定常
格子移動格子、AMR(格子自動細分化)、AMI(Arbitary Mesh Interface)
格子作成blockMesh(六面体格子作成)、snappyHexMesh(STL形状対応)
乱流モデルRANS(15種類以上)、LES(18種類以上)
多相流オイラー法、VOF法、二、三相流、表面膜、ラグランジュ粒子
熱計算一般熱対流、輻射、流体個体間共役熱
化学反応素反応(CHEMKIN、JANAF)、化学熱分解、予混合、粒子燃焼
並列計算OpenMPI、HPMPI、MPICH、IntelMPI(数千CPI規模対応)
ポスト処理可視化paraview、並列ポストツールsample等

特長1:数多くのインターフェース

 数多くの格子要素が利用できるOpenFOAMでは、市販のメッシャー(ICEM, STAR-CD, Pointwise等)で作成された格子を読み込むことができます。
 計算結果はParaView以外にも、FieldView, FLUENT, EnSight, Tecplotなど、様々な形式に出力することができます。

特長2:並列処理機能

 近年の熱流体解析は規模が大きく、数億から十数億規模の計算に耐えられる必要があります。 OpenFOAMはメッシュなどのプリプロセス、計算、および結果出力までの全工程で並列処理が可能です。
 OpenFOAMは「京」をはじめ、東京大学「T2K」、東京工業大学「TSUBAME」など、様々なスーパーコンピュータでも運用され、多くの大規模計算の実績があります。
 また、ライセンスによる並列数などの制限が無いため、コンピュータハードウェアのスペックが許す限り、大規模並列の計算が可能です。

特長3:カスタマイズ性

 OpenFOAMはオブジェクト指向のプログラム言語であるC++で書かれています。また、1つの大きなプログラムではなく、ライブラリ群としてモジュール化されているため、ソースコードを理解しやすく、カスタマイズ性に優れていいます。
 業務内容が変化したり、プロジェクトにより新たな機能が必要な場合にも、すでに構築したOpenFOAMのプログラムに追加して必要機能を増やすことができます。