File oneCenterSlaterIntegral.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine
namespace Sparrow
namespace nddo
class OneCenterSlaterIntegral
#include <oneCenterSlaterIntegral.h>

Calculation of the one-centre integrals (related to Slater-Condon parameters) according to Kumar, Mishra, J. Phys., 1987, 29, 385-390. The calculation is not optimized for performance as it does not need to be fast. NB: this returns U^l(a,b,c,d) = R^k(a,c,b,d) as defined in other papers.

Public Functions

OneCenterSlaterIntegral()
void setPrincipal(int na, int nb, int nc, int nd)
void setAngular(int la, int lb, int lc, int ld)
void setExponents(double ea, double eb, double ec, double ed)
double calculate(int l)

Private Functions

bool validLValue() const
void computeHelperVariables()
double calculateFactor()
double calculateFirstTerm()
double calculateSecondTerm()
double calculateThirdTerm()
double calculateSecondSumTerm(int ll)
double calculateThirdSumTerm(int ll)
long long int factorial(int n)

Factorial, works up to n = 20.

Private Members

int l_
int na_
int nb_
int nc_
int nd_
int la_
int lb_
int lc_
int ld_
double ea_
double eb_
double ec_
double ed_
int n1_
int n2_
double e1_
double e2_

Private Static Functions

static std::array<long long int, 20> createFactorialArrayUpTo20()