[ Light ] セクション ================================================== このセクションでは、光(シンチレーション光、チェレンコフ光)の発生・輸送・境界条件を定義します。 [ Light ]セクションは入力ファイル中に1つだけ記述できます。 セクション内では ``set-region`` および ``set-boundary`` ブロックを繰り返し記述することで、複数の領域・境界に対して個別の光学特性を設定できます。 .. note:: 光は粒子名 ``light`` またはkfコード ``-22`` で指定します。 全体構造 -------------------------------------------------- .. code-block:: text [ Light ] yield-factor = 1e-4 set-region reg = 101 102 n = 1.5 light-yield = 10000 table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.1 800 0 end-table set-boundary reg-from = 101 reg-to = 98 fraction-absorption = 0.3 グローバルパラメータ -------------------------------------------------- セクション冒頭( ``set-region`` / ``set-boundary`` の前)に記述するパラメータです。 .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - yield-factor - 1.0 - | 発光量のスケーリング係数。実際の発光数に yield-factor を掛けた数の光を発生させ、各光の重みを 1/yield-factor 倍にすることで統計量を保存する。 | 例えば yield-factor = 0.001 とすると、発生する光の数は1/1000になり計算コストを削減できる。 * - lmin-light - 250 - 光の波長の下限 [nm]。 * - lmax-light - 800 - 光の波長の上限 [nm]。 * - emin-light - lmax-lightに対応(1.55e-6 MeV) - 光のエネルギーの下限 [MeV]。lmax-lightの代わりに使用可能。 * - emax-light - lmin-lightに対応(4.96e-6 MeV) - 光のエネルギーの上限 [MeV]。lmin-lightの代わりに使用可能。 * - transport - 1 - | 光の輸送を行うかどうか。 | = 0: 輸送しない(発光のみをスコアする場合に有用) | = 1: 輸送する * - stock-max - 100000 - 1ヒストリーあたりの光の発生ステップのストック上限数。オーバーフローの警告がでたら増やす。 テーブルの単位 -------------------------------------------------- テーブルで使用可能な単位は以下の通りです。 **unit1(波長/エネルギー軸)** .. list-table:: :header-rows: 1 :widths: 20 40 * - 値 - 説明 * - nm - ナノメートル * - um - マイクロメートル * - mm - ミリメートル * - cm - センチメートル * - eV - 電子ボルト * - keV - キロ電子ボルト * - MeV - メガ電子ボルト **unit2(吸収/散乱の係数または長さ)** 係数テーブル(-coeff)で使用: .. list-table:: :header-rows: 1 :widths: 20 40 * - 値 - 説明 * - 1/km - 1/キロメートル * - 1/m - 1/メートル * - 1/cm - 1/センチメートル * - 1/mm - 1/ミリメートル 長さテーブル(-length)で使用: .. list-table:: :header-rows: 1 :widths: 20 40 * - 値 - 説明 * - km - キロメートル * - m - メートル * - cm - センチメートル * - mm - ミリメートル .. note:: ``*-coeff`` パラメータに長さ単位を指定した場合(またはその逆)、エラーが表示されます。 set-region ブロック -------------------------------------------------- ``set-region`` で新しい領域ブロックを開始し、光学特性を定義します。 複数の ``set-region`` ブロックを記述することで、異なる領域に異なる特性を設定できます。 領域の指定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. list-table:: :header-rows: 1 :widths: 30 70 * - パラメータ - 説明 * - reg - 光学特性を設定する対象の領域番号。スペース区切りで複数指定可能。 屈折率 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 屈折率が設定された領域ではチェレンコフ光が発生します。 .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - n - 1 - 屈折率(スカラー値)。波長依存性がない場合に使用。 * - table-n - (なし) - 屈折率の波長依存テーブル。 テーブルの書式例: .. code-block:: text table-n unit1 = nm 300 1.52 500 1.50 800 1.49 end-table シンチレーション ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ シンチレーション光の発生に関するパラメータです。 発光には ``light-yield`` と発光スペクトル( ``table-scintillation-spectrum`` または ``scintillation-energy`` / ``scintillation-lambda`` )の両方が必要です。 .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - light-yield - 0 - 発光量 [light/MeV]。 * - table-scintillation-spectrum - (なし) - | シンチレーション発光スペクトル(波長依存の相対発光確率)。 | テーブルはスペクトル形状のみを定義し、発光数には影響しない(発光数は light-yield で決まる)。 | 内部で正規化されるため、値の相対比のみが意味を持つ。 * - scintillation-energy - (なし) - シンチレーション光のエネルギー [MeV]。単一エネルギーの場合に使用。table-scintillation-spectrumの代替。 * - scintillation-lambda - (なし) - シンチレーション光の波長 [nm]。単一波長の場合に使用。table-scintillation-spectrumの代替。 テーブルの書式例: .. code-block:: text table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.1 800 0 end-table **Birksの法則** 荷電粒子のエネルギー損失に対する発光量の非線形性(quenching)を考慮できます。 Birksの法則では、単位経路長あたりの発光量は次式で表されます: .. math:: \frac{dL}{dx} = S \frac{dE/dx}{1 + k_B \cdot dE/dx} ここで :math:`S` は発光効率(light-yield)、:math:`dE/dx` はエネルギー損失率(stopping power)、 :math:`k_B` はBirks定数です。 :math:`dE/dx` が大きい(重い粒子や低エネルギー)ほど quenching が強くなり、発光効率が低下します。 .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - Birks-kB-cm/MeV - 0(無効) - Birks定数 kB [cm/MeV] * - Birks-kB-mm/MeV - 0(無効) - Birks定数 kB [mm/MeV] * - Birks-kB-g/cm2/MeV - 0(無効) - Birks定数 kB [g/cm\ :sup:`2`/MeV]。内部でセル密度を用いて cm/MeV に変換される。 **時間構造** シンチレーション光の時間分布を指定します。 .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - decay-time - 0(即時発光) - 減衰時定数 [ns]。 * - decay-time2 - 0 - 第2成分の減衰時定数 [ns]。2成分減衰の場合に使用。 * - rise-time - 0 - 立ち上がり時定数 [ns]。decay-timeより小さい値を設定すること。 * - decay-fraction - (なし) - 第1成分の割合。decay-time2を使用する場合に必要。 * - decay-fraction2 - (なし) - 第2成分の割合。decay-time2を使用する場合に必要。 .. note:: decay-time2を設定する場合は、decay-fractionとdecay-fraction2の両方を設定する必要があります。 rise-timeを設定する場合は、decay-timeも設定する必要があります。 吸収係数 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 媒質中での光の吸収を定義します。 吸収係数(coefficient, 単位: 1/cm)または吸収長(length, 単位: cm)のどちらでも入力できます。 内部では吸収係数に変換されます( ``coefficient = 1 / length`` )。 **スカラー値(波長依存性なし)** .. list-table:: :header-rows: 1 :widths: 35 65 * - パラメータ - 説明 * - absorption-coeff - 吸収係数 [1/cm] * - absorption-length - 吸収長 [cm]。0より大きい値を指定すること。 **テーブル(波長依存性あり)** .. list-table:: :header-rows: 1 :widths: 40 60 * - パラメータ - 説明 * - table-absorption-coeff - | 波長依存の吸収係数テーブル。 | unit1: 波長またはエネルギー単位(nm等) | unit2: 係数単位(1/cm等) * - table-absorption-length - | 波長依存の吸収長テーブル。 | unit1: 波長またはエネルギー単位(nm等) | unit2: 長さ単位(cm等) **内部透過率からの変換** 光学ガラスカタログに記載されている内部透過率(internal transmittance)から吸収係数を自動計算できます。 Beer-Lambertの法則に基づき、 :math:`\alpha = -\ln(\tau) / d` で変換されます。 .. list-table:: :header-rows: 1 :widths: 20 80 * - パラメータ - 説明 * - table-tau1 - 厚さ 1 mm (0.1 cm) に対する内部透過率テーブル * - table-tau10 - 厚さ 10 mm (1.0 cm) に対する内部透過率テーブル * - table-tau25 - 厚さ 25 mm (2.5 cm) に対する内部透過率テーブル テーブルの書式例(吸収係数の場合): .. code-block:: text table-absorption-coeff unit1 = nm unit2 = 1/cm 300 0.5 500 0.1 800 0.05 end-table テーブルの書式例(内部透過率の場合): .. code-block:: text table-tau25 unit1 = nm 300 0.01 500 0.90 800 0.95 end-table 散乱係数 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 媒質中での光の散乱を定義します。Rayleigh散乱とMie散乱を個別に設定できます。 吸収と同様に、係数(coefficient)または長さ(length)のどちらでも入力できます。 **Rayleigh散乱** .. list-table:: :header-rows: 1 :widths: 40 60 * - パラメータ - 説明 * - table-scattering-coeff-rayleigh - | 波長依存のRayleigh散乱係数テーブル。 | unit1: 波長またはエネルギー単位 | unit2: 係数単位(1/cm等) * - table-scattering-length-rayleigh - | 波長依存のRayleigh散乱長テーブル。 | unit1: 波長またはエネルギー単位 | unit2: 長さ単位(cm等) テーブルの書式例: .. code-block:: text table-scattering-length-rayleigh unit1 = nm unit2 = cm 300 5 500 50 800 200 end-table **Mie散乱** .. list-table:: :header-rows: 1 :widths: 40 60 * - パラメータ - 説明 * - table-scattering-coeff-mie - | 波長依存のMie散乱係数テーブル。 | unit1: 波長またはエネルギー単位 | unit2: 係数単位(1/cm等) * - table-scattering-length-mie - | 波長依存のMie散乱長テーブル。 | unit1: 波長またはエネルギー単位 | unit2: 長さ単位(cm等) **Mie散乱の異方性** .. list-table:: :header-rows: 1 :widths: 30 10 55 * - パラメータ - デフォルト - 説明 * - anisotropy - 0 - | Mie散乱の異方性パラメータ g(スカラー値)。Henyey-Greenstein位相関数における g。 | g = 0: 等方散乱、g > 0: 前方散乱優勢、g < 0: 後方散乱優勢。 | 範囲: -1 ≤ g ≤ 1。 * - table-anisotropy - (なし) - 波長依存の異方性パラメータテーブル。unit1のみ必要。 再発光(Re-emission):蛍光、燐光、波長シフト ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 媒質中での光の再発光(蛍光、燐光、波長シフト)を定義します。 光が再発光吸収プロセスにより吸収されると、量子収率(Quantum Yield)の確率で再発光スペクトルに基づく波長の新しい光が等方的に放出されます。 このプロセスは通常の(非輻射的な)吸収( ``absorption-coeff`` / ``table-absorption-coeff`` )とは独立です。 全吸収係数は、非輻射吸収係数と再発光吸収係数の和になります。 境界での吸収( ``fraction-absorption`` )は再発光を引き起こしません。 **再発光吸収(波長依存)** .. list-table:: :header-rows: 1 :widths: 40 60 * - パラメータ - 説明 * - table-reemission-coeff - | 波長依存の再発光吸収係数テーブル。 | unit1: 波長またはエネルギー単位(nm等) | unit2: 係数単位(1/cm等) * - table-reemission-length - | 波長依存の再発光吸収長テーブル。 | unit1: 波長またはエネルギー単位(nm等) | unit2: 長さ単位(cm等) **再発光スペクトル** .. list-table:: :header-rows: 1 :widths: 40 60 * - パラメータ - 説明 * - table-reemission-spectrum - | 再発光する光の発光スペクトル。 ``table-scintillation-spectrum`` と同じ形式。 | unit1のみ必要。y値は波長に対する相対的な発光確率を表す。 **スカラーパラメータ** .. list-table:: :header-rows: 1 :widths: 30 15 55 * - パラメータ - デフォルト - 説明 * - reemission-yield - 0 - | 再発光の量子収率(0〜1)。吸収された光が再発光する確率。 | = 0: 再発光なし(デフォルト)。 ``table-reemission-coeff`` を設定してもこのパラメータがなければ再発光は起きない。 * - reemission-time - (なし) - | 再発光の減衰時定数 [ns]。遅延時間は指数分布に従いサンプリングされる。 | 設定しない場合、再発光する光は遅延なしで生成される。 記述例: .. code-block:: text set-region reg = 101 n = 1.5 reemission-yield = 0.85 reemission-time = 12 $ ns table-reemission-coeff unit1 = nm unit2 = 1/cm 350 1.0 400 0.5 450 0.1 500 0.01 end-table table-reemission-spectrum unit1 = nm 400 0.0 420 0.3 450 1.0 500 0.8 550 0.3 600 0.0 end-table set-boundary ブロック -------------------------------------------------- ``set-boundary`` で新しい境界ブロックを開始し、領域間の境界における光の振る舞いを定義します。 .. note:: ``set-boundary`` で定義されていない境界では、光は完全に吸収されます。 また、``fraction-absorption`` のデフォルト値は1(100%吸収)であるため、 ``set-boundary`` を定義しても透過や反射の割合を明示的に設定しなければ同様に全吸収となります。 境界の指定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 境界は方向付き(一方向)または双方向で指定できます。 **一方向の指定(reg-from / reg-to)** .. list-table:: :header-rows: 1 :widths: 20 80 * - パラメータ - 説明 * - reg-from - 光の出発領域。スペース区切りで複数指定可能。 * - reg-to - 光の到達領域。スペース区切りで複数指定可能。 **双方向の指定(reg1 / reg2)** .. list-table:: :header-rows: 1 :widths: 20 80 * - パラメータ - 説明 * - reg1 - 境界の一方の領域。スペース区切りで複数指定可能。 * - reg2 - 境界のもう一方の領域。スペース区切りで複数指定可能。 ``reg1`` / ``reg2`` で指定した場合、光がどちらの方向に通過しても同じ境界条件が適用されます。 境界条件 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 光が境界に到達すると、まず ``fraction-absorption`` の確率で吸収が判定され、 次に ``fraction-pass`` の確率で透過が判定されます。 いずれにも該当しなかった場合、光は反射します。 .. list-table:: :header-rows: 1 :widths: 35 15 50 * - パラメータ - デフォルト - 説明 * - boundary-type - reflection - | 境界の物理モデル。 | = fresnel: フレネル反射 | = reflection: 反射の種類と割合を直接指定 * - fraction-absorption - 1 - 境界面での吸収割合(0〜1)。 * - fraction-pass - 0 - 境界面の透過割合(0〜1)。スカラー値。 * - table-pass - (なし) - 波長依存の透過割合テーブル。unit1のみ必要。 * - absorb-if-not-pass - 0 - | = 1 の場合、透過しなかった光を反射せずに吸収する。 | = 0 の場合、透過しなかった光は反射する(デフォルト)。 .. note:: boundary-type = fresnel の場合は、隣接する2つの領域の屈折率(n)が設定されている必要があります。 **反射の種類** 光が透過せず反射する場合の反射モデルを指定します。 .. list-table:: :header-rows: 1 :widths: 35 15 50 * - パラメータ - デフォルト - 説明 * - fraction-perfect-specular - 1.0 - 完全鏡面反射の相対割合。 * - fraction-specular-lobe - 0 - 鏡面ローブ反射の相対割合。roughnessパラメータで広がりを制御。 * - fraction-diffuse - 0 - ランベルト拡散反射の相対割合。 * - fraction-backscatter-lobe - 0 - 後方散乱ローブ反射の相対割合。 * - roughness - 0.1 - | 反射ローブの粗さパラメータ(0〜1)。fraction-specular-lobe と fraction-backscatter-lobe に適用。 | = 0: 完全鏡面反射、= 1: 完全拡散。 | 内部では Blinn-Phong 指数 s = 2/roughness² - 2 に変換される。 .. note:: fraction-perfect-specular, fraction-specular-lobe, fraction-diffuse, fraction-backscatter-lobe の4つの値は相対割合であり、コード内で合計が1になるよう自動的に規格化されます。 例えば、以下の2つの設定は等価です: .. code-block:: text fraction-perfect-specular = 0.6 fraction-diffuse = 0.4 .. code-block:: text fraction-perfect-specular = 3 fraction-diffuse = 2 外部データの読み込み -------------------------------------------------- .. list-table:: :header-rows: 1 :widths: 20 80 * - パラメータ - 説明 * - load - | 外部ファイルから光学特性を読み込む。 | ファイルは ``$PHITSPATH/data/light/`` ディレクトリに配置し、拡張子 ``.inp`` を除いたファイル名を指定する。 | 例: ``load = CsI`` は ``$PHITSPATH/data/light/CsI.inp`` を読み込む。 その他 -------------------------------------------------- .. list-table:: :header-rows: 1 :widths: 20 80 * - パラメータ - 説明 * - print-comment - | 計算実行時のログ出力に表示する。 例題 -------------------------------------------------- シンチレーション光の発生 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] yield-factor = 1e-3 set-region reg = 101 light-yield = 10000 table-scintillation-spectrum unit1 = nm 300 0 400 0.1 500 0.2 600 0.3 700 0.0 end-table .. video:: light-scintillation.mp4 :width: 300 :loop: チェレンコフ光の発生 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] yield-factor = 0.1 set-region reg = 101 n = 1.3 .. video:: light-cherenkov.mp4 :width: 300 :loop: フレネル境界の設定 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 3.0 set-region reg = 900 n = 1.0 set-boundary reg1 = 101 reg2 = 900 boundary-type = fresnel fraction-absorption = 0.1 .. video:: light-boundary-fresnel.mp4 :width: 300 :loop: 完全鏡面反射 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 1.3 set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0.5 fraction-perfect-specular = 1 .. video:: light-boundary-reflection1.mp4 :width: 300 :loop: 完全鏡面反射 + 鏡面ローブ反射 + 拡散反射(1:1:1) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 n = 1.3 set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0.5 $ --------------------------- fraction-perfect-specular = 1 fraction-specular-lobe = 1 fraction-diffuse = 1 roughness = 0.1 $ --------------------------- .. video:: light-boundary-reflection2.mp4 :width: 300 :loop: 吸収 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 light-yield = 100 scintillation-lambda = 400 $ nm absorption-length = 1 $ cm set-boundary reg-from = 101 reg-to = 900 fraction-absorption = 0 .. video:: light-absorption.mp4 :width: 300 :loop: 散乱(レーリー散乱) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text [ Light ] set-region reg = 101 table-scattering-length-rayleigh unit1 = nm unit2 = cm 200 5 800 5 end-table set-boundary reg-from = 101 reg-to = 900 .. video:: light-scattering-rayleigh.mp4 :width: 300 :loop: