************************************************** 再開始計算と中断方法 ************************************************** .. _sec-restart: 再開始計算 ================================================== PHITSを実行して得られたタリー結果の統計量が足りない場合に、その結果を読 み込んで、続き計算(再開始計算)を行うことが可能です。 **[parameters]** セクションにおいて、 **istdev** <0とすることで、再開始計算を実行できます。 その際の統計誤差計算モードは、過去のタリー結果を踏襲します。 再開始計算は、各タリー別に行いますので、過去のインプットファイルに新たにタリーを加えた再開始計算も可能です。 再開始計算の流れは、以下のようになります。 #. 各タリーの **resfile** (デフォルトは **file** で指定した出力ファイル名と同じ)で指定したファイルの有無をチェックする。 #. ファイルが存在しない場合は、そのタリーは新規タリーとして扱う。全てのファイルが存在しない場合は、 **istdev** =-2の場合はヒストリー分散、 **istdev** =-1の場合はバッチ分散モードとして新規計算を開始する。 #. ファイルが存在する場合は、そのファイルから統計誤差計算モード( **istdev** )、これまでの全ウェイト数( **resc2** )や全ヒストリー数( **resc3** )、バッチ当たりのヒストリー数( **maxcas** 、バッチ分散モードのみ必要)、次の初期乱数シード( **rijklst** )、タリーパラメータ、結果及び相対誤差などを読み込む。 #. 過去のタリーと入力ファイルで指定したタリーの一致性を確認する(一致しない場合はエラーメッセージを出力して実行停止。ただし、全てのパラメータをチェックするわけではないので注意)。 #. 過去のタリーが複数ある場合、それらの間での統計誤差モードや **maxcas** (バッチ分散モードのみ)の一致性を確認する。一致した場合は、その値を再開始計算で利用する。一致しない場合は、エラーメッセージを出力して実行停止する。 #. 初期乱数シードを一番目に読み込んだ過去タリーの **rijklst** に変更。( **rijklst** が過去タリー間で異なる場合は、警告を出力するが計算は可能) #. 再開始計算を実行し、その結果を過去のタリー結果に加えて **file** で指定したファイルに出力する。 **resfile** を指定しない場合、出力ファイル( **file** )と過去タリーファイル( **resfile** )が同じであるため、過去の結果に新しい結果を上書きして出力する。 再開始計算を行う際の注意点としては、[1]統計誤差計算モードの違うタリー同士 で再開始計算をしないこと、[2]バッチ分散の場合は必ず **maxcas** を統一するこ と、[3]ジオメトリや入射粒子に関しては新旧ファイルの一致性を確認しないの で、ユーザーの責任で必ず一致させること、などがあります。 計算の中断 ================================================== プログラムを実行すると、カレントディレクトリに ``batch.out`` [#]_ というファイルが作られます。 そのファイルにはひとつのバッチが終了する毎に、(メモリ分散型並列の場合に はバッチ数 × ( PE-1 ) 毎に、)そのバッチの計算時間など、簡単 な情報が出力されます。 メモリ分散型並列の場合には、各PEの状態が含まれます。 異常終了が起こったPEはこれでチェックできます。 .. code-block:: text :caption: ``batch.out`` の先頭行の例 10 <--- number of remaining batches となっています。 この最初の数字はその時点での残りバッチ数です。 この数字を減らしてbatch.outを保存することにより、任意のバッチで計算を 終了させることができます。 例えば、3にするとその時点から3バッチ分計算を実行した後で終了 しますし、0にするとその時のバッチで計算が終了します。 この機能により、途中経過を見ながら計算を中断することができます。 ただし、デフォルト設定では、計算途中のタリー結果の画像ファイル (eps形式)は出力されません。 各タリーにおいて **epsout** を設定し( :numref:`sec-epsout` を参照)、 **[parameters]** セクションにおいて **itall=1** とすることで、 途中結果を画像ファイルで確認することができます。 バージョン2.86以降、 **[parameters]** セクションにおいて **file(22)** を 指定することにより、 ``batch.out`` のファイル名を変更できるようになりま した。これにより、同一ディレクトリにおいて複数のインプットファイルに対し てPHITSを実行することが可能となりました。 ``batch.out`` に出力される **rijk** は、各バッチ毎(各IP number毎)に 与えられた初期乱数の値です。 特定のバッチで異常終了が起こった時など、任意のバッチの計算を再現したい 場合にこの値を利用できます。 .. rubric:: 脚注 .. [#] Version 2.85以前はbatch.nowというファイル名でした。