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