GBTOlib: library for evaluation of molecular integrals in mixed Gaussian / B-spline basis  111
Data Types | Functions/Subroutines | Variables
cgto_pw_expansions_gbl Module Reference

Functions/Subroutines

subroutine, public init_CGTO_pw_expansions_mod (inp_max_l_pw, max_l_cgto)
 
subroutine, public init_dbg (bspline_grid)
 USED ONLY FOR DEBUGGING. More...
 
subroutine construct_radial_grid (this, inp_bspline_grid, first_bspline_index, nuclei, delta_r1, x, w, n, n_rng_knot)
 
subroutine final (this)
 
subroutine construct_GK_angular_grid (this, n_div, r, w1, n_points)
 
subroutine eval_Xlm_on_lebedev_grid (this, n)
 
subroutine eval_Y_l_BTO_BTO (this)
 
subroutine eval_regular_grid (this, A, B, delta_r)
 
subroutine eval_exponential_grid (this, alp, n)
 Exponential grid on [0,1] with points accumulating towards 1. More...
 
subroutine assign_grid (this, r_points, weights)
 
subroutine write_CGTO_shell_pw_expansion_obj (this)
 
subroutine eval_BTO_CGTO_Y_lm (this, grid_r1_r2)
 
subroutine write_Y_lm_to_file (this, scratch_directory)
 
subroutine expand_pw_in_bsplines (this, grid_r1_r2, cgto_m, lm)
 
subroutine eval_coulomb_integrals (this, grid_r1_r2)
 
subroutine eval_radial_GG_BB (this, grid_r1_r2)
 Calculates the radial integral 2-electron integrals between all pairs of BTOs and all partial waves of the GG pair. More...
 
subroutine eval_CGTO_pair_radial_grid (this, a, x, w, n)
 
subroutine eval_CGTO_radial_grid (this, only_on_bto_grid, grid_r1_r2, delta_r1, x, w, n, n_rng_knot, nuclei)
 
subroutine radial_grid_mo (centers, R_min, R_max, bspline_grid, delta_cgto_grid, x, w, n, r_points, weights, n_total_points)
 Radial grid used when integrating over the molecular orbitals purely numerically. More...
 
subroutine radial_grid (centers, only_on_bto_grid, R_min, R_max, bspline_grid, delta_cgto_grid, x, w, n, n_rng_knot, r_points, weights, n_total_points)
 Determines the radial grid needed to describe, integrals involving the CGTO and the B-splines on the given grid. We assume that if the CGTO spanned the whole B-spline grid it would be sufficient to use the given quadrature rule (x,w,n) within each knot interval. For CGTOs whose radial extent is smaller than the range of the B-spline grid the number of quadrature points within each knot interval is expanded by the factor ceiling(n_int/R), where R is the extent of the CGTO (determined to coincide with the nearest larger knot) and n_int is the number of distinct intervals of knots in the B-spline basis. More...
 
subroutine radial_grid_CGTO_pair (cgto_A, cgto_B, R_min, R_max, x, w, n, delta_cgto_grid, r_points, weights, n_total_points)
 
subroutine omp_calculate_CGTO_pw_coefficients_analytic (threshold, max_l_inp, max_lp, cgto_shell, r_points, angular_integrals, non_neg_indices_l, gaunt_angular_integrals, non_neg_indices_l_lp)
 Calculates the partial wave expansion of CGTO up to partial wave L=max_l_inp and on the grid of radial points r_points. From this it generates the double angular projections for X_lm up to l=max_lp. It uses auxiliary arrays declared on top of this routine. More...
 
subroutine omp_calculate_CGTO_pair_pw_coefficients_analytic (max_l, cgto_A, cgto_B, r_points, angular_integrals)
 Calculates the partial wave expansion of a product of two CGTOs up to partial wave L=max_l and on the grid of radial points r_points. More...
 
real(kind=cfp) function eval_Xlm_x_pair_cgto_surface (this, x, y)
 Evaluates the product of CGTO and a real spherical harmonic at a given point in space. x,y are the spherical polar coordinates on the sphere. More...
 
real(kind=cfp) function gto_pair_eval_R (cgto_A, m_A, cgto_B, m_B, x, R)
 Evaluates the product of a pair of CGTOs for the given m values at radial distance x and for angular direction given by vector R. More...
 
subroutine precalculate_pair_solh_translation_coeffs (CGTO_A_L, RA_A, Xlm_CGTO_A_center, CGTO_B_L, RA_B, Xlm_CGTO_B_center, transl_cfs_AB)
 
subroutine calculate_pair_lambda_couplings (l, m, CGTO_A_L, CGTO_B_L, n_contr_pairs, Xlm_product_CGTO_center, transl_cfs_AB, c_pair_lambda)
 
real(kind=cfp) function CGTO_pw_coefficient_stable (asym, r, l, lm, Lg, Lg_Mg, c_lambda, contraction_besi, prim_fac, n_prim, besi_args)
 
subroutine precalculate_solh_translation_coeffs (CGTO_L, RA, Xlm_CGTO_center, transl_cfs)
 
subroutine calculate_lambda_couplings (CGTO_L, l, m, Xlm_CGTO_center, transl_cfs, c_lambda)
 
real(kind=cfp) function besi_half_asym (z, l)
 
subroutine, public precalculate_Xlm_for_nuclei (nuclei, max_l, Xlm_nuclei, n_Xlm_nuclei)
 Calculates the real spherical harmonics for all l,m up to l=max_l for directions corresponding to the nuclear positions. More...
 
subroutine precalculate_Xlm_for_CGTO_center (RA, max_l, Xlm_CGTO_center)
 Calculates the real spherical harmonics for all l,m up to l=max_l for directions corresponding to the nuclear positions. More...
 
subroutine precalculate_Xlm_for_CGTO_product_center (n_contr_pairs, RA, max_l, Xlm_product_CGTO_center)
 
subroutine calc_resh_coefficients (L)
 
subroutine calc_solh_coefficients (L)
 

Variables

type(cgto_shell_data_obj), dimension(n_alp), public dbg_cgto
 
type(couplings_type), public cpl
 Used to evaluate various coupling coefficients. More...
 

Function/Subroutine Documentation

◆ assign_grid()

subroutine cgto_pw_expansions_gbl::assign_grid ( class(pw_expansion_obj)  this,
real(kind=cfp), dimension(:), intent(in)  r_points,
real(kind=cfp), dimension(:), intent(in)  weights 
)

◆ besi_half_asym()

real(kind=cfp) function cgto_pw_expansions_gbl::besi_half_asym ( real(kind=cfp), intent(in)  z,
integer, intent(in)  l 
)
Here is the call graph for this function:

◆ calc_resh_coefficients()

subroutine cgto_pw_expansions_gbl::calc_resh_coefficients ( integer, intent(in)  L)

◆ calc_solh_coefficients()

subroutine cgto_pw_expansions_gbl::calc_solh_coefficients ( integer, intent(in)  L)

◆ calculate_lambda_couplings()

subroutine cgto_pw_expansions_gbl::calculate_lambda_couplings ( integer, intent(in)  CGTO_L,
integer, intent(in)  l,
integer, intent(in)  m,
real(kind=cfp), dimension(:), allocatable  Xlm_CGTO_center,
real(kind=cfp), dimension(:,:,:), allocatable  transl_cfs,
real(kind=cfp), dimension(:,:,:), allocatable  c_lambda 
)
Warning
Requires precalculated values of the real spherical harmonics at the position of the CGTO nucleus. The coupling coefficients should also be precalculated for performance reasons.
Here is the call graph for this function:

◆ calculate_pair_lambda_couplings()

subroutine cgto_pw_expansions_gbl::calculate_pair_lambda_couplings ( integer, intent(in)  l,
integer, intent(in)  m,
integer, intent(in)  CGTO_A_L,
integer, intent(in)  CGTO_B_L,
integer, intent(in)  n_contr_pairs,
real(kind=cfp), dimension(:), allocatable  Xlm_product_CGTO_center,
real(kind=cfp), dimension(:,:,:,:,:), allocatable  transl_cfs_AB,
real(kind=cfp), dimension(:,:,:,:,:), allocatable  c_pair_lambda 
)

◆ CGTO_pw_coefficient_stable()

real(kind=cfp) function cgto_pw_expansions_gbl::CGTO_pw_coefficient_stable ( real(kind=cfp), intent(in)  asym,
real(kind=cfp), intent(in)  r,
integer, intent(in)  l,
integer, intent(in)  lm,
integer, intent(in)  Lg,
integer, intent(in)  Lg_Mg,
real(kind=cfp), dimension(0:,0:,:,:), intent(in)  c_lambda,
real(kind=cfp), dimension(0:), intent(in)  contraction_besi,
real(kind=cfp), dimension(n_prim), intent(in)  prim_fac,
integer, intent(in)  n_prim,
real(kind=cfp), dimension(n_prim), intent(in)  besi_args 
)

◆ construct_GK_angular_grid()

subroutine cgto_pw_expansions_gbl::construct_GK_angular_grid ( class(legendre_grid_r1_r2_obj)  this,
integer, intent(in)  n_div,
real(kind=cfp), dimension(:,:), allocatable  r,
real(kind=cfp), dimension(:), allocatable  w1,
integer, intent(out)  n_points 
)

◆ construct_radial_grid()

subroutine cgto_pw_expansions_gbl::construct_radial_grid ( class(legendre_grid_r1_r2_obj)  this,
type(bspline_grid_obj)  inp_bspline_grid,
integer, intent(in)  first_bspline_index,
type(nucleus_type), dimension(:)  nuclei,
real(kind=cfp), intent(in)  delta_r1,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n,
integer, intent(in)  n_rng_knot 
)
Here is the call graph for this function:

◆ eval_BTO_CGTO_Y_lm()

subroutine cgto_pw_expansions_gbl::eval_BTO_CGTO_Y_lm ( class(cgto_shell_pw_expansion_obj)  this,
class(legendre_grid_r1_r2_obj)  grid_r1_r2 
)

◆ eval_CGTO_pair_radial_grid()

subroutine cgto_pw_expansions_gbl::eval_CGTO_pair_radial_grid ( class(cgto_shell_pair_pw_expansion_obj)  this,
real(kind=cfp), intent(in)  a,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n 
)

◆ eval_CGTO_radial_grid()

subroutine cgto_pw_expansions_gbl::eval_CGTO_radial_grid ( class(cgto_shell_pw_expansion_obj)  this,
logical, intent(in)  only_on_bto_grid,
class(legendre_grid_r1_r2_obj)  grid_r1_r2,
real(kind=cfp), intent(in)  delta_r1,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n,
integer, intent(in)  n_rng_knot,
type(nucleus_type), dimension(:), optional  nuclei 
)
Here is the call graph for this function:

◆ eval_coulomb_integrals()

subroutine cgto_pw_expansions_gbl::eval_coulomb_integrals ( class(cgto_shell_pair_pw_expansion_obj)  this,
class(legendre_grid_r1_r2_obj)  grid_r1_r2 
)
Here is the call graph for this function:

◆ eval_exponential_grid()

subroutine cgto_pw_expansions_gbl::eval_exponential_grid ( class(pw_expansion_obj)  this,
real(kind=cfp), intent(in)  alp,
integer, intent(in)  n 
)

Exponential grid on [0,1] with points accumulating towards 1.

◆ eval_radial_GG_BB()

subroutine cgto_pw_expansions_gbl::eval_radial_GG_BB ( class(cgto_shell_pair_pw_expansion_obj)  this,
class(legendre_grid_r1_r2_obj)  grid_r1_r2 
)

Calculates the radial integral 2-electron integrals between all pairs of BTOs and all partial waves of the GG pair.

◆ eval_regular_grid()

subroutine cgto_pw_expansions_gbl::eval_regular_grid ( class(pw_expansion_obj)  this,
real(kind=cfp), intent(in)  A,
real(kind=cfp), intent(in)  B,
real(kind=cfp), intent(in)  delta_r 
)

◆ eval_Xlm_on_lebedev_grid()

subroutine cgto_pw_expansions_gbl::eval_Xlm_on_lebedev_grid ( class(legendre_grid_r1_r2_obj)  this,
integer, intent(in)  n 
)

◆ eval_Xlm_x_pair_cgto_surface()

real(kind=cfp) function cgto_pw_expansions_gbl::eval_Xlm_x_pair_cgto_surface ( class(xlm_x_pair_cgto_surface)  this,
real(kind=cfp), intent(in)  x,
real(kind=cfp), intent(in)  y 
)

Evaluates the product of CGTO and a real spherical harmonic at a given point in space. x,y are the spherical polar coordinates on the sphere.

◆ eval_Y_l_BTO_BTO()

subroutine cgto_pw_expansions_gbl::eval_Y_l_BTO_BTO ( class(legendre_grid_r1_r2_obj)  this)

◆ expand_pw_in_bsplines()

subroutine cgto_pw_expansions_gbl::expand_pw_in_bsplines ( class(cgto_shell_pw_expansion_obj)  this,
class(legendre_grid_r1_r2_obj)  grid_r1_r2,
integer, intent(in)  cgto_m,
integer, intent(in)  lm 
)

◆ final()

subroutine cgto_pw_expansions_gbl::final ( class(legendre_grid_r1_r2_obj)  this)
Here is the call graph for this function:

◆ gto_pair_eval_R()

real(kind=cfp) function cgto_pw_expansions_gbl::gto_pair_eval_R ( type(cgto_shell_data_obj), intent(in)  cgto_A,
integer, intent(in)  m_A,
type(cgto_shell_data_obj), intent(in)  cgto_B,
integer, intent(in)  m_B,
real(kind=cfp), intent(in)  x,
real(kind=cfp), dimension(3), intent(in)  R 
)

Evaluates the product of a pair of CGTOs for the given m values at radial distance x and for angular direction given by vector R.

◆ init_CGTO_pw_expansions_mod()

subroutine, public cgto_pw_expansions_gbl::init_CGTO_pw_expansions_mod ( integer, intent(in)  inp_max_l_pw,
integer, intent(in)  max_l_cgto 
)
Here is the call graph for this function:

◆ init_dbg()

subroutine, public cgto_pw_expansions_gbl::init_dbg ( type(bspline_grid_obj)  bspline_grid)

USED ONLY FOR DEBUGGING.

Here is the call graph for this function:

◆ omp_calculate_CGTO_pair_pw_coefficients_analytic()

subroutine cgto_pw_expansions_gbl::omp_calculate_CGTO_pair_pw_coefficients_analytic ( integer, intent(in)  max_l,
type(cgto_shell_data_obj), intent(in)  cgto_A,
type(cgto_shell_data_obj), intent(in)  cgto_B,
real(kind=cfp), dimension(:), allocatable  r_points,
real(kind=cfp), dimension(:,:,:), allocatable  angular_integrals 
)

Calculates the partial wave expansion of a product of two CGTOs up to partial wave L=max_l and on the grid of radial points r_points.

Here is the call graph for this function:

◆ omp_calculate_CGTO_pw_coefficients_analytic()

subroutine cgto_pw_expansions_gbl::omp_calculate_CGTO_pw_coefficients_analytic ( real(kind=cfp), intent(in)  threshold,
integer, intent(in)  max_l_inp,
integer, intent(in)  max_lp,
type(cgto_shell_data_obj), intent(in)  cgto_shell,
real(kind=cfp), dimension(:), allocatable  r_points,
real(kind=cfp), dimension(:,:), allocatable  angular_integrals,
integer, dimension(:,:), allocatable  non_neg_indices_l,
real(kind=cfp), dimension(:,:), allocatable  gaunt_angular_integrals,
integer, dimension(:,:,:), allocatable  non_neg_indices_l_lp 
)

Calculates the partial wave expansion of CGTO up to partial wave L=max_l_inp and on the grid of radial points r_points. From this it generates the double angular projections for X_lm up to l=max_lp. It uses auxiliary arrays declared on top of this routine.

Here is the call graph for this function:

◆ precalculate_pair_solh_translation_coeffs()

subroutine cgto_pw_expansions_gbl::precalculate_pair_solh_translation_coeffs ( integer, intent(in)  CGTO_A_L,
real(kind=cfp), intent(in)  RA_A,
real(kind=cfp), dimension(:), allocatable  Xlm_CGTO_A_center,
integer, intent(in)  CGTO_B_L,
real(kind=cfp), intent(in)  RA_B,
real(kind=cfp), dimension(:), allocatable  Xlm_CGTO_B_center,
real(kind=cfp), dimension(:,:,:,:,:), allocatable  transl_cfs_AB 
)
Warning
Requires precalculated values of the real spherical harmonics at the position of the CGTO nucleus. The coupling coefficients should also be precalculated for performance reasons.
Here is the call graph for this function:

◆ precalculate_solh_translation_coeffs()

subroutine cgto_pw_expansions_gbl::precalculate_solh_translation_coeffs ( integer, intent(in)  CGTO_L,
real(kind=cfp), intent(in)  RA,
real(kind=cfp), dimension(:), allocatable  Xlm_CGTO_center,
real(kind=cfp), dimension(:,:,:), allocatable  transl_cfs 
)
Warning
Requires precalculated values of the real spherical harmonics at the position of the CGTO nucleus. The coupling coefficients should also be precalculated for performance reasons.

◆ precalculate_Xlm_for_CGTO_center()

subroutine cgto_pw_expansions_gbl::precalculate_Xlm_for_CGTO_center ( real(kind=cfp), dimension(3), intent(in)  RA,
integer, intent(in)  max_l,
real(kind=cfp), dimension(:), allocatable  Xlm_CGTO_center 
)

Calculates the real spherical harmonics for all l,m up to l=max_l for directions corresponding to the nuclear positions.

◆ precalculate_Xlm_for_CGTO_product_center()

subroutine cgto_pw_expansions_gbl::precalculate_Xlm_for_CGTO_product_center ( integer, intent(in)  n_contr_pairs,
real(kind=cfp), dimension(3,n_contr_pairs), intent(in)  RA,
integer, intent(in)  max_l,
real(kind=cfp), dimension(:), allocatable  Xlm_product_CGTO_center 
)

◆ precalculate_Xlm_for_nuclei()

subroutine, public cgto_pw_expansions_gbl::precalculate_Xlm_for_nuclei ( type(nucleus_type), dimension(:), intent(in)  nuclei,
integer, intent(in)  max_l,
real(kind=cfp), dimension(:), allocatable  Xlm_nuclei,
integer, intent(out)  n_Xlm_nuclei 
)

Calculates the real spherical harmonics for all l,m up to l=max_l for directions corresponding to the nuclear positions.

◆ radial_grid()

subroutine cgto_pw_expansions_gbl::radial_grid ( real(kind=cfp), dimension(:), intent(in)  centers,
logical, intent(in)  only_on_bto_grid,
real(kind=cfp), intent(in)  R_min,
real(kind=cfp), intent(in)  R_max,
type(bspline_grid_obj), intent(in)  bspline_grid,
real(kind=cfp), intent(in)  delta_cgto_grid,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n,
integer, intent(in)  n_rng_knot,
real(kind=cfp), dimension(:), allocatable  r_points,
real(kind=cfp), dimension(:), allocatable  weights,
integer, intent(out)  n_total_points 
)

Determines the radial grid needed to describe, integrals involving the CGTO and the B-splines on the given grid. We assume that if the CGTO spanned the whole B-spline grid it would be sufficient to use the given quadrature rule (x,w,n) within each knot interval. For CGTOs whose radial extent is smaller than the range of the B-spline grid the number of quadrature points within each knot interval is expanded by the factor ceiling(n_int/R), where R is the extent of the CGTO (determined to coincide with the nearest larger knot) and n_int is the number of distinct intervals of knots in the B-spline basis.

Here is the call graph for this function:

◆ radial_grid_CGTO_pair()

subroutine cgto_pw_expansions_gbl::radial_grid_CGTO_pair ( type(cgto_shell_data_obj), intent(in)  cgto_A,
type(cgto_shell_data_obj), intent(in)  cgto_B,
real(kind=cfp), intent(in)  R_min,
real(kind=cfp), intent(in)  R_max,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n,
real(kind=cfp), intent(in)  delta_cgto_grid,
real(kind=cfp), dimension(:), allocatable  r_points,
real(kind=cfp), dimension(:), allocatable  weights,
integer, intent(out)  n_total_points 
)
Here is the call graph for this function:

◆ radial_grid_mo()

subroutine cgto_pw_expansions_gbl::radial_grid_mo ( real(kind=cfp), dimension(:), intent(in)  centers,
real(kind=cfp), intent(in)  R_min,
real(kind=cfp), intent(in)  R_max,
type(bspline_grid_obj), intent(in)  bspline_grid,
real(kind=cfp), intent(in)  delta_cgto_grid,
real(kind=cfp), dimension(2*n+1), intent(in)  x,
real(kind=cfp), dimension(2*n+1), intent(in)  w,
integer, intent(in)  n,
real(kind=cfp), dimension(:), allocatable  r_points,
real(kind=cfp), dimension(:), allocatable  weights,
integer, intent(out)  n_total_points 
)

Radial grid used when integrating over the molecular orbitals purely numerically.

Here is the call graph for this function:

◆ write_CGTO_shell_pw_expansion_obj()

subroutine cgto_pw_expansions_gbl::write_CGTO_shell_pw_expansion_obj ( class(cgto_shell_pw_expansion_obj)  this)

◆ write_Y_lm_to_file()

subroutine cgto_pw_expansions_gbl::write_Y_lm_to_file ( class(cgto_shell_pw_expansion_obj)  this,
character(len=line_len), intent(in)  scratch_directory 
)
Here is the call graph for this function:

Variable Documentation

◆ cpl

type(couplings_type), public cgto_pw_expansions_gbl::cpl

Used to evaluate various coupling coefficients.

◆ dbg_cgto

type(cgto_shell_data_obj), dimension(n_alp), public cgto_pw_expansions_gbl::dbg_cgto