bem_photoelectron_injection Module

光線追跡による光電子放出位置と速度のsampling。


Uses

  • module~~bem_photoelectron_injection~~UsesGraph module~bem_photoelectron_injection bem_photoelectron_injection iso_fortran_env iso_fortran_env module~bem_photoelectron_injection->iso_fortran_env module~bem_boundary bem_boundary module~bem_photoelectron_injection->module~bem_boundary module~bem_collision bem_collision module~bem_photoelectron_injection->module~bem_collision module~bem_constants bem_constants module~bem_photoelectron_injection->module~bem_constants module~bem_injection_flux bem_injection_flux module~bem_photoelectron_injection->module~bem_injection_flux module~bem_injection_geometry bem_injection_geometry module~bem_photoelectron_injection->module~bem_injection_geometry module~bem_injection_random bem_injection_random module~bem_photoelectron_injection->module~bem_injection_random module~bem_kinds bem_kinds module~bem_photoelectron_injection->module~bem_kinds module~bem_string_utils bem_string_utils module~bem_photoelectron_injection->module~bem_string_utils module~bem_types bem_types module~bem_photoelectron_injection->module~bem_types module~bem_boundary->module~bem_kinds module~bem_boundary->module~bem_types ieee_arithmetic ieee_arithmetic module~bem_boundary->ieee_arithmetic module~bem_collision->iso_fortran_env module~bem_collision->module~bem_kinds module~bem_collision->module~bem_string_utils module~bem_collision->module~bem_types module~bem_collision->ieee_arithmetic module~bem_constants->module~bem_kinds module~bem_injection_flux->module~bem_constants module~bem_injection_flux->module~bem_injection_geometry module~bem_injection_flux->module~bem_injection_random module~bem_injection_flux->module~bem_kinds module~bem_injection_flux->ieee_arithmetic module~bem_injection_geometry->module~bem_kinds module~bem_injection_geometry->module~bem_string_utils module~bem_injection_random->module~bem_constants module~bem_injection_random->module~bem_kinds module~bem_injection_random->module~bem_types module~bem_particles bem_particles module~bem_injection_random->module~bem_particles module~bem_kinds->iso_fortran_env module~bem_types->module~bem_kinds module~bem_particles->module~bem_kinds module~bem_particles->module~bem_types

Used by

  • module~~bem_photoelectron_injection~~UsedByGraph module~bem_photoelectron_injection bem_photoelectron_injection module~bem_injection bem_injection module~bem_injection->module~bem_photoelectron_injection module~bem_app_config_particle_runtime bem_app_config_particle_runtime module~bem_app_config_particle_runtime->module~bem_injection module~bem_app_config_particle_runtime_batch bem_app_config_particle_runtime_batch module~bem_app_config_particle_runtime_batch->module~bem_app_config_particle_runtime module~bem_app_config_particle_runtime_sampling bem_app_config_particle_runtime_sampling module~bem_app_config_particle_runtime_sampling->module~bem_app_config_particle_runtime module~bem_app_config_runtime bem_app_config_runtime module~bem_app_config_runtime->module~bem_app_config_particle_runtime module~bem_app_config bem_app_config module~bem_app_config->module~bem_app_config_runtime module~bem_simulator bem_simulator module~bem_simulator->module~bem_app_config_runtime module~bem_simulator->module~bem_app_config module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_app_config_runtime module~bem_simulator_io->module~bem_simulator module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_app_config_runtime module~bem_simulator_loop->module~bem_simulator module~bem_matching_plane_coupling bem_matching_plane_coupling module~bem_simulator_loop->module~bem_matching_plane_coupling module~bem_matching_plane_coupling->module~bem_app_config module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_simulator module~bem_simulator_particles bem_simulator_particles module~bem_simulator_particles->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator program~main main program~main->module~bem_app_config program~main->module~bem_simulator program~zhao_atlas_main zhao_atlas_main program~zhao_atlas_main->module~bem_app_config program~zhao_response_main zhao_response_main program~zhao_response_main->module~bem_app_config

Subroutines

public subroutine sample_photo_raycast_particles(mesh, sim, inject_face, pos_low, pos_high, ray_direction, m_particle, temperature_k, normal_drift_speed, emit_current_density_a_m2, q_particle, rays_per_batch, x, v, w, n_emit, emit_elem_idx, global_rays_per_batch, vmin_normal, collision_failure_status, collision_failure_ray, collision_failure_bounce)

光線を注入面からレイキャストし、最初の命中要素から光電子を放出する。

Arguments

Type IntentOptional Attributes Name
type(mesh_type), intent(in) :: mesh

交差判定に使うメッシュ。

type(sim_config), intent(in) :: sim

ボックス境界条件とバッチ時間を含むシミュレーション設定。

character(len=*), intent(in) :: inject_face

照射面識別子(x_low/x_high/y_low/y_high/z_low/z_high)。

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

実際に放出された粒子数(<= rays_per_batch)。

integer(kind=i32), intent(out), optional :: emit_elem_idx(:)
integer(kind=i32), intent(in), optional :: global_rays_per_batch

全rank合計のレイ本数(省略時は rays_per_batch)。

real(kind=dp), intent(in), optional :: vmin_normal

放出法線速度の下限 [m/s](省略時は 0)。

integer(kind=i32), intent(out), optional :: collision_failure_status

不完全な衝突照会の status(省略時は OpenMP 終了後に停止)。

integer(kind=i32), intent(out), optional :: collision_failure_ray

不完全な衝突照会の status(省略時は OpenMP 終了後に停止)。 不完全な照会を返した最小 ray index。

integer(kind=i32), intent(out), optional :: collision_failure_bounce

不完全な衝突照会の status(省略時は OpenMP 終了後に停止)。 不完全な照会を返した最小 ray index。 不完全な照会を返した bounce index。