ao_two_e_ints
Here, all two-electron integrals (\(1/r_{12}\)) are computed.
As they have 4 indices and many are zero, they are stored in a map, as defined
in utils/map_module.f90.
To fetch an AO integral, use the
get_ao_two_e_integral(i,j,k,l,ao_integrals_map) function.
The conventions are: * For AO integrals : (ij|kl) = (11|22) = <ik|jl> = <12|12>
EZFIO parameters
- io_ao_two_e_integrals
Read/Write AO integrals from/to disk [ Write | Read | None ]
Default: None
- io_ao_cholesky
Read/Write AO Cholesky integrals from/to disk [ Write | Read | None ]
Default: None
- ao_integrals_threshold
If | (pq|rs) | <
ao_integrals_thresholdthen (pq|rs) is zeroDefault: 1.e-15
- ao_cholesky_threshold
If | (ii|jj) | <
ao_cholesky_thresholdthen (ii|jj) is zeroDefault: 1.e-12
- do_ao_cholesky
Perform Cholesky decomposition of AO integrals
Default: True
- io_ao_two_e_integrals_erf
Read/Write AO erf integrals from/to disk [ Write | Read | None ]
Default: None
- use_only_lr
If true, use only the long range part of the two-electron integrals instead of 1/r12
Default: False
Providers
- ao_2e_cgtos_schwartz
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fdouble precision, allocatable :: ao_2e_cgtos_schwartz (ao_num,ao_num)
Needed to compute Schwartz inequalities
Needs:
ao_coef_cgtos_norm_ord_transpao_expo_cgtos_ord_transpao_nucl
ao_numao_powerao_prim_num
n_pt_max_integralsnucl_coorduse_pw
- ao_2e_cosgtos_schwartz
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fdouble precision, allocatable :: ao_2e_cosgtos_schwartz (ao_num,ao_num)
Needed to compute Schwartz inequalities
Needs:
ao_coef_norm_ord_transp_cosgtosao_expo_ord_transp_cosgtosao_nucl
ao_numao_powerao_prim_num
n_pt_max_integralsnucl_coord
- ao_integrals_cache
File :
ao_two_e_ints/map_integrals.irp.fdouble precision, allocatable :: ao_integrals_cache (0:64*64*64*64)
Cache of AO integrals for fast access
Needs:
ao_integrals_cache_min
ao_integrals_map
ao_two_e_integrals_in_map
Needed by:
cholesky_ao_num
- ao_integrals_cache_max
File :
ao_two_e_ints/map_integrals.irp.finteger :: ao_integrals_cache_min integer :: ao_integrals_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
ao_num
Needed by:
ao_integrals_cache
ao_integrals_cache_periodic
cholesky_ao_num
- ao_integrals_cache_min
File :
ao_two_e_ints/map_integrals.irp.finteger :: ao_integrals_cache_min integer :: ao_integrals_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
ao_num
Needed by:
ao_integrals_cache
ao_integrals_cache_periodic
cholesky_ao_num
- ao_integrals_cache_periodic
File :
ao_two_e_ints/map_integrals.irp.fcomplex*16, allocatable :: ao_integrals_cache_periodic (0:64*64*64*64)
Cache of AO integrals for fast access
Needs:
ao_integrals_cache_min
ao_integrals_map
ao_two_e_integrals_in_map
- ao_integrals_erf_cache
File :
ao_two_e_ints/map_integrals_erf.irp.fdouble precision, allocatable :: ao_integrals_erf_cache (0:64*64*64*64)
Cache of AO integrals for fast access
Needs:
ao_integrals_erf_cache_min
ao_integrals_erf_map
ao_two_e_integrals_erf_in_map
- ao_integrals_erf_cache_max
File :
ao_two_e_ints/map_integrals_erf.irp.finteger :: ao_integrals_erf_cache_min integer :: ao_integrals_erf_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
ao_num
Needed by:
ao_integrals_erf_cache
- ao_integrals_erf_cache_min
File :
ao_two_e_ints/map_integrals_erf.irp.finteger :: ao_integrals_erf_cache_min integer :: ao_integrals_erf_cache_max
Min and max values of the AOs for which the integrals are in the cache
Needs:
ao_num
Needed by:
ao_integrals_erf_cache
- ao_integrals_erf_map
File :
ao_two_e_ints/map_integrals_erf.irp.ftype(map_type) :: ao_integrals_erf_map
AO integrals
Needs:
ao_num
Needed by:
ao_integrals_erf_cache
ao_two_e_integrals_erf_in_map
mo_two_e_int_erf_jj_from_ao
- ao_integrals_map
File :
ao_two_e_ints/map_integrals.irp.ftype(map_type) :: ao_integrals_map
AO integrals
Needs:
ao_num
Needed by:
ao_integrals_cacheao_integrals_cache_periodic
ao_two_e_integral_alphaao_two_e_integrals_in_map
cholesky_ao_num
- ao_two_e_integral_erf_schwartz
File :
ao_two_e_ints/providers_ao_erf.irp.fdouble precision, allocatable :: ao_two_e_integral_erf_schwartz (ao_num,ao_num)
Needed to compute Schwartz inequalities
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_nucl
ao_numao_powerao_prim_num
mu_erfn_pt_max_integralsnucl_coord
Needed by:
mo_two_e_int_erf_jj_from_ao
- ao_two_e_integral_schwartz
File :
ao_two_e_ints/two_e_integrals.irp.fdouble precision, allocatable :: ao_two_e_integral_schwartz (ao_num,ao_num)
Needed to compute Schwartz inequalities
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_nuclao_num
ao_powerao_prim_numn_pt_max_integrals
nucl_coorduse_cgtosuse_only_lr
Needed by:
ao_two_e_integral_alpha
cholesky_ao_num
- ao_two_e_integrals_erf_in_map
File :
ao_two_e_ints/providers_ao_erf.irp.flogical :: ao_two_e_integrals_erf_in_map
- Map of Atomic integrals
i(r1) j(r2) 1/r12 k(r1) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_erf_mapao_nuclao_numao_power
ao_prim_numezfio_filenameio_ao_two_e_integrals_erfmu_erfn_pt_max_integralsnproc
nucl_coordread_ao_two_e_integrals_erfzmq_contextzmq_socket_pull_tcp_addresszmq_state
Needed by:
ao_integrals_erf_cache
mo_two_e_int_erf_jj_from_ao
mo_two_e_integrals_erf_in_map
- ao_two_e_integrals_in_map
File :
ao_two_e_ints/two_e_integrals.irp.flogical :: ao_two_e_integrals_in_map
- Map of Atomic integrals
i(r1) j(r2) 1/r12 k(r1) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_mapao_nuclao_numao_powerao_prim_num
ezfio_filenameio_ao_two_e_integralsmpi_mastern_pt_max_integralsnprocnucl_coord
read_ao_two_e_integralsuse_cgtosuse_only_lrzmq_contextzmq_socket_pull_tcp_addresszmq_state
Needed by:
ao_integrals_cacheao_integrals_cache_periodic
ao_two_e_integral_alphacholesky_ao_num
mo_two_e_integrals_erf_in_mapmo_two_e_integrals_in_map
- cholesky_ao
File :
ao_two_e_ints/cholesky.irp.finteger :: cholesky_ao_num double precision, allocatable :: cholesky_ao (ao_num,ao_num,1)
Cholesky vectors in AO basis: (ik|a): <ij|kl> = (ik|jl) = sum_a (ik|a).(a|jl)
Last dimension of cholesky_ao is cholesky_ao_num
https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html
https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1
https://www.diva-portal.org/smash/get/diva2:396223/FULLTEXT01.pdf
Needs:
ao_cholesky_thresholdao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_cacheao_integrals_cache_minao_integrals_mapao_integrals_thresholdao_nuclao_num
ao_overlap_absao_powerao_prim_numao_two_e_integral_schwartzao_two_e_integrals_in_mapdo_direct_integralselec_numezfio_work_diris_periodic
n_pt_max_integralsnprocnucl_coordqp_max_memread_ao_choleskyread_ao_two_e_integralsuse_cgtosuse_only_lr
Needed by:
ao_two_e_integral_alpha_cholcholesky_ao_transp
cholesky_mo_num
cholesky_mo_transp
- cholesky_ao_num
File :
ao_two_e_ints/cholesky.irp.finteger :: cholesky_ao_num double precision, allocatable :: cholesky_ao (ao_num,ao_num,1)
Cholesky vectors in AO basis: (ik|a): <ij|kl> = (ik|jl) = sum_a (ik|a).(a|jl)
Last dimension of cholesky_ao is cholesky_ao_num
https://mogp-emulator.readthedocs.io/en/latest/methods/proc/ProcPivotedCholesky.html
https://doi.org/10.1016/j.apnum.2011.10.001 : Page 4, Algorithm 1
https://www.diva-portal.org/smash/get/diva2:396223/FULLTEXT01.pdf
Needs:
ao_cholesky_thresholdao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_cacheao_integrals_cache_minao_integrals_mapao_integrals_thresholdao_nuclao_num
ao_overlap_absao_powerao_prim_numao_two_e_integral_schwartzao_two_e_integrals_in_mapdo_direct_integralselec_numezfio_work_diris_periodic
n_pt_max_integralsnprocnucl_coordqp_max_memread_ao_choleskyread_ao_two_e_integralsuse_cgtosuse_only_lr
Needed by:
ao_two_e_integral_alpha_cholcholesky_ao_transp
cholesky_mo_num
cholesky_mo_transp
- cholesky_ao_transp
File :
ao_two_e_ints/cholesky.irp.fdouble precision, allocatable :: cholesky_ao_transp (cholesky_ao_num,ao_num,ao_num)
Transposed of the Cholesky vectors in AO basis set
Needs:
ao_num
cholesky_ao_num
- do_direct_integrals
File :
ao_two_e_ints/direct.irp.flogical :: do_direct_integrals
Compute integrals on the fly
Needs:
do_ao_cholesky
Needed by:
ao_two_e_integral_alpha
cholesky_ao_num
mo_two_e_int_erf_jj_from_ao
- gauleg_t2
File :
ao_two_e_ints/gauss_legendre.irp.fdouble precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2)
t_w(i,1,k) = w(i) t_w(i,2,k) = t(i)
Needs:
n_pt_max_integrals
- gauleg_w
File :
ao_two_e_ints/gauss_legendre.irp.fdouble precision, allocatable :: gauleg_t2 (n_pt_max_integrals,n_pt_max_integrals/2) double precision, allocatable :: gauleg_w (n_pt_max_integrals,n_pt_max_integrals/2)
t_w(i,1,k) = w(i) t_w(i,2,k) = t(i)
Needs:
n_pt_max_integrals
- general_primitive_integral:
File :
ao_two_e_ints/two_e_integrals.irp.fdouble precision function general_primitive_integral(dim, & P_new,P_center,fact_p,p,p_inv,iorder_p, & Q_new,Q_center,fact_q,q,q_inv,iorder_q)
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
Calls:
add_poly_multiply()
give_polynom_mult_center_x()
- general_primitive_integral_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fcomplex*16 function general_primitive_integral_cgtos(dim, P_new, P_center, fact_p, p, p_inv, iorder_p, & Q_new, Q_center, fact_q, q, q_inv, iorder_q)
Computes the integral <pq|rs> where p,q,r,s are cos-cGTOS primitives
Calls:
add_cpoly_multiply()
give_cpolynom_mult_center_x()
multiply_cpoly()
- general_primitive_integral_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fcomplex*16 function general_primitive_integral_cosgtos( dim, P_new, P_center, fact_p, p, p_inv, iorder_p & , Q_new, Q_center, fact_q, q, q_inv, iorder_q )
Computes the integral <pq|rs> where p,q,r,s are cos-cGTOS primitives
Calls:
add_cpoly_multiply()
give_cpolynom_mult_center_x()
multiply_cpoly()
- general_primitive_integral_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fdouble precision function general_primitive_integral_erf(dim, & P_new,P_center,fact_p,p,p_inv,iorder_p, & Q_new,Q_center,fact_q,q,q_inv,iorder_q)
Computes the integral <pq|rs> where p,q,r,s are Gaussian primitives
Needs:
mu_erf
Calls:
add_poly_multiply()
give_polynom_mult_center_x()
multiply_poly()
- give_cpolynom_mult_center_x:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fsubroutine give_cpolynom_mult_center_x(P_center, Q_center, a_x, d_x, p, q, n_pt_in, & pq_inv, pq_inv_2, p10_1, p01_1, p10_2, p01_2, d, n_pt_out)
subroutine that returns the explicit polynom in term of the “t” variable of the following polynoms :
$I_{x_1}(a_x,d_x,p,q) , I_{x_1}(a_y,d_y,p,q) I_{x_1}(a_z,d_z,p,q)$
Called by:
general_primitive_integral_cgtos()
Calls:
i_x1_pol_mult_cgtos()
- i_x1_new:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x1_new(a,c,B_10,B_01,B_00,res,n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new()i_x2_new()
integrale_new()
integrale_new_erf()
Calls:
i_x1_new()
i_x2_new()
- i_x1_new_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x1_new_cgtos(a, c, B_10, B_01, B_00, res, n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new_cgtos()
i_x2_new_cgtos()
integrale_new_cgtos()
Calls:
i_x1_new_cgtos()
i_x2_new_cgtos()
- i_x1_new_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x1_new_cosgtos(a, c, B_10, B_01, B_00, res, n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new_cosgtos()
i_x2_new_cosgtos()
integrale_new_cosgtos()
Calls:
i_x1_new_cosgtos()
i_x2_new_cosgtos()
- i_x1_pol_mult_a1:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x1_pol_mult_a1(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult()
i_x1_pol_mult_a2()
i_x1_pol_mult_recurs()
Calls:
i_x2_pol_mult()
- i_x1_pol_mult_a1_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x1_pol_mult_a1_cgtos(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_a2_cgtos()
i_x1_pol_mult_cgtos()
i_x1_pol_mult_recurs_cgtos()
Calls:
i_x2_pol_mult_cgtos()
multiply_cpoly()
- i_x1_pol_mult_a1_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x1_pol_mult_a1_cosgtos(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_a2_cosgtos()
i_x1_pol_mult_cosgtos()
i_x1_pol_mult_recurs_cosgtos()
Calls:
i_x2_pol_mult_cosgtos()
multiply_cpoly()
- i_x1_pol_mult_a2:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x1_pol_mult_a2(c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult()
i_x1_pol_mult_recurs()
Calls:
i_x1_pol_mult_a1()
i_x2_pol_mult()
- i_x1_pol_mult_a2_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x1_pol_mult_a2_cgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_cgtos()
i_x1_pol_mult_recurs_cgtos()
Calls:
i_x1_pol_mult_a1_cgtos()
i_x2_pol_mult_cgtos()
multiply_cpoly()
- i_x1_pol_mult_a2_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x1_pol_mult_a2_cosgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_cosgtos()
i_x1_pol_mult_recurs_cosgtos()
Calls:
i_x1_pol_mult_a1_cosgtos()
i_x2_pol_mult_cosgtos()
multiply_cpoly()
- i_x1_pol_mult_recurs:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x1_pol_mult_recurs(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult()
i_x1_pol_mult_recurs()
Calls:
i_x1_pol_mult_a1()
i_x1_pol_mult_a2()
i_x1_pol_mult_recurs()
- i_x1_pol_mult_recurs_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x1_pol_mult_recurs_cgtos(a, c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_cgtos()
i_x1_pol_mult_recurs_cgtos()
Calls:
i_x1_pol_mult_a1_cgtos()i_x1_pol_mult_a2_cgtos()
i_x1_pol_mult_recurs_cgtos()
multiply_cpoly()
- i_x1_pol_mult_recurs_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x1_pol_mult_recurs_cosgtos(a, c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_cosgtos()
i_x1_pol_mult_recurs_cosgtos()
Calls:
i_x1_pol_mult_a1_cosgtos()i_x1_pol_mult_a2_cosgtos()
i_x1_pol_mult_recurs_cosgtos()
multiply_cpoly()
- i_x2_new:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x2_new(c,B_10,B_01,B_00,res,n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new()
Calls:
i_x1_new()
- i_x2_new_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x2_new_cgtos(c, B_10, B_01, B_00, res, n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new_cgtos()
Calls:
i_x1_new_cgtos()
- i_x2_new_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x2_new_cosgtos(c, B_10, B_01, B_00, res, n_pt)
recursive function involved in the two-electron integral
Needs:
n_pt_max_integrals
Called by:
i_x1_new_cosgtos()
Calls:
i_x1_new_cosgtos()
- i_x2_pol_mult:
File :
ao_two_e_ints/two_e_integrals.irp.frecursive subroutine I_x2_pol_mult(c,B_10,B_01,B_00,C_00,D_00,d,nd,dim)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult()i_x1_pol_mult_a1()
i_x1_pol_mult_a2()
i_x2_pol_mult()
Calls:
i_x2_pol_mult()
- i_x2_pol_mult_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.frecursive subroutine I_x2_pol_mult_cgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd, dim)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_a1_cgtos()i_x1_pol_mult_a2_cgtos()
i_x1_pol_mult_cgtos()
i_x2_pol_mult_cgtos()
Calls:
i_x2_pol_mult_cgtos()
multiply_cpoly()
- i_x2_pol_mult_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.frecursive subroutine I_x2_pol_mult_cosgtos(c, B_10, B_01, B_00, C_00, D_00, d, nd, dim)
Recursive function involved in the two-electron integral
Called by:
i_x1_pol_mult_a1_cosgtos()i_x1_pol_mult_a2_cosgtos()
i_x1_pol_mult_cosgtos()
i_x2_pol_mult_cosgtos()
Calls:
i_x2_pol_mult_cosgtos()
multiply_cpoly()
Subroutines / functions
- ao_2e_cgtos_schwartz_accel:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fdouble precision function ao_2e_cgtos_schwartz_accel(i, j, k, l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_cgtos_norm_ord_transpao_expo_cgtos_ord_transpao_integrals_threshold
ao_nuclao_powerao_prim_num
n_pt_max_integralsnucl_coorduse_pw
Calls:
give_explicit_cpoly_and_cgaussian()
- ao_2e_cosgtos_schwartz_accel:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fdouble precision function ao_2e_cosgtos_schwartz_accel(i, j, k, l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_norm_ord_transp_cosgtosao_expo_ord_transp_cosgtosao_integrals_threshold
ao_nuclao_powerao_prim_num
n_pt_max_integralsnucl_coord
Calls:
give_explicit_cpoly_and_cgaussian()
- ao_idx2_sq:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine ao_idx2_sq(i,j,ij)
Called by:
two_e_integrals_index_2fold()
- ao_idx2_sq_rev:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine ao_idx2_sq_rev(i,k,ik)
reverse square compound index
Called by:
two_e_integrals_index_reverse_2fold()
- ao_idx2_tri_key:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine ao_idx2_tri_key(i,j,ij)
Called by:
two_e_integrals_index_2fold()
- ao_idx2_tri_rev_key:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine ao_idx2_tri_rev_key(i,k,ik)
return i<=k
Called by:
two_e_integrals_index_reverse_2fold()
- ao_l4:
File :
ao_two_e_ints/two_e_integrals.irp.finteger function ao_l4(i,j,k,l)
Computes the product of l values of i,j,k,and l
Needs:
ao_l
- ao_two_e_integral:
File :
ao_two_e_ints/two_e_integrals.irp.fdouble precision function ao_two_e_integral(i, j, k, l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_nucl
ao_powerao_prim_numn_pt_max_integrals
nucl_coorduse_cgtosuse_only_lr
Calls:
give_explicit_poly_and_gaussian()
- ao_two_e_integral_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fdouble precision function ao_two_e_integral_cgtos(i, j, k, l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_cgtos_norm_ord_transpao_expo_cgtos_ord_transpao_nucl
ao_powerao_prim_numn_pt_max_integrals
nucl_coorduse_pw
Calls:
give_explicit_cpoly_and_cgaussian()
- ao_two_e_integral_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fdouble precision function ao_two_e_integral_cosgtos(i, j, k, l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_norm_ord_transp_cosgtosao_expo_ord_transp_cosgtosao_nucl
ao_powerao_prim_num
n_pt_max_integralsnucl_coord
Calls:
give_explicit_cpoly_and_cgaussian()
- ao_two_e_integral_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fdouble precision function ao_two_e_integral_erf(i,j,k,l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_nucl
ao_powerao_prim_nummu_erf
n_pt_max_integralsnucl_coord
Calls:
give_explicit_poly_and_gaussian()
- ao_two_e_integral_schwartz_accel:
File :
ao_two_e_ints/two_e_integrals.irp.fdouble precision function ao_two_e_integral_schwartz_accel(i,j,k,l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_threshold
ao_nuclao_powerao_prim_num
n_pt_max_integralsnucl_coord
Calls:
give_explicit_poly_and_gaussian()
- ao_two_e_integral_schwartz_accel_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fdouble precision function ao_two_e_integral_schwartz_accel_erf(i,j,k,l)
- integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
ao_coef_normalized_ordered_transpao_expo_ordered_transpao_integrals_threshold
ao_nuclao_powerao_prim_num
n_pt_max_integralsnucl_coord
Calls:
give_explicit_poly_and_gaussian()
- ao_two_e_integral_zero:
File :
ao_two_e_ints/screening.irp.flogical function ao_two_e_integral_zero(i,j,k,l)
Needs:
ao_integrals_thresholdao_overlap_abs
ao_two_e_integral_schwartzis_periodic
read_ao_two_e_integralsuse_cgtos
- ao_two_e_integrals_erf_in_map_collector:
File :
ao_two_e_ints/integrals_erf_in_map_slave.irp.fsubroutine ao_two_e_integrals_erf_in_map_collector(zmq_socket_pull)
Collects results from the AO integral calculation
Needs:
ao_integrals_erf_map
ao_num
Called by:
ao_two_e_integrals_erf_in_map
Calls:
end_zmq_to_qp_run_socket()
insert_into_ao_integrals_erf_map()
- ao_two_e_integrals_erf_in_map_slave:
File :
ao_two_e_ints/integrals_erf_in_map_slave.irp.fsubroutine ao_two_e_integrals_erf_in_map_slave(thread,iproc)
Computes a buffer of integrals
Needs:
ao_num
Called by:
ao_two_e_integrals_erf_in_map_slave_inproc()
ao_two_e_integrals_erf_in_map_slave_tcp()
Calls:
compute_ao_integrals_erf_jl()end_zmq_push_socket()
end_zmq_to_qp_run_socket()
push_integrals()
- ao_two_e_integrals_erf_in_map_slave_inproc:
File :
ao_two_e_ints/integrals_erf_in_map_slave.irp.fsubroutine ao_two_e_integrals_erf_in_map_slave_inproc(i)
Computes a buffer of integrals. i is the ID of the current thread.
Called by:
ao_two_e_integrals_erf_in_map
Calls:
ao_two_e_integrals_erf_in_map_slave()
- ao_two_e_integrals_erf_in_map_slave_tcp:
File :
ao_two_e_ints/integrals_erf_in_map_slave.irp.fsubroutine ao_two_e_integrals_erf_in_map_slave_tcp(i)
Computes a buffer of integrals. i is the ID of the current thread.
Calls:
ao_two_e_integrals_erf_in_map_slave()
- ao_two_e_integrals_in_map_collector:
File :
ao_two_e_ints/integrals_in_map_slave.irp.fsubroutine ao_two_e_integrals_in_map_collector(zmq_socket_pull)
Collects results from the AO integral calculation
Needs:
ao_integrals_map
ao_num
Called by:
ao_two_e_integrals_in_map
Calls:
end_zmq_to_qp_run_socket()
insert_into_ao_integrals_map()
- ao_two_e_integrals_in_map_slave:
File :
ao_two_e_ints/integrals_in_map_slave.irp.fsubroutine ao_two_e_integrals_in_map_slave(thread,iproc)
Computes a buffer of integrals
Needs:
ao_num
Called by:
ao_two_e_integrals_in_map_slave_inproc()
ao_two_e_integrals_in_map_slave_tcp()
Calls:
compute_ao_integrals_jl()end_zmq_push_socket()
end_zmq_to_qp_run_socket()push_integrals()
sscanf_dd()
- ao_two_e_integrals_in_map_slave_inproc:
File :
ao_two_e_ints/integrals_in_map_slave.irp.fsubroutine ao_two_e_integrals_in_map_slave_inproc(i)
Computes a buffer of integrals. i is the ID of the current thread.
Called by:
ao_two_e_integrals_in_map
Calls:
ao_two_e_integrals_in_map_slave()
- ao_two_e_integrals_in_map_slave_tcp:
File :
ao_two_e_ints/integrals_in_map_slave.irp.fsubroutine ao_two_e_integrals_in_map_slave_tcp(i)
Computes a buffer of integrals. i is the ID of the current thread.
Calls:
ao_two_e_integrals_in_map_slave()
- clear_ao_erf_map:
File :
ao_two_e_ints/map_integrals_erf.irp.fsubroutine clear_ao_erf_map
Frees the memory of the AO map
Needs:
ao_integrals_erf_map
Calls:
map_deinit()
- clear_ao_map:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine clear_ao_map
Frees the memory of the AO map
Needs:
ao_integrals_map
Calls:
map_deinit()
- compute_ao_integrals_erf_jl:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fsubroutine compute_ao_integrals_erf_jl(j,l,n_integrals,buffer_i,buffer_value)
Parallel client for AO integrals
Needs:
ao_integrals_threshold
ao_num
ao_two_e_integral_erf_schwartz
Called by:
ao_two_e_integrals_erf_in_map_slave()
Calls:
two_e_integrals_index()
- compute_ao_integrals_jl:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine compute_ao_integrals_jl(j,l,n_integrals,buffer_i,buffer_value)
Parallel client for AO integrals
Needs:
ao_integrals_threshold
ao_num
Called by:
ao_two_e_integrals_in_map_slave()
Calls:
two_e_integrals_index()
- compute_ao_two_e_integrals:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine compute_ao_two_e_integrals(j,k,l,sze,buffer_value)
Compute AO 1/r12 integrals for all i and fixed j,k,l
Needs:
ao_num
- compute_ao_two_e_integrals_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fsubroutine compute_ao_two_e_integrals_erf(j,k,l,sze,buffer_value)
Compute AO 1/r12 integrals for all i and fixed j,k,l
Needs:
ao_num
ao_two_e_integral_erf_schwartz
Called by:
mo_two_e_int_erf_jj_from_ao
- do_schwartz_accel:
File :
ao_two_e_ints/two_e_integrals.irp.flogical function do_schwartz_accel(i,j,k,l)
If true, use Schwatrz to accelerate direct integral calculation
Needs:
ao_prim_num
do_ao_cholesky
- dump_ao_integrals_erf:
File :
ao_two_e_ints/map_integrals_erf.irp.fsubroutine dump_ao_integrals_erf(filename)
Save to disk the AO erf integrals
Needs:
ao_integrals_erf_map
Calls:
ezfio_set_work_empty()
- eri:
File :
ao_two_e_ints/two_e_integrals.irp.fdouble precision function ERI(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
- ATOMIC PRIMTIVE two-electron integral between the 4 primitives ::
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
Calls:
integrale_new()
- eri_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fcomplex*16 function ERI_cgtos(alpha, beta, delta, gama, a_x, b_x, c_x, d_x, a_y, b_y, c_y, d_y, a_z, b_z, c_z, d_z)
- ATOMIC PRIMTIVE two-electron integral between the 4 primitives ::
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
Calls:
integrale_new_cgtos()
- eri_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fcomplex*16 function ERI_cosgtos(alpha, beta, delta, gama, a_x, b_x, c_x, d_x, a_y, b_y, c_y, d_y, a_z, b_z, c_z, d_z)
- ATOMIC PRIMTIVE two-electron integral between the 4 primitives ::
primitive_1 = x1**(a_x) y1**(a_y) z1**(a_z) exp(-alpha * r1**2) primitive_2 = x1**(b_x) y1**(b_y) z1**(b_z) exp(- beta * r1**2) primitive_3 = x2**(c_x) y2**(c_y) z2**(c_z) exp(-delta * r2**2) primitive_4 = x2**(d_x) y2**(d_y) z2**(d_z) exp(- gama * r2**2)
Calls:
integrale_new_cosgtos()
- eri_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fdouble precision function ERI_erf(alpha,beta,delta,gama,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
Atomic primtive two-electron integral between the 4 primitives :
primitive 1 : $x_1^{a_x} y_1^{a_y} z_1^{a_z} exp(-alpha * r1^2)$
primitive 2 : $x_1^{b_x} y_1^{b_y} z_1^{b_z} exp(- beta * r1^2)$
primitive 3 : $x_2^{c_x} y_2^{c_y} z_2^{c_z} exp(-delta * r2^2)$
primitive 4 : $x_2^{d_x} y_2^{d_y} z_2^{d_z} exp(-gamma * r2^2)$
Needs:
mu_erf
Calls:
integrale_new_erf()
- gauleg:
File :
ao_two_e_ints/gauss_legendre.irp.fsubroutine gauleg(x1,x2,x,w,n)
Gauss-Legendre
Called by:
gauleg_t2
- get_ao_erf_map_size:
File :
ao_two_e_ints/map_integrals_erf.irp.ffunction get_ao_erf_map_size()
Returns the number of elements in the AO map
Needs:
ao_integrals_erf_map
- get_ao_integ_chol:
File :
ao_two_e_ints/cholesky.irp.fdouble precision function get_ao_integ_chol(i,j,k,l)
- CHOLESKY representation of the integral of the AO basis <ik|jl> or (ij|kl)
i(r1) j(r1) 1/r12 k(r2) l(r2)
Needs:
cholesky_ao_num
cholesky_ao_transp
- get_ao_map_size:
File :
ao_two_e_ints/map_integrals.irp.ffunction get_ao_map_size()
Returns the number of elements in the AO map
Needs:
ao_integrals_map
- get_ao_two_e_integral:
File :
ao_two_e_ints/map_integrals.irp.fdouble precision function get_ao_two_e_integral(i, j, k, l, map) result(result)
Gets one AO bi-electronic integral from the AO map in PHYSICIST NOTATION
<1:k, 2:l |1:i, 2:j>
Needs:
ao_integrals_cache
ao_integrals_cache_min
ao_two_e_integrals_in_map
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integral_erf:
File :
ao_two_e_ints/map_integrals_erf.irp.fdouble precision function get_ao_two_e_integral_erf(i,j,k,l,map) result(result)
Gets one AO two-electron integral from the AO map
Needs:
ao_integrals_erf_cacheao_integrals_erf_cache_min
ao_integrals_thresholdao_two_e_integral_erf_schwartz
ao_two_e_integrals_erf_in_map
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integral_periodic:
File :
ao_two_e_ints/map_integrals.irp.fcomplex*16 function get_ao_two_e_integral_periodic(i,j,k,l,map) result(result)
Gets one AO bi-electronic integral from the AO map
Needs:
ao_integrals_cache_minao_integrals_cache_periodic
ao_integrals_map
ao_two_e_integrals_in_map
Calls:
map_get()
two_e_integrals_index_2fold()
- get_ao_two_e_integrals:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine get_ao_two_e_integrals(j,k,l,sze,out_val)
Gets multiple AO bi-electronic integral from the AO map . All i are retrieved for j,k,l fixed. physicist convention : <ij|kl>
Needs:
ao_integrals_map
ao_two_e_integrals_in_map
Called by:
add_integrals_to_map()
four_idx_dgemm()
- get_ao_two_e_integrals_erf:
File :
ao_two_e_ints/map_integrals_erf.irp.fsubroutine get_ao_two_e_integrals_erf(j,k,l,sze,out_val)
Gets multiple AO two-electron integral from the AO map . All i are retrieved for j,k,l fixed.
Needs:
ao_integrals_erf_map
ao_integrals_threshold
ao_two_e_integrals_erf_in_map
Called by:
add_integrals_to_map_erf()
four_idx_dgemm_erf()
- get_ao_two_e_integrals_erf_non_zero:
File :
ao_two_e_ints/map_integrals_erf.irp.fsubroutine get_ao_two_e_integrals_erf_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
Gets multiple AO two-electron integrals from the AO map . All non-zero i are retrieved for j,k,l fixed.
Needs:
ao_integrals_erf_mapao_integrals_threshold
ao_two_e_integral_erf_schwartz
ao_two_e_integrals_erf_in_map
Called by:
mo_two_e_int_erf_jj_from_ao
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integrals_non_zero:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine get_ao_two_e_integrals_non_zero(j,k,l,sze,out_val,out_val_index,non_zero_int)
Gets multiple AO bi-electronic integral from the AO map . All non-zero i are retrieved for j,k,l fixed.
Needs:
ao_integrals_map
ao_integrals_threshold
ao_two_e_integrals_in_map
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integrals_non_zero_jl:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine get_ao_two_e_integrals_non_zero_jl(j,l,thresh,sze_max,sze,out_val,out_val_index,non_zero_int)
Gets multiple AO bi-electronic integral from the AO map . All non-zero i are retrieved for j,k,l fixed.
Needs:
ao_integrals_map
ao_two_e_integrals_in_map
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integrals_non_zero_jl_from_list:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine get_ao_two_e_integrals_non_zero_jl_from_list(j,l,thresh,list,n_list,sze_max,out_val,out_val_index,non_zero_int)
Gets multiple AO two-electron integrals from the AO map . All non-zero i are retrieved for j,k,l fixed.
Needs:
ao_integrals_map
ao_two_e_integrals_in_map
Calls:
map_get()
two_e_integrals_index()
- get_ao_two_e_integrals_periodic:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine get_ao_two_e_integrals_periodic(j,k,l,sze,out_val)
Gets multiple AO bi-electronic integral from the AO map . All i are retrieved for j,k,l fixed. physicist convention : <ij|kl>
Needs:
ao_integrals_map
ao_two_e_integrals_in_map
- give_polynom_mult_center_x:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine give_polynom_mult_center_x(P_center,Q_center,a_x,d_x,p,q,n_pt_in,pq_inv,pq_inv_2,p10_1,p01_1,p10_2,p01_2,d,n_pt_out)
subroutine that returns the explicit polynom in term of the “t” variable of the following polynomw :
$I_{x_1}(a_x,d_x,p,q) , I_{x_1}(a_y,d_y,p,q) I_{x_1}(a_z,d_z,p,q)$
Called by:
general_primitive_integral()
general_primitive_integral_erf()
Calls:
i_x1_pol_mult()
- i_x1_pol_mult:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine I_x1_pol_mult(a,c,B_10,B_01,B_00,C_00,D_00,d,nd,n_pt_in)
Recursive function involved in the two-electron integral
Called by:
give_polynom_mult_center_x()
Calls:
i_x1_pol_mult_a1()i_x1_pol_mult_a2()
i_x1_pol_mult_recurs()
i_x2_pol_mult()
- i_x1_pol_mult_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fsubroutine I_x1_pol_mult_cgtos(a, c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
give_cpolynom_mult_center_x()
Calls:
i_x1_pol_mult_a1_cgtos()i_x1_pol_mult_a2_cgtos()
i_x1_pol_mult_recurs_cgtos()
i_x2_pol_mult_cgtos()
- i_x1_pol_mult_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fsubroutine I_x1_pol_mult_cosgtos(a, c, B_10, B_01, B_00, C_00, D_00, d, nd, n_pt_in)
Recursive function involved in the two-electron integral
Called by:
give_cpolynom_mult_center_x()
Calls:
i_x1_pol_mult_a1_cosgtos()i_x1_pol_mult_a2_cosgtos()
i_x1_pol_mult_recurs_cosgtos()
i_x2_pol_mult_cosgtos()
- idx2_tri_int:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine idx2_tri_int(i,j,ij)
- idx2_tri_rev_int:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine idx2_tri_rev_int(i,k,ik)
return i<=k
- insert_into_ao_integrals_erf_map:
File :
ao_two_e_ints/map_integrals_erf.irp.fsubroutine insert_into_ao_integrals_erf_map(n_integrals,buffer_i, buffer_values)
Create new entry into AO map
Needs:
ao_integrals_erf_map
Called by:
ao_two_e_integrals_erf_in_map_collector()
Calls:
map_append()
- insert_into_ao_integrals_map:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine insert_into_ao_integrals_map(n_integrals,buffer_i, buffer_values)
Create new entry into AO map
Needs:
ao_integrals_map
Called by:
ao_two_e_integrals_in_map_collector()
Calls:
map_append()
- integrale_new:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine integrale_new(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt)
Calculates the integral of the polynomial :
$I_{x_1}(a_x+b_x,c_x+d_x,p,q) , I_{x_1}(a_y+b_y,c_y+d_y,p,q) , I_{x_1}(a_z+b_z,c_z+d_z,p,q)$ in $( 0 ; 1)$
Needs:
gauleg_t2
n_pt_max_integrals
Called by:
eri()
Calls:
i_x1_new()
- integrale_new_cgtos:
File :
ao_two_e_ints/two_e_coul_integrals_cgtos.irp.fsubroutine integrale_new_cgtos(I_f, a_x, b_x, c_x, d_x, a_y, b_y, c_y, d_y, a_z, b_z, c_z, d_z, p, q, n_pt)
Calculates the integral of the polynomial :
$I_{x_1}(a_x+b_x, c_x+d_x, p, q) , I_{x_1}(a_y+b_y, c_y+d_y, p, q) , I_{x_1}(a_z+b_z, c_z+d_z, p, q)$ in $( 0 ; 1)$
Needs:
gauleg_t2
n_pt_max_integrals
Called by:
eri_cgtos()
Calls:
i_x1_new_cgtos()
- integrale_new_cosgtos:
File :
ao_two_e_ints/two_e_Coul_integrals_cosgtos.irp.fsubroutine integrale_new_cosgtos(I_f, a_x, b_x, c_x, d_x, a_y, b_y, c_y, d_y, a_z, b_z, c_z, d_z, p, q, n_pt)
Calculates the integral of the polynomial :
$I_{x_1}(a_x+b_x, c_x+d_x, p, q) , I_{x_1}(a_y+b_y, c_y+d_y, p, q) , I_{x_1}(a_z+b_z, c_z+d_z, p, q)$ in $( 0 ; 1)$
Needs:
gauleg_t2
n_pt_max_integrals
Called by:
eri_cosgtos()
Calls:
i_x1_new_cosgtos()
- integrale_new_erf:
File :
ao_two_e_ints/two_e_integrals_erf.irp.fsubroutine integrale_new_erf(I_f,a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z,p,q,n_pt)
Calculate the integral of the polynomial :
$I_x1(a_x+b_x, c_x+d_x,p,q) , I_x1(a_y+b_y, c_y+d_y,p,q) , I_x1(a_z+b_z, c_z+d_z,p,q)$
between $( 0 ; 1)$
Needs:
gauleg_t2
mu_erf
n_pt_max_integrals
Called by:
eri_erf()
Calls:
i_x1_new()
- load_ao_integrals_erf:
File :
ao_two_e_ints/map_integrals_erf.irp.finteger function load_ao_integrals_erf(filename)
Read from disk the AO erf integrals
Needs:
ao_integrals_erf_map
Calls:
cache_map_reallocate()
map_deinit()
map_sort()
- multiply_poly_c2_inline_2e:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine multiply_poly_c2_inline_2e(b,nb,c,d,nd)
Multiply two polynomials D(t) =! D(t) +( B(t)*C(t))
- multiply_poly_local:
File :
ao_two_e_ints/two_e_integrals.irp.fsubroutine multiply_poly_local(b,nb,c,nc,d,nd)
Multiply two polynomials D(t) =! D(t) +( B(t)*C(t))
- n_pt_sup:
File :
ao_two_e_ints/two_e_integrals.irp.finteger function n_pt_sup(a_x,b_x,c_x,d_x,a_y,b_y,c_y,d_y,a_z,b_z,c_z,d_z)
Returns the upper boundary of the degree of the polynomial involved in the two-electron integral :
$I_x(a_x,b_x,c_x,d_x) , I_y(a_y,b_y,c_y,d_y) , I_z(a_z,b_z,c_z,d_z)$
- push_integrals:
File :
ao_two_e_ints/integrals_in_map_slave.irp.fsubroutine push_integrals(zmq_socket_push, n_integrals, buffer_i, buffer_value, task_id)
Push integrals in the push socket
Called by:
ao_two_e_integrals_erf_in_map_slave()
ao_two_e_integrals_in_map_slave()
- save_erf_two_e_integrals_ao:
File :
ao_two_e_ints/routines_save_integrals_erf.irp.fsubroutine save_erf_two_e_integrals_ao
Needs:
ao_integrals_erf_map
ao_two_e_integrals_erf_in_map
ezfio_filename
Calls:
ezfio_set_ao_two_e_ints_io_ao_two_e_integrals_erf()
ezfio_set_work_empty()
map_save_to_disk()
- save_erf_two_e_ints_ao_into_ints_ao:
File :
ao_two_e_ints/routines_save_integrals_erf.irp.fsubroutine save_erf_two_e_ints_ao_into_ints_ao
Needs:
ao_integrals_erf_map
ao_two_e_integrals_erf_in_map
ezfio_filename
Calls:
ezfio_set_ao_two_e_ints_io_ao_two_e_integrals()
ezfio_set_work_empty()
map_save_to_disk()
- two_e_integrals_index:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine two_e_integrals_index(i,j,k,l,i1)
Gives a unique index for i,j,k,l using permtuation symmetry. i <-> k, j <-> l, and (i,k) <-> (j,l) for non-periodic systems
Called by:
ao_integrals_cacheao_integrals_erf_cacheao_integrals_erf_mapao_integrals_mapcompute_ao_integrals_erf_jl()compute_ao_integrals_jl()get_ao_two_e_integral()get_ao_two_e_integral_erf()
get_ao_two_e_integrals_erf_non_zero()get_ao_two_e_integrals_non_zero()get_ao_two_e_integrals_non_zero_jl()get_ao_two_e_integrals_non_zero_jl_from_list()get_mo_two_e_integral_erf()get_mo_two_e_integrals_erf()get_mo_two_e_integrals_erf_coulomb_ii()get_mo_two_e_integrals_erf_exch_ii()
get_mo_two_e_integrals_erf_i1j1()get_mo_two_e_integrals_erf_ij()get_two_e_integral()mo_integrals_cachemo_integrals_erf_cachemo_integrals_erf_mapmo_integrals_map
- two_e_integrals_index_2fold:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine two_e_integrals_index_2fold(i,j,k,l,i1)
Called by:
ao_integrals_cache_periodic
get_ao_two_e_integral_periodic()
Calls:
ao_idx2_sq()
ao_idx2_tri_key()
- two_e_integrals_index_reverse:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine two_e_integrals_index_reverse(i,j,k,l,i1)
Computes the 4 indices $i,j,k,l$ from a unique index $i_1$. For 2 indices $i,j$ and $i le j$, we have $p = i(i-1)/2 + j$. The key point is that because $j < i$, $i(i-1)/2 < p le i(i+1)/2$. So $i$ can be found by solving $i^2 - i - 2p=0$. One obtains $i=1 + sqrt{1+8p}/2$ and $j = p - i(i-1)/2$. This rule is applied 3 times. First for the symmetry of the pairs (i,k) and (j,l), and then for the symmetry within each pair.
Called by:
ao_two_e_integral_alpha
- two_e_integrals_index_reverse_2fold:
File :
ao_two_e_ints/map_integrals.irp.fsubroutine two_e_integrals_index_reverse_2fold(i,j,k,l,i1)
Calls:
ao_idx2_sq_rev()
ao_idx2_tri_rev_key()