ユーザーガイド 1.5系 - 6.6 ジョブのモニタと管理

出典: OFWikiJa

[next] [prev] [up]

[編集] 6.6 ジョブのモニタと管理

本節では、まず正しく実行されたOpenFOAMのジョブについて言及し、3.3節で説明したソルバーの基本的な実行についてまで述べます。 $WM_PROJECT_DIR/etc/controlDictファイルのDebugSwitchesの、levelデバッグスイッチが1または2(デフォルト)であったなら、ソルバーの実行時に方程式の解の状態を標準出力、例えばスクリーンに出力します。以下ではcavityチュートリアルを解く際の出力の冒頭部分を例として挙げています。ここから解かれる各々の方程式について、レポート行に、ソルバー名、解かれる変数、その初期と最終の残差、そして反復回数が書かれていることが読み取れます。

    Starting time loop

Time = 0.005

Max Courant Number = 0
BICCG: Solving for Ux, Initial residual = 1, Final residual = 2.96338e-06, No Iterations 8
ICCG: Solving for p, Initial residual = 1, Final residual = 4.9336e-07, No Iterations 35
time step continuity errors : sum local = 3.29376e-09, global = -6.41065e-20, cumulative = -6.41065e-20
ICCG: Solving for p, Initial residual = 0.47484, Final residual = 5.41068e-07, No Iterations 34
time step continuity errors : sum local = 6.60947e-09, global = -6.22619e-19, cumulative = -6.86725e-19
ExecutionTime = 0.14 s

Time = 0.01

Max Courant Number = 0.585722
BICCG: Solving for Ux, Initial residual = 0.148584, Final residual = 7.15711e-06, No Iterations 6
BICCG: Solving for Uy, Initial residual = 0.256618, Final residual = 8.94127e-06, No Iterations 6
ICCG: Solving for p, Initial residual = 0.37146, Final residual = 6.67464e-07, No Iterations 33
time step continuity errors : sum local = 6.34431e-09, global = 1.20603e-19, cumulative = -5.66122e-19
ICCG: Solving for p, Initial residual = 0.271556, Final residual = 3.69316e-07, No Iterations 33
time step continuity errors : sum local = 3.96176e-09, global = 6.9814e-20, cumulative = -4.96308e-19
ExecutionTime = 0.16 s

Time = 0.015

Max Courant Number = 0.758267
BICCG: Solving for Ux, Initial residual = 0.0448679, Final residual = 2.42301e-06, No Iterations 6
BICCG: Solving for Uy, Initial residual = 0.0782042, Final residual = 1.47009e-06, No Iterations 7
ICCG: Solving for p, Initial residual = 0.107474, Final residual = 4.8362e-07, No Iterations 32
time step continuity errors : sum local = 3.99028e-09, global = -5.69762e-19, cumulative = -1.06607e-18
ICCG: Solving for p, Initial residual = 0.0806771, Final residual = 9.47171e-07, No Iterations 31
time step continuity errors : sum local = 7.92176e-09, global = 1.07533e-19, cumulative = -9.58537e-19
ExecutionTime = 0.19 s

[編集] 6.6.1 計算実行用のfoamJobスクリプト

残差や反復回数、Courant数などがレポートデータとしてスクリーンを横切るのをモニターすれば満足でしょう。 代わりに、レポートをログファイルにリダイレクトすることで計算速度を向上させることもできます。 このためにfoamJobスクリプトは、便利なオプションを提供しています。 <solver>を指定して実行することで、計算がバックグラウンドで実行され、出力をlogという名前のファイルに記録します。

foamJob <solver> 

その他のオプションは、foamJob -h を実行することで見ることができます。 logファイルは、UNIXtailコマンドを用いることで見たいときに見ることができます。一般的には、"follow"を意味する-fオプションを 一緒に用いることでlogファイルに新しいデータが記録されるのを捉えることができます。

tail -f log

[編集] 6.6.2 計算モニター用のfoamLogスクリプト

logファイルを読むことで、ジョブをモニターするには、限界があります。 特に、長い期間に渡って、傾向を抽出するのは困難です。したがって、foamLogスクリプトによって残差や反復回数、Courant数のデータを抽出し、グラフにプロットできるように一連のファイルとして出力することができます。スクリプトは次のように実行します。

foamLog <logFile>  


ファイルは、ケースディレクトリのlogsという名前のサブディレクトリの中に保存されます。 各々のファイルは、<var>_<subIter>という名前が付けられます。ここで、<var>は、ログファイルの中で指定される変数の名前で、<subIter>は、タイムステップの繰り返し回数です。 解かれる変数である、初期残差は、変数名をとり<var>、最終残差は<var>FinalResという名前をとります。 デフォルトでは、ファイルは、時間と抽出された値という2列のフォーマットで表されます。

例として、cavityチュートリアルでは、解が定常状態に収束するのかを見るために、観察したいのはUx方程式の初期残差です。 この場合、logs/Ux_0ファイルからデータを取り出し、図6.5のようにプロットします。 ここでは、残差は単調に収束許容値構文解析失敗 (texvcプログラムが見つかりません。math/READMEを読んで正しく設定してください。): 10^{-5} まで減少しているが読み取れます。


foamLogは、logファイルから、うまくそれができるようにファイルを作成する。 cavityチュートリアルの例では次のファイルがあります。

  • Courant数、Courant_0
  • Ux方程式の初期と最終の残差である、Ux_0UxFinalRes_0、そして反復回数のUxIters_0(そしてこれと同等のUyデータ)
  • 累積、全体そしてローカルの連続誤差。これは、p方程式毎に出す。contCumulative_0, contGlobal_0, contLocal_0contCumulative_1, contGlobal_1, contLocal_1
  • p方程式から、残差と反復回数p_0, pFinalRes_0, pIters_0, p_1, pFinalRes_1, pIters_1
  • 実行時間 executionTime

図6.5 cavityチュートリアルにおけるUxの初期残差

[next] [prev] [up]