bem_types Module

シミュレーション設定・統計・メッシュ・粒子・衝突情報の主要データ型を定義する。


Uses

  • module~~bem_types~~UsesGraph module~bem_types bem_types module~bem_kinds bem_kinds module~bem_types->module~bem_kinds module~bem_outflow_spectrum bem_outflow_spectrum module~bem_types->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_types~~UsedByGraph module~bem_types bem_types module~bem_app_config_authoring_domain bem_app_config_authoring_domain module~bem_app_config_authoring_domain->module~bem_types module~bem_app_config_authoring bem_app_config_authoring module~bem_app_config_authoring_domain->module~bem_app_config_authoring module~bem_app_config_mesh_runtime bem_app_config_mesh_runtime module~bem_app_config_mesh_runtime->module~bem_types module~bem_app_config_types bem_app_config_types module~bem_app_config_mesh_runtime->module~bem_app_config_types module~bem_importers bem_importers module~bem_app_config_mesh_runtime->module~bem_importers module~bem_mesh bem_mesh module~bem_app_config_mesh_runtime->module~bem_mesh module~bem_panel_surface_sides bem_panel_surface_sides module~bem_app_config_mesh_runtime->module~bem_panel_surface_sides module~bem_templates bem_templates module~bem_app_config_mesh_runtime->module~bem_templates module~bem_app_config_parser bem_app_config_parser module~bem_app_config_parser->module~bem_types module~bem_app_config_parser->module~bem_app_config_types module~bem_config_toml bem_config_toml module~bem_app_config_parser->module~bem_config_toml module~bem_physics_config_types bem_physics_config_types module~bem_app_config_parser->module~bem_physics_config_types module~bem_app_config_parser->module~bem_app_config_authoring module~bem_config_layout bem_config_layout module~bem_app_config_parser->module~bem_config_layout module~bem_app_config_particle_runtime bem_app_config_particle_runtime module~bem_app_config_particle_runtime->module~bem_types module~bem_app_config_potential_runtime bem_app_config_potential_runtime module~bem_app_config_particle_runtime->module~bem_app_config_potential_runtime module~bem_app_config_particle_runtime->module~bem_app_config_types module~bem_config_helpers bem_config_helpers module~bem_app_config_particle_runtime->module~bem_config_helpers module~bem_electrostatic_snapshot bem_electrostatic_snapshot module~bem_app_config_particle_runtime->module~bem_electrostatic_snapshot module~bem_injection bem_injection module~bem_app_config_particle_runtime->module~bem_injection module~bem_app_config_potential_runtime->module~bem_types module~bem_app_config_potential_runtime->module~bem_app_config_types module~bem_app_config_potential_runtime->module~bem_config_helpers module~bem_app_config_potential_runtime->module~bem_electrostatic_snapshot module~bem_irradiation_cell_contract bem_irradiation_cell_contract module~bem_app_config_potential_runtime->module~bem_irradiation_cell_contract module~bem_app_config_types->module~bem_types module~bem_app_config_types->module~bem_physics_config_types module~bem_boundary bem_boundary module~bem_boundary->module~bem_types module~bem_collision bem_collision module~bem_collision->module~bem_types module~bem_config_helpers->module~bem_types module~bem_config_helpers->module~bem_app_config_types module~bem_config_toml->module~bem_types module~bem_config_toml->module~bem_app_config_types module~bem_coulomb_fmm_periodic_nonzero_reference bem_coulomb_fmm_periodic_nonzero_reference module~bem_coulomb_fmm_periodic_nonzero_reference->module~bem_types module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum bem_coulomb_fmm_periodic_nonzero_upper_vacuum module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum->module~bem_types module~bem_electrostatic_snapshot->module~bem_types module~bem_electrostatic_snapshot->module~bem_coulomb_fmm_periodic_nonzero_reference module~bem_electrostatic_snapshot->module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum module~bem_field_solver bem_field_solver module~bem_electrostatic_snapshot->module~bem_field_solver module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan module~bem_electrostatic_snapshot->module~bem_periodic_zero_mode_plan module~bem_electrostatic_snapshot->module~bem_physics_config_types module~bem_periodic_zero_mode_eval bem_periodic_zero_mode_eval module~bem_electrostatic_snapshot->module~bem_periodic_zero_mode_eval module~bem_field_solver->module~bem_types module~bem_field_solver->module~bem_physics_config_types module~bem_coulomb_fmm_core bem_coulomb_fmm_core module~bem_field_solver->module~bem_coulomb_fmm_core module~bem_importers->module~bem_types module~bem_importers->module~bem_mesh module~bem_irradiation_cell_contract->module~bem_types module~bem_irradiation_cell_contract->module~bem_app_config_types module~bem_matching_plane_summary bem_matching_plane_summary module~bem_matching_plane_summary->module~bem_types module~bem_mesh->module~bem_types module~bem_periodic2_axes bem_periodic2_axes module~bem_mesh->module~bem_periodic2_axes module~bem_mesh_identity bem_mesh_identity module~bem_mesh_identity->module~bem_types module~bem_output_writer bem_output_writer module~bem_output_writer->module~bem_types module~bem_output_writer->module~bem_app_config_types module~bem_output_writer->module~bem_electrostatic_snapshot module~bem_surface_current_model bem_surface_current_model module~bem_output_writer->module~bem_surface_current_model module~bem_output_writer_files bem_output_writer_files module~bem_output_writer_files->module~bem_types module~bem_output_writer_files->module~bem_output_writer module~bem_output_writer_summary bem_output_writer_summary module~bem_output_writer_summary->module~bem_types module~bem_output_writer_summary->module~bem_field_solver module~bem_output_writer_summary->module~bem_irradiation_cell_contract module~bem_output_writer_summary->module~bem_matching_plane_summary module~bem_output_writer_summary->module~bem_mesh_identity module~bem_output_writer_summary->module~bem_output_writer module~bem_output_writer_summary->module~bem_physics_config_types module~bem_output_writer_summary->module~bem_surface_current_model module~bem_panel_surface_sides->module~bem_types module~bem_particle_stepper bem_particle_stepper module~bem_particle_stepper->module~bem_types module~bem_particle_stepper->module~bem_boundary module~bem_particle_stepper->module~bem_collision module~bem_particle_stepper->module~bem_electrostatic_snapshot module~bem_particle_stepper->module~bem_irradiation_cell_contract module~bem_particles bem_particles module~bem_particles->module~bem_types module~bem_periodic2_axes->module~bem_types module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_periodic_checkpoint->module~bem_types module~bem_periodic_checkpoint->module~bem_app_config_types module~bem_periodic_checkpoint->module~bem_output_writer module~bem_restart bem_restart module~bem_periodic_checkpoint->module~bem_restart module~bem_periodic_zero_mode_plan->module~bem_types module~bem_photoelectron_injection bem_photoelectron_injection module~bem_photoelectron_injection->module~bem_types module~bem_photoelectron_injection->module~bem_boundary module~bem_photoelectron_injection->module~bem_collision module~bem_physics_config_types->module~bem_types module~bem_restart->module~bem_types module~bem_restart->module~bem_app_config_types module~bem_simulator bem_simulator module~bem_simulator->module~bem_types module~bem_simulator->module~bem_collision module~bem_simulator->module~bem_config_helpers module~bem_simulator->module~bem_electrostatic_snapshot module~bem_simulator->module~bem_irradiation_cell_contract module~bem_simulator->module~bem_mesh_identity module~bem_simulator->module~bem_output_writer module~bem_simulator->module~bem_particle_stepper module~bem_simulator->module~bem_physics_config_types module~bem_surface_models bem_surface_models module~bem_simulator->module~bem_surface_models module~bem_app_config bem_app_config module~bem_simulator->module~bem_app_config module~bem_app_config_runtime bem_app_config_runtime module~bem_simulator->module~bem_app_config_runtime module~bem_run_outputs bem_run_outputs module~bem_simulator->module~bem_run_outputs module~bem_simulator->module~bem_surface_current_model module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_types module~bem_simulator_loop->module~bem_output_writer module~bem_simulator_loop->module~bem_periodic_checkpoint module~bem_simulator_loop->module~bem_periodic_zero_mode_plan module~bem_simulator_loop->module~bem_simulator module~bem_zhao_outflow_refresh bem_zhao_outflow_refresh module~bem_simulator_loop->module~bem_zhao_outflow_refresh module~bem_simulator_loop->module~bem_app_config_runtime module~bem_simulator_loop->module~bem_run_outputs module~bem_surface_models->module~bem_types module~bem_surface_models->module~bem_electrostatic_snapshot module~bem_templates->module~bem_types module~bem_templates->module~bem_mesh module~bem_zhao_outflow_refresh->module~bem_types module~bem_zhao_outflow_refresh->module~bem_irradiation_cell_contract module~bem_zhao_outflow_refresh->module~bem_app_config module~bem_zhao_outflow_refresh->module~bem_surface_current_model program~main main program~main->module~bem_types program~main->module~bem_electrostatic_snapshot program~main->module~bem_mesh program~main->module~bem_output_writer program~main->module~bem_periodic_checkpoint program~main->module~bem_physics_config_types program~main->module~bem_restart program~main->module~bem_simulator program~main->module~bem_app_config program~main->module~bem_run_outputs module~bem_app_config->module~bem_app_config_parser module~bem_app_config->module~bem_app_config_types module~bem_app_config->module~bem_physics_config_types module~bem_app_config->module~bem_app_config_runtime module~bem_app_config_authoring->module~bem_app_config_types module~bem_app_config_authoring_types bem_app_config_authoring_types module~bem_app_config_authoring->module~bem_app_config_authoring_types module~bem_app_config_authoring_types->module~bem_app_config_types module~bem_app_config_parser_finalize bem_app_config_parser_finalize module~bem_app_config_parser_finalize->module~bem_app_config_parser module~bem_app_config_parser_preflight_particles bem_app_config_parser_preflight_particles module~bem_app_config_parser_preflight_particles->module~bem_app_config_parser module~bem_app_config_parser_preflight_particles->module~bem_app_config_types module~bem_app_config_parser_preflight_particles->module~bem_config_helpers module~bem_app_config_parser_preflight_sim bem_app_config_parser_preflight_sim module~bem_app_config_parser_preflight_sim->module~bem_app_config_parser module~bem_app_config_parser_preflight_surface bem_app_config_parser_preflight_surface module~bem_app_config_parser_preflight_surface->module~bem_app_config_parser module~bem_app_config_parser_preflight_surface->module~bem_app_config_types module~bem_app_config_parser_preflight_surface->module~bem_config_helpers module~bem_app_config_parser_read_mesh bem_app_config_parser_read_mesh module~bem_app_config_parser_read_mesh->module~bem_app_config_parser module~bem_app_config_parser_read_particles bem_app_config_parser_read_particles module~bem_app_config_parser_read_particles->module~bem_app_config_parser module~bem_app_config_parser_read_sim bem_app_config_parser_read_sim module~bem_app_config_parser_read_sim->module~bem_app_config_parser module~bem_app_config_parser_read_surface bem_app_config_parser_read_surface module~bem_app_config_parser_read_surface->module~bem_app_config_parser module~bem_app_config_parser_validate bem_app_config_parser_validate module~bem_app_config_parser_validate->module~bem_app_config_parser module~bem_app_config_parser_validate->module~bem_config_helpers 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_batch->module~bem_particles 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_particle_runtime_slots bem_app_config_particle_runtime_slots module~bem_app_config_particle_runtime_slots->module~bem_app_config_particle_runtime module~bem_app_config_particle_runtime_slots->module~bem_injection module~bem_app_config_runtime->module~bem_app_config_mesh_runtime module~bem_app_config_runtime->module~bem_app_config_particle_runtime module~bem_app_config_runtime->module~bem_app_config_potential_runtime module~bem_config_layout->module~bem_config_toml module~bem_coulomb_fmm_plan_ops bem_coulomb_fmm_plan_ops module~bem_coulomb_fmm_plan_ops->module~bem_periodic_zero_mode_plan module~bem_coulomb_fmm_types bem_coulomb_fmm_types module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_basis bem_coulomb_fmm_basis module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_basis module~bem_coulomb_fmm_periodic bem_coulomb_fmm_periodic module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_ewald bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_periodic_root_ops bem_coulomb_fmm_periodic_root_ops module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic_root_ops module~bem_coulomb_fmm_tree_utils bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_state_ops bem_coulomb_fmm_state_ops module~bem_coulomb_fmm_state_ops->module~bem_periodic_zero_mode_plan module~bem_coulomb_fmm_state_ops->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_state_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_types->module~bem_periodic_zero_mode_plan module~bem_electrostatic_snapshot_eval bem_electrostatic_snapshot_eval module~bem_electrostatic_snapshot_eval->module~bem_coulomb_fmm_periodic_nonzero_upper_vacuum module~bem_electrostatic_snapshot_eval->module~bem_electrostatic_snapshot module~bem_electrostatic_snapshot_upper_fourier bem_electrostatic_snapshot_upper_fourier module~bem_electrostatic_snapshot_upper_fourier->module~bem_electrostatic_snapshot module~bem_field_solver_config bem_field_solver_config module~bem_field_solver_config->module~bem_field_solver module~bem_field_solver_config->module~bem_periodic2_axes module~bem_field_solver_config->module~bem_physics_config_types module~bem_field_solver_config->module~bem_coulomb_fmm_core module~bem_field_solver_eval bem_field_solver_eval module~bem_field_solver_eval->module~bem_field_solver module~bem_field_solver_eval->module~bem_coulomb_fmm_core module~bem_field_solver_fmm bem_field_solver_fmm module~bem_field_solver_fmm->module~bem_field_solver module~bem_field_solver_fmm->module~bem_coulomb_fmm_core module~bem_field_solver_tree bem_field_solver_tree module~bem_field_solver_tree->module~bem_field_solver module~bem_injection->module~bem_photoelectron_injection module~bem_output_writer_history bem_output_writer_history module~bem_output_writer_history->module~bem_output_writer module~bem_periodic_zero_mode_c bem_periodic_zero_mode_c module~bem_periodic_zero_mode_c->module~bem_periodic_zero_mode_plan module~bem_periodic_zero_mode_c->module~bem_periodic_zero_mode_eval module~bem_periodic_zero_mode_eval->module~bem_periodic_zero_mode_plan module~bem_restart_contract bem_restart_contract module~bem_restart_contract->module~bem_mesh_identity module~bem_restart_contract->module~bem_physics_config_types module~bem_restart_contract->module~bem_restart module~bem_restart_injection bem_restart_injection module~bem_restart_injection->module~bem_restart module~bem_restart_records bem_restart_records module~bem_restart_records->module~bem_matching_plane_summary module~bem_restart_records->module~bem_restart module~bem_run_outputs->module~bem_app_config_types module~bem_run_outputs->module~bem_output_writer module~bem_run_outputs->module~bem_periodic_checkpoint module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_simulator module~bem_simulator_io bem_simulator_io module~bem_simulator_io->module~bem_output_writer module~bem_simulator_io->module~bem_simulator module~bem_simulator_io->module~bem_app_config_runtime module~bem_simulator_particles bem_simulator_particles module~bem_simulator_particles->module~bem_config_helpers module~bem_simulator_particles->module~bem_particle_stepper module~bem_simulator_particles->module~bem_particles module~bem_simulator_particles->module~bem_photoelectron_injection module~bem_simulator_particles->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator module~bem_surface_current_model->module~bem_app_config_types module~bem_surface_current_model->module~bem_config_helpers module~bem_surface_current_model->module~bem_irradiation_cell_contract module~bem_surface_models_conductor bem_surface_models_conductor module~bem_surface_models_conductor->module~bem_surface_models module~bem_app_config_authoring_geometry bem_app_config_authoring_geometry module~bem_app_config_authoring_geometry->module~bem_app_config_authoring module~bem_app_config_authoring_sources bem_app_config_authoring_sources module~bem_app_config_authoring_sources->module~bem_app_config_authoring module~bem_coulomb_fmm_basis->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_core->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_core_build bem_coulomb_fmm_core_build module~bem_coulomb_fmm_core_build->module~bem_coulomb_fmm_plan_ops module~bem_coulomb_fmm_core_build->module~bem_coulomb_fmm_core module~bem_coulomb_fmm_core_state bem_coulomb_fmm_core_state module~bem_coulomb_fmm_core_state->module~bem_coulomb_fmm_state_ops module~bem_coulomb_fmm_core_state->module~bem_coulomb_fmm_core module~bem_coulomb_fmm_eval_ops bem_coulomb_fmm_eval_ops module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_eval_ops->module~bem_periodic_zero_mode_eval module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_basis module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_periodic->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_periodic_cell_cache bem_coulomb_fmm_periodic_cell_cache module~bem_coulomb_fmm_periodic_cell_cache->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_periodic_ewald->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_periodic_ewald->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_basis module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_periodic_cell_cache module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_tree_utils->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_tree_utils->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_core_eval bem_coulomb_fmm_core_eval module~bem_coulomb_fmm_core_eval->module~bem_coulomb_fmm_core module~bem_coulomb_fmm_core_eval->module~bem_coulomb_fmm_eval_ops module~bem_field_kernel_c bem_field_kernel_c module~bem_field_kernel_c->module~bem_coulomb_fmm_core

Variables

Type Visibility Attributes Name Initial
integer(kind=i32), public, parameter :: bc_open = 0_i32
integer(kind=i32), public, parameter :: bc_reflect = 1_i32
integer(kind=i32), public, parameter :: bc_periodic = 2_i32
integer(kind=i32), public, parameter :: bc_redistributed_reflect = 3_i32
integer(kind=i32), public, parameter :: surface_model_insulator = 1_i32
integer(kind=i32), public, parameter :: surface_model_conductor = 2_i32
integer(kind=i32), public, parameter :: surface_model_dielectric = 3_i32

Derived Types

type, public ::  particle_domain_config

粒子の追跡・衝突・境界 event が使う解決済みの領域と乱数 seed。 入力の has_*、外部場の角度指定、solver の選択や batch 制御は含めない。

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: rng_seed = 12345_i32
logical, public :: use_box = .false.
real(kind=dp), public :: box_min(3) = [-1.0d0, -1.0d0, -1.0d0]
real(kind=dp), public :: box_max(3) = [1.0d0, 1.0d0, 1.0d0]
integer(kind=i32), public :: bc_low(3) = [bc_open, bc_open, bc_open]
integer(kind=i32), public :: bc_high(3) = [bc_open, bc_open, bc_open]
character(len=16), public :: field_bc_mode = 'free'

type, public, extends(particle_domain_config) ::  photo_raycast_config

photo ray に必要な領域、解決済み batch 幅、反射回数上限。

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: rng_seed = 12345_i32
logical, public :: use_box = .false.
real(kind=dp), public :: box_min(3) = [-1.0d0, -1.0d0, -1.0d0]
real(kind=dp), public :: box_max(3) = [1.0d0, 1.0d0, 1.0d0]
integer(kind=i32), public :: bc_low(3) = [bc_open, bc_open, bc_open]
integer(kind=i32), public :: bc_high(3) = [bc_open, bc_open, bc_open]
character(len=16), public :: field_bc_mode = 'free'
real(kind=dp), public :: batch_duration = 0.0d0
integer(kind=i32), public :: raycast_max_bounce = 16_i32

type, public, extends(photo_raycast_config) ::  sim_config

入力と run 制御の設定。physics へは必要な親 component だけを渡す。

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: rng_seed = 12345_i32
logical, public :: use_box = .false.
real(kind=dp), public :: box_min(3) = [-1.0d0, -1.0d0, -1.0d0]
real(kind=dp), public :: box_max(3) = [1.0d0, 1.0d0, 1.0d0]
integer(kind=i32), public :: bc_low(3) = [bc_open, bc_open, bc_open]
integer(kind=i32), public :: bc_high(3) = [bc_open, bc_open, bc_open]
character(len=16), public :: field_bc_mode = 'free'
real(kind=dp), public :: batch_duration = 0.0d0
integer(kind=i32), public :: raycast_max_bounce = 16_i32
real(kind=dp), public :: dt = 1.0d-12
integer(kind=i32), public :: batch_count = 1_i32
logical, public :: has_batch_duration = .false.
real(kind=dp), public :: batch_duration_step = 0.0d0
logical, public :: has_batch_duration_step = .false.
integer(kind=i32), public :: max_step = 100
real(kind=dp), public :: substep_field_change_max = 0.0d0

粒子ごとの適応サブステップ。step 候補の中点電場が前回受理した中点電場からこの割合より大きく変わり、 その差が step の仕事に換算して 1e-4 eV を超えるときは step を半分にして取り直す。0 で無効。

integer(kind=i32), public :: substep_max_halvings = 6_i32

1 つの dt を半分にする回数の上限(最小 sub-step は dt/2^n)。

logical, public :: step_growth = .false.

場の変化が小さい領域で step を dt_s の 2^n 倍まで伸ばす(opt-in)。有効時に substep_field_change_max が 0 なら 0.05 を使う。

integer(kind=i32), public :: step_growth_max = 5_i32
real(kind=dp), public :: step_growth_energy_fraction = 1.0d-2

伸長時の仕事の床値を運動エネルギーのこの割合にする(1e-4 eV との大きい方)。

real(kind=dp), public :: tol_rel = 1.0d-4
real(kind=dp), public :: q_floor = 1.0d-30
character(len=16), public :: field_solver = 'auto'
character(len=16), public :: field_normalization = 'si'
real(kind=dp), public :: field_length_scale = 1.0d0
integer(kind=i32), public :: field_periodic_image_layers = 1_i32
character(len=16), public :: field_periodic_far_correction = 'none'
real(kind=dp), public :: field_periodic_ewald_alpha = 0.0d0
integer(kind=i32), public :: field_periodic_ewald_layers = 4_i32
character(len=256), public :: field_periodic_cache_dir = ''
real(kind=dp), public :: field_periodic_generation_tolerance = 1.0d-8
real(kind=dp), public :: tree_theta = 0.5d0
logical, public :: has_tree_theta = .false.
integer(kind=i32), public :: tree_leaf_max = 16_i32
character(len=8), public :: near_field_precision = 'double'

'double' (default, bitwise-reproducible) or 'single' for the FMM near-field panel sums.

logical, public :: has_tree_leaf_max = .false.
integer(kind=i32), public :: tree_min_nelem = 256_i32
real(kind=dp), public :: e0(3) = 0.0d0
logical, public :: has_e0_vector = .false.
real(kind=dp), public :: e0_abs = 0.0d0
logical, public :: has_e0_abs = .false.
real(kind=dp), public :: e0_phi_xy_deg = 0.0d0
logical, public :: has_e0_phi_xy_deg = .false.
real(kind=dp), public :: e0_phi_z_deg = 0.0d0
logical, public :: has_e0_phi_z_deg = .false.
real(kind=dp), public :: b0(3) = 0.0d0
character(len=32), public :: reservoir_potential_model = 'none'
real(kind=dp), public :: phi_infty = 0.0d0
character(len=8), public :: particle_distribution = 'static'

バッチ粒子の rank 配分。static は rank ごとに固定分割、shared は全 rank 共有の slot pool を chunk 単位で取り合う。

integer(kind=i32), public :: particle_pool_chunk = 64_i32

shared で 1 回の claim が取る slot 数。

character(len=32), public :: multiple_box_events_policy = 'abort'
character(len=32), public :: multiple_box_events_retry_backend = 'none'
integer(kind=i32), public :: multiple_box_events_soft_discard_count_grace = 1000_i32
real(kind=dp), public :: multiple_box_events_soft_discard_fraction_limit = 1.0d-6
real(kind=dp), public :: multiple_box_events_soft_discard_abs_charge_limit = 1.0d-12
integer(kind=i32), public :: injection_face_phi_grid_n = 3_i32

type, public ::  adaptive_nonzero_mode_stats

adaptive batch(非零 mode の電位変化で batch 幅を縮める)の状態。summary の adaptive_nonzero_mode_* キー。

Components

Type Visibility Attributes Name Initial
integer(kind=i64), public :: rejected_trials = 0_i64
real(kind=dp), public :: last_batch_duration = 0.0_dp
real(kind=dp), public :: last_potential_step = 0.0_dp
integer(kind=i32), public :: omp_threads = 0_i32

type, public ::  matching_plane_stats

外部シースの receipt。summary の matching_plane_* キー(top_field_v_m は surface_current_top_field_v_m)。

Components

Type Visibility Attributes Name Initial
logical, public :: state_valid = .false.
real(kind=dp), public :: displacement_c_m2 = 0.0_dp
real(kind=dp), public :: phi_v = 0.0_dp
real(kind=dp), public :: top_field_v_m = 0.0_dp
real(kind=dp), public :: top_cell_mean_v_m = 0.0_dp
real(kind=dp), public :: response(6) = 0.0_dp
real(kind=dp), public :: feedback(4) = 0.0_dp
real(kind=dp), public :: photoelectron_return_flux_m2_s = 0.0_dp
real(kind=dp), public :: photoelectron_escape_flux_m2_s = 0.0_dp
real(kind=dp), public :: photoelectron_spectrum_m2_s(outflow_spectrum_bins) = 0.0_dp

外部根の光電子源に使った H 外向きスペクトル [1/(m2 s)]、bin 別。全て 0 は表面放出の半 Maxwell 源。

integer(kind=i32), public :: iterations = 0_i32
real(kind=dp), public :: residual = 0.0_dp
real(kind=dp), public :: secondary_share = 0.0_dp
real(kind=dp), public :: secondary_budget_residual_a_m2 = 0.0_dp

type, public ::  sim_stats

処理済み粒子数、吸着/脱出数、バッチ数、最終相対変化量を集計する統計型。

Components

Type Visibility Attributes Name Initial
integer(kind=i64), public :: processed_particles = 0_i64
integer(kind=i64), public :: absorbed = 0_i64
integer(kind=i64), public :: escaped = 0_i64
integer(kind=i64), public :: escaped_boundary = 0_i64
integer(kind=i64), public :: survived_max_step = 0_i64
integer(kind=i64), public :: multiple_box_events_retry_attempted = 0_i64
integer(kind=i64), public :: multiple_box_events_retry_resolved = 0_i64
integer(kind=i64), public :: multiple_box_events_soft_discarded = 0_i64
real(kind=dp), public :: multiple_box_events_soft_discarded_abs_charge = 0.0_dp
integer(kind=i64), public :: adaptive_substep_halved_steps = 0_i64

適応サブステップ: 半分にした dt step の数、その中で受理した sub-step の総数、半分化の上限に達した step の数。

integer(kind=i64), public :: adaptive_substeps = 0_i64
integer(kind=i64), public :: adaptive_substep_depth_limited_steps = 0_i64
integer(kind=i64), public :: adaptive_grown_steps = 0_i64

step 伸長で dt_s より長く進めた push の数。

integer(kind=i32), public :: batches = 0
real(kind=dp), public :: last_rel_change = -1.0d0
real(kind=dp), public :: simulated_time = 0.0_dp
type(adaptive_nonzero_mode_stats), public :: adaptive_nonzero_mode

非零 mode の電位変化で batch 幅を縮める adaptive batch の状態。

integer(kind=i64), public :: particle_pool_claims = 0_i64

shared particle pool の claim 回数と、claim の critical 区間で費やした秒数(全 rank 合計)。

real(kind=dp), public :: particle_pool_claim_seconds = 0.0_dp
type(matching_plane_stats), public :: matching_plane

外部シース(Zhao 根と z-high の matching-plane)の receipt。summary と checkpoint に出る。

integer(kind=i64), public :: secondary_emission_hits = 0_i64
integer(kind=i64), public :: secondary_emission_count = 0_i64
integer(kind=i64), public :: secondary_generation_capped_count = 0_i64
real(kind=dp), public :: secondary_emitted_charge_c = 0.0_dp
real(kind=dp), public :: secondary_yield_sum = 0.0_dp

type, public ::  injection_state

種ごとのマクロ粒子端数を保持し、再開時にも注入期待値を保つ。

Components

Type Visibility Attributes Name Initial
real(kind=dp), public, allocatable :: macro_residual(:)
real(kind=dp), public, allocatable :: boundary_macro_residual(:,:)

type, public ::  mesh_type

三角形頂点と前計算幾何量、要素電荷を保持する境界要素メッシュ型。

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: nelem = 0
real(kind=dp), public, allocatable :: v0(:,:)
real(kind=dp), public, allocatable :: v1(:,:)
real(kind=dp), public, allocatable :: v2(:,:)
real(kind=dp), public, allocatable :: centers(:,:)
real(kind=dp), public, allocatable :: center_x(:)
real(kind=dp), public, allocatable :: center_y(:)
real(kind=dp), public, allocatable :: center_z(:)
real(kind=dp), public, allocatable :: normals(:,:)
real(kind=dp), public, allocatable :: bb_min(:,:)
real(kind=dp), public, allocatable :: bb_max(:,:)
real(kind=dp), public, allocatable :: h_elem(:)
real(kind=dp), public, allocatable :: panel_area(:)
real(kind=dp), public, allocatable :: panel_moment1(:,:)
real(kind=dp), public, allocatable :: panel_moment2(:,:,:)
real(kind=dp), public, allocatable :: panel_edge_length(:,:)
real(kind=dp), public, allocatable :: panel_edge_outward(:,:,:)
real(kind=dp), public, allocatable :: panel_quad_position(:,:,:)
real(kind=dp), public, allocatable :: panel_quad_weight(:,:)
real(kind=dp), public, allocatable :: q_elem(:)
integer(kind=i32), public, allocatable :: elem_mesh_id(:)
integer(kind=i32), public, allocatable :: elem_surface_model(:)
real(kind=dp), public, allocatable :: elem_epsilon_r(:)
integer(kind=i32), public, allocatable :: elem_vacuum_sign(:)
real(kind=dp), public, allocatable :: vacuum_normals(:,:)
real(kind=dp), public :: grid_bb_min(3) = 0.0d0
real(kind=dp), public :: grid_bb_max(3) = 0.0d0
integer(kind=i32), public :: grid_ncell(3) = 1_i32
real(kind=dp), public :: grid_inv_cell(3) = 1.0d0
integer(kind=i32), public, allocatable :: grid_cell_start(:)
integer(kind=i32), public, allocatable :: grid_cell_elem(:)
logical, public :: use_collision_grid = .false.
logical, public :: periodic2_collision_ready = .false.
integer(kind=i32), public :: periodic2_axes(2) = 0_i32

prepare_periodic2_collision_mesh が解決した周期軸と周期長。ray query のたびに設定を解き直さない。

real(kind=dp), public :: periodic2_len(2) = 0.0d0

type, public ::  particles_soa

粒子の位置・速度・物性値・生存フラグをSoA形式で保持する型。 配列長は容量で、有効な粒子は先頭 n 個。利用側は 1:n だけを読む。

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: n = 0
real(kind=dp), public, allocatable :: x(:,:)
real(kind=dp), public, allocatable :: v(:,:)
real(kind=dp), public, allocatable :: q(:)
real(kind=dp), public, allocatable :: m(:)
real(kind=dp), public, allocatable :: w(:)
integer(kind=i32), public, allocatable :: species_id(:)
integer(kind=i32), public, allocatable :: source_element(:)

photo_raycast の放出元要素。表面起源でない粒子は -1。

logical, public, allocatable :: alive(:)

type, public ::  hit_info

衝突有無、命中要素番号、線分パラメータ、交点座標を返す衝突結果型。

Components

Type Visibility Attributes Name Initial
logical, public :: has_hit = .false.
integer(kind=i32), public :: elem_idx = -1
real(kind=dp), public :: t = 0.0d0
real(kind=dp), public :: pos(3) = 0.0d0
integer(kind=i32), public :: image_shift(2) = 0_i32
real(kind=dp), public :: pos_wrapped(3) = 0.0d0