add_periodic2_exact_ewald_correction_single_source Subroutine

public subroutine add_periodic2_exact_ewald_correction_single_source(plan, q, src, target, e)

1 粒子分の periodic2 Ewald 補正を加算する。

Arguments

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

FMM 計画。

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

電荷量。

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

Called by

proc~~add_periodic2_exact_ewald_correction_single_source~~CalledByGraph proc~add_periodic2_exact_ewald_correction_single_source add_periodic2_exact_ewald_correction_single_source proc~add_periodic2_exact_ewald_correction_all_sources add_periodic2_exact_ewald_correction_all_sources proc~add_periodic2_exact_ewald_correction_all_sources->proc~add_periodic2_exact_ewald_correction_single_source proc~precompute_periodic_root_operator precompute_periodic_root_operator proc~precompute_periodic_root_operator->proc~add_periodic2_exact_ewald_correction_single_source proc~core_build_plan_impl core_build_plan_impl proc~core_build_plan_impl->proc~precompute_periodic_root_operator proc~core_eval_point_impl core_eval_point_impl proc~core_eval_point_impl->proc~add_periodic2_exact_ewald_correction_all_sources proc~core_eval_points_impl core_eval_points_impl proc~core_eval_points_impl->proc~add_periodic2_exact_ewald_correction_all_sources

Source Code

  subroutine add_periodic2_exact_ewald_correction_single_source(plan, q, src, target, e)
    type(fmm_plan_type), intent(in) :: plan
    real(dp), intent(in) :: q
    real(dp), intent(in) :: src(3), target(3)
    real(dp), intent(inout) :: e(3)

    if (.not. plan%periodic_ewald%ready) return
    if (abs(q) <= tiny(1.0d0)) return

    call add_exact_periodic2_real_space_correction(plan, q, src, target, e)
    call add_exact_periodic2_reciprocal_space_correction(plan, q, src, target, e)
    call add_exact_periodic2_k0_correction(plan, q, src, target, e)
  end subroutine add_periodic2_exact_ewald_correction_single_source