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
805 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
806 basis_set_b => basis_set_list_b(jkind)%gto_basis_set
807 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
808 atom_a = atom_of_kind(iatom)
809 atom_b = atom_of_kind(jatom)
811 first_sgfa => basis_set_a%first_sgf
812 la_max => basis_set_a%lmax
813 la_min => basis_set_a%lmin
814 npgfa => basis_set_a%npgf
815 nseta = basis_set_a%nset
816 nsgfa => basis_set_a%nsgf_set
817 set_radius_a => basis_set_a%set_radius
818 sphi_a => basis_set_a%sphi
819 zeta => basis_set_a%zet
822 ra(:) =
pbc(particle_set(iatom)%r, cell)
825 first_sgfb => basis_set_b%first_sgf
826 lb_max => basis_set_b%lmax
827 lb_min => basis_set_b%lmin
828 npgfb => basis_set_b%npgf
829 nsetb = basis_set_b%nset
830 nsgfb => basis_set_b%nsgf_set
831 rpgfb => basis_set_b%pgf_radius
832 set_radius_b => basis_set_b%set_radius
833 sphi_b => basis_set_b%sphi
834 zetb => basis_set_b%zet
837 rb(:) =
pbc(particle_set(jatom)%r, cell)
839 IF (do_symmetric)
THEN
840 IF (iatom <= jatom)
THEN
852 ALLOCATE (habc(na, nb, nc))
853 habc(:, :, :) = 0.0_dp
854 IF (
PRESENT(mat_dabc))
THEN
855 ALLOCATE (hdabc(3, na, nb, nc))
856 hdabc(:, :, :, :) = 0.0_dp
858 IF (
PRESENT(mat_adbc))
THEN
859 ALLOCATE (hadbc(3, na, nb, nc))
860 hadbc(:, :, :, :) = 0.0_dp
862 IF (
PRESENT(mat_abdc))
THEN
863 ALLOCATE (habdc(3, na, nb, nc))
864 habdc(:, :, :, :) = 0.0_dp
867 IF (calculate_forces .AND.
PRESENT(pabc))
THEN
868 ALLOCATE (pabc_block(na, nb, nc))
872 row=irow, col=icol, block=pab_block, found=found)
874 IF (irow .EQ. iatom)
THEN
875 to_be_asserted =
SIZE(pab_block, 1) .EQ.
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 2) .EQ.
SIZE(pabc_block, 2)
876 cpassert(to_be_asserted)
877 pabc_block(:, :, ic) = pab_block(:, :)
879 to_be_asserted =
SIZE(pab_block, 2) .EQ.
SIZE(pabc_block, 1) .AND.
SIZE(pab_block, 1) .EQ.
SIZE(pabc_block, 2)
880 cpassert(to_be_asserted)
881 pabc_block(:, :, ic) = transpose(pab_block(:, :))
886 rab(:) =
pbc(rab, cell)
887 dab = sqrt(rab(1)**2 + rab(2)**2 + rab(3)**2)
891 offset_a_start = offset_a_end
892 offset_a_end = offset_a_end + nsgfa(iset)
893 sgfa = first_sgfa(1, iset)
897 offset_b_start = offset_b_end
898 offset_b_end = offset_b_end + nsgfb(jset)
900 sgfb = first_sgfb(1, jset)
903 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
906 DO katom = atom_start, atom_end
908 atom_c = atom_of_kind(katom)
910 kkind = kind_of(katom)
911 CALL get_qs_kind(qs_kind=qs_kind_set(kkind), basis_set=basis_set_c, basis_type=basis_type_c)
912 first_sgfc => basis_set_c%first_sgf
913 lc_max => basis_set_c%lmax
914 lc_min => basis_set_c%lmin
915 nsetc = basis_set_c%nset
916 nsgfc => basis_set_c%nsgf_set
917 sphi_c => basis_set_c%sphi
918 zetc => basis_set_c%zet
919 npgfc => basis_set_c%npgf
921 rc(:) =
pbc(particle_set(katom)%r, cell)
923 kset_start = 1; kset_end = nsetc
924 IF (katom == atom_start) kset_start = set_start
925 IF (katom == atom_end) kset_end = set_end
927 DO kset = kset_start, kset_end
928 first_set = 1; last_set = nsgfc(kset)
929 IF (kset == kset_start .AND. katom == atom_start) first_set = set_offset_start
930 IF (kset == kset_end .AND. katom == atom_end) last_set = set_offset_end
932 offset_c_start = offset_c_end
933 offset_c_end = offset_c_end + last_set + 1 - first_set
934 sgfc = first_sgfc(1, kset)
936 IF (.NOT.
PRESENT(force_a) .AND. &
937 .NOT.
PRESENT(force_b) .AND. &
938 .NOT.
PRESENT(force_c) .AND. &
939 .NOT.
PRESENT(pabc) .AND. &
940 .NOT.
PRESENT(mat_dabc) .AND. &
941 .NOT.
PRESENT(mat_adbc) .AND. &
942 .NOT.
PRESENT(mat_abdc))
THEN
943 CALL integrate_set_3c( &
944 param%par, potential_parameter, &
945 la_min(iset), la_max(iset), &
946 lb_min(jset), lb_max(jset), &
947 lc_min(kset), lc_max(kset), &
948 npgfa(iset), npgfb(jset), npgfc(kset), &
949 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
952 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
953 offset_a_start, offset_b_start, offset_c_start, &
954 0, 0, first_set - 1, &
955 sphi_a, sphi_b, sphi_c, &
957 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
963 do_symmetric=do_symmetric, &
964 on_diagonal=iatom .EQ. jatom, &
968 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
970 IF (.NOT.
PRESENT(force_a) .AND. &
971 .NOT.
PRESENT(force_b) .AND. &
972 .NOT.
PRESENT(force_c) .AND. &
973 .NOT.
PRESENT(pabc) .AND. &
974 .NOT.
PRESENT(mat_dabc) .AND. &
975 .NOT.
PRESENT(mat_adbc) .AND. &
976 PRESENT(mat_abdc))
THEN
977 CALL integrate_set_3c( &
978 param%par, potential_parameter, &
979 la_min(iset), la_max(iset), &
980 lb_min(jset), lb_max(jset), &
981 lc_min(kset), lc_max(kset), &
982 npgfa(iset), npgfb(jset), npgfc(kset), &
983 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
986 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
987 offset_a_start, offset_b_start, offset_c_start, &
988 0, 0, first_set - 1, &
989 sphi_a, sphi_b, sphi_c, &
991 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
997 do_symmetric=do_symmetric, &
998 on_diagonal=iatom .EQ. jatom, &
1002 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1004 IF (.NOT.
PRESENT(force_a) .AND. &
1005 .NOT.
PRESENT(force_b) .AND. &
1006 .NOT.
PRESENT(force_c) .AND. &
1007 .NOT.
PRESENT(pabc) .AND. &
1008 .NOT.
PRESENT(mat_dabc) .AND. &
1009 PRESENT(mat_adbc) .AND. &
1010 .NOT.
PRESENT(mat_abdc))
THEN
1011 CALL integrate_set_3c( &
1012 param%par, potential_parameter, &
1013 la_min(iset), la_max(iset), &
1014 lb_min(jset), lb_max(jset), &
1015 lc_min(kset), lc_max(kset), &
1016 npgfa(iset), npgfb(jset), npgfc(kset), &
1017 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1020 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1021 offset_a_start, offset_b_start, offset_c_start, &
1022 0, 0, first_set - 1, &
1023 sphi_a, sphi_b, sphi_c, &
1025 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1031 do_symmetric=do_symmetric, &
1032 on_diagonal=iatom .EQ. jatom, &
1036 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1038 IF (.NOT.
PRESENT(force_a) .AND. &
1039 .NOT.
PRESENT(force_b) .AND. &
1040 .NOT.
PRESENT(force_c) .AND. &
1041 .NOT.
PRESENT(pabc) .AND. &
1042 .NOT.
PRESENT(mat_dabc) .AND. &
1043 PRESENT(mat_adbc) .AND. &
1044 PRESENT(mat_abdc))
THEN
1045 CALL integrate_set_3c( &
1046 param%par, potential_parameter, &
1047 la_min(iset), la_max(iset), &
1048 lb_min(jset), lb_max(jset), &
1049 lc_min(kset), lc_max(kset), &
1050 npgfa(iset), npgfb(jset), npgfc(kset), &
1051 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1054 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1055 offset_a_start, offset_b_start, offset_c_start, &
1056 0, 0, first_set - 1, &
1057 sphi_a, sphi_b, sphi_c, &
1059 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1065 do_symmetric=do_symmetric, &
1066 on_diagonal=iatom .EQ. jatom, &
1070 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1072 IF (.NOT.
PRESENT(force_a) .AND. &
1073 .NOT.
PRESENT(force_b) .AND. &
1074 .NOT.
PRESENT(force_c) .AND. &
1075 .NOT.
PRESENT(pabc) .AND. &
1076 PRESENT(mat_dabc) .AND. &
1077 .NOT.
PRESENT(mat_adbc) .AND. &
1078 .NOT.
PRESENT(mat_abdc))
THEN
1079 CALL integrate_set_3c( &
1080 param%par, potential_parameter, &
1081 la_min(iset), la_max(iset), &
1082 lb_min(jset), lb_max(jset), &
1083 lc_min(kset), lc_max(kset), &
1084 npgfa(iset), npgfb(jset), npgfc(kset), &
1085 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1088 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1089 offset_a_start, offset_b_start, offset_c_start, &
1090 0, 0, first_set - 1, &
1091 sphi_a, sphi_b, sphi_c, &
1093 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1099 do_symmetric=do_symmetric, &
1100 on_diagonal=iatom .EQ. jatom, &
1104 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1106 IF (.NOT.
PRESENT(force_a) .AND. &
1107 .NOT.
PRESENT(force_b) .AND. &
1108 .NOT.
PRESENT(force_c) .AND. &
1109 .NOT.
PRESENT(pabc) .AND. &
1110 PRESENT(mat_dabc) .AND. &
1111 .NOT.
PRESENT(mat_adbc) .AND. &
1112 PRESENT(mat_abdc))
THEN
1113 CALL integrate_set_3c( &
1114 param%par, potential_parameter, &
1115 la_min(iset), la_max(iset), &
1116 lb_min(jset), lb_max(jset), &
1117 lc_min(kset), lc_max(kset), &
1118 npgfa(iset), npgfb(jset), npgfc(kset), &
1119 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1122 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1123 offset_a_start, offset_b_start, offset_c_start, &
1124 0, 0, first_set - 1, &
1125 sphi_a, sphi_b, sphi_c, &
1127 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1133 do_symmetric=do_symmetric, &
1134 on_diagonal=iatom .EQ. jatom, &
1138 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1140 IF (.NOT.
PRESENT(force_a) .AND. &
1141 .NOT.
PRESENT(force_b) .AND. &
1142 .NOT.
PRESENT(force_c) .AND. &
1143 .NOT.
PRESENT(pabc) .AND. &
1144 PRESENT(mat_dabc) .AND. &
1145 PRESENT(mat_adbc) .AND. &
1146 .NOT.
PRESENT(mat_abdc))
THEN
1147 CALL integrate_set_3c( &
1148 param%par, potential_parameter, &
1149 la_min(iset), la_max(iset), &
1150 lb_min(jset), lb_max(jset), &
1151 lc_min(kset), lc_max(kset), &
1152 npgfa(iset), npgfb(jset), npgfc(kset), &
1153 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1156 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1157 offset_a_start, offset_b_start, offset_c_start, &
1158 0, 0, first_set - 1, &
1159 sphi_a, sphi_b, sphi_c, &
1161 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1167 do_symmetric=do_symmetric, &
1168 on_diagonal=iatom .EQ. jatom, &
1172 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1174 IF (.NOT.
PRESENT(force_a) .AND. &
1175 .NOT.
PRESENT(force_b) .AND. &
1176 .NOT.
PRESENT(force_c) .AND. &
1177 .NOT.
PRESENT(pabc) .AND. &
1178 PRESENT(mat_dabc) .AND. &
1179 PRESENT(mat_adbc) .AND. &
1180 PRESENT(mat_abdc))
THEN
1181 CALL integrate_set_3c( &
1182 param%par, potential_parameter, &
1183 la_min(iset), la_max(iset), &
1184 lb_min(jset), lb_max(jset), &
1185 lc_min(kset), lc_max(kset), &
1186 npgfa(iset), npgfb(jset), npgfc(kset), &
1187 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1190 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1191 offset_a_start, offset_b_start, offset_c_start, &
1192 0, 0, first_set - 1, &
1193 sphi_a, sphi_b, sphi_c, &
1195 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1201 do_symmetric=do_symmetric, &
1202 on_diagonal=iatom .EQ. jatom, &
1206 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1208 IF (.NOT.
PRESENT(force_a) .AND. &
1209 .NOT.
PRESENT(force_b) .AND. &
1210 PRESENT(force_c) .AND. &
1211 .NOT.
PRESENT(pabc) .AND. &
1212 .NOT.
PRESENT(mat_dabc) .AND. &
1213 .NOT.
PRESENT(mat_adbc) .AND. &
1214 .NOT.
PRESENT(mat_abdc))
THEN
1215 CALL integrate_set_3c( &
1216 param%par, potential_parameter, &
1217 la_min(iset), la_max(iset), &
1218 lb_min(jset), lb_max(jset), &
1219 lc_min(kset), lc_max(kset), &
1220 npgfa(iset), npgfb(jset), npgfc(kset), &
1221 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1224 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1225 offset_a_start, offset_b_start, offset_c_start, &
1226 0, 0, first_set - 1, &
1227 sphi_a, sphi_b, sphi_c, &
1229 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1234force_c=force_c(kkind)%forces(:, atom_c), &
1235 do_symmetric=do_symmetric, &
1236 on_diagonal=iatom .EQ. jatom, &
1240 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1242 IF (.NOT.
PRESENT(force_a) .AND. &
1243 .NOT.
PRESENT(force_b) .AND. &
1244 PRESENT(force_c) .AND. &
1245 .NOT.
PRESENT(pabc) .AND. &
1246 .NOT.
PRESENT(mat_dabc) .AND. &
1247 .NOT.
PRESENT(mat_adbc) .AND. &
1248 PRESENT(mat_abdc))
THEN
1249 CALL integrate_set_3c( &
1250 param%par, potential_parameter, &
1251 la_min(iset), la_max(iset), &
1252 lb_min(jset), lb_max(jset), &
1253 lc_min(kset), lc_max(kset), &
1254 npgfa(iset), npgfb(jset), npgfc(kset), &
1255 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1258 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1259 offset_a_start, offset_b_start, offset_c_start, &
1260 0, 0, first_set - 1, &
1261 sphi_a, sphi_b, sphi_c, &
1263 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1268force_c=force_c(kkind)%forces(:, atom_c), &
1269 do_symmetric=do_symmetric, &
1270 on_diagonal=iatom .EQ. jatom, &
1274 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1276 IF (.NOT.
PRESENT(force_a) .AND. &
1277 .NOT.
PRESENT(force_b) .AND. &
1278 PRESENT(force_c) .AND. &
1279 .NOT.
PRESENT(pabc) .AND. &
1280 .NOT.
PRESENT(mat_dabc) .AND. &
1281 PRESENT(mat_adbc) .AND. &
1282 .NOT.
PRESENT(mat_abdc))
THEN
1283 CALL integrate_set_3c( &
1284 param%par, potential_parameter, &
1285 la_min(iset), la_max(iset), &
1286 lb_min(jset), lb_max(jset), &
1287 lc_min(kset), lc_max(kset), &
1288 npgfa(iset), npgfb(jset), npgfc(kset), &
1289 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1292 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1293 offset_a_start, offset_b_start, offset_c_start, &
1294 0, 0, first_set - 1, &
1295 sphi_a, sphi_b, sphi_c, &
1297 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1302force_c=force_c(kkind)%forces(:, atom_c), &
1303 do_symmetric=do_symmetric, &
1304 on_diagonal=iatom .EQ. jatom, &
1308 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1310 IF (.NOT.
PRESENT(force_a) .AND. &
1311 .NOT.
PRESENT(force_b) .AND. &
1312 PRESENT(force_c) .AND. &
1313 .NOT.
PRESENT(pabc) .AND. &
1314 .NOT.
PRESENT(mat_dabc) .AND. &
1315 PRESENT(mat_adbc) .AND. &
1316 PRESENT(mat_abdc))
THEN
1317 CALL integrate_set_3c( &
1318 param%par, potential_parameter, &
1319 la_min(iset), la_max(iset), &
1320 lb_min(jset), lb_max(jset), &
1321 lc_min(kset), lc_max(kset), &
1322 npgfa(iset), npgfb(jset), npgfc(kset), &
1323 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1326 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1327 offset_a_start, offset_b_start, offset_c_start, &
1328 0, 0, first_set - 1, &
1329 sphi_a, sphi_b, sphi_c, &
1331 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1336force_c=force_c(kkind)%forces(:, atom_c), &
1337 do_symmetric=do_symmetric, &
1338 on_diagonal=iatom .EQ. jatom, &
1342 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1344 IF (.NOT.
PRESENT(force_a) .AND. &
1345 .NOT.
PRESENT(force_b) .AND. &
1346 PRESENT(force_c) .AND. &
1347 .NOT.
PRESENT(pabc) .AND. &
1348 PRESENT(mat_dabc) .AND. &
1349 .NOT.
PRESENT(mat_adbc) .AND. &
1350 .NOT.
PRESENT(mat_abdc))
THEN
1351 CALL integrate_set_3c( &
1352 param%par, potential_parameter, &
1353 la_min(iset), la_max(iset), &
1354 lb_min(jset), lb_max(jset), &
1355 lc_min(kset), lc_max(kset), &
1356 npgfa(iset), npgfb(jset), npgfc(kset), &
1357 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1360 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1361 offset_a_start, offset_b_start, offset_c_start, &
1362 0, 0, first_set - 1, &
1363 sphi_a, sphi_b, sphi_c, &
1365 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1370force_c=force_c(kkind)%forces(:, atom_c), &
1371 do_symmetric=do_symmetric, &
1372 on_diagonal=iatom .EQ. jatom, &
1376 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1378 IF (.NOT.
PRESENT(force_a) .AND. &
1379 .NOT.
PRESENT(force_b) .AND. &
1380 PRESENT(force_c) .AND. &
1381 .NOT.
PRESENT(pabc) .AND. &
1382 PRESENT(mat_dabc) .AND. &
1383 .NOT.
PRESENT(mat_adbc) .AND. &
1384 PRESENT(mat_abdc))
THEN
1385 CALL integrate_set_3c( &
1386 param%par, potential_parameter, &
1387 la_min(iset), la_max(iset), &
1388 lb_min(jset), lb_max(jset), &
1389 lc_min(kset), lc_max(kset), &
1390 npgfa(iset), npgfb(jset), npgfc(kset), &
1391 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1394 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1395 offset_a_start, offset_b_start, offset_c_start, &
1396 0, 0, first_set - 1, &
1397 sphi_a, sphi_b, sphi_c, &
1399 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1404force_c=force_c(kkind)%forces(:, atom_c), &
1405 do_symmetric=do_symmetric, &
1406 on_diagonal=iatom .EQ. jatom, &
1410 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1412 IF (.NOT.
PRESENT(force_a) .AND. &
1413 .NOT.
PRESENT(force_b) .AND. &
1414 PRESENT(force_c) .AND. &
1415 .NOT.
PRESENT(pabc) .AND. &
1416 PRESENT(mat_dabc) .AND. &
1417 PRESENT(mat_adbc) .AND. &
1418 .NOT.
PRESENT(mat_abdc))
THEN
1419 CALL integrate_set_3c( &
1420 param%par, potential_parameter, &
1421 la_min(iset), la_max(iset), &
1422 lb_min(jset), lb_max(jset), &
1423 lc_min(kset), lc_max(kset), &
1424 npgfa(iset), npgfb(jset), npgfc(kset), &
1425 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1428 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1429 offset_a_start, offset_b_start, offset_c_start, &
1430 0, 0, first_set - 1, &
1431 sphi_a, sphi_b, sphi_c, &
1433 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1438force_c=force_c(kkind)%forces(:, atom_c), &
1439 do_symmetric=do_symmetric, &
1440 on_diagonal=iatom .EQ. jatom, &
1444 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1446 IF (.NOT.
PRESENT(force_a) .AND. &
1447 .NOT.
PRESENT(force_b) .AND. &
1448 PRESENT(force_c) .AND. &
1449 .NOT.
PRESENT(pabc) .AND. &
1450 PRESENT(mat_dabc) .AND. &
1451 PRESENT(mat_adbc) .AND. &
1452 PRESENT(mat_abdc))
THEN
1453 CALL integrate_set_3c( &
1454 param%par, potential_parameter, &
1455 la_min(iset), la_max(iset), &
1456 lb_min(jset), lb_max(jset), &
1457 lc_min(kset), lc_max(kset), &
1458 npgfa(iset), npgfb(jset), npgfc(kset), &
1459 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1462 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1463 offset_a_start, offset_b_start, offset_c_start, &
1464 0, 0, first_set - 1, &
1465 sphi_a, sphi_b, sphi_c, &
1467 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1472force_c=force_c(kkind)%forces(:, atom_c), &
1473 do_symmetric=do_symmetric, &
1474 on_diagonal=iatom .EQ. jatom, &
1478 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1480 IF (.NOT.
PRESENT(force_a) .AND. &
1481 PRESENT(force_b) .AND. &
1482 .NOT.
PRESENT(force_c) .AND. &
1483 .NOT.
PRESENT(pabc) .AND. &
1484 .NOT.
PRESENT(mat_dabc) .AND. &
1485 .NOT.
PRESENT(mat_adbc) .AND. &
1486 .NOT.
PRESENT(mat_abdc))
THEN
1487 CALL integrate_set_3c( &
1488 param%par, potential_parameter, &
1489 la_min(iset), la_max(iset), &
1490 lb_min(jset), lb_max(jset), &
1491 lc_min(kset), lc_max(kset), &
1492 npgfa(iset), npgfb(jset), npgfc(kset), &
1493 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1496 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1497 offset_a_start, offset_b_start, offset_c_start, &
1498 0, 0, first_set - 1, &
1499 sphi_a, sphi_b, sphi_c, &
1501 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1505force_b=force_b(jkind)%forces(:, atom_b), &
1507 do_symmetric=do_symmetric, &
1508 on_diagonal=iatom .EQ. jatom, &
1512 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1514 IF (.NOT.
PRESENT(force_a) .AND. &
1515 PRESENT(force_b) .AND. &
1516 .NOT.
PRESENT(force_c) .AND. &
1517 .NOT.
PRESENT(pabc) .AND. &
1518 .NOT.
PRESENT(mat_dabc) .AND. &
1519 .NOT.
PRESENT(mat_adbc) .AND. &
1520 PRESENT(mat_abdc))
THEN
1521 CALL integrate_set_3c( &
1522 param%par, potential_parameter, &
1523 la_min(iset), la_max(iset), &
1524 lb_min(jset), lb_max(jset), &
1525 lc_min(kset), lc_max(kset), &
1526 npgfa(iset), npgfb(jset), npgfc(kset), &
1527 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1530 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1531 offset_a_start, offset_b_start, offset_c_start, &
1532 0, 0, first_set - 1, &
1533 sphi_a, sphi_b, sphi_c, &
1535 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1539force_b=force_b(jkind)%forces(:, atom_b), &
1541 do_symmetric=do_symmetric, &
1542 on_diagonal=iatom .EQ. jatom, &
1546 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1548 IF (.NOT.
PRESENT(force_a) .AND. &
1549 PRESENT(force_b) .AND. &
1550 .NOT.
PRESENT(force_c) .AND. &
1551 .NOT.
PRESENT(pabc) .AND. &
1552 .NOT.
PRESENT(mat_dabc) .AND. &
1553 PRESENT(mat_adbc) .AND. &
1554 .NOT.
PRESENT(mat_abdc))
THEN
1555 CALL integrate_set_3c( &
1556 param%par, potential_parameter, &
1557 la_min(iset), la_max(iset), &
1558 lb_min(jset), lb_max(jset), &
1559 lc_min(kset), lc_max(kset), &
1560 npgfa(iset), npgfb(jset), npgfc(kset), &
1561 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1564 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1565 offset_a_start, offset_b_start, offset_c_start, &
1566 0, 0, first_set - 1, &
1567 sphi_a, sphi_b, sphi_c, &
1569 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1573force_b=force_b(jkind)%forces(:, atom_b), &
1575 do_symmetric=do_symmetric, &
1576 on_diagonal=iatom .EQ. jatom, &
1580 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1582 IF (.NOT.
PRESENT(force_a) .AND. &
1583 PRESENT(force_b) .AND. &
1584 .NOT.
PRESENT(force_c) .AND. &
1585 .NOT.
PRESENT(pabc) .AND. &
1586 .NOT.
PRESENT(mat_dabc) .AND. &
1587 PRESENT(mat_adbc) .AND. &
1588 PRESENT(mat_abdc))
THEN
1589 CALL integrate_set_3c( &
1590 param%par, potential_parameter, &
1591 la_min(iset), la_max(iset), &
1592 lb_min(jset), lb_max(jset), &
1593 lc_min(kset), lc_max(kset), &
1594 npgfa(iset), npgfb(jset), npgfc(kset), &
1595 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1598 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1599 offset_a_start, offset_b_start, offset_c_start, &
1600 0, 0, first_set - 1, &
1601 sphi_a, sphi_b, sphi_c, &
1603 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1607force_b=force_b(jkind)%forces(:, atom_b), &
1609 do_symmetric=do_symmetric, &
1610 on_diagonal=iatom .EQ. jatom, &
1614 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1616 IF (.NOT.
PRESENT(force_a) .AND. &
1617 PRESENT(force_b) .AND. &
1618 .NOT.
PRESENT(force_c) .AND. &
1619 .NOT.
PRESENT(pabc) .AND. &
1620 PRESENT(mat_dabc) .AND. &
1621 .NOT.
PRESENT(mat_adbc) .AND. &
1622 .NOT.
PRESENT(mat_abdc))
THEN
1623 CALL integrate_set_3c( &
1624 param%par, potential_parameter, &
1625 la_min(iset), la_max(iset), &
1626 lb_min(jset), lb_max(jset), &
1627 lc_min(kset), lc_max(kset), &
1628 npgfa(iset), npgfb(jset), npgfc(kset), &
1629 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1632 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1633 offset_a_start, offset_b_start, offset_c_start, &
1634 0, 0, first_set - 1, &
1635 sphi_a, sphi_b, sphi_c, &
1637 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1641force_b=force_b(jkind)%forces(:, atom_b), &
1643 do_symmetric=do_symmetric, &
1644 on_diagonal=iatom .EQ. jatom, &
1648 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1650 IF (.NOT.
PRESENT(force_a) .AND. &
1651 PRESENT(force_b) .AND. &
1652 .NOT.
PRESENT(force_c) .AND. &
1653 .NOT.
PRESENT(pabc) .AND. &
1654 PRESENT(mat_dabc) .AND. &
1655 .NOT.
PRESENT(mat_adbc) .AND. &
1656 PRESENT(mat_abdc))
THEN
1657 CALL integrate_set_3c( &
1658 param%par, potential_parameter, &
1659 la_min(iset), la_max(iset), &
1660 lb_min(jset), lb_max(jset), &
1661 lc_min(kset), lc_max(kset), &
1662 npgfa(iset), npgfb(jset), npgfc(kset), &
1663 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1666 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1667 offset_a_start, offset_b_start, offset_c_start, &
1668 0, 0, first_set - 1, &
1669 sphi_a, sphi_b, sphi_c, &
1671 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1675force_b=force_b(jkind)%forces(:, atom_b), &
1677 do_symmetric=do_symmetric, &
1678 on_diagonal=iatom .EQ. jatom, &
1682 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1684 IF (.NOT.
PRESENT(force_a) .AND. &
1685 PRESENT(force_b) .AND. &
1686 .NOT.
PRESENT(force_c) .AND. &
1687 .NOT.
PRESENT(pabc) .AND. &
1688 PRESENT(mat_dabc) .AND. &
1689 PRESENT(mat_adbc) .AND. &
1690 .NOT.
PRESENT(mat_abdc))
THEN
1691 CALL integrate_set_3c( &
1692 param%par, potential_parameter, &
1693 la_min(iset), la_max(iset), &
1694 lb_min(jset), lb_max(jset), &
1695 lc_min(kset), lc_max(kset), &
1696 npgfa(iset), npgfb(jset), npgfc(kset), &
1697 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1700 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1701 offset_a_start, offset_b_start, offset_c_start, &
1702 0, 0, first_set - 1, &
1703 sphi_a, sphi_b, sphi_c, &
1705 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1709force_b=force_b(jkind)%forces(:, atom_b), &
1711 do_symmetric=do_symmetric, &
1712 on_diagonal=iatom .EQ. jatom, &
1716 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1718 IF (.NOT.
PRESENT(force_a) .AND. &
1719 PRESENT(force_b) .AND. &
1720 .NOT.
PRESENT(force_c) .AND. &
1721 .NOT.
PRESENT(pabc) .AND. &
1722 PRESENT(mat_dabc) .AND. &
1723 PRESENT(mat_adbc) .AND. &
1724 PRESENT(mat_abdc))
THEN
1725 CALL integrate_set_3c( &
1726 param%par, potential_parameter, &
1727 la_min(iset), la_max(iset), &
1728 lb_min(jset), lb_max(jset), &
1729 lc_min(kset), lc_max(kset), &
1730 npgfa(iset), npgfb(jset), npgfc(kset), &
1731 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1734 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1735 offset_a_start, offset_b_start, offset_c_start, &
1736 0, 0, first_set - 1, &
1737 sphi_a, sphi_b, sphi_c, &
1739 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1743force_b=force_b(jkind)%forces(:, atom_b), &
1745 do_symmetric=do_symmetric, &
1746 on_diagonal=iatom .EQ. jatom, &
1750 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1752 IF (.NOT.
PRESENT(force_a) .AND. &
1753 PRESENT(force_b) .AND. &
1754 PRESENT(force_c) .AND. &
1755 .NOT.
PRESENT(pabc) .AND. &
1756 .NOT.
PRESENT(mat_dabc) .AND. &
1757 .NOT.
PRESENT(mat_adbc) .AND. &
1758 .NOT.
PRESENT(mat_abdc))
THEN
1759 CALL integrate_set_3c( &
1760 param%par, potential_parameter, &
1761 la_min(iset), la_max(iset), &
1762 lb_min(jset), lb_max(jset), &
1763 lc_min(kset), lc_max(kset), &
1764 npgfa(iset), npgfb(jset), npgfc(kset), &
1765 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1768 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1769 offset_a_start, offset_b_start, offset_c_start, &
1770 0, 0, first_set - 1, &
1771 sphi_a, sphi_b, sphi_c, &
1773 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1777force_b=force_b(jkind)%forces(:, atom_b), &
1778force_c=force_c(kkind)%forces(:, atom_c), &
1779 do_symmetric=do_symmetric, &
1780 on_diagonal=iatom .EQ. jatom, &
1784 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1786 IF (.NOT.
PRESENT(force_a) .AND. &
1787 PRESENT(force_b) .AND. &
1788 PRESENT(force_c) .AND. &
1789 .NOT.
PRESENT(pabc) .AND. &
1790 .NOT.
PRESENT(mat_dabc) .AND. &
1791 .NOT.
PRESENT(mat_adbc) .AND. &
1792 PRESENT(mat_abdc))
THEN
1793 CALL integrate_set_3c( &
1794 param%par, potential_parameter, &
1795 la_min(iset), la_max(iset), &
1796 lb_min(jset), lb_max(jset), &
1797 lc_min(kset), lc_max(kset), &
1798 npgfa(iset), npgfb(jset), npgfc(kset), &
1799 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1802 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1803 offset_a_start, offset_b_start, offset_c_start, &
1804 0, 0, first_set - 1, &
1805 sphi_a, sphi_b, sphi_c, &
1807 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1811force_b=force_b(jkind)%forces(:, atom_b), &
1812force_c=force_c(kkind)%forces(:, atom_c), &
1813 do_symmetric=do_symmetric, &
1814 on_diagonal=iatom .EQ. jatom, &
1818 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1820 IF (.NOT.
PRESENT(force_a) .AND. &
1821 PRESENT(force_b) .AND. &
1822 PRESENT(force_c) .AND. &
1823 .NOT.
PRESENT(pabc) .AND. &
1824 .NOT.
PRESENT(mat_dabc) .AND. &
1825 PRESENT(mat_adbc) .AND. &
1826 .NOT.
PRESENT(mat_abdc))
THEN
1827 CALL integrate_set_3c( &
1828 param%par, potential_parameter, &
1829 la_min(iset), la_max(iset), &
1830 lb_min(jset), lb_max(jset), &
1831 lc_min(kset), lc_max(kset), &
1832 npgfa(iset), npgfb(jset), npgfc(kset), &
1833 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1836 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1837 offset_a_start, offset_b_start, offset_c_start, &
1838 0, 0, first_set - 1, &
1839 sphi_a, sphi_b, sphi_c, &
1841 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1845force_b=force_b(jkind)%forces(:, atom_b), &
1846force_c=force_c(kkind)%forces(:, atom_c), &
1847 do_symmetric=do_symmetric, &
1848 on_diagonal=iatom .EQ. jatom, &
1852 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1854 IF (.NOT.
PRESENT(force_a) .AND. &
1855 PRESENT(force_b) .AND. &
1856 PRESENT(force_c) .AND. &
1857 .NOT.
PRESENT(pabc) .AND. &
1858 .NOT.
PRESENT(mat_dabc) .AND. &
1859 PRESENT(mat_adbc) .AND. &
1860 PRESENT(mat_abdc))
THEN
1861 CALL integrate_set_3c( &
1862 param%par, potential_parameter, &
1863 la_min(iset), la_max(iset), &
1864 lb_min(jset), lb_max(jset), &
1865 lc_min(kset), lc_max(kset), &
1866 npgfa(iset), npgfb(jset), npgfc(kset), &
1867 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1870 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1871 offset_a_start, offset_b_start, offset_c_start, &
1872 0, 0, first_set - 1, &
1873 sphi_a, sphi_b, sphi_c, &
1875 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1879force_b=force_b(jkind)%forces(:, atom_b), &
1880force_c=force_c(kkind)%forces(:, atom_c), &
1881 do_symmetric=do_symmetric, &
1882 on_diagonal=iatom .EQ. jatom, &
1886 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1888 IF (.NOT.
PRESENT(force_a) .AND. &
1889 PRESENT(force_b) .AND. &
1890 PRESENT(force_c) .AND. &
1891 .NOT.
PRESENT(pabc) .AND. &
1892 PRESENT(mat_dabc) .AND. &
1893 .NOT.
PRESENT(mat_adbc) .AND. &
1894 .NOT.
PRESENT(mat_abdc))
THEN
1895 CALL integrate_set_3c( &
1896 param%par, potential_parameter, &
1897 la_min(iset), la_max(iset), &
1898 lb_min(jset), lb_max(jset), &
1899 lc_min(kset), lc_max(kset), &
1900 npgfa(iset), npgfb(jset), npgfc(kset), &
1901 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1904 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1905 offset_a_start, offset_b_start, offset_c_start, &
1906 0, 0, first_set - 1, &
1907 sphi_a, sphi_b, sphi_c, &
1909 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1913force_b=force_b(jkind)%forces(:, atom_b), &
1914force_c=force_c(kkind)%forces(:, atom_c), &
1915 do_symmetric=do_symmetric, &
1916 on_diagonal=iatom .EQ. jatom, &
1920 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1922 IF (.NOT.
PRESENT(force_a) .AND. &
1923 PRESENT(force_b) .AND. &
1924 PRESENT(force_c) .AND. &
1925 .NOT.
PRESENT(pabc) .AND. &
1926 PRESENT(mat_dabc) .AND. &
1927 .NOT.
PRESENT(mat_adbc) .AND. &
1928 PRESENT(mat_abdc))
THEN
1929 CALL integrate_set_3c( &
1930 param%par, potential_parameter, &
1931 la_min(iset), la_max(iset), &
1932 lb_min(jset), lb_max(jset), &
1933 lc_min(kset), lc_max(kset), &
1934 npgfa(iset), npgfb(jset), npgfc(kset), &
1935 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1938 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1939 offset_a_start, offset_b_start, offset_c_start, &
1940 0, 0, first_set - 1, &
1941 sphi_a, sphi_b, sphi_c, &
1943 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1947force_b=force_b(jkind)%forces(:, atom_b), &
1948force_c=force_c(kkind)%forces(:, atom_c), &
1949 do_symmetric=do_symmetric, &
1950 on_diagonal=iatom .EQ. jatom, &
1954 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1956 IF (.NOT.
PRESENT(force_a) .AND. &
1957 PRESENT(force_b) .AND. &
1958 PRESENT(force_c) .AND. &
1959 .NOT.
PRESENT(pabc) .AND. &
1960 PRESENT(mat_dabc) .AND. &
1961 PRESENT(mat_adbc) .AND. &
1962 .NOT.
PRESENT(mat_abdc))
THEN
1963 CALL integrate_set_3c( &
1964 param%par, potential_parameter, &
1965 la_min(iset), la_max(iset), &
1966 lb_min(jset), lb_max(jset), &
1967 lc_min(kset), lc_max(kset), &
1968 npgfa(iset), npgfb(jset), npgfc(kset), &
1969 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
1972 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
1973 offset_a_start, offset_b_start, offset_c_start, &
1974 0, 0, first_set - 1, &
1975 sphi_a, sphi_b, sphi_c, &
1977 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
1981force_b=force_b(jkind)%forces(:, atom_b), &
1982force_c=force_c(kkind)%forces(:, atom_c), &
1983 do_symmetric=do_symmetric, &
1984 on_diagonal=iatom .EQ. jatom, &
1988 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
1990 IF (.NOT.
PRESENT(force_a) .AND. &
1991 PRESENT(force_b) .AND. &
1992 PRESENT(force_c) .AND. &
1993 .NOT.
PRESENT(pabc) .AND. &
1994 PRESENT(mat_dabc) .AND. &
1995 PRESENT(mat_adbc) .AND. &
1996 PRESENT(mat_abdc))
THEN
1997 CALL integrate_set_3c( &
1998 param%par, potential_parameter, &
1999 la_min(iset), la_max(iset), &
2000 lb_min(jset), lb_max(jset), &
2001 lc_min(kset), lc_max(kset), &
2002 npgfa(iset), npgfb(jset), npgfc(kset), &
2003 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2006 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2007 offset_a_start, offset_b_start, offset_c_start, &
2008 0, 0, first_set - 1, &
2009 sphi_a, sphi_b, sphi_c, &
2011 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2015force_b=force_b(jkind)%forces(:, atom_b), &
2016force_c=force_c(kkind)%forces(:, atom_c), &
2017 do_symmetric=do_symmetric, &
2018 on_diagonal=iatom .EQ. jatom, &
2022 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2024 IF (
PRESENT(force_a) .AND. &
2025 .NOT.
PRESENT(force_b) .AND. &
2026 .NOT.
PRESENT(force_c) .AND. &
2027 .NOT.
PRESENT(pabc) .AND. &
2028 .NOT.
PRESENT(mat_dabc) .AND. &
2029 .NOT.
PRESENT(mat_adbc) .AND. &
2030 .NOT.
PRESENT(mat_abdc))
THEN
2031 CALL integrate_set_3c( &
2032 param%par, potential_parameter, &
2033 la_min(iset), la_max(iset), &
2034 lb_min(jset), lb_max(jset), &
2035 lc_min(kset), lc_max(kset), &
2036 npgfa(iset), npgfb(jset), npgfc(kset), &
2037 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2040 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2041 offset_a_start, offset_b_start, offset_c_start, &
2042 0, 0, first_set - 1, &
2043 sphi_a, sphi_b, sphi_c, &
2045 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2048force_a=force_a(ikind)%forces(:, atom_a), &
2051 do_symmetric=do_symmetric, &
2052 on_diagonal=iatom .EQ. jatom, &
2056 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2058 IF (
PRESENT(force_a) .AND. &
2059 .NOT.
PRESENT(force_b) .AND. &
2060 .NOT.
PRESENT(force_c) .AND. &
2061 .NOT.
PRESENT(pabc) .AND. &
2062 .NOT.
PRESENT(mat_dabc) .AND. &
2063 .NOT.
PRESENT(mat_adbc) .AND. &
2064 PRESENT(mat_abdc))
THEN
2065 CALL integrate_set_3c( &
2066 param%par, potential_parameter, &
2067 la_min(iset), la_max(iset), &
2068 lb_min(jset), lb_max(jset), &
2069 lc_min(kset), lc_max(kset), &
2070 npgfa(iset), npgfb(jset), npgfc(kset), &
2071 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2074 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2075 offset_a_start, offset_b_start, offset_c_start, &
2076 0, 0, first_set - 1, &
2077 sphi_a, sphi_b, sphi_c, &
2079 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2082force_a=force_a(ikind)%forces(:, atom_a), &
2085 do_symmetric=do_symmetric, &
2086 on_diagonal=iatom .EQ. jatom, &
2090 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2092 IF (
PRESENT(force_a) .AND. &
2093 .NOT.
PRESENT(force_b) .AND. &
2094 .NOT.
PRESENT(force_c) .AND. &
2095 .NOT.
PRESENT(pabc) .AND. &
2096 .NOT.
PRESENT(mat_dabc) .AND. &
2097 PRESENT(mat_adbc) .AND. &
2098 .NOT.
PRESENT(mat_abdc))
THEN
2099 CALL integrate_set_3c( &
2100 param%par, potential_parameter, &
2101 la_min(iset), la_max(iset), &
2102 lb_min(jset), lb_max(jset), &
2103 lc_min(kset), lc_max(kset), &
2104 npgfa(iset), npgfb(jset), npgfc(kset), &
2105 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2108 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2109 offset_a_start, offset_b_start, offset_c_start, &
2110 0, 0, first_set - 1, &
2111 sphi_a, sphi_b, sphi_c, &
2113 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2116force_a=force_a(ikind)%forces(:, atom_a), &
2119 do_symmetric=do_symmetric, &
2120 on_diagonal=iatom .EQ. jatom, &
2124 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2126 IF (
PRESENT(force_a) .AND. &
2127 .NOT.
PRESENT(force_b) .AND. &
2128 .NOT.
PRESENT(force_c) .AND. &
2129 .NOT.
PRESENT(pabc) .AND. &
2130 .NOT.
PRESENT(mat_dabc) .AND. &
2131 PRESENT(mat_adbc) .AND. &
2132 PRESENT(mat_abdc))
THEN
2133 CALL integrate_set_3c( &
2134 param%par, potential_parameter, &
2135 la_min(iset), la_max(iset), &
2136 lb_min(jset), lb_max(jset), &
2137 lc_min(kset), lc_max(kset), &
2138 npgfa(iset), npgfb(jset), npgfc(kset), &
2139 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2142 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2143 offset_a_start, offset_b_start, offset_c_start, &
2144 0, 0, first_set - 1, &
2145 sphi_a, sphi_b, sphi_c, &
2147 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2150force_a=force_a(ikind)%forces(:, atom_a), &
2153 do_symmetric=do_symmetric, &
2154 on_diagonal=iatom .EQ. jatom, &
2158 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2160 IF (
PRESENT(force_a) .AND. &
2161 .NOT.
PRESENT(force_b) .AND. &
2162 .NOT.
PRESENT(force_c) .AND. &
2163 .NOT.
PRESENT(pabc) .AND. &
2164 PRESENT(mat_dabc) .AND. &
2165 .NOT.
PRESENT(mat_adbc) .AND. &
2166 .NOT.
PRESENT(mat_abdc))
THEN
2167 CALL integrate_set_3c( &
2168 param%par, potential_parameter, &
2169 la_min(iset), la_max(iset), &
2170 lb_min(jset), lb_max(jset), &
2171 lc_min(kset), lc_max(kset), &
2172 npgfa(iset), npgfb(jset), npgfc(kset), &
2173 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2176 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2177 offset_a_start, offset_b_start, offset_c_start, &
2178 0, 0, first_set - 1, &
2179 sphi_a, sphi_b, sphi_c, &
2181 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2184force_a=force_a(ikind)%forces(:, atom_a), &
2187 do_symmetric=do_symmetric, &
2188 on_diagonal=iatom .EQ. jatom, &
2192 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2194 IF (
PRESENT(force_a) .AND. &
2195 .NOT.
PRESENT(force_b) .AND. &
2196 .NOT.
PRESENT(force_c) .AND. &
2197 .NOT.
PRESENT(pabc) .AND. &
2198 PRESENT(mat_dabc) .AND. &
2199 .NOT.
PRESENT(mat_adbc) .AND. &
2200 PRESENT(mat_abdc))
THEN
2201 CALL integrate_set_3c( &
2202 param%par, potential_parameter, &
2203 la_min(iset), la_max(iset), &
2204 lb_min(jset), lb_max(jset), &
2205 lc_min(kset), lc_max(kset), &
2206 npgfa(iset), npgfb(jset), npgfc(kset), &
2207 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2210 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2211 offset_a_start, offset_b_start, offset_c_start, &
2212 0, 0, first_set - 1, &
2213 sphi_a, sphi_b, sphi_c, &
2215 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2218force_a=force_a(ikind)%forces(:, atom_a), &
2221 do_symmetric=do_symmetric, &
2222 on_diagonal=iatom .EQ. jatom, &
2226 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2228 IF (
PRESENT(force_a) .AND. &
2229 .NOT.
PRESENT(force_b) .AND. &
2230 .NOT.
PRESENT(force_c) .AND. &
2231 .NOT.
PRESENT(pabc) .AND. &
2232 PRESENT(mat_dabc) .AND. &
2233 PRESENT(mat_adbc) .AND. &
2234 .NOT.
PRESENT(mat_abdc))
THEN
2235 CALL integrate_set_3c( &
2236 param%par, potential_parameter, &
2237 la_min(iset), la_max(iset), &
2238 lb_min(jset), lb_max(jset), &
2239 lc_min(kset), lc_max(kset), &
2240 npgfa(iset), npgfb(jset), npgfc(kset), &
2241 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2244 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2245 offset_a_start, offset_b_start, offset_c_start, &
2246 0, 0, first_set - 1, &
2247 sphi_a, sphi_b, sphi_c, &
2249 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2252force_a=force_a(ikind)%forces(:, atom_a), &
2255 do_symmetric=do_symmetric, &
2256 on_diagonal=iatom .EQ. jatom, &
2260 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2262 IF (
PRESENT(force_a) .AND. &
2263 .NOT.
PRESENT(force_b) .AND. &
2264 .NOT.
PRESENT(force_c) .AND. &
2265 .NOT.
PRESENT(pabc) .AND. &
2266 PRESENT(mat_dabc) .AND. &
2267 PRESENT(mat_adbc) .AND. &
2268 PRESENT(mat_abdc))
THEN
2269 CALL integrate_set_3c( &
2270 param%par, potential_parameter, &
2271 la_min(iset), la_max(iset), &
2272 lb_min(jset), lb_max(jset), &
2273 lc_min(kset), lc_max(kset), &
2274 npgfa(iset), npgfb(jset), npgfc(kset), &
2275 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2278 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2279 offset_a_start, offset_b_start, offset_c_start, &
2280 0, 0, first_set - 1, &
2281 sphi_a, sphi_b, sphi_c, &
2283 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2286force_a=force_a(ikind)%forces(:, atom_a), &
2289 do_symmetric=do_symmetric, &
2290 on_diagonal=iatom .EQ. jatom, &
2294 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2296 IF (
PRESENT(force_a) .AND. &
2297 .NOT.
PRESENT(force_b) .AND. &
2298 PRESENT(force_c) .AND. &
2299 .NOT.
PRESENT(pabc) .AND. &
2300 .NOT.
PRESENT(mat_dabc) .AND. &
2301 .NOT.
PRESENT(mat_adbc) .AND. &
2302 .NOT.
PRESENT(mat_abdc))
THEN
2303 CALL integrate_set_3c( &
2304 param%par, potential_parameter, &
2305 la_min(iset), la_max(iset), &
2306 lb_min(jset), lb_max(jset), &
2307 lc_min(kset), lc_max(kset), &
2308 npgfa(iset), npgfb(jset), npgfc(kset), &
2309 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2312 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2313 offset_a_start, offset_b_start, offset_c_start, &
2314 0, 0, first_set - 1, &
2315 sphi_a, sphi_b, sphi_c, &
2317 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2320force_a=force_a(ikind)%forces(:, atom_a), &
2322force_c=force_c(kkind)%forces(:, atom_c), &
2323 do_symmetric=do_symmetric, &
2324 on_diagonal=iatom .EQ. jatom, &
2328 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2330 IF (
PRESENT(force_a) .AND. &
2331 .NOT.
PRESENT(force_b) .AND. &
2332 PRESENT(force_c) .AND. &
2333 .NOT.
PRESENT(pabc) .AND. &
2334 .NOT.
PRESENT(mat_dabc) .AND. &
2335 .NOT.
PRESENT(mat_adbc) .AND. &
2336 PRESENT(mat_abdc))
THEN
2337 CALL integrate_set_3c( &
2338 param%par, potential_parameter, &
2339 la_min(iset), la_max(iset), &
2340 lb_min(jset), lb_max(jset), &
2341 lc_min(kset), lc_max(kset), &
2342 npgfa(iset), npgfb(jset), npgfc(kset), &
2343 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2346 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2347 offset_a_start, offset_b_start, offset_c_start, &
2348 0, 0, first_set - 1, &
2349 sphi_a, sphi_b, sphi_c, &
2351 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2354force_a=force_a(ikind)%forces(:, atom_a), &
2356force_c=force_c(kkind)%forces(:, atom_c), &
2357 do_symmetric=do_symmetric, &
2358 on_diagonal=iatom .EQ. jatom, &
2362 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2364 IF (
PRESENT(force_a) .AND. &
2365 .NOT.
PRESENT(force_b) .AND. &
2366 PRESENT(force_c) .AND. &
2367 .NOT.
PRESENT(pabc) .AND. &
2368 .NOT.
PRESENT(mat_dabc) .AND. &
2369 PRESENT(mat_adbc) .AND. &
2370 .NOT.
PRESENT(mat_abdc))
THEN
2371 CALL integrate_set_3c( &
2372 param%par, potential_parameter, &
2373 la_min(iset), la_max(iset), &
2374 lb_min(jset), lb_max(jset), &
2375 lc_min(kset), lc_max(kset), &
2376 npgfa(iset), npgfb(jset), npgfc(kset), &
2377 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2380 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2381 offset_a_start, offset_b_start, offset_c_start, &
2382 0, 0, first_set - 1, &
2383 sphi_a, sphi_b, sphi_c, &
2385 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2388force_a=force_a(ikind)%forces(:, atom_a), &
2390force_c=force_c(kkind)%forces(:, atom_c), &
2391 do_symmetric=do_symmetric, &
2392 on_diagonal=iatom .EQ. jatom, &
2396 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2398 IF (
PRESENT(force_a) .AND. &
2399 .NOT.
PRESENT(force_b) .AND. &
2400 PRESENT(force_c) .AND. &
2401 .NOT.
PRESENT(pabc) .AND. &
2402 .NOT.
PRESENT(mat_dabc) .AND. &
2403 PRESENT(mat_adbc) .AND. &
2404 PRESENT(mat_abdc))
THEN
2405 CALL integrate_set_3c( &
2406 param%par, potential_parameter, &
2407 la_min(iset), la_max(iset), &
2408 lb_min(jset), lb_max(jset), &
2409 lc_min(kset), lc_max(kset), &
2410 npgfa(iset), npgfb(jset), npgfc(kset), &
2411 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2414 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2415 offset_a_start, offset_b_start, offset_c_start, &
2416 0, 0, first_set - 1, &
2417 sphi_a, sphi_b, sphi_c, &
2419 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2422force_a=force_a(ikind)%forces(:, atom_a), &
2424force_c=force_c(kkind)%forces(:, atom_c), &
2425 do_symmetric=do_symmetric, &
2426 on_diagonal=iatom .EQ. jatom, &
2430 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2432 IF (
PRESENT(force_a) .AND. &
2433 .NOT.
PRESENT(force_b) .AND. &
2434 PRESENT(force_c) .AND. &
2435 .NOT.
PRESENT(pabc) .AND. &
2436 PRESENT(mat_dabc) .AND. &
2437 .NOT.
PRESENT(mat_adbc) .AND. &
2438 .NOT.
PRESENT(mat_abdc))
THEN
2439 CALL integrate_set_3c( &
2440 param%par, potential_parameter, &
2441 la_min(iset), la_max(iset), &
2442 lb_min(jset), lb_max(jset), &
2443 lc_min(kset), lc_max(kset), &
2444 npgfa(iset), npgfb(jset), npgfc(kset), &
2445 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2448 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2449 offset_a_start, offset_b_start, offset_c_start, &
2450 0, 0, first_set - 1, &
2451 sphi_a, sphi_b, sphi_c, &
2453 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2456force_a=force_a(ikind)%forces(:, atom_a), &
2458force_c=force_c(kkind)%forces(:, atom_c), &
2459 do_symmetric=do_symmetric, &
2460 on_diagonal=iatom .EQ. jatom, &
2464 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2466 IF (
PRESENT(force_a) .AND. &
2467 .NOT.
PRESENT(force_b) .AND. &
2468 PRESENT(force_c) .AND. &
2469 .NOT.
PRESENT(pabc) .AND. &
2470 PRESENT(mat_dabc) .AND. &
2471 .NOT.
PRESENT(mat_adbc) .AND. &
2472 PRESENT(mat_abdc))
THEN
2473 CALL integrate_set_3c( &
2474 param%par, potential_parameter, &
2475 la_min(iset), la_max(iset), &
2476 lb_min(jset), lb_max(jset), &
2477 lc_min(kset), lc_max(kset), &
2478 npgfa(iset), npgfb(jset), npgfc(kset), &
2479 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2482 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2483 offset_a_start, offset_b_start, offset_c_start, &
2484 0, 0, first_set - 1, &
2485 sphi_a, sphi_b, sphi_c, &
2487 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2490force_a=force_a(ikind)%forces(:, atom_a), &
2492force_c=force_c(kkind)%forces(:, atom_c), &
2493 do_symmetric=do_symmetric, &
2494 on_diagonal=iatom .EQ. jatom, &
2498 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2500 IF (
PRESENT(force_a) .AND. &
2501 .NOT.
PRESENT(force_b) .AND. &
2502 PRESENT(force_c) .AND. &
2503 .NOT.
PRESENT(pabc) .AND. &
2504 PRESENT(mat_dabc) .AND. &
2505 PRESENT(mat_adbc) .AND. &
2506 .NOT.
PRESENT(mat_abdc))
THEN
2507 CALL integrate_set_3c( &
2508 param%par, potential_parameter, &
2509 la_min(iset), la_max(iset), &
2510 lb_min(jset), lb_max(jset), &
2511 lc_min(kset), lc_max(kset), &
2512 npgfa(iset), npgfb(jset), npgfc(kset), &
2513 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2516 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2517 offset_a_start, offset_b_start, offset_c_start, &
2518 0, 0, first_set - 1, &
2519 sphi_a, sphi_b, sphi_c, &
2521 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2524force_a=force_a(ikind)%forces(:, atom_a), &
2526force_c=force_c(kkind)%forces(:, atom_c), &
2527 do_symmetric=do_symmetric, &
2528 on_diagonal=iatom .EQ. jatom, &
2532 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2534 IF (
PRESENT(force_a) .AND. &
2535 .NOT.
PRESENT(force_b) .AND. &
2536 PRESENT(force_c) .AND. &
2537 .NOT.
PRESENT(pabc) .AND. &
2538 PRESENT(mat_dabc) .AND. &
2539 PRESENT(mat_adbc) .AND. &
2540 PRESENT(mat_abdc))
THEN
2541 CALL integrate_set_3c( &
2542 param%par, potential_parameter, &
2543 la_min(iset), la_max(iset), &
2544 lb_min(jset), lb_max(jset), &
2545 lc_min(kset), lc_max(kset), &
2546 npgfa(iset), npgfb(jset), npgfc(kset), &
2547 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2550 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2551 offset_a_start, offset_b_start, offset_c_start, &
2552 0, 0, first_set - 1, &
2553 sphi_a, sphi_b, sphi_c, &
2555 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2558force_a=force_a(ikind)%forces(:, atom_a), &
2560force_c=force_c(kkind)%forces(:, atom_c), &
2561 do_symmetric=do_symmetric, &
2562 on_diagonal=iatom .EQ. jatom, &
2566 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2568 IF (
PRESENT(force_a) .AND. &
2569 PRESENT(force_b) .AND. &
2570 .NOT.
PRESENT(force_c) .AND. &
2571 .NOT.
PRESENT(pabc) .AND. &
2572 .NOT.
PRESENT(mat_dabc) .AND. &
2573 .NOT.
PRESENT(mat_adbc) .AND. &
2574 .NOT.
PRESENT(mat_abdc))
THEN
2575 CALL integrate_set_3c( &
2576 param%par, potential_parameter, &
2577 la_min(iset), la_max(iset), &
2578 lb_min(jset), lb_max(jset), &
2579 lc_min(kset), lc_max(kset), &
2580 npgfa(iset), npgfb(jset), npgfc(kset), &
2581 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2584 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2585 offset_a_start, offset_b_start, offset_c_start, &
2586 0, 0, first_set - 1, &
2587 sphi_a, sphi_b, sphi_c, &
2589 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2592force_a=force_a(ikind)%forces(:, atom_a), &
2593force_b=force_b(jkind)%forces(:, atom_b), &
2595 do_symmetric=do_symmetric, &
2596 on_diagonal=iatom .EQ. jatom, &
2600 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2602 IF (
PRESENT(force_a) .AND. &
2603 PRESENT(force_b) .AND. &
2604 .NOT.
PRESENT(force_c) .AND. &
2605 .NOT.
PRESENT(pabc) .AND. &
2606 .NOT.
PRESENT(mat_dabc) .AND. &
2607 .NOT.
PRESENT(mat_adbc) .AND. &
2608 PRESENT(mat_abdc))
THEN
2609 CALL integrate_set_3c( &
2610 param%par, potential_parameter, &
2611 la_min(iset), la_max(iset), &
2612 lb_min(jset), lb_max(jset), &
2613 lc_min(kset), lc_max(kset), &
2614 npgfa(iset), npgfb(jset), npgfc(kset), &
2615 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2618 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2619 offset_a_start, offset_b_start, offset_c_start, &
2620 0, 0, first_set - 1, &
2621 sphi_a, sphi_b, sphi_c, &
2623 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2626force_a=force_a(ikind)%forces(:, atom_a), &
2627force_b=force_b(jkind)%forces(:, atom_b), &
2629 do_symmetric=do_symmetric, &
2630 on_diagonal=iatom .EQ. jatom, &
2634 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2636 IF (
PRESENT(force_a) .AND. &
2637 PRESENT(force_b) .AND. &
2638 .NOT.
PRESENT(force_c) .AND. &
2639 .NOT.
PRESENT(pabc) .AND. &
2640 .NOT.
PRESENT(mat_dabc) .AND. &
2641 PRESENT(mat_adbc) .AND. &
2642 .NOT.
PRESENT(mat_abdc))
THEN
2643 CALL integrate_set_3c( &
2644 param%par, potential_parameter, &
2645 la_min(iset), la_max(iset), &
2646 lb_min(jset), lb_max(jset), &
2647 lc_min(kset), lc_max(kset), &
2648 npgfa(iset), npgfb(jset), npgfc(kset), &
2649 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2652 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2653 offset_a_start, offset_b_start, offset_c_start, &
2654 0, 0, first_set - 1, &
2655 sphi_a, sphi_b, sphi_c, &
2657 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2660force_a=force_a(ikind)%forces(:, atom_a), &
2661force_b=force_b(jkind)%forces(:, atom_b), &
2663 do_symmetric=do_symmetric, &
2664 on_diagonal=iatom .EQ. jatom, &
2668 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2670 IF (
PRESENT(force_a) .AND. &
2671 PRESENT(force_b) .AND. &
2672 .NOT.
PRESENT(force_c) .AND. &
2673 .NOT.
PRESENT(pabc) .AND. &
2674 .NOT.
PRESENT(mat_dabc) .AND. &
2675 PRESENT(mat_adbc) .AND. &
2676 PRESENT(mat_abdc))
THEN
2677 CALL integrate_set_3c( &
2678 param%par, potential_parameter, &
2679 la_min(iset), la_max(iset), &
2680 lb_min(jset), lb_max(jset), &
2681 lc_min(kset), lc_max(kset), &
2682 npgfa(iset), npgfb(jset), npgfc(kset), &
2683 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2686 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2687 offset_a_start, offset_b_start, offset_c_start, &
2688 0, 0, first_set - 1, &
2689 sphi_a, sphi_b, sphi_c, &
2691 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2694force_a=force_a(ikind)%forces(:, atom_a), &
2695force_b=force_b(jkind)%forces(:, atom_b), &
2697 do_symmetric=do_symmetric, &
2698 on_diagonal=iatom .EQ. jatom, &
2702 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2704 IF (
PRESENT(force_a) .AND. &
2705 PRESENT(force_b) .AND. &
2706 .NOT.
PRESENT(force_c) .AND. &
2707 .NOT.
PRESENT(pabc) .AND. &
2708 PRESENT(mat_dabc) .AND. &
2709 .NOT.
PRESENT(mat_adbc) .AND. &
2710 .NOT.
PRESENT(mat_abdc))
THEN
2711 CALL integrate_set_3c( &
2712 param%par, potential_parameter, &
2713 la_min(iset), la_max(iset), &
2714 lb_min(jset), lb_max(jset), &
2715 lc_min(kset), lc_max(kset), &
2716 npgfa(iset), npgfb(jset), npgfc(kset), &
2717 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2720 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2721 offset_a_start, offset_b_start, offset_c_start, &
2722 0, 0, first_set - 1, &
2723 sphi_a, sphi_b, sphi_c, &
2725 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2728force_a=force_a(ikind)%forces(:, atom_a), &
2729force_b=force_b(jkind)%forces(:, atom_b), &
2731 do_symmetric=do_symmetric, &
2732 on_diagonal=iatom .EQ. jatom, &
2736 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2738 IF (
PRESENT(force_a) .AND. &
2739 PRESENT(force_b) .AND. &
2740 .NOT.
PRESENT(force_c) .AND. &
2741 .NOT.
PRESENT(pabc) .AND. &
2742 PRESENT(mat_dabc) .AND. &
2743 .NOT.
PRESENT(mat_adbc) .AND. &
2744 PRESENT(mat_abdc))
THEN
2745 CALL integrate_set_3c( &
2746 param%par, potential_parameter, &
2747 la_min(iset), la_max(iset), &
2748 lb_min(jset), lb_max(jset), &
2749 lc_min(kset), lc_max(kset), &
2750 npgfa(iset), npgfb(jset), npgfc(kset), &
2751 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2754 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2755 offset_a_start, offset_b_start, offset_c_start, &
2756 0, 0, first_set - 1, &
2757 sphi_a, sphi_b, sphi_c, &
2759 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2762force_a=force_a(ikind)%forces(:, atom_a), &
2763force_b=force_b(jkind)%forces(:, atom_b), &
2765 do_symmetric=do_symmetric, &
2766 on_diagonal=iatom .EQ. jatom, &
2770 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2772 IF (
PRESENT(force_a) .AND. &
2773 PRESENT(force_b) .AND. &
2774 .NOT.
PRESENT(force_c) .AND. &
2775 .NOT.
PRESENT(pabc) .AND. &
2776 PRESENT(mat_dabc) .AND. &
2777 PRESENT(mat_adbc) .AND. &
2778 .NOT.
PRESENT(mat_abdc))
THEN
2779 CALL integrate_set_3c( &
2780 param%par, potential_parameter, &
2781 la_min(iset), la_max(iset), &
2782 lb_min(jset), lb_max(jset), &
2783 lc_min(kset), lc_max(kset), &
2784 npgfa(iset), npgfb(jset), npgfc(kset), &
2785 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2788 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2789 offset_a_start, offset_b_start, offset_c_start, &
2790 0, 0, first_set - 1, &
2791 sphi_a, sphi_b, sphi_c, &
2793 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2796force_a=force_a(ikind)%forces(:, atom_a), &
2797force_b=force_b(jkind)%forces(:, atom_b), &
2799 do_symmetric=do_symmetric, &
2800 on_diagonal=iatom .EQ. jatom, &
2804 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2806 IF (
PRESENT(force_a) .AND. &
2807 PRESENT(force_b) .AND. &
2808 .NOT.
PRESENT(force_c) .AND. &
2809 .NOT.
PRESENT(pabc) .AND. &
2810 PRESENT(mat_dabc) .AND. &
2811 PRESENT(mat_adbc) .AND. &
2812 PRESENT(mat_abdc))
THEN
2813 CALL integrate_set_3c( &
2814 param%par, potential_parameter, &
2815 la_min(iset), la_max(iset), &
2816 lb_min(jset), lb_max(jset), &
2817 lc_min(kset), lc_max(kset), &
2818 npgfa(iset), npgfb(jset), npgfc(kset), &
2819 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2822 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2823 offset_a_start, offset_b_start, offset_c_start, &
2824 0, 0, first_set - 1, &
2825 sphi_a, sphi_b, sphi_c, &
2827 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2830force_a=force_a(ikind)%forces(:, atom_a), &
2831force_b=force_b(jkind)%forces(:, atom_b), &
2833 do_symmetric=do_symmetric, &
2834 on_diagonal=iatom .EQ. jatom, &
2838 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2840 IF (
PRESENT(force_a) .AND. &
2841 PRESENT(force_b) .AND. &
2842 PRESENT(force_c) .AND. &
2843 .NOT.
PRESENT(pabc) .AND. &
2844 .NOT.
PRESENT(mat_dabc) .AND. &
2845 .NOT.
PRESENT(mat_adbc) .AND. &
2846 .NOT.
PRESENT(mat_abdc))
THEN
2847 CALL integrate_set_3c( &
2848 param%par, potential_parameter, &
2849 la_min(iset), la_max(iset), &
2850 lb_min(jset), lb_max(jset), &
2851 lc_min(kset), lc_max(kset), &
2852 npgfa(iset), npgfb(jset), npgfc(kset), &
2853 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2856 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2857 offset_a_start, offset_b_start, offset_c_start, &
2858 0, 0, first_set - 1, &
2859 sphi_a, sphi_b, sphi_c, &
2861 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2864force_a=force_a(ikind)%forces(:, atom_a), &
2865force_b=force_b(jkind)%forces(:, atom_b), &
2866force_c=force_c(kkind)%forces(:, atom_c), &
2867 do_symmetric=do_symmetric, &
2868 on_diagonal=iatom .EQ. jatom, &
2872 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2874 IF (
PRESENT(force_a) .AND. &
2875 PRESENT(force_b) .AND. &
2876 PRESENT(force_c) .AND. &
2877 .NOT.
PRESENT(pabc) .AND. &
2878 .NOT.
PRESENT(mat_dabc) .AND. &
2879 .NOT.
PRESENT(mat_adbc) .AND. &
2880 PRESENT(mat_abdc))
THEN
2881 CALL integrate_set_3c( &
2882 param%par, potential_parameter, &
2883 la_min(iset), la_max(iset), &
2884 lb_min(jset), lb_max(jset), &
2885 lc_min(kset), lc_max(kset), &
2886 npgfa(iset), npgfb(jset), npgfc(kset), &
2887 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2890 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2891 offset_a_start, offset_b_start, offset_c_start, &
2892 0, 0, first_set - 1, &
2893 sphi_a, sphi_b, sphi_c, &
2895 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2898force_a=force_a(ikind)%forces(:, atom_a), &
2899force_b=force_b(jkind)%forces(:, atom_b), &
2900force_c=force_c(kkind)%forces(:, atom_c), &
2901 do_symmetric=do_symmetric, &
2902 on_diagonal=iatom .EQ. jatom, &
2906 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2908 IF (
PRESENT(force_a) .AND. &
2909 PRESENT(force_b) .AND. &
2910 PRESENT(force_c) .AND. &
2911 .NOT.
PRESENT(pabc) .AND. &
2912 .NOT.
PRESENT(mat_dabc) .AND. &
2913 PRESENT(mat_adbc) .AND. &
2914 .NOT.
PRESENT(mat_abdc))
THEN
2915 CALL integrate_set_3c( &
2916 param%par, potential_parameter, &
2917 la_min(iset), la_max(iset), &
2918 lb_min(jset), lb_max(jset), &
2919 lc_min(kset), lc_max(kset), &
2920 npgfa(iset), npgfb(jset), npgfc(kset), &
2921 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2924 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2925 offset_a_start, offset_b_start, offset_c_start, &
2926 0, 0, first_set - 1, &
2927 sphi_a, sphi_b, sphi_c, &
2929 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2932force_a=force_a(ikind)%forces(:, atom_a), &
2933force_b=force_b(jkind)%forces(:, atom_b), &
2934force_c=force_c(kkind)%forces(:, atom_c), &
2935 do_symmetric=do_symmetric, &
2936 on_diagonal=iatom .EQ. jatom, &
2940 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2942 IF (
PRESENT(force_a) .AND. &
2943 PRESENT(force_b) .AND. &
2944 PRESENT(force_c) .AND. &
2945 .NOT.
PRESENT(pabc) .AND. &
2946 .NOT.
PRESENT(mat_dabc) .AND. &
2947 PRESENT(mat_adbc) .AND. &
2948 PRESENT(mat_abdc))
THEN
2949 CALL integrate_set_3c( &
2950 param%par, potential_parameter, &
2951 la_min(iset), la_max(iset), &
2952 lb_min(jset), lb_max(jset), &
2953 lc_min(kset), lc_max(kset), &
2954 npgfa(iset), npgfb(jset), npgfc(kset), &
2955 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2958 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2959 offset_a_start, offset_b_start, offset_c_start, &
2960 0, 0, first_set - 1, &
2961 sphi_a, sphi_b, sphi_c, &
2963 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
2966force_a=force_a(ikind)%forces(:, atom_a), &
2967force_b=force_b(jkind)%forces(:, atom_b), &
2968force_c=force_c(kkind)%forces(:, atom_c), &
2969 do_symmetric=do_symmetric, &
2970 on_diagonal=iatom .EQ. jatom, &
2974 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
2976 IF (
PRESENT(force_a) .AND. &
2977 PRESENT(force_b) .AND. &
2978 PRESENT(force_c) .AND. &
2979 .NOT.
PRESENT(pabc) .AND. &
2980 PRESENT(mat_dabc) .AND. &
2981 .NOT.
PRESENT(mat_adbc) .AND. &
2982 .NOT.
PRESENT(mat_abdc))
THEN
2983 CALL integrate_set_3c( &
2984 param%par, potential_parameter, &
2985 la_min(iset), la_max(iset), &
2986 lb_min(jset), lb_max(jset), &
2987 lc_min(kset), lc_max(kset), &
2988 npgfa(iset), npgfb(jset), npgfc(kset), &
2989 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
2992 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
2993 offset_a_start, offset_b_start, offset_c_start, &
2994 0, 0, first_set - 1, &
2995 sphi_a, sphi_b, sphi_c, &
2997 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3000force_a=force_a(ikind)%forces(:, atom_a), &
3001force_b=force_b(jkind)%forces(:, atom_b), &
3002force_c=force_c(kkind)%forces(:, atom_c), &
3003 do_symmetric=do_symmetric, &
3004 on_diagonal=iatom .EQ. jatom, &
3008 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3010 IF (
PRESENT(force_a) .AND. &
3011 PRESENT(force_b) .AND. &
3012 PRESENT(force_c) .AND. &
3013 .NOT.
PRESENT(pabc) .AND. &
3014 PRESENT(mat_dabc) .AND. &
3015 .NOT.
PRESENT(mat_adbc) .AND. &
3016 PRESENT(mat_abdc))
THEN
3017 CALL integrate_set_3c( &
3018 param%par, potential_parameter, &
3019 la_min(iset), la_max(iset), &
3020 lb_min(jset), lb_max(jset), &
3021 lc_min(kset), lc_max(kset), &
3022 npgfa(iset), npgfb(jset), npgfc(kset), &
3023 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3026 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3027 offset_a_start, offset_b_start, offset_c_start, &
3028 0, 0, first_set - 1, &
3029 sphi_a, sphi_b, sphi_c, &
3031 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3034force_a=force_a(ikind)%forces(:, atom_a), &
3035force_b=force_b(jkind)%forces(:, atom_b), &
3036force_c=force_c(kkind)%forces(:, atom_c), &
3037 do_symmetric=do_symmetric, &
3038 on_diagonal=iatom .EQ. jatom, &
3042 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3044 IF (
PRESENT(force_a) .AND. &
3045 PRESENT(force_b) .AND. &
3046 PRESENT(force_c) .AND. &
3047 .NOT.
PRESENT(pabc) .AND. &
3048 PRESENT(mat_dabc) .AND. &
3049 PRESENT(mat_adbc) .AND. &
3050 .NOT.
PRESENT(mat_abdc))
THEN
3051 CALL integrate_set_3c( &
3052 param%par, potential_parameter, &
3053 la_min(iset), la_max(iset), &
3054 lb_min(jset), lb_max(jset), &
3055 lc_min(kset), lc_max(kset), &
3056 npgfa(iset), npgfb(jset), npgfc(kset), &
3057 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3060 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3061 offset_a_start, offset_b_start, offset_c_start, &
3062 0, 0, first_set - 1, &
3063 sphi_a, sphi_b, sphi_c, &
3065 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3068force_a=force_a(ikind)%forces(:, atom_a), &
3069force_b=force_b(jkind)%forces(:, atom_b), &
3070force_c=force_c(kkind)%forces(:, atom_c), &
3071 do_symmetric=do_symmetric, &
3072 on_diagonal=iatom .EQ. jatom, &
3076 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3078 IF (
PRESENT(force_a) .AND. &
3079 PRESENT(force_b) .AND. &
3080 PRESENT(force_c) .AND. &
3081 .NOT.
PRESENT(pabc) .AND. &
3082 PRESENT(mat_dabc) .AND. &
3083 PRESENT(mat_adbc) .AND. &
3084 PRESENT(mat_abdc))
THEN
3085 CALL integrate_set_3c( &
3086 param%par, potential_parameter, &
3087 la_min(iset), la_max(iset), &
3088 lb_min(jset), lb_max(jset), &
3089 lc_min(kset), lc_max(kset), &
3090 npgfa(iset), npgfb(jset), npgfc(kset), &
3091 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3094 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3095 offset_a_start, offset_b_start, offset_c_start, &
3096 0, 0, first_set - 1, &
3097 sphi_a, sphi_b, sphi_c, &
3099 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3102force_a=force_a(ikind)%forces(:, atom_a), &
3103force_b=force_b(jkind)%forces(:, atom_b), &
3104force_c=force_c(kkind)%forces(:, atom_c), &
3105 do_symmetric=do_symmetric, &
3106 on_diagonal=iatom .EQ. jatom, &
3110 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3112 IF (.NOT.
PRESENT(force_a) .AND. &
3113 .NOT.
PRESENT(force_b) .AND. &
3114 .NOT.
PRESENT(force_c) .AND. &
3115 PRESENT(pabc) .AND. &
3116 .NOT.
PRESENT(mat_dabc) .AND. &
3117 .NOT.
PRESENT(mat_adbc) .AND. &
3118 .NOT.
PRESENT(mat_abdc))
THEN
3119 CALL integrate_set_3c( &
3120 param%par, potential_parameter, &
3121 la_min(iset), la_max(iset), &
3122 lb_min(jset), lb_max(jset), &
3123 lc_min(kset), lc_max(kset), &
3124 npgfa(iset), npgfb(jset), npgfc(kset), &
3125 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3128 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3129 offset_a_start, offset_b_start, offset_c_start, &
3130 0, 0, first_set - 1, &
3131 sphi_a, sphi_b, sphi_c, &
3133 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3139 do_symmetric=do_symmetric, &
3140 on_diagonal=iatom .EQ. jatom, &
3144 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3146 IF (.NOT.
PRESENT(force_a) .AND. &
3147 .NOT.
PRESENT(force_b) .AND. &
3148 .NOT.
PRESENT(force_c) .AND. &
3149 PRESENT(pabc) .AND. &
3150 .NOT.
PRESENT(mat_dabc) .AND. &
3151 .NOT.
PRESENT(mat_adbc) .AND. &
3152 PRESENT(mat_abdc))
THEN
3153 CALL integrate_set_3c( &
3154 param%par, potential_parameter, &
3155 la_min(iset), la_max(iset), &
3156 lb_min(jset), lb_max(jset), &
3157 lc_min(kset), lc_max(kset), &
3158 npgfa(iset), npgfb(jset), npgfc(kset), &
3159 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3162 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3163 offset_a_start, offset_b_start, offset_c_start, &
3164 0, 0, first_set - 1, &
3165 sphi_a, sphi_b, sphi_c, &
3167 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3173 do_symmetric=do_symmetric, &
3174 on_diagonal=iatom .EQ. jatom, &
3178 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3180 IF (.NOT.
PRESENT(force_a) .AND. &
3181 .NOT.
PRESENT(force_b) .AND. &
3182 .NOT.
PRESENT(force_c) .AND. &
3183 PRESENT(pabc) .AND. &
3184 .NOT.
PRESENT(mat_dabc) .AND. &
3185 PRESENT(mat_adbc) .AND. &
3186 .NOT.
PRESENT(mat_abdc))
THEN
3187 CALL integrate_set_3c( &
3188 param%par, potential_parameter, &
3189 la_min(iset), la_max(iset), &
3190 lb_min(jset), lb_max(jset), &
3191 lc_min(kset), lc_max(kset), &
3192 npgfa(iset), npgfb(jset), npgfc(kset), &
3193 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3196 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3197 offset_a_start, offset_b_start, offset_c_start, &
3198 0, 0, first_set - 1, &
3199 sphi_a, sphi_b, sphi_c, &
3201 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3207 do_symmetric=do_symmetric, &
3208 on_diagonal=iatom .EQ. jatom, &
3212 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3214 IF (.NOT.
PRESENT(force_a) .AND. &
3215 .NOT.
PRESENT(force_b) .AND. &
3216 .NOT.
PRESENT(force_c) .AND. &
3217 PRESENT(pabc) .AND. &
3218 .NOT.
PRESENT(mat_dabc) .AND. &
3219 PRESENT(mat_adbc) .AND. &
3220 PRESENT(mat_abdc))
THEN
3221 CALL integrate_set_3c( &
3222 param%par, potential_parameter, &
3223 la_min(iset), la_max(iset), &
3224 lb_min(jset), lb_max(jset), &
3225 lc_min(kset), lc_max(kset), &
3226 npgfa(iset), npgfb(jset), npgfc(kset), &
3227 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3230 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3231 offset_a_start, offset_b_start, offset_c_start, &
3232 0, 0, first_set - 1, &
3233 sphi_a, sphi_b, sphi_c, &
3235 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3241 do_symmetric=do_symmetric, &
3242 on_diagonal=iatom .EQ. jatom, &
3246 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3248 IF (.NOT.
PRESENT(force_a) .AND. &
3249 .NOT.
PRESENT(force_b) .AND. &
3250 .NOT.
PRESENT(force_c) .AND. &
3251 PRESENT(pabc) .AND. &
3252 PRESENT(mat_dabc) .AND. &
3253 .NOT.
PRESENT(mat_adbc) .AND. &
3254 .NOT.
PRESENT(mat_abdc))
THEN
3255 CALL integrate_set_3c( &
3256 param%par, potential_parameter, &
3257 la_min(iset), la_max(iset), &
3258 lb_min(jset), lb_max(jset), &
3259 lc_min(kset), lc_max(kset), &
3260 npgfa(iset), npgfb(jset), npgfc(kset), &
3261 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3264 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3265 offset_a_start, offset_b_start, offset_c_start, &
3266 0, 0, first_set - 1, &
3267 sphi_a, sphi_b, sphi_c, &
3269 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3275 do_symmetric=do_symmetric, &
3276 on_diagonal=iatom .EQ. jatom, &
3280 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3282 IF (.NOT.
PRESENT(force_a) .AND. &
3283 .NOT.
PRESENT(force_b) .AND. &
3284 .NOT.
PRESENT(force_c) .AND. &
3285 PRESENT(pabc) .AND. &
3286 PRESENT(mat_dabc) .AND. &
3287 .NOT.
PRESENT(mat_adbc) .AND. &
3288 PRESENT(mat_abdc))
THEN
3289 CALL integrate_set_3c( &
3290 param%par, potential_parameter, &
3291 la_min(iset), la_max(iset), &
3292 lb_min(jset), lb_max(jset), &
3293 lc_min(kset), lc_max(kset), &
3294 npgfa(iset), npgfb(jset), npgfc(kset), &
3295 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3298 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3299 offset_a_start, offset_b_start, offset_c_start, &
3300 0, 0, first_set - 1, &
3301 sphi_a, sphi_b, sphi_c, &
3303 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3309 do_symmetric=do_symmetric, &
3310 on_diagonal=iatom .EQ. jatom, &
3314 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3316 IF (.NOT.
PRESENT(force_a) .AND. &
3317 .NOT.
PRESENT(force_b) .AND. &
3318 .NOT.
PRESENT(force_c) .AND. &
3319 PRESENT(pabc) .AND. &
3320 PRESENT(mat_dabc) .AND. &
3321 PRESENT(mat_adbc) .AND. &
3322 .NOT.
PRESENT(mat_abdc))
THEN
3323 CALL integrate_set_3c( &
3324 param%par, potential_parameter, &
3325 la_min(iset), la_max(iset), &
3326 lb_min(jset), lb_max(jset), &
3327 lc_min(kset), lc_max(kset), &
3328 npgfa(iset), npgfb(jset), npgfc(kset), &
3329 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3332 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3333 offset_a_start, offset_b_start, offset_c_start, &
3334 0, 0, first_set - 1, &
3335 sphi_a, sphi_b, sphi_c, &
3337 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3343 do_symmetric=do_symmetric, &
3344 on_diagonal=iatom .EQ. jatom, &
3348 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3350 IF (.NOT.
PRESENT(force_a) .AND. &
3351 .NOT.
PRESENT(force_b) .AND. &
3352 .NOT.
PRESENT(force_c) .AND. &
3353 PRESENT(pabc) .AND. &
3354 PRESENT(mat_dabc) .AND. &
3355 PRESENT(mat_adbc) .AND. &
3356 PRESENT(mat_abdc))
THEN
3357 CALL integrate_set_3c( &
3358 param%par, potential_parameter, &
3359 la_min(iset), la_max(iset), &
3360 lb_min(jset), lb_max(jset), &
3361 lc_min(kset), lc_max(kset), &
3362 npgfa(iset), npgfb(jset), npgfc(kset), &
3363 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3366 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3367 offset_a_start, offset_b_start, offset_c_start, &
3368 0, 0, first_set - 1, &
3369 sphi_a, sphi_b, sphi_c, &
3371 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3377 do_symmetric=do_symmetric, &
3378 on_diagonal=iatom .EQ. jatom, &
3382 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3384 IF (.NOT.
PRESENT(force_a) .AND. &
3385 .NOT.
PRESENT(force_b) .AND. &
3386 PRESENT(force_c) .AND. &
3387 PRESENT(pabc) .AND. &
3388 .NOT.
PRESENT(mat_dabc) .AND. &
3389 .NOT.
PRESENT(mat_adbc) .AND. &
3390 .NOT.
PRESENT(mat_abdc))
THEN
3391 CALL integrate_set_3c( &
3392 param%par, potential_parameter, &
3393 la_min(iset), la_max(iset), &
3394 lb_min(jset), lb_max(jset), &
3395 lc_min(kset), lc_max(kset), &
3396 npgfa(iset), npgfb(jset), npgfc(kset), &
3397 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3400 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3401 offset_a_start, offset_b_start, offset_c_start, &
3402 0, 0, first_set - 1, &
3403 sphi_a, sphi_b, sphi_c, &
3405 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3410force_c=force_c(kkind)%forces(:, atom_c), &
3411 do_symmetric=do_symmetric, &
3412 on_diagonal=iatom .EQ. jatom, &
3416 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3418 IF (.NOT.
PRESENT(force_a) .AND. &
3419 .NOT.
PRESENT(force_b) .AND. &
3420 PRESENT(force_c) .AND. &
3421 PRESENT(pabc) .AND. &
3422 .NOT.
PRESENT(mat_dabc) .AND. &
3423 .NOT.
PRESENT(mat_adbc) .AND. &
3424 PRESENT(mat_abdc))
THEN
3425 CALL integrate_set_3c( &
3426 param%par, potential_parameter, &
3427 la_min(iset), la_max(iset), &
3428 lb_min(jset), lb_max(jset), &
3429 lc_min(kset), lc_max(kset), &
3430 npgfa(iset), npgfb(jset), npgfc(kset), &
3431 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3434 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3435 offset_a_start, offset_b_start, offset_c_start, &
3436 0, 0, first_set - 1, &
3437 sphi_a, sphi_b, sphi_c, &
3439 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3444force_c=force_c(kkind)%forces(:, atom_c), &
3445 do_symmetric=do_symmetric, &
3446 on_diagonal=iatom .EQ. jatom, &
3450 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3452 IF (.NOT.
PRESENT(force_a) .AND. &
3453 .NOT.
PRESENT(force_b) .AND. &
3454 PRESENT(force_c) .AND. &
3455 PRESENT(pabc) .AND. &
3456 .NOT.
PRESENT(mat_dabc) .AND. &
3457 PRESENT(mat_adbc) .AND. &
3458 .NOT.
PRESENT(mat_abdc))
THEN
3459 CALL integrate_set_3c( &
3460 param%par, potential_parameter, &
3461 la_min(iset), la_max(iset), &
3462 lb_min(jset), lb_max(jset), &
3463 lc_min(kset), lc_max(kset), &
3464 npgfa(iset), npgfb(jset), npgfc(kset), &
3465 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3468 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3469 offset_a_start, offset_b_start, offset_c_start, &
3470 0, 0, first_set - 1, &
3471 sphi_a, sphi_b, sphi_c, &
3473 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3478force_c=force_c(kkind)%forces(:, atom_c), &
3479 do_symmetric=do_symmetric, &
3480 on_diagonal=iatom .EQ. jatom, &
3484 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3486 IF (.NOT.
PRESENT(force_a) .AND. &
3487 .NOT.
PRESENT(force_b) .AND. &
3488 PRESENT(force_c) .AND. &
3489 PRESENT(pabc) .AND. &
3490 .NOT.
PRESENT(mat_dabc) .AND. &
3491 PRESENT(mat_adbc) .AND. &
3492 PRESENT(mat_abdc))
THEN
3493 CALL integrate_set_3c( &
3494 param%par, potential_parameter, &
3495 la_min(iset), la_max(iset), &
3496 lb_min(jset), lb_max(jset), &
3497 lc_min(kset), lc_max(kset), &
3498 npgfa(iset), npgfb(jset), npgfc(kset), &
3499 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3502 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3503 offset_a_start, offset_b_start, offset_c_start, &
3504 0, 0, first_set - 1, &
3505 sphi_a, sphi_b, sphi_c, &
3507 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3512force_c=force_c(kkind)%forces(:, atom_c), &
3513 do_symmetric=do_symmetric, &
3514 on_diagonal=iatom .EQ. jatom, &
3518 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3520 IF (.NOT.
PRESENT(force_a) .AND. &
3521 .NOT.
PRESENT(force_b) .AND. &
3522 PRESENT(force_c) .AND. &
3523 PRESENT(pabc) .AND. &
3524 PRESENT(mat_dabc) .AND. &
3525 .NOT.
PRESENT(mat_adbc) .AND. &
3526 .NOT.
PRESENT(mat_abdc))
THEN
3527 CALL integrate_set_3c( &
3528 param%par, potential_parameter, &
3529 la_min(iset), la_max(iset), &
3530 lb_min(jset), lb_max(jset), &
3531 lc_min(kset), lc_max(kset), &
3532 npgfa(iset), npgfb(jset), npgfc(kset), &
3533 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3536 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3537 offset_a_start, offset_b_start, offset_c_start, &
3538 0, 0, first_set - 1, &
3539 sphi_a, sphi_b, sphi_c, &
3541 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3546force_c=force_c(kkind)%forces(:, atom_c), &
3547 do_symmetric=do_symmetric, &
3548 on_diagonal=iatom .EQ. jatom, &
3552 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3554 IF (.NOT.
PRESENT(force_a) .AND. &
3555 .NOT.
PRESENT(force_b) .AND. &
3556 PRESENT(force_c) .AND. &
3557 PRESENT(pabc) .AND. &
3558 PRESENT(mat_dabc) .AND. &
3559 .NOT.
PRESENT(mat_adbc) .AND. &
3560 PRESENT(mat_abdc))
THEN
3561 CALL integrate_set_3c( &
3562 param%par, potential_parameter, &
3563 la_min(iset), la_max(iset), &
3564 lb_min(jset), lb_max(jset), &
3565 lc_min(kset), lc_max(kset), &
3566 npgfa(iset), npgfb(jset), npgfc(kset), &
3567 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3570 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3571 offset_a_start, offset_b_start, offset_c_start, &
3572 0, 0, first_set - 1, &
3573 sphi_a, sphi_b, sphi_c, &
3575 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3580force_c=force_c(kkind)%forces(:, atom_c), &
3581 do_symmetric=do_symmetric, &
3582 on_diagonal=iatom .EQ. jatom, &
3586 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3588 IF (.NOT.
PRESENT(force_a) .AND. &
3589 .NOT.
PRESENT(force_b) .AND. &
3590 PRESENT(force_c) .AND. &
3591 PRESENT(pabc) .AND. &
3592 PRESENT(mat_dabc) .AND. &
3593 PRESENT(mat_adbc) .AND. &
3594 .NOT.
PRESENT(mat_abdc))
THEN
3595 CALL integrate_set_3c( &
3596 param%par, potential_parameter, &
3597 la_min(iset), la_max(iset), &
3598 lb_min(jset), lb_max(jset), &
3599 lc_min(kset), lc_max(kset), &
3600 npgfa(iset), npgfb(jset), npgfc(kset), &
3601 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3604 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3605 offset_a_start, offset_b_start, offset_c_start, &
3606 0, 0, first_set - 1, &
3607 sphi_a, sphi_b, sphi_c, &
3609 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3614force_c=force_c(kkind)%forces(:, atom_c), &
3615 do_symmetric=do_symmetric, &
3616 on_diagonal=iatom .EQ. jatom, &
3620 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3622 IF (.NOT.
PRESENT(force_a) .AND. &
3623 .NOT.
PRESENT(force_b) .AND. &
3624 PRESENT(force_c) .AND. &
3625 PRESENT(pabc) .AND. &
3626 PRESENT(mat_dabc) .AND. &
3627 PRESENT(mat_adbc) .AND. &
3628 PRESENT(mat_abdc))
THEN
3629 CALL integrate_set_3c( &
3630 param%par, potential_parameter, &
3631 la_min(iset), la_max(iset), &
3632 lb_min(jset), lb_max(jset), &
3633 lc_min(kset), lc_max(kset), &
3634 npgfa(iset), npgfb(jset), npgfc(kset), &
3635 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3638 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3639 offset_a_start, offset_b_start, offset_c_start, &
3640 0, 0, first_set - 1, &
3641 sphi_a, sphi_b, sphi_c, &
3643 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3648force_c=force_c(kkind)%forces(:, atom_c), &
3649 do_symmetric=do_symmetric, &
3650 on_diagonal=iatom .EQ. jatom, &
3654 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3656 IF (.NOT.
PRESENT(force_a) .AND. &
3657 PRESENT(force_b) .AND. &
3658 .NOT.
PRESENT(force_c) .AND. &
3659 PRESENT(pabc) .AND. &
3660 .NOT.
PRESENT(mat_dabc) .AND. &
3661 .NOT.
PRESENT(mat_adbc) .AND. &
3662 .NOT.
PRESENT(mat_abdc))
THEN
3663 CALL integrate_set_3c( &
3664 param%par, potential_parameter, &
3665 la_min(iset), la_max(iset), &
3666 lb_min(jset), lb_max(jset), &
3667 lc_min(kset), lc_max(kset), &
3668 npgfa(iset), npgfb(jset), npgfc(kset), &
3669 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3672 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3673 offset_a_start, offset_b_start, offset_c_start, &
3674 0, 0, first_set - 1, &
3675 sphi_a, sphi_b, sphi_c, &
3677 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3681force_b=force_b(jkind)%forces(:, atom_b), &
3683 do_symmetric=do_symmetric, &
3684 on_diagonal=iatom .EQ. jatom, &
3688 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3690 IF (.NOT.
PRESENT(force_a) .AND. &
3691 PRESENT(force_b) .AND. &
3692 .NOT.
PRESENT(force_c) .AND. &
3693 PRESENT(pabc) .AND. &
3694 .NOT.
PRESENT(mat_dabc) .AND. &
3695 .NOT.
PRESENT(mat_adbc) .AND. &
3696 PRESENT(mat_abdc))
THEN
3697 CALL integrate_set_3c( &
3698 param%par, potential_parameter, &
3699 la_min(iset), la_max(iset), &
3700 lb_min(jset), lb_max(jset), &
3701 lc_min(kset), lc_max(kset), &
3702 npgfa(iset), npgfb(jset), npgfc(kset), &
3703 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3706 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3707 offset_a_start, offset_b_start, offset_c_start, &
3708 0, 0, first_set - 1, &
3709 sphi_a, sphi_b, sphi_c, &
3711 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3715force_b=force_b(jkind)%forces(:, atom_b), &
3717 do_symmetric=do_symmetric, &
3718 on_diagonal=iatom .EQ. jatom, &
3722 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3724 IF (.NOT.
PRESENT(force_a) .AND. &
3725 PRESENT(force_b) .AND. &
3726 .NOT.
PRESENT(force_c) .AND. &
3727 PRESENT(pabc) .AND. &
3728 .NOT.
PRESENT(mat_dabc) .AND. &
3729 PRESENT(mat_adbc) .AND. &
3730 .NOT.
PRESENT(mat_abdc))
THEN
3731 CALL integrate_set_3c( &
3732 param%par, potential_parameter, &
3733 la_min(iset), la_max(iset), &
3734 lb_min(jset), lb_max(jset), &
3735 lc_min(kset), lc_max(kset), &
3736 npgfa(iset), npgfb(jset), npgfc(kset), &
3737 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3740 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3741 offset_a_start, offset_b_start, offset_c_start, &
3742 0, 0, first_set - 1, &
3743 sphi_a, sphi_b, sphi_c, &
3745 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3749force_b=force_b(jkind)%forces(:, atom_b), &
3751 do_symmetric=do_symmetric, &
3752 on_diagonal=iatom .EQ. jatom, &
3756 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3758 IF (.NOT.
PRESENT(force_a) .AND. &
3759 PRESENT(force_b) .AND. &
3760 .NOT.
PRESENT(force_c) .AND. &
3761 PRESENT(pabc) .AND. &
3762 .NOT.
PRESENT(mat_dabc) .AND. &
3763 PRESENT(mat_adbc) .AND. &
3764 PRESENT(mat_abdc))
THEN
3765 CALL integrate_set_3c( &
3766 param%par, potential_parameter, &
3767 la_min(iset), la_max(iset), &
3768 lb_min(jset), lb_max(jset), &
3769 lc_min(kset), lc_max(kset), &
3770 npgfa(iset), npgfb(jset), npgfc(kset), &
3771 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3774 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3775 offset_a_start, offset_b_start, offset_c_start, &
3776 0, 0, first_set - 1, &
3777 sphi_a, sphi_b, sphi_c, &
3779 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3783force_b=force_b(jkind)%forces(:, atom_b), &
3785 do_symmetric=do_symmetric, &
3786 on_diagonal=iatom .EQ. jatom, &
3790 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3792 IF (.NOT.
PRESENT(force_a) .AND. &
3793 PRESENT(force_b) .AND. &
3794 .NOT.
PRESENT(force_c) .AND. &
3795 PRESENT(pabc) .AND. &
3796 PRESENT(mat_dabc) .AND. &
3797 .NOT.
PRESENT(mat_adbc) .AND. &
3798 .NOT.
PRESENT(mat_abdc))
THEN
3799 CALL integrate_set_3c( &
3800 param%par, potential_parameter, &
3801 la_min(iset), la_max(iset), &
3802 lb_min(jset), lb_max(jset), &
3803 lc_min(kset), lc_max(kset), &
3804 npgfa(iset), npgfb(jset), npgfc(kset), &
3805 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3808 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3809 offset_a_start, offset_b_start, offset_c_start, &
3810 0, 0, first_set - 1, &
3811 sphi_a, sphi_b, sphi_c, &
3813 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3817force_b=force_b(jkind)%forces(:, atom_b), &
3819 do_symmetric=do_symmetric, &
3820 on_diagonal=iatom .EQ. jatom, &
3824 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3826 IF (.NOT.
PRESENT(force_a) .AND. &
3827 PRESENT(force_b) .AND. &
3828 .NOT.
PRESENT(force_c) .AND. &
3829 PRESENT(pabc) .AND. &
3830 PRESENT(mat_dabc) .AND. &
3831 .NOT.
PRESENT(mat_adbc) .AND. &
3832 PRESENT(mat_abdc))
THEN
3833 CALL integrate_set_3c( &
3834 param%par, potential_parameter, &
3835 la_min(iset), la_max(iset), &
3836 lb_min(jset), lb_max(jset), &
3837 lc_min(kset), lc_max(kset), &
3838 npgfa(iset), npgfb(jset), npgfc(kset), &
3839 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3842 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3843 offset_a_start, offset_b_start, offset_c_start, &
3844 0, 0, first_set - 1, &
3845 sphi_a, sphi_b, sphi_c, &
3847 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3851force_b=force_b(jkind)%forces(:, atom_b), &
3853 do_symmetric=do_symmetric, &
3854 on_diagonal=iatom .EQ. jatom, &
3858 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3860 IF (.NOT.
PRESENT(force_a) .AND. &
3861 PRESENT(force_b) .AND. &
3862 .NOT.
PRESENT(force_c) .AND. &
3863 PRESENT(pabc) .AND. &
3864 PRESENT(mat_dabc) .AND. &
3865 PRESENT(mat_adbc) .AND. &
3866 .NOT.
PRESENT(mat_abdc))
THEN
3867 CALL integrate_set_3c( &
3868 param%par, potential_parameter, &
3869 la_min(iset), la_max(iset), &
3870 lb_min(jset), lb_max(jset), &
3871 lc_min(kset), lc_max(kset), &
3872 npgfa(iset), npgfb(jset), npgfc(kset), &
3873 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3876 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3877 offset_a_start, offset_b_start, offset_c_start, &
3878 0, 0, first_set - 1, &
3879 sphi_a, sphi_b, sphi_c, &
3881 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3885force_b=force_b(jkind)%forces(:, atom_b), &
3887 do_symmetric=do_symmetric, &
3888 on_diagonal=iatom .EQ. jatom, &
3892 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3894 IF (.NOT.
PRESENT(force_a) .AND. &
3895 PRESENT(force_b) .AND. &
3896 .NOT.
PRESENT(force_c) .AND. &
3897 PRESENT(pabc) .AND. &
3898 PRESENT(mat_dabc) .AND. &
3899 PRESENT(mat_adbc) .AND. &
3900 PRESENT(mat_abdc))
THEN
3901 CALL integrate_set_3c( &
3902 param%par, potential_parameter, &
3903 la_min(iset), la_max(iset), &
3904 lb_min(jset), lb_max(jset), &
3905 lc_min(kset), lc_max(kset), &
3906 npgfa(iset), npgfb(jset), npgfc(kset), &
3907 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3910 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3911 offset_a_start, offset_b_start, offset_c_start, &
3912 0, 0, first_set - 1, &
3913 sphi_a, sphi_b, sphi_c, &
3915 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3919force_b=force_b(jkind)%forces(:, atom_b), &
3921 do_symmetric=do_symmetric, &
3922 on_diagonal=iatom .EQ. jatom, &
3926 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3928 IF (.NOT.
PRESENT(force_a) .AND. &
3929 PRESENT(force_b) .AND. &
3930 PRESENT(force_c) .AND. &
3931 PRESENT(pabc) .AND. &
3932 .NOT.
PRESENT(mat_dabc) .AND. &
3933 .NOT.
PRESENT(mat_adbc) .AND. &
3934 .NOT.
PRESENT(mat_abdc))
THEN
3935 CALL integrate_set_3c( &
3936 param%par, potential_parameter, &
3937 la_min(iset), la_max(iset), &
3938 lb_min(jset), lb_max(jset), &
3939 lc_min(kset), lc_max(kset), &
3940 npgfa(iset), npgfb(jset), npgfc(kset), &
3941 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3944 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3945 offset_a_start, offset_b_start, offset_c_start, &
3946 0, 0, first_set - 1, &
3947 sphi_a, sphi_b, sphi_c, &
3949 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3953force_b=force_b(jkind)%forces(:, atom_b), &
3954force_c=force_c(kkind)%forces(:, atom_c), &
3955 do_symmetric=do_symmetric, &
3956 on_diagonal=iatom .EQ. jatom, &
3960 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3962 IF (.NOT.
PRESENT(force_a) .AND. &
3963 PRESENT(force_b) .AND. &
3964 PRESENT(force_c) .AND. &
3965 PRESENT(pabc) .AND. &
3966 .NOT.
PRESENT(mat_dabc) .AND. &
3967 .NOT.
PRESENT(mat_adbc) .AND. &
3968 PRESENT(mat_abdc))
THEN
3969 CALL integrate_set_3c( &
3970 param%par, potential_parameter, &
3971 la_min(iset), la_max(iset), &
3972 lb_min(jset), lb_max(jset), &
3973 lc_min(kset), lc_max(kset), &
3974 npgfa(iset), npgfb(jset), npgfc(kset), &
3975 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
3978 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
3979 offset_a_start, offset_b_start, offset_c_start, &
3980 0, 0, first_set - 1, &
3981 sphi_a, sphi_b, sphi_c, &
3983 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
3987force_b=force_b(jkind)%forces(:, atom_b), &
3988force_c=force_c(kkind)%forces(:, atom_c), &
3989 do_symmetric=do_symmetric, &
3990 on_diagonal=iatom .EQ. jatom, &
3994 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
3996 IF (.NOT.
PRESENT(force_a) .AND. &
3997 PRESENT(force_b) .AND. &
3998 PRESENT(force_c) .AND. &
3999 PRESENT(pabc) .AND. &
4000 .NOT.
PRESENT(mat_dabc) .AND. &
4001 PRESENT(mat_adbc) .AND. &
4002 .NOT.
PRESENT(mat_abdc))
THEN
4003 CALL integrate_set_3c( &
4004 param%par, potential_parameter, &
4005 la_min(iset), la_max(iset), &
4006 lb_min(jset), lb_max(jset), &
4007 lc_min(kset), lc_max(kset), &
4008 npgfa(iset), npgfb(jset), npgfc(kset), &
4009 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4012 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4013 offset_a_start, offset_b_start, offset_c_start, &
4014 0, 0, first_set - 1, &
4015 sphi_a, sphi_b, sphi_c, &
4017 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4021force_b=force_b(jkind)%forces(:, atom_b), &
4022force_c=force_c(kkind)%forces(:, atom_c), &
4023 do_symmetric=do_symmetric, &
4024 on_diagonal=iatom .EQ. jatom, &
4028 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4030 IF (.NOT.
PRESENT(force_a) .AND. &
4031 PRESENT(force_b) .AND. &
4032 PRESENT(force_c) .AND. &
4033 PRESENT(pabc) .AND. &
4034 .NOT.
PRESENT(mat_dabc) .AND. &
4035 PRESENT(mat_adbc) .AND. &
4036 PRESENT(mat_abdc))
THEN
4037 CALL integrate_set_3c( &
4038 param%par, potential_parameter, &
4039 la_min(iset), la_max(iset), &
4040 lb_min(jset), lb_max(jset), &
4041 lc_min(kset), lc_max(kset), &
4042 npgfa(iset), npgfb(jset), npgfc(kset), &
4043 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4046 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4047 offset_a_start, offset_b_start, offset_c_start, &
4048 0, 0, first_set - 1, &
4049 sphi_a, sphi_b, sphi_c, &
4051 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4055force_b=force_b(jkind)%forces(:, atom_b), &
4056force_c=force_c(kkind)%forces(:, atom_c), &
4057 do_symmetric=do_symmetric, &
4058 on_diagonal=iatom .EQ. jatom, &
4062 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4064 IF (.NOT.
PRESENT(force_a) .AND. &
4065 PRESENT(force_b) .AND. &
4066 PRESENT(force_c) .AND. &
4067 PRESENT(pabc) .AND. &
4068 PRESENT(mat_dabc) .AND. &
4069 .NOT.
PRESENT(mat_adbc) .AND. &
4070 .NOT.
PRESENT(mat_abdc))
THEN
4071 CALL integrate_set_3c( &
4072 param%par, potential_parameter, &
4073 la_min(iset), la_max(iset), &
4074 lb_min(jset), lb_max(jset), &
4075 lc_min(kset), lc_max(kset), &
4076 npgfa(iset), npgfb(jset), npgfc(kset), &
4077 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4080 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4081 offset_a_start, offset_b_start, offset_c_start, &
4082 0, 0, first_set - 1, &
4083 sphi_a, sphi_b, sphi_c, &
4085 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4089force_b=force_b(jkind)%forces(:, atom_b), &
4090force_c=force_c(kkind)%forces(:, atom_c), &
4091 do_symmetric=do_symmetric, &
4092 on_diagonal=iatom .EQ. jatom, &
4096 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4098 IF (.NOT.
PRESENT(force_a) .AND. &
4099 PRESENT(force_b) .AND. &
4100 PRESENT(force_c) .AND. &
4101 PRESENT(pabc) .AND. &
4102 PRESENT(mat_dabc) .AND. &
4103 .NOT.
PRESENT(mat_adbc) .AND. &
4104 PRESENT(mat_abdc))
THEN
4105 CALL integrate_set_3c( &
4106 param%par, potential_parameter, &
4107 la_min(iset), la_max(iset), &
4108 lb_min(jset), lb_max(jset), &
4109 lc_min(kset), lc_max(kset), &
4110 npgfa(iset), npgfb(jset), npgfc(kset), &
4111 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4114 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4115 offset_a_start, offset_b_start, offset_c_start, &
4116 0, 0, first_set - 1, &
4117 sphi_a, sphi_b, sphi_c, &
4119 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4123force_b=force_b(jkind)%forces(:, atom_b), &
4124force_c=force_c(kkind)%forces(:, atom_c), &
4125 do_symmetric=do_symmetric, &
4126 on_diagonal=iatom .EQ. jatom, &
4130 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4132 IF (.NOT.
PRESENT(force_a) .AND. &
4133 PRESENT(force_b) .AND. &
4134 PRESENT(force_c) .AND. &
4135 PRESENT(pabc) .AND. &
4136 PRESENT(mat_dabc) .AND. &
4137 PRESENT(mat_adbc) .AND. &
4138 .NOT.
PRESENT(mat_abdc))
THEN
4139 CALL integrate_set_3c( &
4140 param%par, potential_parameter, &
4141 la_min(iset), la_max(iset), &
4142 lb_min(jset), lb_max(jset), &
4143 lc_min(kset), lc_max(kset), &
4144 npgfa(iset), npgfb(jset), npgfc(kset), &
4145 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4148 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4149 offset_a_start, offset_b_start, offset_c_start, &
4150 0, 0, first_set - 1, &
4151 sphi_a, sphi_b, sphi_c, &
4153 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4157force_b=force_b(jkind)%forces(:, atom_b), &
4158force_c=force_c(kkind)%forces(:, atom_c), &
4159 do_symmetric=do_symmetric, &
4160 on_diagonal=iatom .EQ. jatom, &
4164 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4166 IF (.NOT.
PRESENT(force_a) .AND. &
4167 PRESENT(force_b) .AND. &
4168 PRESENT(force_c) .AND. &
4169 PRESENT(pabc) .AND. &
4170 PRESENT(mat_dabc) .AND. &
4171 PRESENT(mat_adbc) .AND. &
4172 PRESENT(mat_abdc))
THEN
4173 CALL integrate_set_3c( &
4174 param%par, potential_parameter, &
4175 la_min(iset), la_max(iset), &
4176 lb_min(jset), lb_max(jset), &
4177 lc_min(kset), lc_max(kset), &
4178 npgfa(iset), npgfb(jset), npgfc(kset), &
4179 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4182 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4183 offset_a_start, offset_b_start, offset_c_start, &
4184 0, 0, first_set - 1, &
4185 sphi_a, sphi_b, sphi_c, &
4187 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4191force_b=force_b(jkind)%forces(:, atom_b), &
4192force_c=force_c(kkind)%forces(:, atom_c), &
4193 do_symmetric=do_symmetric, &
4194 on_diagonal=iatom .EQ. jatom, &
4198 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4200 IF (
PRESENT(force_a) .AND. &
4201 .NOT.
PRESENT(force_b) .AND. &
4202 .NOT.
PRESENT(force_c) .AND. &
4203 PRESENT(pabc) .AND. &
4204 .NOT.
PRESENT(mat_dabc) .AND. &
4205 .NOT.
PRESENT(mat_adbc) .AND. &
4206 .NOT.
PRESENT(mat_abdc))
THEN
4207 CALL integrate_set_3c( &
4208 param%par, potential_parameter, &
4209 la_min(iset), la_max(iset), &
4210 lb_min(jset), lb_max(jset), &
4211 lc_min(kset), lc_max(kset), &
4212 npgfa(iset), npgfb(jset), npgfc(kset), &
4213 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4216 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4217 offset_a_start, offset_b_start, offset_c_start, &
4218 0, 0, first_set - 1, &
4219 sphi_a, sphi_b, sphi_c, &
4221 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4224force_a=force_a(ikind)%forces(:, atom_a), &
4227 do_symmetric=do_symmetric, &
4228 on_diagonal=iatom .EQ. jatom, &
4232 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4234 IF (
PRESENT(force_a) .AND. &
4235 .NOT.
PRESENT(force_b) .AND. &
4236 .NOT.
PRESENT(force_c) .AND. &
4237 PRESENT(pabc) .AND. &
4238 .NOT.
PRESENT(mat_dabc) .AND. &
4239 .NOT.
PRESENT(mat_adbc) .AND. &
4240 PRESENT(mat_abdc))
THEN
4241 CALL integrate_set_3c( &
4242 param%par, potential_parameter, &
4243 la_min(iset), la_max(iset), &
4244 lb_min(jset), lb_max(jset), &
4245 lc_min(kset), lc_max(kset), &
4246 npgfa(iset), npgfb(jset), npgfc(kset), &
4247 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4250 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4251 offset_a_start, offset_b_start, offset_c_start, &
4252 0, 0, first_set - 1, &
4253 sphi_a, sphi_b, sphi_c, &
4255 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4258force_a=force_a(ikind)%forces(:, atom_a), &
4261 do_symmetric=do_symmetric, &
4262 on_diagonal=iatom .EQ. jatom, &
4266 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4268 IF (
PRESENT(force_a) .AND. &
4269 .NOT.
PRESENT(force_b) .AND. &
4270 .NOT.
PRESENT(force_c) .AND. &
4271 PRESENT(pabc) .AND. &
4272 .NOT.
PRESENT(mat_dabc) .AND. &
4273 PRESENT(mat_adbc) .AND. &
4274 .NOT.
PRESENT(mat_abdc))
THEN
4275 CALL integrate_set_3c( &
4276 param%par, potential_parameter, &
4277 la_min(iset), la_max(iset), &
4278 lb_min(jset), lb_max(jset), &
4279 lc_min(kset), lc_max(kset), &
4280 npgfa(iset), npgfb(jset), npgfc(kset), &
4281 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4284 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4285 offset_a_start, offset_b_start, offset_c_start, &
4286 0, 0, first_set - 1, &
4287 sphi_a, sphi_b, sphi_c, &
4289 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4292force_a=force_a(ikind)%forces(:, atom_a), &
4295 do_symmetric=do_symmetric, &
4296 on_diagonal=iatom .EQ. jatom, &
4300 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4302 IF (
PRESENT(force_a) .AND. &
4303 .NOT.
PRESENT(force_b) .AND. &
4304 .NOT.
PRESENT(force_c) .AND. &
4305 PRESENT(pabc) .AND. &
4306 .NOT.
PRESENT(mat_dabc) .AND. &
4307 PRESENT(mat_adbc) .AND. &
4308 PRESENT(mat_abdc))
THEN
4309 CALL integrate_set_3c( &
4310 param%par, potential_parameter, &
4311 la_min(iset), la_max(iset), &
4312 lb_min(jset), lb_max(jset), &
4313 lc_min(kset), lc_max(kset), &
4314 npgfa(iset), npgfb(jset), npgfc(kset), &
4315 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4318 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4319 offset_a_start, offset_b_start, offset_c_start, &
4320 0, 0, first_set - 1, &
4321 sphi_a, sphi_b, sphi_c, &
4323 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4326force_a=force_a(ikind)%forces(:, atom_a), &
4329 do_symmetric=do_symmetric, &
4330 on_diagonal=iatom .EQ. jatom, &
4334 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4336 IF (
PRESENT(force_a) .AND. &
4337 .NOT.
PRESENT(force_b) .AND. &
4338 .NOT.
PRESENT(force_c) .AND. &
4339 PRESENT(pabc) .AND. &
4340 PRESENT(mat_dabc) .AND. &
4341 .NOT.
PRESENT(mat_adbc) .AND. &
4342 .NOT.
PRESENT(mat_abdc))
THEN
4343 CALL integrate_set_3c( &
4344 param%par, potential_parameter, &
4345 la_min(iset), la_max(iset), &
4346 lb_min(jset), lb_max(jset), &
4347 lc_min(kset), lc_max(kset), &
4348 npgfa(iset), npgfb(jset), npgfc(kset), &
4349 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4352 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4353 offset_a_start, offset_b_start, offset_c_start, &
4354 0, 0, first_set - 1, &
4355 sphi_a, sphi_b, sphi_c, &
4357 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4360force_a=force_a(ikind)%forces(:, atom_a), &
4363 do_symmetric=do_symmetric, &
4364 on_diagonal=iatom .EQ. jatom, &
4368 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4370 IF (
PRESENT(force_a) .AND. &
4371 .NOT.
PRESENT(force_b) .AND. &
4372 .NOT.
PRESENT(force_c) .AND. &
4373 PRESENT(pabc) .AND. &
4374 PRESENT(mat_dabc) .AND. &
4375 .NOT.
PRESENT(mat_adbc) .AND. &
4376 PRESENT(mat_abdc))
THEN
4377 CALL integrate_set_3c( &
4378 param%par, potential_parameter, &
4379 la_min(iset), la_max(iset), &
4380 lb_min(jset), lb_max(jset), &
4381 lc_min(kset), lc_max(kset), &
4382 npgfa(iset), npgfb(jset), npgfc(kset), &
4383 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4386 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4387 offset_a_start, offset_b_start, offset_c_start, &
4388 0, 0, first_set - 1, &
4389 sphi_a, sphi_b, sphi_c, &
4391 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4394force_a=force_a(ikind)%forces(:, atom_a), &
4397 do_symmetric=do_symmetric, &
4398 on_diagonal=iatom .EQ. jatom, &
4402 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4404 IF (
PRESENT(force_a) .AND. &
4405 .NOT.
PRESENT(force_b) .AND. &
4406 .NOT.
PRESENT(force_c) .AND. &
4407 PRESENT(pabc) .AND. &
4408 PRESENT(mat_dabc) .AND. &
4409 PRESENT(mat_adbc) .AND. &
4410 .NOT.
PRESENT(mat_abdc))
THEN
4411 CALL integrate_set_3c( &
4412 param%par, potential_parameter, &
4413 la_min(iset), la_max(iset), &
4414 lb_min(jset), lb_max(jset), &
4415 lc_min(kset), lc_max(kset), &
4416 npgfa(iset), npgfb(jset), npgfc(kset), &
4417 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4420 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4421 offset_a_start, offset_b_start, offset_c_start, &
4422 0, 0, first_set - 1, &
4423 sphi_a, sphi_b, sphi_c, &
4425 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4428force_a=force_a(ikind)%forces(:, atom_a), &
4431 do_symmetric=do_symmetric, &
4432 on_diagonal=iatom .EQ. jatom, &
4436 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4438 IF (
PRESENT(force_a) .AND. &
4439 .NOT.
PRESENT(force_b) .AND. &
4440 .NOT.
PRESENT(force_c) .AND. &
4441 PRESENT(pabc) .AND. &
4442 PRESENT(mat_dabc) .AND. &
4443 PRESENT(mat_adbc) .AND. &
4444 PRESENT(mat_abdc))
THEN
4445 CALL integrate_set_3c( &
4446 param%par, potential_parameter, &
4447 la_min(iset), la_max(iset), &
4448 lb_min(jset), lb_max(jset), &
4449 lc_min(kset), lc_max(kset), &
4450 npgfa(iset), npgfb(jset), npgfc(kset), &
4451 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4454 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4455 offset_a_start, offset_b_start, offset_c_start, &
4456 0, 0, first_set - 1, &
4457 sphi_a, sphi_b, sphi_c, &
4459 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4462force_a=force_a(ikind)%forces(:, atom_a), &
4465 do_symmetric=do_symmetric, &
4466 on_diagonal=iatom .EQ. jatom, &
4470 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4472 IF (
PRESENT(force_a) .AND. &
4473 .NOT.
PRESENT(force_b) .AND. &
4474 PRESENT(force_c) .AND. &
4475 PRESENT(pabc) .AND. &
4476 .NOT.
PRESENT(mat_dabc) .AND. &
4477 .NOT.
PRESENT(mat_adbc) .AND. &
4478 .NOT.
PRESENT(mat_abdc))
THEN
4479 CALL integrate_set_3c( &
4480 param%par, potential_parameter, &
4481 la_min(iset), la_max(iset), &
4482 lb_min(jset), lb_max(jset), &
4483 lc_min(kset), lc_max(kset), &
4484 npgfa(iset), npgfb(jset), npgfc(kset), &
4485 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4488 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4489 offset_a_start, offset_b_start, offset_c_start, &
4490 0, 0, first_set - 1, &
4491 sphi_a, sphi_b, sphi_c, &
4493 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4496force_a=force_a(ikind)%forces(:, atom_a), &
4498force_c=force_c(kkind)%forces(:, atom_c), &
4499 do_symmetric=do_symmetric, &
4500 on_diagonal=iatom .EQ. jatom, &
4504 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4506 IF (
PRESENT(force_a) .AND. &
4507 .NOT.
PRESENT(force_b) .AND. &
4508 PRESENT(force_c) .AND. &
4509 PRESENT(pabc) .AND. &
4510 .NOT.
PRESENT(mat_dabc) .AND. &
4511 .NOT.
PRESENT(mat_adbc) .AND. &
4512 PRESENT(mat_abdc))
THEN
4513 CALL integrate_set_3c( &
4514 param%par, potential_parameter, &
4515 la_min(iset), la_max(iset), &
4516 lb_min(jset), lb_max(jset), &
4517 lc_min(kset), lc_max(kset), &
4518 npgfa(iset), npgfb(jset), npgfc(kset), &
4519 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4522 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4523 offset_a_start, offset_b_start, offset_c_start, &
4524 0, 0, first_set - 1, &
4525 sphi_a, sphi_b, sphi_c, &
4527 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4530force_a=force_a(ikind)%forces(:, atom_a), &
4532force_c=force_c(kkind)%forces(:, atom_c), &
4533 do_symmetric=do_symmetric, &
4534 on_diagonal=iatom .EQ. jatom, &
4538 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4540 IF (
PRESENT(force_a) .AND. &
4541 .NOT.
PRESENT(force_b) .AND. &
4542 PRESENT(force_c) .AND. &
4543 PRESENT(pabc) .AND. &
4544 .NOT.
PRESENT(mat_dabc) .AND. &
4545 PRESENT(mat_adbc) .AND. &
4546 .NOT.
PRESENT(mat_abdc))
THEN
4547 CALL integrate_set_3c( &
4548 param%par, potential_parameter, &
4549 la_min(iset), la_max(iset), &
4550 lb_min(jset), lb_max(jset), &
4551 lc_min(kset), lc_max(kset), &
4552 npgfa(iset), npgfb(jset), npgfc(kset), &
4553 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4556 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4557 offset_a_start, offset_b_start, offset_c_start, &
4558 0, 0, first_set - 1, &
4559 sphi_a, sphi_b, sphi_c, &
4561 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4564force_a=force_a(ikind)%forces(:, atom_a), &
4566force_c=force_c(kkind)%forces(:, atom_c), &
4567 do_symmetric=do_symmetric, &
4568 on_diagonal=iatom .EQ. jatom, &
4572 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4574 IF (
PRESENT(force_a) .AND. &
4575 .NOT.
PRESENT(force_b) .AND. &
4576 PRESENT(force_c) .AND. &
4577 PRESENT(pabc) .AND. &
4578 .NOT.
PRESENT(mat_dabc) .AND. &
4579 PRESENT(mat_adbc) .AND. &
4580 PRESENT(mat_abdc))
THEN
4581 CALL integrate_set_3c( &
4582 param%par, potential_parameter, &
4583 la_min(iset), la_max(iset), &
4584 lb_min(jset), lb_max(jset), &
4585 lc_min(kset), lc_max(kset), &
4586 npgfa(iset), npgfb(jset), npgfc(kset), &
4587 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4590 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4591 offset_a_start, offset_b_start, offset_c_start, &
4592 0, 0, first_set - 1, &
4593 sphi_a, sphi_b, sphi_c, &
4595 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4598force_a=force_a(ikind)%forces(:, atom_a), &
4600force_c=force_c(kkind)%forces(:, atom_c), &
4601 do_symmetric=do_symmetric, &
4602 on_diagonal=iatom .EQ. jatom, &
4606 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4608 IF (
PRESENT(force_a) .AND. &
4609 .NOT.
PRESENT(force_b) .AND. &
4610 PRESENT(force_c) .AND. &
4611 PRESENT(pabc) .AND. &
4612 PRESENT(mat_dabc) .AND. &
4613 .NOT.
PRESENT(mat_adbc) .AND. &
4614 .NOT.
PRESENT(mat_abdc))
THEN
4615 CALL integrate_set_3c( &
4616 param%par, potential_parameter, &
4617 la_min(iset), la_max(iset), &
4618 lb_min(jset), lb_max(jset), &
4619 lc_min(kset), lc_max(kset), &
4620 npgfa(iset), npgfb(jset), npgfc(kset), &
4621 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4624 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4625 offset_a_start, offset_b_start, offset_c_start, &
4626 0, 0, first_set - 1, &
4627 sphi_a, sphi_b, sphi_c, &
4629 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4632force_a=force_a(ikind)%forces(:, atom_a), &
4634force_c=force_c(kkind)%forces(:, atom_c), &
4635 do_symmetric=do_symmetric, &
4636 on_diagonal=iatom .EQ. jatom, &
4640 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4642 IF (
PRESENT(force_a) .AND. &
4643 .NOT.
PRESENT(force_b) .AND. &
4644 PRESENT(force_c) .AND. &
4645 PRESENT(pabc) .AND. &
4646 PRESENT(mat_dabc) .AND. &
4647 .NOT.
PRESENT(mat_adbc) .AND. &
4648 PRESENT(mat_abdc))
THEN
4649 CALL integrate_set_3c( &
4650 param%par, potential_parameter, &
4651 la_min(iset), la_max(iset), &
4652 lb_min(jset), lb_max(jset), &
4653 lc_min(kset), lc_max(kset), &
4654 npgfa(iset), npgfb(jset), npgfc(kset), &
4655 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4658 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4659 offset_a_start, offset_b_start, offset_c_start, &
4660 0, 0, first_set - 1, &
4661 sphi_a, sphi_b, sphi_c, &
4663 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4666force_a=force_a(ikind)%forces(:, atom_a), &
4668force_c=force_c(kkind)%forces(:, atom_c), &
4669 do_symmetric=do_symmetric, &
4670 on_diagonal=iatom .EQ. jatom, &
4674 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4676 IF (
PRESENT(force_a) .AND. &
4677 .NOT.
PRESENT(force_b) .AND. &
4678 PRESENT(force_c) .AND. &
4679 PRESENT(pabc) .AND. &
4680 PRESENT(mat_dabc) .AND. &
4681 PRESENT(mat_adbc) .AND. &
4682 .NOT.
PRESENT(mat_abdc))
THEN
4683 CALL integrate_set_3c( &
4684 param%par, potential_parameter, &
4685 la_min(iset), la_max(iset), &
4686 lb_min(jset), lb_max(jset), &
4687 lc_min(kset), lc_max(kset), &
4688 npgfa(iset), npgfb(jset), npgfc(kset), &
4689 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4692 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4693 offset_a_start, offset_b_start, offset_c_start, &
4694 0, 0, first_set - 1, &
4695 sphi_a, sphi_b, sphi_c, &
4697 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4700force_a=force_a(ikind)%forces(:, atom_a), &
4702force_c=force_c(kkind)%forces(:, atom_c), &
4703 do_symmetric=do_symmetric, &
4704 on_diagonal=iatom .EQ. jatom, &
4708 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4710 IF (
PRESENT(force_a) .AND. &
4711 .NOT.
PRESENT(force_b) .AND. &
4712 PRESENT(force_c) .AND. &
4713 PRESENT(pabc) .AND. &
4714 PRESENT(mat_dabc) .AND. &
4715 PRESENT(mat_adbc) .AND. &
4716 PRESENT(mat_abdc))
THEN
4717 CALL integrate_set_3c( &
4718 param%par, potential_parameter, &
4719 la_min(iset), la_max(iset), &
4720 lb_min(jset), lb_max(jset), &
4721 lc_min(kset), lc_max(kset), &
4722 npgfa(iset), npgfb(jset), npgfc(kset), &
4723 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4726 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4727 offset_a_start, offset_b_start, offset_c_start, &
4728 0, 0, first_set - 1, &
4729 sphi_a, sphi_b, sphi_c, &
4731 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4734force_a=force_a(ikind)%forces(:, atom_a), &
4736force_c=force_c(kkind)%forces(:, atom_c), &
4737 do_symmetric=do_symmetric, &
4738 on_diagonal=iatom .EQ. jatom, &
4742 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4744 IF (
PRESENT(force_a) .AND. &
4745 PRESENT(force_b) .AND. &
4746 .NOT.
PRESENT(force_c) .AND. &
4747 PRESENT(pabc) .AND. &
4748 .NOT.
PRESENT(mat_dabc) .AND. &
4749 .NOT.
PRESENT(mat_adbc) .AND. &
4750 .NOT.
PRESENT(mat_abdc))
THEN
4751 CALL integrate_set_3c( &
4752 param%par, potential_parameter, &
4753 la_min(iset), la_max(iset), &
4754 lb_min(jset), lb_max(jset), &
4755 lc_min(kset), lc_max(kset), &
4756 npgfa(iset), npgfb(jset), npgfc(kset), &
4757 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4760 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4761 offset_a_start, offset_b_start, offset_c_start, &
4762 0, 0, first_set - 1, &
4763 sphi_a, sphi_b, sphi_c, &
4765 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4768force_a=force_a(ikind)%forces(:, atom_a), &
4769force_b=force_b(jkind)%forces(:, atom_b), &
4771 do_symmetric=do_symmetric, &
4772 on_diagonal=iatom .EQ. jatom, &
4776 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4778 IF (
PRESENT(force_a) .AND. &
4779 PRESENT(force_b) .AND. &
4780 .NOT.
PRESENT(force_c) .AND. &
4781 PRESENT(pabc) .AND. &
4782 .NOT.
PRESENT(mat_dabc) .AND. &
4783 .NOT.
PRESENT(mat_adbc) .AND. &
4784 PRESENT(mat_abdc))
THEN
4785 CALL integrate_set_3c( &
4786 param%par, potential_parameter, &
4787 la_min(iset), la_max(iset), &
4788 lb_min(jset), lb_max(jset), &
4789 lc_min(kset), lc_max(kset), &
4790 npgfa(iset), npgfb(jset), npgfc(kset), &
4791 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4794 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4795 offset_a_start, offset_b_start, offset_c_start, &
4796 0, 0, first_set - 1, &
4797 sphi_a, sphi_b, sphi_c, &
4799 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4802force_a=force_a(ikind)%forces(:, atom_a), &
4803force_b=force_b(jkind)%forces(:, atom_b), &
4805 do_symmetric=do_symmetric, &
4806 on_diagonal=iatom .EQ. jatom, &
4810 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4812 IF (
PRESENT(force_a) .AND. &
4813 PRESENT(force_b) .AND. &
4814 .NOT.
PRESENT(force_c) .AND. &
4815 PRESENT(pabc) .AND. &
4816 .NOT.
PRESENT(mat_dabc) .AND. &
4817 PRESENT(mat_adbc) .AND. &
4818 .NOT.
PRESENT(mat_abdc))
THEN
4819 CALL integrate_set_3c( &
4820 param%par, potential_parameter, &
4821 la_min(iset), la_max(iset), &
4822 lb_min(jset), lb_max(jset), &
4823 lc_min(kset), lc_max(kset), &
4824 npgfa(iset), npgfb(jset), npgfc(kset), &
4825 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4828 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4829 offset_a_start, offset_b_start, offset_c_start, &
4830 0, 0, first_set - 1, &
4831 sphi_a, sphi_b, sphi_c, &
4833 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4836force_a=force_a(ikind)%forces(:, atom_a), &
4837force_b=force_b(jkind)%forces(:, atom_b), &
4839 do_symmetric=do_symmetric, &
4840 on_diagonal=iatom .EQ. jatom, &
4844 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4846 IF (
PRESENT(force_a) .AND. &
4847 PRESENT(force_b) .AND. &
4848 .NOT.
PRESENT(force_c) .AND. &
4849 PRESENT(pabc) .AND. &
4850 .NOT.
PRESENT(mat_dabc) .AND. &
4851 PRESENT(mat_adbc) .AND. &
4852 PRESENT(mat_abdc))
THEN
4853 CALL integrate_set_3c( &
4854 param%par, potential_parameter, &
4855 la_min(iset), la_max(iset), &
4856 lb_min(jset), lb_max(jset), &
4857 lc_min(kset), lc_max(kset), &
4858 npgfa(iset), npgfb(jset), npgfc(kset), &
4859 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4862 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4863 offset_a_start, offset_b_start, offset_c_start, &
4864 0, 0, first_set - 1, &
4865 sphi_a, sphi_b, sphi_c, &
4867 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4870force_a=force_a(ikind)%forces(:, atom_a), &
4871force_b=force_b(jkind)%forces(:, atom_b), &
4873 do_symmetric=do_symmetric, &
4874 on_diagonal=iatom .EQ. jatom, &
4878 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4880 IF (
PRESENT(force_a) .AND. &
4881 PRESENT(force_b) .AND. &
4882 .NOT.
PRESENT(force_c) .AND. &
4883 PRESENT(pabc) .AND. &
4884 PRESENT(mat_dabc) .AND. &
4885 .NOT.
PRESENT(mat_adbc) .AND. &
4886 .NOT.
PRESENT(mat_abdc))
THEN
4887 CALL integrate_set_3c( &
4888 param%par, potential_parameter, &
4889 la_min(iset), la_max(iset), &
4890 lb_min(jset), lb_max(jset), &
4891 lc_min(kset), lc_max(kset), &
4892 npgfa(iset), npgfb(jset), npgfc(kset), &
4893 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4896 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4897 offset_a_start, offset_b_start, offset_c_start, &
4898 0, 0, first_set - 1, &
4899 sphi_a, sphi_b, sphi_c, &
4901 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4904force_a=force_a(ikind)%forces(:, atom_a), &
4905force_b=force_b(jkind)%forces(:, atom_b), &
4907 do_symmetric=do_symmetric, &
4908 on_diagonal=iatom .EQ. jatom, &
4912 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4914 IF (
PRESENT(force_a) .AND. &
4915 PRESENT(force_b) .AND. &
4916 .NOT.
PRESENT(force_c) .AND. &
4917 PRESENT(pabc) .AND. &
4918 PRESENT(mat_dabc) .AND. &
4919 .NOT.
PRESENT(mat_adbc) .AND. &
4920 PRESENT(mat_abdc))
THEN
4921 CALL integrate_set_3c( &
4922 param%par, potential_parameter, &
4923 la_min(iset), la_max(iset), &
4924 lb_min(jset), lb_max(jset), &
4925 lc_min(kset), lc_max(kset), &
4926 npgfa(iset), npgfb(jset), npgfc(kset), &
4927 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4930 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4931 offset_a_start, offset_b_start, offset_c_start, &
4932 0, 0, first_set - 1, &
4933 sphi_a, sphi_b, sphi_c, &
4935 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4938force_a=force_a(ikind)%forces(:, atom_a), &
4939force_b=force_b(jkind)%forces(:, atom_b), &
4941 do_symmetric=do_symmetric, &
4942 on_diagonal=iatom .EQ. jatom, &
4946 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4948 IF (
PRESENT(force_a) .AND. &
4949 PRESENT(force_b) .AND. &
4950 .NOT.
PRESENT(force_c) .AND. &
4951 PRESENT(pabc) .AND. &
4952 PRESENT(mat_dabc) .AND. &
4953 PRESENT(mat_adbc) .AND. &
4954 .NOT.
PRESENT(mat_abdc))
THEN
4955 CALL integrate_set_3c( &
4956 param%par, potential_parameter, &
4957 la_min(iset), la_max(iset), &
4958 lb_min(jset), lb_max(jset), &
4959 lc_min(kset), lc_max(kset), &
4960 npgfa(iset), npgfb(jset), npgfc(kset), &
4961 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4964 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4965 offset_a_start, offset_b_start, offset_c_start, &
4966 0, 0, first_set - 1, &
4967 sphi_a, sphi_b, sphi_c, &
4969 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
4972force_a=force_a(ikind)%forces(:, atom_a), &
4973force_b=force_b(jkind)%forces(:, atom_b), &
4975 do_symmetric=do_symmetric, &
4976 on_diagonal=iatom .EQ. jatom, &
4980 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
4982 IF (
PRESENT(force_a) .AND. &
4983 PRESENT(force_b) .AND. &
4984 .NOT.
PRESENT(force_c) .AND. &
4985 PRESENT(pabc) .AND. &
4986 PRESENT(mat_dabc) .AND. &
4987 PRESENT(mat_adbc) .AND. &
4988 PRESENT(mat_abdc))
THEN
4989 CALL integrate_set_3c( &
4990 param%par, potential_parameter, &
4991 la_min(iset), la_max(iset), &
4992 lb_min(jset), lb_max(jset), &
4993 lc_min(kset), lc_max(kset), &
4994 npgfa(iset), npgfb(jset), npgfc(kset), &
4995 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
4998 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
4999 offset_a_start, offset_b_start, offset_c_start, &
5000 0, 0, first_set - 1, &
5001 sphi_a, sphi_b, sphi_c, &
5003 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5006force_a=force_a(ikind)%forces(:, atom_a), &
5007force_b=force_b(jkind)%forces(:, atom_b), &
5009 do_symmetric=do_symmetric, &
5010 on_diagonal=iatom .EQ. jatom, &
5014 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5016 IF (
PRESENT(force_a) .AND. &
5017 PRESENT(force_b) .AND. &
5018 PRESENT(force_c) .AND. &
5019 PRESENT(pabc) .AND. &
5020 .NOT.
PRESENT(mat_dabc) .AND. &
5021 .NOT.
PRESENT(mat_adbc) .AND. &
5022 .NOT.
PRESENT(mat_abdc))
THEN
5023 CALL integrate_set_3c( &
5024 param%par, potential_parameter, &
5025 la_min(iset), la_max(iset), &
5026 lb_min(jset), lb_max(jset), &
5027 lc_min(kset), lc_max(kset), &
5028 npgfa(iset), npgfb(jset), npgfc(kset), &
5029 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5032 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5033 offset_a_start, offset_b_start, offset_c_start, &
5034 0, 0, first_set - 1, &
5035 sphi_a, sphi_b, sphi_c, &
5037 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5040force_a=force_a(ikind)%forces(:, atom_a), &
5041force_b=force_b(jkind)%forces(:, atom_b), &
5042force_c=force_c(kkind)%forces(:, atom_c), &
5043 do_symmetric=do_symmetric, &
5044 on_diagonal=iatom .EQ. jatom, &
5048 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5050 IF (
PRESENT(force_a) .AND. &
5051 PRESENT(force_b) .AND. &
5052 PRESENT(force_c) .AND. &
5053 PRESENT(pabc) .AND. &
5054 .NOT.
PRESENT(mat_dabc) .AND. &
5055 .NOT.
PRESENT(mat_adbc) .AND. &
5056 PRESENT(mat_abdc))
THEN
5057 CALL integrate_set_3c( &
5058 param%par, potential_parameter, &
5059 la_min(iset), la_max(iset), &
5060 lb_min(jset), lb_max(jset), &
5061 lc_min(kset), lc_max(kset), &
5062 npgfa(iset), npgfb(jset), npgfc(kset), &
5063 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5066 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5067 offset_a_start, offset_b_start, offset_c_start, &
5068 0, 0, first_set - 1, &
5069 sphi_a, sphi_b, sphi_c, &
5071 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5074force_a=force_a(ikind)%forces(:, atom_a), &
5075force_b=force_b(jkind)%forces(:, atom_b), &
5076force_c=force_c(kkind)%forces(:, atom_c), &
5077 do_symmetric=do_symmetric, &
5078 on_diagonal=iatom .EQ. jatom, &
5082 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5084 IF (
PRESENT(force_a) .AND. &
5085 PRESENT(force_b) .AND. &
5086 PRESENT(force_c) .AND. &
5087 PRESENT(pabc) .AND. &
5088 .NOT.
PRESENT(mat_dabc) .AND. &
5089 PRESENT(mat_adbc) .AND. &
5090 .NOT.
PRESENT(mat_abdc))
THEN
5091 CALL integrate_set_3c( &
5092 param%par, potential_parameter, &
5093 la_min(iset), la_max(iset), &
5094 lb_min(jset), lb_max(jset), &
5095 lc_min(kset), lc_max(kset), &
5096 npgfa(iset), npgfb(jset), npgfc(kset), &
5097 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5100 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5101 offset_a_start, offset_b_start, offset_c_start, &
5102 0, 0, first_set - 1, &
5103 sphi_a, sphi_b, sphi_c, &
5105 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5108force_a=force_a(ikind)%forces(:, atom_a), &
5109force_b=force_b(jkind)%forces(:, atom_b), &
5110force_c=force_c(kkind)%forces(:, atom_c), &
5111 do_symmetric=do_symmetric, &
5112 on_diagonal=iatom .EQ. jatom, &
5116 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5118 IF (
PRESENT(force_a) .AND. &
5119 PRESENT(force_b) .AND. &
5120 PRESENT(force_c) .AND. &
5121 PRESENT(pabc) .AND. &
5122 .NOT.
PRESENT(mat_dabc) .AND. &
5123 PRESENT(mat_adbc) .AND. &
5124 PRESENT(mat_abdc))
THEN
5125 CALL integrate_set_3c( &
5126 param%par, potential_parameter, &
5127 la_min(iset), la_max(iset), &
5128 lb_min(jset), lb_max(jset), &
5129 lc_min(kset), lc_max(kset), &
5130 npgfa(iset), npgfb(jset), npgfc(kset), &
5131 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5134 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5135 offset_a_start, offset_b_start, offset_c_start, &
5136 0, 0, first_set - 1, &
5137 sphi_a, sphi_b, sphi_c, &
5139 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5142force_a=force_a(ikind)%forces(:, atom_a), &
5143force_b=force_b(jkind)%forces(:, atom_b), &
5144force_c=force_c(kkind)%forces(:, atom_c), &
5145 do_symmetric=do_symmetric, &
5146 on_diagonal=iatom .EQ. jatom, &
5150 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5152 IF (
PRESENT(force_a) .AND. &
5153 PRESENT(force_b) .AND. &
5154 PRESENT(force_c) .AND. &
5155 PRESENT(pabc) .AND. &
5156 PRESENT(mat_dabc) .AND. &
5157 .NOT.
PRESENT(mat_adbc) .AND. &
5158 .NOT.
PRESENT(mat_abdc))
THEN
5159 CALL integrate_set_3c( &
5160 param%par, potential_parameter, &
5161 la_min(iset), la_max(iset), &
5162 lb_min(jset), lb_max(jset), &
5163 lc_min(kset), lc_max(kset), &
5164 npgfa(iset), npgfb(jset), npgfc(kset), &
5165 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5168 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5169 offset_a_start, offset_b_start, offset_c_start, &
5170 0, 0, first_set - 1, &
5171 sphi_a, sphi_b, sphi_c, &
5173 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5176force_a=force_a(ikind)%forces(:, atom_a), &
5177force_b=force_b(jkind)%forces(:, atom_b), &
5178force_c=force_c(kkind)%forces(:, atom_c), &
5179 do_symmetric=do_symmetric, &
5180 on_diagonal=iatom .EQ. jatom, &
5184 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5186 IF (
PRESENT(force_a) .AND. &
5187 PRESENT(force_b) .AND. &
5188 PRESENT(force_c) .AND. &
5189 PRESENT(pabc) .AND. &
5190 PRESENT(mat_dabc) .AND. &
5191 .NOT.
PRESENT(mat_adbc) .AND. &
5192 PRESENT(mat_abdc))
THEN
5193 CALL integrate_set_3c( &
5194 param%par, potential_parameter, &
5195 la_min(iset), la_max(iset), &
5196 lb_min(jset), lb_max(jset), &
5197 lc_min(kset), lc_max(kset), &
5198 npgfa(iset), npgfb(jset), npgfc(kset), &
5199 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5202 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5203 offset_a_start, offset_b_start, offset_c_start, &
5204 0, 0, first_set - 1, &
5205 sphi_a, sphi_b, sphi_c, &
5207 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5210force_a=force_a(ikind)%forces(:, atom_a), &
5211force_b=force_b(jkind)%forces(:, atom_b), &
5212force_c=force_c(kkind)%forces(:, atom_c), &
5213 do_symmetric=do_symmetric, &
5214 on_diagonal=iatom .EQ. jatom, &
5218 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5220 IF (
PRESENT(force_a) .AND. &
5221 PRESENT(force_b) .AND. &
5222 PRESENT(force_c) .AND. &
5223 PRESENT(pabc) .AND. &
5224 PRESENT(mat_dabc) .AND. &
5225 PRESENT(mat_adbc) .AND. &
5226 .NOT.
PRESENT(mat_abdc))
THEN
5227 CALL integrate_set_3c( &
5228 param%par, potential_parameter, &
5229 la_min(iset), la_max(iset), &
5230 lb_min(jset), lb_max(jset), &
5231 lc_min(kset), lc_max(kset), &
5232 npgfa(iset), npgfb(jset), npgfc(kset), &
5233 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5236 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5237 offset_a_start, offset_b_start, offset_c_start, &
5238 0, 0, first_set - 1, &
5239 sphi_a, sphi_b, sphi_c, &
5241 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5244force_a=force_a(ikind)%forces(:, atom_a), &
5245force_b=force_b(jkind)%forces(:, atom_b), &
5246force_c=force_c(kkind)%forces(:, atom_c), &
5247 do_symmetric=do_symmetric, &
5248 on_diagonal=iatom .EQ. jatom, &
5252 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5254 IF (
PRESENT(force_a) .AND. &
5255 PRESENT(force_b) .AND. &
5256 PRESENT(force_c) .AND. &
5257 PRESENT(pabc) .AND. &
5258 PRESENT(mat_dabc) .AND. &
5259 PRESENT(mat_adbc) .AND. &
5260 PRESENT(mat_abdc))
THEN
5261 CALL integrate_set_3c( &
5262 param%par, potential_parameter, &
5263 la_min(iset), la_max(iset), &
5264 lb_min(jset), lb_max(jset), &
5265 lc_min(kset), lc_max(kset), &
5266 npgfa(iset), npgfb(jset), npgfc(kset), &
5267 zeta(:, iset), zetb(:, jset), zetc(:, kset), &
5270 nsgfa(iset), nsgfb(jset), last_set - first_set + 1, &
5271 offset_a_start, offset_b_start, offset_c_start, &
5272 0, 0, first_set - 1, &
5273 sphi_a, sphi_b, sphi_c, &
5275 nsgfa(iset), nsgfb(jset), nsgfc(kset), &
5278force_a=force_a(ikind)%forces(:, atom_a), &
5279force_b=force_b(jkind)%forces(:, atom_b), &
5280force_c=force_c(kkind)%forces(:, atom_c), &
5281 do_symmetric=do_symmetric, &
5282 on_diagonal=iatom .EQ. jatom, &
5286 gg_count=gg_count, gr_count=gr_count, rr_count=rr_count)
5293 IF (calculate_forces .AND.
PRESENT(pabc))
DEALLOCATE (pabc_block)
5295 NULLIFY (munu_block)
5297 row=irow, col=icol, block=munu_block, found=found)
5299 munu_block(:, :) = 0.0_dp
5300 IF (irow .EQ. iatom)
THEN
5301 to_be_asserted =
SIZE(munu_block, 1) .EQ.
SIZE(habc, 1) .AND.
SIZE(munu_block, 2) .EQ.
SIZE(habc, 2)
5302 cpassert(to_be_asserted)
5303 munu_block(:, :) = habc(:, :, ic)
5305 to_be_asserted =
SIZE(munu_block, 2) .EQ.
SIZE(habc, 1) .AND.
SIZE(munu_block, 1) .EQ.
SIZE(habc, 2)
5306 cpassert(to_be_asserted)
5307 munu_block(:, :) = transpose(habc(:, :, ic))
5311 IF (calculate_forces)
THEN
5314 IF (
PRESENT(mat_dabc))
THEN
5315 NULLIFY (munu_block)
5317 row=irow, col=icol, block=munu_block, found=found)
5319 munu_block(:, :) = 0.0_dp
5320 IF (irow .EQ. iatom)
THEN
5321 munu_block(:, :) = hdabc(i_xyz, :, :, ic)
5323 munu_block(:, :) = transpose(hdabc(i_xyz, :, :, ic))
5326 IF (
PRESENT(mat_adbc))
THEN
5327 NULLIFY (munu_block)
5329 row=irow, col=icol, block=munu_block, found=found)
5331 munu_block(:, :) = 0.0_dp
5332 IF (irow .EQ. iatom)
THEN
5333 munu_block(:, :) = hadbc(i_xyz, :, :, ic)
5335 munu_block(:, :) = transpose(hadbc(i_xyz, :, :, ic))
5338 IF (
PRESENT(mat_abdc))
THEN
5339 NULLIFY (munu_block)
5341 row=irow, col=icol, block=munu_block, found=found)
5343 munu_block(:, :) = 0.0_dp
5344 IF (irow .EQ. iatom)
THEN
5345 munu_block(:, :) = habdc(i_xyz, :, :, ic)
5347 munu_block(:, :) = transpose(habdc(i_xyz, :, :, ic))
5352 IF (
PRESENT(mat_dabc))
DEALLOCATE (hdabc)
5353 IF (
PRESENT(mat_adbc))
DEALLOCATE (hadbc)
5354 IF (
PRESENT(mat_abdc))
DEALLOCATE (habdc)
5358 DEALLOCATE (basis_set_list_a, basis_set_list_b)
5363 CALL timestop(handle)