212 INTEGER,
DIMENSION(:),
POINTER :: lamax
213 INTEGER,
INTENT(IN) :: lbmax, lmax
214 REAL(kind=
dp),
DIMENSION(0:lmax, -2*lmax:2*lmax), &
216 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(INOUT) :: waux_mat
218 INTEGER :: j, k, la, labmin, laj, lb, lbj, ma, &
219 ma_m, ma_p, mb, mb_m, mb_p, nla, nlb
220 REAL(kind=
dp) :: a_jk, a_lama, a_lbmb, alm_fac, delta_k, prefac, rca_m, rca_p, rcb_m, rcb_p, &
221 rsa_m, rsa_p, rsb_m, rsb_p, sign_fac, wa(4), wb(4), wmat(4)
222 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: a
228 ALLOCATE (a(0:lmax, 0:lmax))
229 CALL get_alm(lmax, a)
238 IF (
modulo(lb, 2) /= 0) a_lbmb = -a_lbmb
241 alm_fac = a_lama*a_lbmb
245 prefac = alm_fac*real(2**(la + lb - j),
dp)*
dfac(2*j - 1)
251 IF (laj < abs(ma_m) .AND. laj < abs(ma_p)) cycle
254 IF (lbj < abs(mb_m) .AND. lbj < abs(mb_p)) cycle
255 IF (k /= 0) delta_k = 1.0_dp
256 a_jk =
fac(j + k)*
fac(j - k)
257 IF (k /= 0) a_jk = 2.0_dp*a_jk
258 IF (
modulo(k, 2) /= 0)
THEN
263 rca_m = rc(laj, ma_m)
264 rsa_m = rs(laj, ma_m)
265 rca_p = rc(laj, ma_p)
266 rsa_p = rs(laj, ma_p)
267 rcb_m = rc(lbj, mb_m)
268 rsb_m = rs(lbj, mb_m)
269 rcb_p = rc(lbj, mb_p)
270 rsb_p = rs(lbj, mb_p)
271 wa(1) = delta_k*(rca_m + sign_fac*rca_p)
272 wb(1) = delta_k*(rcb_m + sign_fac*rcb_p)
273 wa(2) = -rsa_m + sign_fac*rsa_p
274 wb(2) = -rsb_m + sign_fac*rsb_p
275 wmat(1) = wmat(1) + prefac/a_jk*(wa(1)*wb(1) + wa(2)*wb(2))
277 wb(3) = delta_k*(rsb_m + sign_fac*rsb_p)
278 wb(4) = rcb_m - sign_fac*rcb_p
279 wmat(2) = wmat(2) + prefac/a_jk*(wa(1)*wb(3) + wa(2)*wb(4))
282 wa(3) = delta_k*(rsa_m + sign_fac*rsa_p)
283 wa(4) = rca_m - sign_fac*rca_p
284 wmat(3) = wmat(3) + prefac/a_jk*(wa(3)*wb(1) + wa(4)*wb(2))
286 IF (ma > 0 .AND. mb > 0)
THEN
287 wmat(4) = wmat(4) + prefac/a_jk*(wa(3)*wb(3) + wa(4)*wb(4))
290 waux_mat(j + 1, nla + la + 1 + ma, nlb + lb + 1 + mb) = wmat(1)
291 IF (mb > 0) waux_mat(j + 1, nla + la + 1 + ma, nlb + lb + 1 - mb) = wmat(2)
292 IF (ma > 0) waux_mat(j + 1, nla + la + 1 - ma, nlb + lb + 1 + mb) = wmat(3)
293 IF (ma > 0 .AND. mb > 0) waux_mat(j + 1, nla + la + 1 - ma, nlb + lb + 1 - mb) = wmat(4)
315 INTEGER,
DIMENSION(:),
POINTER :: lamax
316 INTEGER,
INTENT(IN) :: lbmax
317 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(INOUT) :: waux_mat
318 REAL(kind=
dp),
DIMENSION(:, :, :, :), &
319 INTENT(INOUT) :: dwaux_mat
321 INTEGER :: ima, imam, imb, imbm, ipa, ipam, ipb, &
322 ipbm, j, jmax, la, labm, labmin, lamb, &
323 lb, lmax, ma, mb, nla, nlam, nlb, nlbm
324 REAL(kind=
dp) :: daa, daa_m, daa_p, dab, dab_m, dab_p
325 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: da, da_m, da_p, wam, wamm, wamp, wbm, &
328 jmax = min(maxval(lamax), lbmax)
329 ALLOCATE (wam(0:jmax, 4), wamm(0:jmax, 4), wamp(0:jmax, 4))
330 ALLOCATE (wbm(0:jmax, 4), wbmm(0:jmax, 4), wbmp(0:jmax, 4))
335 lmax = max(maxval(lamax), lbmax)
336 ALLOCATE (da_p(0:lmax, 0:lmax), da_m(0:lmax, 0:lmax), da(0:lmax, 0:lmax))
337 CALL get_da_prefactors(lmax, da_p, da_m, da)
342 IF (lb > 0) nlbm =
nsoset(lb - 2)
346 IF (la > 0) nlam =
nsoset(la - 2)
348 lamb = min(la - 1, lb)
349 labm = min(la, lb - 1)
354 ipb = nlb + lb + mb + 1
355 imb = nlb + lb - mb + 1
356 ipbm = nlbm + lb + mb
357 imbm = nlbm + lb - mb
362 ipa = nla + la + ma + 1
363 ima = nla + la - ma + 1
364 ipam = nlam + la + ma
365 imam = nlam + la - ma
370 IF (ma <= la - 1)
THEN
371 wam(0:lamb, 1) = waux_mat(1:lamb + 1, ipam, ipb)
372 IF (mb > 0) wam(0:lamb, 2) = waux_mat(1:lamb + 1, ipam, imb)
373 IF (ma > 0) wam(0:lamb, 3) = waux_mat(1:lamb + 1, imam, ipb)
374 IF (ma > 0 .AND. mb > 0) wam(0:lamb, 4) = waux_mat(1:lamb + 1, imam, imb)
377 IF (ma - 1 >= 0)
THEN
378 wamm(0:lamb, 1) = waux_mat(1:lamb + 1, ipam - 1, ipb)
379 IF (mb > 0) wamm(0:lamb, 2) = waux_mat(1:lamb + 1, ipam - 1, imb)
381 IF (ma - 1 > 0) wamm(0:lamb, 3) = waux_mat(1:lamb + 1, imam + 1, ipb)
382 IF (ma - 1 > 0 .AND. mb > 0) wamm(0:lamb, 4) = waux_mat(1:lamb + 1, imam + 1, imb)
385 IF (ma + 1 <= la - 1)
THEN
386 wamp(0:lamb, 1) = waux_mat(1:lamb + 1, ipam + 1, ipb)
387 IF (mb > 0) wamp(0:lamb, 2) = waux_mat(1:lamb + 1, ipam + 1, imb)
388 IF (ma + 1 > 0) wamp(0:lamb, 3) = waux_mat(1:lamb + 1, imam - 1, ipb)
389 IF (ma + 1 > 0 .AND. mb > 0) wamp(0:lamb, 4) = waux_mat(1:lamb + 1, imam - 1, imb)
395 IF (mb <= lb - 1)
THEN
396 wbm(0:labm, 1) = waux_mat(1:labm + 1, ipa, ipbm)
397 IF (mb > 0) wbm(0:labm, 2) = waux_mat(1:labm + 1, ipa, imbm)
398 IF (ma > 0) wbm(0:labm, 3) = waux_mat(1:labm + 1, ima, ipbm)
399 IF (ma > 0 .AND. mb > 0) wbm(0:labm, 4) = waux_mat(1:labm + 1, ima, imbm)
402 IF (mb - 1 >= 0)
THEN
403 wbmm(0:labm, 1) = waux_mat(1:labm + 1, ipa, ipbm - 1)
404 IF (mb - 1 > 0) wbmm(0:labm, 2) = waux_mat(1:labm + 1, ipa, imbm + 1)
405 IF (ma > 0) wbmm(0:labm, 3) = waux_mat(1:labm + 1, ima, ipbm - 1)
406 IF (ma > 0 .AND. mb - 1 > 0) wbmm(0:labm, 4) = waux_mat(1:labm + 1, ima, imbm + 1)
409 IF (mb + 1 <= lb - 1)
THEN
410 wbmp(0:labm, 1) = waux_mat(1:labm + 1, ipa, ipbm + 1)
411 IF (mb + 1 > 0) wbmp(0:labm, 2) = waux_mat(1:labm + 1, ipa, imbm - 1)
412 IF (ma > 0) wbmp(0:labm, 3) = waux_mat(1:labm + 1, ima, ipbm + 1)
413 IF (ma > 0 .AND. mb + 1 > 0) wbmp(0:labm, 4) = waux_mat(1:labm + 1, ima, imbm - 1)
417 dwaux_mat(1, j + 1, ipa, ipb) = daa_p*wamp(j, 1) - daa_m*wamm(j, 1) &
418 - dab_p*wbmp(j, 1) + dab_m*wbmm(j, 1)
420 dwaux_mat(1, j + 1, ipa, imb) = daa_p*wamp(j, 2) - daa_m*wamm(j, 2) &
421 - dab_p*wbmp(j, 2) + dab_m*wbmm(j, 2)
424 dwaux_mat(1, j + 1, ima, ipb) = daa_p*wamp(j, 3) - daa_m*wamm(j, 3) &
425 - dab_p*wbmp(j, 3) + dab_m*wbmm(j, 3)
427 IF (ma > 0 .AND. mb > 0)
THEN
428 dwaux_mat(1, j + 1, ima, imb) = daa_p*wamp(j, 4) - daa_m*wamm(j, 4) &
429 - dab_p*wbmp(j, 4) + dab_m*wbmm(j, 4)
433 dwaux_mat(2, j + 1, ipa, ipb) = daa_p*wamp(j, 3) + daa_m*wamm(j, 3) &
434 - dab_p*wbmp(j, 2) - dab_m*wbmm(j, 2)
436 dwaux_mat(2, j + 1, ipa, imb) = daa_p*wamp(j, 4) + daa_m*wamm(j, 4) &
437 + dab_p*wbmp(j, 1) + dab_m*wbmm(j, 1)
440 dwaux_mat(2, j + 1, ima, ipb) = -daa_p*wamp(j, 1) - daa_m*wamm(j, 1) &
441 - dab_p*wbmp(j, 4) - dab_m*wbmm(j, 4)
443 IF (ma > 0 .AND. mb > 0)
THEN
444 dwaux_mat(2, j + 1, ima, imb) = -daa_p*wamp(j, 2) - daa_m*wamm(j, 2) &
445 + dab_p*wbmp(j, 3) + dab_m*wbmm(j, 3)
448 dwaux_mat(3, j + 1, ipa, ipb) = daa*wam(j, 1) - dab*wbm(j, 1)
450 dwaux_mat(3, j + 1, ipa, imb) = daa*wam(j, 2) - dab*wbm(j, 2)
453 dwaux_mat(3, j + 1, ima, ipb) = daa*wam(j, 3) - dab*wbm(j, 3)
455 IF (ma > 0 .AND. mb > 0)
THEN
456 dwaux_mat(3, j + 1, ima, imb) = daa*wam(j, 4) - dab*wbm(j, 4)
465 DEALLOCATE (wam, wamm, wamp)
466 DEALLOCATE (wbm, wbmm, wbmp)
467 DEALLOCATE (da, da_p, da_m)
542 swork_cont, Waux_mat, dWaux_mat, dsab)
544 INTEGER,
DIMENSION(:),
INTENT(IN) :: la, first_sgfa
545 INTEGER,
INTENT(IN) :: nshella
546 INTEGER,
DIMENSION(:),
INTENT(IN) :: lb, first_sgfb
547 INTEGER,
INTENT(IN) :: nshellb
548 REAL(kind=
dp),
INTENT(IN) :: rab(3)
549 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: swork_cont, waux_mat
550 REAL(kind=
dp),
DIMENSION(:, :, :, :),
INTENT(IN) :: dwaux_mat
551 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(INOUT) :: dsab
553 INTEGER :: fnla, fnlb, fsgfa, fsgfb, i, ishella, j, &
554 jshellb, labmin, lai, lbj, lnla, lnlb, &
556 REAL(kind=
dp) :: dprefac, prefac, rabx2(3)
558 rabx2(:) = 2.0_dp*rab
559 DO jshellb = 1, nshellb
561 fnlb =
nsoset(lbj - 1) + 1
563 fsgfb = first_sgfb(jshellb)
564 lsgfb = fsgfb + 2*lbj
565 DO ishella = 1, nshella
567 fnla =
nsoset(lai - 1) + 1
569 fsgfa = first_sgfa(ishella)
570 lsgfa = fsgfa + 2*lai
571 labmin = min(lai, lbj)
573 prefac = swork_cont(lai + lbj - j + 1, ishella, jshellb)
574 dprefac = swork_cont(lai + lbj - j + 2, ishella, jshellb)
576 dsab(fsgfa:lsgfa, fsgfb:lsgfb, i) = dsab(fsgfa:lsgfa, fsgfb:lsgfb, i) &
577 + rabx2(i)*dprefac*waux_mat(j + 1, fnla:lnla, fnlb:lnlb) &
578 + prefac*dwaux_mat(i, j + 1, fnla:lnla, fnlb:lnlb)
606 lca, first_sgfca, nshellca, cg_coeff, cg_none0_list, &
607 ncg_none0, swork_cont, Waux_mat, saba)
609 INTEGER,
DIMENSION(:),
INTENT(IN) :: la, first_sgfa
610 INTEGER,
INTENT(IN) :: nshella
611 INTEGER,
DIMENSION(:),
INTENT(IN) :: lb, first_sgfb
612 INTEGER,
INTENT(IN) :: nshellb
613 INTEGER,
DIMENSION(:),
INTENT(IN) :: lca, first_sgfca
614 INTEGER,
INTENT(IN) :: nshellca
615 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: cg_coeff
616 INTEGER,
DIMENSION(:, :, :),
INTENT(IN) :: cg_none0_list
617 INTEGER,
DIMENSION(:, :),
INTENT(IN) :: ncg_none0
618 REAL(kind=
dp),
DIMENSION(:, 0:, :, :, :), &
619 INTENT(IN) :: swork_cont
620 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: waux_mat
621 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(INOUT) :: saba
623 INTEGER :: ia, il, ilist, ishella, isoa1, isoa2, isoaa, j, jb, jshellb, ka, kshella, laa, &
624 labmin, lai, lak, lbj, maa, mai, mak, mbj, nla, nlb, sgfa, sgfb, sgfca
625 REAL(kind=
dp) :: prefac, stemp
627 DO kshella = 1, nshellca
629 sgfca = first_sgfca(kshella)
631 DO jshellb = 1, nshellb
633 nlb =
nsoset(lbj - 1) + lbj + 1
634 sgfb = first_sgfb(jshellb)
636 DO ishella = 1, nshella
638 sgfa = first_sgfa(ishella)
640 DO mai = -lai, lai, 1
641 DO mak = -lak, lak, 1
644 DO mbj = -lbj, lbj, 1
645 DO ilist = 1, ncg_none0(isoa1, isoa2)
646 isoaa = cg_none0_list(isoa1, isoa2, ilist)
647 laa =
indso(1, isoaa)
648 maa =
indso(2, isoaa)
649 nla =
nsoset(laa - 1) + laa + 1
650 labmin = min(laa, lbj)
651 il = int((lai + lak - laa)/2)
654 prefac = swork_cont(laa + lbj - j + 1, il, ishella, jshellb, kshella)
655 stemp = stemp + prefac*waux_mat(j + 1, nla + maa, nlb + mbj)
657 saba(ia + mai, jb + mbj, ka + mak) = saba(ia + mai, jb + mbj, ka + mak) + cg_coeff(isoa1, isoa2, isoaa)*stemp
691 lca, first_sgfca, nshellca, cg_coeff, cg_none0_list, &
692 ncg_none0, rab, swork_cont, Waux_mat, dWaux_mat, dsaba)
694 INTEGER,
DIMENSION(:),
INTENT(IN) :: la, first_sgfa
695 INTEGER,
INTENT(IN) :: nshella
696 INTEGER,
DIMENSION(:),
INTENT(IN) :: lb, first_sgfb
697 INTEGER,
INTENT(IN) :: nshellb
698 INTEGER,
DIMENSION(:),
INTENT(IN) :: lca, first_sgfca
699 INTEGER,
INTENT(IN) :: nshellca
700 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: cg_coeff
701 INTEGER,
DIMENSION(:, :, :),
INTENT(IN) :: cg_none0_list
702 INTEGER,
DIMENSION(:, :),
INTENT(IN) :: ncg_none0
703 REAL(kind=
dp),
INTENT(IN) :: rab(3)
704 REAL(kind=
dp),
DIMENSION(:, 0:, :, :, :), &
705 INTENT(IN) :: swork_cont
706 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: waux_mat
707 REAL(kind=
dp),
DIMENSION(:, :, :, :),
INTENT(IN) :: dwaux_mat
708 REAL(kind=
dp),
DIMENSION(:, :, :, :), &
709 INTENT(INOUT) :: dsaba
711 INTEGER :: i, ia, il, ilist, ishella, isoa1, isoa2, isoaa, j, jb, jshellb, ka, kshella, laa, &
712 labmin, lai, lak, lbj, maa, mai, mak, mbj, nla, nlb, sgfa, sgfb, sgfca
713 REAL(kind=
dp) :: dprefac, dtemp(3), prefac, rabx2(3)
715 rabx2(:) = 2.0_dp*rab
717 DO kshella = 1, nshellca
719 sgfca = first_sgfca(kshella)
721 DO jshellb = 1, nshellb
723 nlb =
nsoset(lbj - 1) + lbj + 1
724 sgfb = first_sgfb(jshellb)
726 DO ishella = 1, nshella
728 sgfa = first_sgfa(ishella)
730 DO mai = -lai, lai, 1
731 DO mak = -lak, lak, 1
734 DO mbj = -lbj, lbj, 1
735 DO ilist = 1, ncg_none0(isoa1, isoa2)
736 isoaa = cg_none0_list(isoa1, isoa2, ilist)
737 laa =
indso(1, isoaa)
738 maa =
indso(2, isoaa)
739 nla =
nsoset(laa - 1) + laa + 1
740 labmin = min(laa, lbj)
741 il = (lai + lak - laa)/2
744 prefac = swork_cont(laa + lbj - j + 1, il, ishella, jshellb, kshella)
745 dprefac = swork_cont(laa + lbj - j + 2, il, ishella, jshellb, kshella)
747 dtemp(i) = dtemp(i) + rabx2(i)*dprefac*waux_mat(j + 1, nla + maa, nlb + mbj) &
748 + prefac*dwaux_mat(i, j + 1, nla + maa, nlb + mbj)
752 dsaba(ia + mai, jb + mbj, ka + mak, i) = dsaba(ia + mai, jb + mbj, ka + mak, i) &
753 + cg_coeff(isoa1, isoa2, isoaa)*dtemp(i)
785 lcb, first_sgfcb, nshellcb, cg_coeff, cg_none0_list, &
786 ncg_none0, swork_cont, Waux_mat, sabb)
788 INTEGER,
DIMENSION(:),
INTENT(IN) :: la, first_sgfa
789 INTEGER,
INTENT(IN) :: nshella
790 INTEGER,
DIMENSION(:),
INTENT(IN) :: lb, first_sgfb
791 INTEGER,
INTENT(IN) :: nshellb
792 INTEGER,
DIMENSION(:),
INTENT(IN) :: lcb, first_sgfcb
793 INTEGER,
INTENT(IN) :: nshellcb
794 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: cg_coeff
795 INTEGER,
DIMENSION(:, :, :),
INTENT(IN) :: cg_none0_list
796 INTEGER,
DIMENSION(:, :),
INTENT(IN) :: ncg_none0
797 REAL(kind=
dp),
DIMENSION(:, 0:, :, :, :), &
798 INTENT(IN) :: swork_cont
799 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: waux_mat
800 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(INOUT) :: sabb
802 INTEGER :: ia, il, ilist, ishella, isob1, isob2, isobb, j, jb, jshellb, kb, kshellb, labmin, &
803 lai, lbb, lbj, lbk, mai, mbb, mbj, mbk, nla, nlb, sgfa, sgfb, sgfcb
804 REAL(kind=
dp) :: prefac, stemp, tsign
806 DO kshellb = 1, nshellcb
808 sgfcb = first_sgfcb(kshellb)
810 DO jshellb = 1, nshellb
812 sgfb = first_sgfb(jshellb)
814 DO ishella = 1, nshella
816 nla =
nsoset(lai - 1) + lai + 1
817 sgfa = first_sgfa(ishella)
819 DO mbj = -lbj, lbj, 1
820 DO mbk = -lbk, lbk, 1
823 DO mai = -lai, lai, 1
824 DO ilist = 1, ncg_none0(isob1, isob2)
825 isobb = cg_none0_list(isob1, isob2, ilist)
826 lbb =
indso(1, isobb)
827 mbb =
indso(2, isobb)
828 nlb =
nsoset(lbb - 1) + lbb + 1
831 IF (
modulo(lbb - lai, 2) /= 0) tsign = -1.0_dp
832 labmin = min(lai, lbb)
833 il = int((lbj + lbk - lbb)/2)
836 prefac = swork_cont(lai + lbb - j + 1, il, ishella, jshellb, kshellb)
837 stemp = stemp + prefac*waux_mat(j + 1, nlb + mbb, nla + mai)
839 sabb(ia + mai, jb + mbj, kb + mbk) = sabb(ia + mai, jb + mbj, kb + mbk) + tsign*cg_coeff(isob1, isob2, isobb)*stemp
873 lcb, first_sgfcb, nshellcb, cg_coeff, cg_none0_list, &
874 ncg_none0, rab, swork_cont, Waux_mat, dWaux_mat, dsabb)
876 INTEGER,
DIMENSION(:),
INTENT(IN) :: la, first_sgfa
877 INTEGER,
INTENT(IN) :: nshella
878 INTEGER,
DIMENSION(:),
INTENT(IN) :: lb, first_sgfb
879 INTEGER,
INTENT(IN) :: nshellb
880 INTEGER,
DIMENSION(:),
INTENT(IN) :: lcb, first_sgfcb
881 INTEGER,
INTENT(IN) :: nshellcb
882 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: cg_coeff
883 INTEGER,
DIMENSION(:, :, :),
INTENT(IN) :: cg_none0_list
884 INTEGER,
DIMENSION(:, :),
INTENT(IN) :: ncg_none0
885 REAL(kind=
dp),
INTENT(IN) :: rab(3)
886 REAL(kind=
dp),
DIMENSION(:, 0:, :, :, :), &
887 INTENT(IN) :: swork_cont
888 REAL(kind=
dp),
DIMENSION(:, :, :),
INTENT(IN) :: waux_mat
889 REAL(kind=
dp),
DIMENSION(:, :, :, :),
INTENT(IN) :: dwaux_mat
890 REAL(kind=
dp),
DIMENSION(:, :, :, :), &
891 INTENT(INOUT) :: dsabb
893 INTEGER :: i, ia, il, ilist, ishella, isob1, isob2, isobb, j, jb, jshellb, kb, kshellb, &
894 labmin, lai, lbb, lbj, lbk, mai, mbb, mbj, mbk, nla, nlb, sgfa, sgfb, sgfcb
895 REAL(kind=
dp) :: dprefac, dtemp(3), prefac, rabx2(3), &
898 rabx2(:) = 2.0_dp*rab
900 DO kshellb = 1, nshellcb
902 sgfcb = first_sgfcb(kshellb)
904 DO jshellb = 1, nshellb
906 sgfb = first_sgfb(jshellb)
908 DO ishella = 1, nshella
910 nla =
nsoset(lai - 1) + lai + 1
911 sgfa = first_sgfa(ishella)
913 DO mbj = -lbj, lbj, 1
914 DO mbk = -lbk, lbk, 1
917 DO mai = -lai, lai, 1
918 DO ilist = 1, ncg_none0(isob1, isob2)
919 isobb = cg_none0_list(isob1, isob2, ilist)
920 lbb =
indso(1, isobb)
921 mbb =
indso(2, isobb)
922 nlb =
nsoset(lbb - 1) + lbb + 1
925 IF (
modulo(lbb - lai, 2) /= 0) tsign = -1.0_dp
926 labmin = min(lai, lbb)
927 il = (lbj + lbk - lbb)/2
930 prefac = swork_cont(lai + lbb - j + 1, il, ishella, jshellb, kshellb)
931 dprefac = swork_cont(lai + lbb - j + 2, il, ishella, jshellb, kshellb)
933 dtemp(i) = dtemp(i) + rabx2(i)*dprefac*waux_mat(j + 1, nlb + mbb, nla + mai) &
934 + prefac*dwaux_mat(i, j + 1, nlb + mbb, nla + mai)
938 dsabb(ia + mai, jb + mbj, kb + mbk, i) = dsabb(ia + mai, jb + mbj, kb + mbk, i) &
939 + tsign*cg_coeff(isob1, isob2, isobb)*dtemp(i)