192 SUBROUTINE coulomb3(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, &
193 lc_max, zetc, rpgfc, lc_min, gccc, rab, rab2, rac, rac2, rbc2, vabc, int_abc, &
194 v, f, maxder, vabc_plus)
195 INTEGER,
INTENT(IN) :: la_max, npgfa
196 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta, rpgfa
197 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
198 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb, rpgfb
199 INTEGER,
INTENT(IN) :: lb_min, lc_max
200 REAL(kind=
dp),
INTENT(IN) :: zetc, rpgfc
201 INTEGER,
INTENT(IN) :: lc_min
202 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: gccc
203 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
204 REAL(kind=
dp),
INTENT(IN) :: rab2
205 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rac
206 REAL(kind=
dp),
INTENT(IN) :: rac2, rbc2
207 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(INOUT) :: vabc
208 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: int_abc
209 REAL(kind=
dp),
DIMENSION(:, :, :, :) :: v
210 REAL(kind=
dp),
DIMENSION(0:) :: f
211 INTEGER,
INTENT(IN),
OPTIONAL :: maxder
212 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL :: vabc_plus
214 INTEGER :: ax, ay, az, bx, by, bz, coc, cocx, cocy, &
215 cocz, cx, cy, cz, i, ipgf, j, jpgf, k, &
216 kk, la, la_start, lb, lc, &
217 maxder_local, n, na, nap, nb, nmax
218 REAL(kind=
dp) :: dab, dac, dbc, f0, f1, f2, f3, f4, f5, &
219 f6, f7, fcx, fcy, fcz, fx, fy, fz, t, &
221 REAL(kind=
dp),
DIMENSION(3) :: rap, rbp, rcp, rcw, rpw
226 IF (
PRESENT(maxder))
THEN
227 maxder_local = maxder
230 nmax = la_max + lb_max + lc_max + 1
249 IF (rpgfa(ipgf) + rpgfc < dac)
THEN
250 na = na +
ncoset(la_max - maxder_local)
251 nap = nap +
ncoset(la_max)
261 (rpgfb(jpgf) + rpgfc < dbc) .OR. &
262 (rpgfa(ipgf) + rpgfb(jpgf) < dab))
THEN
269 zetp = 1.0_dp/(zeta(ipgf) + zetb(jpgf))
271 zetw = 1.0_dp/(zeta(ipgf) + zetb(jpgf) + zetc)
273 f0 = 2.0_dp*sqrt(
pi**5*zetw)*zetp*zetq
278 f0 = f0*exp(-zeta(ipgf)*f1*rab2)
281 rcp(:) = rap(:) - rac(:)
286 t = -f4*(rcp(1)*rcp(1) + rcp(2)*rcp(2) + rcp(3)*rcp(3))/zetp
288 CALL fgamma(nmax - 1, t, f)
293 v(1, 1, 1, n) = f0*f(n - 1)
306 v(2, 1, 1, n) = rap(1)*v(1, 1, 1, n) + rpw(1)*v(1, 1, 1, n + 1)
307 v(3, 1, 1, n) = rap(2)*v(1, 1, 1, n) + rpw(2)*v(1, 1, 1, n + 1)
308 v(4, 1, 1, n) = rap(3)*v(1, 1, 1, n) + rpw(3)*v(1, 1, 1, n + 1)
322 v(
coset(0, 0, la), 1, 1, n) = &
323 rap(3)*v(
coset(0, 0, la - 1), 1, 1, n) + &
324 rpw(3)*v(
coset(0, 0, la - 1), 1, 1, n + 1) + &
325 f2*real(la - 1,
dp)*(v(
coset(0, 0, la - 2), 1, 1, n) + &
326 f4*v(
coset(0, 0, la - 2), 1, 1, n + 1))
331 v(
coset(0, 1, az), 1, 1, n) = &
332 rap(2)*v(
coset(0, 0, az), 1, 1, n) + &
333 rpw(2)*v(
coset(0, 0, az), 1, 1, n + 1)
337 v(
coset(0, ay, az), 1, 1, n) = &
338 rap(2)*v(
coset(0, ay - 1, az), 1, 1, n) + &
339 rpw(2)*v(
coset(0, ay - 1, az), 1, 1, n + 1) + &
340 f2*real(ay - 1,
dp)*(v(
coset(0, ay - 2, az), 1, 1, n) + &
341 f4*v(
coset(0, ay - 2, az), 1, 1, n + 1))
348 v(
coset(1, ay, az), 1, 1, n) = &
349 rap(1)*v(
coset(0, ay, az), 1, 1, n) + &
350 rpw(1)*v(
coset(0, ay, az), 1, 1, n + 1)
354 f3 = f2*real(ax - 1,
dp)
357 v(
coset(ax, ay, az), 1, 1, n) = &
358 rap(1)*v(
coset(ax - 1, ay, az), 1, 1, n) + &
359 rpw(1)*v(
coset(ax - 1, ay, az), 1, 1, n + 1) + &
360 f3*(v(
coset(ax - 2, ay, az), 1, 1, n) + &
361 f4*v(
coset(ax - 2, ay, az), 1, 1, n + 1))
375 rbp(:) = rap(:) - rab(:)
379 la_start = max(0, la_min - 1)
381 DO la = la_start, la_max - 1
382 DO n = 1, nmax - la - 1
386 v(
coset(ax, ay, az), 2, 1, n) = &
387 v(
coset(ax + 1, ay, az), 1, 1, n) - &
388 rab(1)*v(
coset(ax, ay, az), 1, 1, n)
389 v(
coset(ax, ay, az), 3, 1, n) = &
390 v(
coset(ax, ay + 1, az), 1, 1, n) - &
391 rab(2)*v(
coset(ax, ay, az), 1, 1, n)
392 v(
coset(ax, ay, az), 4, 1, n) = &
393 v(
coset(ax, ay, az + 1), 1, 1, n) - &
394 rab(3)*v(
coset(ax, ay, az), 1, 1, n)
407 DO n = 1, nmax - la_max - 1
410 DO ay = 0, la_max - ax
412 az = la_max - ax - ay
416 v(
coset(ax, ay, az), 2, 1, n) = &
417 rbp(1)*v(
coset(ax, ay, az), 1, 1, n) + &
418 rpw(1)*v(
coset(ax, ay, az), 1, 1, n + 1)
420 v(
coset(ax, ay, az), 2, 1, n) = &
421 rbp(1)*v(
coset(ax, ay, az), 1, 1, n) + &
422 rpw(1)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
423 fx*(v(
coset(ax - 1, ay, az), 1, 1, n) + &
424 f4*v(
coset(ax - 1, ay, az), 1, 1, n + 1))
428 v(
coset(ax, ay, az), 3, 1, n) = &
429 rbp(2)*v(
coset(ax, ay, az), 1, 1, n) + &
430 rpw(2)*v(
coset(ax, ay, az), 1, 1, n + 1)
432 v(
coset(ax, ay, az), 3, 1, n) = &
433 rbp(2)*v(
coset(ax, ay, az), 1, 1, n) + &
434 rpw(2)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
435 fy*(v(
coset(ax, ay - 1, az), 1, 1, n) + &
436 f4*v(
coset(ax, ay - 1, az), 1, 1, n + 1))
440 v(
coset(ax, ay, az), 4, 1, n) = &
441 rbp(3)*v(
coset(ax, ay, az), 1, 1, n) + &
442 rpw(3)*v(
coset(ax, ay, az), 1, 1, n + 1)
444 v(
coset(ax, ay, az), 4, 1, n) = &
445 rbp(3)*v(
coset(ax, ay, az), 1, 1, n) + &
446 rpw(3)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
447 fz*(v(
coset(ax, ay, az - 1), 1, 1, n) + &
448 f4*v(
coset(ax, ay, az - 1), 1, 1, n + 1))
464 la_start = max(0, la_min - 1)
466 DO la = la_start, la_max - 1
467 DO n = 1, nmax - la - lb
474 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
475 v(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1), 1, n) - &
476 rab(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n)
482 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
483 v(
coset(ax, ay + 1, az),
coset(0, by - 1, bz), 1, n) - &
484 rab(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n)
492 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
493 v(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz), 1, n) - &
494 rab(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n)
512 DO n = 1, nmax - la_max - lb
515 DO ay = 0, la_max - ax
517 az = la_max - ax - ay
522 f3 = f2*real(lb - 1,
dp)
525 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
526 rbp(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n) + &
527 rpw(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n + 1) + &
528 f3*(v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n) + &
529 f4*v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n + 1))
531 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
532 rbp(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n) + &
533 rpw(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n + 1) + &
534 fz*(v(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 1, n) + &
535 f4*v(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 1, n + 1)) + &
536 f3*(v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n) + &
537 f4*v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n + 1))
544 v(
coset(ax, ay, az),
coset(0, 1, bz), 1, n) = &
545 rbp(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n) + &
546 rpw(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n + 1)
549 f3 = f2*real(by - 1,
dp)
550 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
551 rbp(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n) + &
552 rpw(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n + 1) + &
553 f3*(v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n) + &
554 f4*v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n + 1))
558 v(
coset(ax, ay, az),
coset(0, 1, bz), 1, n) = &
559 rbp(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n) + &
560 rpw(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n + 1) + &
561 fy*(v(
coset(ax, ay - 1, az),
coset(0, 0, bz), 1, n) + &
562 f4*v(
coset(ax, ay - 1, az),
coset(0, 0, bz), 1, n + 1))
565 f3 = f2*real(by - 1,
dp)
566 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
567 rbp(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n) + &
568 rpw(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n + 1) + &
569 fy*(v(
coset(ax, ay - 1, az),
coset(0, by - 1, bz), 1, n) + &
570 f4*v(
coset(ax, ay - 1, az), &
571 coset(0, by - 1, bz), 1, n + 1)) + &
572 f3*(v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n) + &
573 f4*v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n + 1))
582 v(
coset(ax, ay, az),
coset(1, by, bz), 1, n) = &
583 rbp(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) + &
584 rpw(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n + 1)
587 f3 = f2*real(bx - 1,
dp)
590 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
591 rbp(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n) + &
592 rpw(1)*v(
coset(ax, ay, az), &
593 coset(bx - 1, by, bz), 1, n + 1) + &
594 f3*(v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n) + &
595 f4*v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n + 1))
601 v(
coset(ax, ay, az),
coset(1, by, bz), 1, n) = &
602 rbp(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) + &
603 rpw(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n + 1) + &
604 fx*(v(
coset(ax - 1, ay, az),
coset(0, by, bz), 1, n) + &
605 f4*v(
coset(ax - 1, ay, az),
coset(0, by, bz), 1, n + 1))
608 f3 = f2*real(bx - 1,
dp)
611 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
612 rbp(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n) + &
613 rpw(1)*v(
coset(ax, ay, az), &
614 coset(bx - 1, by, bz), 1, n + 1) + &
615 fx*(v(
coset(ax - 1, ay, az), &
616 coset(bx - 1, by, bz), 1, n) + &
617 f4*v(
coset(ax - 1, ay, az), &
618 coset(bx - 1, by, bz), 1, n + 1)) + &
619 f3*(v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n) + &
620 f4*v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n + 1))
639 rbp(:) = rap(:) - rab(:)
645 v(1, 2, 1, n) = rbp(1)*v(1, 1, 1, n) + rpw(1)*v(1, 1, 1, n + 1)
646 v(1, 3, 1, n) = rbp(2)*v(1, 1, 1, n) + rpw(2)*v(1, 1, 1, n + 1)
647 v(1, 4, 1, n) = rbp(3)*v(1, 1, 1, n) + rpw(3)*v(1, 1, 1, n + 1)
661 v(1,
coset(0, 0, lb), 1, n) = &
662 rbp(3)*v(1,
coset(0, 0, lb - 1), 1, n) + &
663 rpw(3)*v(1,
coset(0, 0, lb - 1), 1, n + 1) + &
664 f2*real(lb - 1,
dp)*(v(1,
coset(0, 0, lb - 2), 1, n) + &
665 f4*v(1,
coset(0, 0, lb - 2), 1, n + 1))
670 v(1,
coset(0, 1, bz), 1, n) = &
671 rbp(2)*v(1,
coset(0, 0, bz), 1, n) + &
672 rpw(2)*v(1,
coset(0, 0, bz), 1, n + 1)
676 v(1,
coset(0, by, bz), 1, n) = &
677 rbp(2)*v(1,
coset(0, by - 1, bz), 1, n) + &
678 rpw(2)*v(1,
coset(0, by - 1, bz), 1, n + 1) + &
679 f2*real(by - 1,
dp)*(v(1,
coset(0, by - 2, bz), 1, n) + &
680 f4*v(1,
coset(0, by - 2, bz), 1, n + 1))
687 v(1,
coset(1, by, bz), 1, n) = &
688 rbp(1)*v(1,
coset(0, by, bz), 1, n) + &
689 rpw(1)*v(1,
coset(0, by, bz), 1, n + 1)
693 f3 = f2*real(bx - 1,
dp)
696 v(1,
coset(bx, by, bz), 1, n) = &
697 rbp(1)*v(1,
coset(bx - 1, by, bz), 1, n) + &
698 rpw(1)*v(1,
coset(bx - 1, by, bz), 1, n + 1) + &
699 f3*(v(1,
coset(bx - 2, by, bz), 1, n) + &
700 f4*v(1,
coset(bx - 2, by, bz), 1, n + 1))
722 rcw(:) = rcp(:) + rpw(:)
727 v(1, 1, 2, n) = rcw(1)*v(1, 1, 1, n + 1)
728 v(1, 1, 3, n) = rcw(2)*v(1, 1, 1, n + 1)
729 v(1, 1, 4, n) = rcw(3)*v(1, 1, 1, n + 1)
742 v(1, 1,
coset(0, 0, lc), n) = &
743 rcw(3)*v(1, 1,
coset(0, 0, lc - 1), n + 1) + &
744 f7*real(lc - 1,
dp)*(v(1, 1,
coset(0, 0, lc - 2), n) + &
745 f5*v(1, 1,
coset(0, 0, lc - 2), n + 1))
750 v(1, 1,
coset(0, 1, cz), n) = rcw(2)*v(1, 1,
coset(0, 0, cz), n + 1)
754 v(1, 1,
coset(0, cy, cz), n) = &
755 rcw(2)*v(1, 1,
coset(0, cy - 1, cz), n + 1) + &
756 f7*real(cy - 1,
dp)*(v(1, 1,
coset(0, cy - 2, cz), n) + &
757 f5*v(1, 1,
coset(0, cy - 2, cz), n + 1))
764 v(1, 1,
coset(1, cy, cz), n) = rcw(1)*v(1, 1,
coset(0, cy, cz), n + 1)
770 v(1, 1,
coset(cx, cy, cz), n) = &
771 rcw(1)*v(1, 1,
coset(cx - 1, cy, cz), n + 1) + &
772 f7*real(cx - 1,
dp)*(v(1, 1,
coset(cx - 2, cy, cz), n) + &
773 f5*v(1, 1,
coset(cx - 2, cy, cz), n + 1))
789 coc =
coset(cx, cy, cz)
790 cocx =
coset(max(0, cx - 1), cy, cz)
791 cocy =
coset(cx, max(0, cy - 1), cz)
792 cocz =
coset(cx, cy, max(0, cz - 1))
794 fcx = f6*real(cx,
dp)
795 fcy = f6*real(cy,
dp)
796 fcz = f6*real(cz,
dp)
808 DO n = 1, nmax - 1 - lc
809 v(2, 1, coc, n) = rap(1)*v(1, 1, coc, n) + &
810 rpw(1)*v(1, 1, coc, n + 1) + &
811 fcx*v(1, 1, cocx, n + 1)
812 v(3, 1, coc, n) = rap(2)*v(1, 1, coc, n) + &
813 rpw(2)*v(1, 1, coc, n + 1) + &
814 fcy*v(1, 1, cocy, n + 1)
815 v(4, 1, coc, n) = rap(3)*v(1, 1, coc, n) + &
816 rpw(3)*v(1, 1, coc, n + 1) + &
817 fcz*v(1, 1, cocz, n + 1)
828 DO n = 1, nmax - la - lc
832 v(
coset(0, 0, la), 1, coc, n) = &
833 rap(3)*v(
coset(0, 0, la - 1), 1, coc, n) + &
834 rpw(3)*v(
coset(0, 0, la - 1), 1, coc, n + 1) + &
835 f2*real(la - 1,
dp)*(v(
coset(0, 0, la - 2), 1, coc, n) + &
836 f4*v(
coset(0, 0, la - 2), 1, coc, n + 1)) + &
837 fcz*v(
coset(0, 0, la - 1), 1, cocz, n + 1)
842 v(
coset(0, 1, az), 1, coc, n) = &
843 rap(2)*v(
coset(0, 0, az), 1, coc, n) + &
844 rpw(2)*v(
coset(0, 0, az), 1, coc, n + 1) + &
845 fcy*v(
coset(0, 0, az), 1, cocy, n + 1)
848 f3 = f2*real(ay - 1,
dp)
850 v(
coset(0, ay, az), 1, coc, n) = &
851 rap(2)*v(
coset(0, ay - 1, az), 1, coc, n) + &
852 rpw(2)*v(
coset(0, ay - 1, az), 1, coc, n + 1) + &
853 f3*(v(
coset(0, ay - 2, az), 1, coc, n) + &
854 f4*v(
coset(0, ay - 2, az), 1, coc, n + 1)) + &
855 fcy*v(
coset(0, ay - 1, az), 1, cocy, n + 1)
862 v(
coset(1, ay, az), 1, coc, n) = &
863 rap(1)*v(
coset(0, ay, az), 1, coc, n) + &
864 rpw(1)*v(
coset(0, ay, az), 1, coc, n + 1) + &
865 fcx*v(
coset(0, ay, az), 1, cocx, n + 1)
869 f3 = f2*real(ax - 1,
dp)
872 v(
coset(ax, ay, az), 1, coc, n) = &
873 rap(1)*v(
coset(ax - 1, ay, az), 1, coc, n) + &
874 rpw(1)*v(
coset(ax - 1, ay, az), 1, coc, n + 1) + &
875 f3*(v(
coset(ax - 2, ay, az), 1, coc, n) + &
876 f4*v(
coset(ax - 2, ay, az), 1, coc, n + 1)) + &
877 fcx*v(
coset(ax - 1, ay, az), 1, cocx, n + 1)
893 la_start = max(0, la_min - 1)
895 DO la = la_start, la_max - 1
896 DO n = 1, nmax - la - 1 - lc
900 v(
coset(ax, ay, az), 2, coc, n) = &
901 v(
coset(ax + 1, ay, az), 1, coc, n) - &
902 rab(1)*v(
coset(ax, ay, az), 1, coc, n)
903 v(
coset(ax, ay, az), 3, coc, n) = &
904 v(
coset(ax, ay + 1, az), 1, coc, n) - &
905 rab(2)*v(
coset(ax, ay, az), 1, coc, n)
906 v(
coset(ax, ay, az), 4, coc, n) = &
907 v(
coset(ax, ay, az + 1), 1, coc, n) - &
908 rab(3)*v(
coset(ax, ay, az), 1, coc, n)
922 DO n = 1, nmax - la_max - 1 - lc
925 DO ay = 0, la_max - ax
927 az = la_max - ax - ay
931 v(
coset(ax, ay, az), 2, coc, n) = &
932 rbp(1)*v(
coset(ax, ay, az), 1, coc, n) + &
933 rpw(1)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
934 fcx*v(
coset(ax, ay, az), 1, cocx, n + 1)
936 v(
coset(ax, ay, az), 2, coc, n) = &
937 rbp(1)*v(
coset(ax, ay, az), 1, coc, n) + &
938 rpw(1)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
939 fx*(v(
coset(ax - 1, ay, az), 1, coc, n) + &
940 f4*v(
coset(ax - 1, ay, az), 1, coc, n + 1)) + &
941 fcx*v(
coset(ax, ay, az), 1, cocx, n + 1)
945 v(
coset(ax, ay, az), 3, coc, n) = &
946 rbp(2)*v(
coset(ax, ay, az), 1, coc, n) + &
947 rpw(2)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
948 fcy*v(
coset(ax, ay, az), 1, cocy, n + 1)
950 v(
coset(ax, ay, az), 3, coc, n) = &
951 rbp(2)*v(
coset(ax, ay, az), 1, coc, n) + &
952 rpw(2)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
953 fy*(v(
coset(ax, ay - 1, az), 1, coc, n) + &
954 f4*v(
coset(ax, ay - 1, az), 1, coc, n + 1)) + &
955 fcy*v(
coset(ax, ay, az), 1, cocy, n + 1)
959 v(
coset(ax, ay, az), 4, coc, n) = &
960 rbp(3)*v(
coset(ax, ay, az), 1, coc, n) + &
961 rpw(3)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
962 fcz*v(
coset(ax, ay, az), 1, cocz, n + 1)
964 v(
coset(ax, ay, az), 4, coc, n) = &
965 rbp(3)*v(
coset(ax, ay, az), 1, coc, n) + &
966 rpw(3)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
967 fz*(v(
coset(ax, ay, az - 1), 1, coc, n) + &
968 f4*v(
coset(ax, ay, az - 1), 1, coc, n + 1)) + &
969 fcz*v(
coset(ax, ay, az), 1, cocz, n + 1)
985 la_start = max(0, la_min - 1)
987 DO la = la_start, la_max - 1
988 DO n = 1, nmax - la - lb - lc
995 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
996 v(
coset(ax, ay, az + 1), &
997 coset(0, 0, lb - 1), coc, n) - &
998 rab(3)*v(
coset(ax, ay, az), &
999 coset(0, 0, lb - 1), coc, n)
1005 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1006 v(
coset(ax, ay + 1, az), &
1007 coset(0, by - 1, bz), coc, n) - &
1008 rab(2)*v(
coset(ax, ay, az), &
1009 coset(0, by - 1, bz), coc, n)
1017 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1018 v(
coset(ax + 1, ay, az), &
1019 coset(bx - 1, by, bz), coc, n) - &
1020 rab(1)*v(
coset(ax, ay, az), &
1021 coset(bx - 1, by, bz), coc, n)
1040 DO n = 1, nmax - la_max - lb - lc
1042 fx = f2*real(ax,
dp)
1043 DO ay = 0, la_max - ax
1044 fy = f2*real(ay,
dp)
1045 az = la_max - ax - ay
1046 fz = f2*real(az,
dp)
1050 f3 = f2*real(lb - 1,
dp)
1053 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
1054 rbp(3)*v(
coset(ax, ay, az), &
1055 coset(0, 0, lb - 1), coc, n) + &
1056 rpw(3)*v(
coset(ax, ay, az), &
1057 coset(0, 0, lb - 1), coc, n + 1) + &
1058 f3*(v(
coset(ax, ay, az), &
1059 coset(0, 0, lb - 2), coc, n) + &
1060 f4*v(
coset(ax, ay, az), &
1061 coset(0, 0, lb - 2), coc, n + 1)) + &
1062 fcz*v(
coset(ax, ay, az), &
1063 coset(0, 0, lb - 1), cocz, n + 1)
1065 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
1066 rbp(3)*v(
coset(ax, ay, az), &
1067 coset(0, 0, lb - 1), coc, n) + &
1068 rpw(3)*v(
coset(ax, ay, az), &
1069 coset(0, 0, lb - 1), coc, n + 1) + &
1070 fz*(v(
coset(ax, ay, az - 1), &
1071 coset(0, 0, lb - 1), coc, n) + &
1072 f4*v(
coset(ax, ay, az - 1), &
1073 coset(0, 0, lb - 1), coc, n + 1)) + &
1074 f3*(v(
coset(ax, ay, az), &
1075 coset(0, 0, lb - 2), coc, n) + &
1076 f4*v(
coset(ax, ay, az), &
1077 coset(0, 0, lb - 2), coc, n + 1)) + &
1078 fcz*v(
coset(ax, ay, az), &
1079 coset(0, 0, lb - 1), cocz, n + 1)
1086 v(
coset(ax, ay, az),
coset(0, 1, bz), coc, n) = &
1087 rbp(2)*v(
coset(ax, ay, az), &
1088 coset(0, 0, bz), coc, n) + &
1089 rpw(2)*v(
coset(ax, ay, az), &
1090 coset(0, 0, bz), coc, n + 1) + &
1091 fcy*v(
coset(ax, ay, az), &
1092 coset(0, 0, bz), cocy, n + 1)
1095 f3 = f2*real(by - 1,
dp)
1096 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1097 rbp(2)*v(
coset(ax, ay, az), &
1098 coset(0, by - 1, bz), coc, n) + &
1099 rpw(2)*v(
coset(ax, ay, az), &
1100 coset(0, by - 1, bz), coc, n + 1) + &
1101 f3*(v(
coset(ax, ay, az), &
1102 coset(0, by - 2, bz), coc, n) + &
1103 f4*v(
coset(ax, ay, az), &
1104 coset(0, by - 2, bz), coc, n + 1)) + &
1105 fcy*v(
coset(ax, ay, az), &
1106 coset(0, by - 1, bz), cocy, n + 1)
1110 v(
coset(ax, ay, az),
coset(0, 1, bz), coc, n) = &
1111 rbp(2)*v(
coset(ax, ay, az), &
1112 coset(0, 0, bz), coc, n) + &
1113 rpw(2)*v(
coset(ax, ay, az), &
1114 coset(0, 0, bz), coc, n + 1) + &
1115 fy*(v(
coset(ax, ay - 1, az), &
1116 coset(0, 0, bz), coc, n) + &
1117 f4*v(
coset(ax, ay - 1, az), &
1118 coset(0, 0, bz), coc, n + 1)) + &
1119 fcy*v(
coset(ax, ay, az), &
1120 coset(0, 0, bz), cocy, n + 1)
1123 f3 = f2*real(by - 1,
dp)
1124 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1125 rbp(2)*v(
coset(ax, ay, az), &
1126 coset(0, by - 1, bz), coc, n) + &
1127 rpw(2)*v(
coset(ax, ay, az), &
1128 coset(0, by - 1, bz), coc, n + 1) + &
1129 fy*(v(
coset(ax, ay - 1, az), &
1130 coset(0, by - 1, bz), coc, n) + &
1131 f4*v(
coset(ax, ay - 1, az), &
1132 coset(0, by - 1, bz), coc, n + 1)) + &
1133 f3*(v(
coset(ax, ay, az), &
1134 coset(0, by - 2, bz), coc, n) + &
1135 f4*v(
coset(ax, ay, az), &
1136 coset(0, by - 2, bz), coc, n + 1)) + &
1137 fcy*v(
coset(ax, ay, az), &
1138 coset(0, by - 1, bz), cocy, n + 1)
1147 v(
coset(ax, ay, az),
coset(1, by, bz), coc, n) = &
1148 rbp(1)*v(
coset(ax, ay, az), &
1149 coset(0, by, bz), coc, n) + &
1150 rpw(1)*v(
coset(ax, ay, az), &
1151 coset(0, by, bz), coc, n + 1) + &
1152 fcx*v(
coset(ax, ay, az), &
1153 coset(0, by, bz), cocx, n + 1)
1156 f3 = f2*real(bx - 1,
dp)
1159 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1160 rbp(1)*v(
coset(ax, ay, az), &
1161 coset(bx - 1, by, bz), coc, n) + &
1162 rpw(1)*v(
coset(ax, ay, az), &
1163 coset(bx - 1, by, bz), coc, n + 1) + &
1164 f3*(v(
coset(ax, ay, az), &
1165 coset(bx - 2, by, bz), coc, n) + &
1166 f4*v(
coset(ax, ay, az), &
1167 coset(bx - 2, by, bz), coc, n + 1)) + &
1168 fcx*v(
coset(ax, ay, az), &
1169 coset(bx - 1, by, bz), cocx, n + 1)
1175 v(
coset(ax, ay, az),
coset(1, by, bz), coc, n) = &
1176 rbp(1)*v(
coset(ax, ay, az), &
1177 coset(0, by, bz), coc, n) + &
1178 rpw(1)*v(
coset(ax, ay, az), &
1179 coset(0, by, bz), coc, n + 1) + &
1180 fx*(v(
coset(ax - 1, ay, az), &
1181 coset(0, by, bz), coc, n) + &
1182 f4*v(
coset(ax - 1, ay, az), &
1183 coset(0, by, bz), coc, n + 1)) + &
1184 fcx*v(
coset(ax, ay, az), &
1185 coset(0, by, bz), cocx, n + 1)
1188 f3 = f2*real(bx - 1,
dp)
1191 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1192 rbp(1)*v(
coset(ax, ay, az), &
1193 coset(bx - 1, by, bz), coc, n) + &
1194 rpw(1)*v(
coset(ax, ay, az), &
1195 coset(bx - 1, by, bz), coc, n + 1) + &
1196 fx*(v(
coset(ax - 1, ay, az), &
1197 coset(bx - 1, by, bz), coc, n) + &
1198 f4*v(
coset(ax - 1, ay, az), &
1199 coset(bx - 1, by, bz), coc, n + 1)) + &
1200 f3*(v(
coset(ax, ay, az), &
1201 coset(bx - 2, by, bz), coc, n) + &
1202 f4*v(
coset(ax, ay, az), &
1203 coset(bx - 2, by, bz), coc, n + 1)) + &
1204 fcx*v(
coset(ax, ay, az), &
1205 coset(bx - 1, by, bz), cocx, n + 1)
1219 IF (lb_max > 0)
THEN
1227 DO n = 1, nmax - 1 - lc
1228 v(1, 2, coc, n) = rbp(1)*v(1, 1, coc, n) + &
1229 rpw(1)*v(1, 1, coc, n + 1) + &
1230 fcx*v(1, 1, cocx, n + 1)
1231 v(1, 3, coc, n) = rbp(2)*v(1, 1, coc, n) + &
1232 rpw(2)*v(1, 1, coc, n + 1) + &
1233 fcy*v(1, 1, cocy, n + 1)
1234 v(1, 4, coc, n) = rbp(3)*v(1, 1, coc, n) + &
1235 rpw(3)*v(1, 1, coc, n + 1) + &
1236 fcz*v(1, 1, cocz, n + 1)
1247 DO n = 1, nmax - lb - lc
1251 v(1,
coset(0, 0, lb), coc, n) = &
1252 rbp(3)*v(1,
coset(0, 0, lb - 1), coc, n) + &
1253 rpw(3)*v(1,
coset(0, 0, lb - 1), coc, n + 1) + &
1254 f2*real(lb - 1,
dp)*(v(1,
coset(0, 0, lb - 2), coc, n) + &
1255 f4*v(1,
coset(0, 0, lb - 2), coc, n + 1)) + &
1256 fcz*v(1,
coset(0, 0, lb - 1), cocz, n + 1)
1261 v(1,
coset(0, 1, bz), coc, n) = &
1262 rbp(2)*v(1,
coset(0, 0, bz), coc, n) + &
1263 rpw(2)*v(1,
coset(0, 0, bz), coc, n + 1) + &
1264 fcy*v(1,
coset(0, 0, bz), cocy, n + 1)
1267 f3 = f2*real(by - 1,
dp)
1269 v(1,
coset(0, by, bz), coc, n) = &
1270 rbp(2)*v(1,
coset(0, by - 1, bz), coc, n) + &
1271 rpw(2)*v(1,
coset(0, by - 1, bz), coc, n + 1) + &
1272 f3*(v(1,
coset(0, by - 2, bz), coc, n) + &
1273 f4*v(1,
coset(0, by - 2, bz), coc, n + 1)) + &
1274 fcy*v(1,
coset(0, by - 1, bz), cocy, n + 1)
1281 v(1,
coset(1, by, bz), coc, n) = &
1282 rbp(1)*v(1,
coset(0, by, bz), coc, n) + &
1283 rpw(1)*v(1,
coset(0, by, bz), coc, n + 1) + &
1284 fcx*v(1,
coset(0, by, bz), cocx, n + 1)
1288 f3 = f2*real(bx - 1,
dp)
1291 v(1,
coset(bx, by, bz), coc, n) = &
1292 rbp(1)*v(1,
coset(bx - 1, by, bz), coc, n) + &
1293 rpw(1)*v(1,
coset(bx - 1, by, bz), coc, n + 1) + &
1294 f3*(v(1,
coset(bx - 2, by, bz), coc, n) + &
1295 f4*v(1,
coset(bx - 2, by, bz), coc, n + 1)) + &
1296 fcx*v(1,
coset(bx - 1, by, bz), cocx, n + 1)
1319 kk = k -
ncoset(lc_min - 1)
1321 DO i =
ncoset(la_min - 1) + 1,
ncoset(la_max - maxder_local)
1322 vabc(na + i, nb + j) = vabc(na + i, nb + j) + gccc(kk)*v(i, j, k, 1)
1323 int_abc(na + i, nb + j, kk) = v(i, j, k, 1)
1328 IF (
PRESENT(maxder))
THEN
1330 kk = k -
ncoset(lc_min - 1)
1333 vabc_plus(nap + i, nb + j) = vabc_plus(nap + i, nb + j) + gccc(kk)*v(i, j, k, 1)
1343 na = na +
ncoset(la_max - maxder_local)
1344 nap = nap +
ncoset(la_max)