888 TYPE(xc_rho_set_type),
INTENT(IN) :: rho_set
889 TYPE(xc_derivative_set_type),
INTENT(IN) :: deriv_set
890 INTEGER,
INTENT(in) :: grad_deriv
891 TYPE(section_vals_type),
POINTER :: libxc_params
892 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: func_name_override
895 CHARACTER(len=*),
PARAMETER :: routinen =
'libxc_spin_unpolarized_eval'
897 CHARACTER(LEN=default_string_length) :: func_name
898 INTEGER :: handle, iw, npoints
899 INTEGER,
DIMENSION(2, 3) :: bo
900 LOGICAL :: has_laplace
901 REAL(kind=dp) :: epsilon_rho, epsilon_tau, func_scale
902 TYPE(libxc_worker_set_type),
POINTER :: workers
903 TYPE(section_vals_type),
POINTER :: no_params
904 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: dummy, e_0, e_laplace_rho, &
905 e_laplace_rho_laplace_rho, e_laplace_rho_tau, e_ndrho, &
906 e_ndrho_laplace_rho, e_ndrho_ndrho, e_ndrho_rho, e_ndrho_tau, e_rho, &
907 e_rho_laplace_rho, e_rho_rho, e_rho_rho_rho, e_rho_tau, e_tau, &
908 e_tau_tau, laplace_rho, norm_drho, rho, tau
910 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma
911 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_gamma
912 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_gamma
913 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_laplace_rho
914 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_tau
915 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_rho_gamma
916 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_rho_laplace_rho
917 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_rho_tau
918 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_gamma_gamma
919 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_gamma_laplace_rho
920 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_gamma_tau
921 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_laplace_rho_laplace_rho
922 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_laplace_rho_tau
923 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rho_tau_tau
924 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_gamma_gamma
925 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_gamma_laplace_rho
926 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_gamma_tau
927 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_laplace_rho_laplace_rho
928 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_laplace_rho_tau
929 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_tau_tau
930 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rho_laplace_rho_laplace_rho
931 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rho_laplace_rho_tau
932 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rho_tau_tau
933 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_tau_tau_tau
934 TYPE(xc_derivative_type),
POINTER :: deriv
935 TYPE(xc_f03_func_info_t) :: xc_info
937 CALL timeset(routinen, handle)
942 IF (grad_deriv < 0)
THEN
943 cpabort(
"Evaluating a single derivative order is not supported.")
945 IF (grad_deriv > 3)
THEN
946 cpabort(
"derivatives larger than 3 not implemented")
949 has_laplace = .false.
952 NULLIFY (rho, norm_drho, laplace_rho, tau)
954 IF (
PRESENT(func_name_override))
THEN
955 func_name = func_name_override
958 func_name = libxc_params%section%name
959 CALL section_vals_val_get(libxc_params,
"scale", r_val=func_scale)
962 IF (abs(func_scale - 1.0_dp) < 1.0e-10_dp) func_scale = 1.0_dp
964 CALL xc_rho_set_get(rho_set, can_return_null=.true., &
965 rho=rho, norm_drho=norm_drho, laplace_rho=laplace_rho, &
966 rho_cutoff=epsilon_rho, tau_cutoff=epsilon_tau, &
967 tau=tau, local_bounds=bo)
969 npoints = (bo(2, 1) - bo(1, 1) + 1)*(bo(2, 2) - bo(1, 2) + 1)*(bo(2, 3) - bo(1, 3) + 1)
973 IF (
PRESENT(func_name_override))
THEN
976 iw = libxc_get_workers(func_name, xc_unpolarized, no_params, epsilon_rho, epsilon_tau, &
979 iw = libxc_get_workers(func_name, xc_unpolarized, libxc_params, epsilon_rho, epsilon_tau, &
982 workers => libxc_cache(iw)
983 xc_info = workers%worker(1)%info
984 has_laplace = workers%has_laplace
988 CALL libxc_reserve_unused(npoints)
989 dummy(bo(1, 1):bo(2, 1), bo(1, 2):bo(2, 2), bo(1, 3):bo(2, 3)) => libxc_unused(1:npoints)
992 IF (.NOT.
ASSOCIATED(norm_drho)) norm_drho => rho
993 IF (.NOT.
ASSOCIATED(tau)) tau => rho
997 IF (.NOT. has_laplace) laplace_rho => rho
1002 e_laplace_rho => dummy
1005 e_ndrho_rho => dummy
1006 e_ndrho_ndrho => dummy
1007 e_rho_laplace_rho => dummy
1009 e_ndrho_laplace_rho => dummy
1010 e_ndrho_tau => dummy
1011 e_laplace_rho_laplace_rho => dummy
1012 e_laplace_rho_tau => dummy
1014 e_rho_rho_rho => dummy
1016 e_rho_gamma => dummy
1017 e_gamma_gamma => dummy
1018 e_gamma_laplace_rho => dummy
1019 e_gamma_tau => dummy
1020 e_rho_rho_gamma => dummy
1021 e_rho_rho_laplace_rho => dummy
1022 e_rho_rho_tau => dummy
1023 e_rho_gamma_gamma => dummy
1024 e_rho_gamma_laplace_rho => dummy
1025 e_rho_gamma_tau => dummy
1026 e_rho_laplace_rho_laplace_rho => dummy
1027 e_rho_laplace_rho_tau => dummy
1028 e_rho_tau_tau => dummy
1029 e_gamma_gamma_gamma => dummy
1030 e_gamma_gamma_laplace_rho => dummy
1031 e_gamma_gamma_tau => dummy
1032 e_gamma_laplace_rho_laplace_rho => dummy
1033 e_gamma_laplace_rho_tau => dummy
1034 e_gamma_tau_tau => dummy
1035 e_laplace_rho_laplace_rho_laplace_rho => dummy
1036 e_laplace_rho_laplace_rho_tau => dummy
1037 e_laplace_rho_tau_tau => dummy
1038 e_tau_tau_tau => dummy
1040 IF (grad_deriv >= 0)
THEN
1041 deriv => xc_dset_get_derivative(deriv_set, [
INTEGER::], &
1042 allocate_deriv=.true.)
1043 CALL xc_derivative_get(deriv, deriv_data=e_0)
1045 IF (grad_deriv >= 1)
THEN
1046 SELECT CASE (xc_f03_func_info_get_family(xc_info))
1047 CASE (xc_family_lda, xc_family_hyb_lda)
1048 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho], &
1049 allocate_deriv=.true.)
1050 CALL xc_derivative_get(deriv, deriv_data=e_rho)
1051 CASE (xc_family_gga, xc_family_hyb_gga)
1052 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho], &
1053 allocate_deriv=.true.)
1054 CALL xc_derivative_get(deriv, deriv_data=e_rho)
1055 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho], &
1056 allocate_deriv=.true.)
1057 CALL xc_derivative_get(deriv, deriv_data=e_ndrho)
1058 deriv => xc_dset_get_derivative(deriv_set, &
1060 allocate_deriv=.true.)
1061 CALL xc_derivative_get(deriv, deriv_data=e_gamma)
1062 CASE (xc_family_mgga, xc_family_hyb_mgga)
1063 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho], &
1064 allocate_deriv=.true.)
1065 CALL xc_derivative_get(deriv, deriv_data=e_rho)
1066 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho], &
1067 allocate_deriv=.true.)
1068 CALL xc_derivative_get(deriv, deriv_data=e_ndrho)
1069 deriv => xc_dset_get_derivative(deriv_set, &
1071 allocate_deriv=.true.)
1072 CALL xc_derivative_get(deriv, deriv_data=e_gamma)
1073 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau], &
1074 allocate_deriv=.true.)
1075 CALL xc_derivative_get(deriv, deriv_data=e_tau)
1076 IF (has_laplace)
THEN
1077 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rho], &
1078 allocate_deriv=.true.)
1079 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho)
1082 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
1085 IF (grad_deriv >= 2)
THEN
1086 SELECT CASE (xc_f03_func_info_get_family(xc_info))
1087 CASE (xc_family_lda, xc_family_hyb_lda)
1088 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho], &
1089 allocate_deriv=.true.)
1090 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho)
1091 CASE (xc_family_gga, xc_family_hyb_gga)
1092 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho], &
1093 allocate_deriv=.true.)
1094 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho)
1095 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rho], &
1096 allocate_deriv=.true.)
1097 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rho)
1098 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drho], &
1099 allocate_deriv=.true.)
1100 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrho)
1101 deriv => xc_dset_get_derivative(deriv_set, &
1102 [deriv_rho, deriv_gamma], &
1103 allocate_deriv=.true.)
1104 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma)
1105 deriv => xc_dset_get_derivative(deriv_set, &
1106 [deriv_gamma, deriv_gamma], &
1107 allocate_deriv=.true.)
1108 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma)
1109 CASE (xc_family_mgga, xc_family_hyb_mgga)
1112 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho], &
1113 allocate_deriv=.true.)
1114 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho)
1115 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rho], &
1116 allocate_deriv=.true.)
1117 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rho)
1118 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drho], &
1119 allocate_deriv=.true.)
1120 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrho)
1121 deriv => xc_dset_get_derivative(deriv_set, &
1122 [deriv_rho, deriv_gamma], &
1123 allocate_deriv=.true.)
1124 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma)
1125 deriv => xc_dset_get_derivative(deriv_set, &
1126 [deriv_gamma, deriv_gamma], &
1127 allocate_deriv=.true.)
1128 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma)
1129 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_tau], &
1130 allocate_deriv=.true.)
1131 CALL xc_derivative_get(deriv, deriv_data=e_rho_tau)
1132 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_tau], &
1133 allocate_deriv=.true.)
1134 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_tau)
1135 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau, deriv_tau], &
1136 allocate_deriv=.true.)
1137 CALL xc_derivative_get(deriv, deriv_data=e_tau_tau)
1138 deriv => xc_dset_get_derivative(deriv_set, &
1139 [deriv_gamma, deriv_tau], &
1140 allocate_deriv=.true.)
1141 CALL xc_derivative_get(deriv, deriv_data=e_gamma_tau)
1142 IF (has_laplace)
THEN
1143 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_laplace_rho], &
1144 allocate_deriv=.true.)
1145 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho)
1146 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_laplace_rho], &
1147 allocate_deriv=.true.)
1148 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_laplace_rho)
1149 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rho, deriv_laplace_rho], &
1150 allocate_deriv=.true.)
1151 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho)
1152 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rho, deriv_tau], &
1153 allocate_deriv=.true.)
1154 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_tau)
1157 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
1160 IF (grad_deriv >= 3)
THEN
1161 SELECT CASE (xc_f03_func_info_get_family(xc_info))
1162 CASE (xc_family_lda, xc_family_hyb_lda)
1163 IF (has_laplace)
THEN
1164 deriv => xc_dset_get_derivative(deriv_set, &
1165 [deriv_rho, deriv_rho, deriv_laplace_rho], &
1166 allocate_deriv=.true.)
1167 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_laplace_rho)
1168 deriv => xc_dset_get_derivative(deriv_set, &
1169 [deriv_rho, deriv_gamma, deriv_laplace_rho], &
1170 allocate_deriv=.true.)
1171 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_laplace_rho)
1172 deriv => xc_dset_get_derivative(deriv_set, &
1173 [deriv_rho, deriv_laplace_rho, deriv_laplace_rho], &
1174 allocate_deriv=.true.)
1175 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_laplace_rho)
1176 deriv => xc_dset_get_derivative(deriv_set, &
1177 [deriv_rho, deriv_laplace_rho, deriv_tau], &
1178 allocate_deriv=.true.)
1179 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_tau)
1180 deriv => xc_dset_get_derivative(deriv_set, &
1181 [deriv_gamma, deriv_gamma, deriv_laplace_rho], &
1182 allocate_deriv=.true.)
1183 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_laplace_rho)
1184 deriv => xc_dset_get_derivative(deriv_set, &
1185 [deriv_gamma, deriv_laplace_rho, deriv_laplace_rho], &
1186 allocate_deriv=.true.)
1187 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_laplace_rho)
1188 deriv => xc_dset_get_derivative(deriv_set, &
1189 [deriv_gamma, deriv_laplace_rho, deriv_tau], &
1190 allocate_deriv=.true.)
1191 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_tau)
1192 deriv => xc_dset_get_derivative(deriv_set, &
1193 [deriv_laplace_rho, deriv_laplace_rho, deriv_laplace_rho], &
1194 allocate_deriv=.true.)
1195 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_laplace_rho)
1196 deriv => xc_dset_get_derivative(deriv_set, &
1197 [deriv_laplace_rho, deriv_laplace_rho, deriv_tau], &
1198 allocate_deriv=.true.)
1199 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_tau)
1200 deriv => xc_dset_get_derivative(deriv_set, &
1201 [deriv_laplace_rho, deriv_tau, deriv_tau], &
1202 allocate_deriv=.true.)
1203 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_tau_tau)
1205 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho, deriv_rho], &
1206 allocate_deriv=.true.)
1207 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_rho)
1208 CASE (xc_family_gga, xc_family_hyb_gga)
1209 IF (has_laplace)
THEN
1210 deriv => xc_dset_get_derivative(deriv_set, &
1211 [deriv_rho, deriv_rho, deriv_laplace_rho], &
1212 allocate_deriv=.true.)
1213 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_laplace_rho)
1214 deriv => xc_dset_get_derivative(deriv_set, &
1215 [deriv_rho, deriv_gamma, deriv_laplace_rho], &
1216 allocate_deriv=.true.)
1217 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_laplace_rho)
1218 deriv => xc_dset_get_derivative(deriv_set, &
1219 [deriv_rho, deriv_laplace_rho, deriv_laplace_rho], &
1220 allocate_deriv=.true.)
1221 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_laplace_rho)
1222 deriv => xc_dset_get_derivative(deriv_set, &
1223 [deriv_rho, deriv_laplace_rho, deriv_tau], &
1224 allocate_deriv=.true.)
1225 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_tau)
1226 deriv => xc_dset_get_derivative(deriv_set, &
1227 [deriv_gamma, deriv_gamma, deriv_laplace_rho], &
1228 allocate_deriv=.true.)
1229 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_laplace_rho)
1230 deriv => xc_dset_get_derivative(deriv_set, &
1231 [deriv_gamma, deriv_laplace_rho, deriv_laplace_rho], &
1232 allocate_deriv=.true.)
1233 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_laplace_rho)
1234 deriv => xc_dset_get_derivative(deriv_set, &
1235 [deriv_gamma, deriv_laplace_rho, deriv_tau], &
1236 allocate_deriv=.true.)
1237 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_tau)
1238 deriv => xc_dset_get_derivative(deriv_set, &
1239 [deriv_laplace_rho, deriv_laplace_rho, deriv_laplace_rho], &
1240 allocate_deriv=.true.)
1241 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_laplace_rho)
1242 deriv => xc_dset_get_derivative(deriv_set, &
1243 [deriv_laplace_rho, deriv_laplace_rho, deriv_tau], &
1244 allocate_deriv=.true.)
1245 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_tau)
1246 deriv => xc_dset_get_derivative(deriv_set, &
1247 [deriv_laplace_rho, deriv_tau, deriv_tau], &
1248 allocate_deriv=.true.)
1249 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_tau_tau)
1251 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho, deriv_rho], &
1252 allocate_deriv=.true.)
1253 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_rho)
1254 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho, deriv_gamma], &
1255 allocate_deriv=.true.)
1256 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_gamma)
1257 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_gamma, deriv_gamma], &
1258 allocate_deriv=.true.)
1259 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_gamma)
1260 deriv => xc_dset_get_derivative(deriv_set, [deriv_gamma, deriv_gamma, deriv_gamma], &
1261 allocate_deriv=.true.)
1262 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_gamma)
1263 CASE (xc_family_mgga, xc_family_hyb_mgga)
1264 deriv => xc_dset_get_derivative(deriv_set, &
1265 [deriv_rho, deriv_rho, deriv_gamma], &
1266 allocate_deriv=.true.)
1267 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_gamma)
1268 deriv => xc_dset_get_derivative(deriv_set, &
1269 [deriv_rho, deriv_rho, deriv_tau], &
1270 allocate_deriv=.true.)
1271 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_tau)
1272 deriv => xc_dset_get_derivative(deriv_set, &
1273 [deriv_rho, deriv_gamma, deriv_gamma], &
1274 allocate_deriv=.true.)
1275 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_gamma)
1276 deriv => xc_dset_get_derivative(deriv_set, &
1277 [deriv_rho, deriv_gamma, deriv_tau], &
1278 allocate_deriv=.true.)
1279 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_tau)
1280 deriv => xc_dset_get_derivative(deriv_set, &
1281 [deriv_rho, deriv_tau, deriv_tau], &
1282 allocate_deriv=.true.)
1283 CALL xc_derivative_get(deriv, deriv_data=e_rho_tau_tau)
1284 deriv => xc_dset_get_derivative(deriv_set, &
1285 [deriv_gamma, deriv_gamma, deriv_gamma], &
1286 allocate_deriv=.true.)
1287 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_gamma)
1288 deriv => xc_dset_get_derivative(deriv_set, &
1289 [deriv_gamma, deriv_gamma, deriv_tau], &
1290 allocate_deriv=.true.)
1291 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_tau)
1292 deriv => xc_dset_get_derivative(deriv_set, &
1293 [deriv_gamma, deriv_tau, deriv_tau], &
1294 allocate_deriv=.true.)
1295 CALL xc_derivative_get(deriv, deriv_data=e_gamma_tau_tau)
1296 deriv => xc_dset_get_derivative(deriv_set, &
1297 [deriv_tau, deriv_tau, deriv_tau], &
1298 allocate_deriv=.true.)
1299 CALL xc_derivative_get(deriv, deriv_data=e_tau_tau_tau)
1300 IF (has_laplace)
THEN
1301 deriv => xc_dset_get_derivative(deriv_set, &
1302 [deriv_rho, deriv_rho, deriv_laplace_rho], &
1303 allocate_deriv=.true.)
1304 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_laplace_rho)
1305 deriv => xc_dset_get_derivative(deriv_set, &
1306 [deriv_rho, deriv_gamma, deriv_laplace_rho], &
1307 allocate_deriv=.true.)
1308 CALL xc_derivative_get(deriv, deriv_data=e_rho_gamma_laplace_rho)
1309 deriv => xc_dset_get_derivative(deriv_set, &
1310 [deriv_rho, deriv_laplace_rho, deriv_laplace_rho], &
1311 allocate_deriv=.true.)
1312 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_laplace_rho)
1313 deriv => xc_dset_get_derivative(deriv_set, &
1314 [deriv_rho, deriv_laplace_rho, deriv_tau], &
1315 allocate_deriv=.true.)
1316 CALL xc_derivative_get(deriv, deriv_data=e_rho_laplace_rho_tau)
1317 deriv => xc_dset_get_derivative(deriv_set, &
1318 [deriv_gamma, deriv_gamma, deriv_laplace_rho], &
1319 allocate_deriv=.true.)
1320 CALL xc_derivative_get(deriv, deriv_data=e_gamma_gamma_laplace_rho)
1321 deriv => xc_dset_get_derivative(deriv_set, &
1322 [deriv_gamma, deriv_laplace_rho, deriv_laplace_rho], &
1323 allocate_deriv=.true.)
1324 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_laplace_rho)
1325 deriv => xc_dset_get_derivative(deriv_set, &
1326 [deriv_gamma, deriv_laplace_rho, deriv_tau], &
1327 allocate_deriv=.true.)
1328 CALL xc_derivative_get(deriv, deriv_data=e_gamma_laplace_rho_tau)
1329 deriv => xc_dset_get_derivative(deriv_set, &
1330 [deriv_laplace_rho, deriv_laplace_rho, deriv_laplace_rho], &
1331 allocate_deriv=.true.)
1332 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_laplace_rho)
1333 deriv => xc_dset_get_derivative(deriv_set, &
1334 [deriv_laplace_rho, deriv_laplace_rho, deriv_tau], &
1335 allocate_deriv=.true.)
1336 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_laplace_rho_tau)
1337 deriv => xc_dset_get_derivative(deriv_set, &
1338 [deriv_laplace_rho, deriv_tau, deriv_tau], &
1339 allocate_deriv=.true.)
1340 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rho_tau_tau)
1342 deriv => xc_dset_get_derivative(deriv_set, [deriv_rho, deriv_rho, deriv_rho], &
1343 allocate_deriv=.true.)
1344 CALL xc_derivative_get(deriv, deriv_data=e_rho_rho_rho)
1346 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
1382 CALL libxc_spin_unpolarized_calc(rho=rho, norm_drho=norm_drho, &
1383 laplace_rho=laplace_rho, tau=tau, &
1384 e_0=e_0, e_rho=e_rho, e_ndrho=e_ndrho, e_laplace_rho=e_laplace_rho, &
1385 e_tau=e_tau, e_rho_rho=e_rho_rho, e_ndrho_rho=e_ndrho_rho, &
1386 e_ndrho_ndrho=e_ndrho_ndrho, e_rho_laplace_rho=e_rho_laplace_rho, &
1387 e_rho_tau=e_rho_tau, e_ndrho_laplace_rho=e_ndrho_laplace_rho, &
1388 e_ndrho_tau=e_ndrho_tau, e_laplace_rho_laplace_rho=e_laplace_rho_laplace_rho, &
1389 e_laplace_rho_tau=e_laplace_rho_tau, e_tau_tau=e_tau_tau, &
1390 e_rho_rho_rho=e_rho_rho_rho, &
1392 e_rho_gamma=e_rho_gamma, &
1393 e_gamma_gamma=e_gamma_gamma, &
1394 e_gamma_laplace_rho=e_gamma_laplace_rho, &
1395 e_gamma_tau=e_gamma_tau, &
1396 e_rho_rho_gamma=e_rho_rho_gamma, &
1397 e_rho_rho_laplace_rho=e_rho_rho_laplace_rho, &
1398 e_rho_rho_tau=e_rho_rho_tau, &
1399 e_rho_gamma_gamma=e_rho_gamma_gamma, &
1400 e_rho_gamma_laplace_rho=e_rho_gamma_laplace_rho, &
1401 e_rho_gamma_tau=e_rho_gamma_tau, &
1402 e_rho_laplace_rho_laplace_rho=e_rho_laplace_rho_laplace_rho, &
1403 e_rho_laplace_rho_tau=e_rho_laplace_rho_tau, &
1404 e_rho_tau_tau=e_rho_tau_tau, &
1405 e_gamma_gamma_gamma=e_gamma_gamma_gamma, &
1406 e_gamma_gamma_laplace_rho=e_gamma_gamma_laplace_rho, &
1407 e_gamma_gamma_tau=e_gamma_gamma_tau, &
1408 e_gamma_laplace_rho_laplace_rho=e_gamma_laplace_rho_laplace_rho, &
1409 e_gamma_laplace_rho_tau=e_gamma_laplace_rho_tau, &
1410 e_gamma_tau_tau=e_gamma_tau_tau, &
1411 e_laplace_rho_laplace_rho_laplace_rho=e_laplace_rho_laplace_rho_laplace_rho, &
1412 e_laplace_rho_laplace_rho_tau=e_laplace_rho_laplace_rho_tau, &
1413 e_laplace_rho_tau_tau=e_laplace_rho_tau_tau, &
1414 e_tau_tau_tau=e_tau_tau_tau, &
1415 grad_deriv=grad_deriv, npoints=npoints, &
1416 func_name=func_name, sc=func_scale, workers=workers)
1423 CALL timestop(handle)
1426 mark_used(deriv_set)
1427 mark_used(grad_deriv)
1428 mark_used(libxc_params)
1429 mark_used(func_name_override)
1430 CALL cp_abort(__location__,
"Unknown functional! If you are asking "// &
1431 "for a functional of the LibXC library, "// &
1432 "you have to download and install the library!")
1450 TYPE(xc_rho_set_type),
INTENT(IN) :: rho_set
1451 TYPE(xc_derivative_set_type),
INTENT(IN) :: deriv_set
1452 INTEGER,
INTENT(in) :: grad_deriv
1453 TYPE(section_vals_type),
POINTER :: libxc_params
1454 CHARACTER(LEN=*),
INTENT(IN),
OPTIONAL :: func_name_override
1456#if defined (__LIBXC)
1457 CHARACTER(len=*),
PARAMETER :: routinen =
'libxc_spin_polarized_eval'
1459 CHARACTER(LEN=default_string_length) :: func_name
1460 INTEGER :: handle, iw, npoints
1461 INTEGER,
DIMENSION(2, 3) :: bo
1462 LOGICAL :: has_laplace
1463 REAL(kind=dp) :: epsilon_rho, epsilon_tau, func_scale
1464 TYPE(libxc_worker_set_type),
POINTER :: workers
1465 TYPE(section_vals_type),
POINTER :: no_params
1466 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: dummy, e_0, e_laplace_rhoa, &
1467 e_laplace_rhoa_laplace_rhoa, e_laplace_rhoa_laplace_rhob, &
1468 e_laplace_rhoa_tau_a, e_laplace_rhoa_tau_b, e_laplace_rhob, &
1469 e_laplace_rhob_laplace_rhob, e_laplace_rhob_tau_a, &
1470 e_laplace_rhob_tau_b, e_ndrho, e_ndrho_laplace_rhoa, &
1471 e_ndrho_laplace_rhob, e_ndrho_ndrho, e_ndrho_ndrhoa, e_ndrho_ndrhob, &
1472 e_ndrho_rhoa, e_ndrho_rhob, e_ndrho_tau_a, e_ndrho_tau_b, e_ndrhoa, &
1473 e_ndrhoa_laplace_rhoa, e_ndrhoa_laplace_rhob, e_ndrhoa_ndrhoa, &
1474 e_ndrhoa_ndrhob, e_ndrhoa_rhoa, e_ndrhoa_rhob, e_ndrhoa_tau_a, &
1475 e_ndrhoa_tau_b, e_ndrhob
1476 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_ndrhob_laplace_rhoa, &
1477 e_ndrhob_laplace_rhob, e_ndrhob_ndrhob, e_ndrhob_rhoa, e_ndrhob_rhob, &
1478 e_ndrhob_tau_a, e_ndrhob_tau_b, e_rhoa, e_rhoa_laplace_rhoa, &
1479 e_rhoa_laplace_rhob, e_rhoa_rhoa, e_rhoa_rhoa_rhoa, e_rhoa_rhoa_rhob, &
1480 e_rhoa_rhob, e_rhoa_rhob_rhob, e_rhoa_tau_a, e_rhoa_tau_b, e_rhob, &
1481 e_rhob_laplace_rhoa, e_rhob_laplace_rhob, e_rhob_rhob, &
1482 e_rhob_rhob_rhob, e_rhob_tau_a, e_rhob_tau_b, e_tau_a, e_tau_a_tau_a, &
1483 e_tau_a_tau_b, e_tau_b, e_tau_b_tau_b, laplace_rhoa, laplace_rhob, &
1484 norm_drho, norm_drhoa, norm_drhob, rhoa, rhob, tau_a, tau_b
1486 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa
1487 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab
1488 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb
1489 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa
1490 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab
1491 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb
1492 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa
1493 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab
1494 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb
1495 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa
1496 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab
1497 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb
1498 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhoa
1499 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhob
1500 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_tau_a
1501 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_tau_b
1502 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab
1503 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb
1504 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhoa
1505 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhob
1506 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_tau_a
1507 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_tau_b
1508 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb
1509 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhoa
1510 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhob
1511 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_tau_a
1512 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_tau_b
1513 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_gamma_aa
1514 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_gamma_ab
1515 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_gamma_bb
1516 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_laplace_rhoa
1517 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_laplace_rhob
1518 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_tau_a
1519 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhoa_tau_b
1520 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_gamma_aa
1521 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_gamma_ab
1522 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_gamma_bb
1523 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_laplace_rhoa
1524 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_laplace_rhob
1525 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_tau_a
1526 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_rhob_tau_b
1527 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_gamma_aa
1528 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_gamma_ab
1529 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_gamma_bb
1530 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_laplace_rhoa
1531 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_laplace_rhob
1532 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_tau_a
1533 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_aa_tau_b
1534 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_gamma_ab
1535 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_gamma_bb
1536 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_laplace_rhoa
1537 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_laplace_rhob
1538 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_tau_a
1539 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_ab_tau_b
1540 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb_gamma_bb
1541 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb_laplace_rhoa
1542 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb_laplace_rhob
1543 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb_tau_a
1544 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_gamma_bb_tau_b
1545 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhoa_laplace_rhoa
1546 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhoa_laplace_rhob
1547 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhoa_tau_a
1548 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhoa_tau_b
1549 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhob_laplace_rhob
1550 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhob_tau_a
1551 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_laplace_rhob_tau_b
1552 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_tau_a_tau_a
1553 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_tau_a_tau_b
1554 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhoa_tau_b_tau_b
1555 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_gamma_aa
1556 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_gamma_ab
1557 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_gamma_bb
1558 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_laplace_rhoa
1559 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_laplace_rhob
1560 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_tau_a
1561 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_rhob_tau_b
1562 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_gamma_aa
1563 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_gamma_ab
1564 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_gamma_bb
1565 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_laplace_rhoa
1566 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_laplace_rhob
1567 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_tau_a
1568 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_aa_tau_b
1569 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_gamma_ab
1570 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_gamma_bb
1571 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_laplace_rhoa
1572 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_laplace_rhob
1573 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_tau_a
1574 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_ab_tau_b
1575 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb_gamma_bb
1576 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb_laplace_rhoa
1577 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb_laplace_rhob
1578 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb_tau_a
1579 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_gamma_bb_tau_b
1580 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhoa_laplace_rhoa
1581 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhoa_laplace_rhob
1582 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhoa_tau_a
1583 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhoa_tau_b
1584 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhob_laplace_rhob
1585 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhob_tau_a
1586 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_laplace_rhob_tau_b
1587 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_tau_a_tau_a
1588 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_tau_a_tau_b
1589 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_rhob_tau_b_tau_b
1590 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_gamma_aa
1591 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_gamma_ab
1592 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_gamma_bb
1593 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_laplace_rhoa
1594 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_laplace_rhob
1595 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_tau_a
1596 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_aa_tau_b
1597 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_gamma_ab
1598 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_gamma_bb
1599 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_laplace_rhoa
1600 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_laplace_rhob
1601 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_tau_a
1602 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_ab_tau_b
1603 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb_gamma_bb
1604 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb_laplace_rhoa
1605 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb_laplace_rhob
1606 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb_tau_a
1607 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_gamma_bb_tau_b
1608 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhoa_laplace_rhoa
1609 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhoa_laplace_rhob
1610 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhoa_tau_a
1611 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhoa_tau_b
1612 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhob_laplace_rhob
1613 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhob_tau_a
1614 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_laplace_rhob_tau_b
1615 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_tau_a_tau_a
1616 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_tau_a_tau_b
1617 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_aa_tau_b_tau_b
1618 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_gamma_ab
1619 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_gamma_bb
1620 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_laplace_rhoa
1621 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_laplace_rhob
1622 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_tau_a
1623 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_ab_tau_b
1624 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb_gamma_bb
1625 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb_laplace_rhoa
1626 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb_laplace_rhob
1627 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb_tau_a
1628 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_gamma_bb_tau_b
1629 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhoa_laplace_rhoa
1630 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhoa_laplace_rhob
1631 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhoa_tau_a
1632 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhoa_tau_b
1633 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhob_laplace_rhob
1634 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhob_tau_a
1635 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_laplace_rhob_tau_b
1636 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_tau_a_tau_a
1637 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_tau_a_tau_b
1638 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_ab_tau_b_tau_b
1639 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb_gamma_bb
1640 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb_laplace_rhoa
1641 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb_laplace_rhob
1642 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb_tau_a
1643 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_gamma_bb_tau_b
1644 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhoa_laplace_rhoa
1645 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhoa_laplace_rhob
1646 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhoa_tau_a
1647 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhoa_tau_b
1648 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhob_laplace_rhob
1649 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhob_tau_a
1650 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_laplace_rhob_tau_b
1651 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_tau_a_tau_a
1652 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_tau_a_tau_b
1653 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_gamma_bb_tau_b_tau_b
1654 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhoa_laplace_rhoa
1655 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhoa_laplace_rhob
1656 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhoa_tau_a
1657 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhoa_tau_b
1658 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhob_laplace_rhob
1659 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhob_tau_a
1660 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_laplace_rhob_tau_b
1661 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_tau_a_tau_a
1662 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_tau_a_tau_b
1663 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhoa_tau_b_tau_b
1664 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_laplace_rhob_laplace_rhob
1665 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_laplace_rhob_tau_a
1666 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_laplace_rhob_tau_b
1667 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_tau_a_tau_a
1668 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_tau_a_tau_b
1669 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_laplace_rhob_tau_b_tau_b
1670 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_tau_a_tau_a_tau_a
1671 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_tau_a_tau_a_tau_b
1672 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_tau_a_tau_b_tau_b
1673 REAL(kind=dp),
CONTIGUOUS,
DIMENSION(:, :, :),
POINTER :: e_tau_b_tau_b_tau_b
1674 TYPE(xc_derivative_type),
POINTER :: deriv
1675 TYPE(xc_f03_func_info_t) :: xc_info
1677 CALL timeset(routinen, handle)
1682 IF (grad_deriv < 0)
THEN
1683 cpabort(
"Evaluating a single derivative order is not supported.")
1685 IF (grad_deriv > 3)
THEN
1686 cpabort(
"derivatives larger than 3 not implemented")
1691 NULLIFY (rhoa, rhob, norm_drho, norm_drhoa, norm_drhob, laplace_rhoa, &
1692 laplace_rhob, tau_a, tau_b)
1694 IF (
PRESENT(func_name_override))
THEN
1695 func_name = func_name_override
1698 func_name = libxc_params%section%name
1699 CALL section_vals_val_get(libxc_params,
"scale", r_val=func_scale)
1702 IF (abs(func_scale - 1.0_dp) < 1.0e-10_dp) func_scale = 1.0_dp
1704 CALL xc_rho_set_get(rho_set, can_return_null=.true., &
1705 rhoa=rhoa, rhob=rhob, norm_drho=norm_drho, &
1706 norm_drhoa=norm_drhoa, norm_drhob=norm_drhob, &
1707 laplace_rhoa=laplace_rhoa, laplace_rhob=laplace_rhob, &
1708 rho_cutoff=epsilon_rho, tau_cutoff=epsilon_tau, &
1709 tau_a=tau_a, tau_b=tau_b, local_bounds=bo)
1711 npoints = (bo(2, 1) - bo(1, 1) + 1)*(bo(2, 2) - bo(1, 2) + 1)*(bo(2, 3) - bo(1, 3) + 1)
1715 IF (
PRESENT(func_name_override))
THEN
1718 iw = libxc_get_workers(func_name, xc_polarized, no_params, epsilon_rho, epsilon_tau, &
1721 iw = libxc_get_workers(func_name, xc_polarized, libxc_params, epsilon_rho, epsilon_tau, &
1724 workers => libxc_cache(iw)
1725 xc_info = workers%worker(1)%info
1726 has_laplace = workers%has_laplace
1730 CALL libxc_reserve_unused(npoints)
1731 dummy(bo(1, 1):bo(2, 1), bo(1, 2):bo(2, 2), bo(1, 3):bo(2, 3)) => libxc_unused(1:npoints)
1734 IF (.NOT.
ASSOCIATED(norm_drho)) norm_drho => rhoa
1735 IF (.NOT.
ASSOCIATED(norm_drhoa)) norm_drhoa => rhoa
1736 IF (.NOT.
ASSOCIATED(norm_drhob)) norm_drhob => rhoa
1737 IF (.NOT.
ASSOCIATED(tau_a)) tau_a => rhoa
1738 IF (.NOT.
ASSOCIATED(tau_b)) tau_b => rhoa
1742 IF (.NOT. has_laplace) laplace_rhoa => rhoa
1743 IF (.NOT. has_laplace) laplace_rhob => rhoa
1751 e_laplace_rhoa => dummy
1752 e_laplace_rhob => dummy
1755 e_rhoa_rhoa => dummy
1756 e_rhoa_rhob => dummy
1757 e_rhob_rhob => dummy
1758 e_ndrho_rhoa => dummy
1759 e_ndrho_rhob => dummy
1760 e_ndrhoa_rhoa => dummy
1761 e_ndrhoa_rhob => dummy
1762 e_ndrhob_rhoa => dummy
1763 e_ndrhob_rhob => dummy
1764 e_ndrho_ndrho => dummy
1765 e_ndrho_ndrhoa => dummy
1766 e_ndrho_ndrhob => dummy
1767 e_ndrhoa_ndrhoa => dummy
1768 e_ndrhoa_ndrhob => dummy
1769 e_ndrhob_ndrhob => dummy
1770 e_rhoa_laplace_rhoa => dummy
1771 e_rhoa_laplace_rhob => dummy
1772 e_rhob_laplace_rhoa => dummy
1773 e_rhob_laplace_rhob => dummy
1774 e_rhoa_tau_a => dummy
1775 e_rhoa_tau_b => dummy
1776 e_rhob_tau_a => dummy
1777 e_rhob_tau_b => dummy
1778 e_ndrho_laplace_rhoa => dummy
1779 e_ndrho_laplace_rhob => dummy
1780 e_ndrhoa_laplace_rhoa => dummy
1781 e_ndrhoa_laplace_rhob => dummy
1782 e_ndrhob_laplace_rhoa => dummy
1783 e_ndrhob_laplace_rhob => dummy
1784 e_ndrho_tau_a => dummy
1785 e_ndrho_tau_b => dummy
1786 e_ndrhoa_tau_a => dummy
1787 e_ndrhoa_tau_b => dummy
1788 e_ndrhob_tau_a => dummy
1789 e_ndrhob_tau_b => dummy
1790 e_laplace_rhoa_laplace_rhoa => dummy
1791 e_laplace_rhoa_laplace_rhob => dummy
1792 e_laplace_rhob_laplace_rhob => dummy
1793 e_laplace_rhoa_tau_a => dummy
1794 e_laplace_rhoa_tau_b => dummy
1795 e_laplace_rhob_tau_a => dummy
1796 e_laplace_rhob_tau_b => dummy
1797 e_tau_a_tau_a => dummy
1798 e_tau_a_tau_b => dummy
1799 e_tau_b_tau_b => dummy
1800 e_rhoa_rhoa_rhoa => dummy
1801 e_rhoa_rhoa_rhob => dummy
1802 e_rhoa_rhob_rhob => dummy
1803 e_rhob_rhob_rhob => dummy
1807 e_rhoa_gamma_aa => dummy
1808 e_rhoa_gamma_ab => dummy
1809 e_rhoa_gamma_bb => dummy
1810 e_rhob_gamma_aa => dummy
1811 e_rhob_gamma_ab => dummy
1812 e_rhob_gamma_bb => dummy
1813 e_gamma_aa_gamma_aa => dummy
1814 e_gamma_aa_gamma_ab => dummy
1815 e_gamma_aa_gamma_bb => dummy
1816 e_gamma_aa_laplace_rhoa => dummy
1817 e_gamma_aa_laplace_rhob => dummy
1818 e_gamma_aa_tau_a => dummy
1819 e_gamma_aa_tau_b => dummy
1820 e_gamma_ab_gamma_ab => dummy
1821 e_gamma_ab_gamma_bb => dummy
1822 e_gamma_ab_laplace_rhoa => dummy
1823 e_gamma_ab_laplace_rhob => dummy
1824 e_gamma_ab_tau_a => dummy
1825 e_gamma_ab_tau_b => dummy
1826 e_gamma_bb_gamma_bb => dummy
1827 e_gamma_bb_laplace_rhoa => dummy
1828 e_gamma_bb_laplace_rhob => dummy
1829 e_gamma_bb_tau_a => dummy
1830 e_gamma_bb_tau_b => dummy
1831 e_rhoa_rhoa_gamma_aa => dummy
1832 e_rhoa_rhoa_gamma_ab => dummy
1833 e_rhoa_rhoa_gamma_bb => dummy
1834 e_rhoa_rhoa_laplace_rhoa => dummy
1835 e_rhoa_rhoa_laplace_rhob => dummy
1836 e_rhoa_rhoa_tau_a => dummy
1837 e_rhoa_rhoa_tau_b => dummy
1838 e_rhoa_rhob_gamma_aa => dummy
1839 e_rhoa_rhob_gamma_ab => dummy
1840 e_rhoa_rhob_gamma_bb => dummy
1841 e_rhoa_rhob_laplace_rhoa => dummy
1842 e_rhoa_rhob_laplace_rhob => dummy
1843 e_rhoa_rhob_tau_a => dummy
1844 e_rhoa_rhob_tau_b => dummy
1845 e_rhoa_gamma_aa_gamma_aa => dummy
1846 e_rhoa_gamma_aa_gamma_ab => dummy
1847 e_rhoa_gamma_aa_gamma_bb => dummy
1848 e_rhoa_gamma_aa_laplace_rhoa => dummy
1849 e_rhoa_gamma_aa_laplace_rhob => dummy
1850 e_rhoa_gamma_aa_tau_a => dummy
1851 e_rhoa_gamma_aa_tau_b => dummy
1852 e_rhoa_gamma_ab_gamma_ab => dummy
1853 e_rhoa_gamma_ab_gamma_bb => dummy
1854 e_rhoa_gamma_ab_laplace_rhoa => dummy
1855 e_rhoa_gamma_ab_laplace_rhob => dummy
1856 e_rhoa_gamma_ab_tau_a => dummy
1857 e_rhoa_gamma_ab_tau_b => dummy
1858 e_rhoa_gamma_bb_gamma_bb => dummy
1859 e_rhoa_gamma_bb_laplace_rhoa => dummy
1860 e_rhoa_gamma_bb_laplace_rhob => dummy
1861 e_rhoa_gamma_bb_tau_a => dummy
1862 e_rhoa_gamma_bb_tau_b => dummy
1863 e_rhoa_laplace_rhoa_laplace_rhoa => dummy
1864 e_rhoa_laplace_rhoa_laplace_rhob => dummy
1865 e_rhoa_laplace_rhoa_tau_a => dummy
1866 e_rhoa_laplace_rhoa_tau_b => dummy
1867 e_rhoa_laplace_rhob_laplace_rhob => dummy
1868 e_rhoa_laplace_rhob_tau_a => dummy
1869 e_rhoa_laplace_rhob_tau_b => dummy
1870 e_rhoa_tau_a_tau_a => dummy
1871 e_rhoa_tau_a_tau_b => dummy
1872 e_rhoa_tau_b_tau_b => dummy
1873 e_rhob_rhob_gamma_aa => dummy
1874 e_rhob_rhob_gamma_ab => dummy
1875 e_rhob_rhob_gamma_bb => dummy
1876 e_rhob_rhob_laplace_rhoa => dummy
1877 e_rhob_rhob_laplace_rhob => dummy
1878 e_rhob_rhob_tau_a => dummy
1879 e_rhob_rhob_tau_b => dummy
1880 e_rhob_gamma_aa_gamma_aa => dummy
1881 e_rhob_gamma_aa_gamma_ab => dummy
1882 e_rhob_gamma_aa_gamma_bb => dummy
1883 e_rhob_gamma_aa_laplace_rhoa => dummy
1884 e_rhob_gamma_aa_laplace_rhob => dummy
1885 e_rhob_gamma_aa_tau_a => dummy
1886 e_rhob_gamma_aa_tau_b => dummy
1887 e_rhob_gamma_ab_gamma_ab => dummy
1888 e_rhob_gamma_ab_gamma_bb => dummy
1889 e_rhob_gamma_ab_laplace_rhoa => dummy
1890 e_rhob_gamma_ab_laplace_rhob => dummy
1891 e_rhob_gamma_ab_tau_a => dummy
1892 e_rhob_gamma_ab_tau_b => dummy
1893 e_rhob_gamma_bb_gamma_bb => dummy
1894 e_rhob_gamma_bb_laplace_rhoa => dummy
1895 e_rhob_gamma_bb_laplace_rhob => dummy
1896 e_rhob_gamma_bb_tau_a => dummy
1897 e_rhob_gamma_bb_tau_b => dummy
1898 e_rhob_laplace_rhoa_laplace_rhoa => dummy
1899 e_rhob_laplace_rhoa_laplace_rhob => dummy
1900 e_rhob_laplace_rhoa_tau_a => dummy
1901 e_rhob_laplace_rhoa_tau_b => dummy
1902 e_rhob_laplace_rhob_laplace_rhob => dummy
1903 e_rhob_laplace_rhob_tau_a => dummy
1904 e_rhob_laplace_rhob_tau_b => dummy
1905 e_rhob_tau_a_tau_a => dummy
1906 e_rhob_tau_a_tau_b => dummy
1907 e_rhob_tau_b_tau_b => dummy
1908 e_gamma_aa_gamma_aa_gamma_aa => dummy
1909 e_gamma_aa_gamma_aa_gamma_ab => dummy
1910 e_gamma_aa_gamma_aa_gamma_bb => dummy
1911 e_gamma_aa_gamma_aa_laplace_rhoa => dummy
1912 e_gamma_aa_gamma_aa_laplace_rhob => dummy
1913 e_gamma_aa_gamma_aa_tau_a => dummy
1914 e_gamma_aa_gamma_aa_tau_b => dummy
1915 e_gamma_aa_gamma_ab_gamma_ab => dummy
1916 e_gamma_aa_gamma_ab_gamma_bb => dummy
1917 e_gamma_aa_gamma_ab_laplace_rhoa => dummy
1918 e_gamma_aa_gamma_ab_laplace_rhob => dummy
1919 e_gamma_aa_gamma_ab_tau_a => dummy
1920 e_gamma_aa_gamma_ab_tau_b => dummy
1921 e_gamma_aa_gamma_bb_gamma_bb => dummy
1922 e_gamma_aa_gamma_bb_laplace_rhoa => dummy
1923 e_gamma_aa_gamma_bb_laplace_rhob => dummy
1924 e_gamma_aa_gamma_bb_tau_a => dummy
1925 e_gamma_aa_gamma_bb_tau_b => dummy
1926 e_gamma_aa_laplace_rhoa_laplace_rhoa => dummy
1927 e_gamma_aa_laplace_rhoa_laplace_rhob => dummy
1928 e_gamma_aa_laplace_rhoa_tau_a => dummy
1929 e_gamma_aa_laplace_rhoa_tau_b => dummy
1930 e_gamma_aa_laplace_rhob_laplace_rhob => dummy
1931 e_gamma_aa_laplace_rhob_tau_a => dummy
1932 e_gamma_aa_laplace_rhob_tau_b => dummy
1933 e_gamma_aa_tau_a_tau_a => dummy
1934 e_gamma_aa_tau_a_tau_b => dummy
1935 e_gamma_aa_tau_b_tau_b => dummy
1936 e_gamma_ab_gamma_ab_gamma_ab => dummy
1937 e_gamma_ab_gamma_ab_gamma_bb => dummy
1938 e_gamma_ab_gamma_ab_laplace_rhoa => dummy
1939 e_gamma_ab_gamma_ab_laplace_rhob => dummy
1940 e_gamma_ab_gamma_ab_tau_a => dummy
1941 e_gamma_ab_gamma_ab_tau_b => dummy
1942 e_gamma_ab_gamma_bb_gamma_bb => dummy
1943 e_gamma_ab_gamma_bb_laplace_rhoa => dummy
1944 e_gamma_ab_gamma_bb_laplace_rhob => dummy
1945 e_gamma_ab_gamma_bb_tau_a => dummy
1946 e_gamma_ab_gamma_bb_tau_b => dummy
1947 e_gamma_ab_laplace_rhoa_laplace_rhoa => dummy
1948 e_gamma_ab_laplace_rhoa_laplace_rhob => dummy
1949 e_gamma_ab_laplace_rhoa_tau_a => dummy
1950 e_gamma_ab_laplace_rhoa_tau_b => dummy
1951 e_gamma_ab_laplace_rhob_laplace_rhob => dummy
1952 e_gamma_ab_laplace_rhob_tau_a => dummy
1953 e_gamma_ab_laplace_rhob_tau_b => dummy
1954 e_gamma_ab_tau_a_tau_a => dummy
1955 e_gamma_ab_tau_a_tau_b => dummy
1956 e_gamma_ab_tau_b_tau_b => dummy
1957 e_gamma_bb_gamma_bb_gamma_bb => dummy
1958 e_gamma_bb_gamma_bb_laplace_rhoa => dummy
1959 e_gamma_bb_gamma_bb_laplace_rhob => dummy
1960 e_gamma_bb_gamma_bb_tau_a => dummy
1961 e_gamma_bb_gamma_bb_tau_b => dummy
1962 e_gamma_bb_laplace_rhoa_laplace_rhoa => dummy
1963 e_gamma_bb_laplace_rhoa_laplace_rhob => dummy
1964 e_gamma_bb_laplace_rhoa_tau_a => dummy
1965 e_gamma_bb_laplace_rhoa_tau_b => dummy
1966 e_gamma_bb_laplace_rhob_laplace_rhob => dummy
1967 e_gamma_bb_laplace_rhob_tau_a => dummy
1968 e_gamma_bb_laplace_rhob_tau_b => dummy
1969 e_gamma_bb_tau_a_tau_a => dummy
1970 e_gamma_bb_tau_a_tau_b => dummy
1971 e_gamma_bb_tau_b_tau_b => dummy
1972 e_laplace_rhoa_laplace_rhoa_laplace_rhoa => dummy
1973 e_laplace_rhoa_laplace_rhoa_laplace_rhob => dummy
1974 e_laplace_rhoa_laplace_rhoa_tau_a => dummy
1975 e_laplace_rhoa_laplace_rhoa_tau_b => dummy
1976 e_laplace_rhoa_laplace_rhob_laplace_rhob => dummy
1977 e_laplace_rhoa_laplace_rhob_tau_a => dummy
1978 e_laplace_rhoa_laplace_rhob_tau_b => dummy
1979 e_laplace_rhoa_tau_a_tau_a => dummy
1980 e_laplace_rhoa_tau_a_tau_b => dummy
1981 e_laplace_rhoa_tau_b_tau_b => dummy
1982 e_laplace_rhob_laplace_rhob_laplace_rhob => dummy
1983 e_laplace_rhob_laplace_rhob_tau_a => dummy
1984 e_laplace_rhob_laplace_rhob_tau_b => dummy
1985 e_laplace_rhob_tau_a_tau_a => dummy
1986 e_laplace_rhob_tau_a_tau_b => dummy
1987 e_laplace_rhob_tau_b_tau_b => dummy
1988 e_tau_a_tau_a_tau_a => dummy
1989 e_tau_a_tau_a_tau_b => dummy
1990 e_tau_a_tau_b_tau_b => dummy
1991 e_tau_b_tau_b_tau_b => dummy
1993 IF (grad_deriv >= 0)
THEN
1994 deriv => xc_dset_get_derivative(deriv_set, [
INTEGER::], &
1995 allocate_deriv=.true.)
1996 CALL xc_derivative_get(deriv, deriv_data=e_0)
1998 IF (grad_deriv >= 1)
THEN
1999 SELECT CASE (xc_f03_func_info_get_family(xc_info))
2000 CASE (xc_family_lda, xc_family_hyb_lda)
2001 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa], &
2002 allocate_deriv=.true.)
2003 CALL xc_derivative_get(deriv, deriv_data=e_rhoa)
2004 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob], &
2005 allocate_deriv=.true.)
2006 CALL xc_derivative_get(deriv, deriv_data=e_rhob)
2007 CASE (xc_family_gga, xc_family_hyb_gga)
2008 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa], &
2009 allocate_deriv=.true.)
2010 CALL xc_derivative_get(deriv, deriv_data=e_rhoa)
2011 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob], &
2012 allocate_deriv=.true.)
2013 CALL xc_derivative_get(deriv, deriv_data=e_rhob)
2014 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho], &
2015 allocate_deriv=.true.)
2016 CALL xc_derivative_get(deriv, deriv_data=e_ndrho)
2017 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa], &
2018 allocate_deriv=.true.)
2019 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa)
2020 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob], &
2021 allocate_deriv=.true.)
2022 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob)
2023 deriv => xc_dset_get_derivative(deriv_set, &
2025 allocate_deriv=.true.)
2026 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa)
2027 deriv => xc_dset_get_derivative(deriv_set, &
2029 allocate_deriv=.true.)
2030 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab)
2031 deriv => xc_dset_get_derivative(deriv_set, &
2033 allocate_deriv=.true.)
2034 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb)
2035 CASE (xc_family_mgga, xc_family_hyb_mgga)
2036 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa], &
2037 allocate_deriv=.true.)
2038 CALL xc_derivative_get(deriv, deriv_data=e_rhoa)
2039 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob], &
2040 allocate_deriv=.true.)
2041 CALL xc_derivative_get(deriv, deriv_data=e_rhob)
2042 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho], &
2043 allocate_deriv=.true.)
2044 CALL xc_derivative_get(deriv, deriv_data=e_ndrho)
2045 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa], &
2046 allocate_deriv=.true.)
2047 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa)
2048 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob], &
2049 allocate_deriv=.true.)
2050 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob)
2051 deriv => xc_dset_get_derivative(deriv_set, &
2053 allocate_deriv=.true.)
2054 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa)
2055 deriv => xc_dset_get_derivative(deriv_set, &
2057 allocate_deriv=.true.)
2058 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab)
2059 deriv => xc_dset_get_derivative(deriv_set, &
2061 allocate_deriv=.true.)
2062 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb)
2063 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau_a], &
2064 allocate_deriv=.true.)
2065 CALL xc_derivative_get(deriv, deriv_data=e_tau_a)
2066 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau_b], &
2067 allocate_deriv=.true.)
2068 CALL xc_derivative_get(deriv, deriv_data=e_tau_b)
2069 IF (has_laplace)
THEN
2070 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa], &
2071 allocate_deriv=.true.)
2072 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa)
2073 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhob], &
2074 allocate_deriv=.true.)
2075 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob)
2078 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
2081 IF (grad_deriv >= 2)
THEN
2082 SELECT CASE (xc_f03_func_info_get_family(xc_info))
2083 CASE (xc_family_lda, xc_family_hyb_lda)
2084 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhoa], &
2085 allocate_deriv=.true.)
2086 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa)
2087 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhob], &
2088 allocate_deriv=.true.)
2089 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob)
2090 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_rhob], &
2091 allocate_deriv=.true.)
2092 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob)
2093 CASE (xc_family_gga, xc_family_hyb_gga)
2094 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhoa], &
2095 allocate_deriv=.true.)
2096 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa)
2097 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhob], &
2098 allocate_deriv=.true.)
2099 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob)
2100 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_rhob], &
2101 allocate_deriv=.true.)
2102 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob)
2103 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rhoa], &
2104 allocate_deriv=.true.)
2105 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rhoa)
2106 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rhob], &
2107 allocate_deriv=.true.)
2108 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rhob)
2109 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_rhoa], &
2110 allocate_deriv=.true.)
2111 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_rhoa)
2112 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_rhob], &
2113 allocate_deriv=.true.)
2114 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_rhob)
2115 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_rhoa], &
2116 allocate_deriv=.true.)
2117 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_rhoa)
2118 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_rhob], &
2119 allocate_deriv=.true.)
2120 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_rhob)
2121 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drho], &
2122 allocate_deriv=.true.)
2123 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrho)
2124 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drhoa], &
2125 allocate_deriv=.true.)
2126 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrhoa)
2127 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drhob], &
2128 allocate_deriv=.true.)
2129 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrhob)
2130 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_norm_drhoa], &
2131 allocate_deriv=.true.)
2132 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_ndrhoa)
2133 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_norm_drhob], &
2134 allocate_deriv=.true.)
2135 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_ndrhob)
2136 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_norm_drhob], &
2137 allocate_deriv=.true.)
2138 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_ndrhob)
2139 deriv => xc_dset_get_derivative(deriv_set, &
2140 [deriv_rhoa, deriv_gamma_aa], &
2141 allocate_deriv=.true.)
2142 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa)
2143 deriv => xc_dset_get_derivative(deriv_set, &
2144 [deriv_rhoa, deriv_gamma_ab], &
2145 allocate_deriv=.true.)
2146 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab)
2147 deriv => xc_dset_get_derivative(deriv_set, &
2148 [deriv_rhoa, deriv_gamma_bb], &
2149 allocate_deriv=.true.)
2150 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb)
2151 deriv => xc_dset_get_derivative(deriv_set, &
2152 [deriv_rhob, deriv_gamma_aa], &
2153 allocate_deriv=.true.)
2154 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa)
2155 deriv => xc_dset_get_derivative(deriv_set, &
2156 [deriv_rhob, deriv_gamma_ab], &
2157 allocate_deriv=.true.)
2158 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab)
2159 deriv => xc_dset_get_derivative(deriv_set, &
2160 [deriv_rhob, deriv_gamma_bb], &
2161 allocate_deriv=.true.)
2162 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb)
2163 deriv => xc_dset_get_derivative(deriv_set, &
2164 [deriv_gamma_aa, deriv_gamma_aa], &
2165 allocate_deriv=.true.)
2166 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa)
2167 deriv => xc_dset_get_derivative(deriv_set, &
2168 [deriv_gamma_aa, deriv_gamma_ab], &
2169 allocate_deriv=.true.)
2170 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab)
2171 deriv => xc_dset_get_derivative(deriv_set, &
2172 [deriv_gamma_aa, deriv_gamma_bb], &
2173 allocate_deriv=.true.)
2174 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb)
2175 deriv => xc_dset_get_derivative(deriv_set, &
2176 [deriv_gamma_ab, deriv_gamma_ab], &
2177 allocate_deriv=.true.)
2178 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab)
2179 deriv => xc_dset_get_derivative(deriv_set, &
2180 [deriv_gamma_ab, deriv_gamma_bb], &
2181 allocate_deriv=.true.)
2182 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb)
2183 deriv => xc_dset_get_derivative(deriv_set, &
2184 [deriv_gamma_bb, deriv_gamma_bb], &
2185 allocate_deriv=.true.)
2186 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb)
2187 CASE (xc_family_mgga, xc_family_hyb_mgga)
2189 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhoa], &
2190 allocate_deriv=.true.)
2191 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa)
2192 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhob], &
2193 allocate_deriv=.true.)
2194 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob)
2195 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_rhob], &
2196 allocate_deriv=.true.)
2197 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob)
2198 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rhoa], &
2199 allocate_deriv=.true.)
2200 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rhoa)
2201 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_rhob], &
2202 allocate_deriv=.true.)
2203 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_rhob)
2204 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_rhoa], &
2205 allocate_deriv=.true.)
2206 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_rhoa)
2207 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_rhob], &
2208 allocate_deriv=.true.)
2209 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_rhob)
2210 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_rhoa], &
2211 allocate_deriv=.true.)
2212 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_rhoa)
2213 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_rhob], &
2214 allocate_deriv=.true.)
2215 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_rhob)
2216 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drho], &
2217 allocate_deriv=.true.)
2218 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrho)
2219 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drhoa], &
2220 allocate_deriv=.true.)
2221 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrhoa)
2222 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_norm_drhob], &
2223 allocate_deriv=.true.)
2224 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_ndrhob)
2225 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_norm_drhoa], &
2226 allocate_deriv=.true.)
2227 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_ndrhoa)
2228 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_norm_drhob], &
2229 allocate_deriv=.true.)
2230 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_ndrhob)
2231 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_norm_drhob], &
2232 allocate_deriv=.true.)
2233 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_ndrhob)
2234 deriv => xc_dset_get_derivative(deriv_set, &
2235 [deriv_rhoa, deriv_gamma_aa], &
2236 allocate_deriv=.true.)
2237 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa)
2238 deriv => xc_dset_get_derivative(deriv_set, &
2239 [deriv_rhoa, deriv_gamma_ab], &
2240 allocate_deriv=.true.)
2241 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab)
2242 deriv => xc_dset_get_derivative(deriv_set, &
2243 [deriv_rhoa, deriv_gamma_bb], &
2244 allocate_deriv=.true.)
2245 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb)
2246 deriv => xc_dset_get_derivative(deriv_set, &
2247 [deriv_rhob, deriv_gamma_aa], &
2248 allocate_deriv=.true.)
2249 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa)
2250 deriv => xc_dset_get_derivative(deriv_set, &
2251 [deriv_rhob, deriv_gamma_ab], &
2252 allocate_deriv=.true.)
2253 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab)
2254 deriv => xc_dset_get_derivative(deriv_set, &
2255 [deriv_rhob, deriv_gamma_bb], &
2256 allocate_deriv=.true.)
2257 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb)
2258 deriv => xc_dset_get_derivative(deriv_set, &
2259 [deriv_gamma_aa, deriv_gamma_aa], &
2260 allocate_deriv=.true.)
2261 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa)
2262 deriv => xc_dset_get_derivative(deriv_set, &
2263 [deriv_gamma_aa, deriv_gamma_ab], &
2264 allocate_deriv=.true.)
2265 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab)
2266 deriv => xc_dset_get_derivative(deriv_set, &
2267 [deriv_gamma_aa, deriv_gamma_bb], &
2268 allocate_deriv=.true.)
2269 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb)
2270 deriv => xc_dset_get_derivative(deriv_set, &
2271 [deriv_gamma_aa, deriv_tau_a], &
2272 allocate_deriv=.true.)
2273 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_tau_a)
2274 deriv => xc_dset_get_derivative(deriv_set, &
2275 [deriv_gamma_aa, deriv_tau_b], &
2276 allocate_deriv=.true.)
2277 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_tau_b)
2278 deriv => xc_dset_get_derivative(deriv_set, &
2279 [deriv_gamma_ab, deriv_gamma_ab], &
2280 allocate_deriv=.true.)
2281 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab)
2282 deriv => xc_dset_get_derivative(deriv_set, &
2283 [deriv_gamma_ab, deriv_gamma_bb], &
2284 allocate_deriv=.true.)
2285 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb)
2286 deriv => xc_dset_get_derivative(deriv_set, &
2287 [deriv_gamma_ab, deriv_tau_a], &
2288 allocate_deriv=.true.)
2289 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_tau_a)
2290 deriv => xc_dset_get_derivative(deriv_set, &
2291 [deriv_gamma_ab, deriv_tau_b], &
2292 allocate_deriv=.true.)
2293 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_tau_b)
2294 deriv => xc_dset_get_derivative(deriv_set, &
2295 [deriv_gamma_bb, deriv_gamma_bb], &
2296 allocate_deriv=.true.)
2297 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb)
2298 deriv => xc_dset_get_derivative(deriv_set, &
2299 [deriv_gamma_bb, deriv_tau_a], &
2300 allocate_deriv=.true.)
2301 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_tau_a)
2302 deriv => xc_dset_get_derivative(deriv_set, &
2303 [deriv_gamma_bb, deriv_tau_b], &
2304 allocate_deriv=.true.)
2305 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_tau_b)
2306 IF (has_laplace)
THEN
2307 deriv => xc_dset_get_derivative(deriv_set, &
2308 [deriv_gamma_aa, deriv_laplace_rhoa], &
2309 allocate_deriv=.true.)
2310 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhoa)
2311 deriv => xc_dset_get_derivative(deriv_set, &
2312 [deriv_gamma_aa, deriv_laplace_rhob], &
2313 allocate_deriv=.true.)
2314 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhob)
2315 deriv => xc_dset_get_derivative(deriv_set, &
2316 [deriv_gamma_ab, deriv_laplace_rhoa], &
2317 allocate_deriv=.true.)
2318 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhoa)
2319 deriv => xc_dset_get_derivative(deriv_set, &
2320 [deriv_gamma_ab, deriv_laplace_rhob], &
2321 allocate_deriv=.true.)
2322 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhob)
2323 deriv => xc_dset_get_derivative(deriv_set, &
2324 [deriv_gamma_bb, deriv_laplace_rhoa], &
2325 allocate_deriv=.true.)
2326 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhoa)
2327 deriv => xc_dset_get_derivative(deriv_set, &
2328 [deriv_gamma_bb, deriv_laplace_rhob], &
2329 allocate_deriv=.true.)
2330 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhob)
2332 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_tau_a], &
2333 allocate_deriv=.true.)
2334 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_tau_a)
2335 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_tau_b], &
2336 allocate_deriv=.true.)
2337 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_tau_b)
2338 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_tau_a], &
2339 allocate_deriv=.true.)
2340 CALL xc_derivative_get(deriv, deriv_data=e_rhob_tau_a)
2341 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_tau_b], &
2342 allocate_deriv=.true.)
2343 CALL xc_derivative_get(deriv, deriv_data=e_rhob_tau_b)
2344 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_tau_a], &
2345 allocate_deriv=.true.)
2346 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_tau_a)
2347 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_tau_b], &
2348 allocate_deriv=.true.)
2349 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_tau_b)
2350 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_tau_a], &
2351 allocate_deriv=.true.)
2352 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_tau_a)
2353 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_tau_b], &
2354 allocate_deriv=.true.)
2355 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_tau_b)
2356 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_tau_a], &
2357 allocate_deriv=.true.)
2358 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_tau_a)
2359 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_tau_b], &
2360 allocate_deriv=.true.)
2361 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_tau_b)
2362 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau_a, deriv_tau_a], &
2363 allocate_deriv=.true.)
2364 CALL xc_derivative_get(deriv, deriv_data=e_tau_a_tau_a)
2365 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau_a, deriv_tau_b], &
2366 allocate_deriv=.true.)
2367 CALL xc_derivative_get(deriv, deriv_data=e_tau_a_tau_b)
2368 deriv => xc_dset_get_derivative(deriv_set, [deriv_tau_b, deriv_tau_b], &
2369 allocate_deriv=.true.)
2370 CALL xc_derivative_get(deriv, deriv_data=e_tau_b_tau_b)
2371 IF (has_laplace)
THEN
2372 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_laplace_rhoa], &
2373 allocate_deriv=.true.)
2374 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhoa)
2375 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_laplace_rhob], &
2376 allocate_deriv=.true.)
2377 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhob)
2378 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_laplace_rhoa], &
2379 allocate_deriv=.true.)
2380 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhoa)
2381 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_laplace_rhob], &
2382 allocate_deriv=.true.)
2383 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhob)
2384 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_laplace_rhoa], &
2385 allocate_deriv=.true.)
2386 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_laplace_rhoa)
2387 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drho, deriv_laplace_rhob], &
2388 allocate_deriv=.true.)
2389 CALL xc_derivative_get(deriv, deriv_data=e_ndrho_laplace_rhob)
2390 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_laplace_rhoa], &
2391 allocate_deriv=.true.)
2392 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_laplace_rhoa)
2393 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhoa, deriv_laplace_rhob], &
2394 allocate_deriv=.true.)
2395 CALL xc_derivative_get(deriv, deriv_data=e_ndrhoa_laplace_rhob)
2396 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_laplace_rhoa], &
2397 allocate_deriv=.true.)
2398 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_laplace_rhoa)
2399 deriv => xc_dset_get_derivative(deriv_set, [deriv_norm_drhob, deriv_laplace_rhob], &
2400 allocate_deriv=.true.)
2401 CALL xc_derivative_get(deriv, deriv_data=e_ndrhob_laplace_rhob)
2402 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa, deriv_laplace_rhoa], &
2403 allocate_deriv=.true.)
2404 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhoa)
2405 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa, deriv_laplace_rhob], &
2406 allocate_deriv=.true.)
2407 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhob)
2408 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhob, deriv_laplace_rhob], &
2409 allocate_deriv=.true.)
2410 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_laplace_rhob)
2411 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa, deriv_tau_a], &
2412 allocate_deriv=.true.)
2413 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_tau_a)
2414 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhoa, deriv_tau_b], &
2415 allocate_deriv=.true.)
2416 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_tau_b)
2417 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhob, deriv_tau_a], &
2418 allocate_deriv=.true.)
2419 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_tau_a)
2420 deriv => xc_dset_get_derivative(deriv_set, [deriv_laplace_rhob, deriv_tau_b], &
2421 allocate_deriv=.true.)
2422 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_tau_b)
2425 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
2428 IF (grad_deriv >= 3)
THEN
2429 SELECT CASE (xc_f03_func_info_get_family(xc_info))
2430 CASE (xc_family_lda, xc_family_hyb_lda)
2431 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhoa, deriv_rhoa], &
2432 allocate_deriv=.true.)
2433 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhoa)
2434 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhoa, deriv_rhob], &
2435 allocate_deriv=.true.)
2436 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhob)
2437 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhoa, deriv_rhob, deriv_rhob], &
2438 allocate_deriv=.true.)
2439 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_rhob)
2440 deriv => xc_dset_get_derivative(deriv_set, [deriv_rhob, deriv_rhob, deriv_rhob], &
2441 allocate_deriv=.true.)
2442 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_rhob)
2443 CASE (xc_family_gga, xc_family_hyb_gga)
2444 deriv => xc_dset_get_derivative(deriv_set, &
2445 [deriv_rhoa, deriv_rhoa, deriv_gamma_aa], &
2446 allocate_deriv=.true.)
2447 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_aa)
2448 deriv => xc_dset_get_derivative(deriv_set, &
2449 [deriv_rhoa, deriv_rhoa, deriv_gamma_ab], &
2450 allocate_deriv=.true.)
2451 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_ab)
2452 deriv => xc_dset_get_derivative(deriv_set, &
2453 [deriv_rhoa, deriv_rhoa, deriv_gamma_bb], &
2454 allocate_deriv=.true.)
2455 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_bb)
2456 deriv => xc_dset_get_derivative(deriv_set, &
2457 [deriv_rhoa, deriv_rhob, deriv_gamma_aa], &
2458 allocate_deriv=.true.)
2459 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_aa)
2460 deriv => xc_dset_get_derivative(deriv_set, &
2461 [deriv_rhoa, deriv_rhob, deriv_gamma_ab], &
2462 allocate_deriv=.true.)
2463 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_ab)
2464 deriv => xc_dset_get_derivative(deriv_set, &
2465 [deriv_rhoa, deriv_rhob, deriv_gamma_bb], &
2466 allocate_deriv=.true.)
2467 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_bb)
2468 deriv => xc_dset_get_derivative(deriv_set, &
2469 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_aa], &
2470 allocate_deriv=.true.)
2471 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_aa)
2472 deriv => xc_dset_get_derivative(deriv_set, &
2473 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_ab], &
2474 allocate_deriv=.true.)
2475 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_ab)
2476 deriv => xc_dset_get_derivative(deriv_set, &
2477 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_bb], &
2478 allocate_deriv=.true.)
2479 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_bb)
2480 deriv => xc_dset_get_derivative(deriv_set, &
2481 [deriv_rhoa, deriv_gamma_ab, deriv_gamma_ab], &
2482 allocate_deriv=.true.)
2483 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_gamma_ab)
2484 deriv => xc_dset_get_derivative(deriv_set, &
2485 [deriv_rhoa, deriv_gamma_ab, deriv_gamma_bb], &
2486 allocate_deriv=.true.)
2487 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_gamma_bb)
2488 deriv => xc_dset_get_derivative(deriv_set, &
2489 [deriv_rhoa, deriv_gamma_bb, deriv_gamma_bb], &
2490 allocate_deriv=.true.)
2491 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_gamma_bb)
2492 deriv => xc_dset_get_derivative(deriv_set, &
2493 [deriv_rhob, deriv_rhob, deriv_gamma_aa], &
2494 allocate_deriv=.true.)
2495 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_aa)
2496 deriv => xc_dset_get_derivative(deriv_set, &
2497 [deriv_rhob, deriv_rhob, deriv_gamma_ab], &
2498 allocate_deriv=.true.)
2499 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_ab)
2500 deriv => xc_dset_get_derivative(deriv_set, &
2501 [deriv_rhob, deriv_rhob, deriv_gamma_bb], &
2502 allocate_deriv=.true.)
2503 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_bb)
2504 deriv => xc_dset_get_derivative(deriv_set, &
2505 [deriv_rhob, deriv_gamma_aa, deriv_gamma_aa], &
2506 allocate_deriv=.true.)
2507 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_aa)
2508 deriv => xc_dset_get_derivative(deriv_set, &
2509 [deriv_rhob, deriv_gamma_aa, deriv_gamma_ab], &
2510 allocate_deriv=.true.)
2511 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_ab)
2512 deriv => xc_dset_get_derivative(deriv_set, &
2513 [deriv_rhob, deriv_gamma_aa, deriv_gamma_bb], &
2514 allocate_deriv=.true.)
2515 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_bb)
2516 deriv => xc_dset_get_derivative(deriv_set, &
2517 [deriv_rhob, deriv_gamma_ab, deriv_gamma_ab], &
2518 allocate_deriv=.true.)
2519 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_gamma_ab)
2520 deriv => xc_dset_get_derivative(deriv_set, &
2521 [deriv_rhob, deriv_gamma_ab, deriv_gamma_bb], &
2522 allocate_deriv=.true.)
2523 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_gamma_bb)
2524 deriv => xc_dset_get_derivative(deriv_set, &
2525 [deriv_rhob, deriv_gamma_bb, deriv_gamma_bb], &
2526 allocate_deriv=.true.)
2527 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_gamma_bb)
2528 deriv => xc_dset_get_derivative(deriv_set, &
2529 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_aa], &
2530 allocate_deriv=.true.)
2531 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_aa)
2532 deriv => xc_dset_get_derivative(deriv_set, &
2533 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_ab], &
2534 allocate_deriv=.true.)
2535 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_ab)
2536 deriv => xc_dset_get_derivative(deriv_set, &
2537 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_bb], &
2538 allocate_deriv=.true.)
2539 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_bb)
2540 deriv => xc_dset_get_derivative(deriv_set, &
2541 [deriv_gamma_aa, deriv_gamma_ab, deriv_gamma_ab], &
2542 allocate_deriv=.true.)
2543 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_gamma_ab)
2544 deriv => xc_dset_get_derivative(deriv_set, &
2545 [deriv_gamma_aa, deriv_gamma_ab, deriv_gamma_bb], &
2546 allocate_deriv=.true.)
2547 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_gamma_bb)
2548 deriv => xc_dset_get_derivative(deriv_set, &
2549 [deriv_gamma_aa, deriv_gamma_bb, deriv_gamma_bb], &
2550 allocate_deriv=.true.)
2551 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_gamma_bb)
2552 deriv => xc_dset_get_derivative(deriv_set, &
2553 [deriv_gamma_ab, deriv_gamma_ab, deriv_gamma_ab], &
2554 allocate_deriv=.true.)
2555 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_gamma_ab)
2556 deriv => xc_dset_get_derivative(deriv_set, &
2557 [deriv_gamma_ab, deriv_gamma_ab, deriv_gamma_bb], &
2558 allocate_deriv=.true.)
2559 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_gamma_bb)
2560 deriv => xc_dset_get_derivative(deriv_set, &
2561 [deriv_gamma_ab, deriv_gamma_bb, deriv_gamma_bb], &
2562 allocate_deriv=.true.)
2563 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_gamma_bb)
2564 deriv => xc_dset_get_derivative(deriv_set, &
2565 [deriv_gamma_bb, deriv_gamma_bb, deriv_gamma_bb], &
2566 allocate_deriv=.true.)
2567 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_gamma_bb)
2568 deriv => xc_dset_get_derivative(deriv_set, &
2569 [deriv_rhoa, deriv_rhoa, deriv_rhoa], &
2570 allocate_deriv=.true.)
2571 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhoa)
2572 deriv => xc_dset_get_derivative(deriv_set, &
2573 [deriv_rhoa, deriv_rhoa, deriv_rhob], &
2574 allocate_deriv=.true.)
2575 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhob)
2576 deriv => xc_dset_get_derivative(deriv_set, &
2577 [deriv_rhoa, deriv_rhob, deriv_rhob], &
2578 allocate_deriv=.true.)
2579 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_rhob)
2580 deriv => xc_dset_get_derivative(deriv_set, &
2581 [deriv_rhob, deriv_rhob, deriv_rhob], &
2582 allocate_deriv=.true.)
2583 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_rhob)
2584 CASE (xc_family_mgga, xc_family_hyb_mgga)
2585 deriv => xc_dset_get_derivative(deriv_set, &
2586 [deriv_rhoa, deriv_rhoa, deriv_gamma_aa], &
2587 allocate_deriv=.true.)
2588 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_aa)
2589 deriv => xc_dset_get_derivative(deriv_set, &
2590 [deriv_rhoa, deriv_rhoa, deriv_gamma_ab], &
2591 allocate_deriv=.true.)
2592 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_ab)
2593 deriv => xc_dset_get_derivative(deriv_set, &
2594 [deriv_rhoa, deriv_rhoa, deriv_gamma_bb], &
2595 allocate_deriv=.true.)
2596 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_gamma_bb)
2597 deriv => xc_dset_get_derivative(deriv_set, &
2598 [deriv_rhoa, deriv_rhoa, deriv_tau_a], &
2599 allocate_deriv=.true.)
2600 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_tau_a)
2601 deriv => xc_dset_get_derivative(deriv_set, &
2602 [deriv_rhoa, deriv_rhoa, deriv_tau_b], &
2603 allocate_deriv=.true.)
2604 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_tau_b)
2605 deriv => xc_dset_get_derivative(deriv_set, &
2606 [deriv_rhoa, deriv_rhob, deriv_gamma_aa], &
2607 allocate_deriv=.true.)
2608 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_aa)
2609 deriv => xc_dset_get_derivative(deriv_set, &
2610 [deriv_rhoa, deriv_rhob, deriv_gamma_ab], &
2611 allocate_deriv=.true.)
2612 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_ab)
2613 deriv => xc_dset_get_derivative(deriv_set, &
2614 [deriv_rhoa, deriv_rhob, deriv_gamma_bb], &
2615 allocate_deriv=.true.)
2616 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_gamma_bb)
2617 deriv => xc_dset_get_derivative(deriv_set, &
2618 [deriv_rhoa, deriv_rhob, deriv_tau_a], &
2619 allocate_deriv=.true.)
2620 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_tau_a)
2621 deriv => xc_dset_get_derivative(deriv_set, &
2622 [deriv_rhoa, deriv_rhob, deriv_tau_b], &
2623 allocate_deriv=.true.)
2624 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_tau_b)
2625 deriv => xc_dset_get_derivative(deriv_set, &
2626 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_aa], &
2627 allocate_deriv=.true.)
2628 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_aa)
2629 deriv => xc_dset_get_derivative(deriv_set, &
2630 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_ab], &
2631 allocate_deriv=.true.)
2632 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_ab)
2633 deriv => xc_dset_get_derivative(deriv_set, &
2634 [deriv_rhoa, deriv_gamma_aa, deriv_gamma_bb], &
2635 allocate_deriv=.true.)
2636 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_gamma_bb)
2637 deriv => xc_dset_get_derivative(deriv_set, &
2638 [deriv_rhoa, deriv_gamma_aa, deriv_tau_a], &
2639 allocate_deriv=.true.)
2640 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_tau_a)
2641 deriv => xc_dset_get_derivative(deriv_set, &
2642 [deriv_rhoa, deriv_gamma_aa, deriv_tau_b], &
2643 allocate_deriv=.true.)
2644 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_tau_b)
2645 deriv => xc_dset_get_derivative(deriv_set, &
2646 [deriv_rhoa, deriv_gamma_ab, deriv_gamma_ab], &
2647 allocate_deriv=.true.)
2648 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_gamma_ab)
2649 deriv => xc_dset_get_derivative(deriv_set, &
2650 [deriv_rhoa, deriv_gamma_ab, deriv_gamma_bb], &
2651 allocate_deriv=.true.)
2652 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_gamma_bb)
2653 deriv => xc_dset_get_derivative(deriv_set, &
2654 [deriv_rhoa, deriv_gamma_ab, deriv_tau_a], &
2655 allocate_deriv=.true.)
2656 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_tau_a)
2657 deriv => xc_dset_get_derivative(deriv_set, &
2658 [deriv_rhoa, deriv_gamma_ab, deriv_tau_b], &
2659 allocate_deriv=.true.)
2660 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_tau_b)
2661 deriv => xc_dset_get_derivative(deriv_set, &
2662 [deriv_rhoa, deriv_gamma_bb, deriv_gamma_bb], &
2663 allocate_deriv=.true.)
2664 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_gamma_bb)
2665 deriv => xc_dset_get_derivative(deriv_set, &
2666 [deriv_rhoa, deriv_gamma_bb, deriv_tau_a], &
2667 allocate_deriv=.true.)
2668 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_tau_a)
2669 deriv => xc_dset_get_derivative(deriv_set, &
2670 [deriv_rhoa, deriv_gamma_bb, deriv_tau_b], &
2671 allocate_deriv=.true.)
2672 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_tau_b)
2673 deriv => xc_dset_get_derivative(deriv_set, &
2674 [deriv_rhoa, deriv_tau_a, deriv_tau_a], &
2675 allocate_deriv=.true.)
2676 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_tau_a_tau_a)
2677 deriv => xc_dset_get_derivative(deriv_set, &
2678 [deriv_rhoa, deriv_tau_a, deriv_tau_b], &
2679 allocate_deriv=.true.)
2680 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_tau_a_tau_b)
2681 deriv => xc_dset_get_derivative(deriv_set, &
2682 [deriv_rhoa, deriv_tau_b, deriv_tau_b], &
2683 allocate_deriv=.true.)
2684 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_tau_b_tau_b)
2685 deriv => xc_dset_get_derivative(deriv_set, &
2686 [deriv_rhob, deriv_rhob, deriv_gamma_aa], &
2687 allocate_deriv=.true.)
2688 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_aa)
2689 deriv => xc_dset_get_derivative(deriv_set, &
2690 [deriv_rhob, deriv_rhob, deriv_gamma_ab], &
2691 allocate_deriv=.true.)
2692 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_ab)
2693 deriv => xc_dset_get_derivative(deriv_set, &
2694 [deriv_rhob, deriv_rhob, deriv_gamma_bb], &
2695 allocate_deriv=.true.)
2696 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_gamma_bb)
2697 deriv => xc_dset_get_derivative(deriv_set, &
2698 [deriv_rhob, deriv_rhob, deriv_tau_a], &
2699 allocate_deriv=.true.)
2700 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_tau_a)
2701 deriv => xc_dset_get_derivative(deriv_set, &
2702 [deriv_rhob, deriv_rhob, deriv_tau_b], &
2703 allocate_deriv=.true.)
2704 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_tau_b)
2705 deriv => xc_dset_get_derivative(deriv_set, &
2706 [deriv_rhob, deriv_gamma_aa, deriv_gamma_aa], &
2707 allocate_deriv=.true.)
2708 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_aa)
2709 deriv => xc_dset_get_derivative(deriv_set, &
2710 [deriv_rhob, deriv_gamma_aa, deriv_gamma_ab], &
2711 allocate_deriv=.true.)
2712 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_ab)
2713 deriv => xc_dset_get_derivative(deriv_set, &
2714 [deriv_rhob, deriv_gamma_aa, deriv_gamma_bb], &
2715 allocate_deriv=.true.)
2716 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_gamma_bb)
2717 deriv => xc_dset_get_derivative(deriv_set, &
2718 [deriv_rhob, deriv_gamma_aa, deriv_tau_a], &
2719 allocate_deriv=.true.)
2720 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_tau_a)
2721 deriv => xc_dset_get_derivative(deriv_set, &
2722 [deriv_rhob, deriv_gamma_aa, deriv_tau_b], &
2723 allocate_deriv=.true.)
2724 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_tau_b)
2725 deriv => xc_dset_get_derivative(deriv_set, &
2726 [deriv_rhob, deriv_gamma_ab, deriv_gamma_ab], &
2727 allocate_deriv=.true.)
2728 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_gamma_ab)
2729 deriv => xc_dset_get_derivative(deriv_set, &
2730 [deriv_rhob, deriv_gamma_ab, deriv_gamma_bb], &
2731 allocate_deriv=.true.)
2732 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_gamma_bb)
2733 deriv => xc_dset_get_derivative(deriv_set, &
2734 [deriv_rhob, deriv_gamma_ab, deriv_tau_a], &
2735 allocate_deriv=.true.)
2736 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_tau_a)
2737 deriv => xc_dset_get_derivative(deriv_set, &
2738 [deriv_rhob, deriv_gamma_ab, deriv_tau_b], &
2739 allocate_deriv=.true.)
2740 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_tau_b)
2741 deriv => xc_dset_get_derivative(deriv_set, &
2742 [deriv_rhob, deriv_gamma_bb, deriv_gamma_bb], &
2743 allocate_deriv=.true.)
2744 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_gamma_bb)
2745 deriv => xc_dset_get_derivative(deriv_set, &
2746 [deriv_rhob, deriv_gamma_bb, deriv_tau_a], &
2747 allocate_deriv=.true.)
2748 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_tau_a)
2749 deriv => xc_dset_get_derivative(deriv_set, &
2750 [deriv_rhob, deriv_gamma_bb, deriv_tau_b], &
2751 allocate_deriv=.true.)
2752 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_tau_b)
2753 deriv => xc_dset_get_derivative(deriv_set, &
2754 [deriv_rhob, deriv_tau_a, deriv_tau_a], &
2755 allocate_deriv=.true.)
2756 CALL xc_derivative_get(deriv, deriv_data=e_rhob_tau_a_tau_a)
2757 deriv => xc_dset_get_derivative(deriv_set, &
2758 [deriv_rhob, deriv_tau_a, deriv_tau_b], &
2759 allocate_deriv=.true.)
2760 CALL xc_derivative_get(deriv, deriv_data=e_rhob_tau_a_tau_b)
2761 deriv => xc_dset_get_derivative(deriv_set, &
2762 [deriv_rhob, deriv_tau_b, deriv_tau_b], &
2763 allocate_deriv=.true.)
2764 CALL xc_derivative_get(deriv, deriv_data=e_rhob_tau_b_tau_b)
2765 deriv => xc_dset_get_derivative(deriv_set, &
2766 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_aa], &
2767 allocate_deriv=.true.)
2768 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_aa)
2769 deriv => xc_dset_get_derivative(deriv_set, &
2770 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_ab], &
2771 allocate_deriv=.true.)
2772 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_ab)
2773 deriv => xc_dset_get_derivative(deriv_set, &
2774 [deriv_gamma_aa, deriv_gamma_aa, deriv_gamma_bb], &
2775 allocate_deriv=.true.)
2776 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_gamma_bb)
2777 deriv => xc_dset_get_derivative(deriv_set, &
2778 [deriv_gamma_aa, deriv_gamma_aa, deriv_tau_a], &
2779 allocate_deriv=.true.)
2780 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_tau_a)
2781 deriv => xc_dset_get_derivative(deriv_set, &
2782 [deriv_gamma_aa, deriv_gamma_aa, deriv_tau_b], &
2783 allocate_deriv=.true.)
2784 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_tau_b)
2785 deriv => xc_dset_get_derivative(deriv_set, &
2786 [deriv_gamma_aa, deriv_gamma_ab, deriv_gamma_ab], &
2787 allocate_deriv=.true.)
2788 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_gamma_ab)
2789 deriv => xc_dset_get_derivative(deriv_set, &
2790 [deriv_gamma_aa, deriv_gamma_ab, deriv_gamma_bb], &
2791 allocate_deriv=.true.)
2792 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_gamma_bb)
2793 deriv => xc_dset_get_derivative(deriv_set, &
2794 [deriv_gamma_aa, deriv_gamma_ab, deriv_tau_a], &
2795 allocate_deriv=.true.)
2796 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_tau_a)
2797 deriv => xc_dset_get_derivative(deriv_set, &
2798 [deriv_gamma_aa, deriv_gamma_ab, deriv_tau_b], &
2799 allocate_deriv=.true.)
2800 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_tau_b)
2801 deriv => xc_dset_get_derivative(deriv_set, &
2802 [deriv_gamma_aa, deriv_gamma_bb, deriv_gamma_bb], &
2803 allocate_deriv=.true.)
2804 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_gamma_bb)
2805 deriv => xc_dset_get_derivative(deriv_set, &
2806 [deriv_gamma_aa, deriv_gamma_bb, deriv_tau_a], &
2807 allocate_deriv=.true.)
2808 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_tau_a)
2809 deriv => xc_dset_get_derivative(deriv_set, &
2810 [deriv_gamma_aa, deriv_gamma_bb, deriv_tau_b], &
2811 allocate_deriv=.true.)
2812 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_tau_b)
2813 deriv => xc_dset_get_derivative(deriv_set, &
2814 [deriv_gamma_aa, deriv_tau_a, deriv_tau_a], &
2815 allocate_deriv=.true.)
2816 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_tau_a_tau_a)
2817 deriv => xc_dset_get_derivative(deriv_set, &
2818 [deriv_gamma_aa, deriv_tau_a, deriv_tau_b], &
2819 allocate_deriv=.true.)
2820 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_tau_a_tau_b)
2821 deriv => xc_dset_get_derivative(deriv_set, &
2822 [deriv_gamma_aa, deriv_tau_b, deriv_tau_b], &
2823 allocate_deriv=.true.)
2824 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_tau_b_tau_b)
2825 deriv => xc_dset_get_derivative(deriv_set, &
2826 [deriv_gamma_ab, deriv_gamma_ab, deriv_gamma_ab], &
2827 allocate_deriv=.true.)
2828 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_gamma_ab)
2829 deriv => xc_dset_get_derivative(deriv_set, &
2830 [deriv_gamma_ab, deriv_gamma_ab, deriv_gamma_bb], &
2831 allocate_deriv=.true.)
2832 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_gamma_bb)
2833 deriv => xc_dset_get_derivative(deriv_set, &
2834 [deriv_gamma_ab, deriv_gamma_ab, deriv_tau_a], &
2835 allocate_deriv=.true.)
2836 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_tau_a)
2837 deriv => xc_dset_get_derivative(deriv_set, &
2838 [deriv_gamma_ab, deriv_gamma_ab, deriv_tau_b], &
2839 allocate_deriv=.true.)
2840 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_tau_b)
2841 deriv => xc_dset_get_derivative(deriv_set, &
2842 [deriv_gamma_ab, deriv_gamma_bb, deriv_gamma_bb], &
2843 allocate_deriv=.true.)
2844 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_gamma_bb)
2845 deriv => xc_dset_get_derivative(deriv_set, &
2846 [deriv_gamma_ab, deriv_gamma_bb, deriv_tau_a], &
2847 allocate_deriv=.true.)
2848 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_tau_a)
2849 deriv => xc_dset_get_derivative(deriv_set, &
2850 [deriv_gamma_ab, deriv_gamma_bb, deriv_tau_b], &
2851 allocate_deriv=.true.)
2852 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_tau_b)
2853 deriv => xc_dset_get_derivative(deriv_set, &
2854 [deriv_gamma_ab, deriv_tau_a, deriv_tau_a], &
2855 allocate_deriv=.true.)
2856 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_tau_a_tau_a)
2857 deriv => xc_dset_get_derivative(deriv_set, &
2858 [deriv_gamma_ab, deriv_tau_a, deriv_tau_b], &
2859 allocate_deriv=.true.)
2860 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_tau_a_tau_b)
2861 deriv => xc_dset_get_derivative(deriv_set, &
2862 [deriv_gamma_ab, deriv_tau_b, deriv_tau_b], &
2863 allocate_deriv=.true.)
2864 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_tau_b_tau_b)
2865 deriv => xc_dset_get_derivative(deriv_set, &
2866 [deriv_gamma_bb, deriv_gamma_bb, deriv_gamma_bb], &
2867 allocate_deriv=.true.)
2868 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_gamma_bb)
2869 deriv => xc_dset_get_derivative(deriv_set, &
2870 [deriv_gamma_bb, deriv_gamma_bb, deriv_tau_a], &
2871 allocate_deriv=.true.)
2872 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_tau_a)
2873 deriv => xc_dset_get_derivative(deriv_set, &
2874 [deriv_gamma_bb, deriv_gamma_bb, deriv_tau_b], &
2875 allocate_deriv=.true.)
2876 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_tau_b)
2877 deriv => xc_dset_get_derivative(deriv_set, &
2878 [deriv_gamma_bb, deriv_tau_a, deriv_tau_a], &
2879 allocate_deriv=.true.)
2880 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_tau_a_tau_a)
2881 deriv => xc_dset_get_derivative(deriv_set, &
2882 [deriv_gamma_bb, deriv_tau_a, deriv_tau_b], &
2883 allocate_deriv=.true.)
2884 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_tau_a_tau_b)
2885 deriv => xc_dset_get_derivative(deriv_set, &
2886 [deriv_gamma_bb, deriv_tau_b, deriv_tau_b], &
2887 allocate_deriv=.true.)
2888 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_tau_b_tau_b)
2889 deriv => xc_dset_get_derivative(deriv_set, &
2890 [deriv_tau_a, deriv_tau_a, deriv_tau_a], &
2891 allocate_deriv=.true.)
2892 CALL xc_derivative_get(deriv, deriv_data=e_tau_a_tau_a_tau_a)
2893 deriv => xc_dset_get_derivative(deriv_set, &
2894 [deriv_tau_a, deriv_tau_a, deriv_tau_b], &
2895 allocate_deriv=.true.)
2896 CALL xc_derivative_get(deriv, deriv_data=e_tau_a_tau_a_tau_b)
2897 deriv => xc_dset_get_derivative(deriv_set, &
2898 [deriv_tau_a, deriv_tau_b, deriv_tau_b], &
2899 allocate_deriv=.true.)
2900 CALL xc_derivative_get(deriv, deriv_data=e_tau_a_tau_b_tau_b)
2901 deriv => xc_dset_get_derivative(deriv_set, &
2902 [deriv_tau_b, deriv_tau_b, deriv_tau_b], &
2903 allocate_deriv=.true.)
2904 CALL xc_derivative_get(deriv, deriv_data=e_tau_b_tau_b_tau_b)
2905 IF (has_laplace)
THEN
2906 deriv => xc_dset_get_derivative(deriv_set, &
2907 [deriv_rhoa, deriv_rhoa, deriv_laplace_rhoa], &
2908 allocate_deriv=.true.)
2909 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_laplace_rhoa)
2910 deriv => xc_dset_get_derivative(deriv_set, &
2911 [deriv_rhoa, deriv_rhoa, deriv_laplace_rhob], &
2912 allocate_deriv=.true.)
2913 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_laplace_rhob)
2914 deriv => xc_dset_get_derivative(deriv_set, &
2915 [deriv_rhoa, deriv_rhob, deriv_laplace_rhoa], &
2916 allocate_deriv=.true.)
2917 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_laplace_rhoa)
2918 deriv => xc_dset_get_derivative(deriv_set, &
2919 [deriv_rhoa, deriv_rhob, deriv_laplace_rhob], &
2920 allocate_deriv=.true.)
2921 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_laplace_rhob)
2922 deriv => xc_dset_get_derivative(deriv_set, &
2923 [deriv_rhoa, deriv_gamma_aa, deriv_laplace_rhoa], &
2924 allocate_deriv=.true.)
2925 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_laplace_rhoa)
2926 deriv => xc_dset_get_derivative(deriv_set, &
2927 [deriv_rhoa, deriv_gamma_aa, deriv_laplace_rhob], &
2928 allocate_deriv=.true.)
2929 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_aa_laplace_rhob)
2930 deriv => xc_dset_get_derivative(deriv_set, &
2931 [deriv_rhoa, deriv_gamma_ab, deriv_laplace_rhoa], &
2932 allocate_deriv=.true.)
2933 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_laplace_rhoa)
2934 deriv => xc_dset_get_derivative(deriv_set, &
2935 [deriv_rhoa, deriv_gamma_ab, deriv_laplace_rhob], &
2936 allocate_deriv=.true.)
2937 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_ab_laplace_rhob)
2938 deriv => xc_dset_get_derivative(deriv_set, &
2939 [deriv_rhoa, deriv_gamma_bb, deriv_laplace_rhoa], &
2940 allocate_deriv=.true.)
2941 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_laplace_rhoa)
2942 deriv => xc_dset_get_derivative(deriv_set, &
2943 [deriv_rhoa, deriv_gamma_bb, deriv_laplace_rhob], &
2944 allocate_deriv=.true.)
2945 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_gamma_bb_laplace_rhob)
2946 deriv => xc_dset_get_derivative(deriv_set, &
2947 [deriv_rhoa, deriv_laplace_rhoa, deriv_laplace_rhoa], &
2948 allocate_deriv=.true.)
2949 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhoa_laplace_rhoa)
2950 deriv => xc_dset_get_derivative(deriv_set, &
2951 [deriv_rhoa, deriv_laplace_rhoa, deriv_laplace_rhob], &
2952 allocate_deriv=.true.)
2953 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhoa_laplace_rhob)
2954 deriv => xc_dset_get_derivative(deriv_set, &
2955 [deriv_rhoa, deriv_laplace_rhoa, deriv_tau_a], &
2956 allocate_deriv=.true.)
2957 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhoa_tau_a)
2958 deriv => xc_dset_get_derivative(deriv_set, &
2959 [deriv_rhoa, deriv_laplace_rhoa, deriv_tau_b], &
2960 allocate_deriv=.true.)
2961 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhoa_tau_b)
2962 deriv => xc_dset_get_derivative(deriv_set, &
2963 [deriv_rhoa, deriv_laplace_rhob, deriv_laplace_rhob], &
2964 allocate_deriv=.true.)
2965 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhob_laplace_rhob)
2966 deriv => xc_dset_get_derivative(deriv_set, &
2967 [deriv_rhoa, deriv_laplace_rhob, deriv_tau_a], &
2968 allocate_deriv=.true.)
2969 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhob_tau_a)
2970 deriv => xc_dset_get_derivative(deriv_set, &
2971 [deriv_rhoa, deriv_laplace_rhob, deriv_tau_b], &
2972 allocate_deriv=.true.)
2973 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_laplace_rhob_tau_b)
2974 deriv => xc_dset_get_derivative(deriv_set, &
2975 [deriv_rhob, deriv_rhob, deriv_laplace_rhoa], &
2976 allocate_deriv=.true.)
2977 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_laplace_rhoa)
2978 deriv => xc_dset_get_derivative(deriv_set, &
2979 [deriv_rhob, deriv_rhob, deriv_laplace_rhob], &
2980 allocate_deriv=.true.)
2981 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_laplace_rhob)
2982 deriv => xc_dset_get_derivative(deriv_set, &
2983 [deriv_rhob, deriv_gamma_aa, deriv_laplace_rhoa], &
2984 allocate_deriv=.true.)
2985 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_laplace_rhoa)
2986 deriv => xc_dset_get_derivative(deriv_set, &
2987 [deriv_rhob, deriv_gamma_aa, deriv_laplace_rhob], &
2988 allocate_deriv=.true.)
2989 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_aa_laplace_rhob)
2990 deriv => xc_dset_get_derivative(deriv_set, &
2991 [deriv_rhob, deriv_gamma_ab, deriv_laplace_rhoa], &
2992 allocate_deriv=.true.)
2993 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_laplace_rhoa)
2994 deriv => xc_dset_get_derivative(deriv_set, &
2995 [deriv_rhob, deriv_gamma_ab, deriv_laplace_rhob], &
2996 allocate_deriv=.true.)
2997 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_ab_laplace_rhob)
2998 deriv => xc_dset_get_derivative(deriv_set, &
2999 [deriv_rhob, deriv_gamma_bb, deriv_laplace_rhoa], &
3000 allocate_deriv=.true.)
3001 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_laplace_rhoa)
3002 deriv => xc_dset_get_derivative(deriv_set, &
3003 [deriv_rhob, deriv_gamma_bb, deriv_laplace_rhob], &
3004 allocate_deriv=.true.)
3005 CALL xc_derivative_get(deriv, deriv_data=e_rhob_gamma_bb_laplace_rhob)
3006 deriv => xc_dset_get_derivative(deriv_set, &
3007 [deriv_rhob, deriv_laplace_rhoa, deriv_laplace_rhoa], &
3008 allocate_deriv=.true.)
3009 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhoa_laplace_rhoa)
3010 deriv => xc_dset_get_derivative(deriv_set, &
3011 [deriv_rhob, deriv_laplace_rhoa, deriv_laplace_rhob], &
3012 allocate_deriv=.true.)
3013 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhoa_laplace_rhob)
3014 deriv => xc_dset_get_derivative(deriv_set, &
3015 [deriv_rhob, deriv_laplace_rhoa, deriv_tau_a], &
3016 allocate_deriv=.true.)
3017 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhoa_tau_a)
3018 deriv => xc_dset_get_derivative(deriv_set, &
3019 [deriv_rhob, deriv_laplace_rhoa, deriv_tau_b], &
3020 allocate_deriv=.true.)
3021 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhoa_tau_b)
3022 deriv => xc_dset_get_derivative(deriv_set, &
3023 [deriv_rhob, deriv_laplace_rhob, deriv_laplace_rhob], &
3024 allocate_deriv=.true.)
3025 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhob_laplace_rhob)
3026 deriv => xc_dset_get_derivative(deriv_set, &
3027 [deriv_rhob, deriv_laplace_rhob, deriv_tau_a], &
3028 allocate_deriv=.true.)
3029 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhob_tau_a)
3030 deriv => xc_dset_get_derivative(deriv_set, &
3031 [deriv_rhob, deriv_laplace_rhob, deriv_tau_b], &
3032 allocate_deriv=.true.)
3033 CALL xc_derivative_get(deriv, deriv_data=e_rhob_laplace_rhob_tau_b)
3034 deriv => xc_dset_get_derivative(deriv_set, &
3035 [deriv_gamma_aa, deriv_gamma_aa, deriv_laplace_rhoa], &
3036 allocate_deriv=.true.)
3037 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_laplace_rhoa)
3038 deriv => xc_dset_get_derivative(deriv_set, &
3039 [deriv_gamma_aa, deriv_gamma_aa, deriv_laplace_rhob], &
3040 allocate_deriv=.true.)
3041 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_aa_laplace_rhob)
3042 deriv => xc_dset_get_derivative(deriv_set, &
3043 [deriv_gamma_aa, deriv_gamma_ab, deriv_laplace_rhoa], &
3044 allocate_deriv=.true.)
3045 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_laplace_rhoa)
3046 deriv => xc_dset_get_derivative(deriv_set, &
3047 [deriv_gamma_aa, deriv_gamma_ab, deriv_laplace_rhob], &
3048 allocate_deriv=.true.)
3049 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_ab_laplace_rhob)
3050 deriv => xc_dset_get_derivative(deriv_set, &
3051 [deriv_gamma_aa, deriv_gamma_bb, deriv_laplace_rhoa], &
3052 allocate_deriv=.true.)
3053 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_laplace_rhoa)
3054 deriv => xc_dset_get_derivative(deriv_set, &
3055 [deriv_gamma_aa, deriv_gamma_bb, deriv_laplace_rhob], &
3056 allocate_deriv=.true.)
3057 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_gamma_bb_laplace_rhob)
3058 deriv => xc_dset_get_derivative(deriv_set, &
3059 [deriv_gamma_aa, deriv_laplace_rhoa, deriv_laplace_rhoa], &
3060 allocate_deriv=.true.)
3061 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhoa_laplace_rhoa)
3062 deriv => xc_dset_get_derivative(deriv_set, &
3063 [deriv_gamma_aa, deriv_laplace_rhoa, deriv_laplace_rhob], &
3064 allocate_deriv=.true.)
3065 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhoa_laplace_rhob)
3066 deriv => xc_dset_get_derivative(deriv_set, &
3067 [deriv_gamma_aa, deriv_laplace_rhoa, deriv_tau_a], &
3068 allocate_deriv=.true.)
3069 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhoa_tau_a)
3070 deriv => xc_dset_get_derivative(deriv_set, &
3071 [deriv_gamma_aa, deriv_laplace_rhoa, deriv_tau_b], &
3072 allocate_deriv=.true.)
3073 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhoa_tau_b)
3074 deriv => xc_dset_get_derivative(deriv_set, &
3075 [deriv_gamma_aa, deriv_laplace_rhob, deriv_laplace_rhob], &
3076 allocate_deriv=.true.)
3077 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhob_laplace_rhob)
3078 deriv => xc_dset_get_derivative(deriv_set, &
3079 [deriv_gamma_aa, deriv_laplace_rhob, deriv_tau_a], &
3080 allocate_deriv=.true.)
3081 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhob_tau_a)
3082 deriv => xc_dset_get_derivative(deriv_set, &
3083 [deriv_gamma_aa, deriv_laplace_rhob, deriv_tau_b], &
3084 allocate_deriv=.true.)
3085 CALL xc_derivative_get(deriv, deriv_data=e_gamma_aa_laplace_rhob_tau_b)
3086 deriv => xc_dset_get_derivative(deriv_set, &
3087 [deriv_gamma_ab, deriv_gamma_ab, deriv_laplace_rhoa], &
3088 allocate_deriv=.true.)
3089 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_laplace_rhoa)
3090 deriv => xc_dset_get_derivative(deriv_set, &
3091 [deriv_gamma_ab, deriv_gamma_ab, deriv_laplace_rhob], &
3092 allocate_deriv=.true.)
3093 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_ab_laplace_rhob)
3094 deriv => xc_dset_get_derivative(deriv_set, &
3095 [deriv_gamma_ab, deriv_gamma_bb, deriv_laplace_rhoa], &
3096 allocate_deriv=.true.)
3097 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_laplace_rhoa)
3098 deriv => xc_dset_get_derivative(deriv_set, &
3099 [deriv_gamma_ab, deriv_gamma_bb, deriv_laplace_rhob], &
3100 allocate_deriv=.true.)
3101 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_gamma_bb_laplace_rhob)
3102 deriv => xc_dset_get_derivative(deriv_set, &
3103 [deriv_gamma_ab, deriv_laplace_rhoa, deriv_laplace_rhoa], &
3104 allocate_deriv=.true.)
3105 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhoa_laplace_rhoa)
3106 deriv => xc_dset_get_derivative(deriv_set, &
3107 [deriv_gamma_ab, deriv_laplace_rhoa, deriv_laplace_rhob], &
3108 allocate_deriv=.true.)
3109 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhoa_laplace_rhob)
3110 deriv => xc_dset_get_derivative(deriv_set, &
3111 [deriv_gamma_ab, deriv_laplace_rhoa, deriv_tau_a], &
3112 allocate_deriv=.true.)
3113 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhoa_tau_a)
3114 deriv => xc_dset_get_derivative(deriv_set, &
3115 [deriv_gamma_ab, deriv_laplace_rhoa, deriv_tau_b], &
3116 allocate_deriv=.true.)
3117 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhoa_tau_b)
3118 deriv => xc_dset_get_derivative(deriv_set, &
3119 [deriv_gamma_ab, deriv_laplace_rhob, deriv_laplace_rhob], &
3120 allocate_deriv=.true.)
3121 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhob_laplace_rhob)
3122 deriv => xc_dset_get_derivative(deriv_set, &
3123 [deriv_gamma_ab, deriv_laplace_rhob, deriv_tau_a], &
3124 allocate_deriv=.true.)
3125 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhob_tau_a)
3126 deriv => xc_dset_get_derivative(deriv_set, &
3127 [deriv_gamma_ab, deriv_laplace_rhob, deriv_tau_b], &
3128 allocate_deriv=.true.)
3129 CALL xc_derivative_get(deriv, deriv_data=e_gamma_ab_laplace_rhob_tau_b)
3130 deriv => xc_dset_get_derivative(deriv_set, &
3131 [deriv_gamma_bb, deriv_gamma_bb, deriv_laplace_rhoa], &
3132 allocate_deriv=.true.)
3133 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_laplace_rhoa)
3134 deriv => xc_dset_get_derivative(deriv_set, &
3135 [deriv_gamma_bb, deriv_gamma_bb, deriv_laplace_rhob], &
3136 allocate_deriv=.true.)
3137 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_gamma_bb_laplace_rhob)
3138 deriv => xc_dset_get_derivative(deriv_set, &
3139 [deriv_gamma_bb, deriv_laplace_rhoa, deriv_laplace_rhoa], &
3140 allocate_deriv=.true.)
3141 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhoa_laplace_rhoa)
3142 deriv => xc_dset_get_derivative(deriv_set, &
3143 [deriv_gamma_bb, deriv_laplace_rhoa, deriv_laplace_rhob], &
3144 allocate_deriv=.true.)
3145 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhoa_laplace_rhob)
3146 deriv => xc_dset_get_derivative(deriv_set, &
3147 [deriv_gamma_bb, deriv_laplace_rhoa, deriv_tau_a], &
3148 allocate_deriv=.true.)
3149 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhoa_tau_a)
3150 deriv => xc_dset_get_derivative(deriv_set, &
3151 [deriv_gamma_bb, deriv_laplace_rhoa, deriv_tau_b], &
3152 allocate_deriv=.true.)
3153 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhoa_tau_b)
3154 deriv => xc_dset_get_derivative(deriv_set, &
3155 [deriv_gamma_bb, deriv_laplace_rhob, deriv_laplace_rhob], &
3156 allocate_deriv=.true.)
3157 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhob_laplace_rhob)
3158 deriv => xc_dset_get_derivative(deriv_set, &
3159 [deriv_gamma_bb, deriv_laplace_rhob, deriv_tau_a], &
3160 allocate_deriv=.true.)
3161 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhob_tau_a)
3162 deriv => xc_dset_get_derivative(deriv_set, &
3163 [deriv_gamma_bb, deriv_laplace_rhob, deriv_tau_b], &
3164 allocate_deriv=.true.)
3165 CALL xc_derivative_get(deriv, deriv_data=e_gamma_bb_laplace_rhob_tau_b)
3166 deriv => xc_dset_get_derivative(deriv_set, &
3167 [deriv_laplace_rhoa, deriv_laplace_rhoa, deriv_laplace_rhoa], &
3168 allocate_deriv=.true.)
3169 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhoa_laplace_rhoa)
3170 deriv => xc_dset_get_derivative(deriv_set, &
3171 [deriv_laplace_rhoa, deriv_laplace_rhoa, deriv_laplace_rhob], &
3172 allocate_deriv=.true.)
3173 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhoa_laplace_rhob)
3174 deriv => xc_dset_get_derivative(deriv_set, &
3175 [deriv_laplace_rhoa, deriv_laplace_rhoa, deriv_tau_a], &
3176 allocate_deriv=.true.)
3177 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhoa_tau_a)
3178 deriv => xc_dset_get_derivative(deriv_set, &
3179 [deriv_laplace_rhoa, deriv_laplace_rhoa, deriv_tau_b], &
3180 allocate_deriv=.true.)
3181 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhoa_tau_b)
3182 deriv => xc_dset_get_derivative(deriv_set, &
3183 [deriv_laplace_rhoa, deriv_laplace_rhob, deriv_laplace_rhob], &
3184 allocate_deriv=.true.)
3185 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhob_laplace_rhob)
3186 deriv => xc_dset_get_derivative(deriv_set, &
3187 [deriv_laplace_rhoa, deriv_laplace_rhob, deriv_tau_a], &
3188 allocate_deriv=.true.)
3189 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhob_tau_a)
3190 deriv => xc_dset_get_derivative(deriv_set, &
3191 [deriv_laplace_rhoa, deriv_laplace_rhob, deriv_tau_b], &
3192 allocate_deriv=.true.)
3193 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_laplace_rhob_tau_b)
3194 deriv => xc_dset_get_derivative(deriv_set, &
3195 [deriv_laplace_rhoa, deriv_tau_a, deriv_tau_a], &
3196 allocate_deriv=.true.)
3197 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_tau_a_tau_a)
3198 deriv => xc_dset_get_derivative(deriv_set, &
3199 [deriv_laplace_rhoa, deriv_tau_a, deriv_tau_b], &
3200 allocate_deriv=.true.)
3201 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_tau_a_tau_b)
3202 deriv => xc_dset_get_derivative(deriv_set, &
3203 [deriv_laplace_rhoa, deriv_tau_b, deriv_tau_b], &
3204 allocate_deriv=.true.)
3205 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhoa_tau_b_tau_b)
3206 deriv => xc_dset_get_derivative(deriv_set, &
3207 [deriv_laplace_rhob, deriv_laplace_rhob, deriv_laplace_rhob], &
3208 allocate_deriv=.true.)
3209 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_laplace_rhob_laplace_rhob)
3210 deriv => xc_dset_get_derivative(deriv_set, &
3211 [deriv_laplace_rhob, deriv_laplace_rhob, deriv_tau_a], &
3212 allocate_deriv=.true.)
3213 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_laplace_rhob_tau_a)
3214 deriv => xc_dset_get_derivative(deriv_set, &
3215 [deriv_laplace_rhob, deriv_laplace_rhob, deriv_tau_b], &
3216 allocate_deriv=.true.)
3217 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_laplace_rhob_tau_b)
3218 deriv => xc_dset_get_derivative(deriv_set, &
3219 [deriv_laplace_rhob, deriv_tau_a, deriv_tau_a], &
3220 allocate_deriv=.true.)
3221 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_tau_a_tau_a)
3222 deriv => xc_dset_get_derivative(deriv_set, &
3223 [deriv_laplace_rhob, deriv_tau_a, deriv_tau_b], &
3224 allocate_deriv=.true.)
3225 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_tau_a_tau_b)
3226 deriv => xc_dset_get_derivative(deriv_set, &
3227 [deriv_laplace_rhob, deriv_tau_b, deriv_tau_b], &
3228 allocate_deriv=.true.)
3229 CALL xc_derivative_get(deriv, deriv_data=e_laplace_rhob_tau_b_tau_b)
3231 deriv => xc_dset_get_derivative(deriv_set, &
3232 [deriv_rhoa, deriv_rhoa, deriv_rhoa], &
3233 allocate_deriv=.true.)
3234 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhoa)
3235 deriv => xc_dset_get_derivative(deriv_set, &
3236 [deriv_rhoa, deriv_rhoa, deriv_rhob], &
3237 allocate_deriv=.true.)
3238 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhoa_rhob)
3239 deriv => xc_dset_get_derivative(deriv_set, &
3240 [deriv_rhoa, deriv_rhob, deriv_rhob], &
3241 allocate_deriv=.true.)
3242 CALL xc_derivative_get(deriv, deriv_data=e_rhoa_rhob_rhob)
3243 deriv => xc_dset_get_derivative(deriv_set, &
3244 [deriv_rhob, deriv_rhob, deriv_rhob], &
3245 allocate_deriv=.true.)
3246 CALL xc_derivative_get(deriv, deriv_data=e_rhob_rhob_rhob)
3248 cpabort(trim(func_name)//
": this XC_FAMILY is currently not supported.")
3463 CALL libxc_spin_polarized_calc(rhoa=rhoa, rhob=rhob, norm_drho=norm_drho, &
3464 norm_drhoa=norm_drhoa, norm_drhob=norm_drhob, laplace_rhoa=laplace_rhoa, &
3465 laplace_rhob=laplace_rhob, tau_a=tau_a, tau_b=tau_b, &
3466 e_0=e_0, e_rhoa=e_rhoa, e_rhob=e_rhob, e_ndrho=e_ndrho, &
3467 e_ndrhoa=e_ndrhoa, e_ndrhob=e_ndrhob, e_laplace_rhoa=e_laplace_rhoa, &
3468 e_laplace_rhob=e_laplace_rhob, e_tau_a=e_tau_a, e_tau_b=e_tau_b, &
3469 e_rhoa_rhoa=e_rhoa_rhoa, e_rhoa_rhob=e_rhoa_rhob, e_rhob_rhob=e_rhob_rhob, &
3470 e_ndrho_rhoa=e_ndrho_rhoa, e_ndrho_rhob=e_ndrho_rhob, &
3471 e_ndrhoa_rhoa=e_ndrhoa_rhoa, e_ndrhoa_rhob=e_ndrhoa_rhob, &
3472 e_ndrhob_rhoa=e_ndrhob_rhoa, e_ndrhob_rhob=e_ndrhob_rhob, &
3473 e_ndrho_ndrho=e_ndrho_ndrho, e_ndrho_ndrhoa=e_ndrho_ndrhoa, &
3474 e_ndrho_ndrhob=e_ndrho_ndrhob, e_ndrhoa_ndrhoa=e_ndrhoa_ndrhoa, &
3475 e_ndrhoa_ndrhob=e_ndrhoa_ndrhob, e_ndrhob_ndrhob=e_ndrhob_ndrhob, &
3476 e_rhoa_laplace_rhoa=e_rhoa_laplace_rhoa, &
3477 e_rhoa_laplace_rhob=e_rhoa_laplace_rhob, &
3478 e_rhob_laplace_rhoa=e_rhob_laplace_rhoa, &
3479 e_rhob_laplace_rhob=e_rhob_laplace_rhob, &
3480 e_rhoa_tau_a=e_rhoa_tau_a, e_rhoa_tau_b=e_rhoa_tau_b, &
3481 e_rhob_tau_a=e_rhob_tau_a, e_rhob_tau_b=e_rhob_tau_b, &
3482 e_ndrho_laplace_rhoa=e_ndrho_laplace_rhoa, &
3483 e_ndrho_laplace_rhob=e_ndrho_laplace_rhob, &
3484 e_ndrhoa_laplace_rhoa=e_ndrhoa_laplace_rhoa, &
3485 e_ndrhoa_laplace_rhob=e_ndrhoa_laplace_rhob, &
3486 e_ndrhob_laplace_rhoa=e_ndrhob_laplace_rhoa, &
3487 e_ndrhob_laplace_rhob=e_ndrhob_laplace_rhob, &
3488 e_ndrho_tau_a=e_ndrho_tau_a, e_ndrho_tau_b=e_ndrho_tau_b, &
3489 e_ndrhoa_tau_a=e_ndrhoa_tau_a, e_ndrhoa_tau_b=e_ndrhoa_tau_b, &
3490 e_ndrhob_tau_a=e_ndrhob_tau_a, e_ndrhob_tau_b=e_ndrhob_tau_b, &
3491 e_laplace_rhoa_laplace_rhoa=e_laplace_rhoa_laplace_rhoa, &
3492 e_laplace_rhoa_laplace_rhob=e_laplace_rhoa_laplace_rhob, &
3493 e_laplace_rhob_laplace_rhob=e_laplace_rhob_laplace_rhob, &
3494 e_laplace_rhoa_tau_a=e_laplace_rhoa_tau_a, &
3495 e_laplace_rhoa_tau_b=e_laplace_rhoa_tau_b, &
3496 e_laplace_rhob_tau_a=e_laplace_rhob_tau_a, &
3497 e_laplace_rhob_tau_b=e_laplace_rhob_tau_b, &
3498 e_tau_a_tau_a=e_tau_a_tau_a, &
3499 e_tau_a_tau_b=e_tau_a_tau_b, &
3500 e_tau_b_tau_b=e_tau_b_tau_b, &
3501 e_rhoa_rhoa_rhoa=e_rhoa_rhoa_rhoa, &
3502 e_rhoa_rhoa_rhob=e_rhoa_rhoa_rhob, &
3503 e_rhoa_rhob_rhob=e_rhoa_rhob_rhob, &
3504 e_rhob_rhob_rhob=e_rhob_rhob_rhob, &
3505 e_gamma_aa=e_gamma_aa, &
3506 e_gamma_ab=e_gamma_ab, &
3507 e_gamma_bb=e_gamma_bb, &
3508 e_rhoa_gamma_aa=e_rhoa_gamma_aa, &
3509 e_rhoa_gamma_ab=e_rhoa_gamma_ab, &
3510 e_rhoa_gamma_bb=e_rhoa_gamma_bb, &
3511 e_rhob_gamma_aa=e_rhob_gamma_aa, &
3512 e_rhob_gamma_ab=e_rhob_gamma_ab, &
3513 e_rhob_gamma_bb=e_rhob_gamma_bb, &
3514 e_gamma_aa_gamma_aa=e_gamma_aa_gamma_aa, &
3515 e_gamma_aa_gamma_ab=e_gamma_aa_gamma_ab, &
3516 e_gamma_aa_gamma_bb=e_gamma_aa_gamma_bb, &
3517 e_gamma_aa_laplace_rhoa=e_gamma_aa_laplace_rhoa, &
3518 e_gamma_aa_laplace_rhob=e_gamma_aa_laplace_rhob, &
3519 e_gamma_aa_tau_a=e_gamma_aa_tau_a, &
3520 e_gamma_aa_tau_b=e_gamma_aa_tau_b, &
3521 e_gamma_ab_gamma_ab=e_gamma_ab_gamma_ab, &
3522 e_gamma_ab_gamma_bb=e_gamma_ab_gamma_bb, &
3523 e_gamma_ab_laplace_rhoa=e_gamma_ab_laplace_rhoa, &
3524 e_gamma_ab_laplace_rhob=e_gamma_ab_laplace_rhob, &
3525 e_gamma_ab_tau_a=e_gamma_ab_tau_a, &
3526 e_gamma_ab_tau_b=e_gamma_ab_tau_b, &
3527 e_gamma_bb_gamma_bb=e_gamma_bb_gamma_bb, &
3528 e_gamma_bb_laplace_rhoa=e_gamma_bb_laplace_rhoa, &
3529 e_gamma_bb_laplace_rhob=e_gamma_bb_laplace_rhob, &
3530 e_gamma_bb_tau_a=e_gamma_bb_tau_a, &
3531 e_gamma_bb_tau_b=e_gamma_bb_tau_b, &
3532 e_rhoa_rhoa_gamma_aa=e_rhoa_rhoa_gamma_aa, &
3533 e_rhoa_rhoa_gamma_ab=e_rhoa_rhoa_gamma_ab, &
3534 e_rhoa_rhoa_gamma_bb=e_rhoa_rhoa_gamma_bb, &
3535 e_rhoa_rhoa_laplace_rhoa=e_rhoa_rhoa_laplace_rhoa, &
3536 e_rhoa_rhoa_laplace_rhob=e_rhoa_rhoa_laplace_rhob, &
3537 e_rhoa_rhoa_tau_a=e_rhoa_rhoa_tau_a, &
3538 e_rhoa_rhoa_tau_b=e_rhoa_rhoa_tau_b, &
3539 e_rhoa_rhob_gamma_aa=e_rhoa_rhob_gamma_aa, &
3540 e_rhoa_rhob_gamma_ab=e_rhoa_rhob_gamma_ab, &
3541 e_rhoa_rhob_gamma_bb=e_rhoa_rhob_gamma_bb, &
3542 e_rhoa_rhob_laplace_rhoa=e_rhoa_rhob_laplace_rhoa, &
3543 e_rhoa_rhob_laplace_rhob=e_rhoa_rhob_laplace_rhob, &
3544 e_rhoa_rhob_tau_a=e_rhoa_rhob_tau_a, &
3545 e_rhoa_rhob_tau_b=e_rhoa_rhob_tau_b, &
3546 e_rhoa_gamma_aa_gamma_aa=e_rhoa_gamma_aa_gamma_aa, &
3547 e_rhoa_gamma_aa_gamma_ab=e_rhoa_gamma_aa_gamma_ab, &
3548 e_rhoa_gamma_aa_gamma_bb=e_rhoa_gamma_aa_gamma_bb, &
3549 e_rhoa_gamma_aa_laplace_rhoa=e_rhoa_gamma_aa_laplace_rhoa, &
3550 e_rhoa_gamma_aa_laplace_rhob=e_rhoa_gamma_aa_laplace_rhob, &
3551 e_rhoa_gamma_aa_tau_a=e_rhoa_gamma_aa_tau_a, &
3552 e_rhoa_gamma_aa_tau_b=e_rhoa_gamma_aa_tau_b, &
3553 e_rhoa_gamma_ab_gamma_ab=e_rhoa_gamma_ab_gamma_ab, &
3554 e_rhoa_gamma_ab_gamma_bb=e_rhoa_gamma_ab_gamma_bb, &
3555 e_rhoa_gamma_ab_laplace_rhoa=e_rhoa_gamma_ab_laplace_rhoa, &
3556 e_rhoa_gamma_ab_laplace_rhob=e_rhoa_gamma_ab_laplace_rhob, &
3557 e_rhoa_gamma_ab_tau_a=e_rhoa_gamma_ab_tau_a, &
3558 e_rhoa_gamma_ab_tau_b=e_rhoa_gamma_ab_tau_b, &
3559 e_rhoa_gamma_bb_gamma_bb=e_rhoa_gamma_bb_gamma_bb, &
3560 e_rhoa_gamma_bb_laplace_rhoa=e_rhoa_gamma_bb_laplace_rhoa, &
3561 e_rhoa_gamma_bb_laplace_rhob=e_rhoa_gamma_bb_laplace_rhob, &
3562 e_rhoa_gamma_bb_tau_a=e_rhoa_gamma_bb_tau_a, &
3563 e_rhoa_gamma_bb_tau_b=e_rhoa_gamma_bb_tau_b, &
3564 e_rhoa_laplace_rhoa_laplace_rhoa=e_rhoa_laplace_rhoa_laplace_rhoa, &
3565 e_rhoa_laplace_rhoa_laplace_rhob=e_rhoa_laplace_rhoa_laplace_rhob, &
3566 e_rhoa_laplace_rhoa_tau_a=e_rhoa_laplace_rhoa_tau_a, &
3567 e_rhoa_laplace_rhoa_tau_b=e_rhoa_laplace_rhoa_tau_b, &
3568 e_rhoa_laplace_rhob_laplace_rhob=e_rhoa_laplace_rhob_laplace_rhob, &
3569 e_rhoa_laplace_rhob_tau_a=e_rhoa_laplace_rhob_tau_a, &
3570 e_rhoa_laplace_rhob_tau_b=e_rhoa_laplace_rhob_tau_b, &
3571 e_rhoa_tau_a_tau_a=e_rhoa_tau_a_tau_a, &
3572 e_rhoa_tau_a_tau_b=e_rhoa_tau_a_tau_b, &
3573 e_rhoa_tau_b_tau_b=e_rhoa_tau_b_tau_b, &
3574 e_rhob_rhob_gamma_aa=e_rhob_rhob_gamma_aa, &
3575 e_rhob_rhob_gamma_ab=e_rhob_rhob_gamma_ab, &
3576 e_rhob_rhob_gamma_bb=e_rhob_rhob_gamma_bb, &
3577 e_rhob_rhob_laplace_rhoa=e_rhob_rhob_laplace_rhoa, &
3578 e_rhob_rhob_laplace_rhob=e_rhob_rhob_laplace_rhob, &
3579 e_rhob_rhob_tau_a=e_rhob_rhob_tau_a, &
3580 e_rhob_rhob_tau_b=e_rhob_rhob_tau_b, &
3581 e_rhob_gamma_aa_gamma_aa=e_rhob_gamma_aa_gamma_aa, &
3582 e_rhob_gamma_aa_gamma_ab=e_rhob_gamma_aa_gamma_ab, &
3583 e_rhob_gamma_aa_gamma_bb=e_rhob_gamma_aa_gamma_bb, &
3584 e_rhob_gamma_aa_laplace_rhoa=e_rhob_gamma_aa_laplace_rhoa, &
3585 e_rhob_gamma_aa_laplace_rhob=e_rhob_gamma_aa_laplace_rhob, &
3586 e_rhob_gamma_aa_tau_a=e_rhob_gamma_aa_tau_a, &
3587 e_rhob_gamma_aa_tau_b=e_rhob_gamma_aa_tau_b, &
3588 e_rhob_gamma_ab_gamma_ab=e_rhob_gamma_ab_gamma_ab, &
3589 e_rhob_gamma_ab_gamma_bb=e_rhob_gamma_ab_gamma_bb, &
3590 e_rhob_gamma_ab_laplace_rhoa=e_rhob_gamma_ab_laplace_rhoa, &
3591 e_rhob_gamma_ab_laplace_rhob=e_rhob_gamma_ab_laplace_rhob, &
3592 e_rhob_gamma_ab_tau_a=e_rhob_gamma_ab_tau_a, &
3593 e_rhob_gamma_ab_tau_b=e_rhob_gamma_ab_tau_b, &
3594 e_rhob_gamma_bb_gamma_bb=e_rhob_gamma_bb_gamma_bb, &
3595 e_rhob_gamma_bb_laplace_rhoa=e_rhob_gamma_bb_laplace_rhoa, &
3596 e_rhob_gamma_bb_laplace_rhob=e_rhob_gamma_bb_laplace_rhob, &
3597 e_rhob_gamma_bb_tau_a=e_rhob_gamma_bb_tau_a, &
3598 e_rhob_gamma_bb_tau_b=e_rhob_gamma_bb_tau_b, &
3599 e_rhob_laplace_rhoa_laplace_rhoa=e_rhob_laplace_rhoa_laplace_rhoa, &
3600 e_rhob_laplace_rhoa_laplace_rhob=e_rhob_laplace_rhoa_laplace_rhob, &
3601 e_rhob_laplace_rhoa_tau_a=e_rhob_laplace_rhoa_tau_a, &
3602 e_rhob_laplace_rhoa_tau_b=e_rhob_laplace_rhoa_tau_b, &
3603 e_rhob_laplace_rhob_laplace_rhob=e_rhob_laplace_rhob_laplace_rhob, &
3604 e_rhob_laplace_rhob_tau_a=e_rhob_laplace_rhob_tau_a, &
3605 e_rhob_laplace_rhob_tau_b=e_rhob_laplace_rhob_tau_b, &
3606 e_rhob_tau_a_tau_a=e_rhob_tau_a_tau_a, &
3607 e_rhob_tau_a_tau_b=e_rhob_tau_a_tau_b, &
3608 e_rhob_tau_b_tau_b=e_rhob_tau_b_tau_b, &
3609 e_gamma_aa_gamma_aa_gamma_aa=e_gamma_aa_gamma_aa_gamma_aa, &
3610 e_gamma_aa_gamma_aa_gamma_ab=e_gamma_aa_gamma_aa_gamma_ab, &
3611 e_gamma_aa_gamma_aa_gamma_bb=e_gamma_aa_gamma_aa_gamma_bb, &
3612 e_gamma_aa_gamma_aa_laplace_rhoa=e_gamma_aa_gamma_aa_laplace_rhoa, &
3613 e_gamma_aa_gamma_aa_laplace_rhob=e_gamma_aa_gamma_aa_laplace_rhob, &
3614 e_gamma_aa_gamma_aa_tau_a=e_gamma_aa_gamma_aa_tau_a, &
3615 e_gamma_aa_gamma_aa_tau_b=e_gamma_aa_gamma_aa_tau_b, &
3616 e_gamma_aa_gamma_ab_gamma_ab=e_gamma_aa_gamma_ab_gamma_ab, &
3617 e_gamma_aa_gamma_ab_gamma_bb=e_gamma_aa_gamma_ab_gamma_bb, &
3618 e_gamma_aa_gamma_ab_laplace_rhoa=e_gamma_aa_gamma_ab_laplace_rhoa, &
3619 e_gamma_aa_gamma_ab_laplace_rhob=e_gamma_aa_gamma_ab_laplace_rhob, &
3620 e_gamma_aa_gamma_ab_tau_a=e_gamma_aa_gamma_ab_tau_a, &
3621 e_gamma_aa_gamma_ab_tau_b=e_gamma_aa_gamma_ab_tau_b, &
3622 e_gamma_aa_gamma_bb_gamma_bb=e_gamma_aa_gamma_bb_gamma_bb, &
3623 e_gamma_aa_gamma_bb_laplace_rhoa=e_gamma_aa_gamma_bb_laplace_rhoa, &
3624 e_gamma_aa_gamma_bb_laplace_rhob=e_gamma_aa_gamma_bb_laplace_rhob, &
3625 e_gamma_aa_gamma_bb_tau_a=e_gamma_aa_gamma_bb_tau_a, &
3626 e_gamma_aa_gamma_bb_tau_b=e_gamma_aa_gamma_bb_tau_b, &
3627 e_gamma_aa_laplace_rhoa_laplace_rhoa=e_gamma_aa_laplace_rhoa_laplace_rhoa, &
3628 e_gamma_aa_laplace_rhoa_laplace_rhob=e_gamma_aa_laplace_rhoa_laplace_rhob, &
3629 e_gamma_aa_laplace_rhoa_tau_a=e_gamma_aa_laplace_rhoa_tau_a, &
3630 e_gamma_aa_laplace_rhoa_tau_b=e_gamma_aa_laplace_rhoa_tau_b, &
3631 e_gamma_aa_laplace_rhob_laplace_rhob=e_gamma_aa_laplace_rhob_laplace_rhob, &
3632 e_gamma_aa_laplace_rhob_tau_a=e_gamma_aa_laplace_rhob_tau_a, &
3633 e_gamma_aa_laplace_rhob_tau_b=e_gamma_aa_laplace_rhob_tau_b, &
3634 e_gamma_aa_tau_a_tau_a=e_gamma_aa_tau_a_tau_a, &
3635 e_gamma_aa_tau_a_tau_b=e_gamma_aa_tau_a_tau_b, &
3636 e_gamma_aa_tau_b_tau_b=e_gamma_aa_tau_b_tau_b, &
3637 e_gamma_ab_gamma_ab_gamma_ab=e_gamma_ab_gamma_ab_gamma_ab, &
3638 e_gamma_ab_gamma_ab_gamma_bb=e_gamma_ab_gamma_ab_gamma_bb, &
3639 e_gamma_ab_gamma_ab_laplace_rhoa=e_gamma_ab_gamma_ab_laplace_rhoa, &
3640 e_gamma_ab_gamma_ab_laplace_rhob=e_gamma_ab_gamma_ab_laplace_rhob, &
3641 e_gamma_ab_gamma_ab_tau_a=e_gamma_ab_gamma_ab_tau_a, &
3642 e_gamma_ab_gamma_ab_tau_b=e_gamma_ab_gamma_ab_tau_b, &
3643 e_gamma_ab_gamma_bb_gamma_bb=e_gamma_ab_gamma_bb_gamma_bb, &
3644 e_gamma_ab_gamma_bb_laplace_rhoa=e_gamma_ab_gamma_bb_laplace_rhoa, &
3645 e_gamma_ab_gamma_bb_laplace_rhob=e_gamma_ab_gamma_bb_laplace_rhob, &
3646 e_gamma_ab_gamma_bb_tau_a=e_gamma_ab_gamma_bb_tau_a, &
3647 e_gamma_ab_gamma_bb_tau_b=e_gamma_ab_gamma_bb_tau_b, &
3648 e_gamma_ab_laplace_rhoa_laplace_rhoa=e_gamma_ab_laplace_rhoa_laplace_rhoa, &
3649 e_gamma_ab_laplace_rhoa_laplace_rhob=e_gamma_ab_laplace_rhoa_laplace_rhob, &
3650 e_gamma_ab_laplace_rhoa_tau_a=e_gamma_ab_laplace_rhoa_tau_a, &
3651 e_gamma_ab_laplace_rhoa_tau_b=e_gamma_ab_laplace_rhoa_tau_b, &
3652 e_gamma_ab_laplace_rhob_laplace_rhob=e_gamma_ab_laplace_rhob_laplace_rhob, &
3653 e_gamma_ab_laplace_rhob_tau_a=e_gamma_ab_laplace_rhob_tau_a, &
3654 e_gamma_ab_laplace_rhob_tau_b=e_gamma_ab_laplace_rhob_tau_b, &
3655 e_gamma_ab_tau_a_tau_a=e_gamma_ab_tau_a_tau_a, &
3656 e_gamma_ab_tau_a_tau_b=e_gamma_ab_tau_a_tau_b, &
3657 e_gamma_ab_tau_b_tau_b=e_gamma_ab_tau_b_tau_b, &
3658 e_gamma_bb_gamma_bb_gamma_bb=e_gamma_bb_gamma_bb_gamma_bb, &
3659 e_gamma_bb_gamma_bb_laplace_rhoa=e_gamma_bb_gamma_bb_laplace_rhoa, &
3660 e_gamma_bb_gamma_bb_laplace_rhob=e_gamma_bb_gamma_bb_laplace_rhob, &
3661 e_gamma_bb_gamma_bb_tau_a=e_gamma_bb_gamma_bb_tau_a, &
3662 e_gamma_bb_gamma_bb_tau_b=e_gamma_bb_gamma_bb_tau_b, &
3663 e_gamma_bb_laplace_rhoa_laplace_rhoa=e_gamma_bb_laplace_rhoa_laplace_rhoa, &
3664 e_gamma_bb_laplace_rhoa_laplace_rhob=e_gamma_bb_laplace_rhoa_laplace_rhob, &
3665 e_gamma_bb_laplace_rhoa_tau_a=e_gamma_bb_laplace_rhoa_tau_a, &
3666 e_gamma_bb_laplace_rhoa_tau_b=e_gamma_bb_laplace_rhoa_tau_b, &
3667 e_gamma_bb_laplace_rhob_laplace_rhob=e_gamma_bb_laplace_rhob_laplace_rhob, &
3668 e_gamma_bb_laplace_rhob_tau_a=e_gamma_bb_laplace_rhob_tau_a, &
3669 e_gamma_bb_laplace_rhob_tau_b=e_gamma_bb_laplace_rhob_tau_b, &
3670 e_gamma_bb_tau_a_tau_a=e_gamma_bb_tau_a_tau_a, &
3671 e_gamma_bb_tau_a_tau_b=e_gamma_bb_tau_a_tau_b, &
3672 e_gamma_bb_tau_b_tau_b=e_gamma_bb_tau_b_tau_b, &
3673 e_laplace_rhoa_laplace_rhoa_laplace_rhoa=e_laplace_rhoa_laplace_rhoa_laplace_rhoa, &
3674 e_laplace_rhoa_laplace_rhoa_laplace_rhob=e_laplace_rhoa_laplace_rhoa_laplace_rhob, &
3675 e_laplace_rhoa_laplace_rhoa_tau_a=e_laplace_rhoa_laplace_rhoa_tau_a, &
3676 e_laplace_rhoa_laplace_rhoa_tau_b=e_laplace_rhoa_laplace_rhoa_tau_b, &
3677 e_laplace_rhoa_laplace_rhob_laplace_rhob=e_laplace_rhoa_laplace_rhob_laplace_rhob, &
3678 e_laplace_rhoa_laplace_rhob_tau_a=e_laplace_rhoa_laplace_rhob_tau_a, &
3679 e_laplace_rhoa_laplace_rhob_tau_b=e_laplace_rhoa_laplace_rhob_tau_b, &
3680 e_laplace_rhoa_tau_a_tau_a=e_laplace_rhoa_tau_a_tau_a, &
3681 e_laplace_rhoa_tau_a_tau_b=e_laplace_rhoa_tau_a_tau_b, &
3682 e_laplace_rhoa_tau_b_tau_b=e_laplace_rhoa_tau_b_tau_b, &
3683 e_laplace_rhob_laplace_rhob_laplace_rhob=e_laplace_rhob_laplace_rhob_laplace_rhob, &
3684 e_laplace_rhob_laplace_rhob_tau_a=e_laplace_rhob_laplace_rhob_tau_a, &
3685 e_laplace_rhob_laplace_rhob_tau_b=e_laplace_rhob_laplace_rhob_tau_b, &
3686 e_laplace_rhob_tau_a_tau_a=e_laplace_rhob_tau_a_tau_a, &
3687 e_laplace_rhob_tau_a_tau_b=e_laplace_rhob_tau_a_tau_b, &
3688 e_laplace_rhob_tau_b_tau_b=e_laplace_rhob_tau_b_tau_b, &
3689 e_tau_a_tau_a_tau_a=e_tau_a_tau_a_tau_a, &
3690 e_tau_a_tau_a_tau_b=e_tau_a_tau_a_tau_b, &
3691 e_tau_a_tau_b_tau_b=e_tau_a_tau_b_tau_b, &
3692 e_tau_b_tau_b_tau_b=e_tau_b_tau_b_tau_b, &
3693 grad_deriv=grad_deriv, npoints=npoints, &
3694 func_name=func_name, sc=func_scale, workers=workers)
3701 CALL timestop(handle)
3704 mark_used(deriv_set)
3705 mark_used(grad_deriv)
3706 mark_used(libxc_params)
3707 mark_used(func_name_override)
3709 CALL cp_abort(__location__,
"Unknown functional! If you are asking "// &
3710 "for a functional of the LibXC library, "// &
3711 "you have to download and install the library!")