23 #include "../base/base_uses.f90"
50 SUBROUTINE angmom(la_max, npgfa, zeta, rpgfa, la_min, &
51 lb_max, npgfb, zetb, rpgfb, rac, rbc, angab)
53 INTEGER,
INTENT(IN) :: la_max, npgfa
54 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zeta, rpgfa
55 INTEGER,
INTENT(IN) :: la_min, lb_max, npgfb
56 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: zetb, rpgfb
57 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rac, rbc
58 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(OUT) :: angab
60 INTEGER :: ax, ay, az, bx, by, bz, i, ipgf, j, &
61 jpgf, la, la_start, lb, na, nb
62 REAL(kind=
dp) :: dab, f0, f1, f2, f3, fx, fy, fz, rab2, &
64 REAL(kind=
dp),
DIMENSION(3) :: ac1, ac2, ac3, bc1, bc2, bc3, rab, rap, &
67 DIMENSION(ncoset(la_max), ncoset(lb_max)) :: s
69 DIMENSION(ncoset(la_max), ncoset(lb_max), 3) :: as
87 rab2 = rab(1)*rab(1) + rab(2)*rab(2) + rab(3)*rab(3)
108 IF (rpgfa(ipgf) + rpgfb(jpgf) < dab)
THEN
109 DO j = nb + 1, nb +
ncoset(lb_max)
110 DO i = na + 1, na +
ncoset(la_max)
111 angab(i, j, 1) = 0.0_dp
112 angab(i, j, 2) = 0.0_dp
113 angab(i, j, 3) = 0.0_dp
122 zetp = 1.0_dp/(zeta(ipgf) + zetb(jpgf))
124 f0 = (
pi*zetp)**1.5_dp
141 ac1(2) = zeta(ipgf)*zetp*rac(3)
142 ac1(3) = -zeta(ipgf)*zetp*rac(2)
144 ac2(1) = -zeta(ipgf)*zetp*rac(3)
146 ac2(3) = zeta(ipgf)*zetp*rac(1)
148 ac3(1) = zeta(ipgf)*zetp*rac(2)
149 ac3(2) = -zeta(ipgf)*zetp*rac(1)
155 s(1, 1) = f0*exp(-zeta(ipgf)*f1*rab2)
156 as(1, 1, 1) = 2._dp*zeta(ipgf)*f1*(rac(2)*rbc(3) - rac(3)*rbc(2))*s(1, 1)
157 as(1, 1, 2) = 2._dp*zeta(ipgf)*f1*(rac(3)*rbc(1) - rac(1)*rbc(3))*s(1, 1)
158 as(1, 1, 3) = 2._dp*zeta(ipgf)*f1*(rac(1)*rbc(2) - rac(2)*rbc(1))*s(1, 1)
171 s(2, 1) = rap(1)*s(1, 1)
172 s(3, 1) = rap(2)*s(1, 1)
173 s(4, 1) = rap(3)*s(1, 1)
174 as(2, 1, 1) = rap(1)*as(1, 1, 1) + bc1(1)*s(1, 1)
175 as(2, 1, 2) = rap(1)*as(1, 1, 2) + bc1(2)*s(1, 1)
176 as(2, 1, 3) = rap(1)*as(1, 1, 3) + bc1(3)*s(1, 1)
177 as(3, 1, 1) = rap(2)*as(1, 1, 1) + bc2(1)*s(1, 1)
178 as(3, 1, 2) = rap(2)*as(1, 1, 2) + bc2(2)*s(1, 1)
179 as(3, 1, 3) = rap(2)*as(1, 1, 3) + bc2(3)*s(1, 1)
180 as(4, 1, 1) = rap(3)*as(1, 1, 1) + bc3(1)*s(1, 1)
181 as(4, 1, 2) = rap(3)*as(1, 1, 2) + bc3(2)*s(1, 1)
182 as(4, 1, 3) = rap(3)*as(1, 1, 3) + bc3(3)*s(1, 1)
192 s(
coset(0, 0, la), 1) = rap(3)*s(
coset(0, 0, la - 1), 1) + &
193 f2*real(la - 1,
dp)*s(
coset(0, 0, la - 2), 1)
194 as(
coset(0, 0, la), 1, 1) = rap(3)*as(
coset(0, 0, la - 1), 1, 1) + &
195 f2*real(la - 1,
dp)*as(
coset(0, 0, la - 2), 1, 1) + &
196 bc3(1)*s(
coset(0, 0, la - 1), 1)
197 as(
coset(0, 0, la), 1, 2) = rap(3)*as(
coset(0, 0, la - 1), 1, 2) + &
198 f2*real(la - 1,
dp)*as(
coset(0, 0, la - 2), 1, 2) + &
199 bc3(2)*s(
coset(0, 0, la - 1), 1)
200 as(
coset(0, 0, la), 1, 3) = rap(3)*as(
coset(0, 0, la - 1), 1, 3) + &
201 f2*real(la - 1,
dp)*as(
coset(0, 0, la - 2), 1, 3) + &
202 bc3(3)*s(
coset(0, 0, la - 1), 1)
207 s(
coset(0, 1, az), 1) = rap(2)*s(
coset(0, 0, az), 1)
208 as(
coset(0, 1, az), 1, 1) = rap(2)*as(
coset(0, 0, az), 1, 1) + &
209 bc2(1)*s(
coset(0, 0, az), 1)
210 as(
coset(0, 1, az), 1, 2) = rap(2)*as(
coset(0, 0, az), 1, 2) + &
211 bc2(2)*s(
coset(0, 0, az), 1)
212 as(
coset(0, 1, az), 1, 3) = rap(2)*as(
coset(0, 0, az), 1, 3) + &
213 bc2(3)*s(
coset(0, 0, az), 1)
217 s(
coset(0, ay, az), 1) = rap(2)*s(
coset(0, ay - 1, az), 1) + &
218 f2*real(ay - 1,
dp)*s(
coset(0, ay - 2, az), 1)
219 as(
coset(0, ay, az), 1, 1) = rap(2)*as(
coset(0, ay - 1, az), 1, 1) + &
220 f2*real(ay - 1,
dp)*as(
coset(0, ay - 2, az), 1, 1) + &
221 bc2(1)*s(
coset(0, ay - 1, az), 1)
222 as(
coset(0, ay, az), 1, 2) = rap(2)*as(
coset(0, ay - 1, az), 1, 2) + &
223 f2*real(ay - 1,
dp)*as(
coset(0, ay - 2, az), 1, 2) + &
224 bc2(2)*s(
coset(0, ay - 1, az), 1)
225 as(
coset(0, ay, az), 1, 3) = rap(2)*as(
coset(0, ay - 1, az), 1, 3) + &
226 f2*real(ay - 1,
dp)*as(
coset(0, ay - 2, az), 1, 3) + &
227 bc2(3)*s(
coset(0, ay - 1, az), 1)
234 s(
coset(1, ay, az), 1) = rap(1)*s(
coset(0, ay, az), 1)
235 as(
coset(1, ay, az), 1, 1) = rap(1)*as(
coset(0, ay, az), 1, 1) + &
236 bc1(1)*s(
coset(0, ay, az), 1)
237 as(
coset(1, ay, az), 1, 2) = rap(1)*as(
coset(0, ay, az), 1, 2) + &
238 bc1(2)*s(
coset(0, ay, az), 1)
239 as(
coset(1, ay, az), 1, 3) = rap(1)*as(
coset(0, ay, az), 1, 3) + &
240 bc1(3)*s(
coset(0, ay, az), 1)
244 f3 = f2*real(ax - 1,
dp)
247 s(
coset(ax, ay, az), 1) = rap(1)*s(
coset(ax - 1, ay, az), 1) + &
248 f3*s(
coset(ax - 2, ay, az), 1)
249 as(
coset(ax, ay, az), 1, 1) = rap(1)*as(
coset(ax - 1, ay, az), 1, 1) + &
250 f3*as(
coset(ax - 2, ay, az), 1, 1) + &
251 bc1(1)*s(
coset(ax - 1, ay, az), 1)
252 as(
coset(ax, ay, az), 1, 2) = rap(1)*as(
coset(ax - 1, ay, az), 1, 2) + &
253 f3*as(
coset(ax - 2, ay, az), 1, 2) + &
254 bc1(2)*s(
coset(ax - 1, ay, az), 1)
255 as(
coset(ax, ay, az), 1, 3) = rap(1)*as(
coset(ax - 1, ay, az), 1, 3) + &
256 f3*as(
coset(ax - 2, ay, az), 1, 3) + &
257 bc1(3)*s(
coset(ax - 1, ay, az), 1)
278 rbp(:) = rap(:) - rab(:)
283 IF (lb_max == 1)
THEN
286 la_start = max(0, la_min - 1)
289 DO la = la_start, la_max - 1
293 s(
coset(ax, ay, az), 2) = s(
coset(ax + 1, ay, az), 1) - &
294 rab(1)*s(
coset(ax, ay, az), 1)
295 s(
coset(ax, ay, az), 3) = s(
coset(ax, ay + 1, az), 1) - &
296 rab(2)*s(
coset(ax, ay, az), 1)
297 s(
coset(ax, ay, az), 4) = s(
coset(ax, ay, az + 1), 1) - &
298 rab(3)*s(
coset(ax, ay, az), 1)
299 as(
coset(ax, ay, az), 2, 1) = as(
coset(ax + 1, ay, az), 1, 1) - &
300 rab(1)*as(
coset(ax, ay, az), 1, 1)
301 as(
coset(ax, ay, az), 3, 1) = as(
coset(ax, ay + 1, az), 1, 1) - &
302 rab(2)*as(
coset(ax, ay, az), 1, 1) &
303 - s(
coset(ax, ay, az + 1), 1) - rac(3)*s(
coset(ax, ay, az), 1)
304 as(
coset(ax, ay, az), 4, 1) = as(
coset(ax, ay, az + 1), 1, 1) - &
305 rab(3)*as(
coset(ax, ay, az), 1, 1) &
306 + s(
coset(ax, ay + 1, az), 1) + rac(2)*s(
coset(ax, ay, az), 1)
307 as(
coset(ax, ay, az), 2, 2) = as(
coset(ax + 1, ay, az), 1, 2) - &
308 rab(1)*as(
coset(ax, ay, az), 1, 2) &
309 + s(
coset(ax, ay, az + 1), 1) + rac(3)*s(
coset(ax, ay, az), 1)
310 as(
coset(ax, ay, az), 3, 2) = as(
coset(ax, ay + 1, az), 1, 2) - &
311 rab(2)*as(
coset(ax, ay, az), 1, 2)
312 as(
coset(ax, ay, az), 4, 2) = as(
coset(ax, ay, az + 1), 1, 2) - &
313 rab(3)*as(
coset(ax, ay, az), 1, 2) &
314 - s(
coset(ax + 1, ay, az), 1) - rac(1)*s(
coset(ax, ay, az), 1)
315 as(
coset(ax, ay, az), 2, 3) = as(
coset(ax + 1, ay, az), 1, 3) - &
316 rab(1)*as(
coset(ax, ay, az), 1, 3) &
317 - s(
coset(ax, ay + 1, az), 1) - rac(2)*s(
coset(ax, ay, az), 1)
318 as(
coset(ax, ay, az), 3, 3) = as(
coset(ax, ay + 1, az), 1, 3) - &
319 rab(2)*as(
coset(ax, ay, az), 1, 3) &
320 + s(
coset(ax + 1, ay, az), 1) + rac(1)*s(
coset(ax, ay, az), 1)
321 as(
coset(ax, ay, az), 4, 3) = as(
coset(ax, ay, az + 1), 1, 3) - &
322 rab(3)*as(
coset(ax, ay, az), 1, 3)
336 DO ay = 0, la_max - ax
338 az = la_max - ax - ay
341 s(
coset(ax, ay, az), 2) = rbp(1)*s(
coset(ax, ay, az), 1)
342 as(
coset(ax, ay, az), 2, 1) = rbp(1)*as(
coset(ax, ay, az), 1, 1) + &
343 ac1(1)*s(
coset(ax, ay, az), 1)
344 as(
coset(ax, ay, az), 2, 2) = rbp(1)*as(
coset(ax, ay, az), 1, 2) + &
345 ac1(2)*s(
coset(ax, ay, az), 1)
346 as(
coset(ax, ay, az), 2, 3) = rbp(1)*as(
coset(ax, ay, az), 1, 3) + &
347 ac1(3)*s(
coset(ax, ay, az), 1)
349 s(
coset(ax, ay, az), 2) = rbp(1)*s(
coset(ax, ay, az), 1) + &
350 fx*s(
coset(ax - 1, ay, az), 1)
351 as(
coset(ax, ay, az), 2, 1) = rbp(1)*as(
coset(ax, ay, az), 1, 1) + &
352 fx*as(
coset(ax - 1, ay, az), 1, 1) + &
353 ac1(1)*s(
coset(ax, ay, az), 1)
354 as(
coset(ax, ay, az), 2, 2) = rbp(1)*as(
coset(ax, ay, az), 1, 2) + &
355 fx*as(
coset(ax - 1, ay, az), 1, 2) + &
356 ac1(2)*s(
coset(ax, ay, az), 1)
357 as(
coset(ax, ay, az), 2, 3) = rbp(1)*as(
coset(ax, ay, az), 1, 3) + &
358 fx*as(
coset(ax - 1, ay, az), 1, 3) + &
359 ac1(3)*s(
coset(ax, ay, az), 1)
361 IF (az > 0) as(
coset(ax, ay, az), 2, 2) = as(
coset(ax, ay, az), 2, 2) + &
362 f2*real(az,
dp)*s(
coset(ax, ay, az - 1), 1)
363 IF (ay > 0) as(
coset(ax, ay, az), 2, 3) = as(
coset(ax, ay, az), 2, 3) - &
364 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az), 1)
366 s(
coset(ax, ay, az), 3) = rbp(2)*s(
coset(ax, ay, az), 1)
367 as(
coset(ax, ay, az), 3, 1) = rbp(2)*as(
coset(ax, ay, az), 1, 1) + &
368 ac2(1)*s(
coset(ax, ay, az), 1)
369 as(
coset(ax, ay, az), 3, 2) = rbp(2)*as(
coset(ax, ay, az), 1, 2) + &
370 ac2(2)*s(
coset(ax, ay, az), 1)
371 as(
coset(ax, ay, az), 3, 3) = rbp(2)*as(
coset(ax, ay, az), 1, 3) + &
372 ac2(3)*s(
coset(ax, ay, az), 1)
374 s(
coset(ax, ay, az), 3) = rbp(2)*s(
coset(ax, ay, az), 1) + &
375 fy*s(
coset(ax, ay - 1, az), 1)
376 as(
coset(ax, ay, az), 3, 1) = rbp(2)*as(
coset(ax, ay, az), 1, 1) + &
377 fy*as(
coset(ax, ay - 1, az), 1, 1) + &
378 ac2(1)*s(
coset(ax, ay, az), 1)
379 as(
coset(ax, ay, az), 3, 2) = rbp(2)*as(
coset(ax, ay, az), 1, 2) + &
380 fy*as(
coset(ax, ay - 1, az), 1, 2) + &
381 ac2(2)*s(
coset(ax, ay, az), 1)
382 as(
coset(ax, ay, az), 3, 3) = rbp(2)*as(
coset(ax, ay, az), 1, 3) + &
383 fy*as(
coset(ax, ay - 1, az), 1, 3) + &
384 ac2(3)*s(
coset(ax, ay, az), 1)
386 IF (az > 0) as(
coset(ax, ay, az), 3, 1) = as(
coset(ax, ay, az), 3, 1) - &
387 f2*real(az,
dp)*s(
coset(ax, ay, az - 1), 1)
388 IF (ax > 0) as(
coset(ax, ay, az), 3, 3) = as(
coset(ax, ay, az), 3, 3) + &
389 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az), 1)
391 s(
coset(ax, ay, az), 4) = rbp(3)*s(
coset(ax, ay, az), 1)
392 as(
coset(ax, ay, az), 4, 1) = rbp(3)*as(
coset(ax, ay, az), 1, 1) + &
393 ac3(1)*s(
coset(ax, ay, az), 1)
394 as(
coset(ax, ay, az), 4, 2) = rbp(3)*as(
coset(ax, ay, az), 1, 2) + &
395 ac3(2)*s(
coset(ax, ay, az), 1)
396 as(
coset(ax, ay, az), 4, 3) = rbp(3)*as(
coset(ax, ay, az), 1, 3) + &
397 ac3(3)*s(
coset(ax, ay, az), 1)
399 s(
coset(ax, ay, az), 4) = rbp(3)*s(
coset(ax, ay, az), 1) + &
400 fz*s(
coset(ax, ay, az - 1), 1)
401 as(
coset(ax, ay, az), 4, 1) = rbp(3)*as(
coset(ax, ay, az), 1, 1) + &
402 fz*as(
coset(ax, ay, az - 1), 1, 1) + &
403 ac3(1)*s(
coset(ax, ay, az), 1)
404 as(
coset(ax, ay, az), 4, 2) = rbp(3)*as(
coset(ax, ay, az), 1, 2) + &
405 fz*as(
coset(ax, ay, az - 1), 1, 2) + &
406 ac3(2)*s(
coset(ax, ay, az), 1)
407 as(
coset(ax, ay, az), 4, 3) = rbp(3)*as(
coset(ax, ay, az), 1, 3) + &
408 fz*as(
coset(ax, ay, az - 1), 1, 3) + &
409 ac3(3)*s(
coset(ax, ay, az), 1)
411 IF (ay > 0) as(
coset(ax, ay, az), 4, 1) = as(
coset(ax, ay, az), 4, 1) + &
412 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az), 1)
413 IF (ax > 0) as(
coset(ax, ay, az), 4, 2) = as(
coset(ax, ay, az), 4, 2) - &
414 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az), 1)
427 IF (lb == lb_max)
THEN
430 la_start = max(0, la_min - 1)
433 DO la = la_start, la_max - 1
441 s(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1)) - &
442 rab(3)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
444 as(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1), 1) - &
445 rab(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1) &
446 + s(
coset(ax, ay + 1, az),
coset(0, 0, lb - 1)) &
447 + rac(2)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
449 as(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1), 2) - &
450 rab(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 2) &
451 - s(
coset(ax + 1, ay, az),
coset(0, 0, lb - 1)) &
452 - rac(1)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
454 as(
coset(ax, ay, az + 1),
coset(0, 0, lb - 1), 3) - &
455 rab(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 3)
462 s(
coset(ax, ay + 1, az),
coset(0, by - 1, bz)) - &
463 rab(2)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
464 as(
coset(ax, ay, az),
coset(0, by, bz), 1) = &
465 as(
coset(ax, ay + 1, az),
coset(0, by - 1, bz), 1) - &
466 rab(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 1) &
467 - s(
coset(ax, ay, az + 1),
coset(0, by - 1, bz)) &
468 - rac(3)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
469 as(
coset(ax, ay, az),
coset(0, by, bz), 2) = &
470 as(
coset(ax, ay + 1, az),
coset(0, by - 1, bz), 2) - &
471 rab(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 2)
472 as(
coset(ax, ay, az),
coset(0, by, bz), 3) = &
473 as(
coset(ax, ay + 1, az),
coset(0, by - 1, bz), 3) - &
474 rab(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 3) &
475 + s(
coset(ax + 1, ay, az),
coset(0, by - 1, bz)) &
476 + rac(1)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
485 s(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz)) - &
486 rab(1)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
487 as(
coset(ax, ay, az),
coset(bx, by, bz), 1) = &
488 as(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz), 1) - &
489 rab(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1)
490 as(
coset(ax, ay, az),
coset(bx, by, bz), 2) = &
491 as(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz), 2) - &
492 rab(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 2) &
493 + s(
coset(ax, ay, az + 1),
coset(bx - 1, by, bz)) &
494 + rac(3)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
495 as(
coset(ax, ay, az),
coset(bx, by, bz), 3) = &
496 as(
coset(ax + 1, ay, az),
coset(bx - 1, by, bz), 3) - &
497 rab(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 3) &
498 - s(
coset(ax, ay + 1, az),
coset(bx - 1, by, bz)) &
499 - rac(2)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
518 DO ay = 0, la_max - ax
520 az = la_max - ax - ay
525 f3 = f2*real(lb - 1,
dp)
529 rbp(3)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1)) + &
532 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1) + &
533 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1) + &
534 ac3(1)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
536 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 2) + &
537 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 2) + &
538 ac3(2)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
540 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 3) + &
541 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 3) + &
542 ac3(3)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
545 rbp(3)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1)) + &
546 fz*s(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1)) + &
549 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 1) + &
550 fz*as(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 1) + &
551 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 1) + &
552 ac3(1)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
554 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 2) + &
555 fz*as(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 2) + &
556 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 2) + &
557 ac3(2)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
559 rbp(3)*as(
coset(ax, ay, az),
coset(0, 0, lb - 1), 3) + &
560 fz*as(
coset(ax, ay, az - 1),
coset(0, 0, lb - 1), 3) + &
561 f3*as(
coset(ax, ay, az),
coset(0, 0, lb - 2), 3) + &
562 ac3(3)*s(
coset(ax, ay, az),
coset(0, 0, lb - 1))
564 IF (ay > 0) as(
coset(ax, ay, az),
coset(0, 0, lb), 1) = &
566 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az),
coset(0, 0, lb - 1))
567 IF (ax > 0) as(
coset(ax, ay, az),
coset(0, 0, lb), 2) = &
569 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az),
coset(0, 0, lb - 1))
578 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 1) + &
581 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 2) + &
584 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 3) + &
586 IF (az > 0) as(
coset(ax, ay, az),
coset(0, 1, bz), 1) = &
588 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, 0, bz))
589 IF (ax > 0) as(
coset(ax, ay, az),
coset(0, 1, bz), 3) = &
591 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az),
coset(0, 0, bz))
594 f3 = f2*real(by - 1,
dp)
596 rbp(2)*s(
coset(ax, ay, az),
coset(0, by - 1, bz)) + &
598 as(
coset(ax, ay, az),
coset(0, by, bz), 1) = &
599 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 1) + &
600 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 1) + &
601 ac2(1)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
602 as(
coset(ax, ay, az),
coset(0, by, bz), 2) = &
603 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 2) + &
604 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 2) + &
605 ac2(2)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
606 as(
coset(ax, ay, az),
coset(0, by, bz), 3) = &
607 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 3) + &
608 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 3) + &
609 ac2(3)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
610 IF (az > 0) as(
coset(ax, ay, az),
coset(0, by, bz), 1) = &
611 as(
coset(ax, ay, az),
coset(0, by, bz), 1) - &
612 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, by - 1, bz))
613 IF (ax > 0) as(
coset(ax, ay, az),
coset(0, by, bz), 3) = &
614 as(
coset(ax, ay, az),
coset(0, by, bz), 3) + &
615 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az),
coset(0, by - 1, bz))
620 rbp(2)*s(
coset(ax, ay, az),
coset(0, 0, bz)) + &
623 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 1) + &
624 fy*as(
coset(ax, ay - 1, az),
coset(0, 0, bz), 1) + &
627 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 2) + &
628 fy*as(
coset(ax, ay - 1, az),
coset(0, 0, bz), 2) + &
631 rbp(2)*as(
coset(ax, ay, az),
coset(0, 0, bz), 3) + &
632 fy*as(
coset(ax, ay - 1, az),
coset(0, 0, bz), 3) + &
634 IF (az > 0) as(
coset(ax, ay, az),
coset(0, 1, bz), 1) = &
636 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, 0, bz))
637 IF (ax > 0) as(
coset(ax, ay, az),
coset(0, 1, bz), 3) = &
639 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az),
coset(0, 0, bz))
642 f3 = f2*real(by - 1,
dp)
644 rbp(2)*s(
coset(ax, ay, az),
coset(0, by - 1, bz)) + &
645 fy*s(
coset(ax, ay - 1, az),
coset(0, by - 1, bz)) + &
647 as(
coset(ax, ay, az),
coset(0, by, bz), 1) = &
648 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 1) + &
649 fy*as(
coset(ax, ay - 1, az),
coset(0, by - 1, bz), 1) + &
650 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 1) + &
651 ac2(1)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
652 as(
coset(ax, ay, az),
coset(0, by, bz), 2) = &
653 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 2) + &
654 fy*as(
coset(ax, ay - 1, az),
coset(0, by - 1, bz), 2) + &
655 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 2) + &
656 ac2(2)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
657 as(
coset(ax, ay, az),
coset(0, by, bz), 3) = &
658 rbp(2)*as(
coset(ax, ay, az),
coset(0, by - 1, bz), 3) + &
659 fy*as(
coset(ax, ay - 1, az),
coset(0, by - 1, bz), 3) + &
660 f3*as(
coset(ax, ay, az),
coset(0, by - 2, bz), 3) + &
661 ac2(3)*s(
coset(ax, ay, az),
coset(0, by - 1, bz))
662 IF (az > 0) as(
coset(ax, ay, az),
coset(0, by, bz), 1) = &
663 as(
coset(ax, ay, az),
coset(0, by, bz), 1) - &
664 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, by - 1, bz))
665 IF (ax > 0) as(
coset(ax, ay, az),
coset(0, by, bz), 3) = &
666 as(
coset(ax, ay, az),
coset(0, by, bz), 3) + &
667 f2*real(ax,
dp)*s(
coset(ax - 1, ay, az),
coset(0, by - 1, bz))
678 as(
coset(ax, ay, az),
coset(1, by, bz), 1) = &
679 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 1) + &
681 as(
coset(ax, ay, az),
coset(1, by, bz), 2) = &
682 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 2) + &
684 as(
coset(ax, ay, az),
coset(1, by, bz), 3) = &
685 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 3) + &
687 IF (az > 0) as(
coset(ax, ay, az),
coset(1, by, bz), 2) = &
688 as(
coset(ax, ay, az),
coset(1, by, bz), 2) + &
689 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, by, bz))
690 IF (ay > 0) as(
coset(ax, ay, az),
coset(1, by, bz), 3) = &
691 as(
coset(ax, ay, az),
coset(1, by, bz), 3) - &
692 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az),
coset(0, by, bz))
695 f3 = f2*real(bx - 1,
dp)
699 rbp(1)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz)) + &
700 f3*s(
coset(ax, ay, az),
coset(bx - 2, by, bz))
701 as(
coset(ax, ay, az),
coset(bx, by, bz), 1) = &
702 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1) + &
703 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1) + &
704 ac1(1)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
705 as(
coset(ax, ay, az),
coset(bx, by, bz), 2) = &
706 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 2) + &
707 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 2) + &
708 ac1(2)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
709 as(
coset(ax, ay, az),
coset(bx, by, bz), 3) = &
710 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 3) + &
711 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 3) + &
712 ac1(3)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
713 IF (az > 0) as(
coset(ax, ay, az),
coset(bx, by, bz), 2) = &
714 as(
coset(ax, ay, az),
coset(bx, by, bz), 2) + &
715 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(bx - 1, by, bz))
716 IF (ay > 0) as(
coset(ax, ay, az),
coset(bx, by, bz), 3) = &
717 as(
coset(ax, ay, az),
coset(bx, by, bz), 3) - &
718 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az),
coset(bx - 1, by, bz))
725 rbp(1)*s(
coset(ax, ay, az),
coset(0, by, bz)) + &
727 as(
coset(ax, ay, az),
coset(1, by, bz), 1) = &
728 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 1) + &
729 fx*as(
coset(ax - 1, ay, az),
coset(0, by, bz), 1) + &
731 as(
coset(ax, ay, az),
coset(1, by, bz), 2) = &
732 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 2) + &
733 fx*as(
coset(ax - 1, ay, az),
coset(0, by, bz), 2) + &
735 as(
coset(ax, ay, az),
coset(1, by, bz), 3) = &
736 rbp(1)*as(
coset(ax, ay, az),
coset(0, by, bz), 3) + &
737 fx*as(
coset(ax - 1, ay, az),
coset(0, by, bz), 3) + &
739 IF (az > 0) as(
coset(ax, ay, az),
coset(1, by, bz), 2) = &
740 as(
coset(ax, ay, az),
coset(1, by, bz), 2) + &
741 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(0, by, bz))
742 IF (ay > 0) as(
coset(ax, ay, az),
coset(1, by, bz), 3) = &
743 as(
coset(ax, ay, az),
coset(1, by, bz), 3) - &
744 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az),
coset(0, by, bz))
747 f3 = f2*real(bx - 1,
dp)
751 rbp(1)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz)) + &
752 fx*s(
coset(ax - 1, ay, az),
coset(bx - 1, by, bz)) + &
753 f3*s(
coset(ax, ay, az),
coset(bx - 2, by, bz))
754 as(
coset(ax, ay, az),
coset(bx, by, bz), 1) = &
755 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 1) + &
756 fx*as(
coset(ax - 1, ay, az),
coset(bx - 1, by, bz), 1) + &
757 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 1) + &
758 ac1(1)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
759 as(
coset(ax, ay, az),
coset(bx, by, bz), 2) = &
760 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 2) + &
761 fx*as(
coset(ax - 1, ay, az),
coset(bx - 1, by, bz), 2) + &
762 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 2) + &
763 ac1(2)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
764 as(
coset(ax, ay, az),
coset(bx, by, bz), 3) = &
765 rbp(1)*as(
coset(ax, ay, az),
coset(bx - 1, by, bz), 3) + &
766 fx*as(
coset(ax - 1, ay, az),
coset(bx - 1, by, bz), 3) + &
767 f3*as(
coset(ax, ay, az),
coset(bx - 2, by, bz), 3) + &
768 ac1(3)*s(
coset(ax, ay, az),
coset(bx - 1, by, bz))
769 IF (az > 0) as(
coset(ax, ay, az),
coset(bx, by, bz), 2) = &
770 as(
coset(ax, ay, az),
coset(bx, by, bz), 2) + &
771 f2*real(az,
dp)*s(
coset(ax, ay, az - 1),
coset(bx - 1, by, bz))
772 IF (ay > 0) as(
coset(ax, ay, az),
coset(bx, by, bz), 3) = &
773 as(
coset(ax, ay, az),
coset(bx, by, bz), 3) - &
774 f2*real(ay,
dp)*s(
coset(ax, ay - 1, az),
coset(bx - 1, by, bz))
792 rbp(:) = (f1 - 1.0_dp)*rab(:)
797 s(1, 2) = rbp(1)*s(1, 1)
798 s(1, 3) = rbp(2)*s(1, 1)
799 s(1, 4) = rbp(3)*s(1, 1)
800 as(1, 2, 1) = rbp(1)*as(1, 1, 1) + ac1(1)*s(1, 1)
801 as(1, 2, 2) = rbp(1)*as(1, 1, 2) + ac1(2)*s(1, 1)
802 as(1, 2, 3) = rbp(1)*as(1, 1, 3) + ac1(3)*s(1, 1)
803 as(1, 3, 1) = rbp(2)*as(1, 1, 1) + ac2(1)*s(1, 1)
804 as(1, 3, 2) = rbp(2)*as(1, 1, 2) + ac2(2)*s(1, 1)
805 as(1, 3, 3) = rbp(2)*as(1, 1, 3) + ac2(3)*s(1, 1)
806 as(1, 4, 1) = rbp(3)*as(1, 1, 1) + ac3(1)*s(1, 1)
807 as(1, 4, 2) = rbp(3)*as(1, 1, 2) + ac3(2)*s(1, 1)
808 as(1, 4, 3) = rbp(3)*as(1, 1, 3) + ac3(3)*s(1, 1)
818 s(1,
coset(0, 0, lb)) = rbp(3)*s(1,
coset(0, 0, lb - 1)) + &
819 f2*real(lb - 1,
dp)*s(1,
coset(0, 0, lb - 2))
820 as(1,
coset(0, 0, lb), 1) = rbp(3)*as(1,
coset(0, 0, lb - 1), 1) + &
821 f2*real(lb - 1,
dp)*as(1,
coset(0, 0, lb - 2), 1) + &
822 ac3(1)*s(1,
coset(0, 0, lb - 1))
823 as(1,
coset(0, 0, lb), 2) = rbp(3)*as(1,
coset(0, 0, lb - 1), 2) + &
824 f2*real(lb - 1,
dp)*as(1,
coset(0, 0, lb - 2), 2) + &
825 ac3(2)*s(1,
coset(0, 0, lb - 1))
826 as(1,
coset(0, 0, lb), 3) = rbp(3)*as(1,
coset(0, 0, lb - 1), 3) + &
827 f2*real(lb - 1,
dp)*as(1,
coset(0, 0, lb - 2), 3) + &
828 ac3(3)*s(1,
coset(0, 0, lb - 1))
833 s(1,
coset(0, 1, bz)) = rbp(2)*s(1,
coset(0, 0, bz))
834 as(1,
coset(0, 1, bz), 1) = rbp(2)*as(1,
coset(0, 0, bz), 1) + &
835 ac2(1)*s(1,
coset(0, 0, bz))
836 as(1,
coset(0, 1, bz), 2) = rbp(2)*as(1,
coset(0, 0, bz), 2) + &
837 ac2(2)*s(1,
coset(0, 0, bz))
838 as(1,
coset(0, 1, bz), 3) = rbp(2)*as(1,
coset(0, 0, bz), 3) + &
839 ac2(3)*s(1,
coset(0, 0, bz))
843 s(1,
coset(0, by, bz)) = rbp(2)*s(1,
coset(0, by - 1, bz)) + &
844 f2*real(by - 1,
dp)*s(1,
coset(0, by - 2, bz))
845 as(1,
coset(0, by, bz), 1) = rbp(2)*as(1,
coset(0, by - 1, bz), 1) + &
846 f2*real(by - 1,
dp)*as(1,
coset(0, by - 2, bz), 1) + &
847 ac2(1)*s(1,
coset(0, by - 1, bz))
848 as(1,
coset(0, by, bz), 2) = rbp(2)*as(1,
coset(0, by - 1, bz), 2) + &
849 f2*real(by - 1,
dp)*as(1,
coset(0, by - 2, bz), 2) + &
850 ac2(2)*s(1,
coset(0, by - 1, bz))
851 as(1,
coset(0, by, bz), 3) = rbp(2)*as(1,
coset(0, by - 1, bz), 3) + &
852 f2*real(by - 1,
dp)*as(1,
coset(0, by - 2, bz), 3) + &
853 ac2(3)*s(1,
coset(0, by - 1, bz))
860 s(1,
coset(1, by, bz)) = rbp(1)*s(1,
coset(0, by, bz))
861 as(1,
coset(1, by, bz), 1) = rbp(1)*as(1,
coset(0, by, bz), 1) + &
862 ac1(1)*s(1,
coset(0, by, bz))
863 as(1,
coset(1, by, bz), 2) = rbp(1)*as(1,
coset(0, by, bz), 2) + &
864 ac1(2)*s(1,
coset(0, by, bz))
865 as(1,
coset(1, by, bz), 3) = rbp(1)*as(1,
coset(0, by, bz), 3) + &
866 ac1(3)*s(1,
coset(0, by, bz))
870 f3 = f2*real(bx - 1,
dp)
873 s(1,
coset(bx, by, bz)) = rbp(1)*s(1,
coset(bx - 1, by, bz)) + &
874 f3*s(1,
coset(bx - 2, by, bz))
875 as(1,
coset(bx, by, bz), 1) = rbp(1)*as(1,
coset(bx - 1, by, bz), 1) + &
876 f3*as(1,
coset(bx - 2, by, bz), 1) + &
877 ac1(1)*s(1,
coset(bx - 1, by, bz))
878 as(1,
coset(bx, by, bz), 2) = rbp(1)*as(1,
coset(bx - 1, by, bz), 2) + &
879 f3*as(1,
coset(bx - 2, by, bz), 2) + &
880 ac1(2)*s(1,
coset(bx - 1, by, bz))
881 as(1,
coset(bx, by, bz), 3) = rbp(1)*as(1,
coset(bx - 1, by, bz), 3) + &
882 f3*as(1,
coset(bx - 2, by, bz), 3) + &
883 ac1(3)*s(1,
coset(bx - 1, by, bz))
895 angab(na + i, nb + j, 1) = as(i, j, 1)
896 angab(na + i, nb + j, 2) = as(i, j, 2)
897 angab(na + i, nb + j, 3) = as(i, j, 3)
Calculation of the angular momentum integrals over Cartesian Gaussian-type functions.
subroutine, public angmom(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, rac, rbc, angab)
...
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
integer, dimension(:, :, :), allocatable, public coset