22 #include "../base/base_uses.f90"
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'ai_eri_debug'
28 INTEGER,
PARAMETER ::
lmax = 5
32 REAL(
dp),
DIMENSION(3) ::
p,
q,
w
56 SUBROUTINE init_os(ya, yb, yc, yd, rA, rB, rC, rD)
57 REAL(
dp) :: ya, yb, yc, yd
58 REAL(
dp),
DIMENSION(3) :: ra, rb, rc, rd
60 REAL(
dp) :: eab, ecd, kab, kcd
85 kab = sqrt(2._dp)*
pi**1.25_dp/
xsi*exp(eab)
88 kcd = sqrt(2._dp)*
pi**1.25_dp/
eta*exp(ecd)
92 END SUBROUTINE init_os
105 RECURSIVE FUNCTION os(an, bn, cn, dn, mi)
RESULT(IABCD)
106 INTEGER,
DIMENSION(3) :: an, bn, cn, dn
107 INTEGER,
OPTIONAL :: mi
110 INTEGER,
DIMENSION(3),
PARAMETER :: i1 = (/1, 0, 0/), i2 = (/0, 1, 0/), &
116 IF (
PRESENT(mi)) m = mi
119 IF (any(an < 0))
RETURN
120 IF (any(bn < 0))
RETURN
121 IF (any(cn < 0))
RETURN
122 IF (any(dn < 0))
RETURN
124 IF (sum(an + bn + cn + dn) == 0)
THEN
130 iabcd = os(an, bn, cn + i1, dn - i1) - (
d(1) -
c(1))*os(an, bn, cn, dn - i1)
131 ELSEIF (dn(2) > 0)
THEN
132 iabcd = os(an, bn, cn + i2, dn - i2) - (
d(2) -
c(2))*os(an, bn, cn, dn - i2)
133 ELSEIF (dn(3) > 0)
THEN
134 iabcd = os(an, bn, cn + i3, dn - i3) - (
d(3) -
c(3))*os(an, bn, cn, dn - i3)
137 iabcd = os(an + i1, bn - i1, cn, dn) - (
b(1) -
a(1))*os(an, bn - i1, cn, dn)
138 ELSEIF (bn(2) > 0)
THEN
139 iabcd = os(an + i2, bn - i2, cn, dn) - (
b(2) -
a(2))*os(an, bn - i2, cn, dn)
140 ELSEIF (bn(3) > 0)
THEN
141 iabcd = os(an + i3, bn - i3, cn, dn) - (
b(3) -
a(3))*os(an, bn - i3, cn, dn)
144 iabcd = ((
q(1) -
c(1)) +
xsi/
eta*(
p(1) -
a(1)))*os(an, bn, cn - i1, dn) + &
145 0.5_dp*an(1)/
eta*os(an - i1, bn, cn - i1, dn) + &
146 0.5_dp*(cn(1) - 1)/
eta*os(an, bn, cn - i1 - i1, dn) - &
147 xsi/
eta*os(an + i1, bn, cn - i1, dn)
148 ELSEIF (cn(2) > 0)
THEN
149 iabcd = ((
q(2) -
c(2)) +
xsi/
eta*(
p(2) -
a(2)))*os(an, bn, cn - i2, dn) + &
150 0.5_dp*an(2)/
eta*os(an - i2, bn, cn - i2, dn) + &
151 0.5_dp*(cn(2) - 1)/
eta*os(an, bn, cn - i2 - i2, dn) - &
152 xsi/
eta*os(an + i2, bn, cn - i2, dn)
153 ELSEIF (cn(3) > 0)
THEN
154 iabcd = ((
q(3) -
c(3)) +
xsi/
eta*(
p(3) -
a(3)))*os(an, bn, cn - i3, dn) + &
155 0.5_dp*an(3)/
eta*os(an - i3, bn, cn - i3, dn) + &
156 0.5_dp*(cn(3) - 1)/
eta*os(an, bn, cn - i3 - i3, dn) - &
157 xsi/
eta*os(an + i3, bn, cn - i3, dn)
160 iabcd = (
p(1) -
a(1))*os(an - i1, bn, cn, dn, m) + &
161 (
w(1) -
p(1))*os(an - i1, bn, cn, dn, m + 1) + &
162 0.5_dp*(an(1) - 1)/
xsi*os(an - i1 - i1, bn, cn, dn, m) - &
163 0.5_dp*(an(1) - 1)/
xsi*
rho/
xsi*os(an - i1 - i1, bn, cn, dn, m + 1)
164 ELSEIF (an(2) > 0)
THEN
165 iabcd = (
p(2) -
a(2))*os(an - i2, bn, cn, dn, m) + &
166 (
w(2) -
p(2))*os(an - i2, bn, cn, dn, m + 1) + &
167 0.5_dp*(an(2) - 1)/
xsi*os(an - i2 - i2, bn, cn, dn, m) - &
168 0.5_dp*(an(2) - 1)/
xsi*
rho/
xsi*os(an - i2 - i2, bn, cn, dn, m + 1)
169 ELSEIF (an(3) > 0)
THEN
170 iabcd = (
p(3) -
a(3))*os(an - i3, bn, cn, dn, m) + &
171 (
w(3) -
p(3))*os(an - i3, bn, cn, dn, m + 1) + &
172 0.5_dp*(an(3) - 1)/
xsi*os(an - i3 - i3, bn, cn, dn, m) - &
173 0.5_dp*(an(3) - 1)/
xsi*
rho/
xsi*os(an - i3 - i3, bn, cn, dn, m + 1)
Calculation of Coulomb integrals over Cartesian Gaussian-type functions (electron repulsion integrals...
real(dp), dimension(0:4 *lmax) i0m
real(dp), dimension(0:4 *lmax) fm
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussia...
real(kind=dp) function, dimension(0:nmax), public fgamma_ref(nmax, t)
Calculation of the incomplete Gamma function F_n(t) using a spherical Bessel function expansion....
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
Exchange and Correlation functional calculations.