• 検索結果がありません。

繰り返し幾何形状

ドキュメント内 ii PHITS (ページ 102-107)

3.6 粒子の表式

4.5.5 繰り返し幾何形状

4.5.5.2 Latticeを用いた階層構造

4.5.4節で見た四角柱や六角柱のlatticeをより複雑なものにするために、universeを用いて階層構造を構築

することができます。考え方はuniverse構造に基づいており、universe 1の一部をuniverse 2で満たし、更 にuniverse 2の一部をuniverse 3で満たし、といった手続きで各階層を定義していくことが可能です。PH ITS

では基本的に最大10 (param.inc中のmxlvで変更できます)の階層構造をつくることができます。

List 4.16

[cell]セクションの例題(9)

1: [ M a t e r i a l ] 2: mat[1] 1H 2 16O 1 3: mat[2] Fe 1 4: [ C e l l ]

5: 1 0 11 -12 13 -14 15 -16 FILL=1

6: 101 0 -26 25 -22 21 LAT=1 U=1

7: FILL=-1:1 -1:1 0:0

8: 2 2 3 2 3 2 3 2 2

9: 201 1 1.0 -90 U=2 10: 301 2 10.0 -10 U=3

11: 302 0 10 U=3

12: 2 -1 #1

13: [ S u r f a c e ] 14: 10 CY 1.5 15: 11 PX -6

16: 12 PX 6

17: 13 PY -6

18: 14 PY 6

19: 15 PZ -6

20: 16 PZ 6

21: 21 PX -2

22: 22 PX 2

23: 25 PZ -2

24: 26 PZ 2

25: 90 BOX -10 -10 -10 20 0 0 0 20 0 0 0 20

−10 −5 0 5 10

−10

−5 0 5 10

z [cm]

x [cm]

water void iron (-1,-1,0) (0,-1,0)

(1,-1,0) (1,-1,0) (-1,0,0)

(0,0,0) (1,0,0) (0,0,0) (-1,1,0)

(0,1,0) (1,1,0) (-1,1,0)

図21: 例題(9)の空間をxz平面で切り取った断面図。

9つの四角柱の内、3つが鉄柱を中心に配した内部構 造をもっている。

まず5, 6行目にある、四角柱のlattice構造とそれを 引用するセル番号1の定義は例題(6)と同じです。

ただし、7, 8行目におけるセルパラメータFILLの 使い方が違っており、ここでは各格子の状態を個別 に指定しています。7行目では取り扱う範囲を決め ており、各格子に割り振られたlattice座標(s,t,u) を参照してFILL=の後ろで決定しています。本例 題では、sに関して−1 から1まで(3つ)、tに関 して−1から1まで(3つ)、uに関して0から0ま で(実質は1つ)をセル番号101のlattice構造と定 義しています。合計3×3×1 = 9 の格子が対象 となり、それぞれを満たす宇宙は8行目で指定し ています。この順番はlattice座標(s,t,u)で表現し て、(−1,−1,0),(0,−1,0),(1,−1,0),(−1,0,0),· · ·の様 になっており、2であればuniverse 2で、3であれ

ばuniverse 3でその格子を満たすことを意味します。

Universe 2を水が入った一辺20cmの立方体を原点付近に配置した宇宙として、universe 3を原点に半径1.5cm の鉄柱を置いた宇宙として定義しており、9つの四角柱の内3つが特別な構造をもつことになります。結果 を示したのが図21で、xz平面に関する断面図です。この図から(s,t,u)=(1,−1,0),(0,0,0),(−1,1,0)の格子 が内部構造をもっていることがわかります。各タリーにおいてmesh=regにより領域指定する場合は、(302

< 101[0 0 0] < 1)の書式を用います。これは“セル番号1を満たしたセル番号101のlattice座標(0,0,0)

に含まれているセル番号302の領域”という意味で、図21では中心の四角柱にある鉄柱周辺のボイドの領 域を指します。この様な書式については5.1.2節を参照してください。

次は、階層構造をより複雑にした例です。

List 4.17

[cell]セクションの例題(10)

1: [ M a t e r i a l ] 2: mat[1] 1H 2 16O 1 3: mat[2] Fe 1 4: [ C e l l ]

5: 1 0 11 -12 13 -14 15 -16 FILL=1

6: 101 0 -26 25 -22 21 LAT=1 U=1

7: FILL=-1:1 -1:1 0:0

8: 2 2 3(1 0 1) 2 3(1 0 1) 2 3(1 0 1) 2 2 9: 201 1 1.0 -90 U=2

10: 301 0 -36 35 -32 31 LAT=1 U=3

11: FILL=-1:0 -1:0 0:0

12: 4 2 2 4

13: 401 2 10.0 -10 U=4

14: 402 0 10 U=4

15: 2 -1 #1

16: [ S u r f a c e ] 17: 10 CY 0.5 18: 11 PX -6

19: 12 PX 6

20: 13 PY -6

21: 14 PY 6

22: 15 PZ -6

23: 16 PZ 6

24: 21 PX -2

25: 22 PX 2

26: 25 PZ -2

27: 26 PZ 2

28: 31 PX -1

29: 32 PX 1

30: 35 PZ -1

31: 36 PZ 1

32: 90 BOX -10 -10 -10 20 0 0 0 20 0 0 0 20

−10 −5 0 5 10

−10

−5 0 5 10

z [cm]

x [cm]

water void iron

図22: 例題(10)の空間を xz平面で切り取った断面 図。9つの四角柱の内3つが構造をもち、更に4つの 四角柱で構成されている。

この例題でつくられる仮想空間は、図22の様にな ります。ただし、xz平面で切った断面を示してい ます。まず、一辺12cmの立方体を9つの四角柱に 分け、その内の3つに内部構造をもたせた点は例題 (9)と同じです。違うのはuniverse 3として定義した 宇宙を更に内部構造をもった格子で埋めたことで、

9∼11行目でその状態を指定しています。ここでは 2×2×1=4の四角柱を定義しており、その内の2 つが鉄柱をもつ格子となっています。また、8行目 の(1 0 1)は座標変換を表しており、引用する際 にuniverse 3をx軸方向に1cm、z軸方向に1cm平 行移動しなさい、という意味となります。セル番号

301は、原点(0,0,0)を中心にもつ四角柱を基本単位

としているため、図の様な配置にする場合は少しず らす必要があります。また、latticeを用いて階層構 造を作成した場合のmesh=regによる領域指定は、

階層構造を増やした書式により行います。例えば図22においてx=−1,z=−1を中心とする微小四角柱の ボイド部分は、(402 < 301[-1 -1 0] < 101[0 0 0] < 1)と記述します。もし対象とする階層が更に深 くなった場合は、<とlattice座標を用いて階層を増やすことで各領域を指定できます。この書式の詳細につ

いては5.1.2節をご覧ください。

4.5.5.3 ボクセルファントム(voxel phantom)の利用

PH ITS ではlattice構造を利用してボクセルファントム(voxel phantom)を仮想空間として設定できます。

ボクセルファントムとは微小立方体を積み重ねて生物などの複雑な構造物を表現したものです。CT等の画 像データを元にして作成するボクセルデータを使用します。本節では、非常に簡単なボクセルデータを用意 し、これを用いた設定方法について説明します。

基本的な考え方として、まず粒子輸送を行うためのある一定の大きさをもつ立方体(直方体)を用意し、そ の中に微小立方体(ボクセル)を並べます。その際、lattice構造のLAT=1を利用し、各ボクセルの座標が指 定できる様にセルパラメータFILLを使います。FILLを使用した場合、各ボクセルがどの状態か、すなわ

ちどのuniverseで満たされているか、が指定できるため、水や鉄(あるいはボイド)で満たされたuniverse

を引用することで、様々な構造物をつくることができます。したがって、ボクセルデータは各ボクセルの位 置座標と構成物質の情報をもっている必要があり、ここではL000L100L200 · · · Lstu · · · の順番で並べたデー タ群を想定しています。ここで、Lstuはlattice座標(s,t,u)にあるボクセルの構成物質(universe番号)です。

以下では、一辺が10cmの立方体の中に一辺2cmのボクセルを合計5×5×5=125並べた場合を考えて います。

List 4.18

[cell]セクションの例題(11)

1: [ M a t e r i a l ] 2: mat[1] 1H 2 16O 1 3: mat[2] Fe 1 4: [ C e l l ]

5: 1 0 11 -12 13 -14 15 -16 FILL=1 6: 101 0 -20 LAT=1 U=1

7: FILL=-2:2 -2:2 -2:2

8: 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 9: 2 2 2 2 2 2 3 3 2 2 2 3 4 3 2 2 3 3 2 2 2 2 2 2 2 10: 2 2 2 2 2 2 3 3 3 2 3 4 4 4 3 2 3 3 3 2 2 2 2 2 2 11: 2 2 2 2 2 2 2 3 3 2 2 3 4 3 2 2 2 3 3 2 2 2 2 2 2 12: 2 2 2 2 2 2 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2

13: 201 0 -90 U=2

14: 301 2 10.0 -90 U=3 15: 401 1 1.0 -90 U=4

16: 2 -1 #1

17: [ S u r f a c e ] 18: 11 PX -5

19: 12 PX 5

20: 13 PY -5

21: 14 PY 5

22: 15 PZ -5

23: 16 PZ 5

24: 20 BOX -1 -1 -1 2 0 0 0 2 0 0 0 2 25: 90 BOX -10 -10 -10 20 0 0 0 20 0 0 0 20

5行目でセル番号1の領域を一辺が10cmの立方体として定義しています。これが次の行のセル番号101の

latticeで満たされており、基本単位は面番号20で定義した一辺2cmの立方体です。ここでは面記号BOX

を用いて微小立方体(ボクセル)を定義しています。7行目でボクセルをlattice座標(s,t,u) のそれぞれに 5つずつ並べるとしており、8∼12行目で各ボクセルを満たすuniverse番号を指定しています。ボクセルは (−2,−2,−2),(−1,−2,−2),· · ·,(2,2,2)の順番で並んでおり、ボイドの場合は2、鉄は3、水は4の数字が対応 しています。ボイドや鉄、水が入った空間の定義は13∼15行目で行っており、それぞれが一辺20cmの立方 体に入った宇宙をuniverse 2, 3, 4としています。本例題のボクセルで表現しているのは多少いびつな形状の 鉄の箱に水が入っている構造物です。結果を図23に示しました。左図が立体的にそのまま見た結果、右図 が表面の一部を透明にして見た結果です。少しずれていますが、図の左から右がs軸、下から上がt軸、奥

から手前がu軸の方向に対応します。見てわかる様に、でこぼこした鉄の箱の中には水が入っており、こ の構造物を対象に粒子輸送計算を行うことができます。各タリーにおいてmesh=regにより領域指定する 場合は、(401 < 101[0 0 0] < 1)の書式を用います。あるいは、セル番号1中の水の部分全てを指定し たい場合は、(401< 1)とすることができます。これらの書式については5.1.2節をご覧ください。ただし、

(301 < 101[-2:2 -2:2 -2:2] < 1)の様な指定方法はできません。セル番号101[-2:2 -2:2 -2:2]の 全てにセル番号301の領域が含まれているわけではないためです。

0 5 10 15 20

0 5 10 15 20

0 5 10 15 20

0 5 10 15 20

図23: 例題(11)の構造物を立体的に見た図(左)と表面の一部を取り除き内部を見た図(右)。

PH ITS では、最初に読み取ったインプットデータを一時的にバイナリ形式で書き出し、それを再度読み込 んで粒子輸送計算を行います。例題(11)で扱ったのは簡単なボクセルですが、一般的にボクセルデータは 大規模なものとなり、それをPH ITS の実行の度に読み書きするのは非常に時間がかかります。これを緩和す るために、[parameters]セクションのivoxelパラメータを使う方法があります。ivoxelは、ボクセル

データ(実質的には例題(11)の8から12行目)をバイナリとして出力させて保存し、2度目からはそのバイ

ナリを読んで計算するという機能をもちます。PH ITS 実行時にivoxel=2とするとfile(18)にデータを書 き出してそのまま終了します(ただし、バージョン2.30以前では、終了せずに引き続き輸送計算を行いま す)ので、以降ivoxel=1と設定することで該当ファイルからバイナリデータを読み込んで計算できます。

また、大量のボクセルデータをPH ITS のインプットファイルとは別のファイルに保存して計算するときは、

inflを使用します。この場合のivoxelの使い方も同じです。

4.6 [ S u r f a c e ] セクション

ドキュメント内 ii PHITS (ページ 102-107)