21#ifndef VOTCA_XTP_ERIS_H
22#define VOTCA_XTP_ERIS_H
41 double pair_threshold = 0.0);
47 const Eigen::MatrixXd& occMos,
const Eigen::MatrixXd& DMAT)
const {
48 std::array<Eigen::MatrixXd, 2> result;
57 const Eigen::MatrixXd& DMAT)
const {
58 if (occMos.rows() > 0 && occMos.cols() > 0) {
59 assert(occMos.rows() == DMAT.rows() &&
"occMos.rows()==DMAT.rows()");
79 const Eigen::MatrixXd& DMAT,
double error)
const {
86 const Eigen::MatrixXd& matrix_operator) {
87 return matrix_operator.cwiseProduct(DMAT).sum();
112 const std::vector<libint2::Shell>& basis,
113 const std::vector<std::vector<Index>>& shellpairs)
const;
118 template <
bool with_exchange>
119 std::array<Eigen::MatrixXd, 2>
Compute4c(
const Eigen::MatrixXd& dmat,
Container to hold Basisfunctions for all atoms.
Takes a density matrix and and an auxiliary basis set and calculates the electron repulsion integrals...
Eigen::MatrixXd CalculateERIs_3c(const Eigen::MatrixXd &DMAT) const
void Initialize(const AOBasis &dftbasis, const AOBasis &auxbasis, double pair_threshold=0.0)
Index Removedfunctions() const
std::vector< std::vector< libint2::ShellPair > > shellpairdata_
std::vector< libint2::Shell > basis_
Eigen::MatrixXd ComputeSchwarzShells(const AOBasis &dftbasis) const
double MetricSeconds() const
Wall time spent on the aux Coulomb metric and its inverse square root.
static constexpr double kDensityRankCutoff
std::vector< std::vector< Index > > shellpairs_
std::array< Eigen::MatrixXd, 2 > CalculateERIs_EXX_4c(const Eigen::MatrixXd &DMAT, double error) const
Index StoredPairs() const
Stored basis-function pairs of the 3c tensor and all N(N+1)/2 pairs.
static constexpr Index kExchangeBatchRows
Rows of B_P X collected per thread before one rank update.
void Initialize_4c(const AOBasis &dftbasis)
Eigen::MatrixXd CalculateEXX_3c(const Eigen::MatrixXd &occMos, const Eigen::MatrixXd &DMAT) const
static double CalculateEnergy(const Eigen::MatrixXd &DMAT, const Eigen::MatrixXd &matrix_operator)
std::array< Eigen::MatrixXd, 2 > Compute4c(const Eigen::MatrixXd &dmat, double error) const
std::array< Eigen::MatrixXd, 2 > CalculateERIs_EXX_3c(const Eigen::MatrixXd &occMos, const Eigen::MatrixXd &DMAT) const
std::vector< std::vector< libint2::ShellPair > > ComputeShellPairData(const std::vector< libint2::Shell > &basis, const std::vector< std::vector< Index > > &shellpairs) const
Eigen::MatrixXd CalculateERIs_4c(const Eigen::MatrixXd &DMAT, double error) const
Eigen::MatrixXd ExchangeFromFactors(const Eigen::MatrixXd &factors, Index npos) const
Eigen::MatrixXd schwarzscreen_
Eigen::MatrixXd ComputeShellBlockNorm(const Eigen::MatrixXd &dmat) const
std::vector< Index > starts_
Eigen::MatrixXd CalculateEXX_dmat(const Eigen::MatrixXd &DMAT) const
TCMatrix_dft threecenter_
Index AuxSize() const
Number of auxiliary functions the 3c tensor is stored for.
Eigen::MatrixXd CalculateEXX_mos(const Eigen::MatrixXd &occMos) const
RI three-centre tensor of the DFT code, B_P,mu nu = sum_Q V^-1/2_PQ (Q|mu nu).
Charge transport classes.
Provides a means for comparing floating point numbers.