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

Class to generate the two-electron matrix G for semi-empirical methods. This class is parallelized with OpenMP.

Public Functions

TwoElectronMatrix(const Utils::ElementTypeCollection &elements, const Utils::DensityMatrix &densityMatrix, const OneCenterIntegralContainer &oneCIntegrals, const TwoCenterIntegralContainer &twoCIntegrals, const ElementParameters &elementPar, const Utils::AtomsOrbitalsIndexes &aoIndexes)
void initialize()
void calculate(bool spinPolarized)
void calculateBlocks()
void calculateSameAtomBlock(int startIndex, int nAOs, Utils::ElementType el, Eigen::MatrixXd &G, Eigen::MatrixXd &GAlpha, Eigen::MatrixXd &GBeta)
void calculateDifferentAtomsBlock(int startA, int startB, int nAOsA, int nAOsB, const multipole::Global2c2eMatrix &m, Eigen::MatrixXd &G, Eigen::MatrixXd &GAlpha, Eigen::MatrixXd &GBeta)
template<Utils::derivativeType O>
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivativeContainer) const
const Eigen::MatrixXd &operator()() const
const Eigen::MatrixXd &getMatrix() const
const Eigen::MatrixXd &getAlpha() const
const Eigen::MatrixXd &getBeta() const

Private Functions

template<Utils::derivativeType O>
void addDerivativesForBlock(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivativeContainer, int a, int b, int startA, int startB, int nAOsA, int nAOsB, const multipole::Global2c2eMatrix &m) const

Private Members

bool spinPolarized_
const Eigen::MatrixXd &P
const Eigen::MatrixXd &PAlpha_
const Eigen::MatrixXd &PBeta_
const OneCenterIntegralContainer &oneCenterIntegrals
const TwoCenterIntegralContainer &twoCenterIntegrals
const ElementParameters &elementParameters
const Utils::AtomsOrbitalsIndexes &aoIndexes_
Eigen::MatrixXd G_
Eigen::MatrixXd GAlpha_
Eigen::MatrixXd GBeta_
const Utils::ElementTypeCollection &elementTypes_
int nAOs_
int nAtoms_