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のプログラムに追加して必要機能を増やすことができます。