bem_periodic_zero_mode_plan Module


Uses

  • module~~bem_periodic_zero_mode_plan~~UsesGraph module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan ieee_arithmetic ieee_arithmetic module~bem_periodic_zero_mode_plan->ieee_arithmetic module~bem_constants bem_constants module~bem_periodic_zero_mode_plan->module~bem_constants module~bem_kinds bem_kinds module~bem_periodic_zero_mode_plan->module~bem_kinds module~bem_sorting bem_sorting module~bem_periodic_zero_mode_plan->module~bem_sorting module~bem_types bem_types module~bem_periodic_zero_mode_plan->module~bem_types module~bem_constants->module~bem_kinds iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_sorting->module~bem_kinds module~bem_types->module~bem_kinds module~bem_outflow_spectrum bem_outflow_spectrum module~bem_types->module~bem_outflow_spectrum module~bem_outflow_spectrum->module~bem_kinds sheath_model sheath_model module~bem_outflow_spectrum->sheath_model

Used by

  • module~~bem_periodic_zero_mode_plan~~UsedByGraph module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan 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 bem_electrostatic_snapshot module~bem_electrostatic_snapshot->module~bem_periodic_zero_mode_plan 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 bem_field_solver module~bem_electrostatic_snapshot->module~bem_field_solver 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_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_periodic_zero_mode_plan module~bem_output_writer bem_output_writer module~bem_simulator_loop->module~bem_output_writer module~bem_simulator bem_simulator module~bem_simulator_loop->module~bem_simulator module~bem_app_config_runtime bem_app_config_runtime module~bem_simulator_loop->module~bem_app_config_runtime module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_simulator_loop->module~bem_periodic_checkpoint module~bem_run_outputs bem_run_outputs module~bem_simulator_loop->module~bem_run_outputs module~bem_zhao_outflow_refresh bem_zhao_outflow_refresh module~bem_simulator_loop->module~bem_zhao_outflow_refresh module~bem_app_config_particle_runtime bem_app_config_particle_runtime module~bem_app_config_particle_runtime->module~bem_electrostatic_snapshot 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_potential_runtime->module~bem_electrostatic_snapshot module~bem_coulomb_fmm_basis->module~bem_coulomb_fmm_types module~bem_coulomb_fmm_core bem_coulomb_fmm_core 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_electrostatic_snapshot_eval bem_electrostatic_snapshot_eval 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_output_writer->module~bem_electrostatic_snapshot module~bem_particle_stepper bem_particle_stepper module~bem_particle_stepper->module~bem_electrostatic_snapshot module~bem_simulator->module~bem_electrostatic_snapshot module~bem_simulator->module~bem_output_writer module~bem_simulator->module~bem_particle_stepper module~bem_surface_models bem_surface_models module~bem_simulator->module~bem_surface_models module~bem_simulator->module~bem_app_config_runtime module~bem_simulator->module~bem_run_outputs module~bem_app_config bem_app_config module~bem_simulator->module~bem_app_config module~bem_surface_models->module~bem_electrostatic_snapshot program~main main program~main->module~bem_electrostatic_snapshot program~main->module~bem_output_writer program~main->module~bem_simulator program~main->module~bem_periodic_checkpoint program~main->module~bem_run_outputs program~main->module~bem_app_config 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_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_runtime->module~bem_app_config_particle_runtime module~bem_app_config_runtime->module~bem_app_config_potential_runtime 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 module~bem_field_solver->module~bem_coulomb_fmm_core module~bem_field_solver_config bem_field_solver_config module~bem_field_solver_config->module~bem_coulomb_fmm_core module~bem_field_solver_config->module~bem_field_solver module~bem_field_solver_eval bem_field_solver_eval module~bem_field_solver_eval->module~bem_coulomb_fmm_core module~bem_field_solver_eval->module~bem_field_solver module~bem_field_solver_fmm bem_field_solver_fmm module~bem_field_solver_fmm->module~bem_coulomb_fmm_core module~bem_field_solver_fmm->module~bem_field_solver 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_output_writer_summary bem_output_writer_summary module~bem_output_writer_summary->module~bem_output_writer module~bem_output_writer_summary->module~bem_field_solver module~bem_periodic_checkpoint->module~bem_output_writer 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_particle_stepper module~bem_simulator_particles->module~bem_simulator module~bem_simulator_stats bem_simulator_stats module~bem_simulator_stats->module~bem_simulator module~bem_surface_models_conductor bem_surface_models_conductor module~bem_surface_models_conductor->module~bem_surface_models module~bem_app_config->module~bem_app_config_runtime module~bem_field_solver_tree bem_field_solver_tree module~bem_field_solver_tree->module~bem_field_solver module~bem_zhao_outflow_refresh->module~bem_app_config

Variables

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

Derived Types

type, public ::  periodic_zero_mode_plan_type

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: nelem = 0_i32
integer(kind=i32), public :: nbreak = 0_i32
real(kind=dp), public :: area_xy = 0.0_dp
real(kind=dp), public :: height_tolerance = 0.0_dp

Geometric part of the height-coincidence tolerance (zero_mode_heights_coincide).

real(kind=dp), public, allocatable :: break_z(:)
type(panel_height_projection_type), public, allocatable :: panel(:)

type, public ::  periodic_zero_mode_state_type

Components

Type Visibility Attributes Name Initial
real(kind=dp), public :: e_bottom = 0.0_dp
real(kind=dp), public :: z_gauge = 0.0_dp
real(kind=dp), public :: phi_gauge = 0.0_dp
real(kind=dp), public :: total_charge = 0.0_dp
real(kind=dp), public :: gauge_primitive = 0.0_dp

Charge primitive at z_gauge; every evaluation subtracts it, so refresh computes it once.

real(kind=dp), public, allocatable :: cumulative_charge_coeff(:,:)

区間 k の累積電荷多項式の係数。k>=2 は左端 break_z(k-1)、k=1 は break_z(1) を原点とする局所座標 t=z-原点 の多項式で、絶対 z の冪の相殺を避ける(zero_mode_interval_origin)。

real(kind=dp), public, allocatable :: primitive_at_break(:)
real(kind=dp), public, allocatable :: sheet_charge(:)

Functions

public pure function symmetric_vacuum_bottom_field(plan, charge) result(field)

Arguments

Type IntentOptional Attributes Name
type(periodic_zero_mode_plan_type), intent(in) :: plan
real(kind=dp), intent(in) :: charge(:)

Return Value real(kind=dp)

public pure function zero_mode_charge_primitive(plan, state, z, interval) result(primitive)

Arguments

Type IntentOptional Attributes Name
type(periodic_zero_mode_plan_type), intent(in) :: plan
type(periodic_zero_mode_state_type), intent(in) :: state
real(kind=dp), intent(in) :: z
integer(kind=i32), intent(in) :: interval

Return Value real(kind=dp)

public pure function zero_mode_heights_coincide(a, b, geometric_tolerance) result(coincide)

Two heights are one breakpoint when they differ by at most the plan's geometric tolerance or by the few ULPs that binary64 cannot resolve at their magnitude. Only the second term sees the absolute coordinate, so a representable tilt (tens of ULPs) far from the origin stays inclined.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: a
real(kind=dp), intent(in) :: b
real(kind=dp), intent(in) :: geometric_tolerance

Return Value logical

public pure function zero_mode_interval_origin(break_z, interval) result(origin)

区間 interval の累積電荷多項式の原点。区間 1 は最下 break、それ以外は区間の左端 break。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: break_z(:)
integer(kind=i32), intent(in) :: interval

Return Value real(kind=dp)

public pure function integrate_local_polynomial(coefficient, t_upper) result(integral)

局所座標の多項式を原点から t=0..t_upper まで積分する。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: coefficient(3)
real(kind=dp), intent(in) :: t_upper

Return Value real(kind=dp)


Subroutines

public subroutine build_periodic_zero_mode_plan(mesh, area_xy, plan, status, message)

Arguments

Type IntentOptional Attributes Name
type(mesh_type), intent(in) :: mesh
real(kind=dp), intent(in) :: area_xy
type(periodic_zero_mode_plan_type), intent(out) :: plan
integer(kind=i32), intent(out) :: status
character(len=*), intent(out) :: message

public subroutine build_periodic_zero_mode_height_plan(source_heights, area_xy, plan, status, message)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: source_heights(:,:)
real(kind=dp), intent(in) :: area_xy
type(periodic_zero_mode_plan_type), intent(out) :: plan
integer(kind=i32), intent(out) :: status
character(len=*), intent(out) :: message

public subroutine refresh_periodic_zero_mode_state(plan, charge, e_bottom, z_gauge, phi_gauge, state)

Arguments

Type IntentOptional Attributes Name
type(periodic_zero_mode_plan_type), intent(in) :: plan
real(kind=dp), intent(in) :: charge(:)
real(kind=dp), intent(in) :: e_bottom
real(kind=dp), intent(in) :: z_gauge
real(kind=dp), intent(in) :: phi_gauge
type(periodic_zero_mode_state_type), intent(inout) :: state

Arrays already sized for this plan are reused; every component is overwritten.

public pure subroutine locate_zero_mode_interval(break_z, tolerance, z, interval, breakpoint)

A target on a breakpoint (same coincidence rule as the plan's breakpoint merge) takes the requested sheet trace; any other target lies strictly inside one interval.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: break_z(:)
real(kind=dp), intent(in) :: tolerance
real(kind=dp), intent(in) :: z
integer(kind=i32), intent(out) :: interval
integer(kind=i32), intent(out) :: breakpoint