21#ifndef VOTCA_XTP_BSE_H
22#define VOTCA_XTP_BSE_H
38template <Index cqp, Index cx, Index cd, Index cd2>
73 const Eigen::MatrixXd& Hqp_in);
107 const options& opt,
const Eigen::VectorXd& RPAEnergies,
108 const Eigen::MatrixXd& Hqp_in,
const Eigen::VectorXd& epsilon_0_inv);
172 void PrintWeights(
const Eigen::VectorXd& weights)
const;
174 template <
typename BSE_OPERATOR>
176 BSE_OPERATOR&
H, std::shared_ptr<SymmetricTiles> cache =
nullptr)
const;
184 std::shared_ptr<SymmetricTiles>
hd;
185 std::shared_ptr<SymmetricTiles>
hd2;
194 template <
typename BSE_OPERATOR>
197 template <
typename BSE_OPERATOR_ApB,
typename BSE_OPERATOR_AmB>
199 BSE_OPERATOR_AmB&)
const;
201 template <
typename BSE_OPERATOR_A,
typename BSE_OPERATOR_B>
203 BSE_OPERATOR_B& Bop)
const;
211 const Eigen::VectorXd& RPAInputEnergies,
double energy,
214 const std::vector<std::pair<
const Eigen::VectorXd*,
215 const Eigen::VectorXd*>>& pairs)
const;
217 const Eigen::VectorXd& Bvec)
const;
222 const Eigen::VectorXd& RPAInputEnergies);
226 template <
typename BSE_OPERATOR>
void setReactionField(const Eigen::MatrixXd &R, bool include_kreac)
Screen by a static polarizable environment (embedded BSE).
void Solve_singlets(Orbitals &orb) const
BSE(Logger &log, TCMatrix_gwbse &Mmn)
Eigen::MatrixXd getHqp() const
static double state_matrix_bytes_
DirectCaches direct_caches_
void DecideDirectCaches(bool coupling) const
void printFragInfo(const std::vector< QMFragment< BSE_Population > > &frags, Index state) const
void PrintWeights(const Eigen::VectorXd &weights) const
void printWeights(Index i_bse, double weight) const
std::string StateDynamicLabel(const QMStateType &type) const
void configure_with_precomputed_screening(const options &opt, const Eigen::VectorXd &RPAEnergies, const Eigen::MatrixXd &Hqp_in, const Eigen::VectorXd &epsilon_0_inv)
void Analyze_singlets(std::vector< QMFragment< BSE_Population > > fragments, const Orbitals &orb) const
Eigen::MatrixXd DirectTermDensity(const std::vector< std::pair< const Eigen::VectorXd *, const Eigen::VectorXd * > > &pairs) const
tools::EigenSystem Solve_triplets_BTDA() const
Eigen::VectorXd ReactionFieldExchange(const tools::EigenSystem &es, bool tda) const
TripletOperator_TDA getTripletOperator_TDA() const
void MatchDressingToRoute()
SingletOperator_TDA getSingletOperator_TDA() const
tools::EigenSystem Solve_singlets_BTDA() const
void Perturbative_DynamicalScreening(const QMStateType &type, Orbitals &orb)
void Analyze_triplets(std::vector< QMFragment< BSE_Population > > fragments, const Orbitals &orb) const
void SetupDirectInteractionOperator(const Eigen::VectorXd &DFTenergies, double energy)
void configure(const options &opt, const Eigen::VectorXd &RPAEnergies, const Eigen::MatrixXd &Hqp_in)
tools::EigenSystem & GetBSEEigenSystem(const QMStateType &type, Orbitals &orb) const
Eigen::VectorXd epsilon_0_inv_
SymmetricEigenSystem ScreenedInteraction(const Eigen::VectorXd &RPAInputEnergies, double energy, DFTTimings &timings) const
void configureBSEOperator(BSE_OPERATOR &H, std::shared_ptr< SymmetricTiles > cache=nullptr) const
ExpectationValues ExpectationValue_Operator(const QMStateType &type, const Orbitals &orb, const BSE_OPERATOR &H) const
Interaction Analyze_eh_interaction(const QMStateType &type, const Orbitals &orb) const
static void setStateMatrixMemory(double bytes)
double ExchangePrefactor(const QMStateType &type) const
void RotateIntoScreeningFrame(const Eigen::MatrixXd &U)
tools::EigenSystem Solve_singlets_TDA() const
Eigen::MatrixXd reaction_field_
tools::EigenSystem solve_hermitian(BSE_OPERATOR &h) const
tools::EigenSystem Solve_nonhermitian(BSE_OPERATOR_ApB &apb, BSE_OPERATOR_AmB &) const
void Solve_triplets(Orbitals &orb) const
void ReleaseDirectCaches() const
tools::EigenSystem Solve_nonhermitian_Davidson(BSE_OPERATOR_A &Aop, BSE_OPERATOR_B &Bop) const
Eigen::MatrixXd AdjustHqpSize(const Eigen::MatrixXd &Hqp_in, const Eigen::VectorXd &RPAInputEnergies)
Eigen::MatrixXd CouplingTermDensity(const Eigen::VectorXd &Avec, const Eigen::VectorXd &Bvec) const
std::string StateShortLabel(const QMStateType &type) const
tools::EigenSystem Solve_triplets_TDA() const
Eigen::MatrixXd dressing_
std::string StateEnergiesHeader(const QMStateType &type) const
Wall-clock accounting for the parts of a DFT run.
Logger is used for thread-safe output of messages.
Container for molecular orbitals and derived one-particle data.
BSE_OPERATOR< 1, 2, 1, 0 > SingletOperator_TDA
BSE_OPERATOR< 1, 0, 1, 0 > TripletOperator_TDA
Provides a means for comparing floating point numbers.
std::shared_ptr< SymmetricTiles > hd2
std::shared_ptr< SymmetricTiles > hd
Eigen::VectorXd direct_term
Eigen::VectorXd cross_term
Eigen::VectorXd qp_contrib
Eigen::VectorXd exchange_contrib
Eigen::VectorXd direct_contrib
std::string davidson_tolerance
std::string davidson_update
std::string davidson_correction