bem_boundary Module

シミュレーションボックス境界(流出/反射/面内再配置反射/周期)を適用するモジュール。


Uses

  • module~~bem_boundary~~UsesGraph module~bem_boundary bem_boundary ieee_arithmetic ieee_arithmetic module~bem_boundary->ieee_arithmetic module~bem_kinds bem_kinds module~bem_boundary->module~bem_kinds module~bem_types bem_types module~bem_boundary->module~bem_types iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_types->module~bem_kinds

Used by

  • module~~bem_boundary~~UsedByGraph module~bem_boundary bem_boundary module~bem_particle_stepper bem_particle_stepper module~bem_particle_stepper->module~bem_boundary module~bem_photoelectron_injection bem_photoelectron_injection module~bem_photoelectron_injection->module~bem_boundary module~bem_injection bem_injection module~bem_injection->module~bem_photoelectron_injection module~bem_simulator bem_simulator module~bem_simulator->module~bem_particle_stepper module~bem_app_config_runtime bem_app_config_runtime module~bem_simulator->module~bem_app_config_runtime module~bem_app_config bem_app_config module~bem_simulator->module~bem_app_config module~bem_app_config_particle_runtime bem_app_config_particle_runtime module~bem_app_config_particle_runtime->module~bem_injection 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_simulator module~bem_simulator_io->module~bem_app_config_runtime module~bem_simulator_loop bem_simulator_loop module~bem_simulator_loop->module~bem_simulator module~bem_simulator_loop->module~bem_app_config_runtime module~bem_matching_plane_coupling bem_matching_plane_coupling module~bem_simulator_loop->module~bem_matching_plane_coupling 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_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_runtime->module~bem_app_config_particle_runtime module~bem_app_config->module~bem_app_config_runtime module~bem_matching_plane_coupling->module~bem_app_config program~zhao_atlas_main zhao_atlas_main program~zhao_atlas_main->module~bem_app_config program~zhao_response_main zhao_response_main program~zhao_response_main->module~bem_app_config

Variables

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

Derived Types

type, public ::  boundary_event_type

Components

Type Visibility Attributes Name Initial
logical, public :: has_event = .false.
real(kind=dp), public :: fraction = 0.0_dp
integer(kind=i32), public :: face_mask = 0_i32
integer(kind=i32), public :: face_bc(6) = -1_i32

Subroutines

public subroutine find_first_boundary_event(cfg, x0, x1, event, status)

閉じたbox内の始点から候補終点へ向かう線分について、最初のbox面交差を返す。

Arguments

Type IntentOptional Attributes Name
type(sim_config), intent(in) :: cfg
real(kind=dp), intent(in) :: x0(3)
real(kind=dp), intent(in) :: x1(3)
type(boundary_event_type), intent(out) :: event
integer(kind=i32), intent(out) :: status

public subroutine apply_escape_reflect_periodic_event(cfg, event, x, v, alive, escaped, status, redistribution_uniform)

最初のbox eventへescape/reflect/redistributed-reflect/periodicを軸順序に依存せず適用する。

Arguments

Type IntentOptional Attributes Name
type(sim_config), intent(in) :: cfg
type(boundary_event_type), intent(in) :: event
real(kind=dp), intent(inout) :: x(3)
real(kind=dp), intent(inout) :: v(3)
logical, intent(inout) :: alive
logical, intent(out) :: escaped
integer(kind=i32), intent(out) :: status
real(kind=dp), intent(in), optional :: redistribution_uniform(3)

public subroutine apply_box_boundary(cfg, x, v, alive, escaped_boundary, q_particle, m_particle, phi_boundary, potential_axis, potential_high_side, redistribution_uniform)

1ステップの更新候補位置にボックス境界条件を適用し、生存/流出状態と位置速度を更新する。

Arguments

Type IntentOptional Attributes Name
type(sim_config), intent(in) :: cfg

境界条件とボックス範囲を含むシミュレーション設定。

real(kind=dp), intent(inout) :: x(3)
real(kind=dp), intent(inout) :: v(3)
logical, intent(inout) :: alive

粒子生存フラグ(流出時は .false. へ更新)。

logical, intent(out) :: escaped_boundary

この呼び出しで境界流出が発生したか。

real(kind=dp), intent(in), optional :: q_particle
real(kind=dp), intent(in), optional :: m_particle
real(kind=dp), intent(in), optional :: phi_boundary
integer(kind=i32), intent(in), optional :: potential_axis
logical, intent(in), optional :: potential_high_side
real(kind=dp), intent(in), optional :: redistribution_uniform(3)