9
1
mirror of https://github.com/QuantumPackage/qp2.git synced 2025-04-28 11:14:43 +02:00

few opt in cgtos integrals

This commit is contained in:
AbdAmmar 2024-10-20 11:18:28 +02:00
parent a38bf1bcb2
commit 3589688254
3 changed files with 21 additions and 15 deletions

View File

@ -158,22 +158,25 @@ complex*16 function NAI_pol_mult_cgtos(Ae_center, Be_center, power_A, power_B, a
p_inv = (1.d0, 0.d0) / p p_inv = (1.d0, 0.d0) / p
rho = alpha * beta * p_inv rho = alpha * beta * p_inv
dist = (0.d0, 0.d0) dist = (Ae_center(1) - Be_center(1)) * (Ae_center(1) - Be_center(1)) &
dist_integral = (0.d0, 0.d0) + (Ae_center(2) - Be_center(2)) * (Ae_center(2) - Be_center(2)) &
do i = 1, 3 + (Ae_center(3) - Be_center(3)) * (Ae_center(3) - Be_center(3))
P_center(i) = (alpha * Ae_center(i) + beta * Be_center(i)) * p_inv
dist += (Ae_center(i) - Be_center(i)) * (Ae_center(i) - Be_center(i))
dist_integral += (P_center(i) - C_center(i)) * (P_center(i) - C_center(i))
enddo
const_factor = dist * rho const_factor = dist * rho
const = p * dist_integral if(real(const_factor) > 80.d0) then
if(abs(const_factor) > 80.d0) then
NAI_pol_mult_cgtos = (0.d0, 0.d0) NAI_pol_mult_cgtos = (0.d0, 0.d0)
return return
endif endif
P_center(1) = (alpha * Ae_center(1) + beta * Be_center(1)) * p_inv
P_center(2) = (alpha * Ae_center(2) + beta * Be_center(2)) * p_inv
P_center(3) = (alpha * Ae_center(3) + beta * Be_center(3)) * p_inv
dist_integral = (P_center(1) - C_center(1)) * (P_center(1) - C_center(1)) &
+ (P_center(2) - C_center(2)) * (P_center(2) - C_center(2)) &
+ (P_center(3) - C_center(3)) * (P_center(3) - C_center(3))
const = p * dist_integral
factor = zexp(-const_factor) factor = zexp(-const_factor)
coeff = dtwo_pi * factor * p_inv coeff = dtwo_pi * factor * p_inv

View File

@ -42,6 +42,7 @@ complex*16 function overlap_cgaussian_x(Ae_center, Be_center, alpha, beta, power
overlap_cgaussian_x = overlap_cgaussian_x * fact_p overlap_cgaussian_x = overlap_cgaussian_x * fact_p
return
end end
! --- ! ---

View File

@ -164,6 +164,7 @@ subroutine cgaussian_product(a, xa, b, xb, k, p, xp)
END_DOC END_DOC
implicit none implicit none
complex*16, intent(in) :: a, b, xa(3), xb(3) complex*16, intent(in) :: a, b, xa(3), xb(3)
complex*16, intent(out) :: p, k, xp(3) complex*16, intent(out) :: p, k, xp(3)
@ -196,6 +197,7 @@ subroutine cgaussian_product(a, xa, b, xb, k, p, xp)
xp(2) = (a * xa(2) + b * xb(2)) * p_inv xp(2) = (a * xa(2) + b * xb(2)) * p_inv
xp(3) = (a * xa(3) + b * xb(3)) * p_inv xp(3) = (a * xa(3) + b * xb(3)) * p_inv
return
end end
! --- ! ---
@ -458,7 +460,7 @@ complex*16 function Fc_integral(n, inv_sq_p)
inv_sq_p4 = inv_sq_p2 * inv_sq_p2 inv_sq_p4 = inv_sq_p2 * inv_sq_p2
Fc_integral = 29.53125d0 * sqpi * inv_sq_p * inv_sq_p2 * inv_sq_p4 * inv_sq_p4 Fc_integral = 29.53125d0 * sqpi * inv_sq_p * inv_sq_p2 * inv_sq_p4 * inv_sq_p4
case default case default
Fc_integral = sqpi * 0.5d0**n * inv_sq_p**(n+1) * fact(n) / fact(shiftr(n, 1)) Fc_integral = 2.d0 * sqpi * (0.5d0 * inv_sq_p)**(n+1) * fact(n) / fact(shiftr(n, 1))
end select end select
return return