[Re:12] Reboot : ゼロから始める OpenFOAM @ windows ザ・円柱 その5(並列計算もやってみた後編)
1 CPU 計算を続ける傍らで、ノートPCで並列計算を行っています。現是、双方とも計算は進んでいますが、ノートPCはいろいろと動かすことと、普通に計算中でも使えてしまうことから、いらぬ操作をしてしまうリスクがあります。
並列計算がとりあえず動いたので、作業記録にいろいろ操作しているとき、Linux コンソールターミナルで実行のシェルのメッセージを、マウスをつかわずにディスプレイタッチパネルで範囲選択してコピーすると、なぜか端末のジョブが止まりました。
う、、、、
でもまぁ、止まったところで最新データーから計算再開すればよいことです。でも。
そもそも途中再開すると、おなじけいさんけっかがえられるものなのでしょうか。
今回は、空間制度の長さで流体粒子が移動しているかどうかのパラメーター、クーラン数の操作も入ってますし、計算の書き出しステップも毎5ステップです。計算スキームが、単一時間ステップ内で収まっていればよいですが、前時間のデーターを参照していると差異が生じそうです。その場合は、最悪は時間ステップが飛ぶことによって誤差が大きくなってしまいそうです。
とまぁ、考えるときりがないので、それは追々調べる宿題として、当面は前に進む。
途中再開を指示する行は、system フォルダーにある controlDict ファイルにあります。
controlDict ファイルの中身(ただし、非並列計算のもの)
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
application pimpleFoam;
startFrom startTime; ◀◀◀◀
startTime 0;
stopAt endTime;
endTime 200;
deltaT 0.002;
adjustTimeStep no;
maxCo 0.9;
writeControl timeStep;
writeInterval 1;
purgeWrite 0;
writeFormat ascii;
writePrecision 6; ◁◁◁◁
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
functions
{
#includeFunc residuals(U,p,k,epsilon);
#includeFunc vorticity;
}
いつかどこかで見たファイルの中身です。
staryFrom
上の書式の ◀◀◀◀ の部分のパラメーターは、次行で定義されている “starttime”、計算された最も新しい時刻を使用する “latestTime”、のほかに、firstTime があり、これは存在する時刻データーの最も若い時刻から開始する、というもの。
writePrecision(◁◁◁◁の部分)
ついでに発見できましたが、先のお話に出てきた、出力がアスキーファイルの時に、計算制度を高める方法はないのか、というやつです。出力ファイルがアスキーの時のみ有効で、ここで桁数を 6 からより大きなものに変更指定できるようです。これでアスキー出力で並列化が出来ます。というか、なぜ、並列化の時に精度の問題が出たのかは不明のままです。
さて、設定ファイル上は準備が出来たのですが、本来計算が途中で止まっただけなので、モデルのメッシュ生成その他のややこしい作業は不要、どちらかというと実行してはいけないような気がします。
答えからいけば、おそらくですが、ここは、
pimpleform
と打って、実行するだけでよかったのではないかとおもいます。多分すべてのソルバーは起動後にまず controlDict ファイルを見に行くようです。
実際は、調べてそのことを確認する前に、あるいは、ソルバーの実行は当初に単純に、sinpleform のみを実行するだけだったことを忘却していました。そのため、つい、誘われるように Allrun を実行してしまいました。Allclesn があるんだから、最悪でもエラーでこけるだけではないだろうか。これまでも、Allclean をせずに Allrun を実行したときもエラーで動かなかったし、と考えた次第です。また、controlDict にソルバー名も書いてあったから、バッチファイルがなんか判断するのかも、ともおいました。しかし、controlDict のソルバー名記載はあんまり意味がなかったようです。また、バッチも、エラーがあっても順次指定ユーティリティコマンドを実行していくだけなのかもしれません。夜分並列化するときに、フォルダをすっきり書き換えようとしたのかもしれません。CPUの連番フォルダの中身がすっきりきれいに空っぽでした。次回挑戦するときはもう少し工夫して挑戦してみます。
というわけで、せっかく一晩計算した結果は割といい感じで進んでいたけども、一旦すべて露と消えてしましました。計算の継続実行の時にはご注意ください。
※ 本文とは直接は関係ないです。