Psi4
Public Member Functions | Private Member Functions | Private Attributes | List of all members
psi::AngularIntegral Class Reference

Calculates and stores the angular integrals needed for ECP integration. More...

#include <ecpint.h>

Public Member Functions

 AngularIntegral ()
 Default constructor creates empty object. More...
 
 AngularIntegral (int LB, int LE)
 Specified constructor calls init with given arguments. More...
 
void init (int LB, int LE)
 
void compute ()
 
void clear ()
 TODO: Clears the W and omega arrays. More...
 
double getIntegral (int k, int l, int m, int lam, int mu) const
 
double getIntegral (int k, int l, int m, int lam, int mu, int rho, int sigma) 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? More...
 
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? More...
 

Private Member Functions

double calcG (int l, int m) const
 Worker functions for calculating terms in the USP to spherical transformation coefficients. More...
 
double calcH1 (int i, int j, int l, int m) const
 
double calcH2 (int i, int j, int k, int m) const
 
ThreeIndex< double > uklm (int lam, int mu) const
 
ThreeIndex< double > Pijk (int maxI) const
 
FiveIndex< double > makeU ()
 
void makeW (FiveIndex< double > &U)
 
void makeOmega (FiveIndex< double > &U)
 

Private Attributes

int LB
 Maximum angular momentum of orbital basis and ECP basis, respectively. More...
 
int LE
 
int wDim
 Limits for the w-integral indices, and angular momentum indices. More...
 
int maxL
 
FiveIndex< double > W
 Stores the type 1 angular integrals. More...
 
SevenIndex< double > omega
 Stores the type 2 angular integrals. More...
 

Detailed Description

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.

Constructor & Destructor Documentation

psi::AngularIntegral::AngularIntegral ( )

Default constructor creates empty object.

psi::AngularIntegral::AngularIntegral ( int  LB,
int  LE 
)

Specified constructor calls init with given arguments.

Member Function Documentation

double psi::AngularIntegral::calcG ( int  l,
int  m 
) const
private

Worker functions for calculating terms in the USP to spherical transformation coefficients.

double psi::AngularIntegral::calcH1 ( int  i,
int  j,
int  l,
int  m 
) const
private
double psi::AngularIntegral::calcH2 ( int  i,
int  j,
int  k,
int  m 
) const
private
void psi::AngularIntegral::clear ( )

TODO: Clears the W and omega arrays.

void psi::AngularIntegral::compute ( )

Computes the type 1 and 2 angular integrals

double psi::AngularIntegral::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 psi::AngularIntegral::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
void psi::AngularIntegral::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
bool psi::AngularIntegral::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 psi::AngularIntegral::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?

void psi::AngularIntegral::makeOmega ( FiveIndex< double > &  U)
private

Builds the type 2 angular integrals

Parameters
U- the USP to spherical transformation coefficients
FiveIndex< double > psi::AngularIntegral::makeU ( )
private

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)
void psi::AngularIntegral::makeW ( FiveIndex< double > &  U)
private

Builds the type 1 angular integrals

Parameters
U- the USP to spherical transformation coefficients
ThreeIndex< double > psi::AngularIntegral::Pijk ( int  maxI) const
private

Calculates the polynomial integrals, int (x^i y^j z^k dOm) where dOm is the solid angle differential

Parameters
maxI- the maximum power, i, to determine
Returns
ThreeIndex of polynomials P(i, j, k), where strictly i >= j >= k
ThreeIndex< double > psi::AngularIntegral::uklm ( int  lam,
int  mu 
) const
private

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)

Member Data Documentation

int psi::AngularIntegral::LB
private

Maximum angular momentum of orbital basis and ECP basis, respectively.

int psi::AngularIntegral::LE
private
int psi::AngularIntegral::maxL
private
SevenIndex<double> psi::AngularIntegral::omega
private

Stores the type 2 angular integrals.

FiveIndex<double> psi::AngularIntegral::W
private

Stores the type 1 angular integrals.

int psi::AngularIntegral::wDim
private

Limits for the w-integral indices, and angular momentum indices.


The documentation for this class was generated from the following files: