5.7. [ Expand Hash-all ] セクション¶
このセクションは、 #all を含むセル(主に空気や真空などで構成されるバックグランド領域)を自動で分割してから展開する前処理機能です。 #all はこの機能を使わなくても PHITS 内部で自動的に展開されますが、その自動展開によって1つのセルから除外される領域数が多くなりすぎて、メモリ不足や計算時間の増大が生じる場合があります。 そのような場合には、 [expand hash-all] を含む入力ファイルを icntl=18 で実行してください。バックグランド領域が自動で分割され、分割後の各領域に含まれるセルのみ除外する形式で #all が展開された結果が出力されます。
5.7.1. 使用手順¶
基本的な使用手順は次の通りです。
[cell] セクションで #all を含むセルを定義する。
[expand hash-all] セクションで mesh と出力ファイル名を指定する。
icntl=18 で PHITS を実行する。
生成された
*_surfaceファイルおよび*_cellファイルをinflコマンドを用いて [surface] セクションおよび [cell] セクションに挿入する。元のバックグランド領域( #all を含むセル)の定義をコメントアウトする。
icntl=0 に戻し、通常の粒子輸送計算モードで PHITS を実行する。
5.7.2. 入力形式¶
[ Expand Hash-all ]
mesh = xyz
x-type = ...
nx = ...
xmin = ...
xmax = ...
y-type = ...
ny = ...
ymin = ...
ymax = ...
z-type = ...
nz = ...
zmin = ...
zmax = ...
file = expand_all.out
margin = 1.0
reg xmin xmax ymin ymax zmin zmax
...
項目 |
説明 |
|---|---|
mesh |
現状では xyz のみ指定可能です。 |
x-type, nx, xmin, xmax |
x 方向の mesh 指定です。 |
y-type, ny, ymin, ymax |
y 方向の mesh 指定です。 |
z-type, nz, zmin, zmax |
z 方向の mesh 指定です。 |
file |
出力する基準ファイル名を指定します。 |
margin |
推定した bounding box を各方向に広げる余裕幅です。既定値は 1.0 です。 |
mesh の各方向パラメータは、通常の xyz mesh と同様に指定します。 一方、 mesh=xyz と file は必須です。
5.7.3. 初期 bounding box 表¶
必要に応じて、セクション末尾に初期 bounding box を表形式で与えることができます。
reg xmin xmax ymin ymax zmin zmax
10 -5.0 5.0 -2.0 2.0 0.0 10.0
15 0.0 1.0 0.0 1.0 0.0 1.0
この表は、細い領域やサンプリングで見つかりにくい領域に対して、初期値を与えたい場合に有効です。 列は reg xmin xmax ymin ymax zmin zmax の順で、 reg には対象セル番号を指定します。
5.7.4. 出力ファイル¶
file で指定した名前を基準として、次の3種類のファイルが生成されます。
bounding box 表を書き出す基準ファイル
surface 定義を書き出す
*_surfaceファイルcell 定義を書き出す
*_cellファイル
surface ファイルには、推定した bounding box から作成した px, py, pz 面が出力されます。 cell ファイルには、 #all を含むセルを展開したセル定義が出力されます。
5.7.5. 制限事項と注意¶
この機能は icntl=18 のときだけ有効です。
現状では MPI 並列では使用できません。single または OpenMP 実行をご利用ください。
対象となるセル探索は u=0 のセルを対象とします。universe 内部のセルは自動探索の対象外です。
#all を含むセル自身は bounding box 推定の対象から除外されます。
margin の設定が小さすぎると、境界付近の領域を十分に覆えない可能性があります。
5.7.6. 入力例¶
[ parameters ]
icntl = 18
[ cell ]
1 0 -10
2 -1 #all
[ expand hash-all ]
mesh = xyz
x-type = 1
nx = 20
xmin = -100.0
xmax = 100.0
y-type = 1
ny = 20
ymin = -100.0
ymax = 100.0
z-type = 1
nz = 20
zmin = -100.0
zmax = 100.0
file = expand_all.out
margin = 1.0
この入力では、 #all を展開するために必要な bounding box と include 用ファイルが生成されます。