subroutine add_periodic2_kneq0_potential_correction_single_source(plan, q, src, target, phi)
type(fmm_plan_type), intent(in) :: plan
real(dp), intent(in) :: q
real(dp), intent(in) :: src(3), target(3)
real(dp), intent(inout) :: phi
if (.not. plan%periodic_ewald%ready) return
if (abs(q) <= tiny(1.0d0)) return
call add_exact_periodic2_real_space_potential_correction(plan, q, src, target, phi)
call add_exact_periodic2_reciprocal_space_potential_correction(plan, q, src, target, phi)
call add_exact_periodic2_k0_potential_correction(plan, q, src, target, phi)
call subtract_periodic2_physical_k0_potential(plan, q, src, target, phi)
end subroutine add_periodic2_kneq0_potential_correction_single_source