bem_simulator_workspace Module

シミュレーション実行中に再利用するバッチ作業配列を管理する。


Uses

  • module~~bem_simulator_workspace~~UsesGraph module~bem_simulator_workspace bem_simulator_workspace module~bem_kinds bem_kinds module~bem_simulator_workspace->module~bem_kinds module~bem_outflow_spectrum bem_outflow_spectrum module~bem_simulator_workspace->module~bem_outflow_spectrum iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_outflow_spectrum->module~bem_kinds sheath_model sheath_model module~bem_outflow_spectrum->sheath_model

Used by

  • module~~bem_simulator_workspace~~UsedByGraph module~bem_simulator_workspace bem_simulator_workspace module~bem_simulator bem_simulator module~bem_simulator->module~bem_simulator_workspace module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_simulator_workspace module~bem_simulator_charge->module~bem_simulator module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_simulator_workspace module~bem_simulator_loop->module~bem_simulator module~bem_simulator_io bem_simulator_io module~bem_simulator_io->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_simulator

Variables

Type Visibility Attributes Name Initial
integer(kind=i32), public, parameter :: fixed_charge_absorbed = 1_i32

fixed_current_charge_values(species, channel) の channel。旧 1 次元配列の (channel-1)*n+species と同じ並び。

integer(kind=i32), public, parameter :: fixed_charge_emission = 2_i32
integer(kind=i32), public, parameter :: fixed_charge_escaped = 3_i32
integer(kind=i32), public, parameter :: fixed_charge_barrier_return = 4_i32
integer(kind=i32), public, parameter :: neutral_charge_emitted = 1_i32

neutral_return_charge_values(species, channel) の channel。

integer(kind=i32), public, parameter :: neutral_charge_absorbed = 2_i32
integer(kind=i32), public, parameter :: neutral_charge_unresolved = 3_i32
integer(kind=i32), public, parameter :: neutral_charge_escaped = 4_i32
integer(kind=i32), public, parameter :: neutral_charge_soft = 5_i32
integer(kind=i32), public, parameter :: neutral_charge_invalid = 6_i32
integer(kind=i32), public, parameter :: neutral_count_escaped = 1_i32

neutral_return_terminal_counts(species, kind) の kind。

integer(kind=i32), public, parameter :: neutral_count_soft = 2_i32
integer(kind=i32), public, parameter :: neutral_count_invalid = 3_i32

Derived Types

type, public ::  simulator_batch_workspace_type

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, allocatable :: dq_thread(:,:)
real(kind=dp), public, allocatable :: dq(:)
real(kind=dp), public, allocatable :: photo_emission_dq(:,:)
logical, public, allocatable :: escaped_boundary_flag(:)
logical, public, allocatable :: absorbed_flag(:)
integer(kind=i32), public, allocatable :: absorbed_element(:)
logical, public, allocatable :: soft_discarded_boundary_flag(:)
integer(kind=i64), public, allocatable :: rng_id(:)

粒子ごとの乱数 id。初期粒子は global slot、子粒子は親 id から派生する。粒子を置く側が必ず書く。

real(kind=dp), public, allocatable :: q_before(:)
real(kind=dp), public, allocatable :: candidate_charge(:)
logical, public :: charge_candidate_ready = .false.
real(kind=dp), public, allocatable :: neutral_return_charge_values(:,:)

neutral_return が rank 合計する電荷(species, neutral_charge_*)。

real(kind=dp), public, allocatable :: neutral_return_emitted_charge(:)
real(kind=dp), public, allocatable :: neutral_return_absorbed_charge(:)
real(kind=dp), public, allocatable :: neutral_return_unresolved_charge(:)
real(kind=dp), public, allocatable :: neutral_return_weight_scale(:)
real(kind=dp), public, allocatable :: neutral_return_correction(:)
real(kind=dp), public, allocatable :: neutral_return_unresolved_fraction(:)
real(kind=dp), public, allocatable :: fixed_current_charge_values(:,:)

固定電流 closure が rank 合計する raw 電荷(species, fixed_charge_*)。吸収、放出反作用、脱出、 外部障壁で戻った電荷(H 外向き通過のうち戻った分、帯電符号)。

real(kind=dp), public, allocatable :: fixed_absorbed_target_charge(:)
real(kind=dp), public, allocatable :: fixed_absorbed_weight_scale(:)
real(kind=dp), public, allocatable :: fixed_emission_target_charge(:)
real(kind=dp), public, allocatable :: fixed_emission_weight_scale(:)
real(kind=dp), public, allocatable :: fixed_escape_target_charge(:)
real(kind=dp), public, allocatable :: fixed_escape_correction(:)
real(kind=dp), public, allocatable :: fixed_current_correction(:)
real(kind=dp), public, allocatable :: fixed_escape_closed_charge(:)

脱出目標の調整で収支に組み込んだ電荷と、組み込めなかった電荷(どちらも帯電符号の大きさ)。 partner を持つ種では差し引いた partner の脱出とその超過、放出目標が追跡した源の種では 収支に載せた根の脱出と、放出がなく載せられなかった根の脱出。

real(kind=dp), public, allocatable :: fixed_escape_unclosed_charge(:)
real(kind=dp), public :: fixed_surface_raw_charge = 0.0_dp

全 species が表面へ置く正味電荷(吸収 + 放出反作用)の raw 値と closure 後の値、closure 後の各項の 絶対値和。固定電流 channel がない batch では 0。

real(kind=dp), public :: fixed_surface_net_charge = 0.0_dp
real(kind=dp), public :: fixed_surface_charge_scale = 0.0_dp
logical, public, allocatable :: fixed_channel_active(:,:)

この batch で固定電流 target を適用した channel。1=吸収、2=放出、3=脱出。

integer(kind=i64), public, allocatable :: neutral_return_terminal_counts(:,:)

neutral_return の非対応な終端の数(species, neutral_count_*)。

real(kind=dp), public, allocatable :: ledger_charge_values(:)
integer(kind=i64), public, allocatable :: ledger_count_values(:)
real(kind=dp), public, allocatable :: matching_plane_moments_thread(:,:,:)
integer(kind=i64), public, allocatable :: secondary_counts_thread(:,:,:)
real(kind=dp), public, allocatable :: secondary_values_thread(:,:,:)

Type-Bound Procedures

procedure, public :: init => init_simulator_batch_workspace
procedure, public :: reset_before_injection
procedure, public :: prepare_particle_flags
procedure, public :: extend_particle_flags