21#ifndef VOTCA_XTP_RPA_UKS_H
22#define VOTCA_XTP_RPA_UKS_H
159 const Eigen::VectorXd& rpaenergies_beta) {
174 const Eigen::VectorXd& dftenergies_beta,
175 const Eigen::VectorXd& gwaenergies_alpha,
176 const Eigen::VectorXd& gwaenergies_beta,
262 const Eigen::VectorXd*& omegas,
263 const std::vector<Eigen::VectorXd>*& modes)
const;
314 const Eigen::MatrixXd& C)
const;
325 const Eigen::VectorXd& dftenergies,
Index homo,
332 const Eigen::VectorXd& dftenergies,
Index min,
Logger is used for thread-safe output of messages.
void BuildCachedScreeningModes() const
Eigen::VectorXd screening_omegas_
Eigen::VectorXd energies_beta_
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()
double getMaxCorrection(const Eigen::VectorXd &energies, const Eigen::VectorXd &dftenergies, Index min, Index max) const
Return the largest absolute GW correction in a given index range.
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_
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.
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.
Eigen::SelfAdjointEigenSolver< Eigen::MatrixXd > Diagonalize_H2p_C(const Eigen::MatrixXd &C) const
Diagonalize the symmetrized two-particle matrix C.
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)
Configure orbital window and spin-resolved HOMO indices.
Eigen::MatrixXd calculate_epsilon_r(double frequency) const
Dielectric matrix on the real frequency axis.
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.
Provides a means for comparing floating point numbers.
Solution of the two-particle Hamiltonian in the unrestricted basis.