bem_charge_ledger Module

batch 間の signed charge stock と移送 flux から電荷収支を集計する。


Uses

  • module~~bem_charge_ledger~~UsesGraph module~bem_charge_ledger bem_charge_ledger ieee_arithmetic ieee_arithmetic module~bem_charge_ledger->ieee_arithmetic module~bem_kinds bem_kinds module~bem_charge_ledger->module~bem_kinds iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env

Used by

  • module~~bem_charge_ledger~~UsedByGraph module~bem_charge_ledger bem_charge_ledger module~bem_matching_plane_coupling bem_matching_plane_coupling module~bem_matching_plane_coupling->module~bem_charge_ledger module~bem_output_writer bem_output_writer module~bem_output_writer->module~bem_charge_ledger module~bem_output_writer_summary bem_output_writer_summary module~bem_output_writer_summary->module~bem_charge_ledger module~bem_output_writer_summary->module~bem_output_writer module~bem_periodic_checkpoint bem_periodic_checkpoint module~bem_periodic_checkpoint->module~bem_charge_ledger module~bem_periodic_checkpoint->module~bem_output_writer module~bem_restart bem_restart module~bem_periodic_checkpoint->module~bem_restart module~bem_restart->module~bem_charge_ledger module~bem_simulator bem_simulator module~bem_simulator->module~bem_charge_ledger module~bem_simulator->module~bem_output_writer module~bem_simulator_charge bem_simulator_charge module~bem_simulator_charge->module~bem_charge_ledger module~bem_simulator_charge->module~bem_simulator module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_charge_ledger module~bem_simulator_loop->module~bem_matching_plane_coupling module~bem_simulator_loop->module~bem_periodic_checkpoint module~bem_simulator_loop->module~bem_simulator program~main main program~main->module~bem_charge_ledger program~main->module~bem_output_writer program~main->module~bem_periodic_checkpoint program~main->module~bem_restart program~main->module~bem_simulator 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_restart_contract bem_restart_contract 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_restart 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_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

Derived Types

type, public ::  charge_ledger_type

Components

Type Visibility Attributes Name Initial
integer(kind=i32), public :: nspecies = 0_i32
integer(kind=i32), public :: batch_count = 0_i32
real(kind=dp), public :: surface_charge_before = 0.0_dp
real(kind=dp), public :: surface_charge_after = 0.0_dp
real(kind=dp), public :: local_flight_charge_before = 0.0_dp
real(kind=dp), public :: local_flight_charge_after = 0.0_dp
real(kind=dp), public :: unresolved_stock_before = 0.0_dp
real(kind=dp), public :: unresolved_stock_after = 0.0_dp
real(kind=dp), public, allocatable :: injected_from_remote(:)
real(kind=dp), public, allocatable :: emitted_from_surface(:)
real(kind=dp), public, allocatable :: absorbed_on_surface(:)
real(kind=dp), public, allocatable :: escaped_to_infinity(:)
real(kind=dp), public, allocatable :: discarded_unresolved(:)
real(kind=dp), public, allocatable :: neutral_return_correction(:)
real(kind=dp), public, allocatable :: neutral_return_weight_scale(:)
real(kind=dp), public, allocatable :: neutral_return_unresolved_fraction(:)
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(:)
integer(kind=i64), public, allocatable :: injected_count(:)
integer(kind=i64), public, allocatable :: emitted_count(:)
integer(kind=i64), public, allocatable :: absorbed_count(:)
integer(kind=i64), public, allocatable :: escaped_count(:)
integer(kind=i64), public, allocatable :: discarded_unresolved_count(:)

Type-Bound Procedures

procedure, public :: init => init_charge_ledger
procedure, public :: reset => reset_charge_ledger
procedure, public :: residual => charge_ledger_residual
procedure, public :: discarded_unresolved_abs
procedure, public :: has_unresolved_discard

Functions

public pure function finite_charge_sum(values, context) result(total)

scale後のNeumaier和により、中間overflowを避けてsigned charge総和を返す。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: values(:)
character(len=*), intent(in) :: context

Return Value real(kind=dp)


Subroutines

public subroutine accumulate_charge_ledger(cumulative, batch)

連続する batch ledger を、初期 stock と最終 stock を保って累積する。

Arguments

Type IntentOptional Attributes Name
type(charge_ledger_type), intent(inout) :: cumulative
type(charge_ledger_type), intent(in) :: batch

public subroutine checked_accumulate_charge(accumulator, increment, context)

有限なcharge incrementをoverflowさせずscalar accumulatorへ加える。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: accumulator
real(kind=dp), intent(in) :: increment
character(len=*), intent(in) :: context