CBZ による中性子増倍率の感度係数の計算12023/3/1

千葉豪

中性子増倍率 k の断面積 σ に対する感度 S は以下の式で定義される。

S=

∂k σ·
∂σ k(1)感度係数を計算する方法としては、着目した断面積に直接変動を与えて k の変動を観察する直接的な方法に加えて、中性子束分布と随伴中性子束分布を用いる摂動論に基づく方法が挙げられる2 。本稿では CBZ を用いた後者の方法に基づく感度係数の計算方法について説明する。なお本稿では、例として、濃縮ウラン金属の球を天然ウランが囲む球体系の原子炉 Flattop-25 を離散座標法に基づく中性子輸送ソルバー SNR で計算する場合を示す（CBZ パッケージのCBZCAL/lanl.tutorial ディレクトリに関連ファイルが置かれている）。

事前準備：多群断面積の計算

1

摂動論に基づいて感度係数を計算するためには中性子束と随伴中性子束のエネルギー分布、空間分布を計算する必要があるが、そのためにはまず対象とする原子炉の各媒質の多群断面積を計算しなければならない。多群断面積の計算の手続きは CBZ のチュートリアルで述べられているので、そちらを参照されたい。一点注意すべき事項は、計算した多群断面積を外部ファイルに書き出す際、微視的断面積も書き出さなければならない点である。中性子輸送方程式を解くだけならば巨視的断面積のみで済むが、それぞれの核種の核データに対する感度を計算する場合には核種毎の核データの情報（すなわち微視的断面積）も必要となるためである。

lanl.tutorial ディレクトリの場合だと、多群断面積を計算するのは main.xs.cxx ファイルである。この 17 行目に微視的断面積データをファイルに書き出すかどうかを定義する boolean 変数 micxs write が false に設定されているので、これを true にして計算させる必要がある。

2

感度の計算

2.1

計算条件の設定

中性子輸送計算を行う際には、反復計算の収束条件、最大反復回数などの計算条件を指定する必要がある。その情報を持つのが GeneralOption クラスであり、通常の輸送方程式（前進式 forward）を解くか、随伴式 adjoint を解く
かもこのクラスで定義する。GeneralOption クラスの使用例を以下に示す。

Listing 1: 計算条件の設定例
123// GeneralOption
G e n e r a l O p t i o n opt , o p t 2 ;opt . PutAdjointCal ( ) ;この例では GeneralOption クラスの二つのインスタンス（opt と opt2）を作成している。インスタンス作成時には種々の計算条件はデフォルト値に設定される。解くべき方程式の種類については、デフォルトでは前進式に設定されるが、この例では opt に対して PutAdjointCal メソッドを用いることにより随伴式を解く条件に変更している。

2.2

中性子輸送方程式の数値計算

中性子輸送方程式を解くソルバーは CBZ にいくつか備えられているが、球体系の式を離散座標法を用いて解く場合は SNR ソルバー用いる。SNR を用いた随伴輸送方程式の計算例を以下に示す。

1 /Document/CBG Manual/SensCalKeﬀ/
2 摂動論については、ホームページ上の項目「炉物理プログラム演習」の「随伴方程式と摂動計算」を参照されたい。

1Listing 2: SNR を用いた随伴式の計算例
12345678910// SNR f o r a d j o i n tSNRSystem s n r a d j ( dim , group , mednum ) ; // group & mediums n r a d j . AddMedium ( med [ 0 ] ) ;s n r a d j . AddMedium ( med [ 1 ] ) ;s n r a d j . PutCartMeshInfo ( cmi , ” S p h e r e ” ) ;s n r a d j . PutPL ( p l ) ;s n r a d j . S e t Q u a d r a t u r e (&quad1 ) ;s n r a d j . PutGeneralOption ( opt ) ;s n r a d j . PutWriteFlux ( ) ;r e a l k1=s n r a d j . C a l I g e n ( ) ;2 行目では SNR ソルバーの実体となるクラス SNRSystem のインスタンス snr adj を生成する。引数は一つ目が体系の次元数（球体系の場合は 1）、二つ目がエネルギー群数、三つ目が体系に含まれる媒質の数に対応する。

3、4 行目では媒質を示す Medium クラスのインスタンスの情報を追加している。追加された順番で SNR は Medium
クラスのインスタンスに物質 ID を付与していくため、この例では SNR は med[0] の物質 ID を 0、med[1] の物質 ID
を 1 と認識する。

5 行目では体系情報を示す CartMeshInfo クラスのインスタンスの情報を SNR のインスタンスに与えている。引数の二つ目は体系の形状を定義する文字列であり、球体系を扱う場合はこの例にあるように Sphere とする。

6 行目では非等方散乱断面積で考慮する最大次数を定義する。
7 行目では事前に生成した角度求積セットを定義する SNRQuadrature クラスのインスタンスを、8 行目では GeneralOption クラスのインスタンスを snr adj に与える。
9 行目は角度中性子束の情報を SNR に持たせておくという指定であり、感度を計算する場合にはこのメソッドを行う必要がある3 。
最後の 10 行目で snr adj に中性子輸送計算を行わせ、得られた実効増倍率を real 型の変数 k1 に代入している。
次に、SNR を用いた通常の輸送方程式の計算例を以下に示す。

Listing 3: SNR を用いた前進式の計算例
12345678910// SNR f o r f o r w a r dSNRSystem s n r f w d ( dim , group , mednum ) ; // group & mediums n r f w d . AddMedium ( med [ 0 ] ) ;s n r f w d . AddMedium ( med [ 1 ] ) ;s n r f w d . PutCartMeshInfo ( cmi , ” S p h e r e ” ) ;s n r f w d . PutPL ( p l ) ;s n r f w d . S e t Q u a d r a t u r e (&quad1 ) ;snr fwd . PutGeneralOption ( opt2 ) ;s n r f w d . PutWriteFlux ( ) ;r e a l k2=s n r f w d . C a l I g e n ( ) ;SNRSystem クラスのインスタンス snr fwd を生成し、それに輸送方程式を解かせている。随伴式を解く場合との違いは、与える GeneralOption クラスのインスタンスのみである。

2.3

感度の計算

これまでに Forward、Adjoint の輸送方程式を解いたので、これらを用いて摂動論により中性子増倍率の断面積に対する感度係数を計算することが出来る。感度の計算例を以下に示す。

Listing 4: 感度の計算
123456i n t nucnum=3;
int nucid []={922340 ,922350 ,922380};S e n s i t i v i t y D a t a s e n s=s n r a d j . C a l S e n s i t i v i t y N e w (& s n r f w d , k1 , nucnum , n u c i d ) ;s e n s . PutName ( ” f l a t t o p u” , ” k e f f ” , ” j e n d l 4” ) ;s e n s . W r i t e F i l e ( ” . / ” , ” s n s . f l a t t o p u” ) ;===感度の計算は、SNRSystem クラス等の複数のソルバーに実装されており、随伴方程式を解いたインスタンス（ここでは snr adj）が CalSensitivityNew メソッドにより行う。このメソッドで与える引数は、一つ目が前進方程式を解いたインスタンス（参照渡しであることに注意）、二つ目が中性子増倍率、三つ目が感度を計算する核種数、四つ目が感度を計算する核種の ID を格納する配列に対応する。
3 一般的に炉物理の計算では「反応率」を必要とする場合が多々あるが、反応率はスカラー中性子束（角度で積分した中性子束）から計算されるため、スカラー中性子束の計算結果のみを保持しておけばよく、飛行方向にも依存する中性子束である角度中性子束の情報は不要である。一方、感度計算、摂動計算には角度中性子束の情報が必要となるため、この場合は角度中性子束の情報も保持させておく。角度中性子束は、空間メッシュ、エネルギー群毎に、離散角度方向の数だけ定義されるため、これを保持させておくことは計算容量の観点からはあまり好ましくない。

2

CalSensitivityNew メソッドは、計算した感度を SensitivityData クラスのインスタンスとして返す。この例では、SensitivityData クラスのインスタンス sens が計算された感度の情報を格納している。SensitivityData クラスは三つの文字列変数をメンバー変数として持っており、PutName メソッドによりデータを与えることが出来る。この例では、一つ目の名前を計算対象の体系（原子炉）名、二つ目の名前を感度を計算したパラメータ名（ここでは中性子増倍率）、三つ目の名前を感度計算に用いたライブラリ名にそれぞれ利用している。そして最終行で感度のデータを WriteFile メソッドにより外部ファイルに書き出している。WriteFile メソッドでは一つ目の引数にファイルを書き出すディレクトリ位置、二つ目の引数にファイル名を与える。この例では現在のディレクトリに sns.flattop-u という名前のファイルが書き出されることになる。

SensitivityData クラスで定義される感度データの取り扱いについては、「CBZ（マニュアル）」の「CBZ/SensitivityData の使用マニュアル」を参照のこと。

3