16 USE iso_c_binding,
ONLY: c_double,&
23 INTEGER(4),
PARAMETER :: LIBGRPP_CART_ORDER_DIRAC = 0
24 INTEGER(4),
PARAMETER :: LIBGRPP_CART_ORDER_TURBOMOLE = 1
26 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE = 0
27 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_CHARGED_BALL = 1
28 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_GAUSSIAN = 2
29 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_FERMI = 3
30 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_FERMI_BUBBLE = 4
31 INTEGER(4),
PARAMETER :: LIBGRPP_NUCLEAR_MODEL_POINT_CHARGE_NUMERICAL = 5
54 REAL(8),
INTENT(in) :: tolerance
59 REAL(8),
INTENT(in) :: tolerance
64 REAL(8),
INTENT(in) :: tolerance
69 INTEGER(4),
INTENT(in) :: order
74 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
75 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
76 rpp_origin, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
80 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
81 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
82 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
83 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
84 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
85 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
86 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
87 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
88 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha
89 REAL(8),
DIMENSION(*),
INTENT(out) :: matrix
98 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
99 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
100 rpp_origin, rpp_ang_momentum, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
104 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
105 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
106 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
107 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
108 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
109 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
110 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
111 INTEGER(4),
INTENT(in) :: rpp_ang_momentum
112 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
113 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha
114 REAL(8),
DIMENSION(*),
INTENT(out) :: matrix
123 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
124 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
125 rpp_origin, rpp_ang_momentum, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
126 so_x_matrix, so_y_matrix, so_z_matrix &
129 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
130 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
131 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
132 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
133 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
134 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
135 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
136 INTEGER(4),
INTENT(in) :: rpp_ang_momentum
137 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
138 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha
139 REAL(8),
DIMENSION(*),
INTENT(out) :: so_x_matrix, so_y_matrix, so_z_matrix
148 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
149 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
150 rpp_origin, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
151 point_3d, grad_arep_x, grad_arep_y, grad_arep_z &
154 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
155 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
156 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
157 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
158 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
159 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
160 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
161 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
162 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha, point_3d
163 REAL(8),
DIMENSION(*),
INTENT(out) :: grad_arep_x, grad_arep_y, grad_arep_z
173 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
174 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
175 rpp_origin, rpp_ang_momentum, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
176 point_3d, grad_arep_x, grad_arep_y, grad_arep_z &
179 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
180 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
181 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
182 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
183 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
184 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
185 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
186 INTEGER(4),
INTENT(in) :: rpp_ang_momentum
187 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
188 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha, point_3d
189 REAL(8),
DIMENSION(*),
INTENT(out) :: grad_arep_x, grad_arep_y, grad_arep_z
199 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
200 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
201 rpp_origin, rpp_ang_momentum, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
202 point_3d, grad_sox_x, grad_sox_y, grad_sox_z, &
203 grad_soy_x, grad_soy_y, grad_soy_z, &
204 grad_soz_x, grad_soz_y, grad_soz_z &
207 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_A
208 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
209 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*)
210 REAL(8),
DIMENSION(*),
INTENT(in) :: origin_B
211 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
212 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*)
213 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_origin
214 INTEGER(4),
INTENT(in) :: rpp_ang_momentum
215 INTEGER(4),
DIMENSION(*),
INTENT(in) :: rpp_num_primitives, rpp_powers
216 REAL(8),
DIMENSION(*),
INTENT(in) :: rpp_coeffs, rpp_alpha, point_3d
217 REAL(8),
DIMENSION(*),
INTENT(out) :: grad_sox_x, grad_sox_y, grad_sox_z, &
218 grad_soy_x, grad_soy_y, grad_soy_z, &
219 grad_soz_x, grad_soz_y, grad_soz_z
263 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
264 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
265 rpp_origin, num_oc_shells, &
266 oc_shells_L, oc_shells_J, rpp_num_primitives, rpp_powers, rpp_coeffs, rpp_alpha, &
267 oc_shells_num_primitives, oc_shells_coeffs, oc_shells_alpha, &
268 arep_matrix, so_x_matrix, so_y_matrix, so_z_matrix &
272 REAL(8),
INTENT(in) :: origin_A(*)
273 INTEGER(4),
INTENT(in) :: L_A, num_primitives_A
274 REAL(8),
INTENT(in) :: coeffs_A(*), alpha_A(*), origin_B(*)
275 INTEGER(4),
INTENT(in) :: L_B, num_primitives_B
276 REAL(8),
INTENT(in) :: coeffs_B(*), alpha_B(*), rpp_origin(*)
277 INTEGER(4) :: num_oc_shells
278 INTEGER(4),
INTENT(in) :: oc_shells_L(:), oc_shells_J(:), &
279 rpp_num_primitives(:), rpp_powers(:, :)
280 REAL(8),
INTENT(in) :: rpp_coeffs(:, :), rpp_alpha(:, :)
281 INTEGER(4) :: oc_shells_num_primitives(:)
282 REAL(8) :: oc_shells_coeffs(:, :), &
283 oc_shells_alpha(:, :)
284 REAL(8),
INTENT(out) :: arep_matrix(*), so_x_matrix(*), &
285 so_y_matrix(*), so_z_matrix(*)
287 INTEGER :: i, j, ncart1, ncart2
290 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
291 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
292 pot_origin, pot_L, pot_J, pot_num_primitives, pot_powers, pot_coeffs, pot_alpha, &
293 oc_shell_num_primitives, oc_shell_coeffs, oc_shell_alpha, &
294 arep_matrix, so_x_matrix, so_y_matrix, so_z_matrix) &
295 BIND(C, name="libgrpp_outercore_potential_integrals_part_1_")
296 IMPORT :: c_int32_t, c_double
297 REAL(kind=c_double),
DIMENSION(*) :: origin_a
298 INTEGER(kind=C_INT32_T) :: L_A
299 INTEGER(kind=C_INT32_T) :: num_primitives_A
300 REAL(kind=c_double),
DIMENSION(*) :: coeffs_a
301 REAL(kind=c_double),
DIMENSION(*) :: alpha_a
302 REAL(kind=c_double),
DIMENSION(*) :: origin_b
303 INTEGER(kind=C_INT32_T) :: L_B
304 INTEGER(kind=C_INT32_T) :: num_primitives_B
305 REAL(kind=c_double),
DIMENSION(*) :: coeffs_b
306 REAL(kind=c_double),
DIMENSION(*) :: alpha_b
307 REAL(kind=c_double),
DIMENSION(*) :: pot_origin
308 INTEGER(kind=C_INT32_T) :: pot_L
309 INTEGER(kind=C_INT32_T) :: pot_J
310 INTEGER(kind=C_INT32_T) :: pot_num_primitives
311 INTEGER(kind=C_INT32_T),
DIMENSION(*) :: pot_powers
312 REAL(kind=c_double),
DIMENSION(*) :: pot_coeffs
313 REAL(kind=c_double),
DIMENSION(*) :: pot_alpha
314 INTEGER(kind=C_INT32_T) :: oc_shell_num_primitives
315 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_coeffs
316 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_alpha
317 REAL(kind=c_double),
DIMENSION(*) :: arep_matrix
318 REAL(kind=c_double),
DIMENSION(*) :: so_x_matrix
319 REAL(kind=c_double),
DIMENSION(*) :: so_y_matrix
320 REAL(kind=c_double),
DIMENSION(*) :: so_z_matrix
325 origin_A, L_A, num_primitives_A, coeffs_A, alpha_A, &
326 origin_B, L_B, num_primitives_B, coeffs_B, alpha_B, &
327 pot_origin, oc_shell_1_L, oc_shell_1_J, &
328 pot1_num_primitives, pot1_powers, pot1_coeffs, pot1_alpha, &
329 oc_shell_1_num_primitives, oc_shell_1_coeffs, oc_shell_1_alpha, &
330 oc_shell_2_L, oc_shell_2_J, pot2_num_primitives, pot2_powers, pot2_coeffs, &
331 pot2_alpha, oc_shell_2_num_primitives, oc_shell_2_coeffs, oc_shell_2_alpha, &
332 arep_matrix, so_x_matrix, so_y_matrix, so_z_matrix) &
333 BIND(C, name="libgrpp_outercore_potential_integrals_part_2_")
334 IMPORT :: c_int32_t, c_double
335 REAL(kind=c_double),
DIMENSION(*) :: origin_a
336 INTEGER(kind=C_INT32_T) :: L_A
337 INTEGER(kind=C_INT32_T) :: num_primitives_A
338 REAL(kind=c_double),
DIMENSION(*) :: coeffs_a
339 REAL(kind=c_double),
DIMENSION(*) :: alpha_a
340 REAL(kind=c_double),
DIMENSION(*) :: origin_b
341 INTEGER(kind=C_INT32_T) :: L_B
342 INTEGER(kind=C_INT32_T) :: num_primitives_B
343 REAL(kind=c_double),
DIMENSION(*) :: coeffs_b
344 REAL(kind=c_double),
DIMENSION(*) :: alpha_b
345 REAL(kind=c_double),
DIMENSION(*) :: pot_origin
346 INTEGER(kind=C_INT32_T) :: oc_shell_1_L
347 INTEGER(kind=C_INT32_T) :: oc_shell_1_J
348 INTEGER(kind=C_INT32_T) :: pot1_num_primitives
349 INTEGER(kind=C_INT32_T),
DIMENSION(*) :: pot1_powers
350 REAL(kind=c_double),
DIMENSION(*) :: pot1_coeffs
351 REAL(kind=c_double),
DIMENSION(*) :: pot1_alpha
352 INTEGER(kind=C_INT32_T) :: oc_shell_1_num_primitives
353 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_1_coeffs
354 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_1_alpha
355 INTEGER(kind=C_INT32_T) :: oc_shell_2_L
356 INTEGER(kind=C_INT32_T) :: oc_shell_2_J
357 INTEGER(kind=C_INT32_T) :: pot2_num_primitives
358 INTEGER(kind=C_INT32_T),
DIMENSION(*) :: pot2_powers
359 REAL(kind=c_double),
DIMENSION(*) :: pot2_coeffs
360 REAL(kind=c_double),
DIMENSION(*) :: pot2_alpha
361 INTEGER(kind=C_INT32_T) :: oc_shell_2_num_primitives
362 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_2_coeffs
363 REAL(kind=c_double),
DIMENSION(*) :: oc_shell_2_alpha
364 REAL(kind=c_double),
DIMENSION(*) :: arep_matrix
365 REAL(kind=c_double),
DIMENSION(*) :: so_x_matrix
366 REAL(kind=c_double),
DIMENSION(*) :: so_y_matrix
367 REAL(kind=c_double),
DIMENSION(*) :: so_z_matrix
377 ncart1 = (l_a + 1)*(l_a + 2)/2
378 ncart2 = (l_b + 1)*(l_b + 2)/2
380 arep_matrix(1:ncart1*ncart2) = 0.0d0
381 so_x_matrix(1:ncart1*ncart2) = 0.0d0
382 so_y_matrix(1:ncart1*ncart2) = 0.0d0
383 so_z_matrix(1:ncart1*ncart2) = 0.0d0
387 DO i = 1, num_oc_shells
389 origin_a, l_a, num_primitives_a, coeffs_a, alpha_a, &
390 origin_b, l_b, num_primitives_b, coeffs_b, alpha_b, &
391 rpp_origin, oc_shells_l(i), oc_shells_j(i), &
392 rpp_num_primitives(i), rpp_powers(i, :), rpp_coeffs(i, :), rpp_alpha(i, :), &
393 oc_shells_num_primitives(i), oc_shells_coeffs(i, :), oc_shells_alpha(i, :), &
394 arep_matrix, so_x_matrix, so_y_matrix, so_z_matrix &
400 DO i = 1, num_oc_shells
401 DO j = 1, num_oc_shells
404 origin_a, l_a, num_primitives_a, coeffs_a, alpha_a, &
405 origin_b, l_b, num_primitives_b, coeffs_b, alpha_b, &
407 oc_shells_l(i), oc_shells_j(i), &
408 rpp_num_primitives(i), rpp_powers(i, :), rpp_coeffs(i, :), rpp_alpha(i, :), &
409 oc_shells_num_primitives(i), oc_shells_coeffs(i, :), oc_shells_alpha(i, :), &
410 oc_shells_l(j), oc_shells_j(j), &
411 rpp_num_primitives(j), rpp_powers(j, :), rpp_coeffs(j, :), rpp_alpha(j, :), &
412 oc_shells_num_primitives(j), oc_shells_coeffs(j, :), oc_shells_alpha(j, :), &
413 arep_matrix, so_x_matrix, so_y_matrix, so_z_matrix &
void libgrpp_spin_orbit_integrals_gradient(libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *grpp_origin, libgrpp_potential_t *potential, double *point_3d, double **grad_so_x, double **grad_so_y, double **grad_so_z)
void libgrpp_outercore_potential_integrals_part_1(libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *C, libgrpp_potential_t *oc_potential, libgrpp_shell_t *oc_shell, double *arep_matrix, double *so_x_matrix, double *so_y_matrix, double *so_z_matrix)
void libgrpp_outercore_potential_integrals(libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, int num_oc_shells, libgrpp_potential_t **oc_potentials, libgrpp_shell_t **oc_shells, double *arep, double *esop_x, double *esop_y, double *esop_z)
void libgrpp_outercore_potential_integrals_part_2(libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *C, libgrpp_potential_t *oc_potential_1, libgrpp_shell_t *oc_shell_1, libgrpp_potential_t *oc_potential_2, libgrpp_shell_t *oc_shell_2, double *arep_matrix, double *so_x_matrix, double *so_y_matrix, double *so_z_matrix)
void libgrpp_set_angular_screening_tolerance(double tolerance)
void libgrpp_set_radial_tolerance(double tolerance)
void libgrpp_set_cartesian_order(int order)
void libgrpp_set_default_parameters()
void libgrpp_set_modified_bessel_tolerance(double tolerance)
void libgrpp_spin_orbit_integrals(libgrpp_shell_t *shell_A, libgrpp_shell_t *shell_B, double *rpp_origin, libgrpp_potential_t *potential, double *so_x_matrix, double *so_y_matrix, double *so_z_matrix)