OpenFOAM

OpenFOAM ソースコードの探し方

OpenFOAMはオープンソース

OpenFOAMはマニュアル等がないわけではないが、機能の使い方を網羅しているドキュメントはない。場合のよっては処理内容を知るためにソースコードを読んだ方が早い場合がある。
今回はソースコードの探し方についてのメモ。

ソースコードの場所

OpenFOAMが実行可能な状態で以下コマンドを実行。

境界条件、乱流モデルのソースの場所
$ echo $FOAM_SRC
ソルバのソースの場所
$ echo $FOAM_SOLVERS
ユーティリティのソースの場所
$ echo $FOAM_UTILITIES

検索してみる

場所が分かってもたくさんあるソースコードをひとつづつ探すと手間だし、めんどくさい。
なのでfindとgrepを使って検索する。

例えば乱流モデルのk-ωモデルに関するソースコードは以下のようにして探す。

$ find $FOAM_SRC | grep "kOmega"

inletOutetの境界条件のソースを探すときは次のような形で探す。

$ find $FOAM_SRC | grep "inletOutlet"

simpleFoamソルバのソースは以下のように探す。

$ find $FOAM_SOLVERS | grep "simpleFoam"

ユーティリティmapFieldsのソースは以下のように探す。

$ find $FOAM_UTILITIES | grep "mapFields"

それぞれ実行するとgrepで指定したキーワードの付いたファイルパスのリストが帰ってくる。
OpenFOAMではケースフォルダのインプットファイルで指定する各項目の名前がファイル名になっていることが多いため、似た名称のファイルを調査する。
特に、.H、.Cのファイルを読むようにする。

拡張子を絞って検索するには次のようにすればよい。

$ find $FOAM_UTILITIES -name *.C | grep "ideasUnvToFoam"

まとめ

OpenFOAMはオープンソースなので、ソースコードもドキュメントである。ネットで出てこない情報はソースコードを見た方が早いこともあるので、検索の方法は知っておくと便利だと思う。
特にカスタマイズをするときは類似のコードをベースにした方が早いし、参考になる。