44 const Eigen::VectorXd* cached_omegas =
nullptr;
45 const std::vector<Eigen::VectorXd>* cached_modes =
nullptr;
46 rpa_.GetCachedScreeningModes(cached_omegas, cached_modes);
57#pragma omp parallel for schedule(dynamic)
65 const Eigen::VectorXd& omegas,
double eta) {
66 return ExactPoles{energies, n_occ, omegas, eta};
71 double frequency)
const {
79 Index gw_level,
const Eigen::VectorXd& frequencies)
const {
88 Index gw_level,
double frequency)
const {
99 double frequency2)
const {
103 const Eigen::MatrixXd r12 =
106 poles, r12.data(), Eigen::Vector2d(frequency1, frequency2));
107 return 0.5 * (sums(0) + sums(1));
std::vector< Eigen::MatrixXd > residues_
Eigen::VectorXd rpa_omegas_
void PrepareScreening() final
double CalcCorrelationDiagElement(Index gw_level, double frequency) const final
double CalcCorrelationOffDiagElement(Index gw_level1, Index gw_level2, double frequency1, double frequency2) const final
std::vector< Eigen::VectorXd > screening_modes_
double CalcCorrelationDiagElementDerivative(Index gw_level, double frequency) const final
Eigen::VectorXd CalcCorrelationDiagElements(Index gw_level, const Eigen::VectorXd &frequencies) const final
All frequencies of a level in one pass (see exact_pole_sums).
const Eigen::VectorXd & getSpinRPAInputEnergies() const
double Value(const ExactPoles &poles, const double *residues, double w)
S_n(w) at one frequency.
double Derivative(const ExactPoles &poles, const double *residues, double w)
dS_n/dw at one frequency
Eigen::VectorXd Values(const ExactPoles &poles, const double *residues, const Eigen::VectorXd &w)
Eigen::VectorXd ValuesDirectWeighted(const ExactPoles &poles, const double *weights, const Eigen::VectorXd &w)
sum_p a_p f(w - z_p) with given weights a_p (e.g. r_n1 r_n2)
Charge transport classes.
Provides a means for comparing floating point numbers.
Pole sums of the exact (RPA spectral) correlation self-energy.