bem_coulomb_fmm_periodic Module

Coulomb FMM の periodic2 境界処理。


Uses

  • module~~bem_coulomb_fmm_periodic~~UsesGraph module~bem_coulomb_fmm_periodic bem_coulomb_fmm_periodic module~bem_coulomb_fmm_types bem_coulomb_fmm_types module~bem_coulomb_fmm_periodic->module~bem_coulomb_fmm_types module~bem_kinds bem_kinds module~bem_coulomb_fmm_periodic->module~bem_kinds module~bem_coulomb_fmm_types->module~bem_kinds iso_fortran_env iso_fortran_env module~bem_kinds->iso_fortran_env

Used by

  • module~~bem_coulomb_fmm_periodic~~UsedByGraph module~bem_coulomb_fmm_periodic bem_coulomb_fmm_periodic module~bem_coulomb_fmm_eval_ops bem_coulomb_fmm_eval_ops module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_ewald bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_tree_utils bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_eval_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_periodic_ewald->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_root_ops bem_coulomb_fmm_periodic_root_ops module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_periodic_root_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_plan_ops bem_coulomb_fmm_plan_ops module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic_ewald module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_periodic_root_ops module~bem_coulomb_fmm_plan_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_tree_utils->module~bem_coulomb_fmm_periodic module~bem_field_solver_eval bem_field_solver_eval module~bem_field_solver_eval->module~bem_coulomb_fmm_periodic module~bem_field_solver_eval->module~bem_coulomb_fmm_periodic_ewald 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_eval bem_coulomb_fmm_core_eval module~bem_coulomb_fmm_core_eval->module~bem_coulomb_fmm_eval_ops module~bem_coulomb_fmm_state_ops bem_coulomb_fmm_state_ops module~bem_coulomb_fmm_state_ops->module~bem_coulomb_fmm_tree_utils module~bem_coulomb_fmm_core_state bem_coulomb_fmm_core_state module~bem_coulomb_fmm_core_state->module~bem_coulomb_fmm_state_ops

Functions

public function has_valid_target_box(options)

periodic2 の target box が有効かを判定する。

Arguments

Type IntentOptional Attributes Name
type(fmm_options_type), intent(in) :: options

FMM 設定。

Return Value logical

public function use_periodic2_m2l_root_oracle(plan)

periodic2 の far correction に oracle 版を使うか判定する。

Arguments

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

FMM 計画。

Return Value logical

public function use_periodic2_root_operator(plan)

periodic2 の root operator を使うか判定する。

Arguments

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

FMM 計画。

Return Value logical

public function distance_to_source_bbox(p, src_center, src_half)

点と source BBox の距離を返す。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: p(3)
real(kind=dp), intent(in) :: src_center(3)
real(kind=dp), intent(in) :: src_half(3)

Return Value real(kind=dp)

public function distance_to_source_bbox_periodic(plan, p, src_center, src_half)

periodic2 の minimum image を考慮した source BBox 距離を返す。

Arguments

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

FMM 計画。

real(kind=dp), intent(in) :: p(3)
real(kind=dp), intent(in) :: src_center(3)
real(kind=dp), intent(in) :: src_half(3)

Return Value real(kind=dp)


Subroutines

public subroutine build_periodic_shift_values(plan, shift_axis1, shift_axis2, nshift)

periodic2 の画像シフト値を作成する。

Arguments

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

FMM 計画。

real(kind=dp), intent(out) :: shift_axis1(:)
real(kind=dp), intent(out) :: shift_axis2(:)
integer(kind=i32), intent(out) :: nshift

シフト数。

public pure subroutine apply_periodic2_minimum_image(plan, d)

periodic2 の minimum image を差分ベクトルへ適用する。

Arguments

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

FMM 計画。

real(kind=dp), intent(inout) :: d(3)

public subroutine wrap_periodic2_point(plan, p)

periodic2 領域内へ点座標を折り返す。

Arguments

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

FMM 計画。

real(kind=dp), intent(inout) :: p(3)

public subroutine wrap_src_pos_to_primary_cell(plan)

plan 内の全ソース位置を primary cell [target_box_min, target_box_min+L) へ折り返す。

Arguments

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

FMM 計画(plan%src_pos が変更される)。

public subroutine add_point_charge_images_field(q, src, target, soft2, axis1, axis2, shift_axis1, shift_axis2, nshift, e)

画像電荷を足し合わせて点電荷の電場を加算する。

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: q

電荷量。

real(kind=dp), intent(in) :: src(3)

電荷量。

real(kind=dp), intent(in) :: target(3)

電荷量。

real(kind=dp), intent(in) :: soft2

ソフトニング二乗。

integer(kind=i32), intent(in) :: axis1

画像シフト軸 1。

integer(kind=i32), intent(in) :: axis2

画像シフト軸 1。 画像シフト軸 2。

real(kind=dp), intent(in) :: shift_axis1(:)
real(kind=dp), intent(in) :: shift_axis2(:)
integer(kind=i32), intent(in) :: nshift

画像シフト軸 1。 画像シフト軸 2。 シフト数。

real(kind=dp), intent(inout) :: e(3)