5.30. [ User Defined Interaction ], [ User Defined Particle ] セクション¶
このセクションは、ユーザーが定義した相互作用または粒子を利用するためのセクションです。
詳細は
/phits/utility/UserDefinedModel/readme-jp.pdfを参照してください。現在、電子、陽電子および光子で User Defined Interaction を使用する場合は EGS5 を使用する必要があります( negs=1, 2 )。
設定可能なユーザー定義粒子の kf-code 値の範囲は \(900000 \le \mathrm{kf} \le 999999\) または \(-999999 \le \mathrm{kf} \le -900000\) です。
/phits/src/ フォルダに関連する以下の3種類のファイルがあります。
udm_int_<NAME>.f90ユーザーが定義した相互作用の情報(断面積など)が書かれたモジュールが定義されたソースファイル。 ファイル名の<NAME>の部分は、ユーザーが任意に決められます。udm_int_sample.f90は初めから/phits/src/フォルダに入っています。 このサンプル・ソースでは、100 MeV 以上の電子または陽電子が、原子番号 \(Z\) の物質と \(Z\times 10^{-6}\) barn の断面積で相互作用し、ユーザー定義粒子を1つ放出します。udm_part_<NAME>.f90ユーザーが定義した粒子の情報(質量、寿命、分岐比など)が書かれたモジュールが定義されたソースファイル。 ファイル名の<NAME>の部分は、ユーザーが任意に決められます。udm_part_sample.f90は初めから/phits/src/フォルダに入っています。 このサンプルコードでは、電子ニュートリノに崩壊するユーザー定義粒子を定義します。 その質量と寿命はインプットファイルで指定できます。udm_manager.f90使用するモジュールを指定するファイル。
以下は、 [ User Defined Interaction ] の入力例です。
[ User Defined Interaction ]
$ Name Bias Parameters
my_interaction 1.0e+5 900000
この入力例は、初めから入っている udm_int_sample.f90 を動かすためのインプットファイルです。
第1、第2引数は、使用するモジュールの Name とバイアス値を入力します。
例えば、 my_interaction は、 udm_int_sample.f90 で定義されている udm_int_sample モジュールの Name 変数に代入された文字列と同じものです。
バイアスの値を1以上にすることで、断面積の小さいプロセスの発生頻度を上げることができます。
その場合、発生粒子の重みは自動で調整されるため、平均的な最終結果はバイアスの値に依りません。
第3引数では0個以上のパラメータ値を入力できます。
使用するパラメータの個数や意味は、使用するソースファイルに依存します。
udm_int_sample モジュールの場合、パラメータ値の1番目は、生成するユーザー定義粒子の kf-code です。
以下は、 [ User Defined Particle ] の入力例です。
[ User Defined Particle ]
$ Name kfcode Parameters
my_particle 900000 1.0 1e-8
この入力例は、初めから入っている udm_part_sample.f90 を動かすためのインプットファイルです。
第1、第2引数は、使用するモジュールの Name と、このファイルで扱う粒子の kf-code を入力します。
例えば、 my_particle は、 udm_part_sample.f90 で定義されている udm_part_sample モジュールの Name 変数に代入された文字列と同じものです。
第3引数では0個以上のパラメータ値を入力できます。
使用するパラメータの個数や意味は、使用するソースファイルに依存します。
udm_part_sample モジュールの場合、パラメータ値の1、2番目は、ユーザー定義粒子の質量(MeV)と寿命(秒)です。
udm_part_<NAME>.f90 ファイルはユーザー定義粒子だけでなく、既存の粒子の性質(寿命や分岐比)を変更することもできます。
5.30.1. ユーザーコードの応用例¶
5.30.1.1. 例1: 陽電子起因のミューオン対生成¶
\(e^+e^-_{\rm atomic}\to\mu^+\mu^-\)
ユーザーコード: udm_int_ee2mumu.f90
使用方法:
[ User Defined Interaction ]
$ Name Bias Parameters
ee2mumu 1.0e+5
5.30.1.2. 例2: ニュートリノ反応¶
データベースを読み込むことで、より幅広いニュートリノ反応を生成できます。 データベースの例を以下のURLからダウンロードできます。
https://rcwww.kek.jp/research/shield/sakaki/phits/temp.html
ユーザーコード: udm_int_neutrino.f90
使用方法:
[ User Defined Interaction ]
$ Name Bias Parameters
neutrino 1 <データベースフォルダの絶対パスまたは相対パス>
5.30.1.3. 例3: 指定の領域または粒子にのみエネルギーカットオフを適用する¶
ユーザーコード: udm_int_kill.f90
使用方法:
<kf-code> に対応する粒子を、領域番号 <reg> において、エネルギーが <emin> 未満で輸送したくない場合、これら3つの値を Parameters の部分に繰り返し書きます。
Bias の数値は無視されます。
[ User Defined Interaction ]
$ Name Bias Parameters
kill 1 <kf1> <reg1> <emin1> <kf2> <reg2> <emin2> ...
記入例1:
電子(kf=11)を領域 101 でエネルギーが 500 MeV 未満の場合、および中性子(kf=2112)を領域 102 でエネルギーが 100 MeV 未満の場合輸送しません。 kf=0 はすべての粒子を意味します。
[ User Defined Interaction ]
$ Name Bias Parameters
kill 1 11 101 500 2112 102 100
記入例2:
各行に <kf> <reg> <emin> の情報が書き込まれたデータファイルを用意します。
Parameters の部分にそのファイルの相対パスまたは絶対パスを記述します。
[ User Defined Interaction ]
$ Name Bias Parameters
kill 1 emin.txt
emin.txt の中身の例(数値が3つ並んでいない行はスキップされる):
# kf reg emin
11 101 100
-11 101 100
2212 102 50
0 103 30