bem_coulomb_fmm_core Module

mesh_type や sim_config に依存しない Coulomb FMM コア API。


Uses

  • module~~bem_coulomb_fmm_core~~UsesGraph module~bem_coulomb_fmm_core bem_coulomb_fmm_core module~bem_coulomb_fmm_types bem_coulomb_fmm_types module~bem_coulomb_fmm_core->module~bem_coulomb_fmm_types module~bem_kinds bem_kinds module~bem_coulomb_fmm_core->module~bem_kinds module~bem_mpi bem_mpi module~bem_coulomb_fmm_core->module~bem_mpi module~bem_coulomb_fmm_types->module~bem_kinds module~bem_coulomb_fmm_types->module~bem_mpi module~bem_panel_geometry bem_panel_geometry module~bem_coulomb_fmm_types->module~bem_panel_geometry module~bem_periodic_shell_mean bem_periodic_shell_mean module~bem_coulomb_fmm_types->module~bem_periodic_shell_mean module~bem_periodic_zero_mode_plan bem_periodic_zero_mode_plan module~bem_coulomb_fmm_types->module~bem_periodic_zero_mode_plan iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env module~bem_mpi->module~bem_kinds module~bem_panel_geometry->module~bem_kinds ieee_arithmetic ieee_arithmetic module~bem_panel_geometry->ieee_arithmetic module~bem_periodic_shell_mean->module~bem_kinds module~bem_periodic_zero_mode_plan->module~bem_kinds module~bem_periodic_zero_mode_plan->ieee_arithmetic module~bem_constants bem_constants module~bem_periodic_zero_mode_plan->module~bem_constants 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 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_coulomb_fmm_core~~UsedByGraph module~bem_coulomb_fmm_core bem_coulomb_fmm_core module~bem_coulomb_fmm_core_build bem_coulomb_fmm_core_build module~bem_coulomb_fmm_core_build->module~bem_coulomb_fmm_core 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_state bem_coulomb_fmm_core_state module~bem_coulomb_fmm_core_state->module~bem_coulomb_fmm_core module~bem_field_kernel_c bem_field_kernel_c module~bem_field_kernel_c->module~bem_coulomb_fmm_core module~bem_field_solver bem_field_solver 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_electrostatic_snapshot bem_electrostatic_snapshot module~bem_electrostatic_snapshot->module~bem_field_solver module~bem_field_solver_tree bem_field_solver_tree module~bem_field_solver_tree->module~bem_field_solver module~bem_output_writer_summary bem_output_writer_summary module~bem_output_writer_summary->module~bem_field_solver module~bem_output_writer bem_output_writer module~bem_output_writer_summary->module~bem_output_writer 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_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 bem_simulator 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_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_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 module~bem_periodic_checkpoint bem_periodic_checkpoint 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_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 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_loop bem_simulator_loop module~bem_simulator_loop->module~bem_output_writer module~bem_simulator_loop->module~bem_simulator module~bem_simulator_loop->module~bem_app_config_runtime module~bem_simulator_loop->module~bem_periodic_checkpoint 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_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_zhao_outflow_refresh->module~bem_app_config

Interfaces

interface

  • public module subroutine build_plan(plan, src_pos, options)

    FMM 計画を構築する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(inout) :: plan

    構築先の計画。

    real(kind=dp), intent(in) :: src_pos(:,:)
    type(fmm_options_type), intent(in) :: options

    FMM 設定。

interface

  • public module subroutine build_panel_plan(plan, v0, v1, v2, options)

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(inout) :: plan
    real(kind=dp), intent(in) :: v0(:,:)
    real(kind=dp), intent(in) :: v1(:,:)
    real(kind=dp), intent(in) :: v2(:,:)
    type(fmm_options_type), intent(in) :: options

interface

  • public module subroutine prepare_panel_sources(plan, v0, v1, v2, options)

    パネルソースの幾何だけを準備する(build_panel_plan の前半)。exact-direct 評価はこれで足りる。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(inout) :: plan
    real(kind=dp), intent(in) :: v0(:,:)
    real(kind=dp), intent(in) :: v1(:,:)
    real(kind=dp), intent(in) :: v2(:,:)
    type(fmm_options_type), intent(in) :: options

interface

  • public module subroutine complete_plan(plan)

    prepare_panel_sources 済みの計画に木・相互作用・演算子を加え、build_panel_plan と同じ計画にする。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(inout) :: plan

interface

  • public module subroutine update_state(plan, state, src_q, mpi)

    ソース電荷から FMM state を更新する。 全 rank が同じ plan と src_q で呼ぶこと。結果は分担しない場合と bit 単位で同じ。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan

    構築済みの FMM 計画。

    type(fmm_state_type), intent(inout) :: state

    更新対象の state。

    real(kind=dp), intent(in) :: src_q(:)
    type(mpi_context), intent(in), optional :: mpi

    与えると M2L を target node のブロックごとに rank で分担し、局所展開を全 rank で揃える。

interface

  • public module subroutine eval_points(plan, state, target_pos, e)

    複数の評価点で電場を計算する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan

    構築済みの FMM 計画。

    type(fmm_state_type), intent(inout) :: state

    評価に使う FMM state。

    real(kind=dp), intent(in) :: target_pos(:,:)
    real(kind=dp), intent(out) :: e(:,:)

interface

  • public module subroutine eval_direct_points(plan, src_q, target_pos, e)

    複数の評価点で全ソースの直接和による電場を計算する(非周期のみ)。 ソース幾何(prepare_panel_sources 以降)と電荷 src_q(nsrc) だけを使う。Coulomb 係数は含まない。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan
    real(kind=dp), intent(in) :: src_q(:)
    real(kind=dp), intent(in) :: target_pos(:,:)
    real(kind=dp), intent(out) :: e(:,:)

interface

  • public module subroutine eval_point(plan, state, r, e)

    1 点で電場を計算する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan

    構築済みの FMM 計画。

    type(fmm_state_type), intent(inout) :: state

    評価に使う FMM state。

    real(kind=dp), intent(in) :: r(3)
    real(kind=dp), intent(out) :: e(3)

interface

  • public module subroutine eval_potential_points(plan, state, target_pos, phi)

    複数の評価点で電位を計算する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan

    構築済みの FMM 計画。

    type(fmm_state_type), intent(inout) :: state

    評価に使う FMM state。

    real(kind=dp), intent(in) :: target_pos(:,:)
    real(kind=dp), intent(out) :: phi(:)

interface

  • public module subroutine eval_direct_potential_points(plan, src_q, target_pos, phi)

    複数の評価点で全ソースの直接和による電位を計算する(非周期のみ)。 ソース幾何(prepare_panel_sources 以降)と電荷 src_q(nsrc) だけを使う。Coulomb 係数は含まない。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan
    real(kind=dp), intent(in) :: src_q(:)
    real(kind=dp), intent(in) :: target_pos(:,:)
    real(kind=dp), intent(out) :: phi(:)

interface

  • public module subroutine eval_potential_point(plan, state, r, phi)

    1 点で電位を計算する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(in) :: plan

    構築済みの FMM 計画。

    type(fmm_state_type), intent(inout) :: state

    評価に使う FMM state。

    real(kind=dp), intent(in) :: r(3)
    real(kind=dp), intent(out) :: phi

    電位 [V](k_coulomb は含まない)。

interface

  • public module subroutine destroy_plan(plan)

    FMM 計画を解放する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_plan_type), intent(inout) :: plan

    解放対象の計画。

interface

  • public module subroutine destroy_state(state)

    FMM state を解放する。

    Arguments

    Type IntentOptional Attributes Name
    type(fmm_state_type), intent(inout) :: state

    解放対象の state。