************************************************** 入出力ファイルの共通書式 ************************************************** PHITSの入力ファイルは、テキストエディタで編集できるテキスト形式で作成します。 入力ファイルは **[\*\*\*\*\*]** で始まる複数のセクションで構成されており、 目的や機能に応じてセクション単位で情報を読み込みます。 セクションの順番は自由です。 **[\*\*\*\*\*]** の先頭の空白は4個まで無視しますが、それ以上はセクションの 始まりとは認識しませんので注意して下さい。 セクション毎に入力形式が変わりますが、基本的には以下に示す2つの書式を取ります。 一つは、各セクションに固有のキーワード(パラメータ)に数値や文字列で設定 する方式であり、 .. code-block:: console :caption: パラメータ指定の基本書式 キーワード(パラメータ) = 数値 または 文字列 と書きます。 この際、半角の空白(スペース)は無視されます。 もう一つは、複数の数値を設定する場合であり、半角の空白を区切り文字として、 次のような形式となります。 .. code-block:: console :caption: 空白区切りによる複数値指定の書式 数値(文字列)1 数値(文字列)2 数値(文字列)3 ... 出力ファイルは、基本的にテキスト形式(``.out``)のものが出力されますが、 オプションを設定することにより、計算結果を画像表示したeps形式 (``.eps``)のファイルも出力されます。 PHITSにおける各物理量の単位は、基本的に、長さはcm、時間はns、エネルギー はMeV(もしくは核子あたりの量を表すMeV/n)です。 また、座標系は右手系をとっています。 セクション ================================================== PHITS で使用するセクションを、 :numref:`tbl-secname1` と :numref:`tbl-secname2` に示します。 .. _tbl-secname1: .. list-table:: セクション (1) :header-rows: 1 * - セクション名 - 説明 * - **[title]** - 計算のタイトルを定義します。 * - **[parameters]** - ヒストリー数など、計算の動作を決めるパラメータを定義します。 * - **[source]** - 入力ソース粒子の情報を定義します。 * - **[material]** - 体系を構成する物質を定義します。 * - **[surface]** - 体系を構成する面を定義します。 * - **[cell]** - 体系を構成するcellを定義します。 * - **[transform]** - 体系を構成する面などの座標変換を定義します。 * - **[temperature]** - cellの温度を定義します。 * - **[mat time change]** - 物質の時間変化を定義します。 * - **[magnetic field]** - 体系を構成する領域の磁場を定義します。 * - **[electro magnetic field]** - 体系を構成する領域の電磁混合場を定義します。 * - **[delta ray]** - δ線を発生させます。 * - **[track structure]** - 飛跡構造解析モードを使用するための設定を定義します。 * - **[super mirror]** - 低エネルギー中性子のスーパーミラーを定義します。 * - **[elastic option]** - 低エネルギー中性子の弾性衝突のオプションを定義します。 * - **[data max]** - 核種毎に核データライブラリを利用する上限エネルギーを定義します。 * - **[frag data]** - ユーザー指定断面積読み込み機能について定義します。 * - **[importance]** - 領域のimportanceを定義します。 * - **[weight window]** - 領域のweight windowを定義します。 * - **[ww bias]** - **[weight window]** のパラメータにかけるバイアスを定義します。 * - **[forced collisions]** - 強制衝突の領域とファクターを定義します。 * - **[Repeated collisions]** - 核反応の繰返し衝突の領域とファクターを定義します。 * - **[volume]** - 体系を構成する領域の体積を定義します。 * - **[multiplier]** - multiplierを定義します。 * - **[mat name color]** - 物質表示の名前、色、大きさを指定します。 * - **[reg name]** - 領域表示の名前、大きさを指定します。 * - **[counter]** - counterを定義します。 * - **[timer]** - 粒子の固有時間をリセット、ストップを定義します。 * - **[user defined interaction]** - ユーザーが定義した相互作用を制御します。 * - **[user defined particle]** - ユーザーが定義した粒子を制御します。 * - **[libout]** - **icntl=1** において **inucr=100** とした時のパラメータを定義します。 * - **[end]** - 入力ファイルの終了を示します。 .. _tbl-secname2: .. list-table:: セクション (2) :header-rows: 1 * - セクション名 - 説明 * - **[t-track]** - 粒子の飛跡長(track length)やフルエンスを導出するタリー。 * - **[t-cross]** - 粒子の面横断回数やフルエンスを導出するタリー。 * - **[t-point]** - ある点や線上のフルエンスを導出するタリー。 * - **[t-deposit]** - 物質におけるエネルギー付与を導出するタリー。 * - **[t-deposit2]** - 2つの領域でのエネルギー付与の相関を出力するタリー。 * - **[t-heat]** - 物質におけるエネルギー付与を導出するタリー。(非推奨 [#]_) * - **[t-yield]** - 残留核の生成量を導出するタリー。 * - **[t-product]** - 線源や核反応による生成粒子を導出するタリー。 * - **[t-dpa]** - 原子あたりのはじき出し数(DPA)を導出するタリー。 * - **[t-let]** - LETの関数として飛跡長や線量を導出するタリー。 * - **[t-sed]** - 微小領域におけるエネルギー付与分布を導出するタリー。 * - **[t-time]** - Energy cut offとescape粒子の個数を導出するタリー。 * - **[t-interact]**(従来の**[t-star]**) - 反応数を導出するタリー。 * - **[t-dchain]** - DCHAIN用入力ファイルを作成するタリー。 * - **[t-wwg]** - **[weight window]** のパラメータを出力するタリー。 * - **[t-wwbg]** - **[ww bias]** のパラメータを出力するタリー。 * - **[t-volume]** - 体積自動計算機能のためのタリー。 * - **[t-userdefined]** - ユーザー定義による任意の物理量を導出するタリー。 * - **[t-gshow]** - ジオメトリ(仮想空間)を2次元で表示するタリー。 * - **[t-rshow]** - ジオメトリを2次元で物理量による色分けをして表示するタリー。 * - **[t-3dshow]** - ジオメトリを3次元で表示するタリー。 * - **[T-4Dtrack]** - PHIG-3Dで粒子の飛跡を表示するためのタリー。 これらのセクション単位でデータを読み込みます。 従って、入力ファイルの先頭から最初のセクションまで、また **[end]** 以下の部分は読み飛ばします。 .. [#] バージョン3.04までは **[t-deposit]** によるカーマ近似計算ができなかったため、この計算が可能な **[t-heat]** との使い分けを行っていました。 読み込み制御 ================================================== 大文字、小文字、空白文字 ファイル名を除いて、大文字小文字は区別しません。 行頭、行末の空白文字は無視します。セクション名は間に空白文字を入れてもかまいません。 ただし、 **[\*\*\*\*\*\*]** の先頭の空白文字は4個まで無視しますが、それ以上はセクションの始まりとは認識しませんので注意して下さい。 タブ タブは、8個のブランクに置き換えます。 継続行 一行に書くことができる文字数は半角文字で200字までです。 それ以降の文字は読み込まれません。 一行に収まらないデータは、行末に ``\`` をつけると次行を含めて一行と扱います。 複数行が使用できます。 ただし、 **[cell]** と **[surface]** の継続行は ``\`` を使用せず、先頭に5個以上の空白文字を入れてください。 行連結 短いパラメータ文が続くとき、複数行を;でつなぐことにより 一行に表示することができます。例えば、 .. code-block:: console :caption: 行連結の記述例 idbg = 0 ; ibod = 1 ; naz = 0 のよう書くことができます。 ただし、メッシュの記述のようにサブセクションの書式が決まっている場合は使用できません。 コメント文字 PHITSでは、以下の文字がコメント文字として使用でき、それ以降に書かれた文字列は無視されます。 - $: 全ての場所でコメント文字として扱われます。 - #及び!: **[surface]** , **[cell]** セクションを除いてコメント文字として扱われます。 - c⊔(⊔は空白文字): 行頭 5カラム目以内にある場合にコメント文字として扱われます。 ただし、 **[material]** セクションでは炭素元素として認識されるため、この機能は無効になります。 **[material]** セクションでも ``c⊔`` をコメント文字として扱うためには、 **[parameters]** セクションで **icommat=1** と定義してください。 なお、% は version 3.30 以前はコメント文字として使えましたが、文字列変数の定義に **\%** を使うようにしたため 3.31 以降はコメント文字として使えません。 もし、% をコメント文字として使用する必要がある場合は、**$RWT=0** を最初のセクションが始まる前に追加してください。 空白行 空白行は、読み飛ばします。 コメント文字で始まる行も読み飛ばします。 セクションの読み飛ばし ひとつのセクションを読み飛ばしたいとき、**[\*\*\*\*\*\*] off** のようにセクション名の後に **off** をつけると、次のセクションまでを読み飛ばします。 直後に書かれた **infl:** や **set:** が意図せず読み飛ばされる場合がありますのでご注意ください。 セクション途中からの読み飛ばし セクションの途中で、行頭に **qp:** を挿入すると、この行以降次のセクションまでを読み飛ばします。 全ての読み飛ばし 入力ファイルのどこでも、 **q:** を行頭に入れると、それ以降全てを読み飛ばします。これは、 **[end]** と同じです。 .. _sec-include: ファイルの挿入 ================================================== 入力ファイルのどの場所でも他のファイルを取り込めます。 インクルードファイルの書式は、 .. code-block:: console :caption: インクルードファイルの基本書式 infl: {file.name}[n1-n2] です。ここで、{ }内がファイル名、[ ]内が行数指定です。 **n1** 行から **n2** 行をインクルードします。 行数指定は省略できます。省略した場合は、そのファイル全てをインクルードします。 また、 **[n1-]** あるいは **[-n2]** という表現も可能です。 上が前者が **n1** 行から最後まで、後者が先頭から **n2** 行までをインクルードします。 インクルードは、8回までネストできます。 インクルードファイルを読み終えると、一層上のファイルに戻ります。 Windows系の環境でコマンドラインインタプリタ(コマンドプロンプト)によりPHITSを実行している場合に、 **infl** を使用する際は注意が必要です。 このときは、インプットファイルの1行目を .. code-block:: console :caption: コマンドライン実行時の入力ファイル指定例 file = input.dat としてください。ここで、 **input.dat** はインプットファイルです。 コマンドラインインタプリタを用いた実行方法については、:numref:`sec-cmd` をご参照ください。 .. _sec-user_const: ユーザー定義定数 ================================================== 入力ファイル中の、数字を入力すべき箇所で、数値の代わりに、**c1** から **c999** の、ユーザーが定義した定数を書いておくことが出来ます。 定数のセットの書式は以下の通りです。 .. code-block:: console :caption: ユーザー定義定数の記述例 set: c1[ 52.3 ] c2[ 2*pi ] c3[ c1 * 1.e-8] ただし、 **ci[]** において、iと[の間に空白文字を入れることができないのでご注意ください。 この定数セットは、どの場所でも可能です。 定数名は、 **c1** から **c999** まで、何度でもセットし直せます。 セットした以降、次にセットされるまで、その数値を保持します。 定義の中で他の定数を用いる場合(上の3番目の例)、その時点での 値が参照され、それ以降、定義の中で用いられている定数 (上の3番目の例では **c1**)をリセットしても定数の値は変化しません。 **pi** は、デフォルトで定義されている定数です。 **[parameters]** セクションにおいて **ncvalout** を指定することにより、この回数だけ **ci** として定義した数値が **file(6)** (D=phits.out)に出力されます。 ユーザー定義定数として使用されている数値を確認したい場合に設定してください。 Sumtallyサブセクション内で定義した定数は無視されるのでご注意ください。 ユーザー定義プログラム(``usrsors.f`` , ``usrtally.f`` , ``usrdfn1.f`` など)の中でこれらの変数を使いたい場合は、 .. code-block:: console :caption: ユーザー定義プログラムでの定数参照宣言例 parameter ( mfc = 100 ) common /rval1/ cval(mfc), aval(mfc) と宣言した上で、 **cval** として利用できます。 例えば、 **c1** パラメータは **cval(1)** に相当します。 なお、複数回同じパラメータを定義した場合、インプットファイルの最後に定義 した値がユーザー定義プログラム内で有効となります。 .. _cha-var: .. _sec-cha_var: ユーザー定義文字列 ================================================== Version 3.31以降、任意の文字列を変数化して利用することができるようになりました。 その定義の書式は以下の通りです。 .. code-block:: console :caption: 文字列変数の定義例 set: %part_name%[neutron proton alpha] 変数名は%で挟んで定義してください。 PHITSの他の入力箇所と違い、文字列変数名のみ大文字と小文字が区別されますのでご注意ください。 ユーザー定義変数と同じく、定義された次の行から有効となり、同じ文字列変数 を何度でもセットし直せます。 ただし、変数の場合とは異なり、ユーザー定義文字列は1行で1つの文字列のみ定 義可能です。 また、定義できる変数名とその値(文字列)は100文字までです。 上記例の場合、例えば複数のタリーで .. code-block:: console :caption: 文字列変数の利用例 part = %part_name% と定義すれば、各タリーでスコアする粒子を一括して変更することができます。 この機能を利用するため、version 3.31以降のPHITSは、文字列変数を置換した 後の入力情報を別ファイル(以下、リライトファイル)に一旦出力した後、その ファイルを読み込む形で実行されます。 リライトファイル名は、元入力ファイル名の拡張子の前に ``_rwt`` を追加した名前となります。 例えば、元の入力ファイル名が ``phits.inp`` の場合、 ``phits_rwt.inp`` となります [#]_ 。 リライトファイルには、**infl** コマンドで読み込んだ入力情報も含まれます。 リライトファイルの出力及び削除の有無は、特殊パラメータ **$RWT** により変更可能です。 **$RWT** は最初のセクションが始まる前に定義する必要があり、その値の意味は以下の通りです。 - **$RWT=0** :リライトファイルを出力しない。 この場合は、文字列変数が利用できませんが、入力ファイルが巨大な場合、その読込時間を短縮することができます。 - **$RWT=1** (デフォルト):リライトファイルを出力し、計算終了時に削除 - **$RWT=2** :リライトファイルを出力し、計算終了時に削除しない。 - **$RWT=3** :リライトファイルを出力し、その直後にPHITSの実行を停止する。 このオプションは、 **icntl=0** の場合のみ有効となり、複数の **infl** コマンドを使った入力ファイルを他者と共用する際などに便利となります。 .. [#] ターミナル等で、 ``phitsXXX_win.exe < temp.inp`` のように(XXXはバージョン番号、 ``temp.inp`` は入力ファイル)、バッチファイルやスクリプトファイルを使用せずに、直接PHITSの実行ファイルを使用した場合は、リライトファイルの名前が入力ファイルのそれを参照せずに ``phits_rwt.inp`` となります。 .. _tbl-intfunc: 数式の利用 ================================================== 入力ファイルで数字の入力箇所で、数式の利用が可能です。 数式の書式は、Fortran形式です。 下記の内部関数が利用できます。 .. list-table:: 内部関数 :header-rows: 1 * - 関数名 - 説明 * - sin(x) - 正弦 * - cos(x) - 余弦 * - tan(x) - 正接 * - asin(x) - 逆正弦 * - acos(x) - 逆余弦 * - atan(x) - 逆正接 * - shinh(x) - 双曲線正弦 * - cosh(x) - 双曲線余弦 * - tanh(x) - 双曲線正接 * - int(x) - 整数部分 * - nint(x) - 四捨五入した整数値 * - abs(x) - 絶対値 * - exp(x) - eを底とする指数関数 * - log(x) - 自然対数 * - log10(x) - 常用対数 * - sqrt(x) - 平方根 * - max(x,y,...) - 最大値 * - min(x,y,...) - 最小値 * - mod(x,y) - xをyで割った余り 例として、 .. code-block:: console :caption: 数式を用いたパラメータ指定例 param = c1 * 3.5 * sin( 55 * pi / 180 ) この例のように、 **param** =の後に1個の値が期待されるときは、 数式の途中に空白が許されますが、 幾つかの数字の並びが期待される場合は、 空白が数字の区切りを示しますので空白は使えません。 このときは、空白を省いて記述するか、{ c1 * 2 / pi }のように{ }で括ってください。 .. _sec-part-spec: 粒子の書式 ================================================== **[source]** セクションやタリーセクションなどで用いる粒子の表式を下の表にまとめます。 **[material]** セクションでの物質の定義方法とは異なりますのでご注意ください。 粒子を定義するときは、symbol かkf-code を用います。粒子タイプ11 のother particles は、 :numref:`tbl-particle2` にあるようにkf コードで指定します。 また、これらの粒子の崩壊チャンネルは :numref:`tbl-decay` にあるものが含まれています。 原子核の指定方法は、208Pb, Pb208, Pb-208のような形式です。 質量数を指定せずシンボルのみで定義した場合(例: Pb)、同位体全てを意味します(ただし、 **[source]** セクションでは使えません)。 kf コードで原子核を指定するには、Z * 1000000 + A (例:82000208)とします。 アイソマー(核異性体)を明示的に指定したい場合は、質量数の末尾にm(第一アイソマー)、n(第二アイソマー)、g(基底核)を指定します(例:Na-24m, In-116m, In-116n, In-116g)。 ityp=19 のnucleus は、全ての原子核からityp=1,15,16,17,18、すなわちproton, deuteron, triton, 3He, alpha を除いた全てを意味します。 .. _tbl-particle: .. _tbl-partt: .. _partt: .. _tbl-particle1: .. _tbl-partt-1: .. list-table:: 輸送粒子リスト (1) :header-rows: 1 * - ityp - symbol - kf-code - 粒子名 * - 1 - proton - 2212 - 陽子 * - 2 - neutron - 2112 - 中性子 * - 3 - pion+ - 211 - 正パイ中間子 * - 4 - pion0 - 111 - 中性パイ中間子 * - 5 - pion- - -211 - 負パイ中間子 * - 6 - muon+ - -13 - 正ミューオン * - 7 - muon- - 13 - 負ミューオン * - 8 - kaon+ - 321 - 正ケイオン * - 9 - kaon0 - 311 - 中性ケイオン * - 10 - kaon- - -321 - 負ケイオン * - 11 - other - :numref:`tbl-particle2` - その他の粒子 * - 12 - electron - 11 - 電子 * - 13 - positron - -11 - 陽電子 * - 14 - photon - 22 - 光子 * - 15 - deuteron - 1000002 - 重陽子 * - 16 - triton - 1000003 - 三重陽子 * - 17 - 3he - 2000003 - 3He * - 18 - alpha - 2000004 - アルファ粒子 * - 19 - nucleus - Z*1000000+A - 原子核 .. _tbl-particle2: .. _tbl-partt-2: .. list-table:: 輸送粒子リスト (2) :header-rows: 1 * - ityp - symbol - kf-code - 粒子名 * - 11 - nu_e, nu_ebar - 12, -12 - :math:`\nu_e, \overline{\nu_e}` * - 11 - nu_mu, nu_mubar - 14, -14 - :math:`\nu_\mu, \overline{\nu_\mu}` * - 11 - pbar- - -2212 - :math:`\overline{p}` * - 11 - nbar0 - -2112 - :math:`\overline{n}` * - 11 - Kbar0 - -311 - :math:`\overline{K^0}` * - 11 - K_L0 - 130 - :math:`K_L^0` * - 11 - K_S0 - 310 - :math:`K_S^0` * - 11 - eta - 221 - :math:`\eta` * - 11 - eta' - 331 - :math:`\eta'` * - 11 - Lambda0, Lambdabar0 - 3122, -3122 - :math:`\Lambda^0, \overline{\Lambda^0}` * - 11 - Sigma+, Sigmabar- - 3222, -3222 - :math:`\Sigma^+, \overline{\Sigma^+}` * - 11 - Sigma0, Sigmabar0 - 3212, -3212 - :math:`\Sigma^0, \overline{\Sigma^0}` * - 11 - Sigma-, Sigmabar+ - 3112, -3112 - :math:`\Sigma^-, \overline{\Sigma^-}` * - 11 - Xi0, Xibar0 - 3322, -3322 - :math:`\Xi^0, \overline{\Xi^0}` * - 11 - Xi-, Xibar+ - 3312, -3312 - :math:`\Xi^-, \overline{\Xi^-}` * - 11 - Omega-, Omegabar+ - 3334, -3334 - :math:`\Omega^-, \overline{\Omega^-}` * - 11 - nu_tau, nu_taubar - 16, -16 - :math:`\nu_\tau, \overline{\nu_\tau}` * - 11 - tau-, tau+ - 15, -15 - :math:`\tau^-, \tau^+` * - 11 - rho0 - 113 - :math:`\rho^0` * - 11 - rho+, rho- - 213, -213 - :math:`\rho^+, \rho^-` * - 11 - omega - 223 - :math:`\omega` * - 11 - a_1(1260)+, a_1(1260)- - 20213, -20213 - :math:`a_1^+, a_1^-` * - 11 - K*0, K*bar0 - 313, -313 - :math:`K^{*0}, \overline{K^{*0}}` * - 11 - K*+, K*- - 323, -323 - :math:`K^{*+}, K^{*-}` * - 11 - phi - 333 - :math:`\phi` * - 11 - D+, D- - 411, -411 - :math:`D^+, D^-` * - 11 - D0, Dbar0 - 421, -421 - :math:`D^0, \overline{D^0}` * - 11 - D_s+, D_s- - 431, -431 - :math:`D_s^+, D_s^-` * - 11 - B0, Bbar0 - 511, -511 - :math:`B^0, \overline{B^0}` * - 11 - B+, B- - 521, -521 - :math:`B^+, B^-` * - 11 - B_s0, B_sbar0 - 531, -531 - :math:`B_s^0, \overline{B_s^0}` * - 11 - B_c+, B_c- - 541, -541 - :math:`B_c^+, B_c^-` .. _decay: .. _tbl-decay: .. list-table:: 崩壊チャンネルと寿命 :header-rows: 1 * - 粒子 - 崩壊チャンネル - 分岐率 - 寿命 (sec) * - :math:`n` - :math:`p + e^- + \overline{\nu}_e` - 100% - 8.867e2 * - :math:`\pi^0` - :math:`\gamma + \gamma` - 100% - 0 * - :math:`\pi^+` - :math:`\mu^+ + \nu_\mu` - 100% - 2.6029e-8 * - :math:`\pi^-` - :math:`\mu^- + \overline{\nu}_\mu` - 100% - 2.6029e-8 * - :math:`\mu^+` - :math:`e^+ + \nu_e + \overline{\nu}_\mu` - 100% - 2.19703e-6 * - :math:`\mu^-` - :math:`e^- + \overline{\nu}_e + \nu_\mu` - 100% - 2.19703e-6 * - :math:`K_L^0` - :math:`\pi^+ + e^- + \overline{\nu}_e` - 20.34% - 5.116e-8 * - :math:`K_L^0` - :math:`\pi^- + e^+ + \nu_e` - 20.34% - * - :math:`K_L^0` - :math:`\pi^+ + \mu^- + \overline{\nu}_\mu` - 13.57% - * - :math:`K_L^0` - :math:`\pi^- + \mu^+ + \nu_\mu` - 13.57% - * - :math:`K_L^0` - :math:`\pi^0 + \pi^0 + \pi^0` - 19.59% - * - :math:`K_L^0` - :math:`\pi^+ + \pi^- + \pi^0` - 12.59% - * - :math:`K_S^0` - :math:`\pi^0 + \pi^0` - 30.72% - 8.954e-11 * - :math:`K_S^0` - :math:`\pi^+ + \pi^-` - 69.28% - * - :math:`K^+` - :math:`\mu^+ + \nu_\mu` - 63.56% - 1.2371e-8 * - :math:`K^+` - :math:`\pi^0 + e^+ + \nu_e` - 5.07% - * - :math:`K^+` - :math:`\pi^0 + \mu^+ + \nu_\mu` - 3.352% - * - :math:`K^+` - :math:`\pi^+ + \pi^0` - 20.67% - * - :math:`K^+` - :math:`\pi^+ + \pi^0 + \pi^0` - 1.760% - * - :math:`K^+` - :math:`\pi^+ + \pi^+ + \pi^-` - 5.583% - * - :math:`K^-` - :math:`\mu^- + \overline{\nu}_\mu` - 63.56% - 1.2371e-8 * - :math:`K^-` - :math:`\pi^0 + e^- + \overline{\nu}_e` - 5.07% - * - :math:`K^-` - :math:`\pi^0 + \mu^- + \overline{\nu}_\mu` - 3.352% - * - :math:`K^-` - :math:`\pi^- + \pi^0` - 20.67% - * - :math:`K^-` - :math:`\pi^- + \pi^0 + \pi^0` - 1.760% - * - :math:`K^-` - :math:`\pi^- + \pi^- + \pi^+` - 5.583% - * - :math:`\eta` - :math:`\gamma + \gamma` - 38.9% - 0 * - :math:`\eta` - :math:`\pi^0 + \pi^0 + \pi^0` - 31.9% - * - :math:`\eta` - :math:`\pi^+ + \pi^- + \pi^0` - 23.7% - * - :math:`\eta` - :math:`\pi^+ + \pi^- + \gamma` - other - * - :math:`\eta'` - :math:`\pi^+ + \pi^- + \eta` - 44.1% - 0 * - :math:`\eta'` - :math:`\pi^0 + \pi^0 + \eta` - 20.5% - * - :math:`\eta'` - :math:`\pi^+ + \pi^- + \gamma` - 30.1% - * - :math:`\eta'` - :math:`\gamma + \gamma` - other - * - :math:`\Lambda` - :math:`p + \pi^-` - 64.1% - 2.631e-10 * - :math:`\Lambda` - :math:`n + \pi^0` - other - * - :math:`\Sigma^+` - :math:`p + \pi^0` - 51.57% - 7.99e-11 * - :math:`\Sigma^+` - :math:`n + \pi^+` - other - * - :math:`\Sigma^0` - :math:`\Lambda + \gamma` - 100% - 0 * - :math:`\Sigma^-` - :math:`n + \pi^-` - 100% - 1.479e-10 * - :math:`\Xi^0` - :math:`\Lambda + \pi^0` - 100% - 2.90e-10 * - :math:`\Xi^-` - :math:`\Lambda + \pi^-` - 100% - 1.639e-10 * - :math:`\Omega^-` - :math:`\Lambda + K^-` - 67.8% - 8.22e-11 * - :math:`\Omega^-` - :math:`\Xi^0 + \pi^-` - 23.6% - * - :math:`\Omega^-` - :math:`\Xi^- + \pi^0` - other - 分岐比や崩壊モードの変更はソースコード ``src/dklos.f`` を変更し、再コンパイルすることで可能です。 その他の粒子に関しては、``data/decay/decay_data_1.dat`` を参照してください。 .. _sec-phitsout: 標準出力ファイル (phits.out) ================================================== 計算時間や発生した粒子数など、PHITS 計算に関わる基本的な情報は、**file(6)** パラメータで指定する標準出力ファイルに書き出されます。通常は ``phits.out`` を用います。 書き出される情報は 6 つのカテゴリに分けられており、**[parameters]** セクションで定義する **infout** パラメータによって出力カテゴリを選択できます。 出力情報カテゴリ - **[I]** 基本情報(下記を除く全ての情報) - **[II]** インプットエコー(入力ファイルの再出力) - **[III]** メモリ情報、バッチ情報 - **[IV]** 粒子情報 - **[V]** 詳細情報(分散低減情報、領域別散乱情報、物質別散乱情報) - **[VI]** 開発者情報 これらの情報は、下記の順番で書き出されます。 PHITSロゴ、バージョン、開発者、計算タイトル、計算開始時刻(カテゴリ I、ただし開発者情報はカテゴリ VI) 13行目に使用した PHITS のバージョンが出力されるので、質問時にはこの情報も併せて送ってください。入力ファイルで **[title]** セクションが定義されている場合は、``[ Job Title ]`` 欄にその文字列がそのまま出力されます。 インプットエコー(カテゴリ II) ``>>> Input Echo >>>`` から ``[END] of Input Echo <<<`` の間に、入力ファイルで指定したパラメータが整理した形で出力されます。``#`` 以降にはコメントとしてパラメータの意味が出力され、**ci** や計算式で定義したパラメータは計算後の数値が直接書き出されます。RI 線源機能や宇宙線線源機能などを使った場合は、粒子のエネルギースペクトルもコメント文形式で出力されます。 メモリ情報(カテゴリ III) GG/CC memory, high energy material / low energy material, real tally memory, bank memory, other memory, used total memory ごとの使用量が書き出されます。ただし、ここで示される値は静的に確保した領域の大きさであり、動的に確保される断面積ライブラリ用メモリやタリー用メモリの値は常に小さくなることに注意してください。 各線源詳細情報(**nwsors** を指定した場合のみ) **[parameters]** セクションで **nwsors** を指定すると、最初に発生した **nwsors** 個の線源の種類 (ityp)、領域番号 (reg)、物質番号 (mat)、エネルギー (energy)、位置 (x, y, z)、方向ベクトル (u, v, w)、ウェイト (wt) が書き出されます。 バッチ情報(カテゴリ III) 各バッチ終了時の全ヒストリー数 (ncas)、バッチ開始時の初期乱数 (bitseed)、そのバッチの計算に掛かった CPU 時間が書き出されます。ここに書かれている bitseed を **[parameters]** セクションで定義することにより、そのバッチからの計算を再現できます。 計算プロセス情報(カテゴリ I) PHITS には全ての計算過程で呼ばれる共通サブルーチン analyz があり、どのプロセスが発生したかを識別するパラメータ ncol ごとの呼び出し回数が書き出されます。ncol の詳細は :numref:`sec-dumpall` を参照してください。 分散低減情報(カテゴリ V) **[importance]**, **[weight window]**, **[forced collisions]** などウェイトを制御するセクションを使った場合に、領域ごとの粒子分割 (splitting) や粒子選別 (Russian Roulette) に関する詳細な情報が書き出されます。 領域別散乱情報(カテゴリ V) 高エネルギー核反応数、データライブラリ利用回数、チャンネル別中性子・光子データライブラリ利用回数、フラックスやエネルギーの増減などが領域別に書き出されます。 物質別散乱情報(カテゴリ V) 上記情報が物質別に書き出されます。 粒子情報(カテゴリ IV) 輸送された粒子の種類、生成数、崩壊数、停止した数、領域外に抜け出た数などが書き出されます。 発生線源情報(カテゴリ I) 線源粒子の数やウェイトが書き出されます。 荷電粒子阻止能データ情報(カテゴリ I) ATIMA モデルを使って阻止能を計算する際(**ndedx = 1 or 3**)、新たな輸送荷電粒子とターゲット核の組み合わせごとに阻止能データがメモリ領域に格納され、そのメモリ使用量 **dedx** と上限値 **mdbatima** が書き出されます。上限値に達すると直接計算へ切り替わり計算速度が低下する可能性があるため、その場合は **[parameters]** セクションで **mdbatima** をより大きい値に設定してください。 ジオメトリエラー情報(カテゴリ I) ``Number of lost particles`` は未定義領域に入ってしまった粒子数で、この数が **nlost** を超えると計算が強制終了されます。強制終了された場合は、ジオメトリや線源の設定を再確認してください。設定に問題がなく、lost particle の頻度が非常に低い場合は **[parameters]** セクションで **nlost** を変更して強制終了を回避してください。``Number of geometry recovering`` は座標と領域番号のずれを少しの座標補正で回避できた回数で、主に桁落ちが原因です。``Number of unrecovered errors`` は回避できなかった回数で、頻度が高いと問題になります。 乱数情報(カテゴリ I) 初期乱数 (initial random seed) と、再開始計算用の次の乱数 (next initial random seed) が書き出されます。 各プロセスやモデル・ライブラリの計算回数・CPU時間情報(カテゴリ I) 各プロセスやモデル・ライブラリの計算回数と CPU 時間が書き出されます。各項目の意味は以下の通りです。**icput=0** の場合は total cpu time 以外の計算時間が出力されず、transport, set data, other の項目も出力されません。**[parameters]** セクションで **infout=8** とした場合は核反応モデルごとのサマリーが出力され、各入射粒子の反応が何回モデル計算されたか (count)、成功した回数 (real)、成功率 (%) が書き出されます。 - ``total cpu time``: 総計算時間 - ``transport``: 総計算時間から以下の 5 項目に要した時間を除いた時間 - ``set data``: 入力パラメータ読込など、粒子輸送計算開始前に要した時間 - ``analysis``: 全てのプロセスの計算回数・時間(プロセスについては「計算プロセス情報」を参照) - ``nevap``: 蒸発モデルによる計算回数・時間 - ``dexgam``: 原子核脱励起モデルによる計算回数・時間 - ``other``: その他の計算時間 - ``nreac``: 原子・原子核反応モデルによる計算回数・時間 - ``dklos``: 粒子崩壊過程の計算回数・時間 - ``hydro``: 核子同士散乱過程の計算回数・時間 - ``n-data``: 中性子ライブラリによる計算回数・時間 - ``h-data``: 陽子・重陽子・alpha 粒子ライブラリによる計算回数・時間 - ``p-data``: 光子の原子データライブラリによる計算回数・時間(**negs=-1** の場合) - ``e-data``: 電子・陽電子の原子ライブラリによる計算回数・時間(**negs=-1** の場合) - ``p-egs5``: EGS5 を用いた光子の計算回数・時間 - ``e-egs5``: EGS5 を用いた電子・陽電子の計算回数・時間 - ``e-tsmode``: 電子飛跡構造解析モードによる計算回数・時間 - ``ion-tsmode``: イオン(陽子含む)飛跡構造解析モードによる計算回数・時間 - ``photonucl``: 光核反応モデルによる計算回数・時間 - ``photonucl lib``: 光核反応ライブラリによる計算回数・時間 - ``mu-reac``: ミューオン核反応モデルの計算回数・時間 - ``mu-brem``: ミューオンによる制動放射 X 線発生モデルの計算回数・時間 - ``mu-pprd``: ミューオンによる対生成モデルの計算回数・時間 - ``mu-cap``: ミューオン捕獲反応モデルの計算回数・時間 - ``elast``: 全ての弾性散乱過程の計算回数・時間 - ``ncasc``: 核反応モデルによる直接過程・前平衡過程の計算回数・時間 - ``bertini``: Bertini モデルによる計算回数・時間 - ``isobar``: isobar モデルによる計算回数・時間 - ``JAM``: JAM モデルによる計算回数・時間 - ``QMD``: JQMD モデル、JQMD-2.0 による計算回数・時間 - ``JAMQMD``: JAMQMD モデルによる計算回数・時間 - ``INCL``: INCL モデルによる計算回数・時間 - ``INCELF``: INC-ELF モデルによる計算回数・時間 - ``frag data``: frag data による計算回数・時間 - ``SCINFUL``: SCINFUL モードによる計算回数・時間 引用文献情報(カテゴリ I) PHITS を使った計算結果を発表する際に引用すべき文献の情報が書き出されます。INCL モデル、Kurotama モデル、EGS モードなど外部機関が開発したモデルを使った場合は、それらのオリジナル文献も出力されます。 .. _sec-tallyout: タリー出力ファイル ================================================== 各タリーの出力結果は、そのタリーの **file** パラメータで指定した名前のファイルに書き出されます。 タリー結果のプロット軸が 2 次元の **axis** パラメータ(**xy, yz, xz, rz, chart**)である場合は、**file** で指定したファイル名の拡張子の前に ``_err`` を加えたファイルに統計誤差の結果が出力されます。 さらに、**epsout**, **vtkout**, **bmpout** などを定義した場合は、**file** で指定したファイル名の拡張子を ``.eps``, ``.vtk``, ``.bmp`` に変更した画像形式ファイルが出力されます。 例えば **file = track.out, axis = xy, epsout=1** と設定した場合は、``track.out`` (タリー結果の数値出力)、``track_err.out`` (統計誤差の数値出力)、``track.eps`` (タリー結果の画像出力)、``track_err.eps`` (統計誤差の画像出力)の 4 ファイルが書き出されます。 開発チームが奨励するタリー数値出力ファイルの拡張子は ``.out`` ですが、これ以外の拡張子を指定しても特に問題はありません。 タリー出力ファイルには、まずインプットエコーが出力された後、タリー結果が ANGEL で処理できるグラフ表示形式で出力されます。**axis** で指定した軸以外のパラメータが変化する場合は複数枚のグラフが出力され、各グラフは **newpage:** コマンドで区切られます。 以下、``recommendation/CosmicRay/track_eng.out`` と ``track.out`` を例として、プロット軸が 1 次元および 2 次元のデータ形式の概要を示します。2 次元データの表示方向は、xy 平面では z 軸の正方向から、xz 平面では y 軸の正方向から、yz 平面では z 軸の正方向から見た図になります。 track_eng.out プロット軸が 1 次元(エネルギー)の場合の例です。 1. 1〜51 行目(**[t-track]** から ``#$------------------`` まで) 最初にインプットエコーが書き出されます。 2. 53 行目(``#newpage:``) この行以降に、1 ページ目のグラフに関する情報が出力されることを意味します。 3. 54 行目(``# no. = 1 reg =1000001``) ページ番号と、このページで固定されたパラメータがコメントアウト形式で書き出されます。複数領域の合計値を出力する場合、その領域番号は 1000000+統合領域番号になります。 4. 56 行目(``x: Energy [MeV/n]``) X 軸ラベルです。各タリーの **x-txt** パラメータで指定できます。 5. 57 行目(``y: Flux [1/cm^2/(MeV/n)/source]``) Y 軸ラベルです。各タリーの **y-txt** パラメータで指定できます。 6. 58 行目(``p: xlog ylog afac(0.8) form(0.9)``) グラフの基本設定に関する ANGEL パラメータです。例えば **xlog** と **ylog** は X 軸・Y 軸が対数表示であることを示します。横軸のデフォルトはメッシュタイプが 1,2,4 の場合は線形(**xlin**)、3,5 の場合は対数(**xlog**)で、縦軸は常に対数です。各 ANGEL パラメータの意味は :numref:`Asec-angel` もしくは ANGEL マニュアルを参照してください。 7. 59 行目(``h: n x y(proton),hh0l ...``) 次行以降に書かれたタリー結果のプロット方法を定義しています。``n`` は読み飛ばし、``x`` は X 軸数値、``y(proton)`` などは Y 軸数値を表します。括弧内は legend、``hh0l`` はグラフの描画方法です。 8. 60 行目(``# e-lower e-upper proton r.err ...``) 次行以降に書かれたタリー結果の意味を示します。コメント行なので ANGEL では処理されません。基本的には **axis** で定義したパラメータのメッシュ下限値・上限値・タリー結果・相対誤差の順です。複数の **part** を指定した場合は列が追加されます。 9. 61〜180 行目 タリー結果の数値データが出力されます。行数はメッシュ数、列数は ``2 + part で指定した粒子数 × 2`` です。 10. 182 行目(``# sum over``) タリー結果の合計値もしくは平均値が出力されます。 11. 184 行目(``'no. = 1, reg =1000001'``) ページタイトルが出力されます。 12. 185〜191 行目(``msuc: {...}`` から ``e:`` まで) 図のタイトルや PHITS と ANGEL のバージョンなどが ANGEL パラメータ形式で出力されます。 13. 193〜199 行目(``# Information for Restart Calculation`` 以降) 最後に、乱数やヒストリー情報など再開始計算に必要な情報が出力されます。 track.out プロット軸が 2 次元(x, y)の場合の例です。 1. 1〜97 行目(**[t-track]** から ``#$------------------`` まで) 最初にインプットエコーが書き出されます。 2. 99 行目(``#newpage:``) この行以降に、1 ページ目のグラフに関する情報が出力されることを意味します。 3. 100〜103 行目(``# no. = 1 ie = 1 iz = 1 part. = all`` から ``# mset = 1`` まで) ページ番号および、このページで固定されたパラメータがコメントアウト形式で書き出されます。 4. 105 行目(``'no. = 1, ie = 1, iz = 1, mset = 1'``) ページタイトルが出力されます。 5. 106〜108 行目 図のタイトルや PHITS と ANGEL のバージョンなどが ANGEL パラメータ形式で出力されます。 6. 110〜119 行目 2 次元プロットの詳細な設定が ANGEL パラメータ形式で出力されます。例えば **c3**, **c4** パラメータで定義される **cmin**, **cmax** は表示するデータの最小値・最大値です。**p: zlog** は対数表示、**p: zlin** は線形表示を意味します。 7. 120〜121 行目 データのメッシュ数および格納順番が書き出されます。この例では、データが X 昇順から Y 降順で 120 個ずつ並んでいます。 8. 123 行目(``hc: y = 59.50000 to -59.50000 ...``) データをプロットする軸座標が書き出されます。縦軸は上から下に向かって 59.5 から -59.5 まで 1.0 間隔、横軸は左から右に向かって -59.5 から 59.5 まで 1.0 間隔でデータが並びます。 9. 124〜1563 行目 ``data(1,ny), data(2,ny), ... , data(nx,1)`` の順で連続してデータが出力されます。10 個ごとに改行されるため、この例では ``120 × 120 / 10 = 1440`` 行になります。表計算ソフトへコピーしやすい形式で出力したい場合は、**2d-type=5** を指定してください。詳細は :numref:`sec-2dtype` を参照してください。 10. 1566 行目(``# gshow``) 2 次元プロットと重ね合わせ表示する幾何学形状情報の出力開始を意味します。**gshow=0** の場合は出力されません。 11. 1568〜2681 行目 幾何学形状に関する情報が出力されます。 12. 2684〜2713 行目 グラフ表示に関するさまざまな設定が出力されます。 13. 2716 行目(``newpage:``) 新しいグラフページの開始を意味します。ヒストグラムの場合と異なり、各 **part** に対して 1 枚の 2 次元プロットを出力するため、同じ設定でも複数ページの出力になります。この例では、1 ページ目が **part=all**、2 ページ目が **part=proton**、以下 **part=neutron** (5333行目)、**part=Fe** (7950行目)と続きます。 14. 10566〜10572 行目(``# Information for Restart Calculation`` 以降) 最後に、乱数やヒストリー情報など再開始計算に必要な情報が出力されます。