よくある質問(最終更新日2019/03/19)

1 パラメータ設定関連

Q1.1 Ver.2.88以前で動いていたインプットファイルがそれ以降のversionで動きません。

Ver.2.89以降,ミスを誘発しやすい仕様をいくつか変更しています。 基本的には,従来のインプットをそのまま使えるように設計していますが,場合 によってはインプットの修正が必要になる場合があります。 以下,その例です。

  1. Ver.2.89以降では天然炭素の記号Cとの混同を防ぐため[material]でcをコメントマークとして利用できません(それ以外のセクションでは引き続き利用可能です)。 [material]でエラーが出るようになった場合は,コメントマークとして使っているcを$や#に変更するか,[parameters]セクションにicommat=1と追記してください。
  2. 光子や電子の輸送のみを行う場合,従来は中性子の核データがなくても問題ありませんでしたが,Ver.2.93以降は自動的に中性子の核データを利用する設定になっているため"There is no cross section table(s) in xsdir"というエラーが出てしまいます。 この場合は,[parameters]にnucdata=0と追記して核データを使わない設定に変更してください。
  3. Ver.2.96以降では,[parameters]セクションが2つ以上ある場合,エラーを出して実行を止めるようにしました。 2つ以上定義している場合は,1つに統合してください。
  4. Ver.2.96以降,icntlに応じて不要なタリーを自動的にoffにするようにしました。 自動的にoffにされたタリーセクション内にsetやinflコマンドがある場合,それらも無効になりますのでご注意ください。 なお,Ver.2.96以降,offされたセクション内にsetやinflコマンドがある場合はwarningが出力されます。
Q1.2 電子・陽電子が輸送されません。

電子・陽電子の計算には時間が掛かるためデフォルトでは輸送しない設定になっています。 電子・陽電子を輸送したい場合は,negs=1としてEGS5モードを利用するようにしてください。

Q1.3 核反応モデルに関して、デフォルトの設定は最も精度がよい設定ですか?

基本的にはそうなるように設定していますが,重イオン核反応や高エネルギー核反応により生成される残留核の収率を精度よく計算したい場合は,irqmd=1やismm=1のオプションを利用することを勧めています。 ただし,これらのオプションを有効にすると,計算時間が長くなってしまう場合があります。

Q1.4 イベントジェネレータモードは、どのような場合に使えばよいのでしょうか?

イベントジェネレータモード(以下、e-mode)を使った方がよい計算は、検出器の応答関数計算や、半導体ソフトエラー発生率の計算など、イベント毎の情報が必要となる計算です。 具体的には、[t-deposit], [t-let], [t-yield]などを使う計算では、e-modeを使った方がよい場合が多いです。 逆に、使わない方がよい計算は、中性子束やガンマ線束だけを求める遮蔽計算などです。 [t-track], [t-cross]などしか利用しない場合は、一般的にe-modeを使う必要はありません。 詳しくはマニュアル「4.2.23 Event Generator Mode」をご参照ください。 なお,version2.76からイベントジェネレータモードを使う場合の奨励値はe-mode=2となっていますので,ご注意ください。

Q1.5 統計誤差導出方法(istdevの設定)はどういう条件で切り替えれば良いですか?

バッチ分散モード(istdev=-1 or 1)しか選択できないメモリ共有型並列計算の場合を除き、基本的に全ヒストリー数(maxcas*maxbch)で統計 誤差を評価するヒストリー分散モード(istdev=-2 or 2)の方を推奨します。 しかしながら、ヒストリー分散モードでは、ヒストリーの計算が終了する毎に誤差情報を記録するため、タリーのメッシュ数が大きい場合(xyzメッシュでnxやnyを数1000ずつ設定するなど)には、計算時間が異常に長くなる可能性があります。 そのような条件で計算する際は、バッチ分散モードに切り替えて、maxbchを十分に大きく(10以上)設定するようにしてください。

Q1.6 JENDL以外の核データをPHITSで使うことは可能でしょうか?

ACE フォーマット(MCNP が読み込める形式)であれば可能です。以下,その手順です。
  1. 新しく入手した核データに付録されているxsdir ファイルをテキストエディタで開き,核データのアドレス情報に関する部分(例えば1001.80c 0.999167 xdata/endf71x/H/1001.710nc 0 1 4 17969 00 2.5301E-08)を全てPHITSのdataフォルダ内にあるxsdir.jnd の末尾にコピー&ペーストする。
  2. PHITSのXSフォルダ内に,上記アドレス情報が一致するように新しく入手した核データファイルをコピーする。 例えば,上記のアドレス情報であれば,XSフォルダ内にxdata/endf71x/H フォルダを作って1001.710nc ファイルをその中にコピーする。
  3. [material]セクションで,使う核データを明示的に指定する。 例えば,上記のアドレス情報であれば1H.80c もしくは1001.80cと指定する。 核データを明示的に指定しない場合は,xsdir.jndの中でその元素に対して最初に書かれている核データが自動的に使われます。
Q1.7 光核反応により生成する粒子(中性子・放射性核種)の統計を効果的にためる方法はありますか?

pnimulパラメータを使うことにより,他の反応(コンプトン散乱など)と比べて光核反応を起こしやすくすることができます。 例えば,pnimul=2.0とすると,光核反応を引き起こす確率を2倍にする代わりに,光核反応で生成した粒子のウェイトを1/2にします。 ウェイトを変化させるので,イベント毎の情報が必要な場合は使えません。 また,pnimulパラメータを大きくしすぎると(100以上),光子・電子の挙動がずれてきてしまいますので,本パラメータを使う場合は,光子・電子の挙動(フラックス・線量など)が大きく変動しないことを確認しながら使ってください。

Q1.8 再開始計算を行おうとすると,タリーを変更していないにも関わらず「Error: inconsistent tally parameters」というエラーが出て止まります。対処方法はありますか?

この問題は,桁落ちの関係で新旧タリーのパラメータが異なるとPHITSが認識してしまうことにより発生します。 タリーで使うパラメータを複雑な数式などで定義した場合によく発生します。 この問題が生じた場合は[parameters]セクションでireschk=1と設定し,タリーの一致性をチェックしないモードで再開始計算を実行して下さい。

2 エラー,コンパイル関連

Q2.1 コンパイルがうまくできません。

PHITSのコンパイルに関しては,基本的にはマニュアル「2.4 Makefileを利用したコンパイル」をご参照ください。 PHITSは,Intel Fortran 11.1以降及びgfortran 4.7以降でコンパイル可能です。 ただし,Windowsのgfortran ver. 4.9 - 5.4では正しくコンパイルできませんので2.4節をご参照の上,最新版をインストールしてください。 なお,PHITS事務局が奨励するコンパイラは,計算速度の観点からIntel fortranです(Q2.6参照)。

Q2.2 巨大な体系について計算しようとすると、Segmentationエラーが起きてしまいます。

PHITS では使用するメモリの最大値をあらかじめ定義しており、実際に必要となるメモリがその最大値を超えてしまうと、Segmentationエラーを引き起こします。 使用するメモリの最大値 は、「src」フォルダにある「param.inc」中のmdasパラメータで定義されていますので、必要に応じてこの値を大きくし 再コンパイルしてください。 詳しくはマニュアル「2.6 配列の大きさ」をご参照ください。 また、ボクセルファントムなど巨大なLattice 構造を扱う場合は、同時にlatmaxパラメータも大きくしてください。 なお、Windowsでは1つのFortranプログラムが2GB以上のメモリを使用することは許されていませんので、mdasの上限値は268435450です。 それ以上のメモリ領域が必要となる計算には、64bitのWindowsもしくはLinuxをお使い下さい。

Q2.3 外部ファイルを取り込むためのコマンド「infl:」が使えません。

infl:コマンドを使うためには、インプットファイルの1行目に「file=インプットファイル名」と書いておく必要があります。 もしくは,通常のPHITS用インプットファイルの他に、別のファイルを準備し,そのファイルの先頭行に「file=通常PHITS のインプットファイル名」と書いて実行することも可能です。 詳しくは,マニュアル「2.7 実行シェル」をご参照ください。 なお、PHITS ver. 3.00以降では、file=は必要ありません。

Q2.4 Windowsでは実行できるインプットファイルがLINUX やUNIXでは実行できません。

いろいろな原因が考えられますが、WindowsとLINUX系(UNIX含む)では、リターンコードが違いファイルの転送に失敗している可能性があります。 通常、WindowsからLINUX系にファイルを転送する際、FTPなどのプロトコルを使うと思いますが、その転送の際、アスキーモードとバイナリーモードというのがあり、アスキーファイル(PHITSのインプットファイルなど)は、アスキーモードで転送しないと、ファイルが破損してしまう可能性があります。 お使いの FTPソフトの設定をご確認ください。 なお、Windowsで作られたバイナリファイル(PHITSの実行ファイルなど)をLINUX系に転送しても、通常、正しく動作しません。

Q2.5 Cygwin上でPHITS は動作しますか?

はい。PHITSのmakefileにあるCygwinの項目をご参照ください。

Q2.6 Intel fortranとgfortran,どちらがPHITSをコンパイルするのに適していますか?

基本的には,Intel fortranを使うことをお勧めいたします。 理由は,計算速度が速いためです。 gfortranでは,最適化オプションを付けると正しく動作しない場合があるため,奨励の最適化オプションは-O0(すなわち最適化しない)です。 したがって,平均で3-5倍くらいの計算速度の差があると考えています。 また,最新のgfortranではPHITSを正しくコンパイルできない問題もあります(Q2.1参照)。 ただし,Intel fortranはLinux版を含めて有償ですので,その点,ご留意ください。

Q2.7 メモリ分散型並列(MPI)と共有型並列(OpenMP)はどのように使い分けるのがよいでしょうか?

MPIプロトコルがインストールされたコンピュータであれば,基本的にMPIの方が計算速度は速くなります。 ただし,通常のWindowsやMacにはMPIプロトコルがインストールされていませんので,簡単に並列計算を実行したいのであれば,OpenMPを使うことをお勧めしています。 また,ボクセルファントムや高エネルギー核データライブラリなどの巨大なメモリを使用する計算では,MPIだとメモリ容量をオーバーしてしまう場合があります。 その場合は,MPIとOpenMPを組み合わせたハイブリッド並列を実施する必要があります。 その際,メモリの許す限りできるだけMPI並列数を増やした方が計算速度は速くなります。 ただし,ジョブコントロール用にもOpenMP並列数分のコアを使用しますので,MPI並列数の設定にはご注意ください。 例えば,128コアの計算機を使ってOpenMP並列数8で計算する場合,指定できるMPI並列数は,128/8-1 = 15,となります。

Q2.8 DCHAIN-SPを実行した際に、「指定されたファイルが見つかりません」といったエラーが表示されます。

DCHAIN-SPのインプットファイルやinflコマンドを含むPHITSのインプットファイルが全角文字を含むフォルダ名の中に置かれている場合、適切に動作しません。 その場合は、半角文字のみのフォルダ名に変更してください。

Q2.9 ボクセルファントムなどLattice構造を[transform]で回転させるとlost particleが頻発します。

Lattice構造を入れる外枠セルとLattice構造そのものの大きさが完全に一致していると,回転させた際の桁落ちの関係でLost particleが頻発する場合があります。 Lattice構造を入れる外枠セルを少しだけ小さくすると回避できる可能性が高いです。 詳細は応用実習:ボクセルファントムの作り方をご参照ください。

3 タリー関連

Q3.1 [t-heat]と[t-deposit]は何が違うのでしょうか?

ユーザー定義関数(usrdfn)を指定しない限り、基本的には同じになります。 大きな違いは、[t-heat]では非荷電粒子(中性子や光子)のカーマ近似を使った計算が可能である点です。 カーマ近似を使う場合は、中性子に関しては[parameters]セクションにおいてe-mode=0とし、光子に関しては[t-heat]セクションにおいてelectron=0としてください。 また、[t-deposit]は、被ばくによる生物学的効果など同じ発熱量でも影響の大きさの違う量を計算する際、極めて有用となります。

Q3.2 [t-track]で重イオンのtrack lengthを計算すると、結果が不自然なのですが。

重イオンのエネルギーは、入射エネルギーや切断エネルギーに対しては核子あたりのエネルギー(MeV/u)で指定しますが、タリーの中でエネルギーを 指定する場合は、核子あたりではなく、全エネルギー(MeV)で指定します。 タリー結果をMeV/uの単位で出力させたい場合は、[parameters]においてiMeVperu=1としてください。

Q3.3 [t-let]、[t-sed]の結果が不自然なのですが。

letmatでLETを計算する物質を指定する際、その物質がPHITSの体系内で使われている場合、密度はその体系内で使用している密度となります。 例えば、水蒸気内の発熱量に対するLET 分布を、液体の水(1g/cm3)に対するLETの関数として計算したい場合、[Material]で2つの水を定義し、1つをPHITSの体系内で使用し、もう1つをletmatで使用する必要があります。 また、letmatで使用する物質の密度は、原子数密度の絶対値(1H 6.893407e-2 16O 3.446704e-2)を指定してください。 詳しくは,奨励設定ファイルのParticleTherapyをご参照下さい。 また,[t-let]の場合,LETメッシュ幅を細かく設定しすぎると結果がガタガタしてしまいますので,あまり細かいメッシュ幅を設定しないようにしてください(1桁10メッシュ程度まで)。

Q3.4 タリー結果の誤差はどのように計算されているのでしょうか?

バージョン2.50より、正しく計算できるように修正しました。 詳しくはマニュアル「4.2.2 ヒストリー数、バンク配列の大きさ」をご参照ください。

Q3.5 並列計算でdumpモードは使えるでしょうか?

基本的には使えます。ただし,メモリ共有型(OpenMP)並列の場合は,1つのファイルに全てのノードからの情報を書き込むため,書き込む順番がヒストリー番号毎に並ばなくなってしまいます。 一方,メモリ分散型(MPI)並列の場合は,dumpファイル名にコア番号付けたファイルを出力しますので,そのような問題は起きません。

Q3.6 mesh=regとmesh=xyzを用いて同じ直方体内のフラックスや発熱量を計算した場合に、それぞれの結果が異なるのですが。

タリー結果を単位体積あたりに規格化して出力する場合、xyzやr-zメッシュではタリー領域の体積を自動的に計算して出力しますが、regメッシュの場合は、[volume]セクションで体積を指定しない限り体積を1cm3として出力します。 例えば、mesh=regで[volume]セクションがない場合、[t-track]のunit=1[1/cm2/source]とunit=4[cm/source]は同じ値を与えます。

Q3.7 [t-deposit]でoutput=depositとした場合に入射エネルギーよりも高いイベントが発生するのはなぜでしょうか?

発熱する核反応(Q値が正)が発生すると,入射粒子よりも2次粒子の合計エネルギーが高くなるため,入射エネルギーよりも付与エネルギーが大きくなる場合があります。 また,xyzメッシュもしくはr-zメッシュかつエネルギー分散を考慮した場合(nedisp≠0),エネルギー分散の考慮方法の仕様により,イベント毎 の情報が正しく計算できなくなってしまいます。 そのような場合は,mesh=regとして,[cell]セクションで領域を細かく分割して計算してください。

Q3.8 axis = xzで表示する際、横軸と縦軸を入れ替えることは可能でしょうか?

可能です。まず、該当タリーのx-typeとz-typeに関連するパラメータを入れ替えます。次に下記3行をそのタリーに追加します。
trcl = 0 0 0 0 0 1 0 1 0 1 0 0
x-txt = x [cm]
y-txt = z [cm]
これで図が90度回転します。

4 線源生成関連

Q4.1 等方線源ソース(s-type=9, dir=-all)のときの規格化はどのようにすればよいですか?

等方線源の球の内側に何もなければ、球の中のフルエンスは 1/(πr12) (/source)で規格化されます。 ここで、r1 は球の半径です。 タリー出力 (/source)を単位フルエンスへ変換したい場合、結果にπr12をかける必要があります。
ただし、等方線源を生成するときは、ウェイトコントロール法が用いられているので、イベント毎の情報を、等方線源を用いたシミュレーションから得ることができません。 等方照射に関するイベント毎の情報を得たい場合は、 [source]セクションで、"dir = iso" と設定して下さい。

Q4.2 PHITSで認識する線源領域が、実際の領域とずれるのですが。

面線源や点線源を定義する際、その面や点が、Cellで使うsurfaceと完璧に一致している場合、PHITS の中で認識する線源領域が実際の領域とずれる場合があります。 このような状態を避けるため、面線源や点線源は、cellで使う面とは少しずらして作成するようにしてください。 また、特定の面に完璧に平行なビームを発生させた場合も同様のエラーが起きる可能性がありますのでご注意下さい。

5 その他

Q5.1 規制庁への加速器施設や廃棄物保管庫等の許認可申請において、PHITSによる遮蔽計算の結果を使用することができるでしょうか?

RI法の申請においては、PHITSが認められています。 J-PARCをはじめとして、放医研の新治療棟、 北大の陽子線治療施設、神奈川がんセンターの重粒子線治療施設等で、実績が多数あります。 一方、炉規法に関しては、申請において認められるかどうかに未確認です。 許可取得例をご存知でしたら、事務局までご一報ください。 これまでにユーザーの皆様からいただいた情報は、こちら(pdfを開きます)にまとめています。

Q5.2 PHITSで得られた解析結果を商用目的で利用することは可能でしょうか?

基本的には可能です。例えば,PHITSの解析結果を元に新しい検出器を開発して販売することや,外部機関から加速器の遮蔽設計を請け負って対価を得ることも問題ありません。ただし,PHITSを含む商品(例えばPHITSの実行ファイルが含まれる治療計画システムなど)を開発して販売する場合は,原子力機構と商用利用契約を結んでいただく必要があります。そのような計画がある場合は,早めに事務局までお知らせ下さい。

Q5.3 放射線に関連する物理現象でPHITSで扱えないものは何でしょうか?

PHITSは個々の放射線の挙動をモンテカルロ法を用いて解析するため,複数の放射線による影響(電流や放射線自身が作る電場の影響など)を考慮することができません。また,物理過程の後に引き起こされる化学過程や材質の変化は模擬することができません。詳しくは,PHITSで扱えない物理現象リストをご参照ください。