52 SUBROUTINE angmom(la_max, npgfa, zeta, rpgfa, la_min, &
53 lb_max, npgfb, zetb, rpgfb, rac, rbc, angab)
54 INTEGER,
INTENT(IN) :: la_max, npgfa
55 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta, rpgfa
56 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
57 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb, rpgfb
58 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rac, rbc
59 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: angab
61 INTEGER :: avec(3), bvec(3), coa, cob, ia, ib, &
62 idir, ipgf, jdir, jpgf, kdir, ldrr, &
64 REAL(kind=
dp) :: a, b, dab, f0, rab(3), rab2, rap(3), &
66 REAL(kind=
dp),
ALLOCATABLE :: drr(:, :, :), position(:, :, :), &
73 ldrr = max(la_max, lb_max) + 2
74 ALLOCATE (rr(0:ldrr - 1, 0:ldrr - 1, 3), position(0:ldrr - 1, 0:ldrr - 1, 3), &
75 drr(0:ldrr - 1, 0:ldrr - 1, 3))
78 ma = (ipgf - 1)*
ncoset(la_max)
80 IF (rpgfa(ipgf) + rpgfb(jpgf) < dab) cycle
81 mb = (jpgf - 1)*
ncoset(lb_max)
87 f0 = (
pi/zet)**1.5_dp*exp(-a*b*rab2/zet)
88 CALL os_rr_ovlp(rap, la_max + 1, rbp, lb_max + 1, zet, ldrr, rr)
90 CALL apply_cartesian_1d(rr, drr, la_max, lb_max, .true., .true., b, [0.0_dp, 0.0_dp, 0.0_dp])
101 jdir = mod(idir, 3) + 1
102 kdir = mod(idir + 1, 3) + 1
103 angab(ia, ib, idir) = f0*rr(avec(idir), bvec(idir), idir)* &
104 (position(avec(kdir), bvec(kdir), kdir)*drr(avec(jdir), bvec(jdir), jdir) - &
105 position(avec(jdir), bvec(jdir), jdir)*drr(avec(kdir), bvec(kdir), kdir))
subroutine, public angmom(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, rac, rbc, angab)
Real angular-momentum kernel (r-C) cross grad, equal to i times L.