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)) cycle
808 IF (sum(basis_set_a%nsgf_set) <= 0) cycle
809 basis_set_b => basis_set_list_b(jkind)%gto_basis_set
810 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
811 IF (sum(basis_set_b%nsgf_set) <= 0) cycle
812 atom_a = atom_of_kind(iatom)
813 atom_b = atom_of_kind(jatom)
815 first_sgfa => basis_set_a%first_sgf
816 la_max => basis_set_a%lmax
817 la_min => basis_set_a%lmin
818 npgfa => basis_set_a%npgf
819 nseta = basis_set_a%nset
820 nsgfa => basis_set_a%nsgf_set
821 set_radius_a => basis_set_a%set_radius
822 sphi_a => basis_set_a%sphi
823 zeta => basis_set_a%zet
826 ra(:) =
pbc(particle_set(iatom)%r, cell)
829 first_sgfb => basis_set_b%first_sgf
830 lb_max => basis_set_b%lmax
831 lb_min => basis_set_b%lmin
832 npgfb => basis_set_b%npgf
833 nsetb = basis_set_b%nset
834 nsgfb => basis_set_b%nsgf_set
835 rpgfb => basis_set_b%pgf_radius
836 set_radius_b => basis_set_b%set_radius
837 sphi_b => basis_set_b%sphi
838 zetb => basis_set_b%zet
841 rb(:) =
pbc(particle_set(jatom)%r, cell)
843 IF (do_symmetric)
THEN
844 IF (iatom <= jatom)
THEN
856 ALLOCATE (habc(na, nb, nc))
857 habc(:, :, :) = 0.0_dp
858 IF (
PRESENT(mat_dabc))
THEN
859 ALLOCATE (hdabc(3, na, nb, nc))
860 hdabc(:, :, :, :) = 0.0_dp
862 IF (
PRESENT(mat_adbc))
THEN
863 ALLOCATE (hadbc(3, na, nb, nc))
864 hadbc(:, :, :, :) = 0.0_dp
866 IF (
PRESENT(mat_abdc))
THEN
867 ALLOCATE (habdc(3, na, nb, nc))
868 habdc(:, :, :, :) = 0.0_dp
871 IF (calculate_forces .AND.
PRESENT(pabc))
THEN
872 ALLOCATE (pabc_block(na, nb, nc))
876 row=irow, col=icol, block=pab_block, found=found)
878 IF (irow == iatom)
THEN
879 to_be_asserted =
SIZE(pab_block, 1) ==
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 2) ==
SIZE(pabc_block, 2)
880 cpassert(to_be_asserted)
881 pabc_block(:, :, ic) = pab_block(:, :)
883 to_be_asserted =
SIZE(pab_block, 2) ==
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 1) ==
SIZE(pabc_block, 2)
884 cpassert(to_be_asserted)
885 pabc_block(:, :, ic) = transpose(pab_block(:, :))
890 rab(:) =
pbc(rab, cell)
891 dab = sqrt(rab(1)**2 + rab(2)**2 + rab(3)**2)
895 offset_a_start = offset_a_end
896 offset_a_end = offset_a_end + nsgfa(iset)
897 sgfa = first_sgfa(1, iset)
901 offset_b_start = offset_b_end
902 offset_b_end = offset_b_end + nsgfb(jset)
904 sgfb = first_sgfb(1, jset)
907 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
910 DO katom = atom_start, atom_end
912 atom_c = atom_of_kind(katom)
914 kkind = kind_of(katom)
915 CALL get_qs_kind(qs_kind=qs_kind_set(kkind), basis_set=basis_set_c, basis_type=basis_type_c)
916 first_sgfc => basis_set_c%first_sgf
917 lc_max => basis_set_c%lmax
918 lc_min => basis_set_c%lmin
919 nsetc = basis_set_c%nset
920 nsgfc => basis_set_c%nsgf_set
921 sphi_c => basis_set_c%sphi
922 zetc => basis_set_c%zet
923 npgfc => basis_set_c%npgf
925 rc(:) =
pbc(particle_set(katom)%r, cell)
927 kset_start = 1; kset_end = nsetc
928 IF (katom == atom_start) kset_start = set_start
929 IF (katom == atom_end) kset_end = set_end
931 DO kset = kset_start, kset_end
932 first_set = 1; last_set = nsgfc(kset)
933 IF (kset == kset_start .AND. katom == atom_start) first_set = set_offset_start
934 IF (kset == kset_end .AND. katom == atom_end) last_set = set_offset_end
936 offset_c_start = offset_c_end
937 offset_c_end = offset_c_end + last_set + 1 - first_set
938 sgfc = first_sgfc(1, kset)
940 IF (.NOT.
PRESENT(force_a) .AND. &
941 .NOT.
PRESENT(force_b) .AND. &
942 .NOT.
PRESENT(force_c) .AND. &
943 .NOT.
PRESENT(pabc) .AND. &
944 .NOT.
PRESENT(mat_dabc) .AND. &
945 .NOT.
PRESENT(mat_adbc) .AND. &
946 .NOT.
PRESENT(mat_abdc))
THEN
947 CALL integrate_set_3c( &
948 param%par, potential_parameter, &
949 la_min(iset), la_max(iset), &
950 lb_min(jset), lb_max(jset), &
951 lc_min(kset), lc_max(kset), &
952 npgfa(iset), npgfb(jset), npgfc(kset), &
953 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
956 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
957 offset_a_start, offset_b_start, offset_c_start, &
958 0, 0, first_set - 1, &
959 sphi_a, sphi_b, sphi_c, &
961 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
967 do_symmetric=do_symmetric, &
968 on_diagonal=iatom == jatom, &
972 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
974 IF (.NOT.
PRESENT(force_a) .AND. &
975 .NOT.
PRESENT(force_b) .AND. &
976 .NOT.
PRESENT(force_c) .AND. &
977 .NOT.
PRESENT(pabc) .AND. &
978 .NOT.
PRESENT(mat_dabc) .AND. &
979 .NOT.
PRESENT(mat_adbc) .AND. &
980 PRESENT(mat_abdc))
THEN
981 CALL integrate_set_3c( &
982 param%par, potential_parameter, &
983 la_min(iset), la_max(iset), &
984 lb_min(jset), lb_max(jset), &
985 lc_min(kset), lc_max(kset), &
986 npgfa(iset), npgfb(jset), npgfc(kset), &
987 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
990 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
991 offset_a_start, offset_b_start, offset_c_start, &
992 0, 0, first_set - 1, &
993 sphi_a, sphi_b, sphi_c, &
995 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1001 do_symmetric=do_symmetric, &
1002 on_diagonal=iatom == jatom, &
1006 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1008 IF (.NOT.
PRESENT(force_a) .AND. &
1009 .NOT.
PRESENT(force_b) .AND. &
1010 .NOT.
PRESENT(force_c) .AND. &
1011 .NOT.
PRESENT(pabc) .AND. &
1012 .NOT.
PRESENT(mat_dabc) .AND. &
1013 PRESENT(mat_adbc) .AND. &
1014 .NOT.
PRESENT(mat_abdc))
THEN
1015 CALL integrate_set_3c( &
1016 param%par, potential_parameter, &
1017 la_min(iset), la_max(iset), &
1018 lb_min(jset), lb_max(jset), &
1019 lc_min(kset), lc_max(kset), &
1020 npgfa(iset), npgfb(jset), npgfc(kset), &
1021 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1024 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1025 offset_a_start, offset_b_start, offset_c_start, &
1026 0, 0, first_set - 1, &
1027 sphi_a, sphi_b, sphi_c, &
1029 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1035 do_symmetric=do_symmetric, &
1036 on_diagonal=iatom == jatom, &
1040 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1042 IF (.NOT.
PRESENT(force_a) .AND. &
1043 .NOT.
PRESENT(force_b) .AND. &
1044 .NOT.
PRESENT(force_c) .AND. &
1045 .NOT.
PRESENT(pabc) .AND. &
1046 .NOT.
PRESENT(mat_dabc) .AND. &
1047 PRESENT(mat_adbc) .AND. &
1048 PRESENT(mat_abdc))
THEN
1049 CALL integrate_set_3c( &
1050 param%par, potential_parameter, &
1051 la_min(iset), la_max(iset), &
1052 lb_min(jset), lb_max(jset), &
1053 lc_min(kset), lc_max(kset), &
1054 npgfa(iset), npgfb(jset), npgfc(kset), &
1055 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1058 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1059 offset_a_start, offset_b_start, offset_c_start, &
1060 0, 0, first_set - 1, &
1061 sphi_a, sphi_b, sphi_c, &
1063 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1069 do_symmetric=do_symmetric, &
1070 on_diagonal=iatom == jatom, &
1074 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1076 IF (.NOT.
PRESENT(force_a) .AND. &
1077 .NOT.
PRESENT(force_b) .AND. &
1078 .NOT.
PRESENT(force_c) .AND. &
1079 .NOT.
PRESENT(pabc) .AND. &
1080 PRESENT(mat_dabc) .AND. &
1081 .NOT.
PRESENT(mat_adbc) .AND. &
1082 .NOT.
PRESENT(mat_abdc))
THEN
1083 CALL integrate_set_3c( &
1084 param%par, potential_parameter, &
1085 la_min(iset), la_max(iset), &
1086 lb_min(jset), lb_max(jset), &
1087 lc_min(kset), lc_max(kset), &
1088 npgfa(iset), npgfb(jset), npgfc(kset), &
1089 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1092 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1093 offset_a_start, offset_b_start, offset_c_start, &
1094 0, 0, first_set - 1, &
1095 sphi_a, sphi_b, sphi_c, &
1097 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1103 do_symmetric=do_symmetric, &
1104 on_diagonal=iatom == jatom, &
1108 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1110 IF (.NOT.
PRESENT(force_a) .AND. &
1111 .NOT.
PRESENT(force_b) .AND. &
1112 .NOT.
PRESENT(force_c) .AND. &
1113 .NOT.
PRESENT(pabc) .AND. &
1114 PRESENT(mat_dabc) .AND. &
1115 .NOT.
PRESENT(mat_adbc) .AND. &
1116 PRESENT(mat_abdc))
THEN
1117 CALL integrate_set_3c( &
1118 param%par, potential_parameter, &
1119 la_min(iset), la_max(iset), &
1120 lb_min(jset), lb_max(jset), &
1121 lc_min(kset), lc_max(kset), &
1122 npgfa(iset), npgfb(jset), npgfc(kset), &
1123 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1126 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1127 offset_a_start, offset_b_start, offset_c_start, &
1128 0, 0, first_set - 1, &
1129 sphi_a, sphi_b, sphi_c, &
1131 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1137 do_symmetric=do_symmetric, &
1138 on_diagonal=iatom == jatom, &
1142 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1144 IF (.NOT.
PRESENT(force_a) .AND. &
1145 .NOT.
PRESENT(force_b) .AND. &
1146 .NOT.
PRESENT(force_c) .AND. &
1147 .NOT.
PRESENT(pabc) .AND. &
1148 PRESENT(mat_dabc) .AND. &
1149 PRESENT(mat_adbc) .AND. &
1150 .NOT.
PRESENT(mat_abdc))
THEN
1151 CALL integrate_set_3c( &
1152 param%par, potential_parameter, &
1153 la_min(iset), la_max(iset), &
1154 lb_min(jset), lb_max(jset), &
1155 lc_min(kset), lc_max(kset), &
1156 npgfa(iset), npgfb(jset), npgfc(kset), &
1157 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1160 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1161 offset_a_start, offset_b_start, offset_c_start, &
1162 0, 0, first_set - 1, &
1163 sphi_a, sphi_b, sphi_c, &
1165 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1171 do_symmetric=do_symmetric, &
1172 on_diagonal=iatom == jatom, &
1176 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1178 IF (.NOT.
PRESENT(force_a) .AND. &
1179 .NOT.
PRESENT(force_b) .AND. &
1180 .NOT.
PRESENT(force_c) .AND. &
1181 .NOT.
PRESENT(pabc) .AND. &
1182 PRESENT(mat_dabc) .AND. &
1183 PRESENT(mat_adbc) .AND. &
1184 PRESENT(mat_abdc))
THEN
1185 CALL integrate_set_3c( &
1186 param%par, potential_parameter, &
1187 la_min(iset), la_max(iset), &
1188 lb_min(jset), lb_max(jset), &
1189 lc_min(kset), lc_max(kset), &
1190 npgfa(iset), npgfb(jset), npgfc(kset), &
1191 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1194 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1195 offset_a_start, offset_b_start, offset_c_start, &
1196 0, 0, first_set - 1, &
1197 sphi_a, sphi_b, sphi_c, &
1199 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1205 do_symmetric=do_symmetric, &
1206 on_diagonal=iatom == jatom, &
1210 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1212 IF (.NOT.
PRESENT(force_a) .AND. &
1213 .NOT.
PRESENT(force_b) .AND. &
1214 PRESENT(force_c) .AND. &
1215 .NOT.
PRESENT(pabc) .AND. &
1216 .NOT.
PRESENT(mat_dabc) .AND. &
1217 .NOT.
PRESENT(mat_adbc) .AND. &
1218 .NOT.
PRESENT(mat_abdc))
THEN
1219 CALL integrate_set_3c( &
1220 param%par, potential_parameter, &
1221 la_min(iset), la_max(iset), &
1222 lb_min(jset), lb_max(jset), &
1223 lc_min(kset), lc_max(kset), &
1224 npgfa(iset), npgfb(jset), npgfc(kset), &
1225 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1228 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1229 offset_a_start, offset_b_start, offset_c_start, &
1230 0, 0, first_set - 1, &
1231 sphi_a, sphi_b, sphi_c, &
1233 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1238force_c=force_c(kkind)%forces(:, atom_c), &
1239 do_symmetric=do_symmetric, &
1240 on_diagonal=iatom == jatom, &
1244 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1246 IF (.NOT.
PRESENT(force_a) .AND. &
1247 .NOT.
PRESENT(force_b) .AND. &
1248 PRESENT(force_c) .AND. &
1249 .NOT.
PRESENT(pabc) .AND. &
1250 .NOT.
PRESENT(mat_dabc) .AND. &
1251 .NOT.
PRESENT(mat_adbc) .AND. &
1252 PRESENT(mat_abdc))
THEN
1253 CALL integrate_set_3c( &
1254 param%par, potential_parameter, &
1255 la_min(iset), la_max(iset), &
1256 lb_min(jset), lb_max(jset), &
1257 lc_min(kset), lc_max(kset), &
1258 npgfa(iset), npgfb(jset), npgfc(kset), &
1259 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1262 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1263 offset_a_start, offset_b_start, offset_c_start, &
1264 0, 0, first_set - 1, &
1265 sphi_a, sphi_b, sphi_c, &
1267 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1272force_c=force_c(kkind)%forces(:, atom_c), &
1273 do_symmetric=do_symmetric, &
1274 on_diagonal=iatom == jatom, &
1278 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1280 IF (.NOT.
PRESENT(force_a) .AND. &
1281 .NOT.
PRESENT(force_b) .AND. &
1282 PRESENT(force_c) .AND. &
1283 .NOT.
PRESENT(pabc) .AND. &
1284 .NOT.
PRESENT(mat_dabc) .AND. &
1285 PRESENT(mat_adbc) .AND. &
1286 .NOT.
PRESENT(mat_abdc))
THEN
1287 CALL integrate_set_3c( &
1288 param%par, potential_parameter, &
1289 la_min(iset), la_max(iset), &
1290 lb_min(jset), lb_max(jset), &
1291 lc_min(kset), lc_max(kset), &
1292 npgfa(iset), npgfb(jset), npgfc(kset), &
1293 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1296 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1297 offset_a_start, offset_b_start, offset_c_start, &
1298 0, 0, first_set - 1, &
1299 sphi_a, sphi_b, sphi_c, &
1301 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1306force_c=force_c(kkind)%forces(:, atom_c), &
1307 do_symmetric=do_symmetric, &
1308 on_diagonal=iatom == jatom, &
1312 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1314 IF (.NOT.
PRESENT(force_a) .AND. &
1315 .NOT.
PRESENT(force_b) .AND. &
1316 PRESENT(force_c) .AND. &
1317 .NOT.
PRESENT(pabc) .AND. &
1318 .NOT.
PRESENT(mat_dabc) .AND. &
1319 PRESENT(mat_adbc) .AND. &
1320 PRESENT(mat_abdc))
THEN
1321 CALL integrate_set_3c( &
1322 param%par, potential_parameter, &
1323 la_min(iset), la_max(iset), &
1324 lb_min(jset), lb_max(jset), &
1325 lc_min(kset), lc_max(kset), &
1326 npgfa(iset), npgfb(jset), npgfc(kset), &
1327 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1330 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1331 offset_a_start, offset_b_start, offset_c_start, &
1332 0, 0, first_set - 1, &
1333 sphi_a, sphi_b, sphi_c, &
1335 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1340force_c=force_c(kkind)%forces(:, atom_c), &
1341 do_symmetric=do_symmetric, &
1342 on_diagonal=iatom == jatom, &
1346 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1348 IF (.NOT.
PRESENT(force_a) .AND. &
1349 .NOT.
PRESENT(force_b) .AND. &
1350 PRESENT(force_c) .AND. &
1351 .NOT.
PRESENT(pabc) .AND. &
1352 PRESENT(mat_dabc) .AND. &
1353 .NOT.
PRESENT(mat_adbc) .AND. &
1354 .NOT.
PRESENT(mat_abdc))
THEN
1355 CALL integrate_set_3c( &
1356 param%par, potential_parameter, &
1357 la_min(iset), la_max(iset), &
1358 lb_min(jset), lb_max(jset), &
1359 lc_min(kset), lc_max(kset), &
1360 npgfa(iset), npgfb(jset), npgfc(kset), &
1361 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1364 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1365 offset_a_start, offset_b_start, offset_c_start, &
1366 0, 0, first_set - 1, &
1367 sphi_a, sphi_b, sphi_c, &
1369 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1374force_c=force_c(kkind)%forces(:, atom_c), &
1375 do_symmetric=do_symmetric, &
1376 on_diagonal=iatom == jatom, &
1380 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1382 IF (.NOT.
PRESENT(force_a) .AND. &
1383 .NOT.
PRESENT(force_b) .AND. &
1384 PRESENT(force_c) .AND. &
1385 .NOT.
PRESENT(pabc) .AND. &
1386 PRESENT(mat_dabc) .AND. &
1387 .NOT.
PRESENT(mat_adbc) .AND. &
1388 PRESENT(mat_abdc))
THEN
1389 CALL integrate_set_3c( &
1390 param%par, potential_parameter, &
1391 la_min(iset), la_max(iset), &
1392 lb_min(jset), lb_max(jset), &
1393 lc_min(kset), lc_max(kset), &
1394 npgfa(iset), npgfb(jset), npgfc(kset), &
1395 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1398 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1399 offset_a_start, offset_b_start, offset_c_start, &
1400 0, 0, first_set - 1, &
1401 sphi_a, sphi_b, sphi_c, &
1403 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1408force_c=force_c(kkind)%forces(:, atom_c), &
1409 do_symmetric=do_symmetric, &
1410 on_diagonal=iatom == jatom, &
1414 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1416 IF (.NOT.
PRESENT(force_a) .AND. &
1417 .NOT.
PRESENT(force_b) .AND. &
1418 PRESENT(force_c) .AND. &
1419 .NOT.
PRESENT(pabc) .AND. &
1420 PRESENT(mat_dabc) .AND. &
1421 PRESENT(mat_adbc) .AND. &
1422 .NOT.
PRESENT(mat_abdc))
THEN
1423 CALL integrate_set_3c( &
1424 param%par, potential_parameter, &
1425 la_min(iset), la_max(iset), &
1426 lb_min(jset), lb_max(jset), &
1427 lc_min(kset), lc_max(kset), &
1428 npgfa(iset), npgfb(jset), npgfc(kset), &
1429 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1432 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1433 offset_a_start, offset_b_start, offset_c_start, &
1434 0, 0, first_set - 1, &
1435 sphi_a, sphi_b, sphi_c, &
1437 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1442force_c=force_c(kkind)%forces(:, atom_c), &
1443 do_symmetric=do_symmetric, &
1444 on_diagonal=iatom == jatom, &
1448 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1450 IF (.NOT.
PRESENT(force_a) .AND. &
1451 .NOT.
PRESENT(force_b) .AND. &
1452 PRESENT(force_c) .AND. &
1453 .NOT.
PRESENT(pabc) .AND. &
1454 PRESENT(mat_dabc) .AND. &
1455 PRESENT(mat_adbc) .AND. &
1456 PRESENT(mat_abdc))
THEN
1457 CALL integrate_set_3c( &
1458 param%par, potential_parameter, &
1459 la_min(iset), la_max(iset), &
1460 lb_min(jset), lb_max(jset), &
1461 lc_min(kset), lc_max(kset), &
1462 npgfa(iset), npgfb(jset), npgfc(kset), &
1463 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1466 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1467 offset_a_start, offset_b_start, offset_c_start, &
1468 0, 0, first_set - 1, &
1469 sphi_a, sphi_b, sphi_c, &
1471 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1476force_c=force_c(kkind)%forces(:, atom_c), &
1477 do_symmetric=do_symmetric, &
1478 on_diagonal=iatom == jatom, &
1482 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1484 IF (.NOT.
PRESENT(force_a) .AND. &
1485 PRESENT(force_b) .AND. &
1486 .NOT.
PRESENT(force_c) .AND. &
1487 .NOT.
PRESENT(pabc) .AND. &
1488 .NOT.
PRESENT(mat_dabc) .AND. &
1489 .NOT.
PRESENT(mat_adbc) .AND. &
1490 .NOT.
PRESENT(mat_abdc))
THEN
1491 CALL integrate_set_3c( &
1492 param%par, potential_parameter, &
1493 la_min(iset), la_max(iset), &
1494 lb_min(jset), lb_max(jset), &
1495 lc_min(kset), lc_max(kset), &
1496 npgfa(iset), npgfb(jset), npgfc(kset), &
1497 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1500 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1501 offset_a_start, offset_b_start, offset_c_start, &
1502 0, 0, first_set - 1, &
1503 sphi_a, sphi_b, sphi_c, &
1505 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1509force_b=force_b(jkind)%forces(:, atom_b), &
1511 do_symmetric=do_symmetric, &
1512 on_diagonal=iatom == jatom, &
1516 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1518 IF (.NOT.
PRESENT(force_a) .AND. &
1519 PRESENT(force_b) .AND. &
1520 .NOT.
PRESENT(force_c) .AND. &
1521 .NOT.
PRESENT(pabc) .AND. &
1522 .NOT.
PRESENT(mat_dabc) .AND. &
1523 .NOT.
PRESENT(mat_adbc) .AND. &
1524 PRESENT(mat_abdc))
THEN
1525 CALL integrate_set_3c( &
1526 param%par, potential_parameter, &
1527 la_min(iset), la_max(iset), &
1528 lb_min(jset), lb_max(jset), &
1529 lc_min(kset), lc_max(kset), &
1530 npgfa(iset), npgfb(jset), npgfc(kset), &
1531 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1534 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1535 offset_a_start, offset_b_start, offset_c_start, &
1536 0, 0, first_set - 1, &
1537 sphi_a, sphi_b, sphi_c, &
1539 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1543force_b=force_b(jkind)%forces(:, atom_b), &
1545 do_symmetric=do_symmetric, &
1546 on_diagonal=iatom == jatom, &
1550 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1552 IF (.NOT.
PRESENT(force_a) .AND. &
1553 PRESENT(force_b) .AND. &
1554 .NOT.
PRESENT(force_c) .AND. &
1555 .NOT.
PRESENT(pabc) .AND. &
1556 .NOT.
PRESENT(mat_dabc) .AND. &
1557 PRESENT(mat_adbc) .AND. &
1558 .NOT.
PRESENT(mat_abdc))
THEN
1559 CALL integrate_set_3c( &
1560 param%par, potential_parameter, &
1561 la_min(iset), la_max(iset), &
1562 lb_min(jset), lb_max(jset), &
1563 lc_min(kset), lc_max(kset), &
1564 npgfa(iset), npgfb(jset), npgfc(kset), &
1565 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1568 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1569 offset_a_start, offset_b_start, offset_c_start, &
1570 0, 0, first_set - 1, &
1571 sphi_a, sphi_b, sphi_c, &
1573 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1577force_b=force_b(jkind)%forces(:, atom_b), &
1579 do_symmetric=do_symmetric, &
1580 on_diagonal=iatom == jatom, &
1584 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1586 IF (.NOT.
PRESENT(force_a) .AND. &
1587 PRESENT(force_b) .AND. &
1588 .NOT.
PRESENT(force_c) .AND. &
1589 .NOT.
PRESENT(pabc) .AND. &
1590 .NOT.
PRESENT(mat_dabc) .AND. &
1591 PRESENT(mat_adbc) .AND. &
1592 PRESENT(mat_abdc))
THEN
1593 CALL integrate_set_3c( &
1594 param%par, potential_parameter, &
1595 la_min(iset), la_max(iset), &
1596 lb_min(jset), lb_max(jset), &
1597 lc_min(kset), lc_max(kset), &
1598 npgfa(iset), npgfb(jset), npgfc(kset), &
1599 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1602 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1603 offset_a_start, offset_b_start, offset_c_start, &
1604 0, 0, first_set - 1, &
1605 sphi_a, sphi_b, sphi_c, &
1607 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1611force_b=force_b(jkind)%forces(:, atom_b), &
1613 do_symmetric=do_symmetric, &
1614 on_diagonal=iatom == jatom, &
1618 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1620 IF (.NOT.
PRESENT(force_a) .AND. &
1621 PRESENT(force_b) .AND. &
1622 .NOT.
PRESENT(force_c) .AND. &
1623 .NOT.
PRESENT(pabc) .AND. &
1624 PRESENT(mat_dabc) .AND. &
1625 .NOT.
PRESENT(mat_adbc) .AND. &
1626 .NOT.
PRESENT(mat_abdc))
THEN
1627 CALL integrate_set_3c( &
1628 param%par, potential_parameter, &
1629 la_min(iset), la_max(iset), &
1630 lb_min(jset), lb_max(jset), &
1631 lc_min(kset), lc_max(kset), &
1632 npgfa(iset), npgfb(jset), npgfc(kset), &
1633 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1636 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1637 offset_a_start, offset_b_start, offset_c_start, &
1638 0, 0, first_set - 1, &
1639 sphi_a, sphi_b, sphi_c, &
1641 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1645force_b=force_b(jkind)%forces(:, atom_b), &
1647 do_symmetric=do_symmetric, &
1648 on_diagonal=iatom == jatom, &
1652 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1654 IF (.NOT.
PRESENT(force_a) .AND. &
1655 PRESENT(force_b) .AND. &
1656 .NOT.
PRESENT(force_c) .AND. &
1657 .NOT.
PRESENT(pabc) .AND. &
1658 PRESENT(mat_dabc) .AND. &
1659 .NOT.
PRESENT(mat_adbc) .AND. &
1660 PRESENT(mat_abdc))
THEN
1661 CALL integrate_set_3c( &
1662 param%par, potential_parameter, &
1663 la_min(iset), la_max(iset), &
1664 lb_min(jset), lb_max(jset), &
1665 lc_min(kset), lc_max(kset), &
1666 npgfa(iset), npgfb(jset), npgfc(kset), &
1667 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1670 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1671 offset_a_start, offset_b_start, offset_c_start, &
1672 0, 0, first_set - 1, &
1673 sphi_a, sphi_b, sphi_c, &
1675 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1679force_b=force_b(jkind)%forces(:, atom_b), &
1681 do_symmetric=do_symmetric, &
1682 on_diagonal=iatom == jatom, &
1686 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1688 IF (.NOT.
PRESENT(force_a) .AND. &
1689 PRESENT(force_b) .AND. &
1690 .NOT.
PRESENT(force_c) .AND. &
1691 .NOT.
PRESENT(pabc) .AND. &
1692 PRESENT(mat_dabc) .AND. &
1693 PRESENT(mat_adbc) .AND. &
1694 .NOT.
PRESENT(mat_abdc))
THEN
1695 CALL integrate_set_3c( &
1696 param%par, potential_parameter, &
1697 la_min(iset), la_max(iset), &
1698 lb_min(jset), lb_max(jset), &
1699 lc_min(kset), lc_max(kset), &
1700 npgfa(iset), npgfb(jset), npgfc(kset), &
1701 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1704 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1705 offset_a_start, offset_b_start, offset_c_start, &
1706 0, 0, first_set - 1, &
1707 sphi_a, sphi_b, sphi_c, &
1709 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1713force_b=force_b(jkind)%forces(:, atom_b), &
1715 do_symmetric=do_symmetric, &
1716 on_diagonal=iatom == jatom, &
1720 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1722 IF (.NOT.
PRESENT(force_a) .AND. &
1723 PRESENT(force_b) .AND. &
1724 .NOT.
PRESENT(force_c) .AND. &
1725 .NOT.
PRESENT(pabc) .AND. &
1726 PRESENT(mat_dabc) .AND. &
1727 PRESENT(mat_adbc) .AND. &
1728 PRESENT(mat_abdc))
THEN
1729 CALL integrate_set_3c( &
1730 param%par, potential_parameter, &
1731 la_min(iset), la_max(iset), &
1732 lb_min(jset), lb_max(jset), &
1733 lc_min(kset), lc_max(kset), &
1734 npgfa(iset), npgfb(jset), npgfc(kset), &
1735 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1738 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1739 offset_a_start, offset_b_start, offset_c_start, &
1740 0, 0, first_set - 1, &
1741 sphi_a, sphi_b, sphi_c, &
1743 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1747force_b=force_b(jkind)%forces(:, atom_b), &
1749 do_symmetric=do_symmetric, &
1750 on_diagonal=iatom == jatom, &
1754 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1756 IF (.NOT.
PRESENT(force_a) .AND. &
1757 PRESENT(force_b) .AND. &
1758 PRESENT(force_c) .AND. &
1759 .NOT.
PRESENT(pabc) .AND. &
1760 .NOT.
PRESENT(mat_dabc) .AND. &
1761 .NOT.
PRESENT(mat_adbc) .AND. &
1762 .NOT.
PRESENT(mat_abdc))
THEN
1763 CALL integrate_set_3c( &
1764 param%par, potential_parameter, &
1765 la_min(iset), la_max(iset), &
1766 lb_min(jset), lb_max(jset), &
1767 lc_min(kset), lc_max(kset), &
1768 npgfa(iset), npgfb(jset), npgfc(kset), &
1769 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1772 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1773 offset_a_start, offset_b_start, offset_c_start, &
1774 0, 0, first_set - 1, &
1775 sphi_a, sphi_b, sphi_c, &
1777 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1781force_b=force_b(jkind)%forces(:, atom_b), &
1782force_c=force_c(kkind)%forces(:, atom_c), &
1783 do_symmetric=do_symmetric, &
1784 on_diagonal=iatom == jatom, &
1788 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1790 IF (.NOT.
PRESENT(force_a) .AND. &
1791 PRESENT(force_b) .AND. &
1792 PRESENT(force_c) .AND. &
1793 .NOT.
PRESENT(pabc) .AND. &
1794 .NOT.
PRESENT(mat_dabc) .AND. &
1795 .NOT.
PRESENT(mat_adbc) .AND. &
1796 PRESENT(mat_abdc))
THEN
1797 CALL integrate_set_3c( &
1798 param%par, potential_parameter, &
1799 la_min(iset), la_max(iset), &
1800 lb_min(jset), lb_max(jset), &
1801 lc_min(kset), lc_max(kset), &
1802 npgfa(iset), npgfb(jset), npgfc(kset), &
1803 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1806 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1807 offset_a_start, offset_b_start, offset_c_start, &
1808 0, 0, first_set - 1, &
1809 sphi_a, sphi_b, sphi_c, &
1811 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1815force_b=force_b(jkind)%forces(:, atom_b), &
1816force_c=force_c(kkind)%forces(:, atom_c), &
1817 do_symmetric=do_symmetric, &
1818 on_diagonal=iatom == jatom, &
1822 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1824 IF (.NOT.
PRESENT(force_a) .AND. &
1825 PRESENT(force_b) .AND. &
1826 PRESENT(force_c) .AND. &
1827 .NOT.
PRESENT(pabc) .AND. &
1828 .NOT.
PRESENT(mat_dabc) .AND. &
1829 PRESENT(mat_adbc) .AND. &
1830 .NOT.
PRESENT(mat_abdc))
THEN
1831 CALL integrate_set_3c( &
1832 param%par, potential_parameter, &
1833 la_min(iset), la_max(iset), &
1834 lb_min(jset), lb_max(jset), &
1835 lc_min(kset), lc_max(kset), &
1836 npgfa(iset), npgfb(jset), npgfc(kset), &
1837 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1840 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1841 offset_a_start, offset_b_start, offset_c_start, &
1842 0, 0, first_set - 1, &
1843 sphi_a, sphi_b, sphi_c, &
1845 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1849force_b=force_b(jkind)%forces(:, atom_b), &
1850force_c=force_c(kkind)%forces(:, atom_c), &
1851 do_symmetric=do_symmetric, &
1852 on_diagonal=iatom == jatom, &
1856 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1858 IF (.NOT.
PRESENT(force_a) .AND. &
1859 PRESENT(force_b) .AND. &
1860 PRESENT(force_c) .AND. &
1861 .NOT.
PRESENT(pabc) .AND. &
1862 .NOT.
PRESENT(mat_dabc) .AND. &
1863 PRESENT(mat_adbc) .AND. &
1864 PRESENT(mat_abdc))
THEN
1865 CALL integrate_set_3c( &
1866 param%par, potential_parameter, &
1867 la_min(iset), la_max(iset), &
1868 lb_min(jset), lb_max(jset), &
1869 lc_min(kset), lc_max(kset), &
1870 npgfa(iset), npgfb(jset), npgfc(kset), &
1871 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1874 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1875 offset_a_start, offset_b_start, offset_c_start, &
1876 0, 0, first_set - 1, &
1877 sphi_a, sphi_b, sphi_c, &
1879 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1883force_b=force_b(jkind)%forces(:, atom_b), &
1884force_c=force_c(kkind)%forces(:, atom_c), &
1885 do_symmetric=do_symmetric, &
1886 on_diagonal=iatom == jatom, &
1890 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1892 IF (.NOT.
PRESENT(force_a) .AND. &
1893 PRESENT(force_b) .AND. &
1894 PRESENT(force_c) .AND. &
1895 .NOT.
PRESENT(pabc) .AND. &
1896 PRESENT(mat_dabc) .AND. &
1897 .NOT.
PRESENT(mat_adbc) .AND. &
1898 .NOT.
PRESENT(mat_abdc))
THEN
1899 CALL integrate_set_3c( &
1900 param%par, potential_parameter, &
1901 la_min(iset), la_max(iset), &
1902 lb_min(jset), lb_max(jset), &
1903 lc_min(kset), lc_max(kset), &
1904 npgfa(iset), npgfb(jset), npgfc(kset), &
1905 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1908 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1909 offset_a_start, offset_b_start, offset_c_start, &
1910 0, 0, first_set - 1, &
1911 sphi_a, sphi_b, sphi_c, &
1913 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1917force_b=force_b(jkind)%forces(:, atom_b), &
1918force_c=force_c(kkind)%forces(:, atom_c), &
1919 do_symmetric=do_symmetric, &
1920 on_diagonal=iatom == jatom, &
1924 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1926 IF (.NOT.
PRESENT(force_a) .AND. &
1927 PRESENT(force_b) .AND. &
1928 PRESENT(force_c) .AND. &
1929 .NOT.
PRESENT(pabc) .AND. &
1930 PRESENT(mat_dabc) .AND. &
1931 .NOT.
PRESENT(mat_adbc) .AND. &
1932 PRESENT(mat_abdc))
THEN
1933 CALL integrate_set_3c( &
1934 param%par, potential_parameter, &
1935 la_min(iset), la_max(iset), &
1936 lb_min(jset), lb_max(jset), &
1937 lc_min(kset), lc_max(kset), &
1938 npgfa(iset), npgfb(jset), npgfc(kset), &
1939 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1942 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1943 offset_a_start, offset_b_start, offset_c_start, &
1944 0, 0, first_set - 1, &
1945 sphi_a, sphi_b, sphi_c, &
1947 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1951force_b=force_b(jkind)%forces(:, atom_b), &
1952force_c=force_c(kkind)%forces(:, atom_c), &
1953 do_symmetric=do_symmetric, &
1954 on_diagonal=iatom == jatom, &
1958 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1960 IF (.NOT.
PRESENT(force_a) .AND. &
1961 PRESENT(force_b) .AND. &
1962 PRESENT(force_c) .AND. &
1963 .NOT.
PRESENT(pabc) .AND. &
1964 PRESENT(mat_dabc) .AND. &
1965 PRESENT(mat_adbc) .AND. &
1966 .NOT.
PRESENT(mat_abdc))
THEN
1967 CALL integrate_set_3c( &
1968 param%par, potential_parameter, &
1969 la_min(iset), la_max(iset), &
1970 lb_min(jset), lb_max(jset), &
1971 lc_min(kset), lc_max(kset), &
1972 npgfa(iset), npgfb(jset), npgfc(kset), &
1973 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1976 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1977 offset_a_start, offset_b_start, offset_c_start, &
1978 0, 0, first_set - 1, &
1979 sphi_a, sphi_b, sphi_c, &
1981 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1985force_b=force_b(jkind)%forces(:, atom_b), &
1986force_c=force_c(kkind)%forces(:, atom_c), &
1987 do_symmetric=do_symmetric, &
1988 on_diagonal=iatom == jatom, &
1992 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1994 IF (.NOT.
PRESENT(force_a) .AND. &
1995 PRESENT(force_b) .AND. &
1996 PRESENT(force_c) .AND. &
1997 .NOT.
PRESENT(pabc) .AND. &
1998 PRESENT(mat_dabc) .AND. &
1999 PRESENT(mat_adbc) .AND. &
2000 PRESENT(mat_abdc))
THEN
2001 CALL integrate_set_3c( &
2002 param%par, potential_parameter, &
2003 la_min(iset), la_max(iset), &
2004 lb_min(jset), lb_max(jset), &
2005 lc_min(kset), lc_max(kset), &
2006 npgfa(iset), npgfb(jset), npgfc(kset), &
2007 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2010 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2011 offset_a_start, offset_b_start, offset_c_start, &
2012 0, 0, first_set - 1, &
2013 sphi_a, sphi_b, sphi_c, &
2015 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2019force_b=force_b(jkind)%forces(:, atom_b), &
2020force_c=force_c(kkind)%forces(:, atom_c), &
2021 do_symmetric=do_symmetric, &
2022 on_diagonal=iatom == jatom, &
2026 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2028 IF (
PRESENT(force_a) .AND. &
2029 .NOT.
PRESENT(force_b) .AND. &
2030 .NOT.
PRESENT(force_c) .AND. &
2031 .NOT.
PRESENT(pabc) .AND. &
2032 .NOT.
PRESENT(mat_dabc) .AND. &
2033 .NOT.
PRESENT(mat_adbc) .AND. &
2034 .NOT.
PRESENT(mat_abdc))
THEN
2035 CALL integrate_set_3c( &
2036 param%par, potential_parameter, &
2037 la_min(iset), la_max(iset), &
2038 lb_min(jset), lb_max(jset), &
2039 lc_min(kset), lc_max(kset), &
2040 npgfa(iset), npgfb(jset), npgfc(kset), &
2041 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2044 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2045 offset_a_start, offset_b_start, offset_c_start, &
2046 0, 0, first_set - 1, &
2047 sphi_a, sphi_b, sphi_c, &
2049 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2052force_a=force_a(ikind)%forces(:, atom_a), &
2055 do_symmetric=do_symmetric, &
2056 on_diagonal=iatom == jatom, &
2060 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2062 IF (
PRESENT(force_a) .AND. &
2063 .NOT.
PRESENT(force_b) .AND. &
2064 .NOT.
PRESENT(force_c) .AND. &
2065 .NOT.
PRESENT(pabc) .AND. &
2066 .NOT.
PRESENT(mat_dabc) .AND. &
2067 .NOT.
PRESENT(mat_adbc) .AND. &
2068 PRESENT(mat_abdc))
THEN
2069 CALL integrate_set_3c( &
2070 param%par, potential_parameter, &
2071 la_min(iset), la_max(iset), &
2072 lb_min(jset), lb_max(jset), &
2073 lc_min(kset), lc_max(kset), &
2074 npgfa(iset), npgfb(jset), npgfc(kset), &
2075 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2078 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2079 offset_a_start, offset_b_start, offset_c_start, &
2080 0, 0, first_set - 1, &
2081 sphi_a, sphi_b, sphi_c, &
2083 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2086force_a=force_a(ikind)%forces(:, atom_a), &
2089 do_symmetric=do_symmetric, &
2090 on_diagonal=iatom == jatom, &
2094 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2096 IF (
PRESENT(force_a) .AND. &
2097 .NOT.
PRESENT(force_b) .AND. &
2098 .NOT.
PRESENT(force_c) .AND. &
2099 .NOT.
PRESENT(pabc) .AND. &
2100 .NOT.
PRESENT(mat_dabc) .AND. &
2101 PRESENT(mat_adbc) .AND. &
2102 .NOT.
PRESENT(mat_abdc))
THEN
2103 CALL integrate_set_3c( &
2104 param%par, potential_parameter, &
2105 la_min(iset), la_max(iset), &
2106 lb_min(jset), lb_max(jset), &
2107 lc_min(kset), lc_max(kset), &
2108 npgfa(iset), npgfb(jset), npgfc(kset), &
2109 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2112 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2113 offset_a_start, offset_b_start, offset_c_start, &
2114 0, 0, first_set - 1, &
2115 sphi_a, sphi_b, sphi_c, &
2117 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2120force_a=force_a(ikind)%forces(:, atom_a), &
2123 do_symmetric=do_symmetric, &
2124 on_diagonal=iatom == jatom, &
2128 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2130 IF (
PRESENT(force_a) .AND. &
2131 .NOT.
PRESENT(force_b) .AND. &
2132 .NOT.
PRESENT(force_c) .AND. &
2133 .NOT.
PRESENT(pabc) .AND. &
2134 .NOT.
PRESENT(mat_dabc) .AND. &
2135 PRESENT(mat_adbc) .AND. &
2136 PRESENT(mat_abdc))
THEN
2137 CALL integrate_set_3c( &
2138 param%par, potential_parameter, &
2139 la_min(iset), la_max(iset), &
2140 lb_min(jset), lb_max(jset), &
2141 lc_min(kset), lc_max(kset), &
2142 npgfa(iset), npgfb(jset), npgfc(kset), &
2143 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2146 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2147 offset_a_start, offset_b_start, offset_c_start, &
2148 0, 0, first_set - 1, &
2149 sphi_a, sphi_b, sphi_c, &
2151 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2154force_a=force_a(ikind)%forces(:, atom_a), &
2157 do_symmetric=do_symmetric, &
2158 on_diagonal=iatom == jatom, &
2162 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2164 IF (
PRESENT(force_a) .AND. &
2165 .NOT.
PRESENT(force_b) .AND. &
2166 .NOT.
PRESENT(force_c) .AND. &
2167 .NOT.
PRESENT(pabc) .AND. &
2168 PRESENT(mat_dabc) .AND. &
2169 .NOT.
PRESENT(mat_adbc) .AND. &
2170 .NOT.
PRESENT(mat_abdc))
THEN
2171 CALL integrate_set_3c( &
2172 param%par, potential_parameter, &
2173 la_min(iset), la_max(iset), &
2174 lb_min(jset), lb_max(jset), &
2175 lc_min(kset), lc_max(kset), &
2176 npgfa(iset), npgfb(jset), npgfc(kset), &
2177 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2180 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2181 offset_a_start, offset_b_start, offset_c_start, &
2182 0, 0, first_set - 1, &
2183 sphi_a, sphi_b, sphi_c, &
2185 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2188force_a=force_a(ikind)%forces(:, atom_a), &
2191 do_symmetric=do_symmetric, &
2192 on_diagonal=iatom == jatom, &
2196 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2198 IF (
PRESENT(force_a) .AND. &
2199 .NOT.
PRESENT(force_b) .AND. &
2200 .NOT.
PRESENT(force_c) .AND. &
2201 .NOT.
PRESENT(pabc) .AND. &
2202 PRESENT(mat_dabc) .AND. &
2203 .NOT.
PRESENT(mat_adbc) .AND. &
2204 PRESENT(mat_abdc))
THEN
2205 CALL integrate_set_3c( &
2206 param%par, potential_parameter, &
2207 la_min(iset), la_max(iset), &
2208 lb_min(jset), lb_max(jset), &
2209 lc_min(kset), lc_max(kset), &
2210 npgfa(iset), npgfb(jset), npgfc(kset), &
2211 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2214 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2215 offset_a_start, offset_b_start, offset_c_start, &
2216 0, 0, first_set - 1, &
2217 sphi_a, sphi_b, sphi_c, &
2219 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2222force_a=force_a(ikind)%forces(:, atom_a), &
2225 do_symmetric=do_symmetric, &
2226 on_diagonal=iatom == jatom, &
2230 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2232 IF (
PRESENT(force_a) .AND. &
2233 .NOT.
PRESENT(force_b) .AND. &
2234 .NOT.
PRESENT(force_c) .AND. &
2235 .NOT.
PRESENT(pabc) .AND. &
2236 PRESENT(mat_dabc) .AND. &
2237 PRESENT(mat_adbc) .AND. &
2238 .NOT.
PRESENT(mat_abdc))
THEN
2239 CALL integrate_set_3c( &
2240 param%par, potential_parameter, &
2241 la_min(iset), la_max(iset), &
2242 lb_min(jset), lb_max(jset), &
2243 lc_min(kset), lc_max(kset), &
2244 npgfa(iset), npgfb(jset), npgfc(kset), &
2245 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2248 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2249 offset_a_start, offset_b_start, offset_c_start, &
2250 0, 0, first_set - 1, &
2251 sphi_a, sphi_b, sphi_c, &
2253 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2256force_a=force_a(ikind)%forces(:, atom_a), &
2259 do_symmetric=do_symmetric, &
2260 on_diagonal=iatom == jatom, &
2264 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2266 IF (
PRESENT(force_a) .AND. &
2267 .NOT.
PRESENT(force_b) .AND. &
2268 .NOT.
PRESENT(force_c) .AND. &
2269 .NOT.
PRESENT(pabc) .AND. &
2270 PRESENT(mat_dabc) .AND. &
2271 PRESENT(mat_adbc) .AND. &
2272 PRESENT(mat_abdc))
THEN
2273 CALL integrate_set_3c( &
2274 param%par, potential_parameter, &
2275 la_min(iset), la_max(iset), &
2276 lb_min(jset), lb_max(jset), &
2277 lc_min(kset), lc_max(kset), &
2278 npgfa(iset), npgfb(jset), npgfc(kset), &
2279 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2282 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2283 offset_a_start, offset_b_start, offset_c_start, &
2284 0, 0, first_set - 1, &
2285 sphi_a, sphi_b, sphi_c, &
2287 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2290force_a=force_a(ikind)%forces(:, atom_a), &
2293 do_symmetric=do_symmetric, &
2294 on_diagonal=iatom == jatom, &
2298 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2300 IF (
PRESENT(force_a) .AND. &
2301 .NOT.
PRESENT(force_b) .AND. &
2302 PRESENT(force_c) .AND. &
2303 .NOT.
PRESENT(pabc) .AND. &
2304 .NOT.
PRESENT(mat_dabc) .AND. &
2305 .NOT.
PRESENT(mat_adbc) .AND. &
2306 .NOT.
PRESENT(mat_abdc))
THEN
2307 CALL integrate_set_3c( &
2308 param%par, potential_parameter, &
2309 la_min(iset), la_max(iset), &
2310 lb_min(jset), lb_max(jset), &
2311 lc_min(kset), lc_max(kset), &
2312 npgfa(iset), npgfb(jset), npgfc(kset), &
2313 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2316 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2317 offset_a_start, offset_b_start, offset_c_start, &
2318 0, 0, first_set - 1, &
2319 sphi_a, sphi_b, sphi_c, &
2321 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2324force_a=force_a(ikind)%forces(:, atom_a), &
2326force_c=force_c(kkind)%forces(:, atom_c), &
2327 do_symmetric=do_symmetric, &
2328 on_diagonal=iatom == jatom, &
2332 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2334 IF (
PRESENT(force_a) .AND. &
2335 .NOT.
PRESENT(force_b) .AND. &
2336 PRESENT(force_c) .AND. &
2337 .NOT.
PRESENT(pabc) .AND. &
2338 .NOT.
PRESENT(mat_dabc) .AND. &
2339 .NOT.
PRESENT(mat_adbc) .AND. &
2340 PRESENT(mat_abdc))
THEN
2341 CALL integrate_set_3c( &
2342 param%par, potential_parameter, &
2343 la_min(iset), la_max(iset), &
2344 lb_min(jset), lb_max(jset), &
2345 lc_min(kset), lc_max(kset), &
2346 npgfa(iset), npgfb(jset), npgfc(kset), &
2347 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2350 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2351 offset_a_start, offset_b_start, offset_c_start, &
2352 0, 0, first_set - 1, &
2353 sphi_a, sphi_b, sphi_c, &
2355 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2358force_a=force_a(ikind)%forces(:, atom_a), &
2360force_c=force_c(kkind)%forces(:, atom_c), &
2361 do_symmetric=do_symmetric, &
2362 on_diagonal=iatom == jatom, &
2366 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2368 IF (
PRESENT(force_a) .AND. &
2369 .NOT.
PRESENT(force_b) .AND. &
2370 PRESENT(force_c) .AND. &
2371 .NOT.
PRESENT(pabc) .AND. &
2372 .NOT.
PRESENT(mat_dabc) .AND. &
2373 PRESENT(mat_adbc) .AND. &
2374 .NOT.
PRESENT(mat_abdc))
THEN
2375 CALL integrate_set_3c( &
2376 param%par, potential_parameter, &
2377 la_min(iset), la_max(iset), &
2378 lb_min(jset), lb_max(jset), &
2379 lc_min(kset), lc_max(kset), &
2380 npgfa(iset), npgfb(jset), npgfc(kset), &
2381 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2384 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2385 offset_a_start, offset_b_start, offset_c_start, &
2386 0, 0, first_set - 1, &
2387 sphi_a, sphi_b, sphi_c, &
2389 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2392force_a=force_a(ikind)%forces(:, atom_a), &
2394force_c=force_c(kkind)%forces(:, atom_c), &
2395 do_symmetric=do_symmetric, &
2396 on_diagonal=iatom == jatom, &
2400 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2402 IF (
PRESENT(force_a) .AND. &
2403 .NOT.
PRESENT(force_b) .AND. &
2404 PRESENT(force_c) .AND. &
2405 .NOT.
PRESENT(pabc) .AND. &
2406 .NOT.
PRESENT(mat_dabc) .AND. &
2407 PRESENT(mat_adbc) .AND. &
2408 PRESENT(mat_abdc))
THEN
2409 CALL integrate_set_3c( &
2410 param%par, potential_parameter, &
2411 la_min(iset), la_max(iset), &
2412 lb_min(jset), lb_max(jset), &
2413 lc_min(kset), lc_max(kset), &
2414 npgfa(iset), npgfb(jset), npgfc(kset), &
2415 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2418 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2419 offset_a_start, offset_b_start, offset_c_start, &
2420 0, 0, first_set - 1, &
2421 sphi_a, sphi_b, sphi_c, &
2423 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2426force_a=force_a(ikind)%forces(:, atom_a), &
2428force_c=force_c(kkind)%forces(:, atom_c), &
2429 do_symmetric=do_symmetric, &
2430 on_diagonal=iatom == jatom, &
2434 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2436 IF (
PRESENT(force_a) .AND. &
2437 .NOT.
PRESENT(force_b) .AND. &
2438 PRESENT(force_c) .AND. &
2439 .NOT.
PRESENT(pabc) .AND. &
2440 PRESENT(mat_dabc) .AND. &
2441 .NOT.
PRESENT(mat_adbc) .AND. &
2442 .NOT.
PRESENT(mat_abdc))
THEN
2443 CALL integrate_set_3c( &
2444 param%par, potential_parameter, &
2445 la_min(iset), la_max(iset), &
2446 lb_min(jset), lb_max(jset), &
2447 lc_min(kset), lc_max(kset), &
2448 npgfa(iset), npgfb(jset), npgfc(kset), &
2449 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2452 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2453 offset_a_start, offset_b_start, offset_c_start, &
2454 0, 0, first_set - 1, &
2455 sphi_a, sphi_b, sphi_c, &
2457 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2460force_a=force_a(ikind)%forces(:, atom_a), &
2462force_c=force_c(kkind)%forces(:, atom_c), &
2463 do_symmetric=do_symmetric, &
2464 on_diagonal=iatom == jatom, &
2468 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2470 IF (
PRESENT(force_a) .AND. &
2471 .NOT.
PRESENT(force_b) .AND. &
2472 PRESENT(force_c) .AND. &
2473 .NOT.
PRESENT(pabc) .AND. &
2474 PRESENT(mat_dabc) .AND. &
2475 .NOT.
PRESENT(mat_adbc) .AND. &
2476 PRESENT(mat_abdc))
THEN
2477 CALL integrate_set_3c( &
2478 param%par, potential_parameter, &
2479 la_min(iset), la_max(iset), &
2480 lb_min(jset), lb_max(jset), &
2481 lc_min(kset), lc_max(kset), &
2482 npgfa(iset), npgfb(jset), npgfc(kset), &
2483 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2486 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2487 offset_a_start, offset_b_start, offset_c_start, &
2488 0, 0, first_set - 1, &
2489 sphi_a, sphi_b, sphi_c, &
2491 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2494force_a=force_a(ikind)%forces(:, atom_a), &
2496force_c=force_c(kkind)%forces(:, atom_c), &
2497 do_symmetric=do_symmetric, &
2498 on_diagonal=iatom == jatom, &
2502 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2504 IF (
PRESENT(force_a) .AND. &
2505 .NOT.
PRESENT(force_b) .AND. &
2506 PRESENT(force_c) .AND. &
2507 .NOT.
PRESENT(pabc) .AND. &
2508 PRESENT(mat_dabc) .AND. &
2509 PRESENT(mat_adbc) .AND. &
2510 .NOT.
PRESENT(mat_abdc))
THEN
2511 CALL integrate_set_3c( &
2512 param%par, potential_parameter, &
2513 la_min(iset), la_max(iset), &
2514 lb_min(jset), lb_max(jset), &
2515 lc_min(kset), lc_max(kset), &
2516 npgfa(iset), npgfb(jset), npgfc(kset), &
2517 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2520 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2521 offset_a_start, offset_b_start, offset_c_start, &
2522 0, 0, first_set - 1, &
2523 sphi_a, sphi_b, sphi_c, &
2525 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2528force_a=force_a(ikind)%forces(:, atom_a), &
2530force_c=force_c(kkind)%forces(:, atom_c), &
2531 do_symmetric=do_symmetric, &
2532 on_diagonal=iatom == jatom, &
2536 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2538 IF (
PRESENT(force_a) .AND. &
2539 .NOT.
PRESENT(force_b) .AND. &
2540 PRESENT(force_c) .AND. &
2541 .NOT.
PRESENT(pabc) .AND. &
2542 PRESENT(mat_dabc) .AND. &
2543 PRESENT(mat_adbc) .AND. &
2544 PRESENT(mat_abdc))
THEN
2545 CALL integrate_set_3c( &
2546 param%par, potential_parameter, &
2547 la_min(iset), la_max(iset), &
2548 lb_min(jset), lb_max(jset), &
2549 lc_min(kset), lc_max(kset), &
2550 npgfa(iset), npgfb(jset), npgfc(kset), &
2551 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2554 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2555 offset_a_start, offset_b_start, offset_c_start, &
2556 0, 0, first_set - 1, &
2557 sphi_a, sphi_b, sphi_c, &
2559 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2562force_a=force_a(ikind)%forces(:, atom_a), &
2564force_c=force_c(kkind)%forces(:, atom_c), &
2565 do_symmetric=do_symmetric, &
2566 on_diagonal=iatom == jatom, &
2570 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2572 IF (
PRESENT(force_a) .AND. &
2573 PRESENT(force_b) .AND. &
2574 .NOT.
PRESENT(force_c) .AND. &
2575 .NOT.
PRESENT(pabc) .AND. &
2576 .NOT.
PRESENT(mat_dabc) .AND. &
2577 .NOT.
PRESENT(mat_adbc) .AND. &
2578 .NOT.
PRESENT(mat_abdc))
THEN
2579 CALL integrate_set_3c( &
2580 param%par, potential_parameter, &
2581 la_min(iset), la_max(iset), &
2582 lb_min(jset), lb_max(jset), &
2583 lc_min(kset), lc_max(kset), &
2584 npgfa(iset), npgfb(jset), npgfc(kset), &
2585 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2588 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2589 offset_a_start, offset_b_start, offset_c_start, &
2590 0, 0, first_set - 1, &
2591 sphi_a, sphi_b, sphi_c, &
2593 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2596force_a=force_a(ikind)%forces(:, atom_a), &
2597force_b=force_b(jkind)%forces(:, atom_b), &
2599 do_symmetric=do_symmetric, &
2600 on_diagonal=iatom == jatom, &
2604 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2606 IF (
PRESENT(force_a) .AND. &
2607 PRESENT(force_b) .AND. &
2608 .NOT.
PRESENT(force_c) .AND. &
2609 .NOT.
PRESENT(pabc) .AND. &
2610 .NOT.
PRESENT(mat_dabc) .AND. &
2611 .NOT.
PRESENT(mat_adbc) .AND. &
2612 PRESENT(mat_abdc))
THEN
2613 CALL integrate_set_3c( &
2614 param%par, potential_parameter, &
2615 la_min(iset), la_max(iset), &
2616 lb_min(jset), lb_max(jset), &
2617 lc_min(kset), lc_max(kset), &
2618 npgfa(iset), npgfb(jset), npgfc(kset), &
2619 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2622 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2623 offset_a_start, offset_b_start, offset_c_start, &
2624 0, 0, first_set - 1, &
2625 sphi_a, sphi_b, sphi_c, &
2627 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2630force_a=force_a(ikind)%forces(:, atom_a), &
2631force_b=force_b(jkind)%forces(:, atom_b), &
2633 do_symmetric=do_symmetric, &
2634 on_diagonal=iatom == jatom, &
2638 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2640 IF (
PRESENT(force_a) .AND. &
2641 PRESENT(force_b) .AND. &
2642 .NOT.
PRESENT(force_c) .AND. &
2643 .NOT.
PRESENT(pabc) .AND. &
2644 .NOT.
PRESENT(mat_dabc) .AND. &
2645 PRESENT(mat_adbc) .AND. &
2646 .NOT.
PRESENT(mat_abdc))
THEN
2647 CALL integrate_set_3c( &
2648 param%par, potential_parameter, &
2649 la_min(iset), la_max(iset), &
2650 lb_min(jset), lb_max(jset), &
2651 lc_min(kset), lc_max(kset), &
2652 npgfa(iset), npgfb(jset), npgfc(kset), &
2653 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2656 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2657 offset_a_start, offset_b_start, offset_c_start, &
2658 0, 0, first_set - 1, &
2659 sphi_a, sphi_b, sphi_c, &
2661 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2664force_a=force_a(ikind)%forces(:, atom_a), &
2665force_b=force_b(jkind)%forces(:, atom_b), &
2667 do_symmetric=do_symmetric, &
2668 on_diagonal=iatom == jatom, &
2672 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2674 IF (
PRESENT(force_a) .AND. &
2675 PRESENT(force_b) .AND. &
2676 .NOT.
PRESENT(force_c) .AND. &
2677 .NOT.
PRESENT(pabc) .AND. &
2678 .NOT.
PRESENT(mat_dabc) .AND. &
2679 PRESENT(mat_adbc) .AND. &
2680 PRESENT(mat_abdc))
THEN
2681 CALL integrate_set_3c( &
2682 param%par, potential_parameter, &
2683 la_min(iset), la_max(iset), &
2684 lb_min(jset), lb_max(jset), &
2685 lc_min(kset), lc_max(kset), &
2686 npgfa(iset), npgfb(jset), npgfc(kset), &
2687 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2690 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2691 offset_a_start, offset_b_start, offset_c_start, &
2692 0, 0, first_set - 1, &
2693 sphi_a, sphi_b, sphi_c, &
2695 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2698force_a=force_a(ikind)%forces(:, atom_a), &
2699force_b=force_b(jkind)%forces(:, atom_b), &
2701 do_symmetric=do_symmetric, &
2702 on_diagonal=iatom == jatom, &
2706 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2708 IF (
PRESENT(force_a) .AND. &
2709 PRESENT(force_b) .AND. &
2710 .NOT.
PRESENT(force_c) .AND. &
2711 .NOT.
PRESENT(pabc) .AND. &
2712 PRESENT(mat_dabc) .AND. &
2713 .NOT.
PRESENT(mat_adbc) .AND. &
2714 .NOT.
PRESENT(mat_abdc))
THEN
2715 CALL integrate_set_3c( &
2716 param%par, potential_parameter, &
2717 la_min(iset), la_max(iset), &
2718 lb_min(jset), lb_max(jset), &
2719 lc_min(kset), lc_max(kset), &
2720 npgfa(iset), npgfb(jset), npgfc(kset), &
2721 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2724 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2725 offset_a_start, offset_b_start, offset_c_start, &
2726 0, 0, first_set - 1, &
2727 sphi_a, sphi_b, sphi_c, &
2729 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2732force_a=force_a(ikind)%forces(:, atom_a), &
2733force_b=force_b(jkind)%forces(:, atom_b), &
2735 do_symmetric=do_symmetric, &
2736 on_diagonal=iatom == jatom, &
2740 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2742 IF (
PRESENT(force_a) .AND. &
2743 PRESENT(force_b) .AND. &
2744 .NOT.
PRESENT(force_c) .AND. &
2745 .NOT.
PRESENT(pabc) .AND. &
2746 PRESENT(mat_dabc) .AND. &
2747 .NOT.
PRESENT(mat_adbc) .AND. &
2748 PRESENT(mat_abdc))
THEN
2749 CALL integrate_set_3c( &
2750 param%par, potential_parameter, &
2751 la_min(iset), la_max(iset), &
2752 lb_min(jset), lb_max(jset), &
2753 lc_min(kset), lc_max(kset), &
2754 npgfa(iset), npgfb(jset), npgfc(kset), &
2755 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2758 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2759 offset_a_start, offset_b_start, offset_c_start, &
2760 0, 0, first_set - 1, &
2761 sphi_a, sphi_b, sphi_c, &
2763 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2766force_a=force_a(ikind)%forces(:, atom_a), &
2767force_b=force_b(jkind)%forces(:, atom_b), &
2769 do_symmetric=do_symmetric, &
2770 on_diagonal=iatom == jatom, &
2774 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2776 IF (
PRESENT(force_a) .AND. &
2777 PRESENT(force_b) .AND. &
2778 .NOT.
PRESENT(force_c) .AND. &
2779 .NOT.
PRESENT(pabc) .AND. &
2780 PRESENT(mat_dabc) .AND. &
2781 PRESENT(mat_adbc) .AND. &
2782 .NOT.
PRESENT(mat_abdc))
THEN
2783 CALL integrate_set_3c( &
2784 param%par, potential_parameter, &
2785 la_min(iset), la_max(iset), &
2786 lb_min(jset), lb_max(jset), &
2787 lc_min(kset), lc_max(kset), &
2788 npgfa(iset), npgfb(jset), npgfc(kset), &
2789 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2792 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2793 offset_a_start, offset_b_start, offset_c_start, &
2794 0, 0, first_set - 1, &
2795 sphi_a, sphi_b, sphi_c, &
2797 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2800force_a=force_a(ikind)%forces(:, atom_a), &
2801force_b=force_b(jkind)%forces(:, atom_b), &
2803 do_symmetric=do_symmetric, &
2804 on_diagonal=iatom == jatom, &
2808 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2810 IF (
PRESENT(force_a) .AND. &
2811 PRESENT(force_b) .AND. &
2812 .NOT.
PRESENT(force_c) .AND. &
2813 .NOT.
PRESENT(pabc) .AND. &
2814 PRESENT(mat_dabc) .AND. &
2815 PRESENT(mat_adbc) .AND. &
2816 PRESENT(mat_abdc))
THEN
2817 CALL integrate_set_3c( &
2818 param%par, potential_parameter, &
2819 la_min(iset), la_max(iset), &
2820 lb_min(jset), lb_max(jset), &
2821 lc_min(kset), lc_max(kset), &
2822 npgfa(iset), npgfb(jset), npgfc(kset), &
2823 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2826 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2827 offset_a_start, offset_b_start, offset_c_start, &
2828 0, 0, first_set - 1, &
2829 sphi_a, sphi_b, sphi_c, &
2831 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2834force_a=force_a(ikind)%forces(:, atom_a), &
2835force_b=force_b(jkind)%forces(:, atom_b), &
2837 do_symmetric=do_symmetric, &
2838 on_diagonal=iatom == jatom, &
2842 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2844 IF (
PRESENT(force_a) .AND. &
2845 PRESENT(force_b) .AND. &
2846 PRESENT(force_c) .AND. &
2847 .NOT.
PRESENT(pabc) .AND. &
2848 .NOT.
PRESENT(mat_dabc) .AND. &
2849 .NOT.
PRESENT(mat_adbc) .AND. &
2850 .NOT.
PRESENT(mat_abdc))
THEN
2851 CALL integrate_set_3c( &
2852 param%par, potential_parameter, &
2853 la_min(iset), la_max(iset), &
2854 lb_min(jset), lb_max(jset), &
2855 lc_min(kset), lc_max(kset), &
2856 npgfa(iset), npgfb(jset), npgfc(kset), &
2857 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2860 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2861 offset_a_start, offset_b_start, offset_c_start, &
2862 0, 0, first_set - 1, &
2863 sphi_a, sphi_b, sphi_c, &
2865 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2868force_a=force_a(ikind)%forces(:, atom_a), &
2869force_b=force_b(jkind)%forces(:, atom_b), &
2870force_c=force_c(kkind)%forces(:, atom_c), &
2871 do_symmetric=do_symmetric, &
2872 on_diagonal=iatom == jatom, &
2876 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2878 IF (
PRESENT(force_a) .AND. &
2879 PRESENT(force_b) .AND. &
2880 PRESENT(force_c) .AND. &
2881 .NOT.
PRESENT(pabc) .AND. &
2882 .NOT.
PRESENT(mat_dabc) .AND. &
2883 .NOT.
PRESENT(mat_adbc) .AND. &
2884 PRESENT(mat_abdc))
THEN
2885 CALL integrate_set_3c( &
2886 param%par, potential_parameter, &
2887 la_min(iset), la_max(iset), &
2888 lb_min(jset), lb_max(jset), &
2889 lc_min(kset), lc_max(kset), &
2890 npgfa(iset), npgfb(jset), npgfc(kset), &
2891 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2894 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2895 offset_a_start, offset_b_start, offset_c_start, &
2896 0, 0, first_set - 1, &
2897 sphi_a, sphi_b, sphi_c, &
2899 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2902force_a=force_a(ikind)%forces(:, atom_a), &
2903force_b=force_b(jkind)%forces(:, atom_b), &
2904force_c=force_c(kkind)%forces(:, atom_c), &
2905 do_symmetric=do_symmetric, &
2906 on_diagonal=iatom == jatom, &
2910 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2912 IF (
PRESENT(force_a) .AND. &
2913 PRESENT(force_b) .AND. &
2914 PRESENT(force_c) .AND. &
2915 .NOT.
PRESENT(pabc) .AND. &
2916 .NOT.
PRESENT(mat_dabc) .AND. &
2917 PRESENT(mat_adbc) .AND. &
2918 .NOT.
PRESENT(mat_abdc))
THEN
2919 CALL integrate_set_3c( &
2920 param%par, potential_parameter, &
2921 la_min(iset), la_max(iset), &
2922 lb_min(jset), lb_max(jset), &
2923 lc_min(kset), lc_max(kset), &
2924 npgfa(iset), npgfb(jset), npgfc(kset), &
2925 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2928 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2929 offset_a_start, offset_b_start, offset_c_start, &
2930 0, 0, first_set - 1, &
2931 sphi_a, sphi_b, sphi_c, &
2933 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2936force_a=force_a(ikind)%forces(:, atom_a), &
2937force_b=force_b(jkind)%forces(:, atom_b), &
2938force_c=force_c(kkind)%forces(:, atom_c), &
2939 do_symmetric=do_symmetric, &
2940 on_diagonal=iatom == jatom, &
2944 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2946 IF (
PRESENT(force_a) .AND. &
2947 PRESENT(force_b) .AND. &
2948 PRESENT(force_c) .AND. &
2949 .NOT.
PRESENT(pabc) .AND. &
2950 .NOT.
PRESENT(mat_dabc) .AND. &
2951 PRESENT(mat_adbc) .AND. &
2952 PRESENT(mat_abdc))
THEN
2953 CALL integrate_set_3c( &
2954 param%par, potential_parameter, &
2955 la_min(iset), la_max(iset), &
2956 lb_min(jset), lb_max(jset), &
2957 lc_min(kset), lc_max(kset), &
2958 npgfa(iset), npgfb(jset), npgfc(kset), &
2959 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2962 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2963 offset_a_start, offset_b_start, offset_c_start, &
2964 0, 0, first_set - 1, &
2965 sphi_a, sphi_b, sphi_c, &
2967 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2970force_a=force_a(ikind)%forces(:, atom_a), &
2971force_b=force_b(jkind)%forces(:, atom_b), &
2972force_c=force_c(kkind)%forces(:, atom_c), &
2973 do_symmetric=do_symmetric, &
2974 on_diagonal=iatom == jatom, &
2978 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2980 IF (
PRESENT(force_a) .AND. &
2981 PRESENT(force_b) .AND. &
2982 PRESENT(force_c) .AND. &
2983 .NOT.
PRESENT(pabc) .AND. &
2984 PRESENT(mat_dabc) .AND. &
2985 .NOT.
PRESENT(mat_adbc) .AND. &
2986 .NOT.
PRESENT(mat_abdc))
THEN
2987 CALL integrate_set_3c( &
2988 param%par, potential_parameter, &
2989 la_min(iset), la_max(iset), &
2990 lb_min(jset), lb_max(jset), &
2991 lc_min(kset), lc_max(kset), &
2992 npgfa(iset), npgfb(jset), npgfc(kset), &
2993 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2996 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2997 offset_a_start, offset_b_start, offset_c_start, &
2998 0, 0, first_set - 1, &
2999 sphi_a, sphi_b, sphi_c, &
3001 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3004force_a=force_a(ikind)%forces(:, atom_a), &
3005force_b=force_b(jkind)%forces(:, atom_b), &
3006force_c=force_c(kkind)%forces(:, atom_c), &
3007 do_symmetric=do_symmetric, &
3008 on_diagonal=iatom == jatom, &
3012 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3014 IF (
PRESENT(force_a) .AND. &
3015 PRESENT(force_b) .AND. &
3016 PRESENT(force_c) .AND. &
3017 .NOT.
PRESENT(pabc) .AND. &
3018 PRESENT(mat_dabc) .AND. &
3019 .NOT.
PRESENT(mat_adbc) .AND. &
3020 PRESENT(mat_abdc))
THEN
3021 CALL integrate_set_3c( &
3022 param%par, potential_parameter, &
3023 la_min(iset), la_max(iset), &
3024 lb_min(jset), lb_max(jset), &
3025 lc_min(kset), lc_max(kset), &
3026 npgfa(iset), npgfb(jset), npgfc(kset), &
3027 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3030 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3031 offset_a_start, offset_b_start, offset_c_start, &
3032 0, 0, first_set - 1, &
3033 sphi_a, sphi_b, sphi_c, &
3035 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3038force_a=force_a(ikind)%forces(:, atom_a), &
3039force_b=force_b(jkind)%forces(:, atom_b), &
3040force_c=force_c(kkind)%forces(:, atom_c), &
3041 do_symmetric=do_symmetric, &
3042 on_diagonal=iatom == jatom, &
3046 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3048 IF (
PRESENT(force_a) .AND. &
3049 PRESENT(force_b) .AND. &
3050 PRESENT(force_c) .AND. &
3051 .NOT.
PRESENT(pabc) .AND. &
3052 PRESENT(mat_dabc) .AND. &
3053 PRESENT(mat_adbc) .AND. &
3054 .NOT.
PRESENT(mat_abdc))
THEN
3055 CALL integrate_set_3c( &
3056 param%par, potential_parameter, &
3057 la_min(iset), la_max(iset), &
3058 lb_min(jset), lb_max(jset), &
3059 lc_min(kset), lc_max(kset), &
3060 npgfa(iset), npgfb(jset), npgfc(kset), &
3061 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3064 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3065 offset_a_start, offset_b_start, offset_c_start, &
3066 0, 0, first_set - 1, &
3067 sphi_a, sphi_b, sphi_c, &
3069 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3072force_a=force_a(ikind)%forces(:, atom_a), &
3073force_b=force_b(jkind)%forces(:, atom_b), &
3074force_c=force_c(kkind)%forces(:, atom_c), &
3075 do_symmetric=do_symmetric, &
3076 on_diagonal=iatom == jatom, &
3080 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3082 IF (
PRESENT(force_a) .AND. &
3083 PRESENT(force_b) .AND. &
3084 PRESENT(force_c) .AND. &
3085 .NOT.
PRESENT(pabc) .AND. &
3086 PRESENT(mat_dabc) .AND. &
3087 PRESENT(mat_adbc) .AND. &
3088 PRESENT(mat_abdc))
THEN
3089 CALL integrate_set_3c( &
3090 param%par, potential_parameter, &
3091 la_min(iset), la_max(iset), &
3092 lb_min(jset), lb_max(jset), &
3093 lc_min(kset), lc_max(kset), &
3094 npgfa(iset), npgfb(jset), npgfc(kset), &
3095 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3098 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3099 offset_a_start, offset_b_start, offset_c_start, &
3100 0, 0, first_set - 1, &
3101 sphi_a, sphi_b, sphi_c, &
3103 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3106force_a=force_a(ikind)%forces(:, atom_a), &
3107force_b=force_b(jkind)%forces(:, atom_b), &
3108force_c=force_c(kkind)%forces(:, atom_c), &
3109 do_symmetric=do_symmetric, &
3110 on_diagonal=iatom == jatom, &
3114 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3116 IF (.NOT.
PRESENT(force_a) .AND. &
3117 .NOT.
PRESENT(force_b) .AND. &
3118 .NOT.
PRESENT(force_c) .AND. &
3119 PRESENT(pabc) .AND. &
3120 .NOT.
PRESENT(mat_dabc) .AND. &
3121 .NOT.
PRESENT(mat_adbc) .AND. &
3122 .NOT.
PRESENT(mat_abdc))
THEN
3123 CALL integrate_set_3c( &
3124 param%par, potential_parameter, &
3125 la_min(iset), la_max(iset), &
3126 lb_min(jset), lb_max(jset), &
3127 lc_min(kset), lc_max(kset), &
3128 npgfa(iset), npgfb(jset), npgfc(kset), &
3129 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3132 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3133 offset_a_start, offset_b_start, offset_c_start, &
3134 0, 0, first_set - 1, &
3135 sphi_a, sphi_b, sphi_c, &
3137 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3143 do_symmetric=do_symmetric, &
3144 on_diagonal=iatom == jatom, &
3148 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3150 IF (.NOT.
PRESENT(force_a) .AND. &
3151 .NOT.
PRESENT(force_b) .AND. &
3152 .NOT.
PRESENT(force_c) .AND. &
3153 PRESENT(pabc) .AND. &
3154 .NOT.
PRESENT(mat_dabc) .AND. &
3155 .NOT.
PRESENT(mat_adbc) .AND. &
3156 PRESENT(mat_abdc))
THEN
3157 CALL integrate_set_3c( &
3158 param%par, potential_parameter, &
3159 la_min(iset), la_max(iset), &
3160 lb_min(jset), lb_max(jset), &
3161 lc_min(kset), lc_max(kset), &
3162 npgfa(iset), npgfb(jset), npgfc(kset), &
3163 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3166 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3167 offset_a_start, offset_b_start, offset_c_start, &
3168 0, 0, first_set - 1, &
3169 sphi_a, sphi_b, sphi_c, &
3171 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3177 do_symmetric=do_symmetric, &
3178 on_diagonal=iatom == jatom, &
3182 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3184 IF (.NOT.
PRESENT(force_a) .AND. &
3185 .NOT.
PRESENT(force_b) .AND. &
3186 .NOT.
PRESENT(force_c) .AND. &
3187 PRESENT(pabc) .AND. &
3188 .NOT.
PRESENT(mat_dabc) .AND. &
3189 PRESENT(mat_adbc) .AND. &
3190 .NOT.
PRESENT(mat_abdc))
THEN
3191 CALL integrate_set_3c( &
3192 param%par, potential_parameter, &
3193 la_min(iset), la_max(iset), &
3194 lb_min(jset), lb_max(jset), &
3195 lc_min(kset), lc_max(kset), &
3196 npgfa(iset), npgfb(jset), npgfc(kset), &
3197 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3200 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3201 offset_a_start, offset_b_start, offset_c_start, &
3202 0, 0, first_set - 1, &
3203 sphi_a, sphi_b, sphi_c, &
3205 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3211 do_symmetric=do_symmetric, &
3212 on_diagonal=iatom == jatom, &
3216 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3218 IF (.NOT.
PRESENT(force_a) .AND. &
3219 .NOT.
PRESENT(force_b) .AND. &
3220 .NOT.
PRESENT(force_c) .AND. &
3221 PRESENT(pabc) .AND. &
3222 .NOT.
PRESENT(mat_dabc) .AND. &
3223 PRESENT(mat_adbc) .AND. &
3224 PRESENT(mat_abdc))
THEN
3225 CALL integrate_set_3c( &
3226 param%par, potential_parameter, &
3227 la_min(iset), la_max(iset), &
3228 lb_min(jset), lb_max(jset), &
3229 lc_min(kset), lc_max(kset), &
3230 npgfa(iset), npgfb(jset), npgfc(kset), &
3231 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3234 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3235 offset_a_start, offset_b_start, offset_c_start, &
3236 0, 0, first_set - 1, &
3237 sphi_a, sphi_b, sphi_c, &
3239 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3245 do_symmetric=do_symmetric, &
3246 on_diagonal=iatom == jatom, &
3250 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3252 IF (.NOT.
PRESENT(force_a) .AND. &
3253 .NOT.
PRESENT(force_b) .AND. &
3254 .NOT.
PRESENT(force_c) .AND. &
3255 PRESENT(pabc) .AND. &
3256 PRESENT(mat_dabc) .AND. &
3257 .NOT.
PRESENT(mat_adbc) .AND. &
3258 .NOT.
PRESENT(mat_abdc))
THEN
3259 CALL integrate_set_3c( &
3260 param%par, potential_parameter, &
3261 la_min(iset), la_max(iset), &
3262 lb_min(jset), lb_max(jset), &
3263 lc_min(kset), lc_max(kset), &
3264 npgfa(iset), npgfb(jset), npgfc(kset), &
3265 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3268 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3269 offset_a_start, offset_b_start, offset_c_start, &
3270 0, 0, first_set - 1, &
3271 sphi_a, sphi_b, sphi_c, &
3273 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3279 do_symmetric=do_symmetric, &
3280 on_diagonal=iatom == jatom, &
3284 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3286 IF (.NOT.
PRESENT(force_a) .AND. &
3287 .NOT.
PRESENT(force_b) .AND. &
3288 .NOT.
PRESENT(force_c) .AND. &
3289 PRESENT(pabc) .AND. &
3290 PRESENT(mat_dabc) .AND. &
3291 .NOT.
PRESENT(mat_adbc) .AND. &
3292 PRESENT(mat_abdc))
THEN
3293 CALL integrate_set_3c( &
3294 param%par, potential_parameter, &
3295 la_min(iset), la_max(iset), &
3296 lb_min(jset), lb_max(jset), &
3297 lc_min(kset), lc_max(kset), &
3298 npgfa(iset), npgfb(jset), npgfc(kset), &
3299 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3302 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3303 offset_a_start, offset_b_start, offset_c_start, &
3304 0, 0, first_set - 1, &
3305 sphi_a, sphi_b, sphi_c, &
3307 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3313 do_symmetric=do_symmetric, &
3314 on_diagonal=iatom == jatom, &
3318 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3320 IF (.NOT.
PRESENT(force_a) .AND. &
3321 .NOT.
PRESENT(force_b) .AND. &
3322 .NOT.
PRESENT(force_c) .AND. &
3323 PRESENT(pabc) .AND. &
3324 PRESENT(mat_dabc) .AND. &
3325 PRESENT(mat_adbc) .AND. &
3326 .NOT.
PRESENT(mat_abdc))
THEN
3327 CALL integrate_set_3c( &
3328 param%par, potential_parameter, &
3329 la_min(iset), la_max(iset), &
3330 lb_min(jset), lb_max(jset), &
3331 lc_min(kset), lc_max(kset), &
3332 npgfa(iset), npgfb(jset), npgfc(kset), &
3333 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3336 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3337 offset_a_start, offset_b_start, offset_c_start, &
3338 0, 0, first_set - 1, &
3339 sphi_a, sphi_b, sphi_c, &
3341 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3347 do_symmetric=do_symmetric, &
3348 on_diagonal=iatom == jatom, &
3352 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3354 IF (.NOT.
PRESENT(force_a) .AND. &
3355 .NOT.
PRESENT(force_b) .AND. &
3356 .NOT.
PRESENT(force_c) .AND. &
3357 PRESENT(pabc) .AND. &
3358 PRESENT(mat_dabc) .AND. &
3359 PRESENT(mat_adbc) .AND. &
3360 PRESENT(mat_abdc))
THEN
3361 CALL integrate_set_3c( &
3362 param%par, potential_parameter, &
3363 la_min(iset), la_max(iset), &
3364 lb_min(jset), lb_max(jset), &
3365 lc_min(kset), lc_max(kset), &
3366 npgfa(iset), npgfb(jset), npgfc(kset), &
3367 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3370 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3371 offset_a_start, offset_b_start, offset_c_start, &
3372 0, 0, first_set - 1, &
3373 sphi_a, sphi_b, sphi_c, &
3375 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3381 do_symmetric=do_symmetric, &
3382 on_diagonal=iatom == jatom, &
3386 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3388 IF (.NOT.
PRESENT(force_a) .AND. &
3389 .NOT.
PRESENT(force_b) .AND. &
3390 PRESENT(force_c) .AND. &
3391 PRESENT(pabc) .AND. &
3392 .NOT.
PRESENT(mat_dabc) .AND. &
3393 .NOT.
PRESENT(mat_adbc) .AND. &
3394 .NOT.
PRESENT(mat_abdc))
THEN
3395 CALL integrate_set_3c( &
3396 param%par, potential_parameter, &
3397 la_min(iset), la_max(iset), &
3398 lb_min(jset), lb_max(jset), &
3399 lc_min(kset), lc_max(kset), &
3400 npgfa(iset), npgfb(jset), npgfc(kset), &
3401 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3404 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3405 offset_a_start, offset_b_start, offset_c_start, &
3406 0, 0, first_set - 1, &
3407 sphi_a, sphi_b, sphi_c, &
3409 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3414force_c=force_c(kkind)%forces(:, atom_c), &
3415 do_symmetric=do_symmetric, &
3416 on_diagonal=iatom == jatom, &
3420 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3422 IF (.NOT.
PRESENT(force_a) .AND. &
3423 .NOT.
PRESENT(force_b) .AND. &
3424 PRESENT(force_c) .AND. &
3425 PRESENT(pabc) .AND. &
3426 .NOT.
PRESENT(mat_dabc) .AND. &
3427 .NOT.
PRESENT(mat_adbc) .AND. &
3428 PRESENT(mat_abdc))
THEN
3429 CALL integrate_set_3c( &
3430 param%par, potential_parameter, &
3431 la_min(iset), la_max(iset), &
3432 lb_min(jset), lb_max(jset), &
3433 lc_min(kset), lc_max(kset), &
3434 npgfa(iset), npgfb(jset), npgfc(kset), &
3435 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3438 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3439 offset_a_start, offset_b_start, offset_c_start, &
3440 0, 0, first_set - 1, &
3441 sphi_a, sphi_b, sphi_c, &
3443 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3448force_c=force_c(kkind)%forces(:, atom_c), &
3449 do_symmetric=do_symmetric, &
3450 on_diagonal=iatom == jatom, &
3454 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3456 IF (.NOT.
PRESENT(force_a) .AND. &
3457 .NOT.
PRESENT(force_b) .AND. &
3458 PRESENT(force_c) .AND. &
3459 PRESENT(pabc) .AND. &
3460 .NOT.
PRESENT(mat_dabc) .AND. &
3461 PRESENT(mat_adbc) .AND. &
3462 .NOT.
PRESENT(mat_abdc))
THEN
3463 CALL integrate_set_3c( &
3464 param%par, potential_parameter, &
3465 la_min(iset), la_max(iset), &
3466 lb_min(jset), lb_max(jset), &
3467 lc_min(kset), lc_max(kset), &
3468 npgfa(iset), npgfb(jset), npgfc(kset), &
3469 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3472 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3473 offset_a_start, offset_b_start, offset_c_start, &
3474 0, 0, first_set - 1, &
3475 sphi_a, sphi_b, sphi_c, &
3477 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3482force_c=force_c(kkind)%forces(:, atom_c), &
3483 do_symmetric=do_symmetric, &
3484 on_diagonal=iatom == jatom, &
3488 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3490 IF (.NOT.
PRESENT(force_a) .AND. &
3491 .NOT.
PRESENT(force_b) .AND. &
3492 PRESENT(force_c) .AND. &
3493 PRESENT(pabc) .AND. &
3494 .NOT.
PRESENT(mat_dabc) .AND. &
3495 PRESENT(mat_adbc) .AND. &
3496 PRESENT(mat_abdc))
THEN
3497 CALL integrate_set_3c( &
3498 param%par, potential_parameter, &
3499 la_min(iset), la_max(iset), &
3500 lb_min(jset), lb_max(jset), &
3501 lc_min(kset), lc_max(kset), &
3502 npgfa(iset), npgfb(jset), npgfc(kset), &
3503 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3506 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3507 offset_a_start, offset_b_start, offset_c_start, &
3508 0, 0, first_set - 1, &
3509 sphi_a, sphi_b, sphi_c, &
3511 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3516force_c=force_c(kkind)%forces(:, atom_c), &
3517 do_symmetric=do_symmetric, &
3518 on_diagonal=iatom == jatom, &
3522 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3524 IF (.NOT.
PRESENT(force_a) .AND. &
3525 .NOT.
PRESENT(force_b) .AND. &
3526 PRESENT(force_c) .AND. &
3527 PRESENT(pabc) .AND. &
3528 PRESENT(mat_dabc) .AND. &
3529 .NOT.
PRESENT(mat_adbc) .AND. &
3530 .NOT.
PRESENT(mat_abdc))
THEN
3531 CALL integrate_set_3c( &
3532 param%par, potential_parameter, &
3533 la_min(iset), la_max(iset), &
3534 lb_min(jset), lb_max(jset), &
3535 lc_min(kset), lc_max(kset), &
3536 npgfa(iset), npgfb(jset), npgfc(kset), &
3537 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3540 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3541 offset_a_start, offset_b_start, offset_c_start, &
3542 0, 0, first_set - 1, &
3543 sphi_a, sphi_b, sphi_c, &
3545 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3550force_c=force_c(kkind)%forces(:, atom_c), &
3551 do_symmetric=do_symmetric, &
3552 on_diagonal=iatom == jatom, &
3556 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3558 IF (.NOT.
PRESENT(force_a) .AND. &
3559 .NOT.
PRESENT(force_b) .AND. &
3560 PRESENT(force_c) .AND. &
3561 PRESENT(pabc) .AND. &
3562 PRESENT(mat_dabc) .AND. &
3563 .NOT.
PRESENT(mat_adbc) .AND. &
3564 PRESENT(mat_abdc))
THEN
3565 CALL integrate_set_3c( &
3566 param%par, potential_parameter, &
3567 la_min(iset), la_max(iset), &
3568 lb_min(jset), lb_max(jset), &
3569 lc_min(kset), lc_max(kset), &
3570 npgfa(iset), npgfb(jset), npgfc(kset), &
3571 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3574 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3575 offset_a_start, offset_b_start, offset_c_start, &
3576 0, 0, first_set - 1, &
3577 sphi_a, sphi_b, sphi_c, &
3579 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3584force_c=force_c(kkind)%forces(:, atom_c), &
3585 do_symmetric=do_symmetric, &
3586 on_diagonal=iatom == jatom, &
3590 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3592 IF (.NOT.
PRESENT(force_a) .AND. &
3593 .NOT.
PRESENT(force_b) .AND. &
3594 PRESENT(force_c) .AND. &
3595 PRESENT(pabc) .AND. &
3596 PRESENT(mat_dabc) .AND. &
3597 PRESENT(mat_adbc) .AND. &
3598 .NOT.
PRESENT(mat_abdc))
THEN
3599 CALL integrate_set_3c( &
3600 param%par, potential_parameter, &
3601 la_min(iset), la_max(iset), &
3602 lb_min(jset), lb_max(jset), &
3603 lc_min(kset), lc_max(kset), &
3604 npgfa(iset), npgfb(jset), npgfc(kset), &
3605 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3608 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3609 offset_a_start, offset_b_start, offset_c_start, &
3610 0, 0, first_set - 1, &
3611 sphi_a, sphi_b, sphi_c, &
3613 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3618force_c=force_c(kkind)%forces(:, atom_c), &
3619 do_symmetric=do_symmetric, &
3620 on_diagonal=iatom == jatom, &
3624 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3626 IF (.NOT.
PRESENT(force_a) .AND. &
3627 .NOT.
PRESENT(force_b) .AND. &
3628 PRESENT(force_c) .AND. &
3629 PRESENT(pabc) .AND. &
3630 PRESENT(mat_dabc) .AND. &
3631 PRESENT(mat_adbc) .AND. &
3632 PRESENT(mat_abdc))
THEN
3633 CALL integrate_set_3c( &
3634 param%par, potential_parameter, &
3635 la_min(iset), la_max(iset), &
3636 lb_min(jset), lb_max(jset), &
3637 lc_min(kset), lc_max(kset), &
3638 npgfa(iset), npgfb(jset), npgfc(kset), &
3639 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3642 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3643 offset_a_start, offset_b_start, offset_c_start, &
3644 0, 0, first_set - 1, &
3645 sphi_a, sphi_b, sphi_c, &
3647 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3652force_c=force_c(kkind)%forces(:, atom_c), &
3653 do_symmetric=do_symmetric, &
3654 on_diagonal=iatom == jatom, &
3658 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3660 IF (.NOT.
PRESENT(force_a) .AND. &
3661 PRESENT(force_b) .AND. &
3662 .NOT.
PRESENT(force_c) .AND. &
3663 PRESENT(pabc) .AND. &
3664 .NOT.
PRESENT(mat_dabc) .AND. &
3665 .NOT.
PRESENT(mat_adbc) .AND. &
3666 .NOT.
PRESENT(mat_abdc))
THEN
3667 CALL integrate_set_3c( &
3668 param%par, potential_parameter, &
3669 la_min(iset), la_max(iset), &
3670 lb_min(jset), lb_max(jset), &
3671 lc_min(kset), lc_max(kset), &
3672 npgfa(iset), npgfb(jset), npgfc(kset), &
3673 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3676 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3677 offset_a_start, offset_b_start, offset_c_start, &
3678 0, 0, first_set - 1, &
3679 sphi_a, sphi_b, sphi_c, &
3681 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3685force_b=force_b(jkind)%forces(:, atom_b), &
3687 do_symmetric=do_symmetric, &
3688 on_diagonal=iatom == jatom, &
3692 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3694 IF (.NOT.
PRESENT(force_a) .AND. &
3695 PRESENT(force_b) .AND. &
3696 .NOT.
PRESENT(force_c) .AND. &
3697 PRESENT(pabc) .AND. &
3698 .NOT.
PRESENT(mat_dabc) .AND. &
3699 .NOT.
PRESENT(mat_adbc) .AND. &
3700 PRESENT(mat_abdc))
THEN
3701 CALL integrate_set_3c( &
3702 param%par, potential_parameter, &
3703 la_min(iset), la_max(iset), &
3704 lb_min(jset), lb_max(jset), &
3705 lc_min(kset), lc_max(kset), &
3706 npgfa(iset), npgfb(jset), npgfc(kset), &
3707 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3710 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3711 offset_a_start, offset_b_start, offset_c_start, &
3712 0, 0, first_set - 1, &
3713 sphi_a, sphi_b, sphi_c, &
3715 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3719force_b=force_b(jkind)%forces(:, atom_b), &
3721 do_symmetric=do_symmetric, &
3722 on_diagonal=iatom == jatom, &
3726 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3728 IF (.NOT.
PRESENT(force_a) .AND. &
3729 PRESENT(force_b) .AND. &
3730 .NOT.
PRESENT(force_c) .AND. &
3731 PRESENT(pabc) .AND. &
3732 .NOT.
PRESENT(mat_dabc) .AND. &
3733 PRESENT(mat_adbc) .AND. &
3734 .NOT.
PRESENT(mat_abdc))
THEN
3735 CALL integrate_set_3c( &
3736 param%par, potential_parameter, &
3737 la_min(iset), la_max(iset), &
3738 lb_min(jset), lb_max(jset), &
3739 lc_min(kset), lc_max(kset), &
3740 npgfa(iset), npgfb(jset), npgfc(kset), &
3741 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3744 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3745 offset_a_start, offset_b_start, offset_c_start, &
3746 0, 0, first_set - 1, &
3747 sphi_a, sphi_b, sphi_c, &
3749 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3753force_b=force_b(jkind)%forces(:, atom_b), &
3755 do_symmetric=do_symmetric, &
3756 on_diagonal=iatom == jatom, &
3760 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3762 IF (.NOT.
PRESENT(force_a) .AND. &
3763 PRESENT(force_b) .AND. &
3764 .NOT.
PRESENT(force_c) .AND. &
3765 PRESENT(pabc) .AND. &
3766 .NOT.
PRESENT(mat_dabc) .AND. &
3767 PRESENT(mat_adbc) .AND. &
3768 PRESENT(mat_abdc))
THEN
3769 CALL integrate_set_3c( &
3770 param%par, potential_parameter, &
3771 la_min(iset), la_max(iset), &
3772 lb_min(jset), lb_max(jset), &
3773 lc_min(kset), lc_max(kset), &
3774 npgfa(iset), npgfb(jset), npgfc(kset), &
3775 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3778 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3779 offset_a_start, offset_b_start, offset_c_start, &
3780 0, 0, first_set - 1, &
3781 sphi_a, sphi_b, sphi_c, &
3783 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3787force_b=force_b(jkind)%forces(:, atom_b), &
3789 do_symmetric=do_symmetric, &
3790 on_diagonal=iatom == jatom, &
3794 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3796 IF (.NOT.
PRESENT(force_a) .AND. &
3797 PRESENT(force_b) .AND. &
3798 .NOT.
PRESENT(force_c) .AND. &
3799 PRESENT(pabc) .AND. &
3800 PRESENT(mat_dabc) .AND. &
3801 .NOT.
PRESENT(mat_adbc) .AND. &
3802 .NOT.
PRESENT(mat_abdc))
THEN
3803 CALL integrate_set_3c( &
3804 param%par, potential_parameter, &
3805 la_min(iset), la_max(iset), &
3806 lb_min(jset), lb_max(jset), &
3807 lc_min(kset), lc_max(kset), &
3808 npgfa(iset), npgfb(jset), npgfc(kset), &
3809 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3812 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3813 offset_a_start, offset_b_start, offset_c_start, &
3814 0, 0, first_set - 1, &
3815 sphi_a, sphi_b, sphi_c, &
3817 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3821force_b=force_b(jkind)%forces(:, atom_b), &
3823 do_symmetric=do_symmetric, &
3824 on_diagonal=iatom == jatom, &
3828 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3830 IF (.NOT.
PRESENT(force_a) .AND. &
3831 PRESENT(force_b) .AND. &
3832 .NOT.
PRESENT(force_c) .AND. &
3833 PRESENT(pabc) .AND. &
3834 PRESENT(mat_dabc) .AND. &
3835 .NOT.
PRESENT(mat_adbc) .AND. &
3836 PRESENT(mat_abdc))
THEN
3837 CALL integrate_set_3c( &
3838 param%par, potential_parameter, &
3839 la_min(iset), la_max(iset), &
3840 lb_min(jset), lb_max(jset), &
3841 lc_min(kset), lc_max(kset), &
3842 npgfa(iset), npgfb(jset), npgfc(kset), &
3843 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3846 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3847 offset_a_start, offset_b_start, offset_c_start, &
3848 0, 0, first_set - 1, &
3849 sphi_a, sphi_b, sphi_c, &
3851 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3855force_b=force_b(jkind)%forces(:, atom_b), &
3857 do_symmetric=do_symmetric, &
3858 on_diagonal=iatom == jatom, &
3862 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3864 IF (.NOT.
PRESENT(force_a) .AND. &
3865 PRESENT(force_b) .AND. &
3866 .NOT.
PRESENT(force_c) .AND. &
3867 PRESENT(pabc) .AND. &
3868 PRESENT(mat_dabc) .AND. &
3869 PRESENT(mat_adbc) .AND. &
3870 .NOT.
PRESENT(mat_abdc))
THEN
3871 CALL integrate_set_3c( &
3872 param%par, potential_parameter, &
3873 la_min(iset), la_max(iset), &
3874 lb_min(jset), lb_max(jset), &
3875 lc_min(kset), lc_max(kset), &
3876 npgfa(iset), npgfb(jset), npgfc(kset), &
3877 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3880 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3881 offset_a_start, offset_b_start, offset_c_start, &
3882 0, 0, first_set - 1, &
3883 sphi_a, sphi_b, sphi_c, &
3885 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3889force_b=force_b(jkind)%forces(:, atom_b), &
3891 do_symmetric=do_symmetric, &
3892 on_diagonal=iatom == jatom, &
3896 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3898 IF (.NOT.
PRESENT(force_a) .AND. &
3899 PRESENT(force_b) .AND. &
3900 .NOT.
PRESENT(force_c) .AND. &
3901 PRESENT(pabc) .AND. &
3902 PRESENT(mat_dabc) .AND. &
3903 PRESENT(mat_adbc) .AND. &
3904 PRESENT(mat_abdc))
THEN
3905 CALL integrate_set_3c( &
3906 param%par, potential_parameter, &
3907 la_min(iset), la_max(iset), &
3908 lb_min(jset), lb_max(jset), &
3909 lc_min(kset), lc_max(kset), &
3910 npgfa(iset), npgfb(jset), npgfc(kset), &
3911 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3914 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3915 offset_a_start, offset_b_start, offset_c_start, &
3916 0, 0, first_set - 1, &
3917 sphi_a, sphi_b, sphi_c, &
3919 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3923force_b=force_b(jkind)%forces(:, atom_b), &
3925 do_symmetric=do_symmetric, &
3926 on_diagonal=iatom == jatom, &
3930 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3932 IF (.NOT.
PRESENT(force_a) .AND. &
3933 PRESENT(force_b) .AND. &
3934 PRESENT(force_c) .AND. &
3935 PRESENT(pabc) .AND. &
3936 .NOT.
PRESENT(mat_dabc) .AND. &
3937 .NOT.
PRESENT(mat_adbc) .AND. &
3938 .NOT.
PRESENT(mat_abdc))
THEN
3939 CALL integrate_set_3c( &
3940 param%par, potential_parameter, &
3941 la_min(iset), la_max(iset), &
3942 lb_min(jset), lb_max(jset), &
3943 lc_min(kset), lc_max(kset), &
3944 npgfa(iset), npgfb(jset), npgfc(kset), &
3945 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3948 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3949 offset_a_start, offset_b_start, offset_c_start, &
3950 0, 0, first_set - 1, &
3951 sphi_a, sphi_b, sphi_c, &
3953 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3957force_b=force_b(jkind)%forces(:, atom_b), &
3958force_c=force_c(kkind)%forces(:, atom_c), &
3959 do_symmetric=do_symmetric, &
3960 on_diagonal=iatom == jatom, &
3964 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3966 IF (.NOT.
PRESENT(force_a) .AND. &
3967 PRESENT(force_b) .AND. &
3968 PRESENT(force_c) .AND. &
3969 PRESENT(pabc) .AND. &
3970 .NOT.
PRESENT(mat_dabc) .AND. &
3971 .NOT.
PRESENT(mat_adbc) .AND. &
3972 PRESENT(mat_abdc))
THEN
3973 CALL integrate_set_3c( &
3974 param%par, potential_parameter, &
3975 la_min(iset), la_max(iset), &
3976 lb_min(jset), lb_max(jset), &
3977 lc_min(kset), lc_max(kset), &
3978 npgfa(iset), npgfb(jset), npgfc(kset), &
3979 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3982 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3983 offset_a_start, offset_b_start, offset_c_start, &
3984 0, 0, first_set - 1, &
3985 sphi_a, sphi_b, sphi_c, &
3987 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3991force_b=force_b(jkind)%forces(:, atom_b), &
3992force_c=force_c(kkind)%forces(:, atom_c), &
3993 do_symmetric=do_symmetric, &
3994 on_diagonal=iatom == jatom, &
3998 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4000 IF (.NOT.
PRESENT(force_a) .AND. &
4001 PRESENT(force_b) .AND. &
4002 PRESENT(force_c) .AND. &
4003 PRESENT(pabc) .AND. &
4004 .NOT.
PRESENT(mat_dabc) .AND. &
4005 PRESENT(mat_adbc) .AND. &
4006 .NOT.
PRESENT(mat_abdc))
THEN
4007 CALL integrate_set_3c( &
4008 param%par, potential_parameter, &
4009 la_min(iset), la_max(iset), &
4010 lb_min(jset), lb_max(jset), &
4011 lc_min(kset), lc_max(kset), &
4012 npgfa(iset), npgfb(jset), npgfc(kset), &
4013 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4016 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4017 offset_a_start, offset_b_start, offset_c_start, &
4018 0, 0, first_set - 1, &
4019 sphi_a, sphi_b, sphi_c, &
4021 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4025force_b=force_b(jkind)%forces(:, atom_b), &
4026force_c=force_c(kkind)%forces(:, atom_c), &
4027 do_symmetric=do_symmetric, &
4028 on_diagonal=iatom == jatom, &
4032 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4034 IF (.NOT.
PRESENT(force_a) .AND. &
4035 PRESENT(force_b) .AND. &
4036 PRESENT(force_c) .AND. &
4037 PRESENT(pabc) .AND. &
4038 .NOT.
PRESENT(mat_dabc) .AND. &
4039 PRESENT(mat_adbc) .AND. &
4040 PRESENT(mat_abdc))
THEN
4041 CALL integrate_set_3c( &
4042 param%par, potential_parameter, &
4043 la_min(iset), la_max(iset), &
4044 lb_min(jset), lb_max(jset), &
4045 lc_min(kset), lc_max(kset), &
4046 npgfa(iset), npgfb(jset), npgfc(kset), &
4047 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4050 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4051 offset_a_start, offset_b_start, offset_c_start, &
4052 0, 0, first_set - 1, &
4053 sphi_a, sphi_b, sphi_c, &
4055 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4059force_b=force_b(jkind)%forces(:, atom_b), &
4060force_c=force_c(kkind)%forces(:, atom_c), &
4061 do_symmetric=do_symmetric, &
4062 on_diagonal=iatom == jatom, &
4066 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4068 IF (.NOT.
PRESENT(force_a) .AND. &
4069 PRESENT(force_b) .AND. &
4070 PRESENT(force_c) .AND. &
4071 PRESENT(pabc) .AND. &
4072 PRESENT(mat_dabc) .AND. &
4073 .NOT.
PRESENT(mat_adbc) .AND. &
4074 .NOT.
PRESENT(mat_abdc))
THEN
4075 CALL integrate_set_3c( &
4076 param%par, potential_parameter, &
4077 la_min(iset), la_max(iset), &
4078 lb_min(jset), lb_max(jset), &
4079 lc_min(kset), lc_max(kset), &
4080 npgfa(iset), npgfb(jset), npgfc(kset), &
4081 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4084 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4085 offset_a_start, offset_b_start, offset_c_start, &
4086 0, 0, first_set - 1, &
4087 sphi_a, sphi_b, sphi_c, &
4089 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4093force_b=force_b(jkind)%forces(:, atom_b), &
4094force_c=force_c(kkind)%forces(:, atom_c), &
4095 do_symmetric=do_symmetric, &
4096 on_diagonal=iatom == jatom, &
4100 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4102 IF (.NOT.
PRESENT(force_a) .AND. &
4103 PRESENT(force_b) .AND. &
4104 PRESENT(force_c) .AND. &
4105 PRESENT(pabc) .AND. &
4106 PRESENT(mat_dabc) .AND. &
4107 .NOT.
PRESENT(mat_adbc) .AND. &
4108 PRESENT(mat_abdc))
THEN
4109 CALL integrate_set_3c( &
4110 param%par, potential_parameter, &
4111 la_min(iset), la_max(iset), &
4112 lb_min(jset), lb_max(jset), &
4113 lc_min(kset), lc_max(kset), &
4114 npgfa(iset), npgfb(jset), npgfc(kset), &
4115 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4118 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4119 offset_a_start, offset_b_start, offset_c_start, &
4120 0, 0, first_set - 1, &
4121 sphi_a, sphi_b, sphi_c, &
4123 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4127force_b=force_b(jkind)%forces(:, atom_b), &
4128force_c=force_c(kkind)%forces(:, atom_c), &
4129 do_symmetric=do_symmetric, &
4130 on_diagonal=iatom == jatom, &
4134 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4136 IF (.NOT.
PRESENT(force_a) .AND. &
4137 PRESENT(force_b) .AND. &
4138 PRESENT(force_c) .AND. &
4139 PRESENT(pabc) .AND. &
4140 PRESENT(mat_dabc) .AND. &
4141 PRESENT(mat_adbc) .AND. &
4142 .NOT.
PRESENT(mat_abdc))
THEN
4143 CALL integrate_set_3c( &
4144 param%par, potential_parameter, &
4145 la_min(iset), la_max(iset), &
4146 lb_min(jset), lb_max(jset), &
4147 lc_min(kset), lc_max(kset), &
4148 npgfa(iset), npgfb(jset), npgfc(kset), &
4149 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4152 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4153 offset_a_start, offset_b_start, offset_c_start, &
4154 0, 0, first_set - 1, &
4155 sphi_a, sphi_b, sphi_c, &
4157 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4161force_b=force_b(jkind)%forces(:, atom_b), &
4162force_c=force_c(kkind)%forces(:, atom_c), &
4163 do_symmetric=do_symmetric, &
4164 on_diagonal=iatom == jatom, &
4168 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4170 IF (.NOT.
PRESENT(force_a) .AND. &
4171 PRESENT(force_b) .AND. &
4172 PRESENT(force_c) .AND. &
4173 PRESENT(pabc) .AND. &
4174 PRESENT(mat_dabc) .AND. &
4175 PRESENT(mat_adbc) .AND. &
4176 PRESENT(mat_abdc))
THEN
4177 CALL integrate_set_3c( &
4178 param%par, potential_parameter, &
4179 la_min(iset), la_max(iset), &
4180 lb_min(jset), lb_max(jset), &
4181 lc_min(kset), lc_max(kset), &
4182 npgfa(iset), npgfb(jset), npgfc(kset), &
4183 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4186 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4187 offset_a_start, offset_b_start, offset_c_start, &
4188 0, 0, first_set - 1, &
4189 sphi_a, sphi_b, sphi_c, &
4191 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4195force_b=force_b(jkind)%forces(:, atom_b), &
4196force_c=force_c(kkind)%forces(:, atom_c), &
4197 do_symmetric=do_symmetric, &
4198 on_diagonal=iatom == jatom, &
4202 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4204 IF (
PRESENT(force_a) .AND. &
4205 .NOT.
PRESENT(force_b) .AND. &
4206 .NOT.
PRESENT(force_c) .AND. &
4207 PRESENT(pabc) .AND. &
4208 .NOT.
PRESENT(mat_dabc) .AND. &
4209 .NOT.
PRESENT(mat_adbc) .AND. &
4210 .NOT.
PRESENT(mat_abdc))
THEN
4211 CALL integrate_set_3c( &
4212 param%par, potential_parameter, &
4213 la_min(iset), la_max(iset), &
4214 lb_min(jset), lb_max(jset), &
4215 lc_min(kset), lc_max(kset), &
4216 npgfa(iset), npgfb(jset), npgfc(kset), &
4217 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4220 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4221 offset_a_start, offset_b_start, offset_c_start, &
4222 0, 0, first_set - 1, &
4223 sphi_a, sphi_b, sphi_c, &
4225 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4228force_a=force_a(ikind)%forces(:, atom_a), &
4231 do_symmetric=do_symmetric, &
4232 on_diagonal=iatom == jatom, &
4236 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4238 IF (
PRESENT(force_a) .AND. &
4239 .NOT.
PRESENT(force_b) .AND. &
4240 .NOT.
PRESENT(force_c) .AND. &
4241 PRESENT(pabc) .AND. &
4242 .NOT.
PRESENT(mat_dabc) .AND. &
4243 .NOT.
PRESENT(mat_adbc) .AND. &
4244 PRESENT(mat_abdc))
THEN
4245 CALL integrate_set_3c( &
4246 param%par, potential_parameter, &
4247 la_min(iset), la_max(iset), &
4248 lb_min(jset), lb_max(jset), &
4249 lc_min(kset), lc_max(kset), &
4250 npgfa(iset), npgfb(jset), npgfc(kset), &
4251 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4254 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4255 offset_a_start, offset_b_start, offset_c_start, &
4256 0, 0, first_set - 1, &
4257 sphi_a, sphi_b, sphi_c, &
4259 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4262force_a=force_a(ikind)%forces(:, atom_a), &
4265 do_symmetric=do_symmetric, &
4266 on_diagonal=iatom == jatom, &
4270 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4272 IF (
PRESENT(force_a) .AND. &
4273 .NOT.
PRESENT(force_b) .AND. &
4274 .NOT.
PRESENT(force_c) .AND. &
4275 PRESENT(pabc) .AND. &
4276 .NOT.
PRESENT(mat_dabc) .AND. &
4277 PRESENT(mat_adbc) .AND. &
4278 .NOT.
PRESENT(mat_abdc))
THEN
4279 CALL integrate_set_3c( &
4280 param%par, potential_parameter, &
4281 la_min(iset), la_max(iset), &
4282 lb_min(jset), lb_max(jset), &
4283 lc_min(kset), lc_max(kset), &
4284 npgfa(iset), npgfb(jset), npgfc(kset), &
4285 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4288 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4289 offset_a_start, offset_b_start, offset_c_start, &
4290 0, 0, first_set - 1, &
4291 sphi_a, sphi_b, sphi_c, &
4293 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4296force_a=force_a(ikind)%forces(:, atom_a), &
4299 do_symmetric=do_symmetric, &
4300 on_diagonal=iatom == jatom, &
4304 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4306 IF (
PRESENT(force_a) .AND. &
4307 .NOT.
PRESENT(force_b) .AND. &
4308 .NOT.
PRESENT(force_c) .AND. &
4309 PRESENT(pabc) .AND. &
4310 .NOT.
PRESENT(mat_dabc) .AND. &
4311 PRESENT(mat_adbc) .AND. &
4312 PRESENT(mat_abdc))
THEN
4313 CALL integrate_set_3c( &
4314 param%par, potential_parameter, &
4315 la_min(iset), la_max(iset), &
4316 lb_min(jset), lb_max(jset), &
4317 lc_min(kset), lc_max(kset), &
4318 npgfa(iset), npgfb(jset), npgfc(kset), &
4319 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4322 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4323 offset_a_start, offset_b_start, offset_c_start, &
4324 0, 0, first_set - 1, &
4325 sphi_a, sphi_b, sphi_c, &
4327 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4330force_a=force_a(ikind)%forces(:, atom_a), &
4333 do_symmetric=do_symmetric, &
4334 on_diagonal=iatom == jatom, &
4338 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4340 IF (
PRESENT(force_a) .AND. &
4341 .NOT.
PRESENT(force_b) .AND. &
4342 .NOT.
PRESENT(force_c) .AND. &
4343 PRESENT(pabc) .AND. &
4344 PRESENT(mat_dabc) .AND. &
4345 .NOT.
PRESENT(mat_adbc) .AND. &
4346 .NOT.
PRESENT(mat_abdc))
THEN
4347 CALL integrate_set_3c( &
4348 param%par, potential_parameter, &
4349 la_min(iset), la_max(iset), &
4350 lb_min(jset), lb_max(jset), &
4351 lc_min(kset), lc_max(kset), &
4352 npgfa(iset), npgfb(jset), npgfc(kset), &
4353 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4356 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4357 offset_a_start, offset_b_start, offset_c_start, &
4358 0, 0, first_set - 1, &
4359 sphi_a, sphi_b, sphi_c, &
4361 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4364force_a=force_a(ikind)%forces(:, atom_a), &
4367 do_symmetric=do_symmetric, &
4368 on_diagonal=iatom == jatom, &
4372 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4374 IF (
PRESENT(force_a) .AND. &
4375 .NOT.
PRESENT(force_b) .AND. &
4376 .NOT.
PRESENT(force_c) .AND. &
4377 PRESENT(pabc) .AND. &
4378 PRESENT(mat_dabc) .AND. &
4379 .NOT.
PRESENT(mat_adbc) .AND. &
4380 PRESENT(mat_abdc))
THEN
4381 CALL integrate_set_3c( &
4382 param%par, potential_parameter, &
4383 la_min(iset), la_max(iset), &
4384 lb_min(jset), lb_max(jset), &
4385 lc_min(kset), lc_max(kset), &
4386 npgfa(iset), npgfb(jset), npgfc(kset), &
4387 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4390 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4391 offset_a_start, offset_b_start, offset_c_start, &
4392 0, 0, first_set - 1, &
4393 sphi_a, sphi_b, sphi_c, &
4395 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4398force_a=force_a(ikind)%forces(:, atom_a), &
4401 do_symmetric=do_symmetric, &
4402 on_diagonal=iatom == jatom, &
4406 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4408 IF (
PRESENT(force_a) .AND. &
4409 .NOT.
PRESENT(force_b) .AND. &
4410 .NOT.
PRESENT(force_c) .AND. &
4411 PRESENT(pabc) .AND. &
4412 PRESENT(mat_dabc) .AND. &
4413 PRESENT(mat_adbc) .AND. &
4414 .NOT.
PRESENT(mat_abdc))
THEN
4415 CALL integrate_set_3c( &
4416 param%par, potential_parameter, &
4417 la_min(iset), la_max(iset), &
4418 lb_min(jset), lb_max(jset), &
4419 lc_min(kset), lc_max(kset), &
4420 npgfa(iset), npgfb(jset), npgfc(kset), &
4421 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4424 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4425 offset_a_start, offset_b_start, offset_c_start, &
4426 0, 0, first_set - 1, &
4427 sphi_a, sphi_b, sphi_c, &
4429 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4432force_a=force_a(ikind)%forces(:, atom_a), &
4435 do_symmetric=do_symmetric, &
4436 on_diagonal=iatom == jatom, &
4440 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4442 IF (
PRESENT(force_a) .AND. &
4443 .NOT.
PRESENT(force_b) .AND. &
4444 .NOT.
PRESENT(force_c) .AND. &
4445 PRESENT(pabc) .AND. &
4446 PRESENT(mat_dabc) .AND. &
4447 PRESENT(mat_adbc) .AND. &
4448 PRESENT(mat_abdc))
THEN
4449 CALL integrate_set_3c( &
4450 param%par, potential_parameter, &
4451 la_min(iset), la_max(iset), &
4452 lb_min(jset), lb_max(jset), &
4453 lc_min(kset), lc_max(kset), &
4454 npgfa(iset), npgfb(jset), npgfc(kset), &
4455 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4458 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4459 offset_a_start, offset_b_start, offset_c_start, &
4460 0, 0, first_set - 1, &
4461 sphi_a, sphi_b, sphi_c, &
4463 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4466force_a=force_a(ikind)%forces(:, atom_a), &
4469 do_symmetric=do_symmetric, &
4470 on_diagonal=iatom == jatom, &
4474 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4476 IF (
PRESENT(force_a) .AND. &
4477 .NOT.
PRESENT(force_b) .AND. &
4478 PRESENT(force_c) .AND. &
4479 PRESENT(pabc) .AND. &
4480 .NOT.
PRESENT(mat_dabc) .AND. &
4481 .NOT.
PRESENT(mat_adbc) .AND. &
4482 .NOT.
PRESENT(mat_abdc))
THEN
4483 CALL integrate_set_3c( &
4484 param%par, potential_parameter, &
4485 la_min(iset), la_max(iset), &
4486 lb_min(jset), lb_max(jset), &
4487 lc_min(kset), lc_max(kset), &
4488 npgfa(iset), npgfb(jset), npgfc(kset), &
4489 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4492 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4493 offset_a_start, offset_b_start, offset_c_start, &
4494 0, 0, first_set - 1, &
4495 sphi_a, sphi_b, sphi_c, &
4497 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4500force_a=force_a(ikind)%forces(:, atom_a), &
4502force_c=force_c(kkind)%forces(:, atom_c), &
4503 do_symmetric=do_symmetric, &
4504 on_diagonal=iatom == jatom, &
4508 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4510 IF (
PRESENT(force_a) .AND. &
4511 .NOT.
PRESENT(force_b) .AND. &
4512 PRESENT(force_c) .AND. &
4513 PRESENT(pabc) .AND. &
4514 .NOT.
PRESENT(mat_dabc) .AND. &
4515 .NOT.
PRESENT(mat_adbc) .AND. &
4516 PRESENT(mat_abdc))
THEN
4517 CALL integrate_set_3c( &
4518 param%par, potential_parameter, &
4519 la_min(iset), la_max(iset), &
4520 lb_min(jset), lb_max(jset), &
4521 lc_min(kset), lc_max(kset), &
4522 npgfa(iset), npgfb(jset), npgfc(kset), &
4523 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4526 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4527 offset_a_start, offset_b_start, offset_c_start, &
4528 0, 0, first_set - 1, &
4529 sphi_a, sphi_b, sphi_c, &
4531 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4534force_a=force_a(ikind)%forces(:, atom_a), &
4536force_c=force_c(kkind)%forces(:, atom_c), &
4537 do_symmetric=do_symmetric, &
4538 on_diagonal=iatom == jatom, &
4542 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4544 IF (
PRESENT(force_a) .AND. &
4545 .NOT.
PRESENT(force_b) .AND. &
4546 PRESENT(force_c) .AND. &
4547 PRESENT(pabc) .AND. &
4548 .NOT.
PRESENT(mat_dabc) .AND. &
4549 PRESENT(mat_adbc) .AND. &
4550 .NOT.
PRESENT(mat_abdc))
THEN
4551 CALL integrate_set_3c( &
4552 param%par, potential_parameter, &
4553 la_min(iset), la_max(iset), &
4554 lb_min(jset), lb_max(jset), &
4555 lc_min(kset), lc_max(kset), &
4556 npgfa(iset), npgfb(jset), npgfc(kset), &
4557 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4560 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4561 offset_a_start, offset_b_start, offset_c_start, &
4562 0, 0, first_set - 1, &
4563 sphi_a, sphi_b, sphi_c, &
4565 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4568force_a=force_a(ikind)%forces(:, atom_a), &
4570force_c=force_c(kkind)%forces(:, atom_c), &
4571 do_symmetric=do_symmetric, &
4572 on_diagonal=iatom == jatom, &
4576 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4578 IF (
PRESENT(force_a) .AND. &
4579 .NOT.
PRESENT(force_b) .AND. &
4580 PRESENT(force_c) .AND. &
4581 PRESENT(pabc) .AND. &
4582 .NOT.
PRESENT(mat_dabc) .AND. &
4583 PRESENT(mat_adbc) .AND. &
4584 PRESENT(mat_abdc))
THEN
4585 CALL integrate_set_3c( &
4586 param%par, potential_parameter, &
4587 la_min(iset), la_max(iset), &
4588 lb_min(jset), lb_max(jset), &
4589 lc_min(kset), lc_max(kset), &
4590 npgfa(iset), npgfb(jset), npgfc(kset), &
4591 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4594 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4595 offset_a_start, offset_b_start, offset_c_start, &
4596 0, 0, first_set - 1, &
4597 sphi_a, sphi_b, sphi_c, &
4599 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4602force_a=force_a(ikind)%forces(:, atom_a), &
4604force_c=force_c(kkind)%forces(:, atom_c), &
4605 do_symmetric=do_symmetric, &
4606 on_diagonal=iatom == jatom, &
4610 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4612 IF (
PRESENT(force_a) .AND. &
4613 .NOT.
PRESENT(force_b) .AND. &
4614 PRESENT(force_c) .AND. &
4615 PRESENT(pabc) .AND. &
4616 PRESENT(mat_dabc) .AND. &
4617 .NOT.
PRESENT(mat_adbc) .AND. &
4618 .NOT.
PRESENT(mat_abdc))
THEN
4619 CALL integrate_set_3c( &
4620 param%par, potential_parameter, &
4621 la_min(iset), la_max(iset), &
4622 lb_min(jset), lb_max(jset), &
4623 lc_min(kset), lc_max(kset), &
4624 npgfa(iset), npgfb(jset), npgfc(kset), &
4625 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4628 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4629 offset_a_start, offset_b_start, offset_c_start, &
4630 0, 0, first_set - 1, &
4631 sphi_a, sphi_b, sphi_c, &
4633 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4636force_a=force_a(ikind)%forces(:, atom_a), &
4638force_c=force_c(kkind)%forces(:, atom_c), &
4639 do_symmetric=do_symmetric, &
4640 on_diagonal=iatom == jatom, &
4644 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4646 IF (
PRESENT(force_a) .AND. &
4647 .NOT.
PRESENT(force_b) .AND. &
4648 PRESENT(force_c) .AND. &
4649 PRESENT(pabc) .AND. &
4650 PRESENT(mat_dabc) .AND. &
4651 .NOT.
PRESENT(mat_adbc) .AND. &
4652 PRESENT(mat_abdc))
THEN
4653 CALL integrate_set_3c( &
4654 param%par, potential_parameter, &
4655 la_min(iset), la_max(iset), &
4656 lb_min(jset), lb_max(jset), &
4657 lc_min(kset), lc_max(kset), &
4658 npgfa(iset), npgfb(jset), npgfc(kset), &
4659 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4662 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4663 offset_a_start, offset_b_start, offset_c_start, &
4664 0, 0, first_set - 1, &
4665 sphi_a, sphi_b, sphi_c, &
4667 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4670force_a=force_a(ikind)%forces(:, atom_a), &
4672force_c=force_c(kkind)%forces(:, atom_c), &
4673 do_symmetric=do_symmetric, &
4674 on_diagonal=iatom == jatom, &
4678 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4680 IF (
PRESENT(force_a) .AND. &
4681 .NOT.
PRESENT(force_b) .AND. &
4682 PRESENT(force_c) .AND. &
4683 PRESENT(pabc) .AND. &
4684 PRESENT(mat_dabc) .AND. &
4685 PRESENT(mat_adbc) .AND. &
4686 .NOT.
PRESENT(mat_abdc))
THEN
4687 CALL integrate_set_3c( &
4688 param%par, potential_parameter, &
4689 la_min(iset), la_max(iset), &
4690 lb_min(jset), lb_max(jset), &
4691 lc_min(kset), lc_max(kset), &
4692 npgfa(iset), npgfb(jset), npgfc(kset), &
4693 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4696 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4697 offset_a_start, offset_b_start, offset_c_start, &
4698 0, 0, first_set - 1, &
4699 sphi_a, sphi_b, sphi_c, &
4701 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4704force_a=force_a(ikind)%forces(:, atom_a), &
4706force_c=force_c(kkind)%forces(:, atom_c), &
4707 do_symmetric=do_symmetric, &
4708 on_diagonal=iatom == jatom, &
4712 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4714 IF (
PRESENT(force_a) .AND. &
4715 .NOT.
PRESENT(force_b) .AND. &
4716 PRESENT(force_c) .AND. &
4717 PRESENT(pabc) .AND. &
4718 PRESENT(mat_dabc) .AND. &
4719 PRESENT(mat_adbc) .AND. &
4720 PRESENT(mat_abdc))
THEN
4721 CALL integrate_set_3c( &
4722 param%par, potential_parameter, &
4723 la_min(iset), la_max(iset), &
4724 lb_min(jset), lb_max(jset), &
4725 lc_min(kset), lc_max(kset), &
4726 npgfa(iset), npgfb(jset), npgfc(kset), &
4727 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4730 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4731 offset_a_start, offset_b_start, offset_c_start, &
4732 0, 0, first_set - 1, &
4733 sphi_a, sphi_b, sphi_c, &
4735 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4738force_a=force_a(ikind)%forces(:, atom_a), &
4740force_c=force_c(kkind)%forces(:, atom_c), &
4741 do_symmetric=do_symmetric, &
4742 on_diagonal=iatom == jatom, &
4746 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4748 IF (
PRESENT(force_a) .AND. &
4749 PRESENT(force_b) .AND. &
4750 .NOT.
PRESENT(force_c) .AND. &
4751 PRESENT(pabc) .AND. &
4752 .NOT.
PRESENT(mat_dabc) .AND. &
4753 .NOT.
PRESENT(mat_adbc) .AND. &
4754 .NOT.
PRESENT(mat_abdc))
THEN
4755 CALL integrate_set_3c( &
4756 param%par, potential_parameter, &
4757 la_min(iset), la_max(iset), &
4758 lb_min(jset), lb_max(jset), &
4759 lc_min(kset), lc_max(kset), &
4760 npgfa(iset), npgfb(jset), npgfc(kset), &
4761 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4764 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4765 offset_a_start, offset_b_start, offset_c_start, &
4766 0, 0, first_set - 1, &
4767 sphi_a, sphi_b, sphi_c, &
4769 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4772force_a=force_a(ikind)%forces(:, atom_a), &
4773force_b=force_b(jkind)%forces(:, atom_b), &
4775 do_symmetric=do_symmetric, &
4776 on_diagonal=iatom == jatom, &
4780 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4782 IF (
PRESENT(force_a) .AND. &
4783 PRESENT(force_b) .AND. &
4784 .NOT.
PRESENT(force_c) .AND. &
4785 PRESENT(pabc) .AND. &
4786 .NOT.
PRESENT(mat_dabc) .AND. &
4787 .NOT.
PRESENT(mat_adbc) .AND. &
4788 PRESENT(mat_abdc))
THEN
4789 CALL integrate_set_3c( &
4790 param%par, potential_parameter, &
4791 la_min(iset), la_max(iset), &
4792 lb_min(jset), lb_max(jset), &
4793 lc_min(kset), lc_max(kset), &
4794 npgfa(iset), npgfb(jset), npgfc(kset), &
4795 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4798 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4799 offset_a_start, offset_b_start, offset_c_start, &
4800 0, 0, first_set - 1, &
4801 sphi_a, sphi_b, sphi_c, &
4803 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4806force_a=force_a(ikind)%forces(:, atom_a), &
4807force_b=force_b(jkind)%forces(:, atom_b), &
4809 do_symmetric=do_symmetric, &
4810 on_diagonal=iatom == jatom, &
4814 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4816 IF (
PRESENT(force_a) .AND. &
4817 PRESENT(force_b) .AND. &
4818 .NOT.
PRESENT(force_c) .AND. &
4819 PRESENT(pabc) .AND. &
4820 .NOT.
PRESENT(mat_dabc) .AND. &
4821 PRESENT(mat_adbc) .AND. &
4822 .NOT.
PRESENT(mat_abdc))
THEN
4823 CALL integrate_set_3c( &
4824 param%par, potential_parameter, &
4825 la_min(iset), la_max(iset), &
4826 lb_min(jset), lb_max(jset), &
4827 lc_min(kset), lc_max(kset), &
4828 npgfa(iset), npgfb(jset), npgfc(kset), &
4829 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4832 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4833 offset_a_start, offset_b_start, offset_c_start, &
4834 0, 0, first_set - 1, &
4835 sphi_a, sphi_b, sphi_c, &
4837 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4840force_a=force_a(ikind)%forces(:, atom_a), &
4841force_b=force_b(jkind)%forces(:, atom_b), &
4843 do_symmetric=do_symmetric, &
4844 on_diagonal=iatom == jatom, &
4848 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4850 IF (
PRESENT(force_a) .AND. &
4851 PRESENT(force_b) .AND. &
4852 .NOT.
PRESENT(force_c) .AND. &
4853 PRESENT(pabc) .AND. &
4854 .NOT.
PRESENT(mat_dabc) .AND. &
4855 PRESENT(mat_adbc) .AND. &
4856 PRESENT(mat_abdc))
THEN
4857 CALL integrate_set_3c( &
4858 param%par, potential_parameter, &
4859 la_min(iset), la_max(iset), &
4860 lb_min(jset), lb_max(jset), &
4861 lc_min(kset), lc_max(kset), &
4862 npgfa(iset), npgfb(jset), npgfc(kset), &
4863 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4866 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4867 offset_a_start, offset_b_start, offset_c_start, &
4868 0, 0, first_set - 1, &
4869 sphi_a, sphi_b, sphi_c, &
4871 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4874force_a=force_a(ikind)%forces(:, atom_a), &
4875force_b=force_b(jkind)%forces(:, atom_b), &
4877 do_symmetric=do_symmetric, &
4878 on_diagonal=iatom == jatom, &
4882 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4884 IF (
PRESENT(force_a) .AND. &
4885 PRESENT(force_b) .AND. &
4886 .NOT.
PRESENT(force_c) .AND. &
4887 PRESENT(pabc) .AND. &
4888 PRESENT(mat_dabc) .AND. &
4889 .NOT.
PRESENT(mat_adbc) .AND. &
4890 .NOT.
PRESENT(mat_abdc))
THEN
4891 CALL integrate_set_3c( &
4892 param%par, potential_parameter, &
4893 la_min(iset), la_max(iset), &
4894 lb_min(jset), lb_max(jset), &
4895 lc_min(kset), lc_max(kset), &
4896 npgfa(iset), npgfb(jset), npgfc(kset), &
4897 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4900 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4901 offset_a_start, offset_b_start, offset_c_start, &
4902 0, 0, first_set - 1, &
4903 sphi_a, sphi_b, sphi_c, &
4905 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4908force_a=force_a(ikind)%forces(:, atom_a), &
4909force_b=force_b(jkind)%forces(:, atom_b), &
4911 do_symmetric=do_symmetric, &
4912 on_diagonal=iatom == jatom, &
4916 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4918 IF (
PRESENT(force_a) .AND. &
4919 PRESENT(force_b) .AND. &
4920 .NOT.
PRESENT(force_c) .AND. &
4921 PRESENT(pabc) .AND. &
4922 PRESENT(mat_dabc) .AND. &
4923 .NOT.
PRESENT(mat_adbc) .AND. &
4924 PRESENT(mat_abdc))
THEN
4925 CALL integrate_set_3c( &
4926 param%par, potential_parameter, &
4927 la_min(iset), la_max(iset), &
4928 lb_min(jset), lb_max(jset), &
4929 lc_min(kset), lc_max(kset), &
4930 npgfa(iset), npgfb(jset), npgfc(kset), &
4931 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4934 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4935 offset_a_start, offset_b_start, offset_c_start, &
4936 0, 0, first_set - 1, &
4937 sphi_a, sphi_b, sphi_c, &
4939 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4942force_a=force_a(ikind)%forces(:, atom_a), &
4943force_b=force_b(jkind)%forces(:, atom_b), &
4945 do_symmetric=do_symmetric, &
4946 on_diagonal=iatom == jatom, &
4950 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4952 IF (
PRESENT(force_a) .AND. &
4953 PRESENT(force_b) .AND. &
4954 .NOT.
PRESENT(force_c) .AND. &
4955 PRESENT(pabc) .AND. &
4956 PRESENT(mat_dabc) .AND. &
4957 PRESENT(mat_adbc) .AND. &
4958 .NOT.
PRESENT(mat_abdc))
THEN
4959 CALL integrate_set_3c( &
4960 param%par, potential_parameter, &
4961 la_min(iset), la_max(iset), &
4962 lb_min(jset), lb_max(jset), &
4963 lc_min(kset), lc_max(kset), &
4964 npgfa(iset), npgfb(jset), npgfc(kset), &
4965 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4968 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4969 offset_a_start, offset_b_start, offset_c_start, &
4970 0, 0, first_set - 1, &
4971 sphi_a, sphi_b, sphi_c, &
4973 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4976force_a=force_a(ikind)%forces(:, atom_a), &
4977force_b=force_b(jkind)%forces(:, atom_b), &
4979 do_symmetric=do_symmetric, &
4980 on_diagonal=iatom == jatom, &
4984 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4986 IF (
PRESENT(force_a) .AND. &
4987 PRESENT(force_b) .AND. &
4988 .NOT.
PRESENT(force_c) .AND. &
4989 PRESENT(pabc) .AND. &
4990 PRESENT(mat_dabc) .AND. &
4991 PRESENT(mat_adbc) .AND. &
4992 PRESENT(mat_abdc))
THEN
4993 CALL integrate_set_3c( &
4994 param%par, potential_parameter, &
4995 la_min(iset), la_max(iset), &
4996 lb_min(jset), lb_max(jset), &
4997 lc_min(kset), lc_max(kset), &
4998 npgfa(iset), npgfb(jset), npgfc(kset), &
4999 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5002 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5003 offset_a_start, offset_b_start, offset_c_start, &
5004 0, 0, first_set - 1, &
5005 sphi_a, sphi_b, sphi_c, &
5007 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5010force_a=force_a(ikind)%forces(:, atom_a), &
5011force_b=force_b(jkind)%forces(:, atom_b), &
5013 do_symmetric=do_symmetric, &
5014 on_diagonal=iatom == jatom, &
5018 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5020 IF (
PRESENT(force_a) .AND. &
5021 PRESENT(force_b) .AND. &
5022 PRESENT(force_c) .AND. &
5023 PRESENT(pabc) .AND. &
5024 .NOT.
PRESENT(mat_dabc) .AND. &
5025 .NOT.
PRESENT(mat_adbc) .AND. &
5026 .NOT.
PRESENT(mat_abdc))
THEN
5027 CALL integrate_set_3c( &
5028 param%par, potential_parameter, &
5029 la_min(iset), la_max(iset), &
5030 lb_min(jset), lb_max(jset), &
5031 lc_min(kset), lc_max(kset), &
5032 npgfa(iset), npgfb(jset), npgfc(kset), &
5033 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5036 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5037 offset_a_start, offset_b_start, offset_c_start, &
5038 0, 0, first_set - 1, &
5039 sphi_a, sphi_b, sphi_c, &
5041 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5044force_a=force_a(ikind)%forces(:, atom_a), &
5045force_b=force_b(jkind)%forces(:, atom_b), &
5046force_c=force_c(kkind)%forces(:, atom_c), &
5047 do_symmetric=do_symmetric, &
5048 on_diagonal=iatom == jatom, &
5052 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5054 IF (
PRESENT(force_a) .AND. &
5055 PRESENT(force_b) .AND. &
5056 PRESENT(force_c) .AND. &
5057 PRESENT(pabc) .AND. &
5058 .NOT.
PRESENT(mat_dabc) .AND. &
5059 .NOT.
PRESENT(mat_adbc) .AND. &
5060 PRESENT(mat_abdc))
THEN
5061 CALL integrate_set_3c( &
5062 param%par, potential_parameter, &
5063 la_min(iset), la_max(iset), &
5064 lb_min(jset), lb_max(jset), &
5065 lc_min(kset), lc_max(kset), &
5066 npgfa(iset), npgfb(jset), npgfc(kset), &
5067 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5070 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5071 offset_a_start, offset_b_start, offset_c_start, &
5072 0, 0, first_set - 1, &
5073 sphi_a, sphi_b, sphi_c, &
5075 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5078force_a=force_a(ikind)%forces(:, atom_a), &
5079force_b=force_b(jkind)%forces(:, atom_b), &
5080force_c=force_c(kkind)%forces(:, atom_c), &
5081 do_symmetric=do_symmetric, &
5082 on_diagonal=iatom == jatom, &
5086 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5088 IF (
PRESENT(force_a) .AND. &
5089 PRESENT(force_b) .AND. &
5090 PRESENT(force_c) .AND. &
5091 PRESENT(pabc) .AND. &
5092 .NOT.
PRESENT(mat_dabc) .AND. &
5093 PRESENT(mat_adbc) .AND. &
5094 .NOT.
PRESENT(mat_abdc))
THEN
5095 CALL integrate_set_3c( &
5096 param%par, potential_parameter, &
5097 la_min(iset), la_max(iset), &
5098 lb_min(jset), lb_max(jset), &
5099 lc_min(kset), lc_max(kset), &
5100 npgfa(iset), npgfb(jset), npgfc(kset), &
5101 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5104 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5105 offset_a_start, offset_b_start, offset_c_start, &
5106 0, 0, first_set - 1, &
5107 sphi_a, sphi_b, sphi_c, &
5109 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5112force_a=force_a(ikind)%forces(:, atom_a), &
5113force_b=force_b(jkind)%forces(:, atom_b), &
5114force_c=force_c(kkind)%forces(:, atom_c), &
5115 do_symmetric=do_symmetric, &
5116 on_diagonal=iatom == jatom, &
5120 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5122 IF (
PRESENT(force_a) .AND. &
5123 PRESENT(force_b) .AND. &
5124 PRESENT(force_c) .AND. &
5125 PRESENT(pabc) .AND. &
5126 .NOT.
PRESENT(mat_dabc) .AND. &
5127 PRESENT(mat_adbc) .AND. &
5128 PRESENT(mat_abdc))
THEN
5129 CALL integrate_set_3c( &
5130 param%par, potential_parameter, &
5131 la_min(iset), la_max(iset), &
5132 lb_min(jset), lb_max(jset), &
5133 lc_min(kset), lc_max(kset), &
5134 npgfa(iset), npgfb(jset), npgfc(kset), &
5135 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5138 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5139 offset_a_start, offset_b_start, offset_c_start, &
5140 0, 0, first_set - 1, &
5141 sphi_a, sphi_b, sphi_c, &
5143 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5146force_a=force_a(ikind)%forces(:, atom_a), &
5147force_b=force_b(jkind)%forces(:, atom_b), &
5148force_c=force_c(kkind)%forces(:, atom_c), &
5149 do_symmetric=do_symmetric, &
5150 on_diagonal=iatom == jatom, &
5154 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5156 IF (
PRESENT(force_a) .AND. &
5157 PRESENT(force_b) .AND. &
5158 PRESENT(force_c) .AND. &
5159 PRESENT(pabc) .AND. &
5160 PRESENT(mat_dabc) .AND. &
5161 .NOT.
PRESENT(mat_adbc) .AND. &
5162 .NOT.
PRESENT(mat_abdc))
THEN
5163 CALL integrate_set_3c( &
5164 param%par, potential_parameter, &
5165 la_min(iset), la_max(iset), &
5166 lb_min(jset), lb_max(jset), &
5167 lc_min(kset), lc_max(kset), &
5168 npgfa(iset), npgfb(jset), npgfc(kset), &
5169 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5172 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5173 offset_a_start, offset_b_start, offset_c_start, &
5174 0, 0, first_set - 1, &
5175 sphi_a, sphi_b, sphi_c, &
5177 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5180force_a=force_a(ikind)%forces(:, atom_a), &
5181force_b=force_b(jkind)%forces(:, atom_b), &
5182force_c=force_c(kkind)%forces(:, atom_c), &
5183 do_symmetric=do_symmetric, &
5184 on_diagonal=iatom == jatom, &
5188 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5190 IF (
PRESENT(force_a) .AND. &
5191 PRESENT(force_b) .AND. &
5192 PRESENT(force_c) .AND. &
5193 PRESENT(pabc) .AND. &
5194 PRESENT(mat_dabc) .AND. &
5195 .NOT.
PRESENT(mat_adbc) .AND. &
5196 PRESENT(mat_abdc))
THEN
5197 CALL integrate_set_3c( &
5198 param%par, potential_parameter, &
5199 la_min(iset), la_max(iset), &
5200 lb_min(jset), lb_max(jset), &
5201 lc_min(kset), lc_max(kset), &
5202 npgfa(iset), npgfb(jset), npgfc(kset), &
5203 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5206 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5207 offset_a_start, offset_b_start, offset_c_start, &
5208 0, 0, first_set - 1, &
5209 sphi_a, sphi_b, sphi_c, &
5211 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5214force_a=force_a(ikind)%forces(:, atom_a), &
5215force_b=force_b(jkind)%forces(:, atom_b), &
5216force_c=force_c(kkind)%forces(:, atom_c), &
5217 do_symmetric=do_symmetric, &
5218 on_diagonal=iatom == jatom, &
5222 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5224 IF (
PRESENT(force_a) .AND. &
5225 PRESENT(force_b) .AND. &
5226 PRESENT(force_c) .AND. &
5227 PRESENT(pabc) .AND. &
5228 PRESENT(mat_dabc) .AND. &
5229 PRESENT(mat_adbc) .AND. &
5230 .NOT.
PRESENT(mat_abdc))
THEN
5231 CALL integrate_set_3c( &
5232 param%par, potential_parameter, &
5233 la_min(iset), la_max(iset), &
5234 lb_min(jset), lb_max(jset), &
5235 lc_min(kset), lc_max(kset), &
5236 npgfa(iset), npgfb(jset), npgfc(kset), &
5237 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5240 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5241 offset_a_start, offset_b_start, offset_c_start, &
5242 0, 0, first_set - 1, &
5243 sphi_a, sphi_b, sphi_c, &
5245 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5248force_a=force_a(ikind)%forces(:, atom_a), &
5249force_b=force_b(jkind)%forces(:, atom_b), &
5250force_c=force_c(kkind)%forces(:, atom_c), &
5251 do_symmetric=do_symmetric, &
5252 on_diagonal=iatom == jatom, &
5256 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5258 IF (
PRESENT(force_a) .AND. &
5259 PRESENT(force_b) .AND. &
5260 PRESENT(force_c) .AND. &
5261 PRESENT(pabc) .AND. &
5262 PRESENT(mat_dabc) .AND. &
5263 PRESENT(mat_adbc) .AND. &
5264 PRESENT(mat_abdc))
THEN
5265 CALL integrate_set_3c( &
5266 param%par, potential_parameter, &
5267 la_min(iset), la_max(iset), &
5268 lb_min(jset), lb_max(jset), &
5269 lc_min(kset), lc_max(kset), &
5270 npgfa(iset), npgfb(jset), npgfc(kset), &
5271 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5274 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5275 offset_a_start, offset_b_start, offset_c_start, &
5276 0, 0, first_set - 1, &
5277 sphi_a, sphi_b, sphi_c, &
5279 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5282force_a=force_a(ikind)%forces(:, atom_a), &
5283force_b=force_b(jkind)%forces(:, atom_b), &
5284force_c=force_c(kkind)%forces(:, atom_c), &
5285 do_symmetric=do_symmetric, &
5286 on_diagonal=iatom == jatom, &
5290 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5297 IF (calculate_forces .AND.
PRESENT(pabc))
DEALLOCATE (pabc_block)
5299 NULLIFY (munu_block)
5301 row=irow, col=icol, block=munu_block, found=found)
5303 munu_block(:, :) = 0.0_dp
5304 IF (irow == iatom)
THEN
5305 to_be_asserted =
SIZE(munu_block, 1) ==
SIZE(habc, 1) .AND.
SIZE(munu_block, 2) ==
SIZE(habc, 2)
5306 cpassert(to_be_asserted)
5307 munu_block(:, :) = habc(:, :, ic)
5309 to_be_asserted =
SIZE(munu_block, 2) ==
SIZE(habc, 1) .AND.
SIZE(munu_block, 1) ==
SIZE(habc, 2)
5310 cpassert(to_be_asserted)
5311 munu_block(:, :) = transpose(habc(:, :, ic))
5315 IF (calculate_forces)
THEN
5318 IF (
PRESENT(mat_dabc))
THEN
5319 NULLIFY (munu_block)
5321 row=irow, col=icol, block=munu_block, found=found)
5323 munu_block(:, :) = 0.0_dp
5324 IF (irow == iatom)
THEN
5325 munu_block(:, :) = hdabc(i_xyz, :, :, ic)
5327 munu_block(:, :) = transpose(hdabc(i_xyz, :, :, ic))
5330 IF (
PRESENT(mat_adbc))
THEN
5331 NULLIFY (munu_block)
5333 row=irow, col=icol, block=munu_block, found=found)
5335 munu_block(:, :) = 0.0_dp
5336 IF (irow == iatom)
THEN
5337 munu_block(:, :) = hadbc(i_xyz, :, :, ic)
5339 munu_block(:, :) = transpose(hadbc(i_xyz, :, :, ic))
5342 IF (
PRESENT(mat_abdc))
THEN
5343 NULLIFY (munu_block)
5345 row=irow, col=icol, block=munu_block, found=found)
5347 munu_block(:, :) = 0.0_dp
5348 IF (irow == iatom)
THEN
5349 munu_block(:, :) = habdc(i_xyz, :, :, ic)
5351 munu_block(:, :) = transpose(habdc(i_xyz, :, :, ic))
5356 IF (
PRESENT(mat_dabc))
DEALLOCATE (hdabc)
5357 IF (
PRESENT(mat_adbc))
DEALLOCATE (hadbc)
5358 IF (
PRESENT(mat_abdc))
DEALLOCATE (habdc)
5362 DEALLOCATE (basis_set_list_a, basis_set_list_b)
5367 CALL timestop(handle)