GBTOlib: library for evaluation of molecular integrals in mixed Gaussian / B-spline basis  111
Data Types | Modules | Functions/Subroutines
gto_routines.f90 File Reference

Data Types

type  gto_routines_gbl::boys_function_obj
 This object contains routines for evaluation of the Boys function in double precision. The object must be first initialized using the method init and its argument values imax and mmax. imax corresponds to the largest power in series expansion of the Boys function that is needed to evaluate the Boys function in the expected range of T values. For T in the range 0,60 the value of imax has been determined to be 140. The routine eval then calculates at once the string of Boys functions for a range of m values. More...
 

Modules

module  gto_routines_gbl
 This module contains elementary routines which are used for evaluation of GTO-only integrals.
 

Functions/Subroutines

pure real(kind=cfp) function gto_routines_gbl::dngto (l, alpha)
 
real(kind=cfp) function gto_routines_gbl::cart_gto_int (alp, bet, i, j, k)
 This function calculates \( I = \int\int\int x^{i}y^{j}z^{k}\exp[-(\alpha+\beta)r^2] = {\frac{\Gamma(i/2+1/2)\Gamma(j/2+1/2)\Gamma(k/2+1/2)}{((\alpha+\beta)^{1/2(i+j+k+3)})}} \). In particular, this function can be used to calculate overlap of two primitive GTOs centered on the same nucleus. More...
 
real(kind=cfp) function gto_routines_gbl::norm_cart_gto (alp, i, j, k)
 Calculates the normalization factor for the primitive cartesian GTO function. More...
 
real(kind=cfp) function gto_routines_gbl::contr_cart_gto_norm (i, j, k, alp, ccf)
 This function calculates the normalization factor for a contracted cartesian GTO. The cartesian exponents are i,j,k. The contraction coefficients and exponents of the primitives are in the arrays alp(:) and ccf(:). More...
 
real(kind=cfp) function gto_routines_gbl::olap_ccart_csph (i, j, k, l, m, alp, ccf)
 This function calculates overlap of a contracted cartesian GTO with a contracted spherical GTO (both sitting on the same nucleus). The exponents of the contracted cartesian GTO are: i,j,k. The L,M values of the spherical GTO are: l,m. The exponents and contraction coefficients of the primitives are in the arrays alp(:), ccf(:). More...
 
subroutine gto_routines_gbl::cart_cf_sph_cf (l, ix, iy, iz, alp, ccf, sph_cgto_norm, cart_cf, sph_cf)
 This routine performs the conversion of the orbital coefficients (for one shell) for the cartesian contracted GTOs to the basis of contracted spherical GTOs. The input are the data for the cartesian GTOs (l,ix,iy,iz,alp,ccf) and the corresponding orbital coefficients (cart_cf) and the overall norm of the spherical contracted GTO (sph_cgto_norm). It is assumed that the coefficients correspond to normalized contracted cartesian GTOs. The output are the orbital coefficients sph_cf for the corresponding shell of contracted spherical GTOs with the overall norm given by sph_cgto_norm. More...
 
subroutine gto_routines_gbl::sph_cf_cart_cf (l, ix, iy, iz, alp, ccf, sph_cgto_norm, sph_cf, cart_cf)
 This routine performs the conversion of the orbital coefficients (for one shell) for the spherical contracted GTOs to the basis of contracted cartesian GTOs. The input are the data for the cartesian GTOs (l,ix,iy,iz,alp,ccf) and the orbital coefficients for the spherical GTOs (sph_cf). It is assumed that the coefficients correspond to contracted spherical GTOs normalized with sph_cgto_norm. The output are the orbital coefficients cart_cf for the corresponding shell of normalized contracted cartesian GTOs. More...
 
real(kind=cfp) function gto_routines_gbl::cms_gto_norm (rmat_radius, l, np, alp, ccf, cnorm, norms)
 Computes the normalization factor for a CMS-centered contracted spherical GTO and radius given by rmat_radius. This is computed from the self-overlap of the GTO inside the sphere of radius rmat_radius. More...
 
real(kind=cfp) function gto_routines_gbl::CGTO_amplitude (r, l, number_of_primitives, norm, norms, contractions, exponents)
 Calculates the reduced boundary amplitude of a CGTO shell. More...
 
subroutine gto_routines_gbl::olap_kei_tail (l, np_a, np_b, alp_a, alp_b, ccf_a, ccf_b, cnorm_a, norms_a, cnorm_b, norms_b, rmat_radius, olap_tail, kei_tail, bloch_ab)
 Overlap and kinetic energy tail integrals for the normalized contracted spherical GTOs centered on the CMS. These integrals are given by: More...
 
subroutine gto_routines_gbl::prop_cms_tail (l_c, l_a, l_b, np_a, np_b, alp_a, alp_b, ccf_a, ccf_b, cnorm_a, norms_a, cnorm_b, norms_b, rmat_radius, prop_tail)
 Multipole property tail integrals for a pair of shells of contracted spherical GTOs centered on the CMS. We assume that the multipole is centered on CMS just like the two GTO shells. More...
 
subroutine gto_routines_gbl::nari_tail (xc, yc, zc, l_a, l_b, np_a, np_b, alp_a, alp_b, ccf_a, ccf_b, cnorm_a, norms_a, cnorm_b, norms_b, rmat_radius, na_tail)
 Calculates nuclear attraction tail integrals for a pair of shells of spherical CGTOs centered on the CMS. More...
 
subroutine gto_routines_gbl::eri_tail (tgt_prop, tgt_pair, l_a_tgt, l_b_tgt, l_a, l_b, np_a, np_b, alp_a, alp_b, ccf_a, ccf_b, norms_a, norms_b, rmat_radius, swap_ab_cd, eri_tail_int)
 Calculates 2-electron tail integrals for 1 electron in the continuum for a pair of shells of spherical CGTOs centered on the CMS and a pair of shells of target CGTOs. This is the driver routine for eri_tail_shell. This routine ensures that the parameters are passed to eri_tail_shell in such an order to ensure that the tail integrals on output are ordered in the same way as the integrals calculated by eri. This allows for easy subtraction of the tails. l_a_tgt,l_b_tgt are angular momenta in the pair of shells of target CGTOs, tgt_prop and tgt_pair specify the property integrals for the pair of shells of the target CGTOs. The rest of the input parameters are related to the continuum and the R-matrix radius. More...
 
subroutine gto_routines_gbl::eri_tail_shell (tgt_prop, tgt_pair, l_a_tgt, l_b_tgt, l_a, l_b, np_a, np_b, alp_a, alp_b, ccf_a, ccf_b, norms_a, norms_b, rmat_radius, swap_ab_cd, eri_tail_int)
 Calculates 2-electron tail integrals for 1 electron in the continuum for a pair of shells of spherical CGTOs centered on the CMS and a pair of shells of target CGTOs. More...
 
subroutine gto_routines_gbl::abcd_to_cdab (batch_in, batch_t, na, nb, nc, nd)
 This routine takes on input the batch of integrals [ab|cd] with dimensions given by na,nb,nc,nd and returns in batch_t the transposed batch [cd|ab]. Note that this procedure is equivalent to transposition of a matrix M with dimensions na*nb,nc*nd. More...
 
integer function gto_routines_gbl::check_real_array_size (a, d)
 Takes on input the linear array 'a' and the dimension 'd' which the array should AT LEAST have, i.e. not exactly. If the array is smaller it is reallocated (loosing its contents) to the size 'd'. More...
 
subroutine gto_routines_gbl::index_1el (la, lb, ind_a, ind_b, np, int_index)
 Calculates indices of 1-electron integrals output in the linear arrays from the integral routines given the starting indices of functions in the a and b shells. ind_a corresponds to the function with m=-la, same for ind_b. We assume that indices of the rest of the functions in the shell are sequential. The indices for each integral are reordered in such a way that the index of the a function is always .ge. index of the b function. Since the 1-electron integrals are symmetrical there is no problem. The number np denotes the number of passive indices which don't enter the ordering, i.e. we think of the integral batch as being a 3d array (2*la+1,2*lb+1,np). The third dimension useded to be used in the ordering of the multipole moment integrals where the first two dimensions run over the GTOs A,B and the third dimension over the components of the multipole moments. The requirement to index all multipole integrals separately has been dropped so this option is effectively not being used in the whole library. More...
 
subroutine gto_routines_gbl::index_2el (la, lb, lc, ld, ind_a, ind_b, ind_c, ind_d, int_index, keep_ab_cd_order, swap_ab_cd)
 Calculates indices corresponding to the 2-electron integrals (ab|cd) in the linear array sph_ints (calculated by the routine eri_shell) given the starting indices of the functions in the a,b,c,d shells. ind_a must correspond to the function with m=-la, same for the b,c,d shells. We assume that indices of the rest of the functions in each shell are sequential. The indices of the functions are ordered, exploiting the permutational symmetry of the (ab|cd) integrals, so that: If keep_ab_cd_order .eq. .false. then the input variable swap_ab_cd is ignored and: ind_a .ge. ind_b, ind_c .ge. ind_d, ind_a+ind_b .ge. ind_c+ind_d, ind_a .ge. ind_c. This order of the functions is needed for the integral indexing scheme. If keep_ab_cd_order .eq. .true.: indices of the pairs of shells (ab|, |cd) are swapped or not depending on the value of the logical variable swap_ab_cd. Within the (ab| and |cd) shells the indices are ordered so that a.ge.b, c.ge.d. More...
 
subroutine gto_routines_gbl::index_2el_drv (la, lb, lc, ld, ind_a, ind_b, ind_c, ind_d, ind, keep_ab_cd_order)
 Orders the shells according to the angular momentum in the same way it is done in eri and then computes the indices for each quartet of (ab|cd) integrals. See index_2el for description of the ordering option given by the input variable keep_ab_cd_order. More...
 
subroutine gto_routines_gbl::find_mapping (ind_orig, n, n_map, map)
 Determine the mapping of indices ind_a,ind_b,ind_c,ind_d in the array ind_orig so that ind_ap.ge.ind_bp, ind_cp.ge.ind_dp, ind_ap.ge.ind_cp. More...
 
subroutine gto_routines_gbl::reorder_and_index_2el (la, lb, lc, ld, ind_a, ind_b, ind_c, ind_d, column, ind, ints)
 Reorder the integrals ints in columns a,b,c,d so that ap.ge.bp,cp.ge.dp,ap.ge.cp. The input values are the angular momenta and the starting indices in columns 1,2,3,4 of the ints and ind arrays. On output the indices in ind(1:4,i) are not ordered from the largest to the smallest as the original ones (a.ge.b,c.ge.d,a.ge.c) but that's OK since they're not needed to save the integrals in the MPI mode when this routine is used. More...
 
pure integer function gto_routines_gbl::index_1p_continuum (ordered_pairs, ind1, ind2, ind3, ind4, is_CCTT, last_CT, n_prec, n_TT_pairs)
 This is an index for two-electron integral keeping only 1p in the continuum. It works also for 2p in the continuum in which case is_CCTT must be set to .false. More...
 
subroutine gto_routines_gbl::normalize_cgto (number_of_primitives, l, exponents, contractions, norms, norm)
 
integer function gto_routines_gbl::check_cgto_data (number_of_primitives, l, exponents, contractions, norms, number_of_functions)
 
subroutine gto_routines_gbl::read_cgto (number_of_primitives, l, exponents, contractions, norms, norm, center, non_zero_at_boundary, number_of_functions, lunit, posit, pos_after_rw)
 
subroutine gto_routines_gbl::write_cgto (number_of_primitives, l, exponents, contractions, norms, norm, center, non_zero_at_boundary, number_of_functions, lunit, posit, pos_after_rw)
 
subroutine gto_routines_gbl::print_cgto_data (number_of_primitives, l, exponents, contractions, norms, norm, center, non_zero_at_boundary)
 
subroutine gto_routines_gbl::eval_cgto (r, n_points, number_of_primitives, l, exponents, contractions, norms, norm, center, eval_CGTO_shell)
 
subroutine gto_routines_gbl::compare_print_1el_ints (tag, integrals_1, int_index_1, integrals_2, int_index_2, n_integrals, column)
 Only for debugging. More...
 
subroutine gto_routines_gbl::compare_print_2el_ints (tag, integrals_1, int_index_1, integrals_2, int_index_2, n_integrals, column)
 Only for debugging. More...