39 #include "../base/base_uses.f90"
80 SUBROUTINE dabdr(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, rpgfb, lb_min, &
81 dab, ab, dabdx, dabdy, dabdz)
82 INTEGER,
INTENT(IN) :: la_max, npgfa
83 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta, rpgfa
84 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
85 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: rpgfb
86 INTEGER,
INTENT(IN) :: lb_min
87 REAL(kind=
dp),
INTENT(IN) :: dab
88 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: ab
89 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: dabdx, dabdy, dabdz
91 INTEGER :: ax, ay, az, bx, by, bz, coa, coamx, &
92 coamy, coamz, coapx, coapy, coapz, &
93 cob, codb, i, ipgf, j, jpgf, la, lb, &
95 REAL(kind=
dp) :: fa, fx, fy, fz
108 fa = 2.0_dp*zeta(ipgf)
117 IF (rpgfa(ipgf) + rpgfb(jpgf) < dab)
THEN
126 ndb = ndb +
ncoset(lb_max + 1)
145 cob = nb +
coset(bx, by, bz)
146 codb = ndb +
coset(bx, by, bz)
147 dabdx(coa, cob) = fa*ab(coapx, codb)
148 dabdy(coa, cob) = fa*ab(coapy, codb)
149 dabdz(coa, cob) = fa*ab(coapz, codb)
160 coa = na +
coset(ax, ay, az)
161 coamx = nda +
coset(max(0, ax - 1), ay, az)
162 coamy = nda +
coset(ax, max(0, ay - 1), az)
163 coamz = nda +
coset(ax, ay, max(0, az - 1))
164 coapx = nda +
coset(ax + 1, ay, az)
165 coapy = nda +
coset(ax, ay + 1, az)
166 coapz = nda +
coset(ax, ay, az + 1)
176 cob = nb +
coset(bx, by, bz)
177 codb = ndb +
coset(bx, by, bz)
178 dabdx(coa, cob) = fa*ab(coapx, codb) - fx*ab(coamx, codb)
179 dabdy(coa, cob) = fa*ab(coapy, codb) - fy*ab(coamy, codb)
180 dabdz(coa, cob) = fa*ab(coapz, codb) - fz*ab(coamz, codb)
193 ndb = ndb +
ncoset(lb_max + 1)
198 nda = nda +
ncoset(la_max + 1)
229 SUBROUTINE adbdr(la_max, npgfa, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, &
230 dab, ab, adbdx, adbdy, adbdz)
231 INTEGER,
INTENT(IN) :: la_max, npgfa
232 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: rpgfa
233 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
234 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb, rpgfb
235 INTEGER,
INTENT(IN) :: lb_min
236 REAL(kind=
dp),
INTENT(IN) :: dab
237 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: ab
238 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: adbdx, adbdy, adbdz
240 INTEGER :: ax, ay, az, bx, by, bz, coa, cob, cobmx, &
241 cobmy, cobmz, cobpx, cobpy, cobpz, &
242 coda, i, ipgf, j, jpgf, la, lb, na, &
244 REAL(kind=
dp) :: fb, fx, fy, fz
260 fb = 2.0_dp*zetb(jpgf)
264 IF (rpgfa(ipgf) + rpgfb(jpgf) < dab)
THEN
273 ndb = ndb +
ncoset(lb_max + 1)
292 coa = na +
coset(ax, ay, az)
293 coda = nda +
coset(ax, ay, az)
294 adbdx(coa, cob) = fb*ab(coda, cobpx)
295 adbdy(coa, cob) = fb*ab(coda, cobpy)
296 adbdz(coa, cob) = fb*ab(coda, cobpz)
306 cob = nb +
coset(bx, by, bz)
307 cobmx = ndb +
coset(max(0, bx - 1), by, bz)
308 cobmy = ndb +
coset(bx, max(0, by - 1), bz)
309 cobmz = ndb +
coset(bx, by, max(0, bz - 1))
310 cobpx = ndb +
coset(bx + 1, by, bz)
311 cobpy = ndb +
coset(bx, by + 1, bz)
312 cobpz = ndb +
coset(bx, by, bz + 1)
322 coa = na +
coset(ax, ay, az)
323 coda = nda +
coset(ax, ay, az)
324 adbdx(coa, cob) = fb*ab(coda, cobpx) - fx*ab(coda, cobmx)
325 adbdy(coa, cob) = fb*ab(coda, cobpy) - fy*ab(coda, cobmy)
326 adbdz(coa, cob) = fb*ab(coda, cobpz) - fz*ab(coda, cobmz)
339 ndb = ndb +
ncoset(lb_max + 1)
344 nda = nda +
ncoset(la_max + 1)
365 SUBROUTINE dabdr_noscreen(la_max, npgfa, zeta, lb_max, npgfb, ab, dabdx, dabdy, dabdz)
366 INTEGER,
INTENT(IN) :: la_max, npgfa
367 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta
368 INTEGER,
INTENT(IN) :: lb_max, npgfb
369 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(IN) :: ab
370 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(OUT) :: dabdx, dabdy, dabdz
372 INTEGER :: ax, ay, az, bx, by, bz, coa, coamx, &
373 coamy, coamz, coapx, coapy, coapz, &
374 cob, codb, ipgf, jpgf, la, lb, na, nb, &
376 REAL(kind=
dp) :: fa, fx, fy, fz
389 fa = 2.0_dp*zeta(ipgf)
411 cob = nb +
coset(bx, by, bz)
412 codb = ndb +
coset(bx, by, bz)
413 dabdx(coa, cob) = fa*ab(coapx, codb)
414 dabdy(coa, cob) = fa*ab(coapy, codb)
415 dabdz(coa, cob) = fa*ab(coapz, codb)
426 coa = na +
coset(ax, ay, az)
427 coamx = nda +
coset(max(0, ax - 1), ay, az)
428 coamy = nda +
coset(ax, max(0, ay - 1), az)
429 coamz = nda +
coset(ax, ay, max(0, az - 1))
430 coapx = nda +
coset(ax + 1, ay, az)
431 coapy = nda +
coset(ax, ay + 1, az)
432 coapz = nda +
coset(ax, ay, az + 1)
442 cob = nb +
coset(bx, by, bz)
443 codb = ndb +
coset(bx, by, bz)
444 dabdx(coa, cob) = fa*ab(coapx, codb) - fx*ab(coamx, codb)
445 dabdy(coa, cob) = fa*ab(coapy, codb) - fy*ab(coamy, codb)
446 dabdz(coa, cob) = fa*ab(coapz, codb) - fz*ab(coamz, codb)
459 ndb = ndb +
ncoset(lb_max + 1)
464 nda = nda +
ncoset(la_max + 1)
Calculate the first derivative of an integral block.
subroutine, public dabdr_noscreen(la_max, npgfa, zeta, lb_max, npgfb, ab, dabdx, dabdy, dabdz)
Calculate the first derivative of an integral block. This takes the derivative with respect to the at...
subroutine, public adbdr(la_max, npgfa, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, dab, ab, adbdx, adbdy, adbdz)
Calculate the first derivative of an integral block. This takes the derivative with respect to the at...
subroutine, public dabdr(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, rpgfb, lb_min, dab, ab, dabdx, dabdy, dabdz)
Calculate the first derivative of an integral block. This takes the derivative with respect to the at...
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