PHITS Multi-Purpose Particle and Heavy Ion Transport code System PHITS 応用実習②: 計算効率を上げるためのvariance reduction(粒子のウェイト)の利用 2015年08月改訂 title 1 実習内容 1.はじめに 2.中性子深層透過計算 [importance] Geometry splitting and Russian Roulette (セルインポータンス法) [weight window] Weight windows (ウェイト・ウインドウ法) 3.薄膜からの生成粒子計算 [forced collisions] 強制衝突法 2 中性子深層透過計算 厚い遮蔽体の中性子輸送を計算し、深さ毎の実効線量率分布を計算 まずはimp.inpを走らせて,計算時間を計ってみよう imp.inp ヒストリ数は1,500 計算時間はphits.outの最後の方 (total CPU time)に出力される 半径50cm、深さ180cmのコンクリート円柱 空気 14MeV 中性子 コンクリート [Parameters] icntl = 0 maxcas = 1500 maxbch = 1 ... [ T - T r a c k ] (3つ目) mesh = xyz … z-txt = (uSv/h)/(source/sec) file = imp-dose-xz.out part = neutron epsout = 1 multiplier = all part = neutron emax = 1000.0 mat mset1 all ( 1.0 -102 ) 実効線量は,[t-track]で計算した中性子フルエンスに内蔵線量換算係数を乗じて導出3 詳細はマニュアル(4.25[multiplier]&6.1[t-track])もしくはlecture\exercise1を参照 中性子深層透過計算 シングルコア(1.50GHz AMD)の計算 imp-dose-xz.eps ヒストリー数 1,500 total cpu time = 19.53 sec imp-dose-xz.eps 効率良く計算したい。 ヒストリー数 270,000 total cpu time = 660.05 sec 分散低減法 ウェイトの概念を利用 4 モンテカルロ計算におけるWeightの概念 例:track length タリー ウェイト: モンテカルロ計算における粒子の重要度、通常の計算は1*。 ウェイトを操作して、統計上発生しにくいイベントを人為的に発生させる。 ただし,ウェイトを操作した場合,ヒストリー毎の頻度分布([t-deposit], output = depositなど)の計算ができなくなるので注意が必要。 *ただし、核データを使用した中性子輸送計算では、ウェイトが変化する 5 実習内容 1.はじめに 2.中性子深層透過計算 [importance] Geometry splitting and Russian Roulette (セルインポータンス法) [weight window] Weight windows (ウェイト・ウインドウ法) 3.薄膜からの生成粒子計算 [forced collision] 強制衝突法 6 セルインポータンス法 •領域(セル)にインポータンスIを設定 •中性子がセル1とセル2を横切る時、I2/I1を設定 I2/I1 > 1: Particle Split (粒子の分割) 例 I2/I1 が整数の場合 I2/I1 が非整数の場合 I2/I1 = 3: 3つの粒子にsplit(分割) I1=1 W=1 I2/I1 = 2.75: I2=3 W=1/3 W=1/3 W=1/3 I2/I1 < 1: Russian Roulette (消滅か生存) 75%の確率で3つの粒子に分割 25%の確率で2つの粒子に分割 I1=1 I2=1/3 W=3 1/3の確率 W=1 消滅 2/3の確率 7 1ヒストリーのときの中性子飛跡を確認 imp-hist.inpを走らせて,中性子の飛跡を確認してみよう 空気 5MeV I =1.0 中性子 10 コンクリート (半径20cm, 深さ8cm×2) I1=1.0 I2=1.0 標準では、インポータンスは全て1 imp-trajectory.eps 8 インポータンスを大きくしたときの中性子挙動を確認 imp-hist.inp I10=1 [importance] part = neutron reg imp 10 1 1 2 2 4 I1=2 ここで反応が起きた I2=4 この時点で既に2つ に分かれている imp-trajectory.eps 9 インポータンスを小さくしたときの中性子挙動を確認 imp-hist.inp I10=1 [importance] part = neutron reg imp 10 1 1 1/2 2 1/4 I1=1/2 I2=1/4 1/2の確率で生存 1/2の確率で消滅 imp-trajectory.eps 10 インポータンスを極端に大きくしたときの中性子挙動を確認 imp-hist.inp I10=1 [importance] part = neutron reg imp 10 1 1 2 2 100 I1=2 粒子が分割しすぎて計算時間が無駄 になってしまう (統計はあまり良くならない) I2=100 imp-trajectory.eps セル間のインポータンスの比は最大2~3程度が良い “A Sample Problem for Variance Reduction in MCNP” LA-10363-MS DE86 004380 11 インポータンスを使用した中性子深層透過計算例 imp.inpの [importance]セクションを有効にして、 実行してみよう 半径50cm、深さ180cmのコンクリート円柱 セルの厚さは15cm 半径1cmの14MeV中性子をz=0からz軸に沿って入射 14MeV 中性子 Ii+1/Ii = 2.5 と設定 [importance] part = neutron reg imp 1 2.5**0 2 2.5**1 3 2.5**2 4 2.5**3 5 2.5**4 6 2.5**5 7 2.5**6 8 2.5**7 9 2.5**8 10 2.5**9 11 2.5**10 12 2.5**11 12 インポータンスを使用した中性子深層透過計算例 1.50GHz, single [importance] 未使用 ヒストリー数 1,500 total cpu time = 19.53 sec 1 Dose imp-dose-xz.eps [importance] 使用 total cpu time = 50.49 sec Relative error imp-dose-xz_err.eps 相対誤差の確認重要(赤1.0、黄 約0.1、緑 約0.01 ) 13 インポータンスを使用した中性子深層透過計算例 元データ:imp-dose-reg.out 元データ:imp-energy-reg.out 領域(15cm厚)毎の線量変化 ・各領域のスペクトルが良い一致 セル3の中性子エネルギースペクトル 妥当なインポータンスの設定 14 インポータンス利用の注意点 セル間の大きなインポータンスの比は良くない。多くの粒子分割を一度に引き起こす。 良い例 粒子 1 2 4 8 16 32 1 1 8 8 8 32 悪い例 粒子 セル間のインポータンスの比は最大2~3程度が良い 参考文献 “A Sample Problem for Variance Reduction in MCNP” LA-10363-MS DE86 004380 15 インポータンスの誤った使用例 大きなインポータンスのギャップを作って実行してみよう。 imp-dose-xz.eps imp-dose-xz_err.eps 悪い例: Cell 5と6の間に急激 なImportanceギャップ [[importance] part = neutron reg imp 1 2.5**0 2 2.5**0 3 2.5**0 4 2.5**0 5 2.5**0 6 2.5**5 7 2.5**6 8 2.5**7 9 2.5**8 10 2.5**9 11 2.5**10 12 2.5**11 先ほどの結果と比較して相対誤差が非常に大きい 16 実習内容 1.はじめに 2.中性子深層透過計算 [importance] Geometry splitting and Russian Roulette (セルインポータンス法) [weight window] Weight windows (ウエイト・ウインドウ法) 3.薄膜からの生成粒子計算 [forced collisions] 強制衝突法 17 セルインポータンス法とウェイトウィンドウ法の違い • • セルインポータンス法は,領域ごとにウェイトが取りえる値を設定 ウェイトウィンドウ法は,領域かつエネルギー群ごとに粒子が取 りえるウェイトの幅(ウィンドウ)を設定 重要となるエネルギー領域(例えば高速中性子など)に, より焦点を絞ったシミュレーションが可能 セルインポータンス法 W2=1/3 領域2 粒子数 1 → I2/I1=3 W=1 WU=2.5 WU=1.25 W1=1 ウェイト I2=3 W1=1 領域1 WU=2.5 ウェイト ウェイト I1=1 ウェイトウィンドウ法 WL=0.5 WL=0.25 領域1 領域2 エネルギー群1 エネルギー群2 粒子数 1 → 1 WL=0.5 WU=0.83 W2=0.5 WL=0.17 粒子数 1→W1/W2=2 18 ウェイトウィンドウ法に関連するパラメータ wupn: ウェイトウィンドウの上限値の下限値の比(D=5.0) mxspln: 1回の粒子分割で分割する粒子の最大数(D=5.0) mwhere: ウェイトウィンドウが考慮されるタイミング(D=0) -1:核反応時,0:両方,1:領域横断時 詳細はマニュアル「4.2.4 時間カット,ウェイトカット,ウェイトウィンドウ」を参照 19 1ヒストリーのときの中性子挙動を確認 weight-hist.inpを実行してみよう 5MeV 中性子 空気 水 (半径10cm, 深さ5cm×2) weight-trajectory.eps 20 ウェイトウィンドウを設定した場合の中性子挙動を確認 weight-hist.inpの1つ目の[weight window] を有効にして実行してみよう ウ ェ イ ト の 下 限 値 WL を [weight window]セクションで設定する 上限値は,自動的にその5倍に設定 される(wupnパラメータ) weight-hist.inp [weight window] part = neutron reg ww1 1 0.25 2 0.25 領域毎の指定のみ (エネルギー毎に分割しない) WU=5 x WL =1.25 ウェイト W1=1 WL=0.25 W =0.25 L 領域1 領域2 weight-trajectory.eps 中性子のウェイトがウェイトの幅の中にあるので、粒子分割や粒子消滅は起きない 21 ウェイトウィンドウを下げたときの中性子挙動を確認 領域2のウェイトウインドウの下限値を 下げて実行してみよう weight-hist.inp [weight window] part = neutron reg ww1 1 0.25 2 0.125 WU=1.25 ウェイト W1=1 WU=0.625 WL=0.25 領域1 WL=0.125 領域2 粒子分割 weight-trajectory.eps 領域2で粒子ウェイトが領域ウェイトの上限値を上回るので2つに分裂した 22 ウェイトウィンドウを極端に下げたときの中性子挙動を確認 領域2のウェイトウインドウの下限値を 極端に下げて実行してみよう weight-hist.inp [weight window] part = neutron reg ww1 1 0.25 2 0.005 WU=1.25 ウェイト W1=1 WL=0.25 WU=0.025 WL=0.005 領域1 領域2 weight-trajectory.eps 40個になるまで粒子分割(ただし1度に分割するのは最大5粒子まで) セル間のウェイトウィンドウの比も最大2~3程度が良い 23 エネルギー群毎にウェイトウィンドウを設定 weight-hist.inp 1つ目の[weight window]を無効にして、 2つ目の[weight window]を有効にしよう エネルギー毎に異なるウェイトウィンドウをかける ただし,今回は,別々に設定するが値は同じ WU=1.25 WU=1.25 W1=1 W1=1 WL=0.25 WL=0.125 領域1 領域2 粒子分割 E < 0.01 MeV WU=0.625 ウェイト WU=0.625 ウェイト [weight window] part = neutron 各エネルギー群 の最大値 eng = 2 0.01 1.0e5 reg ww1 ww2 1 0.25 0.25 2 0.125 0.125 WL=0.25 WL=0.125 領域1 領域2 粒子分割 0.01 MeV < E < 105MeV weight-trajectory.eps 領域2で粒子ウェイトが領域ウェイトの上限値を上回るので2つに分裂した(2ページ前と同じ)24 低エネルギー中性子のウェイトウィンドウを上げる weight-hist.inp 0.01MeV以下の中性子のウェイトウインドウ の下限値のみ10倍に上げてみよう WU=12.5 WU=6.65 WL=2.5 W1=1 WU=1.25 WL=1.33 W1=1 ウェイト ウェイト WU=0.67 領域1 領域2 粒子消滅 E < 0.01 MeV [weight window] part = neutron eng = 2 0.01 1.0e5 reg ww1 ww2 1 0.25*10 0.25 2 0.133*10 0.133 低エネルギー 中性子が消滅 WL=0.25 WL=0.133 領域1 領域2 粒子分割 0.01 MeV < E < 105MeV weight-trajectory.eps 低エネルギー中性子の発生を抑え,高エネルギー中性子を中心に解析する 浅い場所での統計が下がり,より深い場所での統計が溜まりやすくなる 25 ウェイトウィンドウを使用した中性子深層透過計算例 weight.inp weight.inpを走らせて,計算時間を確認してみよう [weight window] set: c10[1.0] part = neutron eng = 2 1.0e-3 reg ww1 1 c10*2.5**(-1) 2 c10*2.5**(-2) 3 c10*2.5**(-3) ・・・ 体系,ヒストリー数などはimp.inpと同じ 半径50cm、深さ1.8mの コンクリート円柱 1e5 ww2 2.5**(-1) 2.5**(-2) 2.5**(-3) 14MeV 中性子 セルの厚さは15cm total cpu time = 25.89 sec 領域毎にウェイトウィンドウを1/2.5に下げて粒子分割する 全エネルギーに同じウェイトウィンドウをかける(c10=1.0のため) weight-dose-xz.eps weight-dose-xz_err.eps 26 ウェイトウィンドウを使用した中性子深層透過計算例 weight.inp weight.inpの低エネルギー中性子のウェイトウィンドウを 10倍にして実行し,計算時間を計ってみよう [weight window] set: c10[10.0] part = neutron eng = 2 1.0e-3 reg ww1 1 c10*2.5**(-1) 2 c10*2.5**(-2) 3 c10*2.5**(-3) ・・・ 低エネルギー中性子は,生成された瞬間にウェイトウィン ドウ幅から外れるので,ロシアンルーレットにかけられ,ほ とんどが殺されてしまうため,計算時間が短縮される 1e5 ww2 2.5**(-1) 2.5**(-2) 2.5**(-3) weight-dose-xz.eps ただし,低エネルギー中性子は飛程が短いので,低エネ ルギー中性子をカットしても深部での統計誤差はそれほ ど変わらない total cpu time = 25.89 -> 14.53 sec weight-dose-xz_err.eps 27 計算時間の比較 普通の計算 total cpu time = 19.53 sec [importance] 使用 total cpu time = 50.49 sec [weight window] 領域毎に設定 total cpu time = 25.89 sec [weight window] 領域・エネルギー毎に設定 total cpu time = 14.53 sec 28 コンクリート中の線量率減衰 90 cm 180 cm 通常計算の深い場所を除いて良く一致 エネルギー群で異なるウェイトウィンドウを設定すれば, より効率的な粒子輸送の計算が可能となる 29 実習内容 1.はじめに 2.中性子深層透過計算 [importance] Geometry splitting and Russian Roulette (セルインポータンス法) [weight window] Weight windows (ウェイト・ウインドウ法) 3.薄膜からの生成粒子計算 [forced collisions] 強制衝突法 30 薄膜を用いた断面積測定実験を模擬しよう • [t-product]: ターゲット内で生成するα粒子とSiの生成エネルギー分布 → 真の断面積 • [t-cross]:検出器に入射したα粒子とSiのエネルギー分布 → 測定上の断面積 強制衝突無し:殆どの入射粒子は衝突しない force.inp force.inpを実行してみよう maxcas = maxbch = product.eps 5000 5 半径0.5cm, 0.01mm厚さSi cross.eps 100MeV陽子 真空 検出器 31 強制衝突法 衝突の確率の低いターゲット(薄膜)から生成する粒子を解析するときに利用 二つに分割 非衝突粒子 l:セルを横切る長さ 入射粒子 Wi 衝突粒子 非衝突のウェイト: Wi×exp(-σl) 衝突のウェイト: Wi×{1-exp(-σl)} 強制衝突領域 σ: 巨視的断面積 衝突位置は断面積に従って確率的に決定 強制衝突法はヒストリー分散を減らすが、ヒストリー当たりの計算時間が増える。 セルでは一つ以上の衝突が起こる。 fcl:強制衝突コントロールパラメータ (通常 fcl = -1 を使用) • fcl = -1:強制衝突による生成粒子は通常の衝突をさせる(ウェイトカットオフは考慮しない) • fcl = 1:強制衝突による生成粒子は,ウェイトカットオフになるまで強制衝突させる 32 強制衝突させてみよう ターゲット内での粒子生成時点の情報をタリー force.inp 強制衝突の設定を行おう [Forced Collisions] off part = proton reg fcl 1 -1.0 track-xz.eps α product.eps offを削除して実行 強制衝突による生成粒子のウェイトが、ウェイトカットオフwc2を下回る。 ⇒ Russian Rouletteが働くため、粒子輸送されにくい。 cross.eps 33 強制衝突で発生させた2次粒子を輸送するには? force.inp 強制衝突で生成する粒子を輸送させるため、 ウェイトカットオフwc2を極力低く設定してみよう。 [parameters] ………. wc2(1) = 1.0E-12 # weight cutoff of proton wc2(2) = 1.0E-12 # weight cutoff of neutron wc2(14) = 1.0E-12 # weight cutoff of photon wc2(15) = 1.0E-12 # weight cutoff of deuteron wc2(16) = 1.0E-12 # weight cutoff of triton wc2(17) = 1.0E-12 # weight cutoff of 3He wc2(18) = 1.0E-12 # weight cutoff of Alpha wc2(19) = 1.0E-12 # weight cutoff of Nucleus product.eps cross.eps track-xz.eps α Si 34 多くの生成Siがターゲット内で止まるため,この実験からは断面積が正しく測定できない まとめ 深層透過計算の場合は、importance法やweight window法が有効 隣り合うセル間のインポータンスやウェイトウィンドウ値の比は、大き すぎないようにすること。 ファクター2~3以下が望ましい。 ウェイトウィンドウを活用することで、さらに効率的な中性子輸送の計 算が可能。 薄膜における生成粒子情報を計算するには、forced collisionsが有効 35
© Copyright 2024 ExpyDoc