OpenFOAM の全体設定

2018年12月7日

はじめに

OpenFOAM の全体設定について。

使用バージョン

OpenFOAM 6.x

OpenFOAM の全体設定

OpenFOAM の全体設定は $WM_PROJECT_DIR/etc にある。ほとんどはシステムの設定であるが、その中で controlDict にはユーザーが変更する可能性のある設定が含まれている。

OpenFOAM のシステムを他のユーザーと共有している場合、上記の controlDict を直接修正すると他のユーザーにも影響してしまうため、ユーザー個別に設定できるようにもなっている。そのためには ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict を用意すればよい。

$ mkdir -p ~/.OpenFOAM/$WM_PROJECT_VERSION
$ cp $WM_PROJECT_DIR/etc/controlDict ~/.OpenFOAM/$WM_PROJECT_VERSION

設定

allowSystemOperations

InfoSwitches の allowSystemOperations は、実行時コンパイルが必要な設定を使用するときに必要になる。

    allowSystemOperations    1;

OpenFOAM 2.3.1 から allowSystemOperations の値ははデフォルトで 1 になっている。

writeNowSignal, stopAtWriteNowSignal

OptimisationSwitches の writeNowSignal, stopAtWriteNowSignal を設定しておくと、シグナルを送ることで結果を書き出させたり計算を中断させたりできる。

    writeNowSignal              10;
    stopAtWrtieNowSignal         2;

設定している数字はシグナルの番号である。10 はユーザー定義シグナル SIGUSR1、2 は Ctrl-C で発行される SIGINT である。

たとえば、simpleFoam を実行する。

$ simpleFoam > log &
[1] 3878

2 行目に表示されるふたつめの数字はプロセス ID である。

結果を書き出させるためには、つぎのようにする。

$ kill -10 3878

"-10" でシグナルの番号を指定、そのあとにプロセス ID を指定する。その時点での結果が書き出され、計算は継続する。

計算を中断するには、つぎのようにする。

$ kill -2 3878

その時点での結果が書き出され、計算が停止する。フォアグラウンドで計算した場合、ふつうは Ctrl-C でただちに計算が止まるが、上記設定があると結果が保存されてから計算が止まる。

結果の保存なしにただちに計算を止めてしまうには、シグナルを指定せずに kill を実行する。

$ kill 3878

fileModificationSkew

ソルバー計算中、system/controlDict の stopAt を "WriteNow" に設定すると、結果を保存して計算が止まるはずなのだが、なかなか止まらないことがある。controlDict の更新を検出できていないものと思われる。その場合は、OptimisationSwitches の fileModificationSkew の値を小さくするとうまくいくかもしれない。

writeUnits

DimensionSets の writeUnits を設定しておくと、計算結果のフィールドファイルの単位にシンボルによる表示形式が使われる。たとえば、速度 U [m/s] であれば単位がつぎのように出力される。

dimensions      [m s^-1];