OpenFOAMのドキュメント

OpenFOAMのドキュメント

OpenFOAMのドキュメント

※ OpenFOAM:世界中の有志によって開発されたオープンソースCFD(数値流体力学)ソフトウェア。オープンソースLinux同様、GNU General Public Licenseに準拠したフリーソフトで、ユーザはOpenFOAM財団から無料ダウンロードして使用・改変・商利用できる。ドキュメントは未整備。





OpenFOAMは使用するのが難しいとしばしば言われます。その理由を以下に解説したいと思います。

OpenFOAMはC++言語で書かれていて、オブジェクト指向のコーディングスタイルが採用されています。これがOpenFOAM の使用を難しくしている1つ目の理由です。

ただし、オブジェクト指向のコーディングスタイルにはメリットもあります。

自動車部品メーカーが開発したパーツのデザインや性能がメーカー純正品や他社のものより優れていることはパーツの売れ行きを左右する重要なポイントですが、同時に、パーツは自動車本体に容易に取り付けられるように設計されている必要があります。パーツの取り付けについて、部品メーカーは自社製品を取り付ける部分の形状や寸法さえ知っていれば十分で、車の全体構造を詳しく知る必要はありません。オブジェクト指向のコーディングスタイルは、これと同じ仕組みをプログラミングの世界に提供するものです。OpenFOAMに新しい物性モデルのような互換機能を追加する場合、定められた接続方法を守ってソフトウェアを開発すればよく、互換機能を容易に作成できます。これがオブジェクト指向のコーディングスタイルの大きなメリットです。

OpenFOAMはオブジェクト指向のプログラムがむき出しになっていて、例えるなら、操縦席のない飛行機のようなものです。このため、入力データの作成にはある程度のオブジェクト指向プログラミングの知識が必要です。これが、OpenFOAMは使うのが難しいと言われる理由です。裏を返せば、OpenFOAMが新しい設計でつくられた計算ソフトであることを表しています。どのようなものであれ、はじめて使うものは難しく感じるものですし、使いこなすには慣れ(経験)も必要です。 OpenFOAM自体は、適切な情報があれば他の計算ソフトより難しいということはありません。

先ほど、OpenFOAMは互換機能の作成が容易であると述べましたが、これは、互換機能の作成があらかじめ想定される部品的な機能について言えることで、この範囲外の機能を作成する場合には極端に難しくなります。これは、OpenFOAMの内部構造に関する情報が入手しにくいことと、オブジェクト指向の特徴(カプセル化、隠ぺい:間違った改変とバグ混入を防ぐ機能)の副作用で全体が把握しにくい構造になっていることが原因です。

OpenFOAMは多数の“クラス”(オブジェクト、部品の型)で構成されていて、クラスの規模もさまざまです。 ”クラスの定義は1つのファイルに書く” というオブジェクト指向のコーディングスタイルは、さまざまなクラスをその内容にしたがって整理するのに役立ちますが、その一方で、コードの全体像を把握しにくいものにしています。doxygen(https://cpp.openfoam.org/v6/)というドキュメント生成ツールを用いてクラスの継承関係やメンバーを表示したり、ブラウザ上でコードを読むことができますが、万全ではありません。

OpenFOAMは簡単なガイド類を除いて、文書類がありません。クラスの階層やメンバーに関する文書がないだけでなく、支配方程式や解法に関する文書類も存在せず、これがOpenFOAMを難しくしている2つ目の理由です。OpenFOAMの普及を促進するには、クラス階層やメンバー、実装されている解法などが理解できる文書類の整備が待たれます。



関連記事/関連ページ

OpenFOAM カスタマイズ