Class RadialIntegral¶
Defined in File radial.hpp
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
class RadialIntegral¶
Abstracts the calculation of radial integrals for ECP integration.
This should not be used directly, and is owned by ECPIntegral. It provides the interface to the adaptive quadrature algorithms used to calculate the type 1 and 2 radial integrals, and the unrolled recursive scheme for type 2 radial integrals.
Public Functions
-
RadialIntegral()¶
Default constructor creates an empty object.
-
void init(int maxL, double tol = 1e-15, int small = 256, int large = 1024)¶
Initialises the object, in turn intialising the quadrature grids and BesselFunction
- Parameters
maxL – - the maximum angular momentum of integral needed
tol – - the tolerance for convergence of integrals (defaults to 1e-15)
small – - the maximum number of quadrature points for the small integration grid (default 256, minimum recommended)
large – - the maximum number of quadrature points for the large integration grid (default 1024, minimum recommended)
-
Parameters buildParameters(const GaussianShell &shellA, const GaussianShell &shellB, const ShellPairData &data) const¶
Given two GaussianShells, builds the parameters needed by both kind of integral.
- Parameters
shellA – - the first GaussianShell
shellB – - the second GaussianShell
data – - the data container for the shell pair
- Returns
the parameters needed in both type 1 and 2 integrations
-
void type1(int maxL, int N, int offset, const ECP &U, const GaussianShell &shellA, const GaussianShell &shellB, const ShellPairData &data, const Parameters ¶meters, TwoIndex<double> &values) const¶
Calculates all type 1 radial integrals over two Gaussian shells up to the given maximum angular momentum.
- Parameters
maxL – - the maximum angular momentum
N – - the power of r that the integrand is weighted by
offset – - the starting angular momentum
U – - the ECP to be integrated over
shellA – - the first GaussianShell
shellB – - the second GaussianShell
data – - the data container for the shell pair
parameters – - pre-calculated parameters for the radial integral
values – - the matrix to return the integrals in
-
void type2(int lam, int l1start, int l1end, int l2start, int l2end, int N, const ECP &U, const GaussianShell &shellA, const GaussianShell &shellB, const ShellPairData &data, const Parameters ¶meters, TwoIndex<double> &values) const¶
Calculates all type 2 radial integrals over two Gaussian shells for the given ECP angular momentum l using quadrature
- Parameters
lam – - the ECP shell angular momentum to be calculated over
l1start – - the angular momentum to start on for the first shell
l1end – - the angular momentum to stop at for the first shell
l2start – - the angular momentum to start on for the second shell
l2end – - the angular momentum to stop at for the second shell
N – - the power of r that the integrand is weighted by
U – - the ECP to be integrated over
shellA – - the first GaussianShell
shellB – - the second GaussianShell
data – - the data container for the shell pair
parameters – - pre-calculated parameters for the radial integral
values – - the matrix to return the integrals in
-
void type2(const std::vector<Triple> &triples, int nbase, int lam, const ECP &U, const GaussianShell &shellA, const GaussianShell &shellB, double A, double B, ThreeIndex<double> &radials) const¶
Calculates all the requested type 2 radial integrals using predominantly a recursive algorithm. In the triples, l1 must be less than or equal to l2. Symmetry means that for l1 > l2, {N, l1, l2} can be calculated as {N, l2, l1} but with shellA and shellB (And therefore also A and B) swapped.
- Parameters
triples – - vector of triples of form {N, l1, l2} of all required radial integrals
nbase – - the maximum number of base integrals that will be needed (so only have to compute once)
lam – - the ECP shell angular momentum to be calculated over
U – - the ECP to be integrated over
shellA – - the first GaussianShell
shellB – - the second GaussianShell
A – - the magnitude of the distance of shellA from the ECP
B – - the magnitude of the distance of shellB from the ECP
radials – - the array to return the integrals in, indexed as (N, l1, l2)
-
double estimate_type2(int N, int l1, int l2, double n, double a, double b, double A, double B) const¶
Estimates the value of the requested type 2 radial integral for prescreening, as described in ref. Shaw2017. The modal point is estimated by ignoring the ratios of bessel function derivatives - this gives an overestimate so is okay for screening, but would not be good for approximating the integral itself.
- Parameters
N – - power of r in integrand
l1 – - angular momentum of first Bessel function
l2 – - angular momentum of second Bessel function
n – - exponent of ECP
a – - exponent of primitive in shellA
b – - exponent of primitive in shellB
A – - magnitude of distance of shellA from ECP
B – - magnitude of distance of shellB from ECP
- Returns
estimated value (upper bound) of the type 2 integral
-
struct Parameters¶
struct to store all parameters needed in both type 1 and 2 integrations
-
RadialIntegral()¶