21#ifndef VOTCA_XTP_BSE_H
22#define VOTCA_XTP_BSE_H
33template <Index cqp, Index cx, Index cd, Index cd2>
68 const Eigen::MatrixXd& Hqp_in);
71 const options& opt,
const Eigen::VectorXd& RPAEnergies,
72 const Eigen::MatrixXd& Hqp_in,
const Eigen::VectorXd& epsilon_0_inv);
124 void PrintWeights(
const Eigen::VectorXd& weights)
const;
126 template <
typename BSE_OPERATOR>
129 template <
typename BSE_OPERATOR>
132 template <
typename BSE_OPERATOR_ApB,
typename BSE_OPERATOR_AmB>
134 BSE_OPERATOR_AmB&)
const;
136 template <
typename BSE_OPERATOR_A,
typename BSE_OPERATOR_B>
138 BSE_OPERATOR_B& Bop)
const;
147 const Eigen::VectorXd& RPAInputEnergies);
151 template <
typename BSE_OPERATOR>
156 template <
typename BSE_OPERATOR>
void Solve_singlets(Orbitals &orb) const
BSE(Logger &log, TCMatrix_gwbse &Mmn)
Eigen::MatrixXd getHqp() 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
tools::EigenSystem Solve_triplets_BTDA() const
TripletOperator_TDA getTripletOperator_TDA() const
SingletOperator_TDA getSingletOperator_TDA() const
ExpectationValues ExpectationValue_Operator_State(const QMState &state, const Orbitals &orb, const BSE_OPERATOR &H) 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_
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
double ExchangePrefactor(const QMStateType &type) const
tools::EigenSystem Solve_singlets_TDA() const
void configureBSEOperator(BSE_OPERATOR &H) const
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
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)
std::string StateShortLabel(const QMStateType &type) const
tools::EigenSystem Solve_triplets_TDA() const
std::string StateEnergiesHeader(const QMStateType &type) const
Logger is used for thread-safe output of messages.
Container for molecular orbitals and derived one-particle data.
Identifier for QMstates. Strings like S1 are converted into enum +zero indexed int.
BSE_OPERATOR< 1, 2, 1, 0 > SingletOperator_TDA
BSE_OPERATOR< 1, 0, 1, 0 > TripletOperator_TDA
Provides a means for comparing floating point numbers.
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