====== Tutorial ======
動作確認済み:v8
===== Dam Break (Serial) =====
OpenFOAM実行用のディレクトリを作成.
mkdir -p $FOAM_RUN
$ run
$ cp -r $FOAM_TUTORIALS/multiphase/interFoam/laminar/damBreak/damBreak ./
$ cd damBreak
$ blockMesh
$ setFields
$ interFoam | tee log
$ paraFoam
Thirdpatryに付属するParaViewをビルドには時間がかかるため,あらかじめ用意したバイナリのParaViewで可視化できる.
ParaViewでは*.foamの形式でOpenFOAMの結果を読み込むことができる.
$ touch result.foam
$ paraview result.foam
{{:openfoam:result_dam_break_serial.png?400 |}}
===== Dam Break (Parallel) =====
[[tutorial#Dam Break (Serial)|Dam Break (Serial)]]を並列実行用にコピーする.
$ foamCloneCase damBreak damBreakFine
[[tutorial#Dam Break (Serial)|Dam Break (Serial)]]で実行したモデルのメッシュ分割数を変更ため,system/blockMeshDictを以下のように編集.
blocks
(
hex (0 1 5 4 12 13 17 16) (46 10 1) simpleGrading (1 1 1)
hex (2 3 7 6 14 15 19 18) (40 10 1) simpleGrading (1 1 1)
hex (4 5 9 8 16 17 21 20) (46 76 1) simpleGrading (1 2 1)
hex (5 6 10 9 17 18 22 21) (4 76 1) simpleGrading (1 2 1)
hex (6 7 11 10 18 19 23 22) (40 76 1) simpleGrading (1 2 1)
);
領域分割で割り当てられたプロセスを可視化するため,system/controlDictの末尾に以下を記述.
libs
(
"libfieldFunctionObjects.so"
);
functions
{
func
{
type processorField;
outputControl outputTime;
outputInterval 1;
}
}
実行.
$ rm 0/alpha.water
$ blockMesh
$ setFields
$ decomposePar
$ mpirun -np 4 interFoam -parallel > log &
$ reconstructPar
結果を確認.
$ paraFoam
{{:openfoam:result_dam_break_parallel_procs.png?400 |}}
{{:openfoam:result_dam_break_parallel_water.png?400 |}}
===== Dam Break (Parallel and Scotch) =====
$ foamCloneCase damBreakFine/ damBreakFineScotch
system/decomposeParDictの領域分割方法を'scotch'に変更する.
- method simple;
+ method scotch;
残りの手順は[[tutorial#Dam Break (Parallel)|Dam Break (Parallel)]]と同様である.
{{:openfoam:result_dam_break_parallel_scotch_procs.png?400 |}}
{{:openfoam:result_dam_break_parallel_scotch_water.png?400 |}}