OpenFOAM
OpenFOAM(Open source Field Operation And Manipulation)は、
数値解析開発、特に
数値流体力学(CFD)を含む連続体力学の分野で利用される、
C++製のオープンソース・ツールボックスです。
GNU General Public Licenseの下で公開されており、その柔軟性と拡張性から、研究機関や産業界で幅広く利用されています。2007年にOpenCFD Ltdが名称を登録し、2011年からはOpenFOAM財団が非独占的な権利を保有しています。
特徴
文法
OpenFOAMの大きな特徴の一つは、
テンソル解析や
偏微分方程式に類似した文法を採用している点です。これにより、物理現象を記述する方程式を、コード上で直感的に表現できます。例えば、以下のような方程式があるとします。
∂
ρ
U
∂
t
+
∇
⋅
ϕ
U
−
∇
⋅
μ
∇
U
=
−
∇
p
{\displaystyle {rac {\partial \rho \mathbf {U} }{\partial t}}+
abla \cdot \phi \mathbf {U} -
abla \cdot \mu
abla \mathbf {U} =-
abla p}
この方程式は、OpenFOAMでは以下のようなコードで表現されます。
c++
fvm.ddt(rho, U) + fvc::div(phi, U) - fvc::laplacian(mu, U) == -fvc::grad(p);
オブジェクト指向プログラミングと利用者定義演算子の組み合わせにより、ユーザーは比較的容易にカスタムソルバーを開発できます。しかし、OpenFOAMのライブラリは仕様書が不足している部分があり、テンプレートメタプログラミングが多用されているため、ライブラリを深く理解し使いこなすには高度な知識が必要です。
拡張性
OpenFOAMは、境界条件や乱流モデルなどを修正する際に、既存のソースコードを直接修正・コンパイルする代わりに、ソルバー内で変更を加える方法を提供します。これは、基本インタフェースとFactory Methodパターンの組み合わせであるrun-time selectionによって実現されています。この仕組みにより、柔軟なカスタマイズが可能となり、様々な物理現象への対応が容易になります。
標準ソルバー
OpenFOAMには、流体計算を中心とした多数のソルバーがあらかじめ用意されています。これらのソルバーを使用することで、以下のような解析を比較的容易に行うことができます。
ポテンシャル流れの計算
移流拡散方程式の計算
非圧縮性・圧縮性の熱流体解析(DNS、RANS、LES)
多相流解析
電磁流体解析
燃焼解析
粒子追跡計算
分子動力学計算
応力計算
ブラック-ショールズ方程式の計算
さらに、計算格子を生成するためのメッシャーや、計算結果を可視化するための前後処理ユーティリティも提供されており、プログラミングの知識がなくても、ある程度の計算と結果の可視化が可能です。
OpenFOAMは、その強力な機能と柔軟性により、様々な分野の研究者やエンジニアにとって、非常に有用なツールとなっています。
学習リソース
OpenFOAMを学ぶための書籍も多数出版されています。
オープンCAE学会(編):「OpenFOAMによる熱移動と流れの数値解析」
Tomislav Marić、Jens Höpken、Kyle Mooney:「OpenFOAMプログラミング」
人見大輔:「OpenFOAMライブラリリファレンス」
川畑 真一:「OpenFOAMの歩き方」
野村 悦治:「オープンCAEのためのDEXCS for OpenFOAMハンドブック」
小南 秀彰:「はじめよう DEXCS OpenFOAM」
これらの書籍は、OpenFOAMの基礎から応用まで、幅広い知識を提供してくれます。