5.28. [ Counter ] セクション

PHITSでは、各粒子はエネルギーや位置情報の他に、「カウンター」という個別の値を保持しています。 カウンター値は、特定の領域への入出( in , out )、領域内での散乱・核反応( coll )、境界での反射( ref )といったイベントが発生するたびに変化させることができ、これにより、タリーされた粒子がどのような履歴を経てその場所に到達したかを詳細に調べることが可能です。 したがって、カウンターは、PHITSシミュレーションにおける「イベント・ロガー」的な役割を果たします。 カウンターによる制限を有効にするためには、各タリーセクションまたは[Parameters] セクションにおいて ctminctmax パラメータを設定します。これにより、特定のカウンター値を持つ粒子のみをタリーの対象としたり(ゲート機能)、特定の条件を満たした粒子の追跡そのものを打ち切ったり(カットオフ機能)することができます。

カウンターは3つ用意され、それぞれのカウンターで領域ごとに、その動作を定義します。 カウンターの動作契機は大きく分けると5つあり、領域に入った時 [1]in )、領域を出た時( out )、境界で反射を起こした時( ref )、反応を起こした時( coll )、 ndata によるタリーが行われた時( ndata )です。 それぞれに、カウンターの進度(-9999-9999)、もしくは、ゼロセット(10000)を定義できます。 カウンターは粒子に付随して、散乱によって生成される粒子は、親のカウンターを引き継ぎます。 カウンターの容量は、-9999から9999まででそれ以下、以上になる時は変化しません。 カウンターは、 part = を使って粒子毎に指定できます。 また、 *part = とすれば、カウンターを動作させない粒子を指定できます。

書式は以下のようになります。

リスト 5.28.1 [ Counter ] セクションの例題(1)
[ Counter ]
   counter = 1
      part = neutron proton
    reg     in     out    coll    ref
      1      1   10000       0      0
     11      1   10000       0      0
   counter = 2
     *part = proton deuteron triton 3he alpha nucleus
    reg                        in     out    coll
     ( { 2 - 5 } 8 9 )          -1       0       1
   counter = 3
      part = 208Pb
    reg                        coll
     ( 11 12 15 )                 5
     ( 6<10[1 0 0]<u=3 )        100
    ....            ........
    ....            ........

読み飛ばしコラム用の non も使えます。 inoutcollref の内、少なくともひとつは定義されなければなりません。 省略された場合は、ゼロ、つまりカウントなしと見なされます。 数字は、カウンターの進度を表します。 この数だけカウンターに加えられます。 10000 は、ゼロセットを意味します。 ソース粒子のカウンター初期値はゼロです。

同じ値の領域をまとめて書く、 ( { 2 - 5 } 8 9 ) という書式も使えます。 また、 ( 6 < 10[1 0 0] < u=3 ) などの lattice, universe 構造も指定できます。 ただし、単一の数字で無い場合は必ず ( ) で括ってください。 universe を使って体系を作成した際は、「universe を入れ込む枠のセル番号」ではなく、「universe 内で定義しているセル番号」を指定してください。

part= での粒子指定では、粒子は20個まで指定できます。 原子核は、 208Pb のように質量数を指定すればその核、 Pb のように質量数を指定しなければ、 Pb の同位体全体を指定することになります。

バージョン2.90以降、反応を起こした時( coll )に属するイベントを細かく分類し、カウンターの動作契機を増やしました。 まず、 coll は、原子核反応を起こした時( nucl )、原子相互作用により粒子を生成した時( atom )、崩壊を起こした時( dcay )の3つに分類されます。 そして、 nuclatom は更にそれぞれ3つと10つに分かれます。 表 5.28.1coll に属する各種のイベントを示します。 これらの反応イベントを詳細に分析したい場合は、カウンターの動作契機として各反応のキーワードを指定してください。 ただし、例えば、 collnucl を同時に指定した場合は、重複してカウントされますので、ご注意ください。

fiss を設定すると、散乱(核反応)が起こり、更に核反応として核分裂が起こった時だけカウンターが呼ばれます。 核分裂が起こったかどうかの判定は、核データを使う時は核データの fission チャンネルが選択された時、反応モデルを使う時は統計崩壊過程において fission チャンネルが選ばれた時です。

表 5.28.1 coll に属するイベントの分類

相互作用

反応イベント

説明

nucl

原子核反応を起こした時。

elst

弾性散乱を起こした時。

iels

非弾性散乱を起こした時。

fiss

核分裂を起こした時。

atom

原子相互作用により粒子を生成した時。

delt

デルタ線を生成した時。

knoe

電子と陽電子による knock on electron 生成が起こった時。

fluo

蛍光X線を生成した時。

auge

Auger 電子を生成した時。

brem

制動放射を起こした時。

phel

光電効果を起こした時。

cmpt

コンプトン散乱を起こした時。

pprd

電子陽電子対を生成した時。

anih

陽電子が消失した時。

rayl

レイリー散乱を起こした時。

dcay

崩壊を起こした時。

動作契機として inout を設定しかつ [t-cross] でその境界面を指定した場合、タリーした後にカウンター値が変わるのでご注意ください。 変化前のカウンター値を指定しないと、境界面を通過する瞬間の情報はタリーされません。 一方、 coll やこれに属する反応イベントを動作契機として設定した場合は、タリーする前にカウンター値が変わります。 [t-yield][t-product][t-interact][t-point] において反応イベントが起こった瞬間の情報をタリーする場合は、変化後のカウンター値を指定してください。

動作契機として ndata を設定すると、 [t-yield][t-dchain] における ndata=3 とした場合に、 file(27) で指定したフォルダにある断面積データを参照してタリーした時にカウンター値が変わります。 これにより、生成量の2重カウントを避けることができます。 ndata オプションを使用した [t-yield][t-dchain] では、核反応モデル等で評価された生成量の代わりに、上記の断面積データを参照した評価値がタリーされます。 しかし、核反応モデル等で生成された2次粒子はその後も輸送計算の対象となるため、 output=cutoff の場合、その2次粒子の寄与もタリーされて2重カウントとなります。 そこで例えば、 ndata のカウンター値を1とし、タリーにおいて ctmax(i)=0,(i=1,2,3) とすることで、1度タリーされた粒子の寄与が制限されて、2重カウントを避けることが可能となります。