.. _sec-history: ヒストリー数、配列の大きさ -------------------------------------------------------------------------------- .. rst-class:: no-caption-number .. list-table:: **maxcas** :header-rows: 0 * - 値 - 説明 * - | (D=10) - | 1バッチのヒストリー数。上限は2147483647。 .. rst-class:: no-caption-number .. list-table:: **maxbch** :header-rows: 0 * - 値 - 説明 * - | (D=10) - | バッチ数。上限は2147483647。 メモリ分散型並列計算では、バッチ単位で並列化しています。 このため、入力のバッチ数maxbchが :math:`N_{\rm PE}-1` の整数倍となるように指定してください。 ここで、 :math:`N_{\rm PE}-1` は並列計算で使用する実行PE(Processing Element)数です。 上記の :math:`-1` は、並列計算のコントロールのために1PE使うためです。 もし整数倍でないときは、maxbchが整数倍になるように変更し、加えて全ヒストリー数が入力した数と同程度となるようにmaxcasを自動で調整します。 この自動調整が実行された場合は、出力のインプットエコーの最後にコメントが書き出されます。 .. rst-class:: no-caption-number .. list-table:: **maxbch** :header-rows: 0 * - 値 - 説明 * - | (D=10) - | バッチ数。上限は2147483647。 メモリ分散型並列計算では、バッチ単位で並列化しています。 このため、入力のバッチ数maxbchが :math:`N_{\rm PE}-1` の整数倍となるように指定してください。 ここで、 :math:`N_{\rm PE}-1` は並列計算で使用する実行PE(Processing Element)数です。 上記の :math:`-1` は、並列計算のコントロールのために1PE使うためです。 もし整数倍でないときは、maxbchが整数倍になるように変更し、加えて全ヒストリー数が入力した数と同程度となるようにmaxcasを自動で調整します。 この自動調整が実行された場合は、出力のインプットエコーの最後にコメントが書き出されます。 .. rst-class:: no-caption-number .. list-table:: **ihistout** :header-rows: 0 * - 値 - 説明 * - | (D=0) - | ターミナルに進捗を出力するヒストリーの間隔。0 の場合は、バッチ終了時のみ進捗を出力します。本機能で進捗を出力してもタリー情報の集計や出力は行わないため、計算負荷を抑えつつリアルタイムでシミュレーションの進捗状況を確認したい場合に有用です。ただし、OpenMPなどのメモリ共有型並列計算を実行している場合は、各スレッドでの処理タイミングによって出力されるヒストリー番号が必ずしも昇順にならない(前後する)可能性がある点にご注意ください。 .. rst-class:: no-caption-number .. list-table:: **iwwbnk** :header-rows: 0 * - 値 - 説明 * - | (D=1) - | [weight window]を設定した際に、メモリに蓄積する2次粒子の数がmaxbnkに近づくにしたがって粒子分割を抑制する機能の利用の有無に関するオプション。 | 1の場合に有効、それ以外は無効となる。 .. rst-class:: no-caption-number .. list-table:: **igeomem** :header-rows: 0 * - 値 - 説明 * - | (D=10000) - | 1つのセルの定義で使える余剰メモリサイズ。 \#を多用するなど1つのセルの定義が複雑になりすぎた場合、このパラメータが不足しているというエラーが出ます。 その場合は、セルの定義を簡素化するか、このパラメータを指定された数もしくはそれ以上に増やして再度PHITSを実行してください。 .. rst-class:: no-caption-number .. list-table:: **xsmemory** :header-rows: 0 * - 値 - 説明 * - | (D=1.0) - | 核データライブラリー読込配列の大きさ。 通常は変更する必要はありませんが、入力ファイルによっては、この値を変更するように指示される可能性があります。 その際は、値を変更するとともに入力ファイルをPHITS事務局までお送り下さい。 .. rst-class:: no-caption-number .. list-table:: **timeout** :header-rows: 0 * - 値 - 説明 * - | (D=-1.0) - | PHITS計算の打ち切り時間(sec)。 timeoutを用いることにより、PHITS計算の打ち切り時間を指定できます。 timeoutが正の場合に機能します。 バッチ終了時のCPU時間がtimeoutを超えた場合に、そのバッチで計算を終 了します。 バッチの途中でtimeoutを超えた場合は、そのバッチが終了するまで計算 が継続します。 メモリ分散型並列の場合は、全てのCPU時間の和で判定します。 ただし、ご使用の計算機によってはCPU時間が正しく取得できず、timeout を適切に使用できない場合がありますのでご注意ください。 .. rst-class:: no-caption-number .. list-table:: **istdev** :header-rows: 0 * - 値 - 説明 * - | (D=0) - | 新規 / 再開始計算及び統計誤差導出方法のコントロール。 * - | =-2 - | 再開始計算(ただし、過去のタリー結果が全くない場合は、istdev=2として新規計算を開始。 * - | =-1 - | 再開始計算(ただし、過去のタリー結果が全くない場合は、istdev=1として新規計算を開始。 * - | =0 - | 新規計算。統計誤差は、メモリ共有型並列でitalsh=1の場合はバッチ分散を、それ以外はヒストリー分散を自動的に選択します。 * - | =1 - | 新規計算。統計誤差は、各バッチ間の分散の平方根として導出。 * - | =2 - | 新規計算。統計誤差は、各ヒストリー間の分散の平方根として導出。 istdev :math:`<` 0とした場合は、再開始計算となります。 その場合、統計誤差計算モードは、過去のタリー結果を踏襲します。 再開始計算については、 :numref:`sec-restart` をご覧ください。 .. rst-class:: no-caption-number .. list-table:: **italsh** :header-rows: 0 * - 値 - 説明 * - | (D=0) - | OpenMP(メモリ共有型並列計算)を利用した場合にスレッド間のタリー変数の共有/非共有を切り替えるオプション。 * - | =0 - | タリー変数をスレッド間で共有しない。 * - | =1 - | タリー変数をスレッド間で共有する。 タリー変数を共有すれば、少ない物理メモリでも並列計算が実行できるため、大容量のタリー領域を必要とする並列計算の実行で有用です。 一方で、メモリ競合を防止するプロセスのために計算速度が低下する可能性があります。 少ないヒストリー数で計算速度等の確認をした上でお使いください。 また、メモリ共有型並列でitalsh=1の場合、タリー変数をスレッド毎に用意しないため、統計誤差はバッチ分散(istdev=1)でしか計算できません。 .. rst-class:: no-caption-number .. list-table:: **ireschk** :header-rows: 0 * - 値 - 説明 * - | (D=1) - | 再開始計算時のタリーパラメータ一致性確認の有無。 * - | =0 - | 読み込むタリー出力の設定が現在のタリー設定と一致しているか確認する。 * - | =1 - | 上記確認を行わない。 極めて長いタリー設定をした場合、タリー出力に全ての設定が書き込まれずに、新旧ファイル一致性の確認でエラーが出てしまう場合があります。 その場合、ireschk=1とし、一致性を確認しないモードで再開始計算を実行してください。 統計誤差の計算方法 """""""""""""""""""""""""""""""""""""""""""""""""" 統計誤差計算は、各バッチ間のタリー量の分散の平方根として標準偏差を導出するバッチ分散モードと、各ヒストリー間のタリー量の分散の平方根として標準偏差を導出するヒストリー分散モードがあります。どちらも、次式で標準偏差 :math:`\sigma` を計算します。 .. math:: \sigma = \sqrt{ \frac{\displaystyle\sum_{i=1}^N\left(x_iw_i/\bar{w}\right)^2 - N\bar{X}^2} {N-1} } ここで :math:`N` は標本数(istdev=1のときは全バッチ数、istdev=2のときは全ヒストリー数)であり、 :math:`x_i,w_i` は各標本のタリー量及びソースウェイト、 :math:`\bar{w}` はソースウェイトの平均値です。 PHITS内部では :math:`\sigma` の絶対値を計算していますが、それをタリー量の平均値 :math:`\bar{X}` で割った相対誤差を出力しています。 そして、標準誤差(standard error of the mean)は :math:`\sigma/\sqrt{N}` により計算できるので、これをタリー量の平均値 :math:`\bar{X}` で割った量を相対誤差、 .. math:: (r.err) = \frac{\sigma}{\sqrt{N}\bar{X}} により求め出力しています。 バッチ分散の場合は、同じ全ヒストリー数でも、maxcasとmaxbchの組み合わせによって標準誤差が変化しますのでご注意ください。 基本的には、maxbchを大きくした方が計算の信頼性は高くなりますので、正確に統計誤差を計算したい場合は、maxbchを少なくとも10以上としてください。 ただし、PHITSは、各バッチ終了時にいろいろな処理をしますので、maxbchを大きくしすぎると計算時間が長くなりますのでご注意ください。 一方、ヒストリー分散モードの場合は、標準誤差は全ヒストリー数のみに依存し、maxcasとmaxbchの組み合わせには依存しません。したがって、通常の計算では、ヒストリー分散モードを選択することをお薦めします。 しかしながら、xyzメッシュタリーを細かく設定する等、メモリを多く使用するタリーを設定している場合には、ヒストリー分散モードでの計算時間が莫大となることがありますのでご注意ください。 なお、各ヒストリーの分散を導出するタリー([t-deposit]タリーのoutput = depositや[t-deposit2]など)の場合は、統計誤差として標準誤差を出力しており、istdevの値に関係なく、寄与したヒストリー数の平方根から計算します。 すなわち、寄与したヒストリー数が :math:`K` の場合、その相対誤差は :math:`1/\sqrt{K}` となります。 統計誤差は、通常、タリー量の右側のr.errの列に出力されます。 ただし、axis = xy, rzなど2次元表示の場合は、各タリーで指定したfileパラメータの拡張子の手前に\_errと付けた別ファイルに出力します。 例えば、file=tally.outと指定した場合、統計誤差のファイル名はtally\_err.outとなります。 このファイルの書式は通常のタリー出力と同じですので、ANGELで処理することにより投稿誤差を2次元表示で確認することができます。 詳細は :numref:`sec-tallyout` をご覧ください。 PHITSで評価しているのは標準誤差なので、必ずしも真値がこの範囲内に収まるわけではないのでご注意ください。 平均値を中心として :math:`\pm 1\sigma` の範囲は約68\%の信頼区間を表しており、この範囲に約68\%の確率で計算結果が含まれることを意味します。 また、核反応モデルに起因する系統的な不定性は含まれていません。 .. rst-class:: no-caption-number .. list-table:: **nrandgen** :header-rows: 0 * - 値 - 説明 * - | (D=1) - | 擬似乱数生成法オプション。 * - | =0 - | 線形合同法を使用する。乱数の周期は :math:`2^{46}` 。詳細は下記文献 [#]_ を参照。 * - | =1 - | xorshift64を使用する。乱数の周期は :math:`2^{64}-1` 。詳細は下記文献 [#]_ を参照。 .. rst-class:: no-caption-number .. list-table:: **irskip** :header-rows: 0 * - 値 - 説明 * - | (D=0) - | 乱数をコントロールするオプション。 * - | irskip>0 - | irskip回ヒストリーをスキップして計算を開始(デバッグ用) * - | irskip<0 - | irskip回ヒストリーの乱数をスキップして計算を開始(手動並列用) .. rst-class:: no-caption-number .. list-table:: **rseed** :header-rows: 0 * - 値 - 説明 * - | (D=0.0) - | 初期乱数オプション * - | rseed=0 - | 初期乱数として6647299061401を使用する。nrandgen=0の時はこの整数値を使用し、nrandgen=1の時はこの値に対応するビットデータを使用する。 * - | rseed :math:`\ne` 0 - | rseedを初期乱数とする。nrandgen=0の時は絶対値の整数値を使用する。nrandgen=1の時は入力値(実数可、負値可)に対応するビットデータを使用する。 .. rst-class:: no-caption-number .. list-table:: **itimrand** :header-rows: 0 * - 値 - 説明 * - | (D=0) - | 時間依存の初期乱数オプション。 * - | =0 - | rseedにより決まる値を使用する。 * - | =1 - | 計算の開始時間情報より決まる初期乱数を使用する。 .. rst-class:: no-caption-number .. list-table:: **bitrseed** :header-rows: 0 * - 値 - 説明 * - | - | 初期乱数のビットデータ(0か1で表される64桁の整数列)。デフォルトは6.647299061401E+12のビットデータ。 .. [#] \R. Picard and T. Booth, LA-UR-08-06204. .. [#] \G. Marsaglia, 2003. Xorshift RNGs. Journal of Statistical Software. 8, 14, 1-6.