bem_surface_closure_contract Module

シミュレータが外部の表面電流モデルから受け取るモデル非依存の境界契約。


Uses

  • module~~bem_surface_closure_contract~~UsesGraph module~bem_surface_closure_contract bem_surface_closure_contract module~bem_kinds bem_kinds module~bem_surface_closure_contract->module~bem_kinds module~bem_runtime_modes bem_runtime_modes module~bem_surface_closure_contract->module~bem_runtime_modes iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_runtime_modes->module~bem_kinds module~bem_string_utils bem_string_utils module~bem_runtime_modes->module~bem_string_utils

Used by

  • module~~bem_surface_closure_contract~~UsedByGraph module~bem_surface_closure_contract bem_surface_closure_contract module~bem_simulator bem_simulator module~bem_simulator->module~bem_surface_closure_contract module~bem_surface_current_model bem_surface_current_model module~bem_simulator->module~bem_surface_current_model module~bem_output_writer bem_output_writer module~bem_simulator->module~bem_output_writer module~bem_run_outputs bem_run_outputs module~bem_simulator->module~bem_run_outputs module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_surface_closure_contract module~bem_simulator_charge->module~bem_simulator module~bem_surface_current_model->module~bem_surface_closure_contract module~bem_zhao_outflow_refresh bem_zhao_outflow_refresh module~bem_zhao_outflow_refresh->module~bem_surface_closure_contract module~bem_zhao_outflow_refresh->module~bem_surface_current_model module~bem_output_writer->module~bem_surface_current_model module~bem_output_writer_summary bem_output_writer_summary module~bem_output_writer_summary->module~bem_surface_current_model module~bem_output_writer_summary->module~bem_output_writer module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_simulator module~bem_simulator_io->module~bem_output_writer module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_simulator module~bem_simulator_loop->module~bem_zhao_outflow_refresh module~bem_simulator_loop->module~bem_output_writer module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_simulator_loop->module~bem_periodic_checkpoint module~bem_simulator_loop->module~bem_run_outputs 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 program~main->module~bem_output_writer program~main->module~bem_periodic_checkpoint program~main->module~bem_run_outputs module~bem_output_writer_files bem_output_writer_files module~bem_output_writer_files->module~bem_output_writer module~bem_output_writer_history bem_output_writer_history module~bem_output_writer_history->module~bem_output_writer module~bem_periodic_checkpoint->module~bem_output_writer module~bem_run_outputs->module~bem_output_writer module~bem_run_outputs->module~bem_periodic_checkpoint

Derived Types

type, public ::  surface_closure_contract_type

Components

Type Visibility Attributes Name Initial
logical, public :: active = .false.
logical, public, allocatable :: has_absorbed_target(:)
logical, public, allocatable :: has_emission_target(:)
logical, public, allocatable :: has_escape_target(:)
logical, public, allocatable :: has_inflow_kinetic_map(:)
logical, public, allocatable :: has_outflow_kinetic_barrier(:)
logical, public, allocatable :: has_inflow_number_flux(:)
real(kind=dp), public, allocatable :: absorbed_current_a(:)
real(kind=dp), public, allocatable :: emission_current_a(:)
real(kind=dp), public, allocatable :: escaped_particle_current_a(:)
real(kind=dp), public, allocatable :: inflow_reservoir_potential_v(:)
real(kind=dp), public, allocatable :: inflow_access_potential_v(:)
real(kind=dp), public, allocatable :: inflow_reservoir_density_m3(:)

流入写像の0 V貯留部にあるMaxwellianの密度。0以下ならspecies設定の密度を使う。

integer(kind=i32), public, allocatable :: inflow_kinetic_face(:)
real(kind=dp), public, allocatable :: outflow_barrier_potential_v(:)
integer(kind=i32), public, allocatable :: outflow_barrier_face(:)
real(kind=dp), public, allocatable :: inflow_number_flux_m2_s(:)
integer(kind=i32), public, allocatable :: escape_partner_species(:)

この species の脱出・帰還目標から、そのバッチで追跡した脱出電荷を差し引く species(0 なら無し)。 外部根の脱出束が複数の放出電子種の合算なら、追跡した側に充てた残りをこの species の目標にする。

logical, public, allocatable :: emission_target_from_tracked_source(:)

放出目標が、根が予測した放出ではなく、根に与えた外側源(追跡した放出の窓平均)である種(PE なしの SEE)。 raw channel が空のバッチでも止まらず、帰還目標は放出へ畳み、放出がなければ根の脱出分を未閉として記録する。

integer(kind=i32), public, allocatable :: reflected_electron_species(:)

この species の脱出・帰還・放出目標から差し引く、セル内で反射して H を抜けた上流電子の species(0 なら無し)。 外部根の源に反射電子を含めると根の脱出・帰還は放出電子と反射電子の合算なので、追跡で決まる反射分を先に充て、 残りをこの species に固定する。

logical, public, allocatable :: absorbed_target_credits_tracked_escape(:)

吸収目標に、この species 自身が外部障壁を越えて脱出した追跡電荷を足し戻す(反射して出た上流電子は壁に届かない)。

logical, public :: has_plane_gauge = .false.

照射セル契約の壁面の平均電位を外部シース解の壁電位へ固定する場合だけ有効。

real(kind=dp), public :: plane_gauge_potential_v = 0.0_dp
real(kind=dp), public :: top_field_v_m = 0.0_dp
logical, public :: outer_return_cell_uniform = .false.

外部障壁で戻る粒子を周期セル内の一様な位置へ戻す。


Functions

public pure function species_closure_mode(contract, species_idx, configured_fixed_current) result(mode)

種 species_idx の固定電流 closure 方式(bem_runtime_modes の closure_mode_*)。 設定が fixed_current でも外部根の目標もなければ none。方式は contract のフラグから導くので、 方式とフラグが食い違うことはない。

Arguments

Type IntentOptional Attributes Name
class(surface_closure_contract_type), intent(in) :: contract
integer(kind=i32), intent(in) :: species_idx
logical, intent(in) :: configured_fixed_current

Return Value integer(kind=i32)