21#ifndef VOTCA_XTP_RPA_UKS_H
22#define VOTCA_XTP_RPA_UKS_H
169 const Eigen::VectorXd& rpaenergies_beta) {
184 const Eigen::VectorXd& dftenergies_beta,
185 const Eigen::VectorXd& gwaenergies_alpha,
186 const Eigen::VectorXd& gwaenergies_beta,
272 const Eigen::VectorXd*& omegas,
273 const std::vector<Eigen::VectorXd>*& modes)
const;
333 const Eigen::VectorXd& dftenergies,
Index homo,
Wall-clock accounting for the parts of a DFT run.
Logger is used for thread-safe output of messages.
void BuildCachedScreeningModes() const
Eigen::VectorXd screening_omegas_
Eigen::VectorXd energies_beta_
std::function< void(bool, Index, Eigen::VectorXd &)> SpinWeightsFn
Eigen::MatrixXd ResponseSum(const SpinWeightsFn &weights) const
const Eigen::VectorXd & getRPAInputEnergiesBeta() const
Access the current beta RPA input energies used in the response.
Eigen::MatrixXd calculate_epsilon_i(double frequency) const
Dielectric matrix on the imaginary frequency axis.
const TCMatrix_gwbse_spin & Mmn_
Eigen::MatrixXd calculate_epsilon(double frequency) const
Internal implementation of epsilon(w).
Index getHomoBeta() const
Index getHomoAlpha() const
rpa_eigensolution h2p_solution_cache_
void InvalidateH2pCache()
std::vector< Eigen::VectorXd > screening_modes_
void GetCachedScreeningModes(const Eigen::VectorXd *&omegas, const std::vector< Eigen::VectorXd > *&modes) const
Eigen::VectorXd Calculate_H2p_AmB() const
Construct the diagonal AmB block of the two-particle Hamiltonian.
Eigen::VectorXd energies_alpha_
void setTimings(DFTTimings *timings)
Times the dielectric-matrix builds in these timings (optional).
double getEta() const
Small positive broadening used in the real-frequency response.
const Eigen::VectorXd & getRPAInputEnergiesAlpha() const
Access the current alpha RPA input energies used in the response.
void ShiftUncorrectedEnergies(Eigen::VectorXd &energies, const Eigen::VectorXd &dftenergies, Index homo, Index qpmin, Index gwsize)
Shift uncorrected states outside the GW window.
OutOfWindowShift out_of_window_
void setRPAInputEnergies(const Eigen::VectorXd &rpaenergies_alpha, const Eigen::VectorXd &rpaenergies_beta)
Set alpha and beta RPA input energies directly.
Eigen::MatrixXd Calculate_H2p_ApB() const
Construct the ApB block of the unrestricted two-particle Hamiltonian.
RPA_UKS(Logger &log, const TCMatrix_gwbse_spin &Mmn)
const rpa_eigensolution & Diagonalize_H2p() const
Diagonalize the unrestricted two-particle Hamiltonian.
void configure(Index homo_alpha, Index homo_beta, Index rpamin, Index rpamax)
Eigen::MatrixXd calculate_epsilon_r(double frequency) const
Dielectric matrix on the real frequency axis.
SymmetricEigenSystem Diagonalize_H2p_C(const Eigen::MatrixXd &C) const
Diagonalize the symmetrized two-particle matrix C.
void UpdateRPAInputEnergies(const Eigen::VectorXd &dftenergies_alpha, const Eigen::VectorXd &dftenergies_beta, const Eigen::VectorXd &gwaenergies_alpha, const Eigen::VectorXd &gwaenergies_beta, Index qpmin)
Update alpha and beta RPA input energies from DFT and GW energies.
void setOutOfWindowShift(const OutOfWindowShift &shift)
Configure orbital window and spin-resolved HOMO indices.
Provides a means for comparing floating point numbers.
How the RPA energies of levels outside the GW window are shifted.
Solution of the two-particle Hamiltonian in the unrestricted basis.