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

This class contains smart pointers to two-center two-electron matrices for different atoms.

This class stores for each atom pair a shared pointer to a Global2c2eMatrix, containing the ERIs between the two centers.

Public Types

using integralMatrix_t = std::shared_ptr<multipole::Global2c2eMatrix>
using Container = std::vector<std::vector<integralMatrix_t>>

Public Functions

TwoCenterIntegralContainer(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const ElementParameters &ep)

constructor, give a reference to the positions, to the elements and to the element paramters, where the atomic orbital composition is.

Parameters
  • elements: vector specifying the elements of the molecule.

  • positions: vector of the position in cartesian coordinates of the nuclei.

  • ep: parameters of the elements. Contain, for istance, the AO composition of each element.

void initialize()

Initializes the Global2c2eMatrix for each atom pair.

Their size depend on the element pair in question.

void update(Utils::derivOrder order)

Updated the Global2c2eMatrix for each atom pair.

Parameters
  • order: specify up to which derivative the integral has to be calculated.

void set(unsigned int a, unsigned int b, integralMatrix_t mat)

sets a Global2c2eMatrix to correspond to a certain atom pair.

Parameters
  • a: index of the first atom.

  • b: index of the second atom.

  • mat: std::shared_ptr<multipole::Global2c2eMatrix> containing the ERIs corresponding to the atom pair.

integralMatrix_t get(unsigned int a, unsigned int b) const

Getter for the ERIs corresponding to an atom pair.

Return

a std::shared_ptr<Global2c2eMatrix> containing the ERIs corresponding to the atom pair.

Parameters
  • a: index of the first atom. Must be smaller than b.

  • b: index of the second atom. Must be bigger than a.

Private Functions

void initializePair(unsigned int i, unsigned int j)
void updatePair(unsigned int i, unsigned int j, Utils::derivOrder order)

Private Members

multipole::Global2c2eTerms terms_
const ElementParameters &elementParameters_
Container matrices_
unsigned int nAtoms_
const Utils::ElementTypeCollection &elementTypes_
const Utils::PositionCollection &positions_