乱数シード設定と粒子位置/速度サンプリングを担う粒子注入モジュール。
drifting Maxwellian の片側流入束 [#/m^2/s] を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | number_density_m3 |
粒子数密度 [1/m^3]。 |
||
| real(kind=dp), | intent(in) | :: | temperature_k |
温度 [K]。 |
||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの質量 [kg]。 |
||
| real(kind=dp), | intent(in) | :: | drift_velocity(3) | |||
| real(kind=dp), | intent(in) | :: | inward_normal(3) | |||
| real(kind=dp), | intent(in), | optional | :: | vmin_normal |
法線速度の下限 [m/s](省略時は 0)。 |
注入面上の矩形開口から有効面積[m^2]を返す。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | inject_face |
注入面識別子( |
||
| real(kind=dp), | intent(in) | :: | pos_low(3) | |||
| real(kind=dp), | intent(in) | :: | pos_high(3) |
与えたシード列またはシステム時刻からFortran乱数生成器を初期化する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=i32), | intent(in), | optional | :: | seed(:) |
直方体領域 [low, high] 内で一様分布の初期位置をサンプリングする。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | low(3) | |||
| real(kind=dp), | intent(in) | :: | high(3) | |||
| real(kind=dp), | intent(out) | :: | x(:,:) |
ドリフト速度付きMaxwell分布(温度または熱速度指定)から粒子速度を生成する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | drift_velocity(3) | |||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの質量 [kg]( |
||
| real(kind=dp), | intent(out) | :: | v(:,:) | |||
| real(kind=dp), | intent(in), | optional | :: | temperature_k |
熱運動の温度 [K]( |
|
| real(kind=dp), | intent(in), | optional | :: | thermal_speed |
熱速度の標準偏差 |
指定粒子数ぶんの位置/速度/電荷/質量/重みを生成し particles_soa を初期化する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(particles_soa), | intent(out) | :: | pcls |
生成した粒子群を保持する |
||
| integer(kind=i32), | intent(in) | :: | n |
生成するマクロ粒子数。 |
||
| real(kind=dp), | intent(in) | :: | q_particle |
粒子1個あたりの電荷 [C]。 |
||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。 |
||
| real(kind=dp), | intent(in) | :: | w_particle |
粒子1個あたりの電荷 [C]。 粒子1個あたりの質量 [kg]。 粒子1個あたりのマクロ粒子重み。 |
||
| real(kind=dp), | intent(in) | :: | pos_low(3) | |||
| real(kind=dp), | intent(in) | :: | pos_high(3) | |||
| real(kind=dp), | intent(in) | :: | drift_velocity(3) | |||
| real(kind=dp), | intent(in), | optional | :: | temperature_k |
熱運動の温度 [K]( |
|
| real(kind=dp), | intent(in), | optional | :: | thermal_speed |
熱運動の温度 [K]( |
物理流量・重み・残差から今バッチのマクロ粒子数を決める。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | number_density_m3 |
粒子数密度 [1/m^3]。 |
||
| real(kind=dp), | intent(in) | :: | temperature_k |
温度 [K]。 |
||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの質量 [kg]。 |
||
| real(kind=dp), | intent(in) | :: | drift_velocity(3) | |||
| real(kind=dp), | intent(in) | :: | box_min(3) | |||
| real(kind=dp), | intent(in) | :: | box_max(3) | |||
| character(len=*), | intent(in) | :: | inject_face |
注入面識別子( |
||
| real(kind=dp), | intent(in) | :: | pos_low(3) | |||
| real(kind=dp), | intent(in) | :: | pos_high(3) | |||
| real(kind=dp), | intent(in) | :: | batch_duration |
1バッチの物理時間長 [s]。 |
||
| real(kind=dp), | intent(in) | :: | w_particle |
マクロ粒子重み。 |
||
| real(kind=dp), | intent(inout) | :: | residual |
前バッチから繰り越すマクロ粒子端数(呼び出し後に更新)。 |
||
| integer(kind=i32), | intent(out) | :: | n_macro |
今バッチで生成するマクロ粒子数。 |
||
| real(kind=dp), | intent(in), | optional | :: | vmin_normal |
法線速度の下限 [m/s](省略時は 0)。 |
上流リザーバ境界から流入する粒子群を面注入としてサンプルする。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | box_min(3) | |||
| real(kind=dp), | intent(in) | :: | box_max(3) | |||
| character(len=*), | intent(in) | :: | inject_face |
注入面識別子( |
||
| real(kind=dp), | intent(in) | :: | pos_low(3) | |||
| real(kind=dp), | intent(in) | :: | pos_high(3) | |||
| real(kind=dp), | intent(in) | :: | drift_velocity(3) | |||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの質量 [kg]。 |
||
| real(kind=dp), | intent(in) | :: | temperature_k |
粒子1個あたりの質量 [kg]。 温度 [K]。 |
||
| real(kind=dp), | intent(in) | :: | batch_duration |
粒子1個あたりの質量 [kg]。 温度 [K]。 1バッチの物理時間長 [s](現在は妥当性チェックのみ)。 |
||
| real(kind=dp), | intent(out) | :: | x(:,:) | |||
| real(kind=dp), | intent(out) | :: | v(:,:) | |||
| real(kind=dp), | intent(in), | optional | :: | barrier_normal_energy |
法線方向のエネルギー障壁 |
|
| real(kind=dp), | intent(in), | optional | :: | vmin_normal |
法線速度の下限 [m/s](省略時は |
|
| real(kind=dp), | intent(in), | optional | :: | position_jitter_dt |
初期位置に速度方向で与えるランダムジッタ時間幅[s](省略時は 0)。 |
|
| logical, | intent(in), | optional | :: | apply_barrier_energy_shift |
|
光線を注入面からレイキャストし、最初の命中要素から光電子を放出する。
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mesh_type), | intent(in) | :: | mesh |
交差判定に使うメッシュ。 |
||
| type(sim_config), | intent(in) | :: | sim |
ボックス境界条件とバッチ時間を含むシミュレーション設定。 |
||
| character(len=*), | intent(in) | :: | inject_face |
照射面識別子( |
||
| real(kind=dp), | intent(in) | :: | pos_low(3) | |||
| real(kind=dp), | intent(in) | :: | pos_high(3) | |||
| real(kind=dp), | intent(in) | :: | ray_direction(3) | |||
| real(kind=dp), | intent(in) | :: | m_particle |
粒子1個あたりの質量 [kg]。 |
||
| real(kind=dp), | intent(in) | :: | temperature_k |
粒子1個あたりの質量 [kg]。 放出温度 [K]。 |
||
| real(kind=dp), | intent(in) | :: | normal_drift_speed |
粒子1個あたりの質量 [kg]。 放出温度 [K]。 放出法線方向のシフト速度 [m/s]。 |
||
| real(kind=dp), | intent(in) | :: | emit_current_density_a_m2 |
レイ垂直面基準の放出電流面密度 [A/m^2]。 |
||
| real(kind=dp), | intent(in) | :: | q_particle |
レイ垂直面基準の放出電流面密度 [A/m^2]。 粒子1個あたりの電荷 [C]。 |
||
| integer(kind=i32), | intent(in) | :: | rays_per_batch |
このrankで発射するレイ本数。 |
||
| real(kind=dp), | intent(out) | :: | x(:,:) | |||
| real(kind=dp), | intent(out) | :: | v(:,:) | |||
| real(kind=dp), | intent(out) | :: | w(:) | |||
| integer(kind=i32), | intent(out) | :: | n_emit |
実際に放出された粒子数( |
||
| integer(kind=i32), | intent(out), | optional | :: | emit_elem_idx(:) | ||
| integer(kind=i32), | intent(in), | optional | :: | global_rays_per_batch |
全rank合計のレイ本数(省略時は |
|
| real(kind=dp), | intent(in), | optional | :: | vmin_normal |
放出法線速度の下限 [m/s](省略時は 0)。 |