32 #ifndef ERKALE_ERISCREEN
33 #define ERKALE_ERISCREEN
65 void calculate(std::vector< std::vector<IntegralDigestor *> > & digest,
double tol)
const;
67 arma::vec
calculate_force(std::vector< std::vector<ForceDigestor *> > & digest,
double tol)
const;
84 size_t fill(
const BasisSet * basis,
double shtol,
bool verbose=
true);
87 arma::mat
calcJ(
const arma::mat & P,
double tol)
const;
89 std::vector<arma::cx_mat>
calcJK(
const std::vector<arma::cx_mat> & P,
double jfrac,
double kfrac,
double tol)
const;
92 arma::mat
calcK(
const arma::mat & P,
double tol)
const;
94 arma::cx_mat
calcK(
const arma::cx_mat & P,
double tol)
const;
96 void calcK(
const arma::mat & Pa,
const arma::mat & Pb, arma::mat & Ka, arma::mat & Kb,
double tol)
const;
98 void calcK(
const arma::cx_mat & Pa,
const arma::cx_mat & Pb, arma::cx_mat & Ka, arma::cx_mat & Kb,
double tol)
const;
101 void calcJK(
const arma::mat & P, arma::mat & J, arma::mat & K,
double tol)
const;
103 void calcJK(
const arma::cx_mat & P, arma::mat & J, arma::cx_mat & K,
double tol)
const;
105 void calcJK(
const arma::mat & Pa,
const arma::mat & Pb, arma::mat & J, arma::mat & Ka, arma::mat & Kb,
double tol)
const;
107 void calcJK(
const arma::cx_mat & Pa,
const arma::cx_mat & Pb, arma::mat & J, arma::cx_mat & Ka, arma::cx_mat & Kb,
double tol)
const;
112 arma::vec
forceJ(
const arma::mat & P,
double tol)
const;
114 arma::vec
forceK(
const arma::mat & P,
double tol,
double kfrac)
const;
116 arma::vec
forceK(
const arma::mat & Pa,
const arma::mat & Pb,
double tol,
double kfrac)
const;
118 arma::vec
forceJK(
const arma::mat & P,
double tol,
double kfrac)
const;
120 arma::vec
forceJK(
const arma::mat & Pa,
const arma::mat & Pb,
double tol,
double kfrac)
const;
void get_range_separation(double &omega, double &alpha, double &beta) const
Get range separation.
Definition: eriscreen.cpp:75
double beta
Fraction of short-range exchange.
Definition: eriscreen.h:62
arma::vec forceK(const arma::mat &P, double tol, double kfrac) const
Calculate exchange force with tolerance tol for integrals.
Definition: eriscreen.cpp:649
const BasisSet * basp
Pointer to the used basis set.
Definition: eriscreen.h:53
arma::mat calcK(const arma::mat &P, double tol) const
Calculate exchange matrix with tolerance tol for integrals.
Definition: eriscreen.cpp:282
void set_range_separation(double omega, double alpha, double beta)
Set range separation.
Definition: eriscreen.cpp:69
Helper for integral sorts.
Definition: basis.h:109
std::vector< size_t > iidx
Index helper.
Definition: eriscreen.h:55
double alpha
Fraction of long-range exchange.
Definition: eriscreen.h:60
Screening of electron repulsion integrals.
Definition: eriscreen.h:46
~ERIscreen()
Destructor.
Definition: eriscreen.cpp:62
size_t get_N() const
Get amount of basis functions.
Definition: eriscreen.cpp:65
arma::vec forceJK(const arma::mat &P, double tol, double kfrac) const
Calculate Coulomb and exchange forces at the same time with tolerance tol for integrals.
Definition: eriscreen.cpp:707
ERIscreen()
Constructor.
Definition: eriscreen.cpp:55
arma::vec calculate_force(std::vector< std::vector< ForceDigestor * > > &digest, double tol) const
Run force calculation with given digestor.
Definition: eriscreen.cpp:154
arma::mat screen
Prescreening table of shell integrals.
Definition: eriscreen.h:48
Basis set.
Definition: basis.h:187
Force digestor.
Definition: eri_digest.h:89
double omega
Range separation parameter.
Definition: eriscreen.h:58
arma::vec forceJ(const arma::mat &P, double tol) const
Calculate Coulomb force with tolerance tol for integrals.
Definition: eriscreen.cpp:621
std::vector< arma::cx_mat > calcJK(const std::vector< arma::cx_mat > &P, double jfrac, double kfrac, double tol) const
Calculate set of Coulomb and exchange matrices with tolerance tol for integrals (for PZ-SIC) ...
Definition: eriscreen.cpp:564
size_t fill(const BasisSet *basis, double shtol, bool verbose=true)
Form screening matrix, return amount of significant shell pairs.
Definition: eriscreen.cpp:81
Integral digestor.
Definition: eri_digest.h:24
std::vector< eripair_t > shpairs
Integral pairs sorted by value.
Definition: eriscreen.h:50
arma::mat calcJ(const arma::mat &P, double tol) const
Calculate Coulomb matrix with tolerance tol for integrals.
Definition: eriscreen.cpp:249
void calculate(std::vector< std::vector< IntegralDigestor * > > &digest, double tol) const
Run calculation with given digestor.
Definition: eriscreen.cpp:97