24#include "./base/base_uses.f90"
32 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'debug_os_integrals'
55 SUBROUTINE overlap_ab_test(la_max, la_min, npgfa, zeta, lb_max, lb_min, npgfb, zetb, &
58 INTEGER,
INTENT(IN) :: la_max, la_min, npgfa
59 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) ::
zeta
60 INTEGER,
INTENT(IN) :: lb_max, lb_min, npgfb
61 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb
62 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: ra, rb
63 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: sab
64 REAL(kind=
dp),
INTENT(INOUT) :: dmax
66 INTEGER :: coa, cob, ia1, iax, iay, iaz, ib1, ibx, &
67 iby, ibz, ipgf, jpgf, ma, mb
68 INTEGER,
DIMENSION(3) :: na, nb
69 REAL(kind=
dp) :: res1, res2,
xa,
xb
70 REAL(kind=
dp),
DIMENSION(3) ::
a,
b
81 DO ma = la_min, la_max
82 DO mb = lb_min, lb_max
86 na(1) = iax; na(2) = iay; na(3) = iaz
87 ia1 =
coset(iax, iay, iaz)
91 nb(1) = ibx; nb(2) = iby; nb(3) = ibz
92 ib1 =
coset(ibx, iby, ibz)
94 res2 = sab(coa + ia1, cob + ib1)
95 dmax = max(dmax, abs(res1 - res2))
102 cob = cob +
ncoset(lb_max)
104 coa = coa +
ncoset(la_max)
131 lb_max, npgfb, zetb, lb_min, &
132 lc_max, npgfc, zetc, lc_min, &
133 ra, rb, rc, sabc, dmax)
135 INTEGER,
INTENT(IN) :: la_max, npgfa
136 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) ::
zeta
137 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
138 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb
139 INTEGER,
INTENT(IN) :: lb_min, lc_max, npgfc
140 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetc
141 INTEGER,
INTENT(IN) :: lc_min
142 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: ra, rb, rc
143 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: sabc
144 REAL(kind=
dp),
INTENT(INOUT) :: dmax
146 INTEGER :: coa, cob, coc, ia1, iax, iay, iaz, ib1, &
147 ibx, iby, ibz, ic1, icx, icy, icz, &
148 ipgf, jpgf, kpgf, ma, mb, mc
149 INTEGER,
DIMENSION(3) :: na, nb, nc
150 REAL(kind=
dp) :: res1, res2,
xa,
xb,
xc
151 REAL(kind=
dp),
DIMENSION(3) ::
a,
b,
c
170 DO ma = la_min, la_max
171 DO mc = lc_min, lc_max
172 DO mb = lb_min, lb_max
176 na(1) = iax; na(2) = iay; na(3) = iaz
177 ia1 =
coset(iax, iay, iaz)
181 nc(1) = icx; nc(2) = icy; nc(3) = icz
182 ic1 =
coset(icx, icy, icz)
186 nb(1) = ibx; nb(2) = iby; nb(3) = ibz
187 ib1 =
coset(ibx, iby, ibz)
189 res2 = sabc(coa + ia1, cob + ib1, coc + ic1)
190 dmax = max(dmax, abs(res1 - res2))
201 coc = coc +
ncoset(lc_max)
203 cob = cob +
ncoset(lb_max)
205 coa = coa +
ncoset(la_max)
235 la_max2, la_min2, npgfa2, zeta2, &
236 lb_max1, lb_min1, npgfb1, zetb1, &
237 lb_max2, lb_min2, npgfb2, zetb2, &
240 INTEGER,
INTENT(IN) :: la_max1, la_min1, npgfa1
241 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta1
242 INTEGER,
INTENT(IN) :: la_max2, la_min2, npgfa2
243 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta2
244 INTEGER,
INTENT(IN) :: lb_max1, lb_min1, npgfb1
245 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb1
246 INTEGER,
INTENT(IN) :: lb_max2, lb_min2, npgfb2
247 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb2
248 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: ra, rb
249 REAL(kind=
dp),
DIMENSION(:, :, :, :),
INTENT(IN) :: saabb
250 REAL(kind=
dp),
INTENT(INOUT) :: dmax
252 INTEGER :: coa1, coa2, cob1, cob2, i, iax, iay, &
253 iaz, ibx, iby, ibz, ipgf, j, jpgf, k, &
254 kpgf, l, la_max, la_min, lb_max, &
256 INTEGER,
DIMENSION(3) :: na, naa, nb, nbb
257 REAL(kind=
dp) :: res1,
xa,
xb
258 REAL(kind=
dp),
DIMENSION(3) ::
a,
b
269 xa = zeta1(ipgf) + zeta2(jpgf)
270 xb = zetb1(kpgf) + zetb2(lpgf)
271 la_max = la_max1 + la_max2
272 lb_max = lb_max1 + lb_max2
273 la_min = la_min1 + la_min2
274 lb_min = lb_min1 + lb_min2
281 DO ma = la_min, la_max
282 DO mb = lb_min, lb_max
286 na(1) = iax; na(2) = iay; na(3) = iaz
290 nb(1) = ibx; nb(2) = iby; nb(3) = ibz
298 IF (all(na == naa) .AND. all(nb == nbb))
THEN
299 dmax = max(dmax, abs(res1 - saabb(coa1 + i, coa2 + j, cob1 + k, cob2 + l)))
311 cob2 = cob2 +
ncoset(lb_max2)
313 cob1 = cob1 +
ncoset(lb_max1)
315 coa2 = coa2 +
ncoset(la_max2)
317 coa1 = coa1 +
ncoset(la_max1)
Three-center integrals over Cartesian Gaussian-type functions.
subroutine, public init_os_overlap3(ya, yb, yc, ra, rb, rc)
Calculation of three-center integrals over Cartesian Gaussian-type functions.
recursive real(dp) function, public os_overlap3(an, cn, bn)
...
Two-center overlap integrals over Cartesian Gaussian-type functions.
subroutine, public init_os_overlap2(ya, yb, ra, rb)
Calculation of overlap integrals over Cartesian Gaussian-type functions.
recursive real(dp) function, public os_overlap2(an, bn)
...
Debugs Obara-Saika integral matrices.
subroutine, public overlap_ab_test(la_max, la_min, npgfa, zeta, lb_max, lb_min, npgfb, zetb, ra, rb, sab, dmax)
recursive test routines for integral (a,b)
subroutine, public overlap_abc_test(la_max, npgfa, zeta, la_min, lb_max, npgfb, zetb, lb_min, lc_max, npgfc, zetc, lc_min, ra, rb, rc, sabc, dmax)
recursive test routines for integral (a,b,c)
subroutine, public overlap_aabb_test(la_max1, la_min1, npgfa1, zeta1, la_max2, la_min2, npgfa2, zeta2, lb_max1, lb_min1, npgfb1, zetb1, lb_max2, lb_min2, npgfb2, zetb2, ra, rb, saabb, dmax)
recursive test routines for integral (aa,bb)
Defines the basic variable types.
integer, parameter, public dp
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
integer, dimension(:, :, :), allocatable, public coset
integer, dimension(:, :), allocatable, public indco
Exchange and Correlation functional calculations.