430 SUBROUTINE coulomb3(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, &
431 lc_max, zetc, rpgfc, lc_min, gccc, rab, rab2, rac, rac2, rbc2, vabc, int_abc, &
432 v, f, maxder, vabc_plus)
433 INTEGER,
INTENT(IN) :: la_max, npgfa
434 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta, rpgfa
435 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
436 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb, rpgfb
437 INTEGER,
INTENT(IN) :: lb_min, lc_max
438 REAL(kind=
dp),
INTENT(IN) :: zetc, rpgfc
439 INTEGER,
INTENT(IN) :: lc_min
440 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: gccc
441 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
442 REAL(kind=
dp),
INTENT(IN) :: rab2
443 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rac
444 REAL(kind=
dp),
INTENT(IN) :: rac2, rbc2
445 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(INOUT) :: vabc
446 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: int_abc
447 REAL(kind=
dp),
DIMENSION(:, :, :, :) :: v
448 REAL(kind=
dp),
DIMENSION(0:) :: f
449 INTEGER,
INTENT(IN),
OPTIONAL :: maxder
450 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL :: vabc_plus
452 INTEGER :: ax, ay, az, bx, by, bz, coc, cocx, cocy, &
453 cocz, cx, cy, cz, i, ipgf, j, jpgf, k, &
454 kk, la, la_start, lb, lc, &
455 maxder_local, n, na, nap, nb, nmax
456 REAL(kind=
dp) :: dab, dac, dbc, f0, f1, f2, f3, f4, f5, &
457 f6, f7, fcx, fcy, fcz, fx, fy, fz, t, &
459 REAL(kind=
dp),
DIMENSION(3) :: rap, rbp, rcp, rcw, rpw
464 IF (
PRESENT(maxder))
THEN
465 maxder_local = maxder
468 nmax = la_max + lb_max + lc_max + 1
487 IF (rpgfa(ipgf) + rpgfc < dac)
THEN
488 na = na +
ncoset(la_max - maxder_local)
489 nap = nap +
ncoset(la_max)
499 (rpgfb(jpgf) + rpgfc < dbc) .OR. &
500 (rpgfa(ipgf) + rpgfb(jpgf) < dab))
THEN
507 zetp = 1.0_dp/(zeta(ipgf) + zetb(jpgf))
509 zetw = 1.0_dp/(zeta(ipgf) + zetb(jpgf) + zetc)
511 f0 = 2.0_dp*sqrt(
pi**5*zetw)*zetp*zetq
516 f0 = f0*exp(-zeta(ipgf)*f1*rab2)
519 rcp(:) = rap(:) - rac(:)
524 t = -f4*(rcp(1)*rcp(1) + rcp(2)*rcp(2) + rcp(3)*rcp(3))/zetp
526 CALL fgamma(nmax - 1, t, f)
531 v(1, 1, 1, n) = f0*f(n - 1)
544 v(2, 1, 1, n) = rap(1)*v(1, 1, 1, n) + rpw(1)*v(1, 1, 1, n + 1)
545 v(3, 1, 1, n) = rap(2)*v(1, 1, 1, n) + rpw(2)*v(1, 1, 1, n + 1)
546 v(4, 1, 1, n) = rap(3)*v(1, 1, 1, n) + rpw(3)*v(1, 1, 1, n + 1)
560 v(
coset(0, 0, la), 1, 1, n) = &
561 rap(3)*v(
coset(0, 0, la - 1), 1, 1, n) + &
562 rpw(3)*v(
coset(0, 0, la - 1), 1, 1, n + 1) + &
563 f2*real(la - 1,
dp)*(v(
coset(0, 0, la - 2), 1, 1, n) + &
564 f4*v(
coset(0, 0, la - 2), 1, 1, n + 1))
569 v(
coset(0, 1, az), 1, 1, n) = &
570 rap(2)*v(
coset(0, 0, az), 1, 1, n) + &
571 rpw(2)*v(
coset(0, 0, az), 1, 1, n + 1)
575 v(
coset(0, ay, az), 1, 1, n) = &
576 rap(2)*v(
coset(0, ay - 1, az), 1, 1, n) + &
577 rpw(2)*v(
coset(0, ay - 1, az), 1, 1, n + 1) + &
578 f2*real(ay - 1,
dp)*(v(
coset(0, ay - 2, az), 1, 1, n) + &
579 f4*v(
coset(0, ay - 2, az), 1, 1, n + 1))
586 v(
coset(1, ay, az), 1, 1, n) = &
587 rap(1)*v(
coset(0, ay, az), 1, 1, n) + &
588 rpw(1)*v(
coset(0, ay, az), 1, 1, n + 1)
592 f3 = f2*real(ax - 1,
dp)
595 v(
coset(ax, ay, az), 1, 1, n) = &
596 rap(1)*v(
coset(ax - 1, ay, az), 1, 1, n) + &
597 rpw(1)*v(
coset(ax - 1, ay, az), 1, 1, n + 1) + &
598 f3*(v(
coset(ax - 2, ay, az), 1, 1, n) + &
599 f4*v(
coset(ax - 2, ay, az), 1, 1, n + 1))
613 rbp(:) = rap(:) - rab(:)
617 la_start = max(0, la_min - 1)
619 DO la = la_start, la_max - 1
620 DO n = 1, nmax - la - 1
624 v(
coset(ax, ay, az), 2, 1, n) = &
625 v(
coset(ax + 1, ay, az), 1, 1, n) - &
626 rab(1)*v(
coset(ax, ay, az), 1, 1, n)
627 v(
coset(ax, ay, az), 3, 1, n) = &
628 v(
coset(ax, ay + 1, az), 1, 1, n) - &
629 rab(2)*v(
coset(ax, ay, az), 1, 1, n)
630 v(
coset(ax, ay, az), 4, 1, n) = &
631 v(
coset(ax, ay, az + 1), 1, 1, n) - &
632 rab(3)*v(
coset(ax, ay, az), 1, 1, n)
645 DO n = 1, nmax - la_max - 1
648 DO ay = 0, la_max - ax
650 az = la_max - ax - ay
654 v(
coset(ax, ay, az), 2, 1, n) = &
655 rbp(1)*v(
coset(ax, ay, az), 1, 1, n) + &
656 rpw(1)*v(
coset(ax, ay, az), 1, 1, n + 1)
658 v(
coset(ax, ay, az), 2, 1, n) = &
659 rbp(1)*v(
coset(ax, ay, az), 1, 1, n) + &
660 rpw(1)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
661 fx*(v(
coset(ax - 1, ay, az), 1, 1, n) + &
662 f4*v(
coset(ax - 1, ay, az), 1, 1, n + 1))
666 v(
coset(ax, ay, az), 3, 1, n) = &
667 rbp(2)*v(
coset(ax, ay, az), 1, 1, n) + &
668 rpw(2)*v(
coset(ax, ay, az), 1, 1, n + 1)
670 v(
coset(ax, ay, az), 3, 1, n) = &
671 rbp(2)*v(
coset(ax, ay, az), 1, 1, n) + &
672 rpw(2)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
673 fy*(v(
coset(ax, ay - 1, az), 1, 1, n) + &
674 f4*v(
coset(ax, ay - 1, az), 1, 1, n + 1))
678 v(
coset(ax, ay, az), 4, 1, n) = &
679 rbp(3)*v(
coset(ax, ay, az), 1, 1, n) + &
680 rpw(3)*v(
coset(ax, ay, az), 1, 1, n + 1)
682 v(
coset(ax, ay, az), 4, 1, n) = &
683 rbp(3)*v(
coset(ax, ay, az), 1, 1, n) + &
684 rpw(3)*v(
coset(ax, ay, az), 1, 1, n + 1) + &
685 fz*(v(
coset(ax, ay, az - 1), 1, 1, n) + &
686 f4*v(
coset(ax, ay, az - 1), 1, 1, n + 1))
702 la_start = max(0, la_min - 1)
704 DO la = la_start, la_max - 1
705 DO n = 1, nmax - la - lb
712 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
713 v(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1), 1, n) - &
714 rab(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n)
720 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
721 v(
coset(ax, ay + 1, az),
coset(0, by - 1, bz), 1, n) - &
722 rab(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n)
730 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
731 v(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz), 1, n) - &
732 rab(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n)
750 DO n = 1, nmax - la_max - lb
753 DO ay = 0, la_max - ax
755 az = la_max - ax - ay
760 f3 = f2*real(lb - 1,
dp)
763 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
764 rbp(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n) + &
765 rpw(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n + 1) + &
766 f3*(v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n) + &
767 f4*v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n + 1))
769 v(
coset(ax, ay, az),
coset(0, 0, lb), 1, n) = &
770 rbp(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n) + &
771 rpw(3)*v(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1, n + 1) + &
772 fz*(v(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 1, n) + &
773 f4*v(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 1, n + 1)) + &
774 f3*(v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n) + &
775 f4*v(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1, n + 1))
782 v(
coset(ax, ay, az),
coset(0, 1, bz), 1, n) = &
783 rbp(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n) + &
784 rpw(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n + 1)
787 f3 = f2*real(by - 1,
dp)
788 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
789 rbp(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n) + &
790 rpw(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n + 1) + &
791 f3*(v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n) + &
792 f4*v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n + 1))
796 v(
coset(ax, ay, az),
coset(0, 1, bz), 1, n) = &
797 rbp(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n) + &
798 rpw(2)*v(
coset(ax, ay, az),
coset(0, 0, bz), 1, n + 1) + &
799 fy*(v(
coset(ax, ay - 1, az),
coset(0, 0, bz), 1, n) + &
800 f4*v(
coset(ax, ay - 1, az),
coset(0, 0, bz), 1, n + 1))
803 f3 = f2*real(by - 1,
dp)
804 v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) = &
805 rbp(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n) + &
806 rpw(2)*v(
coset(ax, ay, az),
coset(0, by - 1, bz), 1, n + 1) + &
807 fy*(v(
coset(ax, ay - 1, az),
coset(0, by - 1, bz), 1, n) + &
808 f4*v(
coset(ax, ay - 1, az), &
809 coset(0, by - 1, bz), 1, n + 1)) + &
810 f3*(v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n) + &
811 f4*v(
coset(ax, ay, az),
coset(0, by - 2, bz), 1, n + 1))
820 v(
coset(ax, ay, az),
coset(1, by, bz), 1, n) = &
821 rbp(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) + &
822 rpw(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n + 1)
825 f3 = f2*real(bx - 1,
dp)
828 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
829 rbp(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n) + &
830 rpw(1)*v(
coset(ax, ay, az), &
831 coset(bx - 1, by, bz), 1, n + 1) + &
832 f3*(v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n) + &
833 f4*v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n + 1))
839 v(
coset(ax, ay, az),
coset(1, by, bz), 1, n) = &
840 rbp(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n) + &
841 rpw(1)*v(
coset(ax, ay, az),
coset(0, by, bz), 1, n + 1) + &
842 fx*(v(
coset(ax - 1, ay, az),
coset(0, by, bz), 1, n) + &
843 f4*v(
coset(ax - 1, ay, az),
coset(0, by, bz), 1, n + 1))
846 f3 = f2*real(bx - 1,
dp)
849 v(
coset(ax, ay, az),
coset(bx, by, bz), 1, n) = &
850 rbp(1)*v(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1, n) + &
851 rpw(1)*v(
coset(ax, ay, az), &
852 coset(bx - 1, by, bz), 1, n + 1) + &
853 fx*(v(
coset(ax - 1, ay, az), &
854 coset(bx - 1, by, bz), 1, n) + &
855 f4*v(
coset(ax - 1, ay, az), &
856 coset(bx - 1, by, bz), 1, n + 1)) + &
857 f3*(v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n) + &
858 f4*v(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1, n + 1))
877 rbp(:) = rap(:) - rab(:)
883 v(1, 2, 1, n) = rbp(1)*v(1, 1, 1, n) + rpw(1)*v(1, 1, 1, n + 1)
884 v(1, 3, 1, n) = rbp(2)*v(1, 1, 1, n) + rpw(2)*v(1, 1, 1, n + 1)
885 v(1, 4, 1, n) = rbp(3)*v(1, 1, 1, n) + rpw(3)*v(1, 1, 1, n + 1)
899 v(1,
coset(0, 0, lb), 1, n) = &
900 rbp(3)*v(1,
coset(0, 0, lb - 1), 1, n) + &
901 rpw(3)*v(1,
coset(0, 0, lb - 1), 1, n + 1) + &
902 f2*real(lb - 1,
dp)*(v(1,
coset(0, 0, lb - 2), 1, n) + &
903 f4*v(1,
coset(0, 0, lb - 2), 1, n + 1))
908 v(1,
coset(0, 1, bz), 1, n) = &
909 rbp(2)*v(1,
coset(0, 0, bz), 1, n) + &
910 rpw(2)*v(1,
coset(0, 0, bz), 1, n + 1)
914 v(1,
coset(0, by, bz), 1, n) = &
915 rbp(2)*v(1,
coset(0, by - 1, bz), 1, n) + &
916 rpw(2)*v(1,
coset(0, by - 1, bz), 1, n + 1) + &
917 f2*real(by - 1,
dp)*(v(1,
coset(0, by - 2, bz), 1, n) + &
918 f4*v(1,
coset(0, by - 2, bz), 1, n + 1))
925 v(1,
coset(1, by, bz), 1, n) = &
926 rbp(1)*v(1,
coset(0, by, bz), 1, n) + &
927 rpw(1)*v(1,
coset(0, by, bz), 1, n + 1)
931 f3 = f2*real(bx - 1,
dp)
934 v(1,
coset(bx, by, bz), 1, n) = &
935 rbp(1)*v(1,
coset(bx - 1, by, bz), 1, n) + &
936 rpw(1)*v(1,
coset(bx - 1, by, bz), 1, n + 1) + &
937 f3*(v(1,
coset(bx - 2, by, bz), 1, n) + &
938 f4*v(1,
coset(bx - 2, by, bz), 1, n + 1))
960 rcw(:) = rcp(:) + rpw(:)
965 v(1, 1, 2, n) = rcw(1)*v(1, 1, 1, n + 1)
966 v(1, 1, 3, n) = rcw(2)*v(1, 1, 1, n + 1)
967 v(1, 1, 4, n) = rcw(3)*v(1, 1, 1, n + 1)
980 v(1, 1,
coset(0, 0, lc), n) = &
981 rcw(3)*v(1, 1,
coset(0, 0, lc - 1), n + 1) + &
982 f7*real(lc - 1,
dp)*(v(1, 1,
coset(0, 0, lc - 2), n) + &
983 f5*v(1, 1,
coset(0, 0, lc - 2), n + 1))
988 v(1, 1,
coset(0, 1, cz), n) = rcw(2)*v(1, 1,
coset(0, 0, cz), n + 1)
992 v(1, 1,
coset(0, cy, cz), n) = &
993 rcw(2)*v(1, 1,
coset(0, cy - 1, cz), n + 1) + &
994 f7*real(cy - 1,
dp)*(v(1, 1,
coset(0, cy - 2, cz), n) + &
995 f5*v(1, 1,
coset(0, cy - 2, cz), n + 1))
1002 v(1, 1,
coset(1, cy, cz), n) = rcw(1)*v(1, 1,
coset(0, cy, cz), n + 1)
1008 v(1, 1,
coset(cx, cy, cz), n) = &
1009 rcw(1)*v(1, 1,
coset(cx - 1, cy, cz), n + 1) + &
1010 f7*real(cx - 1,
dp)*(v(1, 1,
coset(cx - 2, cy, cz), n) + &
1011 f5*v(1, 1,
coset(cx - 2, cy, cz), n + 1))
1027 coc =
coset(cx, cy, cz)
1028 cocx =
coset(max(0, cx - 1), cy, cz)
1029 cocy =
coset(cx, max(0, cy - 1), cz)
1030 cocz =
coset(cx, cy, max(0, cz - 1))
1032 fcx = f6*real(cx,
dp)
1033 fcy = f6*real(cy,
dp)
1034 fcz = f6*real(cz,
dp)
1038 IF (la_max > 0)
THEN
1046 DO n = 1, nmax - 1 - lc
1047 v(2, 1, coc, n) = rap(1)*v(1, 1, coc, n) + &
1048 rpw(1)*v(1, 1, coc, n + 1) + &
1049 fcx*v(1, 1, cocx, n + 1)
1050 v(3, 1, coc, n) = rap(2)*v(1, 1, coc, n) + &
1051 rpw(2)*v(1, 1, coc, n + 1) + &
1052 fcy*v(1, 1, cocy, n + 1)
1053 v(4, 1, coc, n) = rap(3)*v(1, 1, coc, n) + &
1054 rpw(3)*v(1, 1, coc, n + 1) + &
1055 fcz*v(1, 1, cocz, n + 1)
1066 DO n = 1, nmax - la - lc
1070 v(
coset(0, 0, la), 1, coc, n) = &
1071 rap(3)*v(
coset(0, 0, la - 1), 1, coc, n) + &
1072 rpw(3)*v(
coset(0, 0, la - 1), 1, coc, n + 1) + &
1073 f2*real(la - 1,
dp)*(v(
coset(0, 0, la - 2), 1, coc, n) + &
1074 f4*v(
coset(0, 0, la - 2), 1, coc, n + 1)) + &
1075 fcz*v(
coset(0, 0, la - 1), 1, cocz, n + 1)
1080 v(
coset(0, 1, az), 1, coc, n) = &
1081 rap(2)*v(
coset(0, 0, az), 1, coc, n) + &
1082 rpw(2)*v(
coset(0, 0, az), 1, coc, n + 1) + &
1083 fcy*v(
coset(0, 0, az), 1, cocy, n + 1)
1086 f3 = f2*real(ay - 1,
dp)
1088 v(
coset(0, ay, az), 1, coc, n) = &
1089 rap(2)*v(
coset(0, ay - 1, az), 1, coc, n) + &
1090 rpw(2)*v(
coset(0, ay - 1, az), 1, coc, n + 1) + &
1091 f3*(v(
coset(0, ay - 2, az), 1, coc, n) + &
1092 f4*v(
coset(0, ay - 2, az), 1, coc, n + 1)) + &
1093 fcy*v(
coset(0, ay - 1, az), 1, cocy, n + 1)
1100 v(
coset(1, ay, az), 1, coc, n) = &
1101 rap(1)*v(
coset(0, ay, az), 1, coc, n) + &
1102 rpw(1)*v(
coset(0, ay, az), 1, coc, n + 1) + &
1103 fcx*v(
coset(0, ay, az), 1, cocx, n + 1)
1107 f3 = f2*real(ax - 1,
dp)
1110 v(
coset(ax, ay, az), 1, coc, n) = &
1111 rap(1)*v(
coset(ax - 1, ay, az), 1, coc, n) + &
1112 rpw(1)*v(
coset(ax - 1, ay, az), 1, coc, n + 1) + &
1113 f3*(v(
coset(ax - 2, ay, az), 1, coc, n) + &
1114 f4*v(
coset(ax - 2, ay, az), 1, coc, n + 1)) + &
1115 fcx*v(
coset(ax - 1, ay, az), 1, cocx, n + 1)
1125 IF (lb_max > 0)
THEN
1131 la_start = max(0, la_min - 1)
1133 DO la = la_start, la_max - 1
1134 DO n = 1, nmax - la - 1 - lc
1138 v(
coset(ax, ay, az), 2, coc, n) = &
1139 v(
coset(ax + 1, ay, az), 1, coc, n) - &
1140 rab(1)*v(
coset(ax, ay, az), 1, coc, n)
1141 v(
coset(ax, ay, az), 3, coc, n) = &
1142 v(
coset(ax, ay + 1, az), 1, coc, n) - &
1143 rab(2)*v(
coset(ax, ay, az), 1, coc, n)
1144 v(
coset(ax, ay, az), 4, coc, n) = &
1145 v(
coset(ax, ay, az + 1), 1, coc, n) - &
1146 rab(3)*v(
coset(ax, ay, az), 1, coc, n)
1160 DO n = 1, nmax - la_max - 1 - lc
1162 fx = f2*real(ax,
dp)
1163 DO ay = 0, la_max - ax
1164 fy = f2*real(ay,
dp)
1165 az = la_max - ax - ay
1166 fz = f2*real(az,
dp)
1169 v(
coset(ax, ay, az), 2, coc, n) = &
1170 rbp(1)*v(
coset(ax, ay, az), 1, coc, n) + &
1171 rpw(1)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1172 fcx*v(
coset(ax, ay, az), 1, cocx, n + 1)
1174 v(
coset(ax, ay, az), 2, coc, n) = &
1175 rbp(1)*v(
coset(ax, ay, az), 1, coc, n) + &
1176 rpw(1)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1177 fx*(v(
coset(ax - 1, ay, az), 1, coc, n) + &
1178 f4*v(
coset(ax - 1, ay, az), 1, coc, n + 1)) + &
1179 fcx*v(
coset(ax, ay, az), 1, cocx, n + 1)
1183 v(
coset(ax, ay, az), 3, coc, n) = &
1184 rbp(2)*v(
coset(ax, ay, az), 1, coc, n) + &
1185 rpw(2)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1186 fcy*v(
coset(ax, ay, az), 1, cocy, n + 1)
1188 v(
coset(ax, ay, az), 3, coc, n) = &
1189 rbp(2)*v(
coset(ax, ay, az), 1, coc, n) + &
1190 rpw(2)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1191 fy*(v(
coset(ax, ay - 1, az), 1, coc, n) + &
1192 f4*v(
coset(ax, ay - 1, az), 1, coc, n + 1)) + &
1193 fcy*v(
coset(ax, ay, az), 1, cocy, n + 1)
1197 v(
coset(ax, ay, az), 4, coc, n) = &
1198 rbp(3)*v(
coset(ax, ay, az), 1, coc, n) + &
1199 rpw(3)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1200 fcz*v(
coset(ax, ay, az), 1, cocz, n + 1)
1202 v(
coset(ax, ay, az), 4, coc, n) = &
1203 rbp(3)*v(
coset(ax, ay, az), 1, coc, n) + &
1204 rpw(3)*v(
coset(ax, ay, az), 1, coc, n + 1) + &
1205 fz*(v(
coset(ax, ay, az - 1), 1, coc, n) + &
1206 f4*v(
coset(ax, ay, az - 1), 1, coc, n + 1)) + &
1207 fcz*v(
coset(ax, ay, az), 1, cocz, n + 1)
1223 la_start = max(0, la_min - 1)
1225 DO la = la_start, la_max - 1
1226 DO n = 1, nmax - la - lb - lc
1233 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
1234 v(
coset(ax, ay, az + 1), &
1235 coset(0, 0, lb - 1), coc, n) - &
1236 rab(3)*v(
coset(ax, ay, az), &
1237 coset(0, 0, lb - 1), coc, n)
1243 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1244 v(
coset(ax, ay + 1, az), &
1245 coset(0, by - 1, bz), coc, n) - &
1246 rab(2)*v(
coset(ax, ay, az), &
1247 coset(0, by - 1, bz), coc, n)
1255 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1256 v(
coset(ax + 1, ay, az), &
1257 coset(bx - 1, by, bz), coc, n) - &
1258 rab(1)*v(
coset(ax, ay, az), &
1259 coset(bx - 1, by, bz), coc, n)
1278 DO n = 1, nmax - la_max - lb - lc
1280 fx = f2*real(ax,
dp)
1281 DO ay = 0, la_max - ax
1282 fy = f2*real(ay,
dp)
1283 az = la_max - ax - ay
1284 fz = f2*real(az,
dp)
1288 f3 = f2*real(lb - 1,
dp)
1291 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
1292 rbp(3)*v(
coset(ax, ay, az), &
1293 coset(0, 0, lb - 1), coc, n) + &
1294 rpw(3)*v(
coset(ax, ay, az), &
1295 coset(0, 0, lb - 1), coc, n + 1) + &
1296 f3*(v(
coset(ax, ay, az), &
1297 coset(0, 0, lb - 2), coc, n) + &
1298 f4*v(
coset(ax, ay, az), &
1299 coset(0, 0, lb - 2), coc, n + 1)) + &
1300 fcz*v(
coset(ax, ay, az), &
1301 coset(0, 0, lb - 1), cocz, n + 1)
1303 v(
coset(ax, ay, az),
coset(0, 0, lb), coc, n) = &
1304 rbp(3)*v(
coset(ax, ay, az), &
1305 coset(0, 0, lb - 1), coc, n) + &
1306 rpw(3)*v(
coset(ax, ay, az), &
1307 coset(0, 0, lb - 1), coc, n + 1) + &
1308 fz*(v(
coset(ax, ay, az - 1), &
1309 coset(0, 0, lb - 1), coc, n) + &
1310 f4*v(
coset(ax, ay, az - 1), &
1311 coset(0, 0, lb - 1), coc, n + 1)) + &
1312 f3*(v(
coset(ax, ay, az), &
1313 coset(0, 0, lb - 2), coc, n) + &
1314 f4*v(
coset(ax, ay, az), &
1315 coset(0, 0, lb - 2), coc, n + 1)) + &
1316 fcz*v(
coset(ax, ay, az), &
1317 coset(0, 0, lb - 1), cocz, n + 1)
1324 v(
coset(ax, ay, az),
coset(0, 1, bz), coc, n) = &
1325 rbp(2)*v(
coset(ax, ay, az), &
1326 coset(0, 0, bz), coc, n) + &
1327 rpw(2)*v(
coset(ax, ay, az), &
1328 coset(0, 0, bz), coc, n + 1) + &
1329 fcy*v(
coset(ax, ay, az), &
1330 coset(0, 0, bz), cocy, n + 1)
1333 f3 = f2*real(by - 1,
dp)
1334 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1335 rbp(2)*v(
coset(ax, ay, az), &
1336 coset(0, by - 1, bz), coc, n) + &
1337 rpw(2)*v(
coset(ax, ay, az), &
1338 coset(0, by - 1, bz), coc, n + 1) + &
1339 f3*(v(
coset(ax, ay, az), &
1340 coset(0, by - 2, bz), coc, n) + &
1341 f4*v(
coset(ax, ay, az), &
1342 coset(0, by - 2, bz), coc, n + 1)) + &
1343 fcy*v(
coset(ax, ay, az), &
1344 coset(0, by - 1, bz), cocy, n + 1)
1348 v(
coset(ax, ay, az),
coset(0, 1, bz), coc, n) = &
1349 rbp(2)*v(
coset(ax, ay, az), &
1350 coset(0, 0, bz), coc, n) + &
1351 rpw(2)*v(
coset(ax, ay, az), &
1352 coset(0, 0, bz), coc, n + 1) + &
1353 fy*(v(
coset(ax, ay - 1, az), &
1354 coset(0, 0, bz), coc, n) + &
1355 f4*v(
coset(ax, ay - 1, az), &
1356 coset(0, 0, bz), coc, n + 1)) + &
1357 fcy*v(
coset(ax, ay, az), &
1358 coset(0, 0, bz), cocy, n + 1)
1361 f3 = f2*real(by - 1,
dp)
1362 v(
coset(ax, ay, az),
coset(0, by, bz), coc, n) = &
1363 rbp(2)*v(
coset(ax, ay, az), &
1364 coset(0, by - 1, bz), coc, n) + &
1365 rpw(2)*v(
coset(ax, ay, az), &
1366 coset(0, by - 1, bz), coc, n + 1) + &
1367 fy*(v(
coset(ax, ay - 1, az), &
1368 coset(0, by - 1, bz), coc, n) + &
1369 f4*v(
coset(ax, ay - 1, az), &
1370 coset(0, by - 1, bz), coc, n + 1)) + &
1371 f3*(v(
coset(ax, ay, az), &
1372 coset(0, by - 2, bz), coc, n) + &
1373 f4*v(
coset(ax, ay, az), &
1374 coset(0, by - 2, bz), coc, n + 1)) + &
1375 fcy*v(
coset(ax, ay, az), &
1376 coset(0, by - 1, bz), cocy, n + 1)
1385 v(
coset(ax, ay, az),
coset(1, by, bz), coc, n) = &
1386 rbp(1)*v(
coset(ax, ay, az), &
1387 coset(0, by, bz), coc, n) + &
1388 rpw(1)*v(
coset(ax, ay, az), &
1389 coset(0, by, bz), coc, n + 1) + &
1390 fcx*v(
coset(ax, ay, az), &
1391 coset(0, by, bz), cocx, n + 1)
1394 f3 = f2*real(bx - 1,
dp)
1397 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1398 rbp(1)*v(
coset(ax, ay, az), &
1399 coset(bx - 1, by, bz), coc, n) + &
1400 rpw(1)*v(
coset(ax, ay, az), &
1401 coset(bx - 1, by, bz), coc, n + 1) + &
1402 f3*(v(
coset(ax, ay, az), &
1403 coset(bx - 2, by, bz), coc, n) + &
1404 f4*v(
coset(ax, ay, az), &
1405 coset(bx - 2, by, bz), coc, n + 1)) + &
1406 fcx*v(
coset(ax, ay, az), &
1407 coset(bx - 1, by, bz), cocx, n + 1)
1413 v(
coset(ax, ay, az),
coset(1, by, bz), coc, n) = &
1414 rbp(1)*v(
coset(ax, ay, az), &
1415 coset(0, by, bz), coc, n) + &
1416 rpw(1)*v(
coset(ax, ay, az), &
1417 coset(0, by, bz), coc, n + 1) + &
1418 fx*(v(
coset(ax - 1, ay, az), &
1419 coset(0, by, bz), coc, n) + &
1420 f4*v(
coset(ax - 1, ay, az), &
1421 coset(0, by, bz), coc, n + 1)) + &
1422 fcx*v(
coset(ax, ay, az), &
1423 coset(0, by, bz), cocx, n + 1)
1426 f3 = f2*real(bx - 1,
dp)
1429 v(
coset(ax, ay, az),
coset(bx, by, bz), coc, n) = &
1430 rbp(1)*v(
coset(ax, ay, az), &
1431 coset(bx - 1, by, bz), coc, n) + &
1432 rpw(1)*v(
coset(ax, ay, az), &
1433 coset(bx - 1, by, bz), coc, n + 1) + &
1434 fx*(v(
coset(ax - 1, ay, az), &
1435 coset(bx - 1, by, bz), coc, n) + &
1436 f4*v(
coset(ax - 1, ay, az), &
1437 coset(bx - 1, by, bz), coc, n + 1)) + &
1438 f3*(v(
coset(ax, ay, az), &
1439 coset(bx - 2, by, bz), coc, n) + &
1440 f4*v(
coset(ax, ay, az), &
1441 coset(bx - 2, by, bz), coc, n + 1)) + &
1442 fcx*v(
coset(ax, ay, az), &
1443 coset(bx - 1, by, bz), cocx, n + 1)
1457 IF (lb_max > 0)
THEN
1465 DO n = 1, nmax - 1 - lc
1466 v(1, 2, coc, n) = rbp(1)*v(1, 1, coc, n) + &
1467 rpw(1)*v(1, 1, coc, n + 1) + &
1468 fcx*v(1, 1, cocx, n + 1)
1469 v(1, 3, coc, n) = rbp(2)*v(1, 1, coc, n) + &
1470 rpw(2)*v(1, 1, coc, n + 1) + &
1471 fcy*v(1, 1, cocy, n + 1)
1472 v(1, 4, coc, n) = rbp(3)*v(1, 1, coc, n) + &
1473 rpw(3)*v(1, 1, coc, n + 1) + &
1474 fcz*v(1, 1, cocz, n + 1)
1485 DO n = 1, nmax - lb - lc
1489 v(1,
coset(0, 0, lb), coc, n) = &
1490 rbp(3)*v(1,
coset(0, 0, lb - 1), coc, n) + &
1491 rpw(3)*v(1,
coset(0, 0, lb - 1), coc, n + 1) + &
1492 f2*real(lb - 1,
dp)*(v(1,
coset(0, 0, lb - 2), coc, n) + &
1493 f4*v(1,
coset(0, 0, lb - 2), coc, n + 1)) + &
1494 fcz*v(1,
coset(0, 0, lb - 1), cocz, n + 1)
1499 v(1,
coset(0, 1, bz), coc, n) = &
1500 rbp(2)*v(1,
coset(0, 0, bz), coc, n) + &
1501 rpw(2)*v(1,
coset(0, 0, bz), coc, n + 1) + &
1502 fcy*v(1,
coset(0, 0, bz), cocy, n + 1)
1505 f3 = f2*real(by - 1,
dp)
1507 v(1,
coset(0, by, bz), coc, n) = &
1508 rbp(2)*v(1,
coset(0, by - 1, bz), coc, n) + &
1509 rpw(2)*v(1,
coset(0, by - 1, bz), coc, n + 1) + &
1510 f3*(v(1,
coset(0, by - 2, bz), coc, n) + &
1511 f4*v(1,
coset(0, by - 2, bz), coc, n + 1)) + &
1512 fcy*v(1,
coset(0, by - 1, bz), cocy, n + 1)
1519 v(1,
coset(1, by, bz), coc, n) = &
1520 rbp(1)*v(1,
coset(0, by, bz), coc, n) + &
1521 rpw(1)*v(1,
coset(0, by, bz), coc, n + 1) + &
1522 fcx*v(1,
coset(0, by, bz), cocx, n + 1)
1526 f3 = f2*real(bx - 1,
dp)
1529 v(1,
coset(bx, by, bz), coc, n) = &
1530 rbp(1)*v(1,
coset(bx - 1, by, bz), coc, n) + &
1531 rpw(1)*v(1,
coset(bx - 1, by, bz), coc, n + 1) + &
1532 f3*(v(1,
coset(bx - 2, by, bz), coc, n) + &
1533 f4*v(1,
coset(bx - 2, by, bz), coc, n + 1)) + &
1534 fcx*v(1,
coset(bx - 1, by, bz), cocx, n + 1)
1557 kk = k -
ncoset(lc_min - 1)
1559 DO i =
ncoset(la_min - 1) + 1,
ncoset(la_max - maxder_local)
1560 vabc(na + i, nb + j) = vabc(na + i, nb + j) + gccc(kk)*v(i, j, k, 1)
1561 int_abc(na + i, nb + j, kk) = v(i, j, k, 1)
1566 IF (
PRESENT(maxder))
THEN
1568 kk = k -
ncoset(lc_min - 1)
1571 vabc_plus(nap + i, nb + j) = vabc_plus(nap + i, nb + j) + gccc(kk)*v(i, j, k, 1)
1581 na = na +
ncoset(la_max - maxder_local)
1582 nap = nap +
ncoset(la_max)