iterative-solver 0.0
molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT > Struct Template Referenceabstract

Manages solution of the subspace problem and storage of those solutions. More...

#include <ISubspaceSolver.h>

Inheritance diagram for molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >:

Detailed Description

template<class RT, class QT, class PT>
struct molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >

Manages solution of the subspace problem and storage of those solutions.

Iterative solvers can have different ways to solve the subspace problem, e.g. dense diagonalisation for eigenvalue problem, and residual minimisation in DIIS. They should inherit from this class to have consistent interface.

Public Types

using R = RT
 
using Q = QT
 
using P = PT
 
using value_type = typename array::ArrayHandler< R, R >::value_type
 
using value_type_abs = typename array::ArrayHandler< R, R >::value_type_abs
 

Public Member Functions

virtual ~ISubspaceSolver ()=default
 
virtual void solve (IXSpace< R, Q, P > &xspace, size_t nroots_max)=0
 Solve the subspace problem. More...
 
virtual void set_error (int root, value_type_abs error)=0
 Update the error associated with a given root. More...
 
virtual void set_error (const std::vector< int > &roots, const std::vector< value_type_abs > &errors)=0
 Update errors for a group of roots. More...
 
virtual const Matrix< value_type > & solutions () const =0
 Access solutions from the last solve() call. More...
 
virtual const std::vector< value_type > & eigenvalues () const =0
 Access eigenvalues from the last solve() call. More...
 
virtual const std::vector< value_type_abs > & errors () const =0
 Access errors corresponding to each solution. More...
 
virtual size_t size () const =0
 Number of solutions stored in this object. More...
 

Member Typedef Documentation

◆ P

template<class RT , class QT , class PT >
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::P = PT

◆ Q

template<class RT , class QT , class PT >
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::Q = QT

◆ R

template<class RT , class QT , class PT >
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::R = RT

◆ value_type

template<class RT , class QT , class PT >
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::value_type = typename array::ArrayHandler<R, R>::value_type

◆ value_type_abs

template<class RT , class QT , class PT >
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::value_type_abs = typename array::ArrayHandler<R, R>::value_type_abs

Constructor & Destructor Documentation

◆ ~ISubspaceSolver()

template<class RT , class QT , class PT >
virtual molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::~ISubspaceSolver ( )
virtualdefault

Member Function Documentation

◆ eigenvalues()

template<class RT , class QT , class PT >
virtual const std::vector< value_type > & molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::eigenvalues ( ) const
pure virtual

◆ errors()

template<class RT , class QT , class PT >
virtual const std::vector< value_type_abs > & molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::errors ( ) const
pure virtual

◆ set_error() [1/2]

template<class RT , class QT , class PT >
virtual void molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::set_error ( const std::vector< int > &  roots,
const std::vector< value_type_abs > &  errors 
)
pure virtual

◆ set_error() [2/2]

template<class RT , class QT , class PT >
virtual void molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::set_error ( int  root,
value_type_abs  error 
)
pure virtual

◆ size()

template<class RT , class QT , class PT >
virtual size_t molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::size ( ) const
pure virtual

◆ solutions()

◆ solve()

template<class RT , class QT , class PT >
virtual void molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::solve ( IXSpace< R, Q, P > &  xspace,
size_t  nroots_max 
)
pure virtual