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)
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...