Manages solution of the subspace problem and storage of those solutions. More...
#include <ISubspaceSolver.h>
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... | |
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::P = PT |
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::Q = QT |
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::R = RT |
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::value_type = typename array::ArrayHandler<R, R>::value_type |
using molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >::value_type_abs = typename array::ArrayHandler<R, R>::value_type_abs |
|
virtualdefault |
|
pure virtual |
Access eigenvalues from the last solve() call.
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Access errors corresponding to each solution.
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Update errors for a group of roots.
roots | group of roots |
errors | errors corresponding to each root |
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Update the error associated with a given root.
root | solution index |
error | value of the error |
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Number of solutions stored in this object.
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Access solutions from the last solve() call.
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >.
|
pure virtual |
Solve the subspace problem.
xspace | definition of the subspace |
nroots_max | maximum number of roots to calculate |
Implemented in molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptBFGS< RT, QT, PT >, molpro::linalg::itsolv::subspace::SubspaceSolverOptSD< RT, QT, PT >, and molpro::linalg::itsolv::subspace::SubspaceSolverRSPT< RT, QT, PT >.