13 #include "../base/base_uses.f90"
16 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'ai_os_rr'
38 SUBROUTINE os_rr_ovlp(rap, la_max, rbp, lb_max, zet, ldrr, rr)
39 REAL(
dp),
DIMENSION(3),
INTENT(IN) :: rap
40 INTEGER,
INTENT(IN) :: la_max
41 REAL(
dp),
DIMENSION(3),
INTENT(IN) :: rbp
42 INTEGER,
INTENT(IN) :: lb_max
43 REAL(
dp),
INTENT(IN) :: zet
44 INTEGER,
INTENT(IN) :: ldrr
45 REAL(
dp),
DIMENSION(0:ldrr-1, 0:ldrr-1, 3) :: rr
47 INTEGER :: la, lam1, lap1, lb, lbm1, lbp1
57 IF (la_max .GT. 0)
THEN
65 rr(lap1, 0, 1) = real(la,
dp)*g*rr(lam1, 0, 1) + rap(1)*rr(la, 0, 1)
66 rr(lap1, 0, 2) = real(la,
dp)*g*rr(lam1, 0, 2) + rap(2)*rr(la, 0, 2)
67 rr(lap1, 0, 3) = real(la,
dp)*g*rr(lam1, 0, 3) + rap(3)*rr(la, 0, 3)
73 IF (lb_max .GT. 0)
THEN
80 rr(la, 1, 1) = real(la,
dp)*g*rr(lam1, 0, 1) + rbp(1)*rr(la, 0, 1)
81 rr(la, 1, 2) = real(la,
dp)*g*rr(lam1, 0, 2) + rbp(2)*rr(la, 0, 2)
82 rr(la, 1, 3) = real(la,
dp)*g*rr(lam1, 0, 3) + rbp(3)*rr(la, 0, 3)
88 rr(0, lbp1, 1) = real(lb,
dp)*g*rr(0, lbm1, 1) + rbp(1)*rr(0, lb, 1)
89 rr(0, lbp1, 2) = real(lb,
dp)*g*rr(0, lbm1, 2) + rbp(2)*rr(0, lb, 2)
90 rr(0, lbp1, 3) = real(lb,
dp)*g*rr(0, lbm1, 3) + rbp(3)*rr(0, lb, 3)
93 rr(la, lbp1, 1) = g*(real(la,
dp)*rr(lam1, lb, 1) + real(lb,
dp)*rr(la, lbm1, 1)) + rbp(1)*rr(la, lb, 1)
94 rr(la, lbp1, 2) = g*(real(la,
dp)*rr(lam1, lb, 2) + real(lb,
dp)*rr(la, lbm1, 2)) + rbp(2)*rr(la, lb, 2)
95 rr(la, lbp1, 3) = g*(real(la,
dp)*rr(lam1, lb, 3) + real(lb,
dp)*rr(la, lbm1, 3)) + rbp(3)*rr(la, lb, 3)
117 SUBROUTINE os_rr_coul(rap, la_max, rbp, lb_max, rcp, zet, ldrr1, ldrr2, rr)
118 REAL(
dp),
DIMENSION(3),
INTENT(IN) :: rap
119 INTEGER,
INTENT(IN) :: la_max
120 REAL(
dp),
DIMENSION(3),
INTENT(IN) :: rbp
121 INTEGER,
INTENT(IN) :: lb_max
122 REAL(
dp),
DIMENSION(3),
INTENT(IN) :: rcp
123 REAL(
dp),
INTENT(IN) :: zet
124 INTEGER,
INTENT(IN) :: ldrr1, ldrr2
125 REAL(
dp),
DIMENSION(0:ldrr1-1, ldrr2, *), &
128 INTEGER :: ax, ay, az, bx, by, bz, coa, coa1x, &
129 coa1y, coa1z, coa2x, coa2y, coa2z, &
130 cob, cob1x, cob1y, cob1z, cob2x, &
131 cob2y, cob2z, la, lb, m, mmax
132 REAL(
dp) :: g, rcp2, t
134 mmax = la_max + lb_max
139 rcp2 = rcp(1)**2 + rcp(2)**2 + rcp(3)**2
141 CALL fgamma(mmax, t, rr(0:mmax, 1, 1))
149 coa =
coset(ax, ay, az)
150 coa1x =
coset(max(ax - 1, 0), ay, az)
151 coa1y =
coset(ax, max(ay - 1, 0), az)
152 coa1z =
coset(ax, ay, max(az - 1, 0))
153 coa2x =
coset(max(ax - 2, 0), ay, az)
154 coa2y =
coset(ax, max(ay - 2, 0), az)
155 coa2z =
coset(ax, ay, max(az - 2, 0))
158 rr(m, coa, 1) = rap(3)*rr(m, coa1z, 1) - rcp(3)*rr(m + 1, coa1z, 1)
162 rr(m, coa, 1) = rr(m, coa, 1) + g*real(az - 1,
dp)*(rr(m, coa2z, 1) - rr(m + 1, coa2z, 1))
165 ELSEIF (ay .GT. 0)
THEN
167 rr(m, coa, 1) = rap(2)*rr(m, coa1y, 1) - rcp(2)*rr(m + 1, coa1y, 1)
171 rr(m, coa, 1) = rr(m, coa, 1) + g*real(ay - 1,
dp)*(rr(m, coa2y, 1) - rr(m + 1, coa2y, 1))
174 ELSEIF (ax .GT. 0)
THEN
176 rr(m, coa, 1) = rap(1)*rr(m, coa1x, 1) - rcp(1)*rr(m + 1, coa1x, 1)
180 rr(m, coa, 1) = rr(m, coa, 1) + g*real(ax - 1,
dp)*(rr(m, coa2x, 1) - rr(m + 1, coa2x, 1))
196 coa =
coset(ax, ay, az)
197 coa1x =
coset(max(ax - 1, 0), ay, az)
198 coa1y =
coset(ax, max(ay - 1, 0), az)
199 coa1z =
coset(ax, ay, max(az - 1, 0))
200 coa2x =
coset(max(ax - 2, 0), ay, az)
201 coa2y =
coset(ax, max(ay - 2, 0), az)
202 coa2z =
coset(ax, ay, max(az - 2, 0))
207 cob =
coset(bx, by, bz)
208 cob1x =
coset(max(bx - 1, 0), by, bz)
209 cob1y =
coset(bx, max(by - 1, 0), bz)
210 cob1z =
coset(bx, by, max(bz - 1, 0))
211 cob2x =
coset(max(bx - 2, 0), by, bz)
212 cob2y =
coset(bx, max(by - 2, 0), bz)
213 cob2z =
coset(bx, by, max(bz - 2, 0))
215 DO m = 0, mmax - la - lb
216 rr(m, coa, cob) = rbp(3)*rr(m, coa, cob1z) - rcp(3)*rr(m + 1, coa, cob1z)
219 DO m = 0, mmax - la - lb
220 rr(m, coa, cob) = rr(m, coa, cob) + g*real(bz - 1,
dp)*(rr(m, coa, cob2z) - rr(m + 1, coa, cob2z))
224 DO m = 0, mmax - la - lb
225 rr(m, coa, cob) = rr(m, coa, cob) + g*real(az,
dp)*(rr(m, coa1z, cob1z) - rr(m + 1, coa1z, cob1z))
228 ELSEIF (by .GT. 0)
THEN
229 DO m = 0, mmax - la - lb
230 rr(m, coa, cob) = rbp(2)*rr(m, coa, cob1y) - rcp(2)*rr(m + 1, coa, cob1y)
233 DO m = 0, mmax - la - lb
234 rr(m, coa, cob) = rr(m, coa, cob) + g*real(by - 1,
dp)*(rr(m, coa, cob2y) - rr(m + 1, coa, cob2y))
238 DO m = 0, mmax - la - lb
239 rr(m, coa, cob) = rr(m, coa, cob) + g*real(ay,
dp)*(rr(m, coa1y, cob1y) - rr(m + 1, coa1y, cob1y))
242 ELSEIF (bx .GT. 0)
THEN
243 DO m = 0, mmax - la - lb
244 rr(m, coa, cob) = rbp(1)*rr(m, coa, cob1x) - rcp(1)*rr(m + 1, coa, cob1x)
247 DO m = 0, mmax - la - lb
248 rr(m, coa, cob) = rr(m, coa, cob) + g*real(bx - 1,
dp)*(rr(m, coa, cob2x) - rr(m + 1, coa, cob2x))
252 DO m = 0, mmax - la - lb
253 rr(m, coa, cob) = rr(m, coa, cob) + g*real(ax,
dp)*(rr(m, coa1x, cob1x) - rr(m + 1, coa1x, cob1x))
subroutine, public os_rr_ovlp(rap, la_max, rbp, lb_max, zet, ldrr, rr)
Calculation of the basic Obara-Saika recurrence relation.
subroutine, public os_rr_coul(rap, la_max, rbp, lb_max, rcp, zet, ldrr1, ldrr2, rr)
Calculation of the Obara-Saika recurrence relation for 1/r_C.
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussia...
subroutine, public fgamma_0(nmax, t, f)
Calculation of the incomplete Gamma function F(t) for multicenter integrals over Gaussian functions....
Defines the basic variable types.
integer, parameter, public dp
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:, :, :), allocatable, public coset