.. _runtime-impact-of-xs-lib-size: 計算時間に影響を与える要因 -------------------------- DCHAINは通常、PHITSと比べて短時間で終了するが、使用する中性子反応断面積ライブラリや各種設定によって実行時間が変化する。本節では、DCHAINの処理内容とその実行回数から、計算時間を左右する要因を説明する。 DCHAINの計算は、領域数\ :math:`N_{\text{reg}}`\ 個の独立した計算に分割される。従来の設定では、各領域について断面積ライブラリを読み込み、その所要時間を\ :math:`T_{\text{rd }}`\ :math:`_\sigma`\ :math:`_{\text{ lib}}`\ とする。中性子フラックススペクトルと核種収率データの読み込み時間は、それぞれ\ :math:`T_{\text{rd flux}}`\ と\ :math:`T_{\text{rd yield}}`\ である。フラックスファイルは、対象領域のデータへ到達するまで読み込まれる。一方、崩壊ライブラリは領域数にかかわらず1回だけ読み込まれ、その所要時間を\ :math:`T_{\text{rd decay lib}}`\ とする。 その後、各核種のインベントリを時間ステップごとに逐次計算する。1ステップの計算時間\ :math:`T_{\text{calc}}`\ に加え、総時間ステップ数\ :math:`N_{\text{calc steps}}`\ が実行時間を決める。 時間ステップ数は複数の入力パラメータによって決まる。計算は、ビーム出力が異なる複数の照射期間と冷却期間に分割され、その合計数を ``ITSTEP``\ で指定する。各冷却期間は1ステップで計算するが、各照射期間は ``IDIVS``\ (既定値50)個の等間隔なサブステップへ分割する。また、カード7では ``ITOUT``\ 個の出力時刻を照射中または冷却中に指定できる。冷却期間の途中に出力時刻を置くと、計算ステップが1つ追加される。一方、照射期間の途中に出力時刻を置くと、その照射期間は出力時刻で複数の区間に分けられ、各区間がそれぞれ ``IDIVS``\ 個のサブステップへ分割される。この関係を :numref:`time_steps` に示す。 .. figure:: assets/time_steps_extended.png :name: time_steps :width: 385.0pt ビーム出力スケジュール、出力時刻 ``ITOUT``、照射ステップ当たりの分割数 ``IDIVS`` から決まる計算ステップ数 したがって、照射期間の途中に出力時刻を追加すると、冷却期間の途中に追加する場合より、計算時間への影響が大きい。ただし、照射期間または冷却期間の終了時刻は既存のステップ境界であるため、その時刻に出力を指定しても計算ステップは増えない。 1ステップ当たりの計算時間は、存在する核種数と崩壊・生成経路数にも依存する。照射中は中性子放射化チャンネルも有効になり、各核種へ至る崩壊・生成経路を探索するため、冷却中より計算が複雑になる。従来のDCHAIN設定におけるこれらの関係を、式 :eq:`eq:dchain-time-relation-old`、:eq:`eq:dchain-n-calc-steps`、:eq:`eq:dchain-t-calc-1-step` に示す。 .. math:: :label: eq:dchain-time-relation-old T_{\text{total}} \propto T_{\text{rd decay lib}} + \sum_{i=1}^{N_{\text{reg}}} \left( T_{\text{rd $\sigma$ lib}} + \frac{i}{N_{\text{reg}}}T_{\text{rd flux}} +T_{\text{rd yield}} +N_{\text{calc steps}} \cdot T_{\text{calc}} \right) .. math:: :label: eq:dchain-n-calc-steps N_{\text{calc steps}} \propto \textcolor{BlueViolet}{\texttt{IDIVS}}\cdot(N_{\text{irradiation}}+N_{\text{output,beam-on}}) + N_{\text{cooling}}+N_{\text{output,beam-off}} .. math:: :label: eq:dchain-t-calc-1-step T_{\text{calc}} \propto N_{\text{nuclides-present}} \cdot (N_{\text{decay-pathways}} + \delta_{\text{beam on/off}} \cdot N_{\text{activation pathways}}) 従来の設定では、崩壊ライブラリは1回だけ読み込むが、中性子反応断面積ライブラリと核種収率ファイルは領域ごとに全体を読み込み、中性子フラックスファイルも領域ごとに対象位置まで読み込む。近年、これらの重複処理を削減するため、以下の機能が追加された。 ``IXSRALL``\ ``= 1`` では、計算開始時に断面積ライブラリを1回だけ読み込み、メモリーへ保持する。現在の既定ライブラリは約100 MBであるためメモリー使用量は増えるが、多数の領域を扱う場合は同じファイルの反復読み込みを大幅に減らせる。 ``IREDUFMT``\ ``= 1`` では、PHITS 3.21以降で導入された[T-Track]および[T-Yield]の簡略出力形式を使用する。従来形式では、中性子フラックスがゼロのエネルギービンや、ある領域で生成量がゼロの核種も出力されるため、xyzメッシュや四面体メッシュのように領域数が多い問題ではファイルが大きくなる。簡略形式はDCHAINに必要な最小限の情報だけを出力し、人間が直接読む際の可読性と引き換えに、ファイルサイズと読み込み時間を削減する。 ``IRDONCE``\ ``= 1`` では、[T-Track]と[T-Yield]のファイルを可能な限り1回だけ開き、先頭へ戻らず順次読み進める。従来は、領域順に並ぶ[T-Track]ファイルを領域ごとに開き直し、対象領域へ到達するまで毎回先頭から解析していた。また、核種の原子番号順に並ぶ[T-Yield]ファイルは、各領域について全体を解析していた。[T-Track]では従来形式と簡略形式のどちらでも ``IRDONCE`` が有効である。一方、[T-Yield]では領域順に出力する ``IREDUFMT``\ ``= 1`` の場合に限り有効となる。 現在配布されているPHITSでは、[T-Dchain]がこれらの高速化設定を既定で有効にする。すべてを有効にした場合の関係を式 :eq:`eq:dchain-time-relation-improved` に示す。DCHAIN単体では、過去の入力との互換性を保つため既定では無効であるが、古いDCHAIN計算でも\ ``IXSRALL``\ ``= 1``\ と\ ``IRDONCE``\ ``= 1``\ は通常利用でき、性能改善が期待できる。 .. math:: :label: eq:dchain-time-relation-improved T_{\text{total}} \propto T_{\text{rd decay lib}} + T_{\text{rd $\sigma$ lib}} + T_{\text{rd flux}} +T_{\text{rd yield}} + \sum_{i=1}^{N_{\text{reg}}} \left( N_{\text{calc steps}} \cdot T_{\text{calc}} \right) %T_{total} \propto T_{load-dcy} + T_{load-xs} + T_{rd-flx} +T_{rd-yld} + \sum_{i=1}^{N_{reg}} \left( N_{calc-steps} \cdot T_{calc} \right) 多数のDCHAIN計算を実行する場合は、これらの関係を考慮して入力条件を最適化すると大きな時間短縮につながる。一般的な計算ではDCHAINの実行時間は数秒、長くても数分程度であり、通常は先行するPHITS計算より十分短い。 .. _many-region-file-size-settings: 多数の領域設定における問題 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 小規模なメッシュ問題では、以下の設定がファイルサイズや実行時間へ与える影響は小さい。一方、四面体メッシュやxyzメッシュなど領域数の多い体系では影響が大きくなる。特に、必要以上の出力時刻を指定すると計算が遅くなり、照射期間の途中に指定した場合は影響が顕著である。前述の\ ``IXSRALL``、``IREDUFMT``、``IRDONCE``\ に加え、次の設定を検討すること。 - ``IDIVS``\ の推奨値は照射ステップ当たり50分割である。ただし、粗い近似で十分な場合は値を小さくすると実行時間を短縮できる。式 :eq:`eq:dchain-n-calc-steps` に示すように、ライブラリなどの読み込み時間を除けば、実行時間は概ね\ ``IDIVS``\ に比例する。 - ``JMODE``\ は既定値2とし、[T-Yield]で直接生成される核種と、[T-Track]の中性子フラックスによる反応で生成される核種の両方を考慮することを強く推奨する。二次中性子による放射化を無視できると明確に判断できる場合に限り、\ ``JMODE``\ =0として[T-Yield]による直接生成核種だけを扱えば、実行時間を大幅に短縮できる。 - ``IYILD``\ ``= 0``\ とすると、核種収率の要約ファイルを出力しない。 - ``*.act``\ ファイルを小さくするには、\ ``IGGRP``\ でガンマ線スペクトルのエネルギービン数を減らす。 - ``ACMIN``\ は、PHITSの既定値10\ :math:`^{-20}`\ またはDCHAINの既定値0(しきい値はその時点の全放射能の10\ :math:`^{-10}`\ 倍)から変更することを推奨する。ただし、体系内の放射能が広い範囲に分布する場合は、適切なしきい値の決定が難しいため注意すること。 - ``IGSDEF``\ ``= 0``\ とすると、MCNP形式のガンマ線スペクトルファイルを出力しない。 - ``IWRTCHN``\ は通常0とし、サイズの大きい崩壊系列ファイルを出力しない。全領域・主要時間ステップについて詳細な系列情報が必要な場合だけ有効にする。すべての核種を出力する代わりに、\ ``IWRCHNUC``\ で対象核種を限定することを推奨する。 - ``IWRTCHN``\ ``= 1``\ とする場合は、\ ``CHRLVTH``\ を慎重に設定する。 - 四面体メッシュについて、整形された領域別の崩壊熱または光子線量出力が必要な場合は、\ ``FOAMOUT``\ と\ ``FOAMVALS``\ を設定する。既定では無効である。 - xyzメッシュについて、DCHAINからANGELプロットを直接生成する場合は、\ ``IPLOTMODE``\ と\ ``IPLOTAXIS``\ (PHITS側では\ ``ipltmode``\ と\ ``ipltaxis``)を設定する。