utils¶
Contains general purpose utilities (sorting, maps, etc).
Providers¶
-
binom
¶ File :
utils/util.irp.f
double precision, allocatable :: binom (0:40,0:40) double precision, allocatable :: binom_transp (0:40,0:40)
Binomial coefficients
Needed by:
-
binom_int
¶ File :
utils/util.irp.f
integer*8, allocatable :: binom_int (0:40,0:40) integer*8, allocatable :: binom_int_transp (0:40,0:40)
Binomial coefficients, as integers*8
Needs:
-
binom_int_transp
¶ File :
utils/util.irp.f
integer*8, allocatable :: binom_int (0:40,0:40) integer*8, allocatable :: binom_int_transp (0:40,0:40)
Binomial coefficients, as integers*8
Needs:
-
binom_transp
¶ File :
utils/util.irp.f
double precision, allocatable :: binom (0:40,0:40) double precision, allocatable :: binom_transp (0:40,0:40)
Binomial coefficients
Needed by:
-
degree_max_integration_lebedev
¶ File :
utils/angular_integration.irp.f
integer :: degree_max_integration_lebedev
integrate correctly a polynom of order “degree_max_integration_lebedev” needed for the angular integration according to LEBEDEV formulae
Needed by:
-
dtranspose:
()¶ File :
utils/transpose.irp.f
recursive subroutine dtranspose(A,LDA,B,LDB,d1,d2)
Transpose input matrix A into output matrix B
Called by:
dtranspose()
h_s2_u_0_nstates_openmp()
h_s2_u_0_nstates_zmq()
h_s2_u_0_two_e_nstates_openmp()
Calls:
dtranspose()
-
fact_inv
¶ File :
utils/util.irp.f
double precision, allocatable :: fact_inv (128)
1/n!
-
i2radix_sort:
()¶ File :
utils/sort.irp.f_template_644
recursive subroutine i2radix_sort(x,iorder,isize,iradix)
Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. iradix should be -1 in input.
Called by:
get_mo_two_e_integrals_erf_i1j1()
get_mo_two_e_integrals_erf_ij()
get_mo_two_e_integrals_i1j1()
get_mo_two_e_integrals_ij()
i2radix_sort()
Calls:
i2radix_sort()
insertion_i2sort()
-
i8radix_sort:
()¶ File :
utils/sort.irp.f_template_644
recursive subroutine i8radix_sort(x,iorder,isize,iradix)
Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. iradix should be -1 in input.
Called by:
get_mo_two_e_integrals_erf_i1j1()
get_mo_two_e_integrals_erf_ij()
get_mo_two_e_integrals_i1j1()
get_mo_two_e_integrals_ij()
i8radix_sort()
psi_bilinear_matrix_transp_values
Calls:
i8radix_sort()
insertion_i8sort()
-
i8radix_sort_big:
()¶ File :
utils/sort.irp.f_template_644
recursive subroutine i8radix_sort_big(x,iorder,isize,iradix)
Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. iradix should be -1 in input.
Called by:
i8radix_sort_big()
Calls:
i8radix_sort_big()
insertion_i8sort_big()
-
inv_int
¶ File :
utils/util.irp.f
double precision, allocatable :: inv_int (128)
1/i
-
iradix_sort:
()¶ File :
utils/sort.irp.f_template_644
recursive subroutine iradix_sort(x,iorder,isize,iradix)
Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. iradix should be -1 in input.
Called by:
get_mo_two_e_integrals_erf_i1j1()
get_mo_two_e_integrals_erf_ij()
get_mo_two_e_integrals_i1j1()
get_mo_two_e_integrals_ij()
iradix_sort()
Calls:
insertion_isort()
iradix_sort()
-
iradix_sort_big:
()¶ File :
utils/sort.irp.f_template_644
recursive subroutine iradix_sort_big(x,iorder,isize,iradix)
Sort integer array x(isize) using the radix sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. iradix should be -1 in input.
Called by:
iradix_sort_big()
Calls:
insertion_isort_big()
iradix_sort_big()
-
n_points_integration_angular_lebedev
¶ File :
utils/angular_integration.irp.f
integer :: n_points_integration_angular_lebedev
Number of points needed for the angular integral
Needs:
Needed by:
-
nproc
¶ File :
utils/util.irp.f
integer :: nproc
Number of current OpenMP threads
Needed by:
-
overlap_gaussian_xyz:
()¶ File :
utils/one_e_integration.irp.f
subroutine overlap_gaussian_xyz(A_center,B_center,alpha,beta,power_A,& power_B,overlap_x,overlap_y,overlap_z,overlap,dim)
\[\begin{split}S_x = \int (x-A_x)^{a_x} exp(-\alpha(x-A_x)^2) (x-B_x)^{b_x} exp(-beta(x-B_x)^2) dx \\ S = S_x S_y S_z\end{split}\]Called by:
Calls:
gaussian_product_x()
give_explicit_poly_and_gaussian()
-
phi_angular_integration_lebedev
¶ File :
utils/angular_integration.irp.f
double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev)
Theta phi values together with the weights values for the angular integration : integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) Note that theta and phi are in DEGREES !!
Needs:
-
qp_max_mem
¶ File :
utils/memory.irp.f
integer :: qp_max_mem
Maximum memory in Gb
Needs:
Needed by:
-
rec__quicksort:
()¶ File :
utils/sort.irp.f_template_261
recursive subroutine rec__quicksort(x, iorder, isize, first, last, level)
Called by:
quick_sort()
rec__quicksort()
Calls:
rec__quicksort()
-
rec_d_quicksort:
()¶ File :
utils/sort.irp.f_template_261
recursive subroutine rec_d_quicksort(x, iorder, isize, first, last, level)
Called by:
quick_dsort()
rec_d_quicksort()
Calls:
rec_d_quicksort()
-
rec_i2_quicksort:
()¶ File :
utils/sort.irp.f_template_261
recursive subroutine rec_i2_quicksort(x, iorder, isize, first, last, level)
Called by:
quick_i2sort()
rec_i2_quicksort()
Calls:
rec_i2_quicksort()
-
rec_i8_quicksort:
()¶ File :
utils/sort.irp.f_template_261
recursive subroutine rec_i8_quicksort(x, iorder, isize, first, last, level)
Called by:
quick_i8sort()
rec_i8_quicksort()
Calls:
rec_i8_quicksort()
-
rec_i_quicksort:
()¶ File :
utils/sort.irp.f_template_261
recursive subroutine rec_i_quicksort(x, iorder, isize, first, last, level)
Called by:
quick_isort()
rec_i_quicksort()
Calls:
rec_i_quicksort()
-
theta_angular_integration_lebedev
¶ File :
utils/angular_integration.irp.f
double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev)
Theta phi values together with the weights values for the angular integration : integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) Note that theta and phi are in DEGREES !!
Needs:
-
transpose:
()¶ File :
utils/transpose.irp.f
recursive subroutine transpose(A,LDA,B,LDB,d1,d2)
Transpose input matrix A into output matrix B
Called by:
transpose()
Calls:
transpose()
-
weights_angular_integration_lebedev
¶ File :
utils/angular_integration.irp.f
double precision, allocatable :: theta_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: phi_angular_integration_lebedev (n_points_integration_angular_lebedev) double precision, allocatable :: weights_angular_integration_lebedev (n_points_integration_angular_lebedev)
Theta phi values together with the weights values for the angular integration : integral [dphi,dtheta] f(x,y,z) = 4 * pi * sum (1<i<n_points_integration_angular_lebedev) f(xi,yi,zi) Note that theta and phi are in DEGREES !!
Needs:
Subroutines / functions¶
-
a_coef:
()¶ File :
utils/need.irp.f
double precision function a_coef(n)
-
add_poly:
()¶ File :
utils/integration.irp.f
subroutine add_poly(b,nb,c,nc,d,nd)
Add two polynomials D(t) =! D(t) +( B(t)+C(t))
-
add_poly_multiply:
()¶ File :
utils/integration.irp.f
subroutine add_poly_multiply(b,nb,cst,d,nd)
Add a polynomial multiplied by a constant D(t) =! D(t) +( cst * B(t))
Called by:
general_primitive_integral()
general_primitive_integral_erf()
-
apply_rotation:
()¶ File :
utils/linear_algebra.irp.f
subroutine apply_rotation(A,LDA,R,LDR,B,LDB,m,n)
Apply the rotation found by find_rotation
Calls:
dgemm()
-
approx_dble:
()¶ File :
utils/util.irp.f
double precision function approx_dble(a,n)
-
b_coef:
()¶ File :
utils/need.irp.f
double precision function b_coef(n,u)
-
binom_func:
()¶ File :
utils/util.irp.f
double precision function binom_func(i,j)
-
check_mem:
()¶ File :
utils/memory.irp.f
subroutine check_mem(rss_in,routine)
Checks if n gigabytes can be allocated. If not, exit the run.
Needs:
Called by:
create_selection_buffer()
davidson_diag_hjj_sjj()
make_selection_buffer_s2()
merge_selection_buffers()
pt2_collector()
pt2_j
pt2_w
remove_duplicates_in_selection_buffer()
run_cipsi()
run_pt2_slave()
run_stochastic_cipsi()
select_singles_and_doubles()
selection_collector()
sort_selection_buffer()
testteethbuilding()
zmq_pt2()
Calls:
resident_memory()
-
dble_fact:
()¶ File :
utils/util.irp.f
double precision function dble_fact(n)
-
dble_fact_even:
()¶ File :
utils/util.irp.f
double precision function dble_fact_even(n) result(fact2)
n!!
-
dble_fact_odd:
()¶ File :
utils/util.irp.f
double precision function dble_fact_odd(n) result(fact2)
n!!
-
dble_logfact:
()¶ File :
utils/util.irp.f
double precision function dble_logfact(n) result(logfact2)
n!!
-
ddfact2:
()¶ File :
utils/need.irp.f
double precision function ddfact2(n)
-
dset_order:
()¶ File :
utils/sort.irp.f_template_347
subroutine dset_order(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A.
Called by:
ao_coef_normalized_ordered
h_s2_u_0_nstates_openmp()
h_s2_u_0_nstates_zmq()
h_s2_u_0_two_e_nstates_openmp()
-
dset_order_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine dset_order_big(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format
-
dsort:
()¶ File :
utils/sort.irp.f_template_293
subroutine dsort(x,iorder,isize)
Sort array x(isize). iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
ao_coef_normalized_ordered
make_selection_buffer_s2()
psi_det_sorted
reorder_core_orb()
sort_selection_buffer()
Calls:
insertion_dsort()
quick_dsort()
-
erf0:
()¶ File :
utils/need.irp.f
double precision function erf0(x)
-
extrapolate_data:
()¶ File :
utils/extrapolation.irp.f
subroutine extrapolate_data(N_data, data, pt2, output)
Extrapolate the data to the FCI limit
Called by:
Calls:
get_pseudo_inverse()
-
f_integral:
()¶ File :
utils/integration.irp.f
double precision function F_integral(n,p)
function that calculates the following integral int_{-infty}^{+infty} x^n exp(-p x^2) dx
-
fact:
()¶ File :
utils/util.irp.f
double precision function fact(n)
n!
-
find_rotation:
()¶ File :
utils/linear_algebra.irp.f
subroutine find_rotation(A,LDA,B,m,C,n)
Find A.C = B
Calls:
dgemm()
get_pseudo_inverse()
-
gammln:
()¶ File :
utils/need.irp.f
double precision function gammln(xx)
-
gammp:
()¶ File :
utils/need.irp.f
double precision function gammp(a,x)
Calls:
gcf()
gser()
-
gaussian_product:
()¶ File :
utils/integration.irp.f
subroutine gaussian_product(a,xa,b,xb,k,p,xp)
Gaussian product in 1D. e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2}
Called by:
give_explicit_poly_and_gaussian()
give_explicit_poly_and_gaussian_double()
-
gaussian_product_x:
()¶ File :
utils/integration.irp.f
subroutine gaussian_product_x(a,xa,b,xb,k,p,xp)
Gaussian product in 1D. e^{-a (x-x_A)^2} e^{-b (x-x_B)^2} = K_{ab}^x e^{-p (x-x_P)^2}
Called by:
overlap_gaussian_xyz()
-
gcf:
()¶ File :
utils/need.irp.f
subroutine gcf(gammcf,a,x,gln)
Called by:
gammp()
-
get_inverse:
()¶ File :
utils/linear_algebra.irp.f
subroutine get_inverse(A,LDA,m,C,LDC)
Returns the inverse of the square matrix A
Called by:
Calls:
dgetrf()
dgetri()
-
get_pseudo_inverse:
()¶ File :
utils/linear_algebra.irp.f
subroutine get_pseudo_inverse(A,LDA,m,n,C,LDC)
Find C = A^-1
Called by:
ao_cart_to_sphe_inv
extrapolate_data()
find_rotation()
Calls:
dgesvd()
-
give_explicit_poly_and_gaussian:
()¶ File :
utils/integration.irp.f
subroutine give_explicit_poly_and_gaussian(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim)
- Transforms the product of
- (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta)
- into
- fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 )
- [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 )
- [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
Called by:
ao_two_e_integral()
ao_two_e_integral_erf()
ao_two_e_integral_schwartz_accel()
ao_two_e_integral_schwartz_accel_erf()
give_explicit_poly_and_gaussian_double()
overlap_gaussian_xyz()
Calls:
gaussian_product()
multiply_poly()
recentered_poly2()
-
give_explicit_poly_and_gaussian_double:
()¶ File :
utils/integration.irp.f
subroutine give_explicit_poly_and_gaussian_double(P_new,P_center,p,fact_k,iorder,alpha,beta,gama,a,b,A_center,B_center,Nucl_center,dim)
- Transforms the product of
- (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta) exp(-(r-Nucl_center)^2 gama
- into
- fact_k * [ sum (l_x = 0,i_order(1)) P_new(l_x,1) * (x-P_center(1))^l_x ] exp (- p (x-P_center(1))^2 )
- [ sum (l_y = 0,i_order(2)) P_new(l_y,2) * (y-P_center(2))^l_y ] exp (- p (y-P_center(2))^2 )
- [ sum (l_z = 0,i_order(3)) P_new(l_z,3) * (z-P_center(3))^l_z ] exp (- p (z-P_center(3))^2 )
Calls:
gaussian_product()
give_explicit_poly_and_gaussian()
-
give_explicit_poly_and_gaussian_x:
()¶ File :
utils/integration.irp.f
subroutine give_explicit_poly_and_gaussian_x(P_new,P_center,p,fact_k,iorder,alpha,beta,a,b,A_center,B_center,dim)
- Transform the product of
- (x-x_A)^a(1) (x-x_B)^b(1) (x-x_A)^a(2) (y-y_B)^b(2) (z-z_A)^a(3) (z-z_B)^b(3) exp(-(r-A)^2 alpha) exp(-(r-B)^2 beta)
- into
- fact_k (x-x_P)^iorder(1) (y-y_P)^iorder(2) (z-z_P)^iorder(3) exp(-p(r-P)^2)
Called by:
overlap_gaussian_x()
Calls:
multiply_poly()
recentered_poly2()
-
gser:
()¶ File :
utils/need.irp.f
subroutine gser(gamser,a,x,gln)
Called by:
gammp()
-
heap_dsort:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_dsort(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
-
heap_dsort_big:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_dsort_big(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
heap_i2sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_i2sort(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
-
heap_i2sort_big:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_i2sort_big(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
heap_i8sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_i8sort(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
-
heap_i8sort_big:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_i8sort_big(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
heap_isort:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_isort(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
-
heap_isort_big:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_isort_big(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
heap_sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_sort(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
-
heap_sort_big:
()¶ File :
utils/sort.irp.f_template_261
subroutine heap_sort_big(x,iorder,isize)
Sort array x(isize) using the heap sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
hermite:
()¶ File :
utils/integration.irp.f
double precision function hermite(n,x)
Hermite polynomial
-
i2set_order:
()¶ File :
utils/sort.irp.f_template_347
subroutine i2set_order(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A.
-
i2set_order_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine i2set_order_big(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format
-
i2sort:
()¶ File :
utils/sort.irp.f_template_315
subroutine i2sort(x,iorder,isize)
Sort array x(isize). iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Calls:
quick_i2sort()
-
i8set_order:
()¶ File :
utils/sort.irp.f_template_347
subroutine i8set_order(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A.
-
i8set_order_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine i8set_order_big(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format
-
i8sort:
()¶ File :
utils/sort.irp.f_template_315
subroutine i8sort(x,iorder,isize)
Sort array x(isize). iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
make_selection_buffer_s2()
psi_bilinear_matrix_values
psi_det_alpha_unique
remove_duplicates_in_selection_buffer()
sort_dets_by_det_search_key()
Calls:
quick_i8sort()
-
insertion_dsort:
()¶ File :
utils/sort.irp.f_template_261
subroutine insertion_dsort (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
dsort()
-
insertion_dsort_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine insertion_dsort_big (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
insertion_i2sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine insertion_i2sort (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
i2radix_sort()
-
insertion_i2sort_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine insertion_i2sort_big (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
insertion_i8sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine insertion_i8sort (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
i8radix_sort()
-
insertion_i8sort_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine insertion_i8sort_big (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
Called by:
i8radix_sort_big()
-
insertion_isort:
()¶ File :
utils/sort.irp.f_template_261
subroutine insertion_isort (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
iradix_sort()
-
insertion_isort_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine insertion_isort_big (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
Called by:
iradix_sort_big()
-
insertion_sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine insertion_sort (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
sort()
-
insertion_sort_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine insertion_sort_big (x,iorder,isize)
Sort array x(isize) using the insertion sort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements. This is a version for very large arrays where the indices need to be in integer*8 format
-
iset_order:
()¶ File :
utils/sort.irp.f_template_347
subroutine iset_order(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A.
Called by:
-
iset_order_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine iset_order_big(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format
-
isort:
()¶ File :
utils/sort.irp.f_template_315
subroutine isort(x,iorder,isize)
Sort array x(isize). iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Called by:
select_singles_and_doubles()
Calls:
quick_isort()
-
lapack_diag:
()¶ File :
utils/linear_algebra.irp.f
subroutine lapack_diag(eigvalues,eigvectors,H,nmax,n)
Diagonalize matrix H
H is untouched between input and ouptut
eigevalues(i) = ith lowest eigenvalue of the H matrix
eigvectors(i,j) = <i|psi_j> where i is the basis function and psi_j is the j th eigenvector
Called by:
ci_electronic_energy
davidson_diag_hjj_sjj()
mo_as_eigvectors_of_mo_matrix()
Calls:
dsyev()
-
lapack_diagd:
()¶ File :
utils/linear_algebra.irp.f
subroutine lapack_diagd(eigvalues,eigvectors,H,nmax,n)
Diagonalize matrix H
H is untouched between input and ouptut
eigevalues(i) = ith lowest eigenvalue of the H matrix
eigvectors(i,j) = <i|psi_j> where i is the basis function and psi_j is the j th eigenvector
Called by:
Calls:
dsyevd()
-
logfact:
()¶ File :
utils/util.irp.f
double precision function logfact(n)
n!
-
lowercase:
()¶ File :
utils/util.irp.f
subroutine lowercase(txt,n)
Transform to lower case
Called by:
end_parallel_job()
new_parallel_job()
-
map_load_from_disk:
()¶ File :
utils/map_functions.irp.f
subroutine map_load_from_disk(filename,map)
Called by:
Calls:
c_f_pointer()
mmap()
-
map_save_to_disk:
()¶ File :
utils/map_functions.irp.f
subroutine map_save_to_disk(filename,map)
Called by:
mo_two_e_integrals_in_map
save_erf_two_e_integrals_ao()
save_erf_two_e_integrals_mo()
save_erf_two_e_ints_ao_into_ints_ao()
save_erf_two_e_ints_mo_into_ints_mo()
Calls:
c_f_pointer()
map_sort()
mmap()
msync()
-
memory_of_double:
()¶ File :
utils/memory.irp.f
double precision function memory_of_double(n)
Computes the memory required for n double precision elements in gigabytes.
-
memory_of_int:
()¶ File :
utils/memory.irp.f
double precision function memory_of_int(n)
Computes the memory required for n double precision elements in gigabytes.
-
multiply_poly:
()¶ File :
utils/integration.irp.f
subroutine multiply_poly(b,nb,c,nc,d,nd)
Multiply two polynomials D(t) =! D(t) +( B(t)*C(t))
Called by:
general_primitive_integral()
general_primitive_integral_erf()
give_explicit_poly_and_gaussian()
give_explicit_poly_and_gaussian_x()
give_polynomial_mult_center_one_e()
give_polynomial_mult_center_one_e_erf()
give_polynomial_mult_center_one_e_erf_opt()
i_x1_pol_mult_a1()
i_x1_pol_mult_a2()
i_x1_pol_mult_one_e()
i_x1_pol_mult_recurs()
i_x2_pol_mult()
i_x2_pol_mult_one_e()
-
normalize:
()¶ File :
utils/util.irp.f
subroutine normalize(u,sze)
Normalizes vector u
Called by:
copy_h_apply_buffer_to_wf()
davidson_diag_hjj_sjj()
save_wavefunction_general()
Calls:
dscal()
-
ortho_canonical:
()¶ File :
utils/linear_algebra.irp.f
subroutine ortho_canonical(overlap,LDA,N,C,LDC,m)
Compute C_new=C_old.U.s^-1/2 canonical orthogonalization.
overlap : overlap matrix
LDA : leftmost dimension of overlap array
N : Overlap matrix is NxN (array is (LDA,N) )
- C : Coefficients of the vectors to orthogonalize. On exit,
- orthogonal vectors
LDC : leftmost dimension of C
m : Coefficients matrix is MxN, ( array is (LDC,N) )
Called by:
Calls:
dgemm()
svd()
-
ortho_lowdin:
()¶ File :
utils/linear_algebra.irp.f
subroutine ortho_lowdin(overlap,LDA,N,C,LDC,m)
Compute C_new=C_old.S^-1/2 orthogonalization.
overlap : overlap matrix
LDA : leftmost dimension of overlap array
N : Overlap matrix is NxN (array is (LDA,N) )
- C : Coefficients of the vectors to orthogonalize. On exit,
- orthogonal vectors
LDC : leftmost dimension of C
M : Coefficients matrix is MxN, ( array is (LDC,N) )
Called by:
orthonormalize_mos()
Calls:
dgemm()
svd()
-
ortho_qr:
()¶ File :
utils/linear_algebra.irp.f
subroutine ortho_qr(A,LDA,m,n)
Orthogonalization using Q.R factorization
A : matrix to orthogonalize
LDA : leftmost dimension of A
n : Number of rows of A
m : Number of columns of A
Called by:
davidson_diag_hjj_sjj()
Calls:
dgeqrf()
dorgqr()
-
ortho_qr_unblocked:
()¶ File :
utils/linear_algebra.irp.f
subroutine ortho_qr_unblocked(A,LDA,m,n)
Orthogonalization using Q.R factorization
A : matrix to orthogonalize
LDA : leftmost dimension of A
n : Number of rows of A
m : Number of columns of A
Calls:
dgeqr2()
dorg2r()
-
overlap_gaussian_x:
()¶ File :
utils/one_e_integration.irp.f
double precision function overlap_gaussian_x(A_center,B_center,alpha,beta,power_A,power_B,dim)
\[\sum_{-infty}^{+infty} (x-A_x)^ax (x-B_x)^bx exp(-alpha(x-A_x)^2) exp(-beta(x-B_X)^2) dx\]Calls:
give_explicit_poly_and_gaussian_x()
-
overlap_x_abs:
()¶ File :
utils/one_e_integration.irp.f
subroutine overlap_x_abs(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx)
Called by:
-
print_memory_usage:
()¶ File :
utils/memory.irp.f
subroutine print_memory_usage()
Prints the memory usage in the output
Called by:
write_time()
Calls:
resident_memory()
total_memory()
-
quick_dsort:
()¶ File :
utils/sort.irp.f_template_261
subroutine quick_dsort(x, iorder, isize)
Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Needs:
Called by:
dsort()
Calls:
rec_d_quicksort()
-
quick_i2sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine quick_i2sort(x, iorder, isize)
Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Needs:
Called by:
i2sort()
Calls:
rec_i2_quicksort()
-
quick_i8sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine quick_i8sort(x, iorder, isize)
Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Needs:
Called by:
i8sort()
Calls:
rec_i8_quicksort()
-
quick_isort:
()¶ File :
utils/sort.irp.f_template_261
subroutine quick_isort(x, iorder, isize)
Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Needs:
Called by:
isort()
Calls:
rec_i_quicksort()
-
quick_sort:
()¶ File :
utils/sort.irp.f_template_261
subroutine quick_sort(x, iorder, isize)
Sort array x(isize) using the quicksort algorithm. iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Needs:
Called by:
sort()
Calls:
rec__quicksort()
-
recentered_poly2:
()¶ File :
utils/integration.irp.f
subroutine recentered_poly2(P_new,x_A,x_P,a,P_new2,x_B,x_Q,b)
Recenter two polynomials
Needs:
Called by:
give_explicit_poly_and_gaussian()
give_explicit_poly_and_gaussian_x()
-
resident_memory:
()¶ File :
utils/memory.irp.f
subroutine resident_memory(value)
Returns the current used memory in gigabytes used by the current process.
Needs:
Called by:
check_mem()
davidson_diag_hjj_sjj()
print_memory_usage()
zmq_pt2()
Calls:
omp_set_lock()
omp_unset_lock()
-
rint:
()¶ File :
utils/integration.irp.f
double precision function rint(n,rho)
\[\int_0^1 dx \exp(-p x^2) x^n\]
-
rint1:
()¶ File :
utils/integration.irp.f
double precision function rint1(n,rho)
Standard version of rint
Needs:
-
rint_large_n:
()¶ File :
utils/integration.irp.f
double precision function rint_large_n(n,rho)
Version of rint for large values of n
-
rint_sum:
()¶ File :
utils/integration.irp.f
double precision function rint_sum(n_pt_out,rho,d1)
Needed for the calculation of two-electron integrals.
-
rinteg:
()¶ File :
utils/need.irp.f
double precision function rinteg(n,u)
-
rintgauss:
()¶ File :
utils/need.irp.f
double precision function rintgauss(n)
-
sabpartial:
()¶ File :
utils/need.irp.f
double precision function SABpartial(zA,zB,A,B,nA,nB,gamA,gamB,l)
Needs:
-
set_order:
()¶ File :
utils/sort.irp.f_template_347
subroutine set_order(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A.
-
set_order_big:
()¶ File :
utils/sort.irp.f_template_412
subroutine set_order_big(x,iorder,isize)
array A has already been sorted, and iorder has contains the new order of elements of A. This subroutine changes the order of x to match the new order of A. This is a version for very large arrays where the indices need to be in integer*8 format
-
sort:
()¶ File :
utils/sort.irp.f_template_293
subroutine sort(x,iorder,isize)
Sort array x(isize). iorder in input should be (1,2,3,…,isize), and in output contains the new order of the elements.
Calls:
insertion_sort()
quick_sort()
-
sorted_dnumber:
()¶ File :
utils/sort.irp.f_template_261
subroutine sorted_dnumber(x,isize,n)
Returns the number of sorted elements
-
sorted_i2number:
()¶ File :
utils/sort.irp.f_template_261
subroutine sorted_i2number(x,isize,n)
Returns the number of sorted elements
-
sorted_i8number:
()¶ File :
utils/sort.irp.f_template_261
subroutine sorted_i8number(x,isize,n)
Returns the number of sorted elements
-
sorted_inumber:
()¶ File :
utils/sort.irp.f_template_261
subroutine sorted_inumber(x,isize,n)
Returns the number of sorted elements
-
sorted_number:
()¶ File :
utils/sort.irp.f_template_261
subroutine sorted_number(x,isize,n)
Returns the number of sorted elements
-
svd:
()¶ File :
utils/linear_algebra.irp.f
subroutine svd(A,LDA,U,LDU,D,Vt,LDVt,m,n)
Compute A = U.D.Vt
LDx : leftmost dimension of x
Dimsneion of A is m x n
Called by:
mo_as_svd_vectors_of_mo_matrix()
mo_as_svd_vectors_of_mo_matrix_eig()
ortho_canonical()
ortho_lowdin()
Calls:
dgesvd()
-
total_memory:
()¶ File :
utils/memory.irp.f
subroutine total_memory(value)
Returns the current used memory in gigabytes used by the current process.
Called by:
print_memory_usage()
-
u_dot_u:
()¶ File :
utils/util.irp.f
double precision function u_dot_u(u,sze)
Compute <u|u>
-
u_dot_v:
()¶ File :
utils/util.irp.f
double precision function u_dot_v(u,v,sze)
Compute <u|v>
-
wall_time:
()¶ File :
utils/util.irp.f
subroutine wall_time(t)
The equivalent of cpu_time, but for the wall time.
Called by:
add_integrals_to_map()
add_integrals_to_map_erf()
add_integrals_to_map_no_exit_34()
add_integrals_to_map_three_indices()
ao_pseudo_integrals_local
ao_pseudo_integrals_non_local
ao_two_e_integrals_erf_in_map
ao_two_e_integrals_in_map
davidson_converged()
davidson_diag_hjj_sjj()
output_wall_time_0
pt2_collector()
run_pt2_slave()
run_slave_main()
write_time()
Calls:
system_clock()
-
write_git_log:
()¶ File :
utils/util.irp.f
subroutine write_git_log(iunit)
Write the last git commit in file iunit.