5.7. [ Expand Hash-all ] セクション

このセクションは、 #all を含むセル(主に空気や真空などで構成されるバックグランド領域)を自動で分割してから展開する前処理機能です。 #all はこの機能を使わなくても PHITS 内部で自動的に展開されますが、その自動展開によって1つのセルから除外される領域数が多くなりすぎて、メモリ不足や計算時間の増大が生じる場合があります。 そのような場合には、 [expand hash-all] を含む入力ファイルを icntl=18 で実行してください。バックグランド領域が自動で分割され、分割後の各領域に含まれるセルのみ除外する形式で #all が展開された結果が出力されます。

5.7.1. 使用手順

基本的な使用手順は次の通りです。

  1. [cell] セクションで #all を含むセルを定義する。

  2. [expand hash-all] セクションで mesh と出力ファイル名を指定する。

  3. icntl=18 で PHITS を実行する。

  4. 生成された *_surface ファイルおよび *_cell ファイルを infl コマンドを用いて [surface] セクションおよび [cell] セクションに挿入する。

  5. 元のバックグランド領域( #all を含むセル)の定義をコメントアウトする。

  6. 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
  ...
表 5.7.1 主なパラメータ

項目

説明

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=xyzfile は必須です。

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種類のファイルが生成されます。

  1. bounding box 表を書き出す基準ファイル

  2. surface 定義を書き出す *_surface ファイル

  3. 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 用ファイルが生成されます。