Class AngularIntegral

Class Documentation

class AngularIntegral

Calculates and stores the angular integrals needed for ECP integration.

This should not usually be created directly, it is instead owned by an ECPIntegral object, so that integrals can be performed over multiple ECP centers without duplicating work.

Public Functions

ThreeIndex<double> uklm(int lam, int mu) const

Calculates all possible USP to spherical transformation coefficients for a given angular momentum

Parameters
  • lam – - the angular momentum

  • mu – - the subshell

Returns

ThreeIndex of the values U_lam,mu(k, l, m)

FiveIndex<double> makeU() const

Builds the USP to spherical transformation coefficients for use in calculating the type 1 and 2 integrals

Returns

FiveIndex of the coefficients U(lam, lam+mu, k, l, m)

AngularIntegral()

Default constructor creates empty object.

AngularIntegral(int LB, int LE)

Specified constructor calls init with given arguments

Parameters
  • LB – - the maximum angular momentum of the orbital basis

  • LE – - the maximum angular momentum of the ECP basis

void init(int LB, int LE)

Initialises the object, must be called before anything else if default constructor was used.

Parameters
  • LB – - the maximum angular momentum of the orbital basis

  • LE – - the maximum angular momentum of the ECP basis

void compute()

Computes the type 1 and 2 angular integrals

void clear()

TODO: Clears the W and omega arrays.

double getIntegral(int k, int l, int m, int lam, int mu) const

Returns the type 1 angular integral W(k, l, m, lam, mu)

Parameters
  • k – - x index

  • l – - y index

  • m – - z index

  • lam – - angular momentum

  • mu – - subshell

Returns

value of type 1 angular integral

double getIntegral(int k, int l, int m, int lam, int mu, int rho, int sigma) const

Returns the type 2 angular integral Omega(k, l, m, lam, mu, rho, sigma)

Parameters
  • k – - x index

  • l – - y index

  • m – - z index

  • lam – - angular momentum of current ECP shell

  • mu – - subshell of lam

  • rho – - angular momentum of current basis shell

  • sigma – - subshell of rho

Returns

value of type 2 angular integral

inline int *getOmegaMults()
inline const int *getOmegaMults() const
inline int *getOmegaDims()
inline const int *getOmegaDims() const
inline std::vector<double> &getOmegaData()
inline const std::vector<double> &getOmegaData() const
bool isZero(int k, int l, int m, int lam, int mu, double tolerance) const

is W(k, l, m, lam, mu) zero to within a given tolerance?

bool isZero(int k, int l, int m, int lam, int mu, int rho, int sigma, double tolerance) const

is Omega(k, l, m, lam, mu, rho, sigma) zero to within a given tolerance?