votca 2026-dev
Loading...
Searching...
No Matches
votca::xtp::FullBSEDavidson Class Reference

Lowest roots of the full (non-TDA) BSE. More...

#include <bse_fullsolver.h>

Collaboration diagram for votca::xtp::FullBSEDavidson:

Classes

struct  Options

Public Member Functions

 FullBSEDavidson (Logger &log, Options opt)
Index Iterations () const
Index OperatorApplications () const
template<class OpA, class OpB>
tools::EigenSystem Solve (const OpA &A, const OpB &B, Index nroots)

Private Member Functions

template<class OpA, class OpB>
void Extend (const OpA &A, const OpB &B, Eigen::MatrixXd T, Eigen::MatrixXd &P, Eigen::MatrixXd &Q, Eigen::MatrixXd &V)
void ProjectedRoots (const Eigen::MatrixXd &V, const Eigen::MatrixXd &P, const Eigen::MatrixXd &Q, Index nroots, Eigen::VectorXd &omega, Eigen::MatrixXd &x, Eigen::MatrixXd &y) const

Static Private Member Functions

static void Collapse (Eigen::MatrixXd &V, Eigen::MatrixXd &P, Eigen::MatrixXd &Q, const Eigen::MatrixXd &x, const Eigen::MatrixXd &y)

Private Attributes

Logger & log_
Options opt_
Index iterations_ = 0
Index applications_ = 0

Detailed Description

Lowest roots of the full (non-TDA) BSE.

[ A B ] [X] [ 1 0 ] [X] [ B A ] [Y] = w [ 0 -1 ] [Y]

for real symmetric A, B with A-B and A+B positive definite, in the equivalent Hermitian form of Stratmann, Scuseria and Frisch (J. Chem. Phys. 109, 8218 (1998)):

(A+B)|X+Y> = w |X-Y>, (A-B)|X-Y> = w |X+Y>.

One subspace V carries both |X+Y> and |X-Y>. Per iteration, A and B are applied once each to the new vectors; the projected problem M- M+ x = w^2 x (M+- = V^T (A+-B) V) is solved through the Cholesky factor of M-, which is symmetric and gives real roots. Restarts collapse the subspace onto the current Ritz vectors without new operator products.

Throws std::runtime_error if the projected A-B is not positive definite or a projected root is not positive (an instability of the reference); callers can then fall back to a general non-Hermitian solver.

Definition at line 91 of file bse_fullsolver.h.

Constructor & Destructor Documentation

◆ FullBSEDavidson()

votca::xtp::FullBSEDavidson::FullBSEDavidson ( Logger & log,
Options opt )
inline

Definition at line 99 of file bse_fullsolver.h.

Member Function Documentation

◆ Collapse()

void votca::xtp::FullBSEDavidson::Collapse ( Eigen::MatrixXd & V,
Eigen::MatrixXd & P,
Eigen::MatrixXd & Q,
const Eigen::MatrixXd & x,
const Eigen::MatrixXd & y )
inlinestaticprivate

Definition at line 352 of file bse_fullsolver.h.

◆ Extend()

template<class OpA, class OpB>
void votca::xtp::FullBSEDavidson::Extend ( const OpA & A,
const OpB & B,
Eigen::MatrixXd T,
Eigen::MatrixXd & P,
Eigen::MatrixXd & Q,
Eigen::MatrixXd & V )
inlineprivate

Definition at line 267 of file bse_fullsolver.h.

◆ Iterations()

Index votca::xtp::FullBSEDavidson::Iterations ( ) const
inline

Definition at line 101 of file bse_fullsolver.h.

◆ OperatorApplications()

Index votca::xtp::FullBSEDavidson::OperatorApplications ( ) const
inline

Definition at line 102 of file bse_fullsolver.h.

◆ ProjectedRoots()

void votca::xtp::FullBSEDavidson::ProjectedRoots ( const Eigen::MatrixXd & V,
const Eigen::MatrixXd & P,
const Eigen::MatrixXd & Q,
Index nroots,
Eigen::VectorXd & omega,
Eigen::MatrixXd & x,
Eigen::MatrixXd & y ) const
inlineprivate

Definition at line 319 of file bse_fullsolver.h.

◆ Solve()

template<class OpA, class OpB>
tools::EigenSystem votca::xtp::FullBSEDavidson::Solve ( const OpA & A,
const OpB & B,
Index nroots )
inline

Definition at line 105 of file bse_fullsolver.h.

Member Data Documentation

◆ applications_

Index votca::xtp::FullBSEDavidson::applications_ = 0
private

Definition at line 368 of file bse_fullsolver.h.

◆ iterations_

Index votca::xtp::FullBSEDavidson::iterations_ = 0
private

Definition at line 367 of file bse_fullsolver.h.

◆ log_

Logger& votca::xtp::FullBSEDavidson::log_
private

Definition at line 365 of file bse_fullsolver.h.

◆ opt_

Options votca::xtp::FullBSEDavidson::opt_
private

Definition at line 366 of file bse_fullsolver.h.


The documentation for this class was generated from the following file: