22#ifndef VOTCA_XTP_BSECOUPLING_H
23#define VOTCA_XTP_BSECOUPLING_H
43 std::string
Identify()
const {
return "bsecoupling"; }
46 const Orbitals& orbitalsB)
const override;
56 const Orbitals& orbitalsAB)
override;
63 Index methodindex)
const;
66 Index methodindex)
const;
70 const Eigen::MatrixXd& A_AB,
71 const Eigen::MatrixXd& B_AB)
const;
74 const Eigen::MatrixXd& X_AB,
77 Index bseAB_ctotal)
const;
79 template <
class BSE_OPERATOR>
81 Eigen::MatrixXd& CTStates,
83 template <
class BSE_OPERATOR>
85 Eigen::MatrixXd& projection)
const;
88 Eigen::MatrixXd& CTStates)
const;
90 Eigen::MatrixXd
Fulldiag(
const Eigen::MatrixXd& J_dimer)
const;
92 Eigen::MatrixXd
Perturbation(
const Eigen::MatrixXd& J_dimer)
const;
Evaluates electronic coupling elements.
double getSingletCouplingElement(Index levelA, Index levelB, Index methodindex) const
double getTripletCouplingElement(Index levelA, Index levelB, Index methodindex) const
bool output_perturbation_
std::string Identify() const
void CalculateCouplings(const Orbitals &orbitalsA, const Orbitals &orbitalsB, const Orbitals &orbitalsAB) override
evaluates electronic couplings
void Addoutput(tools::Property &type_summary, const Orbitals &orbitalsA, const Orbitals &orbitalsB) const override
void WriteToProperty(tools::Property &summary, const QMState &stateA, const QMState &stateB) const
std::array< Eigen::MatrixXd, 2 > JAB_triplet
Eigen::MatrixXd Perturbation(const Eigen::MatrixXd &J_dimer) const
void Initialize(tools::Property &options) override
std::array< Eigen::MatrixXd, 2 > JAB_singlet
Eigen::MatrixXd ProjectFrenkelExcitons(const Eigen::MatrixXd &BSE_Coeffs, const Eigen::MatrixXd &X_AB, Index bseX_vtotal, Index bseX_ctotal, Index bseAB_vtotal, Index bseAB_ctotal) const
Eigen::MatrixXd SetupCTStates(Index bseA_vtotal, Index bseB_vtotal, Index bseAB_vtotal, Index bseAB_ctotal, const Eigen::MatrixXd &A_AB, const Eigen::MatrixXd &B_AB) const
std::array< Eigen::MatrixXd, 2 > ProjectExcitons(Eigen::MatrixXd &FE_AB, Eigen::MatrixXd &CTStates, BSE_OPERATOR H) const
Eigen::MatrixXd Fulldiag(const Eigen::MatrixXd &J_dimer) const
Eigen::MatrixXd CalcJ_dimer(BSE_OPERATOR &H, Eigen::MatrixXd &projection) const
Eigen::MatrixXd OrthogonalizeCTs(Eigen::MatrixXd &FE_AB, Eigen::MatrixXd &CTStates) const
Base Class to derive DFT and BSE coupling from.
container for molecular orbitals
Identifier for QMstates. Strings like S1 are converted into enum +zero indexed int.
base class for all analysis tools