675 first_c, last_c, mat_ab, &
676 basis_type_a, basis_type_b, basis_type_c, &
677 sab_nl, eri_method, &
678 pabc, force_a, force_b, force_c, &
679 mat_dabc, mat_adbc, mat_abdc)
684 INTEGER,
INTENT(IN) :: first_c, last_c
686 INTENT(INOUT) :: mat_ab
687 CHARACTER(LEN=*),
INTENT(IN) :: basis_type_a, basis_type_b, basis_type_c
690 INTEGER,
INTENT(IN),
OPTIONAL :: eri_method
692 INTENT(INOUT),
OPTIONAL :: pabc
694 DIMENSION(:),
INTENT(OUT),
OPTIONAL :: force_a, force_b, force_c
696 DIMENSION(3, last_c - first_c + 1),
INTENT(INOUT), &
697 OPTIONAL :: mat_dabc, mat_adbc, mat_abdc
699 CHARACTER(LEN=*),
PARAMETER :: routinen =
'mp2_eri_3c_integrate'
701 INTEGER :: atom_a, atom_b, atom_c, atom_end, atom_start, first_set, gg_count, gr_count, &
702 handle, i_xyz, iatom, ic, icol, ikind, inode, irow, iset, jatom, jkind, jset, katom, &
703 kkind, kset, kset_end, kset_start, last_jatom, last_set, mepos, my_eri_method, na, natom, &
704 nb, nc, nkind, nseta, nsetb, nsetc, nthread, offset_a_end, offset_a_start, offset_b_end, &
705 offset_b_start, offset_c_end, offset_c_start, rr_count, set_end, set_offset_end, &
706 set_offset_start, set_start, sgfa, sgfb, sgfc
707 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom_of_kind, kind_of, natom_of_kind
708 INTEGER,
ALLOCATABLE,
DIMENSION(:, :) :: eri_offsets
709 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, lb_max, lb_min, lc_max, &
710 lc_min, npgfa, npgfb, npgfc, nsgfa, &
712 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgfa, first_sgfb, first_sgfc
713 LOGICAL :: calculate_forces, do_symmetric, found, &
716 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: habc, pabc_block
717 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :, :) :: habdc, hadbc, hdabc
718 REAL(kind=
dp),
DIMENSION(3) :: ra, rab, rb, rc
719 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius_a, set_radius_b
720 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: munu_block, pab_block, rpgfb, sphi_a, &
721 sphi_b, sphi_c, zeta, zetb, zetc
727 DIMENSION(:),
POINTER :: nl_iterator
729 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
731 CALL timeset(routinen, handle)
733 calculate_forces =
PRESENT(force_a) .OR.
PRESENT(force_b) .OR.
PRESENT(force_c) .OR. &
734 PRESENT(mat_dabc) .OR.
PRESENT(mat_adbc) .OR.
PRESENT(mat_abdc)
737 IF (
PRESENT(eri_method)) my_eri_method = eri_method
739 IF (
PRESENT(force_a) .OR.
PRESENT(force_b) .OR.
PRESENT(force_c))
THEN
740 cpassert(
PRESENT(pabc))
743 gg_count = 0; gr_count = 0; rr_count = 0
748 CALL get_eri_offsets(qs_env, basis_type_c, eri_offsets)
750 atom_start = eri_offsets(first_c, 1)
751 set_start = eri_offsets(first_c, 2)
752 set_offset_start = eri_offsets(first_c, 3)
754 atom_end = eri_offsets(last_c, 1)
755 set_end = eri_offsets(last_c, 2)
756 set_offset_end = eri_offsets(last_c, 3)
760 atomic_kind_set=atomic_kind_set, &
762 qs_kind_set=qs_kind_set, &
763 particle_set=particle_set, &
767 CALL get_atomic_kind_set(atomic_kind_set, atom_of_kind=atom_of_kind, kind_of=kind_of, natom_of_kind=natom_of_kind)
773 nc = last_c - first_c + 1
776 cpassert(
SIZE(sab_nl) > 0)
779 IF (do_symmetric)
THEN
780 cpassert(basis_type_a == basis_type_b)
783 ALLOCATE (basis_set_list_a(nkind), basis_set_list_b(nkind))
792 CALL get_iterator_info(nl_iterator, mepos=mepos, ikind=ikind, jkind=jkind, inode=inode, &
793 iatom=iatom, jatom=jatom, r=rab)
796 IF (inode == 1) last_jatom = 0
798 IF (jatom /= last_jatom)
THEN
804 basis_set_a => basis_set_list_a(ikind)%gto_basis_set
807 IF (.NOT.
ASSOCIATED(basis_set_a) .OR. sum(basis_set_a%nsgf_set) <= 0) cycle
808 basis_set_b => basis_set_list_b(jkind)%gto_basis_set
809 IF (.NOT.
ASSOCIATED(basis_set_b) .OR. sum(basis_set_b%nsgf_set) <= 0) cycle
810 atom_a = atom_of_kind(iatom)
811 atom_b = atom_of_kind(jatom)
813 first_sgfa => basis_set_a%first_sgf
814 la_max => basis_set_a%lmax
815 la_min => basis_set_a%lmin
816 npgfa => basis_set_a%npgf
817 nseta = basis_set_a%nset
818 nsgfa => basis_set_a%nsgf_set
819 set_radius_a => basis_set_a%set_radius
820 sphi_a => basis_set_a%sphi
821 zeta => basis_set_a%zet
824 ra(:) =
pbc(particle_set(iatom)%r, cell)
827 first_sgfb => basis_set_b%first_sgf
828 lb_max => basis_set_b%lmax
829 lb_min => basis_set_b%lmin
830 npgfb => basis_set_b%npgf
831 nsetb = basis_set_b%nset
832 nsgfb => basis_set_b%nsgf_set
833 rpgfb => basis_set_b%pgf_radius
834 set_radius_b => basis_set_b%set_radius
835 sphi_b => basis_set_b%sphi
836 zetb => basis_set_b%zet
839 rb(:) =
pbc(particle_set(jatom)%r, cell)
841 IF (do_symmetric)
THEN
842 IF (iatom <= jatom)
THEN
854 ALLOCATE (habc(na, nb, nc))
855 habc(:, :, :) = 0.0_dp
856 IF (
PRESENT(mat_dabc))
THEN
857 ALLOCATE (hdabc(3, na, nb, nc))
858 hdabc(:, :, :, :) = 0.0_dp
860 IF (
PRESENT(mat_adbc))
THEN
861 ALLOCATE (hadbc(3, na, nb, nc))
862 hadbc(:, :, :, :) = 0.0_dp
864 IF (
PRESENT(mat_abdc))
THEN
865 ALLOCATE (habdc(3, na, nb, nc))
866 habdc(:, :, :, :) = 0.0_dp
869 IF (calculate_forces .AND.
PRESENT(pabc))
THEN
870 ALLOCATE (pabc_block(na, nb, nc))
874 row=irow, col=icol, block=pab_block, found=found)
876 IF (irow .EQ. iatom)
THEN
877 to_be_asserted =
SIZE(pab_block, 1) .EQ.
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 2) .EQ.
SIZE(pabc_block, 2)
878 cpassert(to_be_asserted)
879 pabc_block(:, :, ic) = pab_block(:, :)
881 to_be_asserted =
SIZE(pab_block, 2) .EQ.
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 1) .EQ.
SIZE(pabc_block, 2)
882 cpassert(to_be_asserted)
883 pabc_block(:, :, ic) = transpose(pab_block(:, :))
888 rab(:) =
pbc(rab, cell)
889 dab = sqrt(rab(1)**2 + rab(2)**2 + rab(3)**2)
893 offset_a_start = offset_a_end
894 offset_a_end = offset_a_end + nsgfa(iset)
895 sgfa = first_sgfa(1, iset)
899 offset_b_start = offset_b_end
900 offset_b_end = offset_b_end + nsgfb(jset)
902 sgfb = first_sgfb(1, jset)
905 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
908 DO katom = atom_start, atom_end
910 atom_c = atom_of_kind(katom)
912 kkind = kind_of(katom)
913 CALL get_qs_kind(qs_kind=qs_kind_set(kkind), basis_set=basis_set_c, basis_type=basis_type_c)
914 first_sgfc => basis_set_c%first_sgf
915 lc_max => basis_set_c%lmax
916 lc_min => basis_set_c%lmin
917 nsetc = basis_set_c%nset
918 nsgfc => basis_set_c%nsgf_set
919 sphi_c => basis_set_c%sphi
920 zetc => basis_set_c%zet
921 npgfc => basis_set_c%npgf
923 rc(:) =
pbc(particle_set(katom)%r, cell)
925 kset_start = 1; kset_end = nsetc
926 IF (katom == atom_start) kset_start = set_start
927 IF (katom == atom_end) kset_end = set_end
929 DO kset = kset_start, kset_end
930 first_set = 1; last_set = nsgfc(kset)
931 IF (kset == kset_start .AND. katom == atom_start) first_set = set_offset_start
932 IF (kset == kset_end .AND. katom == atom_end) last_set = set_offset_end
934 offset_c_start = offset_c_end
935 offset_c_end = offset_c_end + last_set + 1 - first_set
936 sgfc = first_sgfc(1, kset)
938 IF (.NOT.
PRESENT(force_a) .AND. &
939 .NOT.
PRESENT(force_b) .AND. &
940 .NOT.
PRESENT(force_c) .AND. &
941 .NOT.
PRESENT(pabc) .AND. &
942 .NOT.
PRESENT(mat_dabc) .AND. &
943 .NOT.
PRESENT(mat_adbc) .AND. &
944 .NOT.
PRESENT(mat_abdc))
THEN
945 CALL integrate_set_3c( &
946 param%par, potential_parameter, &
947 la_min(iset), la_max(iset), &
948 lb_min(jset), lb_max(jset), &
949 lc_min(kset), lc_max(kset), &
950 npgfa(iset), npgfb(jset), npgfc(kset), &
951 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
954 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
955 offset_a_start, offset_b_start, offset_c_start, &
956 0, 0, first_set - 1, &
957 sphi_a, sphi_b, sphi_c, &
959 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
965 do_symmetric=do_symmetric, &
966 on_diagonal=iatom .EQ. jatom, &
970 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
972 IF (.NOT.
PRESENT(force_a) .AND. &
973 .NOT.
PRESENT(force_b) .AND. &
974 .NOT.
PRESENT(force_c) .AND. &
975 .NOT.
PRESENT(pabc) .AND. &
976 .NOT.
PRESENT(mat_dabc) .AND. &
977 .NOT.
PRESENT(mat_adbc) .AND. &
978 PRESENT(mat_abdc))
THEN
979 CALL integrate_set_3c( &
980 param%par, potential_parameter, &
981 la_min(iset), la_max(iset), &
982 lb_min(jset), lb_max(jset), &
983 lc_min(kset), lc_max(kset), &
984 npgfa(iset), npgfb(jset), npgfc(kset), &
985 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
988 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
989 offset_a_start, offset_b_start, offset_c_start, &
990 0, 0, first_set - 1, &
991 sphi_a, sphi_b, sphi_c, &
993 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
999 do_symmetric=do_symmetric, &
1000 on_diagonal=iatom .EQ. jatom, &
1004 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1006 IF (.NOT.
PRESENT(force_a) .AND. &
1007 .NOT.
PRESENT(force_b) .AND. &
1008 .NOT.
PRESENT(force_c) .AND. &
1009 .NOT.
PRESENT(pabc) .AND. &
1010 .NOT.
PRESENT(mat_dabc) .AND. &
1011 PRESENT(mat_adbc) .AND. &
1012 .NOT.
PRESENT(mat_abdc))
THEN
1013 CALL integrate_set_3c( &
1014 param%par, potential_parameter, &
1015 la_min(iset), la_max(iset), &
1016 lb_min(jset), lb_max(jset), &
1017 lc_min(kset), lc_max(kset), &
1018 npgfa(iset), npgfb(jset), npgfc(kset), &
1019 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1022 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1023 offset_a_start, offset_b_start, offset_c_start, &
1024 0, 0, first_set - 1, &
1025 sphi_a, sphi_b, sphi_c, &
1027 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1033 do_symmetric=do_symmetric, &
1034 on_diagonal=iatom .EQ. jatom, &
1038 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1040 IF (.NOT.
PRESENT(force_a) .AND. &
1041 .NOT.
PRESENT(force_b) .AND. &
1042 .NOT.
PRESENT(force_c) .AND. &
1043 .NOT.
PRESENT(pabc) .AND. &
1044 .NOT.
PRESENT(mat_dabc) .AND. &
1045 PRESENT(mat_adbc) .AND. &
1046 PRESENT(mat_abdc))
THEN
1047 CALL integrate_set_3c( &
1048 param%par, potential_parameter, &
1049 la_min(iset), la_max(iset), &
1050 lb_min(jset), lb_max(jset), &
1051 lc_min(kset), lc_max(kset), &
1052 npgfa(iset), npgfb(jset), npgfc(kset), &
1053 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1056 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1057 offset_a_start, offset_b_start, offset_c_start, &
1058 0, 0, first_set - 1, &
1059 sphi_a, sphi_b, sphi_c, &
1061 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1067 do_symmetric=do_symmetric, &
1068 on_diagonal=iatom .EQ. jatom, &
1072 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1074 IF (.NOT.
PRESENT(force_a) .AND. &
1075 .NOT.
PRESENT(force_b) .AND. &
1076 .NOT.
PRESENT(force_c) .AND. &
1077 .NOT.
PRESENT(pabc) .AND. &
1078 PRESENT(mat_dabc) .AND. &
1079 .NOT.
PRESENT(mat_adbc) .AND. &
1080 .NOT.
PRESENT(mat_abdc))
THEN
1081 CALL integrate_set_3c( &
1082 param%par, potential_parameter, &
1083 la_min(iset), la_max(iset), &
1084 lb_min(jset), lb_max(jset), &
1085 lc_min(kset), lc_max(kset), &
1086 npgfa(iset), npgfb(jset), npgfc(kset), &
1087 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1090 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1091 offset_a_start, offset_b_start, offset_c_start, &
1092 0, 0, first_set - 1, &
1093 sphi_a, sphi_b, sphi_c, &
1095 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1101 do_symmetric=do_symmetric, &
1102 on_diagonal=iatom .EQ. jatom, &
1106 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1108 IF (.NOT.
PRESENT(force_a) .AND. &
1109 .NOT.
PRESENT(force_b) .AND. &
1110 .NOT.
PRESENT(force_c) .AND. &
1111 .NOT.
PRESENT(pabc) .AND. &
1112 PRESENT(mat_dabc) .AND. &
1113 .NOT.
PRESENT(mat_adbc) .AND. &
1114 PRESENT(mat_abdc))
THEN
1115 CALL integrate_set_3c( &
1116 param%par, potential_parameter, &
1117 la_min(iset), la_max(iset), &
1118 lb_min(jset), lb_max(jset), &
1119 lc_min(kset), lc_max(kset), &
1120 npgfa(iset), npgfb(jset), npgfc(kset), &
1121 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1124 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1125 offset_a_start, offset_b_start, offset_c_start, &
1126 0, 0, first_set - 1, &
1127 sphi_a, sphi_b, sphi_c, &
1129 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1135 do_symmetric=do_symmetric, &
1136 on_diagonal=iatom .EQ. jatom, &
1140 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1142 IF (.NOT.
PRESENT(force_a) .AND. &
1143 .NOT.
PRESENT(force_b) .AND. &
1144 .NOT.
PRESENT(force_c) .AND. &
1145 .NOT.
PRESENT(pabc) .AND. &
1146 PRESENT(mat_dabc) .AND. &
1147 PRESENT(mat_adbc) .AND. &
1148 .NOT.
PRESENT(mat_abdc))
THEN
1149 CALL integrate_set_3c( &
1150 param%par, potential_parameter, &
1151 la_min(iset), la_max(iset), &
1152 lb_min(jset), lb_max(jset), &
1153 lc_min(kset), lc_max(kset), &
1154 npgfa(iset), npgfb(jset), npgfc(kset), &
1155 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1158 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1159 offset_a_start, offset_b_start, offset_c_start, &
1160 0, 0, first_set - 1, &
1161 sphi_a, sphi_b, sphi_c, &
1163 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1169 do_symmetric=do_symmetric, &
1170 on_diagonal=iatom .EQ. jatom, &
1174 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1176 IF (.NOT.
PRESENT(force_a) .AND. &
1177 .NOT.
PRESENT(force_b) .AND. &
1178 .NOT.
PRESENT(force_c) .AND. &
1179 .NOT.
PRESENT(pabc) .AND. &
1180 PRESENT(mat_dabc) .AND. &
1181 PRESENT(mat_adbc) .AND. &
1182 PRESENT(mat_abdc))
THEN
1183 CALL integrate_set_3c( &
1184 param%par, potential_parameter, &
1185 la_min(iset), la_max(iset), &
1186 lb_min(jset), lb_max(jset), &
1187 lc_min(kset), lc_max(kset), &
1188 npgfa(iset), npgfb(jset), npgfc(kset), &
1189 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1192 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1193 offset_a_start, offset_b_start, offset_c_start, &
1194 0, 0, first_set - 1, &
1195 sphi_a, sphi_b, sphi_c, &
1197 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1203 do_symmetric=do_symmetric, &
1204 on_diagonal=iatom .EQ. jatom, &
1208 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1210 IF (.NOT.
PRESENT(force_a) .AND. &
1211 .NOT.
PRESENT(force_b) .AND. &
1212 PRESENT(force_c) .AND. &
1213 .NOT.
PRESENT(pabc) .AND. &
1214 .NOT.
PRESENT(mat_dabc) .AND. &
1215 .NOT.
PRESENT(mat_adbc) .AND. &
1216 .NOT.
PRESENT(mat_abdc))
THEN
1217 CALL integrate_set_3c( &
1218 param%par, potential_parameter, &
1219 la_min(iset), la_max(iset), &
1220 lb_min(jset), lb_max(jset), &
1221 lc_min(kset), lc_max(kset), &
1222 npgfa(iset), npgfb(jset), npgfc(kset), &
1223 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1226 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1227 offset_a_start, offset_b_start, offset_c_start, &
1228 0, 0, first_set - 1, &
1229 sphi_a, sphi_b, sphi_c, &
1231 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1236force_c=force_c(kkind)%forces(:, atom_c), &
1237 do_symmetric=do_symmetric, &
1238 on_diagonal=iatom .EQ. jatom, &
1242 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1244 IF (.NOT.
PRESENT(force_a) .AND. &
1245 .NOT.
PRESENT(force_b) .AND. &
1246 PRESENT(force_c) .AND. &
1247 .NOT.
PRESENT(pabc) .AND. &
1248 .NOT.
PRESENT(mat_dabc) .AND. &
1249 .NOT.
PRESENT(mat_adbc) .AND. &
1250 PRESENT(mat_abdc))
THEN
1251 CALL integrate_set_3c( &
1252 param%par, potential_parameter, &
1253 la_min(iset), la_max(iset), &
1254 lb_min(jset), lb_max(jset), &
1255 lc_min(kset), lc_max(kset), &
1256 npgfa(iset), npgfb(jset), npgfc(kset), &
1257 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1260 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1261 offset_a_start, offset_b_start, offset_c_start, &
1262 0, 0, first_set - 1, &
1263 sphi_a, sphi_b, sphi_c, &
1265 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1270force_c=force_c(kkind)%forces(:, atom_c), &
1271 do_symmetric=do_symmetric, &
1272 on_diagonal=iatom .EQ. jatom, &
1276 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1278 IF (.NOT.
PRESENT(force_a) .AND. &
1279 .NOT.
PRESENT(force_b) .AND. &
1280 PRESENT(force_c) .AND. &
1281 .NOT.
PRESENT(pabc) .AND. &
1282 .NOT.
PRESENT(mat_dabc) .AND. &
1283 PRESENT(mat_adbc) .AND. &
1284 .NOT.
PRESENT(mat_abdc))
THEN
1285 CALL integrate_set_3c( &
1286 param%par, potential_parameter, &
1287 la_min(iset), la_max(iset), &
1288 lb_min(jset), lb_max(jset), &
1289 lc_min(kset), lc_max(kset), &
1290 npgfa(iset), npgfb(jset), npgfc(kset), &
1291 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1294 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1295 offset_a_start, offset_b_start, offset_c_start, &
1296 0, 0, first_set - 1, &
1297 sphi_a, sphi_b, sphi_c, &
1299 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1304force_c=force_c(kkind)%forces(:, atom_c), &
1305 do_symmetric=do_symmetric, &
1306 on_diagonal=iatom .EQ. jatom, &
1310 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1312 IF (.NOT.
PRESENT(force_a) .AND. &
1313 .NOT.
PRESENT(force_b) .AND. &
1314 PRESENT(force_c) .AND. &
1315 .NOT.
PRESENT(pabc) .AND. &
1316 .NOT.
PRESENT(mat_dabc) .AND. &
1317 PRESENT(mat_adbc) .AND. &
1318 PRESENT(mat_abdc))
THEN
1319 CALL integrate_set_3c( &
1320 param%par, potential_parameter, &
1321 la_min(iset), la_max(iset), &
1322 lb_min(jset), lb_max(jset), &
1323 lc_min(kset), lc_max(kset), &
1324 npgfa(iset), npgfb(jset), npgfc(kset), &
1325 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1328 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1329 offset_a_start, offset_b_start, offset_c_start, &
1330 0, 0, first_set - 1, &
1331 sphi_a, sphi_b, sphi_c, &
1333 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1338force_c=force_c(kkind)%forces(:, atom_c), &
1339 do_symmetric=do_symmetric, &
1340 on_diagonal=iatom .EQ. jatom, &
1344 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1346 IF (.NOT.
PRESENT(force_a) .AND. &
1347 .NOT.
PRESENT(force_b) .AND. &
1348 PRESENT(force_c) .AND. &
1349 .NOT.
PRESENT(pabc) .AND. &
1350 PRESENT(mat_dabc) .AND. &
1351 .NOT.
PRESENT(mat_adbc) .AND. &
1352 .NOT.
PRESENT(mat_abdc))
THEN
1353 CALL integrate_set_3c( &
1354 param%par, potential_parameter, &
1355 la_min(iset), la_max(iset), &
1356 lb_min(jset), lb_max(jset), &
1357 lc_min(kset), lc_max(kset), &
1358 npgfa(iset), npgfb(jset), npgfc(kset), &
1359 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1362 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1363 offset_a_start, offset_b_start, offset_c_start, &
1364 0, 0, first_set - 1, &
1365 sphi_a, sphi_b, sphi_c, &
1367 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1372force_c=force_c(kkind)%forces(:, atom_c), &
1373 do_symmetric=do_symmetric, &
1374 on_diagonal=iatom .EQ. jatom, &
1378 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1380 IF (.NOT.
PRESENT(force_a) .AND. &
1381 .NOT.
PRESENT(force_b) .AND. &
1382 PRESENT(force_c) .AND. &
1383 .NOT.
PRESENT(pabc) .AND. &
1384 PRESENT(mat_dabc) .AND. &
1385 .NOT.
PRESENT(mat_adbc) .AND. &
1386 PRESENT(mat_abdc))
THEN
1387 CALL integrate_set_3c( &
1388 param%par, potential_parameter, &
1389 la_min(iset), la_max(iset), &
1390 lb_min(jset), lb_max(jset), &
1391 lc_min(kset), lc_max(kset), &
1392 npgfa(iset), npgfb(jset), npgfc(kset), &
1393 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1396 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1397 offset_a_start, offset_b_start, offset_c_start, &
1398 0, 0, first_set - 1, &
1399 sphi_a, sphi_b, sphi_c, &
1401 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1406force_c=force_c(kkind)%forces(:, atom_c), &
1407 do_symmetric=do_symmetric, &
1408 on_diagonal=iatom .EQ. jatom, &
1412 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1414 IF (.NOT.
PRESENT(force_a) .AND. &
1415 .NOT.
PRESENT(force_b) .AND. &
1416 PRESENT(force_c) .AND. &
1417 .NOT.
PRESENT(pabc) .AND. &
1418 PRESENT(mat_dabc) .AND. &
1419 PRESENT(mat_adbc) .AND. &
1420 .NOT.
PRESENT(mat_abdc))
THEN
1421 CALL integrate_set_3c( &
1422 param%par, potential_parameter, &
1423 la_min(iset), la_max(iset), &
1424 lb_min(jset), lb_max(jset), &
1425 lc_min(kset), lc_max(kset), &
1426 npgfa(iset), npgfb(jset), npgfc(kset), &
1427 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1430 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1431 offset_a_start, offset_b_start, offset_c_start, &
1432 0, 0, first_set - 1, &
1433 sphi_a, sphi_b, sphi_c, &
1435 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1440force_c=force_c(kkind)%forces(:, atom_c), &
1441 do_symmetric=do_symmetric, &
1442 on_diagonal=iatom .EQ. jatom, &
1446 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1448 IF (.NOT.
PRESENT(force_a) .AND. &
1449 .NOT.
PRESENT(force_b) .AND. &
1450 PRESENT(force_c) .AND. &
1451 .NOT.
PRESENT(pabc) .AND. &
1452 PRESENT(mat_dabc) .AND. &
1453 PRESENT(mat_adbc) .AND. &
1454 PRESENT(mat_abdc))
THEN
1455 CALL integrate_set_3c( &
1456 param%par, potential_parameter, &
1457 la_min(iset), la_max(iset), &
1458 lb_min(jset), lb_max(jset), &
1459 lc_min(kset), lc_max(kset), &
1460 npgfa(iset), npgfb(jset), npgfc(kset), &
1461 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1464 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1465 offset_a_start, offset_b_start, offset_c_start, &
1466 0, 0, first_set - 1, &
1467 sphi_a, sphi_b, sphi_c, &
1469 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1474force_c=force_c(kkind)%forces(:, atom_c), &
1475 do_symmetric=do_symmetric, &
1476 on_diagonal=iatom .EQ. jatom, &
1480 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1482 IF (.NOT.
PRESENT(force_a) .AND. &
1483 PRESENT(force_b) .AND. &
1484 .NOT.
PRESENT(force_c) .AND. &
1485 .NOT.
PRESENT(pabc) .AND. &
1486 .NOT.
PRESENT(mat_dabc) .AND. &
1487 .NOT.
PRESENT(mat_adbc) .AND. &
1488 .NOT.
PRESENT(mat_abdc))
THEN
1489 CALL integrate_set_3c( &
1490 param%par, potential_parameter, &
1491 la_min(iset), la_max(iset), &
1492 lb_min(jset), lb_max(jset), &
1493 lc_min(kset), lc_max(kset), &
1494 npgfa(iset), npgfb(jset), npgfc(kset), &
1495 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1498 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1499 offset_a_start, offset_b_start, offset_c_start, &
1500 0, 0, first_set - 1, &
1501 sphi_a, sphi_b, sphi_c, &
1503 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1507force_b=force_b(jkind)%forces(:, atom_b), &
1509 do_symmetric=do_symmetric, &
1510 on_diagonal=iatom .EQ. jatom, &
1514 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1516 IF (.NOT.
PRESENT(force_a) .AND. &
1517 PRESENT(force_b) .AND. &
1518 .NOT.
PRESENT(force_c) .AND. &
1519 .NOT.
PRESENT(pabc) .AND. &
1520 .NOT.
PRESENT(mat_dabc) .AND. &
1521 .NOT.
PRESENT(mat_adbc) .AND. &
1522 PRESENT(mat_abdc))
THEN
1523 CALL integrate_set_3c( &
1524 param%par, potential_parameter, &
1525 la_min(iset), la_max(iset), &
1526 lb_min(jset), lb_max(jset), &
1527 lc_min(kset), lc_max(kset), &
1528 npgfa(iset), npgfb(jset), npgfc(kset), &
1529 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1532 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1533 offset_a_start, offset_b_start, offset_c_start, &
1534 0, 0, first_set - 1, &
1535 sphi_a, sphi_b, sphi_c, &
1537 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1541force_b=force_b(jkind)%forces(:, atom_b), &
1543 do_symmetric=do_symmetric, &
1544 on_diagonal=iatom .EQ. jatom, &
1548 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1550 IF (.NOT.
PRESENT(force_a) .AND. &
1551 PRESENT(force_b) .AND. &
1552 .NOT.
PRESENT(force_c) .AND. &
1553 .NOT.
PRESENT(pabc) .AND. &
1554 .NOT.
PRESENT(mat_dabc) .AND. &
1555 PRESENT(mat_adbc) .AND. &
1556 .NOT.
PRESENT(mat_abdc))
THEN
1557 CALL integrate_set_3c( &
1558 param%par, potential_parameter, &
1559 la_min(iset), la_max(iset), &
1560 lb_min(jset), lb_max(jset), &
1561 lc_min(kset), lc_max(kset), &
1562 npgfa(iset), npgfb(jset), npgfc(kset), &
1563 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1566 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1567 offset_a_start, offset_b_start, offset_c_start, &
1568 0, 0, first_set - 1, &
1569 sphi_a, sphi_b, sphi_c, &
1571 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1575force_b=force_b(jkind)%forces(:, atom_b), &
1577 do_symmetric=do_symmetric, &
1578 on_diagonal=iatom .EQ. jatom, &
1582 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1584 IF (.NOT.
PRESENT(force_a) .AND. &
1585 PRESENT(force_b) .AND. &
1586 .NOT.
PRESENT(force_c) .AND. &
1587 .NOT.
PRESENT(pabc) .AND. &
1588 .NOT.
PRESENT(mat_dabc) .AND. &
1589 PRESENT(mat_adbc) .AND. &
1590 PRESENT(mat_abdc))
THEN
1591 CALL integrate_set_3c( &
1592 param%par, potential_parameter, &
1593 la_min(iset), la_max(iset), &
1594 lb_min(jset), lb_max(jset), &
1595 lc_min(kset), lc_max(kset), &
1596 npgfa(iset), npgfb(jset), npgfc(kset), &
1597 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1600 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1601 offset_a_start, offset_b_start, offset_c_start, &
1602 0, 0, first_set - 1, &
1603 sphi_a, sphi_b, sphi_c, &
1605 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1609force_b=force_b(jkind)%forces(:, atom_b), &
1611 do_symmetric=do_symmetric, &
1612 on_diagonal=iatom .EQ. jatom, &
1616 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1618 IF (.NOT.
PRESENT(force_a) .AND. &
1619 PRESENT(force_b) .AND. &
1620 .NOT.
PRESENT(force_c) .AND. &
1621 .NOT.
PRESENT(pabc) .AND. &
1622 PRESENT(mat_dabc) .AND. &
1623 .NOT.
PRESENT(mat_adbc) .AND. &
1624 .NOT.
PRESENT(mat_abdc))
THEN
1625 CALL integrate_set_3c( &
1626 param%par, potential_parameter, &
1627 la_min(iset), la_max(iset), &
1628 lb_min(jset), lb_max(jset), &
1629 lc_min(kset), lc_max(kset), &
1630 npgfa(iset), npgfb(jset), npgfc(kset), &
1631 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1634 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1635 offset_a_start, offset_b_start, offset_c_start, &
1636 0, 0, first_set - 1, &
1637 sphi_a, sphi_b, sphi_c, &
1639 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1643force_b=force_b(jkind)%forces(:, atom_b), &
1645 do_symmetric=do_symmetric, &
1646 on_diagonal=iatom .EQ. jatom, &
1650 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1652 IF (.NOT.
PRESENT(force_a) .AND. &
1653 PRESENT(force_b) .AND. &
1654 .NOT.
PRESENT(force_c) .AND. &
1655 .NOT.
PRESENT(pabc) .AND. &
1656 PRESENT(mat_dabc) .AND. &
1657 .NOT.
PRESENT(mat_adbc) .AND. &
1658 PRESENT(mat_abdc))
THEN
1659 CALL integrate_set_3c( &
1660 param%par, potential_parameter, &
1661 la_min(iset), la_max(iset), &
1662 lb_min(jset), lb_max(jset), &
1663 lc_min(kset), lc_max(kset), &
1664 npgfa(iset), npgfb(jset), npgfc(kset), &
1665 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1668 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1669 offset_a_start, offset_b_start, offset_c_start, &
1670 0, 0, first_set - 1, &
1671 sphi_a, sphi_b, sphi_c, &
1673 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1677force_b=force_b(jkind)%forces(:, atom_b), &
1679 do_symmetric=do_symmetric, &
1680 on_diagonal=iatom .EQ. jatom, &
1684 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1686 IF (.NOT.
PRESENT(force_a) .AND. &
1687 PRESENT(force_b) .AND. &
1688 .NOT.
PRESENT(force_c) .AND. &
1689 .NOT.
PRESENT(pabc) .AND. &
1690 PRESENT(mat_dabc) .AND. &
1691 PRESENT(mat_adbc) .AND. &
1692 .NOT.
PRESENT(mat_abdc))
THEN
1693 CALL integrate_set_3c( &
1694 param%par, potential_parameter, &
1695 la_min(iset), la_max(iset), &
1696 lb_min(jset), lb_max(jset), &
1697 lc_min(kset), lc_max(kset), &
1698 npgfa(iset), npgfb(jset), npgfc(kset), &
1699 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1702 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1703 offset_a_start, offset_b_start, offset_c_start, &
1704 0, 0, first_set - 1, &
1705 sphi_a, sphi_b, sphi_c, &
1707 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1711force_b=force_b(jkind)%forces(:, atom_b), &
1713 do_symmetric=do_symmetric, &
1714 on_diagonal=iatom .EQ. jatom, &
1718 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1720 IF (.NOT.
PRESENT(force_a) .AND. &
1721 PRESENT(force_b) .AND. &
1722 .NOT.
PRESENT(force_c) .AND. &
1723 .NOT.
PRESENT(pabc) .AND. &
1724 PRESENT(mat_dabc) .AND. &
1725 PRESENT(mat_adbc) .AND. &
1726 PRESENT(mat_abdc))
THEN
1727 CALL integrate_set_3c( &
1728 param%par, potential_parameter, &
1729 la_min(iset), la_max(iset), &
1730 lb_min(jset), lb_max(jset), &
1731 lc_min(kset), lc_max(kset), &
1732 npgfa(iset), npgfb(jset), npgfc(kset), &
1733 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1736 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1737 offset_a_start, offset_b_start, offset_c_start, &
1738 0, 0, first_set - 1, &
1739 sphi_a, sphi_b, sphi_c, &
1741 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1745force_b=force_b(jkind)%forces(:, atom_b), &
1747 do_symmetric=do_symmetric, &
1748 on_diagonal=iatom .EQ. jatom, &
1752 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1754 IF (.NOT.
PRESENT(force_a) .AND. &
1755 PRESENT(force_b) .AND. &
1756 PRESENT(force_c) .AND. &
1757 .NOT.
PRESENT(pabc) .AND. &
1758 .NOT.
PRESENT(mat_dabc) .AND. &
1759 .NOT.
PRESENT(mat_adbc) .AND. &
1760 .NOT.
PRESENT(mat_abdc))
THEN
1761 CALL integrate_set_3c( &
1762 param%par, potential_parameter, &
1763 la_min(iset), la_max(iset), &
1764 lb_min(jset), lb_max(jset), &
1765 lc_min(kset), lc_max(kset), &
1766 npgfa(iset), npgfb(jset), npgfc(kset), &
1767 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1770 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1771 offset_a_start, offset_b_start, offset_c_start, &
1772 0, 0, first_set - 1, &
1773 sphi_a, sphi_b, sphi_c, &
1775 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1779force_b=force_b(jkind)%forces(:, atom_b), &
1780force_c=force_c(kkind)%forces(:, atom_c), &
1781 do_symmetric=do_symmetric, &
1782 on_diagonal=iatom .EQ. jatom, &
1786 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1788 IF (.NOT.
PRESENT(force_a) .AND. &
1789 PRESENT(force_b) .AND. &
1790 PRESENT(force_c) .AND. &
1791 .NOT.
PRESENT(pabc) .AND. &
1792 .NOT.
PRESENT(mat_dabc) .AND. &
1793 .NOT.
PRESENT(mat_adbc) .AND. &
1794 PRESENT(mat_abdc))
THEN
1795 CALL integrate_set_3c( &
1796 param%par, potential_parameter, &
1797 la_min(iset), la_max(iset), &
1798 lb_min(jset), lb_max(jset), &
1799 lc_min(kset), lc_max(kset), &
1800 npgfa(iset), npgfb(jset), npgfc(kset), &
1801 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1804 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1805 offset_a_start, offset_b_start, offset_c_start, &
1806 0, 0, first_set - 1, &
1807 sphi_a, sphi_b, sphi_c, &
1809 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1813force_b=force_b(jkind)%forces(:, atom_b), &
1814force_c=force_c(kkind)%forces(:, atom_c), &
1815 do_symmetric=do_symmetric, &
1816 on_diagonal=iatom .EQ. jatom, &
1820 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1822 IF (.NOT.
PRESENT(force_a) .AND. &
1823 PRESENT(force_b) .AND. &
1824 PRESENT(force_c) .AND. &
1825 .NOT.
PRESENT(pabc) .AND. &
1826 .NOT.
PRESENT(mat_dabc) .AND. &
1827 PRESENT(mat_adbc) .AND. &
1828 .NOT.
PRESENT(mat_abdc))
THEN
1829 CALL integrate_set_3c( &
1830 param%par, potential_parameter, &
1831 la_min(iset), la_max(iset), &
1832 lb_min(jset), lb_max(jset), &
1833 lc_min(kset), lc_max(kset), &
1834 npgfa(iset), npgfb(jset), npgfc(kset), &
1835 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1838 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1839 offset_a_start, offset_b_start, offset_c_start, &
1840 0, 0, first_set - 1, &
1841 sphi_a, sphi_b, sphi_c, &
1843 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1847force_b=force_b(jkind)%forces(:, atom_b), &
1848force_c=force_c(kkind)%forces(:, atom_c), &
1849 do_symmetric=do_symmetric, &
1850 on_diagonal=iatom .EQ. jatom, &
1854 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1856 IF (.NOT.
PRESENT(force_a) .AND. &
1857 PRESENT(force_b) .AND. &
1858 PRESENT(force_c) .AND. &
1859 .NOT.
PRESENT(pabc) .AND. &
1860 .NOT.
PRESENT(mat_dabc) .AND. &
1861 PRESENT(mat_adbc) .AND. &
1862 PRESENT(mat_abdc))
THEN
1863 CALL integrate_set_3c( &
1864 param%par, potential_parameter, &
1865 la_min(iset), la_max(iset), &
1866 lb_min(jset), lb_max(jset), &
1867 lc_min(kset), lc_max(kset), &
1868 npgfa(iset), npgfb(jset), npgfc(kset), &
1869 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1872 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1873 offset_a_start, offset_b_start, offset_c_start, &
1874 0, 0, first_set - 1, &
1875 sphi_a, sphi_b, sphi_c, &
1877 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1881force_b=force_b(jkind)%forces(:, atom_b), &
1882force_c=force_c(kkind)%forces(:, atom_c), &
1883 do_symmetric=do_symmetric, &
1884 on_diagonal=iatom .EQ. jatom, &
1888 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1890 IF (.NOT.
PRESENT(force_a) .AND. &
1891 PRESENT(force_b) .AND. &
1892 PRESENT(force_c) .AND. &
1893 .NOT.
PRESENT(pabc) .AND. &
1894 PRESENT(mat_dabc) .AND. &
1895 .NOT.
PRESENT(mat_adbc) .AND. &
1896 .NOT.
PRESENT(mat_abdc))
THEN
1897 CALL integrate_set_3c( &
1898 param%par, potential_parameter, &
1899 la_min(iset), la_max(iset), &
1900 lb_min(jset), lb_max(jset), &
1901 lc_min(kset), lc_max(kset), &
1902 npgfa(iset), npgfb(jset), npgfc(kset), &
1903 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1906 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1907 offset_a_start, offset_b_start, offset_c_start, &
1908 0, 0, first_set - 1, &
1909 sphi_a, sphi_b, sphi_c, &
1911 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1915force_b=force_b(jkind)%forces(:, atom_b), &
1916force_c=force_c(kkind)%forces(:, atom_c), &
1917 do_symmetric=do_symmetric, &
1918 on_diagonal=iatom .EQ. jatom, &
1922 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1924 IF (.NOT.
PRESENT(force_a) .AND. &
1925 PRESENT(force_b) .AND. &
1926 PRESENT(force_c) .AND. &
1927 .NOT.
PRESENT(pabc) .AND. &
1928 PRESENT(mat_dabc) .AND. &
1929 .NOT.
PRESENT(mat_adbc) .AND. &
1930 PRESENT(mat_abdc))
THEN
1931 CALL integrate_set_3c( &
1932 param%par, potential_parameter, &
1933 la_min(iset), la_max(iset), &
1934 lb_min(jset), lb_max(jset), &
1935 lc_min(kset), lc_max(kset), &
1936 npgfa(iset), npgfb(jset), npgfc(kset), &
1937 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1940 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1941 offset_a_start, offset_b_start, offset_c_start, &
1942 0, 0, first_set - 1, &
1943 sphi_a, sphi_b, sphi_c, &
1945 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1949force_b=force_b(jkind)%forces(:, atom_b), &
1950force_c=force_c(kkind)%forces(:, atom_c), &
1951 do_symmetric=do_symmetric, &
1952 on_diagonal=iatom .EQ. jatom, &
1956 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1958 IF (.NOT.
PRESENT(force_a) .AND. &
1959 PRESENT(force_b) .AND. &
1960 PRESENT(force_c) .AND. &
1961 .NOT.
PRESENT(pabc) .AND. &
1962 PRESENT(mat_dabc) .AND. &
1963 PRESENT(mat_adbc) .AND. &
1964 .NOT.
PRESENT(mat_abdc))
THEN
1965 CALL integrate_set_3c( &
1966 param%par, potential_parameter, &
1967 la_min(iset), la_max(iset), &
1968 lb_min(jset), lb_max(jset), &
1969 lc_min(kset), lc_max(kset), &
1970 npgfa(iset), npgfb(jset), npgfc(kset), &
1971 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1974 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1975 offset_a_start, offset_b_start, offset_c_start, &
1976 0, 0, first_set - 1, &
1977 sphi_a, sphi_b, sphi_c, &
1979 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1983force_b=force_b(jkind)%forces(:, atom_b), &
1984force_c=force_c(kkind)%forces(:, atom_c), &
1985 do_symmetric=do_symmetric, &
1986 on_diagonal=iatom .EQ. jatom, &
1990 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1992 IF (.NOT.
PRESENT(force_a) .AND. &
1993 PRESENT(force_b) .AND. &
1994 PRESENT(force_c) .AND. &
1995 .NOT.
PRESENT(pabc) .AND. &
1996 PRESENT(mat_dabc) .AND. &
1997 PRESENT(mat_adbc) .AND. &
1998 PRESENT(mat_abdc))
THEN
1999 CALL integrate_set_3c( &
2000 param%par, potential_parameter, &
2001 la_min(iset), la_max(iset), &
2002 lb_min(jset), lb_max(jset), &
2003 lc_min(kset), lc_max(kset), &
2004 npgfa(iset), npgfb(jset), npgfc(kset), &
2005 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2008 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2009 offset_a_start, offset_b_start, offset_c_start, &
2010 0, 0, first_set - 1, &
2011 sphi_a, sphi_b, sphi_c, &
2013 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2017force_b=force_b(jkind)%forces(:, atom_b), &
2018force_c=force_c(kkind)%forces(:, atom_c), &
2019 do_symmetric=do_symmetric, &
2020 on_diagonal=iatom .EQ. jatom, &
2024 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2026 IF (
PRESENT(force_a) .AND. &
2027 .NOT.
PRESENT(force_b) .AND. &
2028 .NOT.
PRESENT(force_c) .AND. &
2029 .NOT.
PRESENT(pabc) .AND. &
2030 .NOT.
PRESENT(mat_dabc) .AND. &
2031 .NOT.
PRESENT(mat_adbc) .AND. &
2032 .NOT.
PRESENT(mat_abdc))
THEN
2033 CALL integrate_set_3c( &
2034 param%par, potential_parameter, &
2035 la_min(iset), la_max(iset), &
2036 lb_min(jset), lb_max(jset), &
2037 lc_min(kset), lc_max(kset), &
2038 npgfa(iset), npgfb(jset), npgfc(kset), &
2039 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2042 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2043 offset_a_start, offset_b_start, offset_c_start, &
2044 0, 0, first_set - 1, &
2045 sphi_a, sphi_b, sphi_c, &
2047 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2050force_a=force_a(ikind)%forces(:, atom_a), &
2053 do_symmetric=do_symmetric, &
2054 on_diagonal=iatom .EQ. jatom, &
2058 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2060 IF (
PRESENT(force_a) .AND. &
2061 .NOT.
PRESENT(force_b) .AND. &
2062 .NOT.
PRESENT(force_c) .AND. &
2063 .NOT.
PRESENT(pabc) .AND. &
2064 .NOT.
PRESENT(mat_dabc) .AND. &
2065 .NOT.
PRESENT(mat_adbc) .AND. &
2066 PRESENT(mat_abdc))
THEN
2067 CALL integrate_set_3c( &
2068 param%par, potential_parameter, &
2069 la_min(iset), la_max(iset), &
2070 lb_min(jset), lb_max(jset), &
2071 lc_min(kset), lc_max(kset), &
2072 npgfa(iset), npgfb(jset), npgfc(kset), &
2073 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2076 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2077 offset_a_start, offset_b_start, offset_c_start, &
2078 0, 0, first_set - 1, &
2079 sphi_a, sphi_b, sphi_c, &
2081 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2084force_a=force_a(ikind)%forces(:, atom_a), &
2087 do_symmetric=do_symmetric, &
2088 on_diagonal=iatom .EQ. jatom, &
2092 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2094 IF (
PRESENT(force_a) .AND. &
2095 .NOT.
PRESENT(force_b) .AND. &
2096 .NOT.
PRESENT(force_c) .AND. &
2097 .NOT.
PRESENT(pabc) .AND. &
2098 .NOT.
PRESENT(mat_dabc) .AND. &
2099 PRESENT(mat_adbc) .AND. &
2100 .NOT.
PRESENT(mat_abdc))
THEN
2101 CALL integrate_set_3c( &
2102 param%par, potential_parameter, &
2103 la_min(iset), la_max(iset), &
2104 lb_min(jset), lb_max(jset), &
2105 lc_min(kset), lc_max(kset), &
2106 npgfa(iset), npgfb(jset), npgfc(kset), &
2107 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2110 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2111 offset_a_start, offset_b_start, offset_c_start, &
2112 0, 0, first_set - 1, &
2113 sphi_a, sphi_b, sphi_c, &
2115 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2118force_a=force_a(ikind)%forces(:, atom_a), &
2121 do_symmetric=do_symmetric, &
2122 on_diagonal=iatom .EQ. jatom, &
2126 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2128 IF (
PRESENT(force_a) .AND. &
2129 .NOT.
PRESENT(force_b) .AND. &
2130 .NOT.
PRESENT(force_c) .AND. &
2131 .NOT.
PRESENT(pabc) .AND. &
2132 .NOT.
PRESENT(mat_dabc) .AND. &
2133 PRESENT(mat_adbc) .AND. &
2134 PRESENT(mat_abdc))
THEN
2135 CALL integrate_set_3c( &
2136 param%par, potential_parameter, &
2137 la_min(iset), la_max(iset), &
2138 lb_min(jset), lb_max(jset), &
2139 lc_min(kset), lc_max(kset), &
2140 npgfa(iset), npgfb(jset), npgfc(kset), &
2141 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2144 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2145 offset_a_start, offset_b_start, offset_c_start, &
2146 0, 0, first_set - 1, &
2147 sphi_a, sphi_b, sphi_c, &
2149 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2152force_a=force_a(ikind)%forces(:, atom_a), &
2155 do_symmetric=do_symmetric, &
2156 on_diagonal=iatom .EQ. jatom, &
2160 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2162 IF (
PRESENT(force_a) .AND. &
2163 .NOT.
PRESENT(force_b) .AND. &
2164 .NOT.
PRESENT(force_c) .AND. &
2165 .NOT.
PRESENT(pabc) .AND. &
2166 PRESENT(mat_dabc) .AND. &
2167 .NOT.
PRESENT(mat_adbc) .AND. &
2168 .NOT.
PRESENT(mat_abdc))
THEN
2169 CALL integrate_set_3c( &
2170 param%par, potential_parameter, &
2171 la_min(iset), la_max(iset), &
2172 lb_min(jset), lb_max(jset), &
2173 lc_min(kset), lc_max(kset), &
2174 npgfa(iset), npgfb(jset), npgfc(kset), &
2175 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2178 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2179 offset_a_start, offset_b_start, offset_c_start, &
2180 0, 0, first_set - 1, &
2181 sphi_a, sphi_b, sphi_c, &
2183 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2186force_a=force_a(ikind)%forces(:, atom_a), &
2189 do_symmetric=do_symmetric, &
2190 on_diagonal=iatom .EQ. jatom, &
2194 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2196 IF (
PRESENT(force_a) .AND. &
2197 .NOT.
PRESENT(force_b) .AND. &
2198 .NOT.
PRESENT(force_c) .AND. &
2199 .NOT.
PRESENT(pabc) .AND. &
2200 PRESENT(mat_dabc) .AND. &
2201 .NOT.
PRESENT(mat_adbc) .AND. &
2202 PRESENT(mat_abdc))
THEN
2203 CALL integrate_set_3c( &
2204 param%par, potential_parameter, &
2205 la_min(iset), la_max(iset), &
2206 lb_min(jset), lb_max(jset), &
2207 lc_min(kset), lc_max(kset), &
2208 npgfa(iset), npgfb(jset), npgfc(kset), &
2209 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2212 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2213 offset_a_start, offset_b_start, offset_c_start, &
2214 0, 0, first_set - 1, &
2215 sphi_a, sphi_b, sphi_c, &
2217 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2220force_a=force_a(ikind)%forces(:, atom_a), &
2223 do_symmetric=do_symmetric, &
2224 on_diagonal=iatom .EQ. jatom, &
2228 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2230 IF (
PRESENT(force_a) .AND. &
2231 .NOT.
PRESENT(force_b) .AND. &
2232 .NOT.
PRESENT(force_c) .AND. &
2233 .NOT.
PRESENT(pabc) .AND. &
2234 PRESENT(mat_dabc) .AND. &
2235 PRESENT(mat_adbc) .AND. &
2236 .NOT.
PRESENT(mat_abdc))
THEN
2237 CALL integrate_set_3c( &
2238 param%par, potential_parameter, &
2239 la_min(iset), la_max(iset), &
2240 lb_min(jset), lb_max(jset), &
2241 lc_min(kset), lc_max(kset), &
2242 npgfa(iset), npgfb(jset), npgfc(kset), &
2243 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2246 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2247 offset_a_start, offset_b_start, offset_c_start, &
2248 0, 0, first_set - 1, &
2249 sphi_a, sphi_b, sphi_c, &
2251 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2254force_a=force_a(ikind)%forces(:, atom_a), &
2257 do_symmetric=do_symmetric, &
2258 on_diagonal=iatom .EQ. jatom, &
2262 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2264 IF (
PRESENT(force_a) .AND. &
2265 .NOT.
PRESENT(force_b) .AND. &
2266 .NOT.
PRESENT(force_c) .AND. &
2267 .NOT.
PRESENT(pabc) .AND. &
2268 PRESENT(mat_dabc) .AND. &
2269 PRESENT(mat_adbc) .AND. &
2270 PRESENT(mat_abdc))
THEN
2271 CALL integrate_set_3c( &
2272 param%par, potential_parameter, &
2273 la_min(iset), la_max(iset), &
2274 lb_min(jset), lb_max(jset), &
2275 lc_min(kset), lc_max(kset), &
2276 npgfa(iset), npgfb(jset), npgfc(kset), &
2277 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2280 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2281 offset_a_start, offset_b_start, offset_c_start, &
2282 0, 0, first_set - 1, &
2283 sphi_a, sphi_b, sphi_c, &
2285 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2288force_a=force_a(ikind)%forces(:, atom_a), &
2291 do_symmetric=do_symmetric, &
2292 on_diagonal=iatom .EQ. jatom, &
2296 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2298 IF (
PRESENT(force_a) .AND. &
2299 .NOT.
PRESENT(force_b) .AND. &
2300 PRESENT(force_c) .AND. &
2301 .NOT.
PRESENT(pabc) .AND. &
2302 .NOT.
PRESENT(mat_dabc) .AND. &
2303 .NOT.
PRESENT(mat_adbc) .AND. &
2304 .NOT.
PRESENT(mat_abdc))
THEN
2305 CALL integrate_set_3c( &
2306 param%par, potential_parameter, &
2307 la_min(iset), la_max(iset), &
2308 lb_min(jset), lb_max(jset), &
2309 lc_min(kset), lc_max(kset), &
2310 npgfa(iset), npgfb(jset), npgfc(kset), &
2311 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2314 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2315 offset_a_start, offset_b_start, offset_c_start, &
2316 0, 0, first_set - 1, &
2317 sphi_a, sphi_b, sphi_c, &
2319 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2322force_a=force_a(ikind)%forces(:, atom_a), &
2324force_c=force_c(kkind)%forces(:, atom_c), &
2325 do_symmetric=do_symmetric, &
2326 on_diagonal=iatom .EQ. jatom, &
2330 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2332 IF (
PRESENT(force_a) .AND. &
2333 .NOT.
PRESENT(force_b) .AND. &
2334 PRESENT(force_c) .AND. &
2335 .NOT.
PRESENT(pabc) .AND. &
2336 .NOT.
PRESENT(mat_dabc) .AND. &
2337 .NOT.
PRESENT(mat_adbc) .AND. &
2338 PRESENT(mat_abdc))
THEN
2339 CALL integrate_set_3c( &
2340 param%par, potential_parameter, &
2341 la_min(iset), la_max(iset), &
2342 lb_min(jset), lb_max(jset), &
2343 lc_min(kset), lc_max(kset), &
2344 npgfa(iset), npgfb(jset), npgfc(kset), &
2345 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2348 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2349 offset_a_start, offset_b_start, offset_c_start, &
2350 0, 0, first_set - 1, &
2351 sphi_a, sphi_b, sphi_c, &
2353 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2356force_a=force_a(ikind)%forces(:, atom_a), &
2358force_c=force_c(kkind)%forces(:, atom_c), &
2359 do_symmetric=do_symmetric, &
2360 on_diagonal=iatom .EQ. jatom, &
2364 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2366 IF (
PRESENT(force_a) .AND. &
2367 .NOT.
PRESENT(force_b) .AND. &
2368 PRESENT(force_c) .AND. &
2369 .NOT.
PRESENT(pabc) .AND. &
2370 .NOT.
PRESENT(mat_dabc) .AND. &
2371 PRESENT(mat_adbc) .AND. &
2372 .NOT.
PRESENT(mat_abdc))
THEN
2373 CALL integrate_set_3c( &
2374 param%par, potential_parameter, &
2375 la_min(iset), la_max(iset), &
2376 lb_min(jset), lb_max(jset), &
2377 lc_min(kset), lc_max(kset), &
2378 npgfa(iset), npgfb(jset), npgfc(kset), &
2379 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2382 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2383 offset_a_start, offset_b_start, offset_c_start, &
2384 0, 0, first_set - 1, &
2385 sphi_a, sphi_b, sphi_c, &
2387 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2390force_a=force_a(ikind)%forces(:, atom_a), &
2392force_c=force_c(kkind)%forces(:, atom_c), &
2393 do_symmetric=do_symmetric, &
2394 on_diagonal=iatom .EQ. jatom, &
2398 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2400 IF (
PRESENT(force_a) .AND. &
2401 .NOT.
PRESENT(force_b) .AND. &
2402 PRESENT(force_c) .AND. &
2403 .NOT.
PRESENT(pabc) .AND. &
2404 .NOT.
PRESENT(mat_dabc) .AND. &
2405 PRESENT(mat_adbc) .AND. &
2406 PRESENT(mat_abdc))
THEN
2407 CALL integrate_set_3c( &
2408 param%par, potential_parameter, &
2409 la_min(iset), la_max(iset), &
2410 lb_min(jset), lb_max(jset), &
2411 lc_min(kset), lc_max(kset), &
2412 npgfa(iset), npgfb(jset), npgfc(kset), &
2413 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2416 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2417 offset_a_start, offset_b_start, offset_c_start, &
2418 0, 0, first_set - 1, &
2419 sphi_a, sphi_b, sphi_c, &
2421 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2424force_a=force_a(ikind)%forces(:, atom_a), &
2426force_c=force_c(kkind)%forces(:, atom_c), &
2427 do_symmetric=do_symmetric, &
2428 on_diagonal=iatom .EQ. jatom, &
2432 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2434 IF (
PRESENT(force_a) .AND. &
2435 .NOT.
PRESENT(force_b) .AND. &
2436 PRESENT(force_c) .AND. &
2437 .NOT.
PRESENT(pabc) .AND. &
2438 PRESENT(mat_dabc) .AND. &
2439 .NOT.
PRESENT(mat_adbc) .AND. &
2440 .NOT.
PRESENT(mat_abdc))
THEN
2441 CALL integrate_set_3c( &
2442 param%par, potential_parameter, &
2443 la_min(iset), la_max(iset), &
2444 lb_min(jset), lb_max(jset), &
2445 lc_min(kset), lc_max(kset), &
2446 npgfa(iset), npgfb(jset), npgfc(kset), &
2447 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2450 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2451 offset_a_start, offset_b_start, offset_c_start, &
2452 0, 0, first_set - 1, &
2453 sphi_a, sphi_b, sphi_c, &
2455 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2458force_a=force_a(ikind)%forces(:, atom_a), &
2460force_c=force_c(kkind)%forces(:, atom_c), &
2461 do_symmetric=do_symmetric, &
2462 on_diagonal=iatom .EQ. jatom, &
2466 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2468 IF (
PRESENT(force_a) .AND. &
2469 .NOT.
PRESENT(force_b) .AND. &
2470 PRESENT(force_c) .AND. &
2471 .NOT.
PRESENT(pabc) .AND. &
2472 PRESENT(mat_dabc) .AND. &
2473 .NOT.
PRESENT(mat_adbc) .AND. &
2474 PRESENT(mat_abdc))
THEN
2475 CALL integrate_set_3c( &
2476 param%par, potential_parameter, &
2477 la_min(iset), la_max(iset), &
2478 lb_min(jset), lb_max(jset), &
2479 lc_min(kset), lc_max(kset), &
2480 npgfa(iset), npgfb(jset), npgfc(kset), &
2481 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2484 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2485 offset_a_start, offset_b_start, offset_c_start, &
2486 0, 0, first_set - 1, &
2487 sphi_a, sphi_b, sphi_c, &
2489 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2492force_a=force_a(ikind)%forces(:, atom_a), &
2494force_c=force_c(kkind)%forces(:, atom_c), &
2495 do_symmetric=do_symmetric, &
2496 on_diagonal=iatom .EQ. jatom, &
2500 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2502 IF (
PRESENT(force_a) .AND. &
2503 .NOT.
PRESENT(force_b) .AND. &
2504 PRESENT(force_c) .AND. &
2505 .NOT.
PRESENT(pabc) .AND. &
2506 PRESENT(mat_dabc) .AND. &
2507 PRESENT(mat_adbc) .AND. &
2508 .NOT.
PRESENT(mat_abdc))
THEN
2509 CALL integrate_set_3c( &
2510 param%par, potential_parameter, &
2511 la_min(iset), la_max(iset), &
2512 lb_min(jset), lb_max(jset), &
2513 lc_min(kset), lc_max(kset), &
2514 npgfa(iset), npgfb(jset), npgfc(kset), &
2515 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2518 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2519 offset_a_start, offset_b_start, offset_c_start, &
2520 0, 0, first_set - 1, &
2521 sphi_a, sphi_b, sphi_c, &
2523 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2526force_a=force_a(ikind)%forces(:, atom_a), &
2528force_c=force_c(kkind)%forces(:, atom_c), &
2529 do_symmetric=do_symmetric, &
2530 on_diagonal=iatom .EQ. jatom, &
2534 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2536 IF (
PRESENT(force_a) .AND. &
2537 .NOT.
PRESENT(force_b) .AND. &
2538 PRESENT(force_c) .AND. &
2539 .NOT.
PRESENT(pabc) .AND. &
2540 PRESENT(mat_dabc) .AND. &
2541 PRESENT(mat_adbc) .AND. &
2542 PRESENT(mat_abdc))
THEN
2543 CALL integrate_set_3c( &
2544 param%par, potential_parameter, &
2545 la_min(iset), la_max(iset), &
2546 lb_min(jset), lb_max(jset), &
2547 lc_min(kset), lc_max(kset), &
2548 npgfa(iset), npgfb(jset), npgfc(kset), &
2549 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2552 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2553 offset_a_start, offset_b_start, offset_c_start, &
2554 0, 0, first_set - 1, &
2555 sphi_a, sphi_b, sphi_c, &
2557 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2560force_a=force_a(ikind)%forces(:, atom_a), &
2562force_c=force_c(kkind)%forces(:, atom_c), &
2563 do_symmetric=do_symmetric, &
2564 on_diagonal=iatom .EQ. jatom, &
2568 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2570 IF (
PRESENT(force_a) .AND. &
2571 PRESENT(force_b) .AND. &
2572 .NOT.
PRESENT(force_c) .AND. &
2573 .NOT.
PRESENT(pabc) .AND. &
2574 .NOT.
PRESENT(mat_dabc) .AND. &
2575 .NOT.
PRESENT(mat_adbc) .AND. &
2576 .NOT.
PRESENT(mat_abdc))
THEN
2577 CALL integrate_set_3c( &
2578 param%par, potential_parameter, &
2579 la_min(iset), la_max(iset), &
2580 lb_min(jset), lb_max(jset), &
2581 lc_min(kset), lc_max(kset), &
2582 npgfa(iset), npgfb(jset), npgfc(kset), &
2583 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2586 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2587 offset_a_start, offset_b_start, offset_c_start, &
2588 0, 0, first_set - 1, &
2589 sphi_a, sphi_b, sphi_c, &
2591 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2594force_a=force_a(ikind)%forces(:, atom_a), &
2595force_b=force_b(jkind)%forces(:, atom_b), &
2597 do_symmetric=do_symmetric, &
2598 on_diagonal=iatom .EQ. jatom, &
2602 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2604 IF (
PRESENT(force_a) .AND. &
2605 PRESENT(force_b) .AND. &
2606 .NOT.
PRESENT(force_c) .AND. &
2607 .NOT.
PRESENT(pabc) .AND. &
2608 .NOT.
PRESENT(mat_dabc) .AND. &
2609 .NOT.
PRESENT(mat_adbc) .AND. &
2610 PRESENT(mat_abdc))
THEN
2611 CALL integrate_set_3c( &
2612 param%par, potential_parameter, &
2613 la_min(iset), la_max(iset), &
2614 lb_min(jset), lb_max(jset), &
2615 lc_min(kset), lc_max(kset), &
2616 npgfa(iset), npgfb(jset), npgfc(kset), &
2617 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2620 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2621 offset_a_start, offset_b_start, offset_c_start, &
2622 0, 0, first_set - 1, &
2623 sphi_a, sphi_b, sphi_c, &
2625 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2628force_a=force_a(ikind)%forces(:, atom_a), &
2629force_b=force_b(jkind)%forces(:, atom_b), &
2631 do_symmetric=do_symmetric, &
2632 on_diagonal=iatom .EQ. jatom, &
2636 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2638 IF (
PRESENT(force_a) .AND. &
2639 PRESENT(force_b) .AND. &
2640 .NOT.
PRESENT(force_c) .AND. &
2641 .NOT.
PRESENT(pabc) .AND. &
2642 .NOT.
PRESENT(mat_dabc) .AND. &
2643 PRESENT(mat_adbc) .AND. &
2644 .NOT.
PRESENT(mat_abdc))
THEN
2645 CALL integrate_set_3c( &
2646 param%par, potential_parameter, &
2647 la_min(iset), la_max(iset), &
2648 lb_min(jset), lb_max(jset), &
2649 lc_min(kset), lc_max(kset), &
2650 npgfa(iset), npgfb(jset), npgfc(kset), &
2651 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2654 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2655 offset_a_start, offset_b_start, offset_c_start, &
2656 0, 0, first_set - 1, &
2657 sphi_a, sphi_b, sphi_c, &
2659 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2662force_a=force_a(ikind)%forces(:, atom_a), &
2663force_b=force_b(jkind)%forces(:, atom_b), &
2665 do_symmetric=do_symmetric, &
2666 on_diagonal=iatom .EQ. jatom, &
2670 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2672 IF (
PRESENT(force_a) .AND. &
2673 PRESENT(force_b) .AND. &
2674 .NOT.
PRESENT(force_c) .AND. &
2675 .NOT.
PRESENT(pabc) .AND. &
2676 .NOT.
PRESENT(mat_dabc) .AND. &
2677 PRESENT(mat_adbc) .AND. &
2678 PRESENT(mat_abdc))
THEN
2679 CALL integrate_set_3c( &
2680 param%par, potential_parameter, &
2681 la_min(iset), la_max(iset), &
2682 lb_min(jset), lb_max(jset), &
2683 lc_min(kset), lc_max(kset), &
2684 npgfa(iset), npgfb(jset), npgfc(kset), &
2685 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2688 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2689 offset_a_start, offset_b_start, offset_c_start, &
2690 0, 0, first_set - 1, &
2691 sphi_a, sphi_b, sphi_c, &
2693 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2696force_a=force_a(ikind)%forces(:, atom_a), &
2697force_b=force_b(jkind)%forces(:, atom_b), &
2699 do_symmetric=do_symmetric, &
2700 on_diagonal=iatom .EQ. jatom, &
2704 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2706 IF (
PRESENT(force_a) .AND. &
2707 PRESENT(force_b) .AND. &
2708 .NOT.
PRESENT(force_c) .AND. &
2709 .NOT.
PRESENT(pabc) .AND. &
2710 PRESENT(mat_dabc) .AND. &
2711 .NOT.
PRESENT(mat_adbc) .AND. &
2712 .NOT.
PRESENT(mat_abdc))
THEN
2713 CALL integrate_set_3c( &
2714 param%par, potential_parameter, &
2715 la_min(iset), la_max(iset), &
2716 lb_min(jset), lb_max(jset), &
2717 lc_min(kset), lc_max(kset), &
2718 npgfa(iset), npgfb(jset), npgfc(kset), &
2719 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2722 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2723 offset_a_start, offset_b_start, offset_c_start, &
2724 0, 0, first_set - 1, &
2725 sphi_a, sphi_b, sphi_c, &
2727 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2730force_a=force_a(ikind)%forces(:, atom_a), &
2731force_b=force_b(jkind)%forces(:, atom_b), &
2733 do_symmetric=do_symmetric, &
2734 on_diagonal=iatom .EQ. jatom, &
2738 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2740 IF (
PRESENT(force_a) .AND. &
2741 PRESENT(force_b) .AND. &
2742 .NOT.
PRESENT(force_c) .AND. &
2743 .NOT.
PRESENT(pabc) .AND. &
2744 PRESENT(mat_dabc) .AND. &
2745 .NOT.
PRESENT(mat_adbc) .AND. &
2746 PRESENT(mat_abdc))
THEN
2747 CALL integrate_set_3c( &
2748 param%par, potential_parameter, &
2749 la_min(iset), la_max(iset), &
2750 lb_min(jset), lb_max(jset), &
2751 lc_min(kset), lc_max(kset), &
2752 npgfa(iset), npgfb(jset), npgfc(kset), &
2753 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2756 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2757 offset_a_start, offset_b_start, offset_c_start, &
2758 0, 0, first_set - 1, &
2759 sphi_a, sphi_b, sphi_c, &
2761 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2764force_a=force_a(ikind)%forces(:, atom_a), &
2765force_b=force_b(jkind)%forces(:, atom_b), &
2767 do_symmetric=do_symmetric, &
2768 on_diagonal=iatom .EQ. jatom, &
2772 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2774 IF (
PRESENT(force_a) .AND. &
2775 PRESENT(force_b) .AND. &
2776 .NOT.
PRESENT(force_c) .AND. &
2777 .NOT.
PRESENT(pabc) .AND. &
2778 PRESENT(mat_dabc) .AND. &
2779 PRESENT(mat_adbc) .AND. &
2780 .NOT.
PRESENT(mat_abdc))
THEN
2781 CALL integrate_set_3c( &
2782 param%par, potential_parameter, &
2783 la_min(iset), la_max(iset), &
2784 lb_min(jset), lb_max(jset), &
2785 lc_min(kset), lc_max(kset), &
2786 npgfa(iset), npgfb(jset), npgfc(kset), &
2787 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2790 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2791 offset_a_start, offset_b_start, offset_c_start, &
2792 0, 0, first_set - 1, &
2793 sphi_a, sphi_b, sphi_c, &
2795 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2798force_a=force_a(ikind)%forces(:, atom_a), &
2799force_b=force_b(jkind)%forces(:, atom_b), &
2801 do_symmetric=do_symmetric, &
2802 on_diagonal=iatom .EQ. jatom, &
2806 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2808 IF (
PRESENT(force_a) .AND. &
2809 PRESENT(force_b) .AND. &
2810 .NOT.
PRESENT(force_c) .AND. &
2811 .NOT.
PRESENT(pabc) .AND. &
2812 PRESENT(mat_dabc) .AND. &
2813 PRESENT(mat_adbc) .AND. &
2814 PRESENT(mat_abdc))
THEN
2815 CALL integrate_set_3c( &
2816 param%par, potential_parameter, &
2817 la_min(iset), la_max(iset), &
2818 lb_min(jset), lb_max(jset), &
2819 lc_min(kset), lc_max(kset), &
2820 npgfa(iset), npgfb(jset), npgfc(kset), &
2821 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2824 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2825 offset_a_start, offset_b_start, offset_c_start, &
2826 0, 0, first_set - 1, &
2827 sphi_a, sphi_b, sphi_c, &
2829 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2832force_a=force_a(ikind)%forces(:, atom_a), &
2833force_b=force_b(jkind)%forces(:, atom_b), &
2835 do_symmetric=do_symmetric, &
2836 on_diagonal=iatom .EQ. jatom, &
2840 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2842 IF (
PRESENT(force_a) .AND. &
2843 PRESENT(force_b) .AND. &
2844 PRESENT(force_c) .AND. &
2845 .NOT.
PRESENT(pabc) .AND. &
2846 .NOT.
PRESENT(mat_dabc) .AND. &
2847 .NOT.
PRESENT(mat_adbc) .AND. &
2848 .NOT.
PRESENT(mat_abdc))
THEN
2849 CALL integrate_set_3c( &
2850 param%par, potential_parameter, &
2851 la_min(iset), la_max(iset), &
2852 lb_min(jset), lb_max(jset), &
2853 lc_min(kset), lc_max(kset), &
2854 npgfa(iset), npgfb(jset), npgfc(kset), &
2855 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2858 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2859 offset_a_start, offset_b_start, offset_c_start, &
2860 0, 0, first_set - 1, &
2861 sphi_a, sphi_b, sphi_c, &
2863 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2866force_a=force_a(ikind)%forces(:, atom_a), &
2867force_b=force_b(jkind)%forces(:, atom_b), &
2868force_c=force_c(kkind)%forces(:, atom_c), &
2869 do_symmetric=do_symmetric, &
2870 on_diagonal=iatom .EQ. jatom, &
2874 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2876 IF (
PRESENT(force_a) .AND. &
2877 PRESENT(force_b) .AND. &
2878 PRESENT(force_c) .AND. &
2879 .NOT.
PRESENT(pabc) .AND. &
2880 .NOT.
PRESENT(mat_dabc) .AND. &
2881 .NOT.
PRESENT(mat_adbc) .AND. &
2882 PRESENT(mat_abdc))
THEN
2883 CALL integrate_set_3c( &
2884 param%par, potential_parameter, &
2885 la_min(iset), la_max(iset), &
2886 lb_min(jset), lb_max(jset), &
2887 lc_min(kset), lc_max(kset), &
2888 npgfa(iset), npgfb(jset), npgfc(kset), &
2889 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2892 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2893 offset_a_start, offset_b_start, offset_c_start, &
2894 0, 0, first_set - 1, &
2895 sphi_a, sphi_b, sphi_c, &
2897 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2900force_a=force_a(ikind)%forces(:, atom_a), &
2901force_b=force_b(jkind)%forces(:, atom_b), &
2902force_c=force_c(kkind)%forces(:, atom_c), &
2903 do_symmetric=do_symmetric, &
2904 on_diagonal=iatom .EQ. jatom, &
2908 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2910 IF (
PRESENT(force_a) .AND. &
2911 PRESENT(force_b) .AND. &
2912 PRESENT(force_c) .AND. &
2913 .NOT.
PRESENT(pabc) .AND. &
2914 .NOT.
PRESENT(mat_dabc) .AND. &
2915 PRESENT(mat_adbc) .AND. &
2916 .NOT.
PRESENT(mat_abdc))
THEN
2917 CALL integrate_set_3c( &
2918 param%par, potential_parameter, &
2919 la_min(iset), la_max(iset), &
2920 lb_min(jset), lb_max(jset), &
2921 lc_min(kset), lc_max(kset), &
2922 npgfa(iset), npgfb(jset), npgfc(kset), &
2923 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2926 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2927 offset_a_start, offset_b_start, offset_c_start, &
2928 0, 0, first_set - 1, &
2929 sphi_a, sphi_b, sphi_c, &
2931 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2934force_a=force_a(ikind)%forces(:, atom_a), &
2935force_b=force_b(jkind)%forces(:, atom_b), &
2936force_c=force_c(kkind)%forces(:, atom_c), &
2937 do_symmetric=do_symmetric, &
2938 on_diagonal=iatom .EQ. jatom, &
2942 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2944 IF (
PRESENT(force_a) .AND. &
2945 PRESENT(force_b) .AND. &
2946 PRESENT(force_c) .AND. &
2947 .NOT.
PRESENT(pabc) .AND. &
2948 .NOT.
PRESENT(mat_dabc) .AND. &
2949 PRESENT(mat_adbc) .AND. &
2950 PRESENT(mat_abdc))
THEN
2951 CALL integrate_set_3c( &
2952 param%par, potential_parameter, &
2953 la_min(iset), la_max(iset), &
2954 lb_min(jset), lb_max(jset), &
2955 lc_min(kset), lc_max(kset), &
2956 npgfa(iset), npgfb(jset), npgfc(kset), &
2957 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2960 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2961 offset_a_start, offset_b_start, offset_c_start, &
2962 0, 0, first_set - 1, &
2963 sphi_a, sphi_b, sphi_c, &
2965 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2968force_a=force_a(ikind)%forces(:, atom_a), &
2969force_b=force_b(jkind)%forces(:, atom_b), &
2970force_c=force_c(kkind)%forces(:, atom_c), &
2971 do_symmetric=do_symmetric, &
2972 on_diagonal=iatom .EQ. jatom, &
2976 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2978 IF (
PRESENT(force_a) .AND. &
2979 PRESENT(force_b) .AND. &
2980 PRESENT(force_c) .AND. &
2981 .NOT.
PRESENT(pabc) .AND. &
2982 PRESENT(mat_dabc) .AND. &
2983 .NOT.
PRESENT(mat_adbc) .AND. &
2984 .NOT.
PRESENT(mat_abdc))
THEN
2985 CALL integrate_set_3c( &
2986 param%par, potential_parameter, &
2987 la_min(iset), la_max(iset), &
2988 lb_min(jset), lb_max(jset), &
2989 lc_min(kset), lc_max(kset), &
2990 npgfa(iset), npgfb(jset), npgfc(kset), &
2991 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2994 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2995 offset_a_start, offset_b_start, offset_c_start, &
2996 0, 0, first_set - 1, &
2997 sphi_a, sphi_b, sphi_c, &
2999 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3002force_a=force_a(ikind)%forces(:, atom_a), &
3003force_b=force_b(jkind)%forces(:, atom_b), &
3004force_c=force_c(kkind)%forces(:, atom_c), &
3005 do_symmetric=do_symmetric, &
3006 on_diagonal=iatom .EQ. jatom, &
3010 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3012 IF (
PRESENT(force_a) .AND. &
3013 PRESENT(force_b) .AND. &
3014 PRESENT(force_c) .AND. &
3015 .NOT.
PRESENT(pabc) .AND. &
3016 PRESENT(mat_dabc) .AND. &
3017 .NOT.
PRESENT(mat_adbc) .AND. &
3018 PRESENT(mat_abdc))
THEN
3019 CALL integrate_set_3c( &
3020 param%par, potential_parameter, &
3021 la_min(iset), la_max(iset), &
3022 lb_min(jset), lb_max(jset), &
3023 lc_min(kset), lc_max(kset), &
3024 npgfa(iset), npgfb(jset), npgfc(kset), &
3025 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3028 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3029 offset_a_start, offset_b_start, offset_c_start, &
3030 0, 0, first_set - 1, &
3031 sphi_a, sphi_b, sphi_c, &
3033 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3036force_a=force_a(ikind)%forces(:, atom_a), &
3037force_b=force_b(jkind)%forces(:, atom_b), &
3038force_c=force_c(kkind)%forces(:, atom_c), &
3039 do_symmetric=do_symmetric, &
3040 on_diagonal=iatom .EQ. jatom, &
3044 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3046 IF (
PRESENT(force_a) .AND. &
3047 PRESENT(force_b) .AND. &
3048 PRESENT(force_c) .AND. &
3049 .NOT.
PRESENT(pabc) .AND. &
3050 PRESENT(mat_dabc) .AND. &
3051 PRESENT(mat_adbc) .AND. &
3052 .NOT.
PRESENT(mat_abdc))
THEN
3053 CALL integrate_set_3c( &
3054 param%par, potential_parameter, &
3055 la_min(iset), la_max(iset), &
3056 lb_min(jset), lb_max(jset), &
3057 lc_min(kset), lc_max(kset), &
3058 npgfa(iset), npgfb(jset), npgfc(kset), &
3059 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3062 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3063 offset_a_start, offset_b_start, offset_c_start, &
3064 0, 0, first_set - 1, &
3065 sphi_a, sphi_b, sphi_c, &
3067 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3070force_a=force_a(ikind)%forces(:, atom_a), &
3071force_b=force_b(jkind)%forces(:, atom_b), &
3072force_c=force_c(kkind)%forces(:, atom_c), &
3073 do_symmetric=do_symmetric, &
3074 on_diagonal=iatom .EQ. jatom, &
3078 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3080 IF (
PRESENT(force_a) .AND. &
3081 PRESENT(force_b) .AND. &
3082 PRESENT(force_c) .AND. &
3083 .NOT.
PRESENT(pabc) .AND. &
3084 PRESENT(mat_dabc) .AND. &
3085 PRESENT(mat_adbc) .AND. &
3086 PRESENT(mat_abdc))
THEN
3087 CALL integrate_set_3c( &
3088 param%par, potential_parameter, &
3089 la_min(iset), la_max(iset), &
3090 lb_min(jset), lb_max(jset), &
3091 lc_min(kset), lc_max(kset), &
3092 npgfa(iset), npgfb(jset), npgfc(kset), &
3093 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3096 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3097 offset_a_start, offset_b_start, offset_c_start, &
3098 0, 0, first_set - 1, &
3099 sphi_a, sphi_b, sphi_c, &
3101 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3104force_a=force_a(ikind)%forces(:, atom_a), &
3105force_b=force_b(jkind)%forces(:, atom_b), &
3106force_c=force_c(kkind)%forces(:, atom_c), &
3107 do_symmetric=do_symmetric, &
3108 on_diagonal=iatom .EQ. jatom, &
3112 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3114 IF (.NOT.
PRESENT(force_a) .AND. &
3115 .NOT.
PRESENT(force_b) .AND. &
3116 .NOT.
PRESENT(force_c) .AND. &
3117 PRESENT(pabc) .AND. &
3118 .NOT.
PRESENT(mat_dabc) .AND. &
3119 .NOT.
PRESENT(mat_adbc) .AND. &
3120 .NOT.
PRESENT(mat_abdc))
THEN
3121 CALL integrate_set_3c( &
3122 param%par, potential_parameter, &
3123 la_min(iset), la_max(iset), &
3124 lb_min(jset), lb_max(jset), &
3125 lc_min(kset), lc_max(kset), &
3126 npgfa(iset), npgfb(jset), npgfc(kset), &
3127 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3130 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3131 offset_a_start, offset_b_start, offset_c_start, &
3132 0, 0, first_set - 1, &
3133 sphi_a, sphi_b, sphi_c, &
3135 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3141 do_symmetric=do_symmetric, &
3142 on_diagonal=iatom .EQ. jatom, &
3146 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3148 IF (.NOT.
PRESENT(force_a) .AND. &
3149 .NOT.
PRESENT(force_b) .AND. &
3150 .NOT.
PRESENT(force_c) .AND. &
3151 PRESENT(pabc) .AND. &
3152 .NOT.
PRESENT(mat_dabc) .AND. &
3153 .NOT.
PRESENT(mat_adbc) .AND. &
3154 PRESENT(mat_abdc))
THEN
3155 CALL integrate_set_3c( &
3156 param%par, potential_parameter, &
3157 la_min(iset), la_max(iset), &
3158 lb_min(jset), lb_max(jset), &
3159 lc_min(kset), lc_max(kset), &
3160 npgfa(iset), npgfb(jset), npgfc(kset), &
3161 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3164 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3165 offset_a_start, offset_b_start, offset_c_start, &
3166 0, 0, first_set - 1, &
3167 sphi_a, sphi_b, sphi_c, &
3169 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3175 do_symmetric=do_symmetric, &
3176 on_diagonal=iatom .EQ. jatom, &
3180 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3182 IF (.NOT.
PRESENT(force_a) .AND. &
3183 .NOT.
PRESENT(force_b) .AND. &
3184 .NOT.
PRESENT(force_c) .AND. &
3185 PRESENT(pabc) .AND. &
3186 .NOT.
PRESENT(mat_dabc) .AND. &
3187 PRESENT(mat_adbc) .AND. &
3188 .NOT.
PRESENT(mat_abdc))
THEN
3189 CALL integrate_set_3c( &
3190 param%par, potential_parameter, &
3191 la_min(iset), la_max(iset), &
3192 lb_min(jset), lb_max(jset), &
3193 lc_min(kset), lc_max(kset), &
3194 npgfa(iset), npgfb(jset), npgfc(kset), &
3195 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3198 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3199 offset_a_start, offset_b_start, offset_c_start, &
3200 0, 0, first_set - 1, &
3201 sphi_a, sphi_b, sphi_c, &
3203 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3209 do_symmetric=do_symmetric, &
3210 on_diagonal=iatom .EQ. jatom, &
3214 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3216 IF (.NOT.
PRESENT(force_a) .AND. &
3217 .NOT.
PRESENT(force_b) .AND. &
3218 .NOT.
PRESENT(force_c) .AND. &
3219 PRESENT(pabc) .AND. &
3220 .NOT.
PRESENT(mat_dabc) .AND. &
3221 PRESENT(mat_adbc) .AND. &
3222 PRESENT(mat_abdc))
THEN
3223 CALL integrate_set_3c( &
3224 param%par, potential_parameter, &
3225 la_min(iset), la_max(iset), &
3226 lb_min(jset), lb_max(jset), &
3227 lc_min(kset), lc_max(kset), &
3228 npgfa(iset), npgfb(jset), npgfc(kset), &
3229 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3232 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3233 offset_a_start, offset_b_start, offset_c_start, &
3234 0, 0, first_set - 1, &
3235 sphi_a, sphi_b, sphi_c, &
3237 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3243 do_symmetric=do_symmetric, &
3244 on_diagonal=iatom .EQ. jatom, &
3248 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3250 IF (.NOT.
PRESENT(force_a) .AND. &
3251 .NOT.
PRESENT(force_b) .AND. &
3252 .NOT.
PRESENT(force_c) .AND. &
3253 PRESENT(pabc) .AND. &
3254 PRESENT(mat_dabc) .AND. &
3255 .NOT.
PRESENT(mat_adbc) .AND. &
3256 .NOT.
PRESENT(mat_abdc))
THEN
3257 CALL integrate_set_3c( &
3258 param%par, potential_parameter, &
3259 la_min(iset), la_max(iset), &
3260 lb_min(jset), lb_max(jset), &
3261 lc_min(kset), lc_max(kset), &
3262 npgfa(iset), npgfb(jset), npgfc(kset), &
3263 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3266 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3267 offset_a_start, offset_b_start, offset_c_start, &
3268 0, 0, first_set - 1, &
3269 sphi_a, sphi_b, sphi_c, &
3271 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3277 do_symmetric=do_symmetric, &
3278 on_diagonal=iatom .EQ. jatom, &
3282 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3284 IF (.NOT.
PRESENT(force_a) .AND. &
3285 .NOT.
PRESENT(force_b) .AND. &
3286 .NOT.
PRESENT(force_c) .AND. &
3287 PRESENT(pabc) .AND. &
3288 PRESENT(mat_dabc) .AND. &
3289 .NOT.
PRESENT(mat_adbc) .AND. &
3290 PRESENT(mat_abdc))
THEN
3291 CALL integrate_set_3c( &
3292 param%par, potential_parameter, &
3293 la_min(iset), la_max(iset), &
3294 lb_min(jset), lb_max(jset), &
3295 lc_min(kset), lc_max(kset), &
3296 npgfa(iset), npgfb(jset), npgfc(kset), &
3297 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3300 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3301 offset_a_start, offset_b_start, offset_c_start, &
3302 0, 0, first_set - 1, &
3303 sphi_a, sphi_b, sphi_c, &
3305 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3311 do_symmetric=do_symmetric, &
3312 on_diagonal=iatom .EQ. jatom, &
3316 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3318 IF (.NOT.
PRESENT(force_a) .AND. &
3319 .NOT.
PRESENT(force_b) .AND. &
3320 .NOT.
PRESENT(force_c) .AND. &
3321 PRESENT(pabc) .AND. &
3322 PRESENT(mat_dabc) .AND. &
3323 PRESENT(mat_adbc) .AND. &
3324 .NOT.
PRESENT(mat_abdc))
THEN
3325 CALL integrate_set_3c( &
3326 param%par, potential_parameter, &
3327 la_min(iset), la_max(iset), &
3328 lb_min(jset), lb_max(jset), &
3329 lc_min(kset), lc_max(kset), &
3330 npgfa(iset), npgfb(jset), npgfc(kset), &
3331 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3334 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3335 offset_a_start, offset_b_start, offset_c_start, &
3336 0, 0, first_set - 1, &
3337 sphi_a, sphi_b, sphi_c, &
3339 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3345 do_symmetric=do_symmetric, &
3346 on_diagonal=iatom .EQ. jatom, &
3350 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3352 IF (.NOT.
PRESENT(force_a) .AND. &
3353 .NOT.
PRESENT(force_b) .AND. &
3354 .NOT.
PRESENT(force_c) .AND. &
3355 PRESENT(pabc) .AND. &
3356 PRESENT(mat_dabc) .AND. &
3357 PRESENT(mat_adbc) .AND. &
3358 PRESENT(mat_abdc))
THEN
3359 CALL integrate_set_3c( &
3360 param%par, potential_parameter, &
3361 la_min(iset), la_max(iset), &
3362 lb_min(jset), lb_max(jset), &
3363 lc_min(kset), lc_max(kset), &
3364 npgfa(iset), npgfb(jset), npgfc(kset), &
3365 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3368 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3369 offset_a_start, offset_b_start, offset_c_start, &
3370 0, 0, first_set - 1, &
3371 sphi_a, sphi_b, sphi_c, &
3373 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3379 do_symmetric=do_symmetric, &
3380 on_diagonal=iatom .EQ. jatom, &
3384 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3386 IF (.NOT.
PRESENT(force_a) .AND. &
3387 .NOT.
PRESENT(force_b) .AND. &
3388 PRESENT(force_c) .AND. &
3389 PRESENT(pabc) .AND. &
3390 .NOT.
PRESENT(mat_dabc) .AND. &
3391 .NOT.
PRESENT(mat_adbc) .AND. &
3392 .NOT.
PRESENT(mat_abdc))
THEN
3393 CALL integrate_set_3c( &
3394 param%par, potential_parameter, &
3395 la_min(iset), la_max(iset), &
3396 lb_min(jset), lb_max(jset), &
3397 lc_min(kset), lc_max(kset), &
3398 npgfa(iset), npgfb(jset), npgfc(kset), &
3399 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3402 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3403 offset_a_start, offset_b_start, offset_c_start, &
3404 0, 0, first_set - 1, &
3405 sphi_a, sphi_b, sphi_c, &
3407 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3412force_c=force_c(kkind)%forces(:, atom_c), &
3413 do_symmetric=do_symmetric, &
3414 on_diagonal=iatom .EQ. jatom, &
3418 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3420 IF (.NOT.
PRESENT(force_a) .AND. &
3421 .NOT.
PRESENT(force_b) .AND. &
3422 PRESENT(force_c) .AND. &
3423 PRESENT(pabc) .AND. &
3424 .NOT.
PRESENT(mat_dabc) .AND. &
3425 .NOT.
PRESENT(mat_adbc) .AND. &
3426 PRESENT(mat_abdc))
THEN
3427 CALL integrate_set_3c( &
3428 param%par, potential_parameter, &
3429 la_min(iset), la_max(iset), &
3430 lb_min(jset), lb_max(jset), &
3431 lc_min(kset), lc_max(kset), &
3432 npgfa(iset), npgfb(jset), npgfc(kset), &
3433 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3436 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3437 offset_a_start, offset_b_start, offset_c_start, &
3438 0, 0, first_set - 1, &
3439 sphi_a, sphi_b, sphi_c, &
3441 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3446force_c=force_c(kkind)%forces(:, atom_c), &
3447 do_symmetric=do_symmetric, &
3448 on_diagonal=iatom .EQ. jatom, &
3452 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3454 IF (.NOT.
PRESENT(force_a) .AND. &
3455 .NOT.
PRESENT(force_b) .AND. &
3456 PRESENT(force_c) .AND. &
3457 PRESENT(pabc) .AND. &
3458 .NOT.
PRESENT(mat_dabc) .AND. &
3459 PRESENT(mat_adbc) .AND. &
3460 .NOT.
PRESENT(mat_abdc))
THEN
3461 CALL integrate_set_3c( &
3462 param%par, potential_parameter, &
3463 la_min(iset), la_max(iset), &
3464 lb_min(jset), lb_max(jset), &
3465 lc_min(kset), lc_max(kset), &
3466 npgfa(iset), npgfb(jset), npgfc(kset), &
3467 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3470 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3471 offset_a_start, offset_b_start, offset_c_start, &
3472 0, 0, first_set - 1, &
3473 sphi_a, sphi_b, sphi_c, &
3475 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3480force_c=force_c(kkind)%forces(:, atom_c), &
3481 do_symmetric=do_symmetric, &
3482 on_diagonal=iatom .EQ. jatom, &
3486 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3488 IF (.NOT.
PRESENT(force_a) .AND. &
3489 .NOT.
PRESENT(force_b) .AND. &
3490 PRESENT(force_c) .AND. &
3491 PRESENT(pabc) .AND. &
3492 .NOT.
PRESENT(mat_dabc) .AND. &
3493 PRESENT(mat_adbc) .AND. &
3494 PRESENT(mat_abdc))
THEN
3495 CALL integrate_set_3c( &
3496 param%par, potential_parameter, &
3497 la_min(iset), la_max(iset), &
3498 lb_min(jset), lb_max(jset), &
3499 lc_min(kset), lc_max(kset), &
3500 npgfa(iset), npgfb(jset), npgfc(kset), &
3501 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3504 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3505 offset_a_start, offset_b_start, offset_c_start, &
3506 0, 0, first_set - 1, &
3507 sphi_a, sphi_b, sphi_c, &
3509 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3514force_c=force_c(kkind)%forces(:, atom_c), &
3515 do_symmetric=do_symmetric, &
3516 on_diagonal=iatom .EQ. jatom, &
3520 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3522 IF (.NOT.
PRESENT(force_a) .AND. &
3523 .NOT.
PRESENT(force_b) .AND. &
3524 PRESENT(force_c) .AND. &
3525 PRESENT(pabc) .AND. &
3526 PRESENT(mat_dabc) .AND. &
3527 .NOT.
PRESENT(mat_adbc) .AND. &
3528 .NOT.
PRESENT(mat_abdc))
THEN
3529 CALL integrate_set_3c( &
3530 param%par, potential_parameter, &
3531 la_min(iset), la_max(iset), &
3532 lb_min(jset), lb_max(jset), &
3533 lc_min(kset), lc_max(kset), &
3534 npgfa(iset), npgfb(jset), npgfc(kset), &
3535 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3538 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3539 offset_a_start, offset_b_start, offset_c_start, &
3540 0, 0, first_set - 1, &
3541 sphi_a, sphi_b, sphi_c, &
3543 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3548force_c=force_c(kkind)%forces(:, atom_c), &
3549 do_symmetric=do_symmetric, &
3550 on_diagonal=iatom .EQ. jatom, &
3554 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3556 IF (.NOT.
PRESENT(force_a) .AND. &
3557 .NOT.
PRESENT(force_b) .AND. &
3558 PRESENT(force_c) .AND. &
3559 PRESENT(pabc) .AND. &
3560 PRESENT(mat_dabc) .AND. &
3561 .NOT.
PRESENT(mat_adbc) .AND. &
3562 PRESENT(mat_abdc))
THEN
3563 CALL integrate_set_3c( &
3564 param%par, potential_parameter, &
3565 la_min(iset), la_max(iset), &
3566 lb_min(jset), lb_max(jset), &
3567 lc_min(kset), lc_max(kset), &
3568 npgfa(iset), npgfb(jset), npgfc(kset), &
3569 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3572 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3573 offset_a_start, offset_b_start, offset_c_start, &
3574 0, 0, first_set - 1, &
3575 sphi_a, sphi_b, sphi_c, &
3577 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3582force_c=force_c(kkind)%forces(:, atom_c), &
3583 do_symmetric=do_symmetric, &
3584 on_diagonal=iatom .EQ. jatom, &
3588 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3590 IF (.NOT.
PRESENT(force_a) .AND. &
3591 .NOT.
PRESENT(force_b) .AND. &
3592 PRESENT(force_c) .AND. &
3593 PRESENT(pabc) .AND. &
3594 PRESENT(mat_dabc) .AND. &
3595 PRESENT(mat_adbc) .AND. &
3596 .NOT.
PRESENT(mat_abdc))
THEN
3597 CALL integrate_set_3c( &
3598 param%par, potential_parameter, &
3599 la_min(iset), la_max(iset), &
3600 lb_min(jset), lb_max(jset), &
3601 lc_min(kset), lc_max(kset), &
3602 npgfa(iset), npgfb(jset), npgfc(kset), &
3603 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3606 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3607 offset_a_start, offset_b_start, offset_c_start, &
3608 0, 0, first_set - 1, &
3609 sphi_a, sphi_b, sphi_c, &
3611 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3616force_c=force_c(kkind)%forces(:, atom_c), &
3617 do_symmetric=do_symmetric, &
3618 on_diagonal=iatom .EQ. jatom, &
3622 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3624 IF (.NOT.
PRESENT(force_a) .AND. &
3625 .NOT.
PRESENT(force_b) .AND. &
3626 PRESENT(force_c) .AND. &
3627 PRESENT(pabc) .AND. &
3628 PRESENT(mat_dabc) .AND. &
3629 PRESENT(mat_adbc) .AND. &
3630 PRESENT(mat_abdc))
THEN
3631 CALL integrate_set_3c( &
3632 param%par, potential_parameter, &
3633 la_min(iset), la_max(iset), &
3634 lb_min(jset), lb_max(jset), &
3635 lc_min(kset), lc_max(kset), &
3636 npgfa(iset), npgfb(jset), npgfc(kset), &
3637 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3640 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3641 offset_a_start, offset_b_start, offset_c_start, &
3642 0, 0, first_set - 1, &
3643 sphi_a, sphi_b, sphi_c, &
3645 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3650force_c=force_c(kkind)%forces(:, atom_c), &
3651 do_symmetric=do_symmetric, &
3652 on_diagonal=iatom .EQ. jatom, &
3656 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3658 IF (.NOT.
PRESENT(force_a) .AND. &
3659 PRESENT(force_b) .AND. &
3660 .NOT.
PRESENT(force_c) .AND. &
3661 PRESENT(pabc) .AND. &
3662 .NOT.
PRESENT(mat_dabc) .AND. &
3663 .NOT.
PRESENT(mat_adbc) .AND. &
3664 .NOT.
PRESENT(mat_abdc))
THEN
3665 CALL integrate_set_3c( &
3666 param%par, potential_parameter, &
3667 la_min(iset), la_max(iset), &
3668 lb_min(jset), lb_max(jset), &
3669 lc_min(kset), lc_max(kset), &
3670 npgfa(iset), npgfb(jset), npgfc(kset), &
3671 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3674 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3675 offset_a_start, offset_b_start, offset_c_start, &
3676 0, 0, first_set - 1, &
3677 sphi_a, sphi_b, sphi_c, &
3679 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3683force_b=force_b(jkind)%forces(:, atom_b), &
3685 do_symmetric=do_symmetric, &
3686 on_diagonal=iatom .EQ. jatom, &
3690 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3692 IF (.NOT.
PRESENT(force_a) .AND. &
3693 PRESENT(force_b) .AND. &
3694 .NOT.
PRESENT(force_c) .AND. &
3695 PRESENT(pabc) .AND. &
3696 .NOT.
PRESENT(mat_dabc) .AND. &
3697 .NOT.
PRESENT(mat_adbc) .AND. &
3698 PRESENT(mat_abdc))
THEN
3699 CALL integrate_set_3c( &
3700 param%par, potential_parameter, &
3701 la_min(iset), la_max(iset), &
3702 lb_min(jset), lb_max(jset), &
3703 lc_min(kset), lc_max(kset), &
3704 npgfa(iset), npgfb(jset), npgfc(kset), &
3705 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3708 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3709 offset_a_start, offset_b_start, offset_c_start, &
3710 0, 0, first_set - 1, &
3711 sphi_a, sphi_b, sphi_c, &
3713 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3717force_b=force_b(jkind)%forces(:, atom_b), &
3719 do_symmetric=do_symmetric, &
3720 on_diagonal=iatom .EQ. jatom, &
3724 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3726 IF (.NOT.
PRESENT(force_a) .AND. &
3727 PRESENT(force_b) .AND. &
3728 .NOT.
PRESENT(force_c) .AND. &
3729 PRESENT(pabc) .AND. &
3730 .NOT.
PRESENT(mat_dabc) .AND. &
3731 PRESENT(mat_adbc) .AND. &
3732 .NOT.
PRESENT(mat_abdc))
THEN
3733 CALL integrate_set_3c( &
3734 param%par, potential_parameter, &
3735 la_min(iset), la_max(iset), &
3736 lb_min(jset), lb_max(jset), &
3737 lc_min(kset), lc_max(kset), &
3738 npgfa(iset), npgfb(jset), npgfc(kset), &
3739 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3742 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3743 offset_a_start, offset_b_start, offset_c_start, &
3744 0, 0, first_set - 1, &
3745 sphi_a, sphi_b, sphi_c, &
3747 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3751force_b=force_b(jkind)%forces(:, atom_b), &
3753 do_symmetric=do_symmetric, &
3754 on_diagonal=iatom .EQ. jatom, &
3758 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3760 IF (.NOT.
PRESENT(force_a) .AND. &
3761 PRESENT(force_b) .AND. &
3762 .NOT.
PRESENT(force_c) .AND. &
3763 PRESENT(pabc) .AND. &
3764 .NOT.
PRESENT(mat_dabc) .AND. &
3765 PRESENT(mat_adbc) .AND. &
3766 PRESENT(mat_abdc))
THEN
3767 CALL integrate_set_3c( &
3768 param%par, potential_parameter, &
3769 la_min(iset), la_max(iset), &
3770 lb_min(jset), lb_max(jset), &
3771 lc_min(kset), lc_max(kset), &
3772 npgfa(iset), npgfb(jset), npgfc(kset), &
3773 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3776 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3777 offset_a_start, offset_b_start, offset_c_start, &
3778 0, 0, first_set - 1, &
3779 sphi_a, sphi_b, sphi_c, &
3781 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3785force_b=force_b(jkind)%forces(:, atom_b), &
3787 do_symmetric=do_symmetric, &
3788 on_diagonal=iatom .EQ. jatom, &
3792 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3794 IF (.NOT.
PRESENT(force_a) .AND. &
3795 PRESENT(force_b) .AND. &
3796 .NOT.
PRESENT(force_c) .AND. &
3797 PRESENT(pabc) .AND. &
3798 PRESENT(mat_dabc) .AND. &
3799 .NOT.
PRESENT(mat_adbc) .AND. &
3800 .NOT.
PRESENT(mat_abdc))
THEN
3801 CALL integrate_set_3c( &
3802 param%par, potential_parameter, &
3803 la_min(iset), la_max(iset), &
3804 lb_min(jset), lb_max(jset), &
3805 lc_min(kset), lc_max(kset), &
3806 npgfa(iset), npgfb(jset), npgfc(kset), &
3807 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3810 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3811 offset_a_start, offset_b_start, offset_c_start, &
3812 0, 0, first_set - 1, &
3813 sphi_a, sphi_b, sphi_c, &
3815 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3819force_b=force_b(jkind)%forces(:, atom_b), &
3821 do_symmetric=do_symmetric, &
3822 on_diagonal=iatom .EQ. jatom, &
3826 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3828 IF (.NOT.
PRESENT(force_a) .AND. &
3829 PRESENT(force_b) .AND. &
3830 .NOT.
PRESENT(force_c) .AND. &
3831 PRESENT(pabc) .AND. &
3832 PRESENT(mat_dabc) .AND. &
3833 .NOT.
PRESENT(mat_adbc) .AND. &
3834 PRESENT(mat_abdc))
THEN
3835 CALL integrate_set_3c( &
3836 param%par, potential_parameter, &
3837 la_min(iset), la_max(iset), &
3838 lb_min(jset), lb_max(jset), &
3839 lc_min(kset), lc_max(kset), &
3840 npgfa(iset), npgfb(jset), npgfc(kset), &
3841 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3844 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3845 offset_a_start, offset_b_start, offset_c_start, &
3846 0, 0, first_set - 1, &
3847 sphi_a, sphi_b, sphi_c, &
3849 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3853force_b=force_b(jkind)%forces(:, atom_b), &
3855 do_symmetric=do_symmetric, &
3856 on_diagonal=iatom .EQ. jatom, &
3860 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3862 IF (.NOT.
PRESENT(force_a) .AND. &
3863 PRESENT(force_b) .AND. &
3864 .NOT.
PRESENT(force_c) .AND. &
3865 PRESENT(pabc) .AND. &
3866 PRESENT(mat_dabc) .AND. &
3867 PRESENT(mat_adbc) .AND. &
3868 .NOT.
PRESENT(mat_abdc))
THEN
3869 CALL integrate_set_3c( &
3870 param%par, potential_parameter, &
3871 la_min(iset), la_max(iset), &
3872 lb_min(jset), lb_max(jset), &
3873 lc_min(kset), lc_max(kset), &
3874 npgfa(iset), npgfb(jset), npgfc(kset), &
3875 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3878 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3879 offset_a_start, offset_b_start, offset_c_start, &
3880 0, 0, first_set - 1, &
3881 sphi_a, sphi_b, sphi_c, &
3883 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3887force_b=force_b(jkind)%forces(:, atom_b), &
3889 do_symmetric=do_symmetric, &
3890 on_diagonal=iatom .EQ. jatom, &
3894 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3896 IF (.NOT.
PRESENT(force_a) .AND. &
3897 PRESENT(force_b) .AND. &
3898 .NOT.
PRESENT(force_c) .AND. &
3899 PRESENT(pabc) .AND. &
3900 PRESENT(mat_dabc) .AND. &
3901 PRESENT(mat_adbc) .AND. &
3902 PRESENT(mat_abdc))
THEN
3903 CALL integrate_set_3c( &
3904 param%par, potential_parameter, &
3905 la_min(iset), la_max(iset), &
3906 lb_min(jset), lb_max(jset), &
3907 lc_min(kset), lc_max(kset), &
3908 npgfa(iset), npgfb(jset), npgfc(kset), &
3909 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3912 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3913 offset_a_start, offset_b_start, offset_c_start, &
3914 0, 0, first_set - 1, &
3915 sphi_a, sphi_b, sphi_c, &
3917 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3921force_b=force_b(jkind)%forces(:, atom_b), &
3923 do_symmetric=do_symmetric, &
3924 on_diagonal=iatom .EQ. jatom, &
3928 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3930 IF (.NOT.
PRESENT(force_a) .AND. &
3931 PRESENT(force_b) .AND. &
3932 PRESENT(force_c) .AND. &
3933 PRESENT(pabc) .AND. &
3934 .NOT.
PRESENT(mat_dabc) .AND. &
3935 .NOT.
PRESENT(mat_adbc) .AND. &
3936 .NOT.
PRESENT(mat_abdc))
THEN
3937 CALL integrate_set_3c( &
3938 param%par, potential_parameter, &
3939 la_min(iset), la_max(iset), &
3940 lb_min(jset), lb_max(jset), &
3941 lc_min(kset), lc_max(kset), &
3942 npgfa(iset), npgfb(jset), npgfc(kset), &
3943 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3946 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3947 offset_a_start, offset_b_start, offset_c_start, &
3948 0, 0, first_set - 1, &
3949 sphi_a, sphi_b, sphi_c, &
3951 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3955force_b=force_b(jkind)%forces(:, atom_b), &
3956force_c=force_c(kkind)%forces(:, atom_c), &
3957 do_symmetric=do_symmetric, &
3958 on_diagonal=iatom .EQ. jatom, &
3962 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3964 IF (.NOT.
PRESENT(force_a) .AND. &
3965 PRESENT(force_b) .AND. &
3966 PRESENT(force_c) .AND. &
3967 PRESENT(pabc) .AND. &
3968 .NOT.
PRESENT(mat_dabc) .AND. &
3969 .NOT.
PRESENT(mat_adbc) .AND. &
3970 PRESENT(mat_abdc))
THEN
3971 CALL integrate_set_3c( &
3972 param%par, potential_parameter, &
3973 la_min(iset), la_max(iset), &
3974 lb_min(jset), lb_max(jset), &
3975 lc_min(kset), lc_max(kset), &
3976 npgfa(iset), npgfb(jset), npgfc(kset), &
3977 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3980 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3981 offset_a_start, offset_b_start, offset_c_start, &
3982 0, 0, first_set - 1, &
3983 sphi_a, sphi_b, sphi_c, &
3985 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3989force_b=force_b(jkind)%forces(:, atom_b), &
3990force_c=force_c(kkind)%forces(:, atom_c), &
3991 do_symmetric=do_symmetric, &
3992 on_diagonal=iatom .EQ. jatom, &
3996 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3998 IF (.NOT.
PRESENT(force_a) .AND. &
3999 PRESENT(force_b) .AND. &
4000 PRESENT(force_c) .AND. &
4001 PRESENT(pabc) .AND. &
4002 .NOT.
PRESENT(mat_dabc) .AND. &
4003 PRESENT(mat_adbc) .AND. &
4004 .NOT.
PRESENT(mat_abdc))
THEN
4005 CALL integrate_set_3c( &
4006 param%par, potential_parameter, &
4007 la_min(iset), la_max(iset), &
4008 lb_min(jset), lb_max(jset), &
4009 lc_min(kset), lc_max(kset), &
4010 npgfa(iset), npgfb(jset), npgfc(kset), &
4011 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4014 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4015 offset_a_start, offset_b_start, offset_c_start, &
4016 0, 0, first_set - 1, &
4017 sphi_a, sphi_b, sphi_c, &
4019 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4023force_b=force_b(jkind)%forces(:, atom_b), &
4024force_c=force_c(kkind)%forces(:, atom_c), &
4025 do_symmetric=do_symmetric, &
4026 on_diagonal=iatom .EQ. jatom, &
4030 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4032 IF (.NOT.
PRESENT(force_a) .AND. &
4033 PRESENT(force_b) .AND. &
4034 PRESENT(force_c) .AND. &
4035 PRESENT(pabc) .AND. &
4036 .NOT.
PRESENT(mat_dabc) .AND. &
4037 PRESENT(mat_adbc) .AND. &
4038 PRESENT(mat_abdc))
THEN
4039 CALL integrate_set_3c( &
4040 param%par, potential_parameter, &
4041 la_min(iset), la_max(iset), &
4042 lb_min(jset), lb_max(jset), &
4043 lc_min(kset), lc_max(kset), &
4044 npgfa(iset), npgfb(jset), npgfc(kset), &
4045 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4048 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4049 offset_a_start, offset_b_start, offset_c_start, &
4050 0, 0, first_set - 1, &
4051 sphi_a, sphi_b, sphi_c, &
4053 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4057force_b=force_b(jkind)%forces(:, atom_b), &
4058force_c=force_c(kkind)%forces(:, atom_c), &
4059 do_symmetric=do_symmetric, &
4060 on_diagonal=iatom .EQ. jatom, &
4064 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4066 IF (.NOT.
PRESENT(force_a) .AND. &
4067 PRESENT(force_b) .AND. &
4068 PRESENT(force_c) .AND. &
4069 PRESENT(pabc) .AND. &
4070 PRESENT(mat_dabc) .AND. &
4071 .NOT.
PRESENT(mat_adbc) .AND. &
4072 .NOT.
PRESENT(mat_abdc))
THEN
4073 CALL integrate_set_3c( &
4074 param%par, potential_parameter, &
4075 la_min(iset), la_max(iset), &
4076 lb_min(jset), lb_max(jset), &
4077 lc_min(kset), lc_max(kset), &
4078 npgfa(iset), npgfb(jset), npgfc(kset), &
4079 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4082 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4083 offset_a_start, offset_b_start, offset_c_start, &
4084 0, 0, first_set - 1, &
4085 sphi_a, sphi_b, sphi_c, &
4087 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4091force_b=force_b(jkind)%forces(:, atom_b), &
4092force_c=force_c(kkind)%forces(:, atom_c), &
4093 do_symmetric=do_symmetric, &
4094 on_diagonal=iatom .EQ. jatom, &
4098 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4100 IF (.NOT.
PRESENT(force_a) .AND. &
4101 PRESENT(force_b) .AND. &
4102 PRESENT(force_c) .AND. &
4103 PRESENT(pabc) .AND. &
4104 PRESENT(mat_dabc) .AND. &
4105 .NOT.
PRESENT(mat_adbc) .AND. &
4106 PRESENT(mat_abdc))
THEN
4107 CALL integrate_set_3c( &
4108 param%par, potential_parameter, &
4109 la_min(iset), la_max(iset), &
4110 lb_min(jset), lb_max(jset), &
4111 lc_min(kset), lc_max(kset), &
4112 npgfa(iset), npgfb(jset), npgfc(kset), &
4113 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4116 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4117 offset_a_start, offset_b_start, offset_c_start, &
4118 0, 0, first_set - 1, &
4119 sphi_a, sphi_b, sphi_c, &
4121 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4125force_b=force_b(jkind)%forces(:, atom_b), &
4126force_c=force_c(kkind)%forces(:, atom_c), &
4127 do_symmetric=do_symmetric, &
4128 on_diagonal=iatom .EQ. jatom, &
4132 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4134 IF (.NOT.
PRESENT(force_a) .AND. &
4135 PRESENT(force_b) .AND. &
4136 PRESENT(force_c) .AND. &
4137 PRESENT(pabc) .AND. &
4138 PRESENT(mat_dabc) .AND. &
4139 PRESENT(mat_adbc) .AND. &
4140 .NOT.
PRESENT(mat_abdc))
THEN
4141 CALL integrate_set_3c( &
4142 param%par, potential_parameter, &
4143 la_min(iset), la_max(iset), &
4144 lb_min(jset), lb_max(jset), &
4145 lc_min(kset), lc_max(kset), &
4146 npgfa(iset), npgfb(jset), npgfc(kset), &
4147 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4150 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4151 offset_a_start, offset_b_start, offset_c_start, &
4152 0, 0, first_set - 1, &
4153 sphi_a, sphi_b, sphi_c, &
4155 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4159force_b=force_b(jkind)%forces(:, atom_b), &
4160force_c=force_c(kkind)%forces(:, atom_c), &
4161 do_symmetric=do_symmetric, &
4162 on_diagonal=iatom .EQ. jatom, &
4166 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4168 IF (.NOT.
PRESENT(force_a) .AND. &
4169 PRESENT(force_b) .AND. &
4170 PRESENT(force_c) .AND. &
4171 PRESENT(pabc) .AND. &
4172 PRESENT(mat_dabc) .AND. &
4173 PRESENT(mat_adbc) .AND. &
4174 PRESENT(mat_abdc))
THEN
4175 CALL integrate_set_3c( &
4176 param%par, potential_parameter, &
4177 la_min(iset), la_max(iset), &
4178 lb_min(jset), lb_max(jset), &
4179 lc_min(kset), lc_max(kset), &
4180 npgfa(iset), npgfb(jset), npgfc(kset), &
4181 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4184 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4185 offset_a_start, offset_b_start, offset_c_start, &
4186 0, 0, first_set - 1, &
4187 sphi_a, sphi_b, sphi_c, &
4189 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4193force_b=force_b(jkind)%forces(:, atom_b), &
4194force_c=force_c(kkind)%forces(:, atom_c), &
4195 do_symmetric=do_symmetric, &
4196 on_diagonal=iatom .EQ. jatom, &
4200 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4202 IF (
PRESENT(force_a) .AND. &
4203 .NOT.
PRESENT(force_b) .AND. &
4204 .NOT.
PRESENT(force_c) .AND. &
4205 PRESENT(pabc) .AND. &
4206 .NOT.
PRESENT(mat_dabc) .AND. &
4207 .NOT.
PRESENT(mat_adbc) .AND. &
4208 .NOT.
PRESENT(mat_abdc))
THEN
4209 CALL integrate_set_3c( &
4210 param%par, potential_parameter, &
4211 la_min(iset), la_max(iset), &
4212 lb_min(jset), lb_max(jset), &
4213 lc_min(kset), lc_max(kset), &
4214 npgfa(iset), npgfb(jset), npgfc(kset), &
4215 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4218 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4219 offset_a_start, offset_b_start, offset_c_start, &
4220 0, 0, first_set - 1, &
4221 sphi_a, sphi_b, sphi_c, &
4223 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4226force_a=force_a(ikind)%forces(:, atom_a), &
4229 do_symmetric=do_symmetric, &
4230 on_diagonal=iatom .EQ. jatom, &
4234 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4236 IF (
PRESENT(force_a) .AND. &
4237 .NOT.
PRESENT(force_b) .AND. &
4238 .NOT.
PRESENT(force_c) .AND. &
4239 PRESENT(pabc) .AND. &
4240 .NOT.
PRESENT(mat_dabc) .AND. &
4241 .NOT.
PRESENT(mat_adbc) .AND. &
4242 PRESENT(mat_abdc))
THEN
4243 CALL integrate_set_3c( &
4244 param%par, potential_parameter, &
4245 la_min(iset), la_max(iset), &
4246 lb_min(jset), lb_max(jset), &
4247 lc_min(kset), lc_max(kset), &
4248 npgfa(iset), npgfb(jset), npgfc(kset), &
4249 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4252 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4253 offset_a_start, offset_b_start, offset_c_start, &
4254 0, 0, first_set - 1, &
4255 sphi_a, sphi_b, sphi_c, &
4257 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4260force_a=force_a(ikind)%forces(:, atom_a), &
4263 do_symmetric=do_symmetric, &
4264 on_diagonal=iatom .EQ. jatom, &
4268 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4270 IF (
PRESENT(force_a) .AND. &
4271 .NOT.
PRESENT(force_b) .AND. &
4272 .NOT.
PRESENT(force_c) .AND. &
4273 PRESENT(pabc) .AND. &
4274 .NOT.
PRESENT(mat_dabc) .AND. &
4275 PRESENT(mat_adbc) .AND. &
4276 .NOT.
PRESENT(mat_abdc))
THEN
4277 CALL integrate_set_3c( &
4278 param%par, potential_parameter, &
4279 la_min(iset), la_max(iset), &
4280 lb_min(jset), lb_max(jset), &
4281 lc_min(kset), lc_max(kset), &
4282 npgfa(iset), npgfb(jset), npgfc(kset), &
4283 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4286 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4287 offset_a_start, offset_b_start, offset_c_start, &
4288 0, 0, first_set - 1, &
4289 sphi_a, sphi_b, sphi_c, &
4291 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4294force_a=force_a(ikind)%forces(:, atom_a), &
4297 do_symmetric=do_symmetric, &
4298 on_diagonal=iatom .EQ. jatom, &
4302 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4304 IF (
PRESENT(force_a) .AND. &
4305 .NOT.
PRESENT(force_b) .AND. &
4306 .NOT.
PRESENT(force_c) .AND. &
4307 PRESENT(pabc) .AND. &
4308 .NOT.
PRESENT(mat_dabc) .AND. &
4309 PRESENT(mat_adbc) .AND. &
4310 PRESENT(mat_abdc))
THEN
4311 CALL integrate_set_3c( &
4312 param%par, potential_parameter, &
4313 la_min(iset), la_max(iset), &
4314 lb_min(jset), lb_max(jset), &
4315 lc_min(kset), lc_max(kset), &
4316 npgfa(iset), npgfb(jset), npgfc(kset), &
4317 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4320 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4321 offset_a_start, offset_b_start, offset_c_start, &
4322 0, 0, first_set - 1, &
4323 sphi_a, sphi_b, sphi_c, &
4325 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4328force_a=force_a(ikind)%forces(:, atom_a), &
4331 do_symmetric=do_symmetric, &
4332 on_diagonal=iatom .EQ. jatom, &
4336 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4338 IF (
PRESENT(force_a) .AND. &
4339 .NOT.
PRESENT(force_b) .AND. &
4340 .NOT.
PRESENT(force_c) .AND. &
4341 PRESENT(pabc) .AND. &
4342 PRESENT(mat_dabc) .AND. &
4343 .NOT.
PRESENT(mat_adbc) .AND. &
4344 .NOT.
PRESENT(mat_abdc))
THEN
4345 CALL integrate_set_3c( &
4346 param%par, potential_parameter, &
4347 la_min(iset), la_max(iset), &
4348 lb_min(jset), lb_max(jset), &
4349 lc_min(kset), lc_max(kset), &
4350 npgfa(iset), npgfb(jset), npgfc(kset), &
4351 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4354 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4355 offset_a_start, offset_b_start, offset_c_start, &
4356 0, 0, first_set - 1, &
4357 sphi_a, sphi_b, sphi_c, &
4359 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4362force_a=force_a(ikind)%forces(:, atom_a), &
4365 do_symmetric=do_symmetric, &
4366 on_diagonal=iatom .EQ. jatom, &
4370 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4372 IF (
PRESENT(force_a) .AND. &
4373 .NOT.
PRESENT(force_b) .AND. &
4374 .NOT.
PRESENT(force_c) .AND. &
4375 PRESENT(pabc) .AND. &
4376 PRESENT(mat_dabc) .AND. &
4377 .NOT.
PRESENT(mat_adbc) .AND. &
4378 PRESENT(mat_abdc))
THEN
4379 CALL integrate_set_3c( &
4380 param%par, potential_parameter, &
4381 la_min(iset), la_max(iset), &
4382 lb_min(jset), lb_max(jset), &
4383 lc_min(kset), lc_max(kset), &
4384 npgfa(iset), npgfb(jset), npgfc(kset), &
4385 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4388 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4389 offset_a_start, offset_b_start, offset_c_start, &
4390 0, 0, first_set - 1, &
4391 sphi_a, sphi_b, sphi_c, &
4393 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4396force_a=force_a(ikind)%forces(:, atom_a), &
4399 do_symmetric=do_symmetric, &
4400 on_diagonal=iatom .EQ. jatom, &
4404 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4406 IF (
PRESENT(force_a) .AND. &
4407 .NOT.
PRESENT(force_b) .AND. &
4408 .NOT.
PRESENT(force_c) .AND. &
4409 PRESENT(pabc) .AND. &
4410 PRESENT(mat_dabc) .AND. &
4411 PRESENT(mat_adbc) .AND. &
4412 .NOT.
PRESENT(mat_abdc))
THEN
4413 CALL integrate_set_3c( &
4414 param%par, potential_parameter, &
4415 la_min(iset), la_max(iset), &
4416 lb_min(jset), lb_max(jset), &
4417 lc_min(kset), lc_max(kset), &
4418 npgfa(iset), npgfb(jset), npgfc(kset), &
4419 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4422 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4423 offset_a_start, offset_b_start, offset_c_start, &
4424 0, 0, first_set - 1, &
4425 sphi_a, sphi_b, sphi_c, &
4427 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4430force_a=force_a(ikind)%forces(:, atom_a), &
4433 do_symmetric=do_symmetric, &
4434 on_diagonal=iatom .EQ. jatom, &
4438 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4440 IF (
PRESENT(force_a) .AND. &
4441 .NOT.
PRESENT(force_b) .AND. &
4442 .NOT.
PRESENT(force_c) .AND. &
4443 PRESENT(pabc) .AND. &
4444 PRESENT(mat_dabc) .AND. &
4445 PRESENT(mat_adbc) .AND. &
4446 PRESENT(mat_abdc))
THEN
4447 CALL integrate_set_3c( &
4448 param%par, potential_parameter, &
4449 la_min(iset), la_max(iset), &
4450 lb_min(jset), lb_max(jset), &
4451 lc_min(kset), lc_max(kset), &
4452 npgfa(iset), npgfb(jset), npgfc(kset), &
4453 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4456 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4457 offset_a_start, offset_b_start, offset_c_start, &
4458 0, 0, first_set - 1, &
4459 sphi_a, sphi_b, sphi_c, &
4461 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4464force_a=force_a(ikind)%forces(:, atom_a), &
4467 do_symmetric=do_symmetric, &
4468 on_diagonal=iatom .EQ. jatom, &
4472 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4474 IF (
PRESENT(force_a) .AND. &
4475 .NOT.
PRESENT(force_b) .AND. &
4476 PRESENT(force_c) .AND. &
4477 PRESENT(pabc) .AND. &
4478 .NOT.
PRESENT(mat_dabc) .AND. &
4479 .NOT.
PRESENT(mat_adbc) .AND. &
4480 .NOT.
PRESENT(mat_abdc))
THEN
4481 CALL integrate_set_3c( &
4482 param%par, potential_parameter, &
4483 la_min(iset), la_max(iset), &
4484 lb_min(jset), lb_max(jset), &
4485 lc_min(kset), lc_max(kset), &
4486 npgfa(iset), npgfb(jset), npgfc(kset), &
4487 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4490 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4491 offset_a_start, offset_b_start, offset_c_start, &
4492 0, 0, first_set - 1, &
4493 sphi_a, sphi_b, sphi_c, &
4495 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4498force_a=force_a(ikind)%forces(:, atom_a), &
4500force_c=force_c(kkind)%forces(:, atom_c), &
4501 do_symmetric=do_symmetric, &
4502 on_diagonal=iatom .EQ. jatom, &
4506 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4508 IF (
PRESENT(force_a) .AND. &
4509 .NOT.
PRESENT(force_b) .AND. &
4510 PRESENT(force_c) .AND. &
4511 PRESENT(pabc) .AND. &
4512 .NOT.
PRESENT(mat_dabc) .AND. &
4513 .NOT.
PRESENT(mat_adbc) .AND. &
4514 PRESENT(mat_abdc))
THEN
4515 CALL integrate_set_3c( &
4516 param%par, potential_parameter, &
4517 la_min(iset), la_max(iset), &
4518 lb_min(jset), lb_max(jset), &
4519 lc_min(kset), lc_max(kset), &
4520 npgfa(iset), npgfb(jset), npgfc(kset), &
4521 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4524 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4525 offset_a_start, offset_b_start, offset_c_start, &
4526 0, 0, first_set - 1, &
4527 sphi_a, sphi_b, sphi_c, &
4529 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4532force_a=force_a(ikind)%forces(:, atom_a), &
4534force_c=force_c(kkind)%forces(:, atom_c), &
4535 do_symmetric=do_symmetric, &
4536 on_diagonal=iatom .EQ. jatom, &
4540 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4542 IF (
PRESENT(force_a) .AND. &
4543 .NOT.
PRESENT(force_b) .AND. &
4544 PRESENT(force_c) .AND. &
4545 PRESENT(pabc) .AND. &
4546 .NOT.
PRESENT(mat_dabc) .AND. &
4547 PRESENT(mat_adbc) .AND. &
4548 .NOT.
PRESENT(mat_abdc))
THEN
4549 CALL integrate_set_3c( &
4550 param%par, potential_parameter, &
4551 la_min(iset), la_max(iset), &
4552 lb_min(jset), lb_max(jset), &
4553 lc_min(kset), lc_max(kset), &
4554 npgfa(iset), npgfb(jset), npgfc(kset), &
4555 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4558 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4559 offset_a_start, offset_b_start, offset_c_start, &
4560 0, 0, first_set - 1, &
4561 sphi_a, sphi_b, sphi_c, &
4563 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4566force_a=force_a(ikind)%forces(:, atom_a), &
4568force_c=force_c(kkind)%forces(:, atom_c), &
4569 do_symmetric=do_symmetric, &
4570 on_diagonal=iatom .EQ. jatom, &
4574 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4576 IF (
PRESENT(force_a) .AND. &
4577 .NOT.
PRESENT(force_b) .AND. &
4578 PRESENT(force_c) .AND. &
4579 PRESENT(pabc) .AND. &
4580 .NOT.
PRESENT(mat_dabc) .AND. &
4581 PRESENT(mat_adbc) .AND. &
4582 PRESENT(mat_abdc))
THEN
4583 CALL integrate_set_3c( &
4584 param%par, potential_parameter, &
4585 la_min(iset), la_max(iset), &
4586 lb_min(jset), lb_max(jset), &
4587 lc_min(kset), lc_max(kset), &
4588 npgfa(iset), npgfb(jset), npgfc(kset), &
4589 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4592 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4593 offset_a_start, offset_b_start, offset_c_start, &
4594 0, 0, first_set - 1, &
4595 sphi_a, sphi_b, sphi_c, &
4597 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4600force_a=force_a(ikind)%forces(:, atom_a), &
4602force_c=force_c(kkind)%forces(:, atom_c), &
4603 do_symmetric=do_symmetric, &
4604 on_diagonal=iatom .EQ. jatom, &
4608 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4610 IF (
PRESENT(force_a) .AND. &
4611 .NOT.
PRESENT(force_b) .AND. &
4612 PRESENT(force_c) .AND. &
4613 PRESENT(pabc) .AND. &
4614 PRESENT(mat_dabc) .AND. &
4615 .NOT.
PRESENT(mat_adbc) .AND. &
4616 .NOT.
PRESENT(mat_abdc))
THEN
4617 CALL integrate_set_3c( &
4618 param%par, potential_parameter, &
4619 la_min(iset), la_max(iset), &
4620 lb_min(jset), lb_max(jset), &
4621 lc_min(kset), lc_max(kset), &
4622 npgfa(iset), npgfb(jset), npgfc(kset), &
4623 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4626 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4627 offset_a_start, offset_b_start, offset_c_start, &
4628 0, 0, first_set - 1, &
4629 sphi_a, sphi_b, sphi_c, &
4631 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4634force_a=force_a(ikind)%forces(:, atom_a), &
4636force_c=force_c(kkind)%forces(:, atom_c), &
4637 do_symmetric=do_symmetric, &
4638 on_diagonal=iatom .EQ. jatom, &
4642 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4644 IF (
PRESENT(force_a) .AND. &
4645 .NOT.
PRESENT(force_b) .AND. &
4646 PRESENT(force_c) .AND. &
4647 PRESENT(pabc) .AND. &
4648 PRESENT(mat_dabc) .AND. &
4649 .NOT.
PRESENT(mat_adbc) .AND. &
4650 PRESENT(mat_abdc))
THEN
4651 CALL integrate_set_3c( &
4652 param%par, potential_parameter, &
4653 la_min(iset), la_max(iset), &
4654 lb_min(jset), lb_max(jset), &
4655 lc_min(kset), lc_max(kset), &
4656 npgfa(iset), npgfb(jset), npgfc(kset), &
4657 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4660 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4661 offset_a_start, offset_b_start, offset_c_start, &
4662 0, 0, first_set - 1, &
4663 sphi_a, sphi_b, sphi_c, &
4665 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4668force_a=force_a(ikind)%forces(:, atom_a), &
4670force_c=force_c(kkind)%forces(:, atom_c), &
4671 do_symmetric=do_symmetric, &
4672 on_diagonal=iatom .EQ. jatom, &
4676 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4678 IF (
PRESENT(force_a) .AND. &
4679 .NOT.
PRESENT(force_b) .AND. &
4680 PRESENT(force_c) .AND. &
4681 PRESENT(pabc) .AND. &
4682 PRESENT(mat_dabc) .AND. &
4683 PRESENT(mat_adbc) .AND. &
4684 .NOT.
PRESENT(mat_abdc))
THEN
4685 CALL integrate_set_3c( &
4686 param%par, potential_parameter, &
4687 la_min(iset), la_max(iset), &
4688 lb_min(jset), lb_max(jset), &
4689 lc_min(kset), lc_max(kset), &
4690 npgfa(iset), npgfb(jset), npgfc(kset), &
4691 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4694 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4695 offset_a_start, offset_b_start, offset_c_start, &
4696 0, 0, first_set - 1, &
4697 sphi_a, sphi_b, sphi_c, &
4699 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4702force_a=force_a(ikind)%forces(:, atom_a), &
4704force_c=force_c(kkind)%forces(:, atom_c), &
4705 do_symmetric=do_symmetric, &
4706 on_diagonal=iatom .EQ. jatom, &
4710 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4712 IF (
PRESENT(force_a) .AND. &
4713 .NOT.
PRESENT(force_b) .AND. &
4714 PRESENT(force_c) .AND. &
4715 PRESENT(pabc) .AND. &
4716 PRESENT(mat_dabc) .AND. &
4717 PRESENT(mat_adbc) .AND. &
4718 PRESENT(mat_abdc))
THEN
4719 CALL integrate_set_3c( &
4720 param%par, potential_parameter, &
4721 la_min(iset), la_max(iset), &
4722 lb_min(jset), lb_max(jset), &
4723 lc_min(kset), lc_max(kset), &
4724 npgfa(iset), npgfb(jset), npgfc(kset), &
4725 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4728 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4729 offset_a_start, offset_b_start, offset_c_start, &
4730 0, 0, first_set - 1, &
4731 sphi_a, sphi_b, sphi_c, &
4733 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4736force_a=force_a(ikind)%forces(:, atom_a), &
4738force_c=force_c(kkind)%forces(:, atom_c), &
4739 do_symmetric=do_symmetric, &
4740 on_diagonal=iatom .EQ. jatom, &
4744 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4746 IF (
PRESENT(force_a) .AND. &
4747 PRESENT(force_b) .AND. &
4748 .NOT.
PRESENT(force_c) .AND. &
4749 PRESENT(pabc) .AND. &
4750 .NOT.
PRESENT(mat_dabc) .AND. &
4751 .NOT.
PRESENT(mat_adbc) .AND. &
4752 .NOT.
PRESENT(mat_abdc))
THEN
4753 CALL integrate_set_3c( &
4754 param%par, potential_parameter, &
4755 la_min(iset), la_max(iset), &
4756 lb_min(jset), lb_max(jset), &
4757 lc_min(kset), lc_max(kset), &
4758 npgfa(iset), npgfb(jset), npgfc(kset), &
4759 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4762 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4763 offset_a_start, offset_b_start, offset_c_start, &
4764 0, 0, first_set - 1, &
4765 sphi_a, sphi_b, sphi_c, &
4767 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4770force_a=force_a(ikind)%forces(:, atom_a), &
4771force_b=force_b(jkind)%forces(:, atom_b), &
4773 do_symmetric=do_symmetric, &
4774 on_diagonal=iatom .EQ. jatom, &
4778 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4780 IF (
PRESENT(force_a) .AND. &
4781 PRESENT(force_b) .AND. &
4782 .NOT.
PRESENT(force_c) .AND. &
4783 PRESENT(pabc) .AND. &
4784 .NOT.
PRESENT(mat_dabc) .AND. &
4785 .NOT.
PRESENT(mat_adbc) .AND. &
4786 PRESENT(mat_abdc))
THEN
4787 CALL integrate_set_3c( &
4788 param%par, potential_parameter, &
4789 la_min(iset), la_max(iset), &
4790 lb_min(jset), lb_max(jset), &
4791 lc_min(kset), lc_max(kset), &
4792 npgfa(iset), npgfb(jset), npgfc(kset), &
4793 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4796 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4797 offset_a_start, offset_b_start, offset_c_start, &
4798 0, 0, first_set - 1, &
4799 sphi_a, sphi_b, sphi_c, &
4801 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4804force_a=force_a(ikind)%forces(:, atom_a), &
4805force_b=force_b(jkind)%forces(:, atom_b), &
4807 do_symmetric=do_symmetric, &
4808 on_diagonal=iatom .EQ. jatom, &
4812 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4814 IF (
PRESENT(force_a) .AND. &
4815 PRESENT(force_b) .AND. &
4816 .NOT.
PRESENT(force_c) .AND. &
4817 PRESENT(pabc) .AND. &
4818 .NOT.
PRESENT(mat_dabc) .AND. &
4819 PRESENT(mat_adbc) .AND. &
4820 .NOT.
PRESENT(mat_abdc))
THEN
4821 CALL integrate_set_3c( &
4822 param%par, potential_parameter, &
4823 la_min(iset), la_max(iset), &
4824 lb_min(jset), lb_max(jset), &
4825 lc_min(kset), lc_max(kset), &
4826 npgfa(iset), npgfb(jset), npgfc(kset), &
4827 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4830 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4831 offset_a_start, offset_b_start, offset_c_start, &
4832 0, 0, first_set - 1, &
4833 sphi_a, sphi_b, sphi_c, &
4835 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4838force_a=force_a(ikind)%forces(:, atom_a), &
4839force_b=force_b(jkind)%forces(:, atom_b), &
4841 do_symmetric=do_symmetric, &
4842 on_diagonal=iatom .EQ. jatom, &
4846 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4848 IF (
PRESENT(force_a) .AND. &
4849 PRESENT(force_b) .AND. &
4850 .NOT.
PRESENT(force_c) .AND. &
4851 PRESENT(pabc) .AND. &
4852 .NOT.
PRESENT(mat_dabc) .AND. &
4853 PRESENT(mat_adbc) .AND. &
4854 PRESENT(mat_abdc))
THEN
4855 CALL integrate_set_3c( &
4856 param%par, potential_parameter, &
4857 la_min(iset), la_max(iset), &
4858 lb_min(jset), lb_max(jset), &
4859 lc_min(kset), lc_max(kset), &
4860 npgfa(iset), npgfb(jset), npgfc(kset), &
4861 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4864 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4865 offset_a_start, offset_b_start, offset_c_start, &
4866 0, 0, first_set - 1, &
4867 sphi_a, sphi_b, sphi_c, &
4869 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4872force_a=force_a(ikind)%forces(:, atom_a), &
4873force_b=force_b(jkind)%forces(:, atom_b), &
4875 do_symmetric=do_symmetric, &
4876 on_diagonal=iatom .EQ. jatom, &
4880 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4882 IF (
PRESENT(force_a) .AND. &
4883 PRESENT(force_b) .AND. &
4884 .NOT.
PRESENT(force_c) .AND. &
4885 PRESENT(pabc) .AND. &
4886 PRESENT(mat_dabc) .AND. &
4887 .NOT.
PRESENT(mat_adbc) .AND. &
4888 .NOT.
PRESENT(mat_abdc))
THEN
4889 CALL integrate_set_3c( &
4890 param%par, potential_parameter, &
4891 la_min(iset), la_max(iset), &
4892 lb_min(jset), lb_max(jset), &
4893 lc_min(kset), lc_max(kset), &
4894 npgfa(iset), npgfb(jset), npgfc(kset), &
4895 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4898 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4899 offset_a_start, offset_b_start, offset_c_start, &
4900 0, 0, first_set - 1, &
4901 sphi_a, sphi_b, sphi_c, &
4903 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4906force_a=force_a(ikind)%forces(:, atom_a), &
4907force_b=force_b(jkind)%forces(:, atom_b), &
4909 do_symmetric=do_symmetric, &
4910 on_diagonal=iatom .EQ. jatom, &
4914 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4916 IF (
PRESENT(force_a) .AND. &
4917 PRESENT(force_b) .AND. &
4918 .NOT.
PRESENT(force_c) .AND. &
4919 PRESENT(pabc) .AND. &
4920 PRESENT(mat_dabc) .AND. &
4921 .NOT.
PRESENT(mat_adbc) .AND. &
4922 PRESENT(mat_abdc))
THEN
4923 CALL integrate_set_3c( &
4924 param%par, potential_parameter, &
4925 la_min(iset), la_max(iset), &
4926 lb_min(jset), lb_max(jset), &
4927 lc_min(kset), lc_max(kset), &
4928 npgfa(iset), npgfb(jset), npgfc(kset), &
4929 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4932 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4933 offset_a_start, offset_b_start, offset_c_start, &
4934 0, 0, first_set - 1, &
4935 sphi_a, sphi_b, sphi_c, &
4937 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4940force_a=force_a(ikind)%forces(:, atom_a), &
4941force_b=force_b(jkind)%forces(:, atom_b), &
4943 do_symmetric=do_symmetric, &
4944 on_diagonal=iatom .EQ. jatom, &
4948 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4950 IF (
PRESENT(force_a) .AND. &
4951 PRESENT(force_b) .AND. &
4952 .NOT.
PRESENT(force_c) .AND. &
4953 PRESENT(pabc) .AND. &
4954 PRESENT(mat_dabc) .AND. &
4955 PRESENT(mat_adbc) .AND. &
4956 .NOT.
PRESENT(mat_abdc))
THEN
4957 CALL integrate_set_3c( &
4958 param%par, potential_parameter, &
4959 la_min(iset), la_max(iset), &
4960 lb_min(jset), lb_max(jset), &
4961 lc_min(kset), lc_max(kset), &
4962 npgfa(iset), npgfb(jset), npgfc(kset), &
4963 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4966 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4967 offset_a_start, offset_b_start, offset_c_start, &
4968 0, 0, first_set - 1, &
4969 sphi_a, sphi_b, sphi_c, &
4971 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4974force_a=force_a(ikind)%forces(:, atom_a), &
4975force_b=force_b(jkind)%forces(:, atom_b), &
4977 do_symmetric=do_symmetric, &
4978 on_diagonal=iatom .EQ. jatom, &
4982 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4984 IF (
PRESENT(force_a) .AND. &
4985 PRESENT(force_b) .AND. &
4986 .NOT.
PRESENT(force_c) .AND. &
4987 PRESENT(pabc) .AND. &
4988 PRESENT(mat_dabc) .AND. &
4989 PRESENT(mat_adbc) .AND. &
4990 PRESENT(mat_abdc))
THEN
4991 CALL integrate_set_3c( &
4992 param%par, potential_parameter, &
4993 la_min(iset), la_max(iset), &
4994 lb_min(jset), lb_max(jset), &
4995 lc_min(kset), lc_max(kset), &
4996 npgfa(iset), npgfb(jset), npgfc(kset), &
4997 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5000 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5001 offset_a_start, offset_b_start, offset_c_start, &
5002 0, 0, first_set - 1, &
5003 sphi_a, sphi_b, sphi_c, &
5005 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5008force_a=force_a(ikind)%forces(:, atom_a), &
5009force_b=force_b(jkind)%forces(:, atom_b), &
5011 do_symmetric=do_symmetric, &
5012 on_diagonal=iatom .EQ. jatom, &
5016 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5018 IF (
PRESENT(force_a) .AND. &
5019 PRESENT(force_b) .AND. &
5020 PRESENT(force_c) .AND. &
5021 PRESENT(pabc) .AND. &
5022 .NOT.
PRESENT(mat_dabc) .AND. &
5023 .NOT.
PRESENT(mat_adbc) .AND. &
5024 .NOT.
PRESENT(mat_abdc))
THEN
5025 CALL integrate_set_3c( &
5026 param%par, potential_parameter, &
5027 la_min(iset), la_max(iset), &
5028 lb_min(jset), lb_max(jset), &
5029 lc_min(kset), lc_max(kset), &
5030 npgfa(iset), npgfb(jset), npgfc(kset), &
5031 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5034 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5035 offset_a_start, offset_b_start, offset_c_start, &
5036 0, 0, first_set - 1, &
5037 sphi_a, sphi_b, sphi_c, &
5039 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5042force_a=force_a(ikind)%forces(:, atom_a), &
5043force_b=force_b(jkind)%forces(:, atom_b), &
5044force_c=force_c(kkind)%forces(:, atom_c), &
5045 do_symmetric=do_symmetric, &
5046 on_diagonal=iatom .EQ. jatom, &
5050 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5052 IF (
PRESENT(force_a) .AND. &
5053 PRESENT(force_b) .AND. &
5054 PRESENT(force_c) .AND. &
5055 PRESENT(pabc) .AND. &
5056 .NOT.
PRESENT(mat_dabc) .AND. &
5057 .NOT.
PRESENT(mat_adbc) .AND. &
5058 PRESENT(mat_abdc))
THEN
5059 CALL integrate_set_3c( &
5060 param%par, potential_parameter, &
5061 la_min(iset), la_max(iset), &
5062 lb_min(jset), lb_max(jset), &
5063 lc_min(kset), lc_max(kset), &
5064 npgfa(iset), npgfb(jset), npgfc(kset), &
5065 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5068 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5069 offset_a_start, offset_b_start, offset_c_start, &
5070 0, 0, first_set - 1, &
5071 sphi_a, sphi_b, sphi_c, &
5073 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5076force_a=force_a(ikind)%forces(:, atom_a), &
5077force_b=force_b(jkind)%forces(:, atom_b), &
5078force_c=force_c(kkind)%forces(:, atom_c), &
5079 do_symmetric=do_symmetric, &
5080 on_diagonal=iatom .EQ. jatom, &
5084 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5086 IF (
PRESENT(force_a) .AND. &
5087 PRESENT(force_b) .AND. &
5088 PRESENT(force_c) .AND. &
5089 PRESENT(pabc) .AND. &
5090 .NOT.
PRESENT(mat_dabc) .AND. &
5091 PRESENT(mat_adbc) .AND. &
5092 .NOT.
PRESENT(mat_abdc))
THEN
5093 CALL integrate_set_3c( &
5094 param%par, potential_parameter, &
5095 la_min(iset), la_max(iset), &
5096 lb_min(jset), lb_max(jset), &
5097 lc_min(kset), lc_max(kset), &
5098 npgfa(iset), npgfb(jset), npgfc(kset), &
5099 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5102 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5103 offset_a_start, offset_b_start, offset_c_start, &
5104 0, 0, first_set - 1, &
5105 sphi_a, sphi_b, sphi_c, &
5107 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5110force_a=force_a(ikind)%forces(:, atom_a), &
5111force_b=force_b(jkind)%forces(:, atom_b), &
5112force_c=force_c(kkind)%forces(:, atom_c), &
5113 do_symmetric=do_symmetric, &
5114 on_diagonal=iatom .EQ. jatom, &
5118 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5120 IF (
PRESENT(force_a) .AND. &
5121 PRESENT(force_b) .AND. &
5122 PRESENT(force_c) .AND. &
5123 PRESENT(pabc) .AND. &
5124 .NOT.
PRESENT(mat_dabc) .AND. &
5125 PRESENT(mat_adbc) .AND. &
5126 PRESENT(mat_abdc))
THEN
5127 CALL integrate_set_3c( &
5128 param%par, potential_parameter, &
5129 la_min(iset), la_max(iset), &
5130 lb_min(jset), lb_max(jset), &
5131 lc_min(kset), lc_max(kset), &
5132 npgfa(iset), npgfb(jset), npgfc(kset), &
5133 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5136 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5137 offset_a_start, offset_b_start, offset_c_start, &
5138 0, 0, first_set - 1, &
5139 sphi_a, sphi_b, sphi_c, &
5141 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5144force_a=force_a(ikind)%forces(:, atom_a), &
5145force_b=force_b(jkind)%forces(:, atom_b), &
5146force_c=force_c(kkind)%forces(:, atom_c), &
5147 do_symmetric=do_symmetric, &
5148 on_diagonal=iatom .EQ. jatom, &
5152 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5154 IF (
PRESENT(force_a) .AND. &
5155 PRESENT(force_b) .AND. &
5156 PRESENT(force_c) .AND. &
5157 PRESENT(pabc) .AND. &
5158 PRESENT(mat_dabc) .AND. &
5159 .NOT.
PRESENT(mat_adbc) .AND. &
5160 .NOT.
PRESENT(mat_abdc))
THEN
5161 CALL integrate_set_3c( &
5162 param%par, potential_parameter, &
5163 la_min(iset), la_max(iset), &
5164 lb_min(jset), lb_max(jset), &
5165 lc_min(kset), lc_max(kset), &
5166 npgfa(iset), npgfb(jset), npgfc(kset), &
5167 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5170 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5171 offset_a_start, offset_b_start, offset_c_start, &
5172 0, 0, first_set - 1, &
5173 sphi_a, sphi_b, sphi_c, &
5175 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5178force_a=force_a(ikind)%forces(:, atom_a), &
5179force_b=force_b(jkind)%forces(:, atom_b), &
5180force_c=force_c(kkind)%forces(:, atom_c), &
5181 do_symmetric=do_symmetric, &
5182 on_diagonal=iatom .EQ. jatom, &
5186 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5188 IF (
PRESENT(force_a) .AND. &
5189 PRESENT(force_b) .AND. &
5190 PRESENT(force_c) .AND. &
5191 PRESENT(pabc) .AND. &
5192 PRESENT(mat_dabc) .AND. &
5193 .NOT.
PRESENT(mat_adbc) .AND. &
5194 PRESENT(mat_abdc))
THEN
5195 CALL integrate_set_3c( &
5196 param%par, potential_parameter, &
5197 la_min(iset), la_max(iset), &
5198 lb_min(jset), lb_max(jset), &
5199 lc_min(kset), lc_max(kset), &
5200 npgfa(iset), npgfb(jset), npgfc(kset), &
5201 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5204 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5205 offset_a_start, offset_b_start, offset_c_start, &
5206 0, 0, first_set - 1, &
5207 sphi_a, sphi_b, sphi_c, &
5209 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5212force_a=force_a(ikind)%forces(:, atom_a), &
5213force_b=force_b(jkind)%forces(:, atom_b), &
5214force_c=force_c(kkind)%forces(:, atom_c), &
5215 do_symmetric=do_symmetric, &
5216 on_diagonal=iatom .EQ. jatom, &
5220 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5222 IF (
PRESENT(force_a) .AND. &
5223 PRESENT(force_b) .AND. &
5224 PRESENT(force_c) .AND. &
5225 PRESENT(pabc) .AND. &
5226 PRESENT(mat_dabc) .AND. &
5227 PRESENT(mat_adbc) .AND. &
5228 .NOT.
PRESENT(mat_abdc))
THEN
5229 CALL integrate_set_3c( &
5230 param%par, potential_parameter, &
5231 la_min(iset), la_max(iset), &
5232 lb_min(jset), lb_max(jset), &
5233 lc_min(kset), lc_max(kset), &
5234 npgfa(iset), npgfb(jset), npgfc(kset), &
5235 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5238 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5239 offset_a_start, offset_b_start, offset_c_start, &
5240 0, 0, first_set - 1, &
5241 sphi_a, sphi_b, sphi_c, &
5243 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5246force_a=force_a(ikind)%forces(:, atom_a), &
5247force_b=force_b(jkind)%forces(:, atom_b), &
5248force_c=force_c(kkind)%forces(:, atom_c), &
5249 do_symmetric=do_symmetric, &
5250 on_diagonal=iatom .EQ. jatom, &
5254 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5256 IF (
PRESENT(force_a) .AND. &
5257 PRESENT(force_b) .AND. &
5258 PRESENT(force_c) .AND. &
5259 PRESENT(pabc) .AND. &
5260 PRESENT(mat_dabc) .AND. &
5261 PRESENT(mat_adbc) .AND. &
5262 PRESENT(mat_abdc))
THEN
5263 CALL integrate_set_3c( &
5264 param%par, potential_parameter, &
5265 la_min(iset), la_max(iset), &
5266 lb_min(jset), lb_max(jset), &
5267 lc_min(kset), lc_max(kset), &
5268 npgfa(iset), npgfb(jset), npgfc(kset), &
5269 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5272 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5273 offset_a_start, offset_b_start, offset_c_start, &
5274 0, 0, first_set - 1, &
5275 sphi_a, sphi_b, sphi_c, &
5277 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5280force_a=force_a(ikind)%forces(:, atom_a), &
5281force_b=force_b(jkind)%forces(:, atom_b), &
5282force_c=force_c(kkind)%forces(:, atom_c), &
5283 do_symmetric=do_symmetric, &
5284 on_diagonal=iatom .EQ. jatom, &
5288 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5295 IF (calculate_forces .AND.
PRESENT(pabc))
DEALLOCATE (pabc_block)
5297 NULLIFY (munu_block)
5299 row=irow, col=icol, block=munu_block, found=found)
5301 munu_block(:, :) = 0.0_dp
5302 IF (irow .EQ. iatom)
THEN
5303 to_be_asserted =
SIZE(munu_block, 1) .EQ.
SIZE(habc, 1) .AND.
SIZE(munu_block, 2) .EQ.
SIZE(habc, 2)
5304 cpassert(to_be_asserted)
5305 munu_block(:, :) = habc(:, :, ic)
5307 to_be_asserted =
SIZE(munu_block, 2) .EQ.
SIZE(habc, 1) .AND.
SIZE(munu_block, 1) .EQ.
SIZE(habc, 2)
5308 cpassert(to_be_asserted)
5309 munu_block(:, :) = transpose(habc(:, :, ic))
5313 IF (calculate_forces)
THEN
5316 IF (
PRESENT(mat_dabc))
THEN
5317 NULLIFY (munu_block)
5319 row=irow, col=icol, block=munu_block, found=found)
5321 munu_block(:, :) = 0.0_dp
5322 IF (irow .EQ. iatom)
THEN
5323 munu_block(:, :) = hdabc(i_xyz, :, :, ic)
5325 munu_block(:, :) = transpose(hdabc(i_xyz, :, :, ic))
5328 IF (
PRESENT(mat_adbc))
THEN
5329 NULLIFY (munu_block)
5331 row=irow, col=icol, block=munu_block, found=found)
5333 munu_block(:, :) = 0.0_dp
5334 IF (irow .EQ. iatom)
THEN
5335 munu_block(:, :) = hadbc(i_xyz, :, :, ic)
5337 munu_block(:, :) = transpose(hadbc(i_xyz, :, :, ic))
5340 IF (
PRESENT(mat_abdc))
THEN
5341 NULLIFY (munu_block)
5343 row=irow, col=icol, block=munu_block, found=found)
5345 munu_block(:, :) = 0.0_dp
5346 IF (irow .EQ. iatom)
THEN
5347 munu_block(:, :) = habdc(i_xyz, :, :, ic)
5349 munu_block(:, :) = transpose(habdc(i_xyz, :, :, ic))
5354 IF (
PRESENT(mat_dabc))
DEALLOCATE (hdabc)
5355 IF (
PRESENT(mat_adbc))
DEALLOCATE (hadbc)
5356 IF (
PRESENT(mat_abdc))
DEALLOCATE (habdc)
5360 DEALLOCATE (basis_set_list_a, basis_set_list_b)
5365 CALL timestop(handle)