File oneCenterTwoElectronIntegrals.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 OneCenterTwoElectronIntegrals
#include <oneCenterTwoElectronIntegrals.h>

This class calculates all the unique one-center two-electron integrals for a given element.

Public Types

using orb_index_t = int

Public Functions

void setElement(Utils::ElementType e, BasisFunctions basisFunctions = BasisFunctions::spd)
void calculateIntegrals()
int getNumberIntegrals() const
void set(orb_index_t a, orb_index_t b, orb_index_t c, orb_index_t d, double value)
double get(orb_index_t a, orb_index_t b, orb_index_t c, orb_index_t d) const
double get(int index) const
void setSlaterCondonParameters(const SlaterCondonParameters *slaterCondonParameters)

Private Functions

void initialize(BasisFunctions basisFunctions)
void setExchangePIntegral()
void calculateIntegralsFromExponents()
bool needsIntegralsFromSlaterCondonParameters()

Private Members

Utils::ElementType element_
int nIntegrals_
std::vector<double> integrals_
std::vector<bool> alreadyGiven_
const SlaterCondonParameters *scPar_ = {nullptr}
OneCenterTwoElectronCalculator calculator_
bool elementHasBeenSet_ = {false}