最新版のOpenFOAM(2.3.x)の標準チュートリアルの全ケースを実行した結果の中から、計算時間が前ヴァージョン(2.2.x)と大きく違ったケースについて検証した結果の第1弾です。
ぱっと見のアニメーションでは、結果もあまり違わないようですが・・・
foamSolverSweeps
OpenFOAMの標準ツールとして、foamSolverSweeps があります。これを使ってログファイルを解析することができます。以下の赤字部分をコマンド入力。
$ foamSolverSweeps
timeFile=/tmp/FOAM_iters.time
runTimeFile=/tmp/FOAM_iters.rtime
piterFile=/tmp/FOAM_iters.piters
uiterFile=/tmp/FOAM_iters.uitersName of log file (LOG) : log.multiphaseEulerFoam
Program:
Runtime:
1st iter : ExecutionTime = 0.59 s
overall : ExecutionTime = 18133.2 sSimulation:
steps: 32719
from : Time = 0.00111111
to : Time = 6Solver sweeps:
p : 377008
U(U0,U1,U2) : 0
青字部分の数字を転記、同様に2.2.xの結果についても以下の表にとりまとめました。
これによると、2.3.xで計算時間が増加したのは、単にステップ数が増加、圧力方程式の適用回数もほぼ比例して増えた結果としての数字にすぎないことがわかります。
このケースの場合、systemファイル(controlDict,fvSchemes,fvSolution)も、onstant(transportProperties, etc)も、両者とも全く同一でした。では何故ステップ数が増えたのかというと、controlDict中で、adjustTimeStep(クーラン数に応じた自動時間進行)が”yes”の設定になっており、新ヴァージョンでは結果としての時間刻みが細かくなっているということです。
以上のことから、改めてアニメーションを比較してみると・・・新ヴァージョンでは、飛び散った液滴が空中で永く生き残っており、これを解像するのに時間刻みが細かくなっていた。つまり、計算時間は長くなったけど空間分解能(精度?)は向上した・・・のかもしれませんね。