Solves subspace problem for linear eigenvalues and system of linear equations. More...
#include <SubspaceSolverLinEig.h>
Solves subspace problem for linear eigenvalues and system of linear equations.
Public Types | |
using | value_type = typename ISubspaceSolver< RT, QT, PT >::value_type |
using | value_type_abs = typename ISubspaceSolver< RT, QT, PT >::value_type_abs |
using | R = typename ISubspaceSolver< RT, QT, PT >::R |
using | Q = typename ISubspaceSolver< RT, QT, PT >::Q |
using | P = typename ISubspaceSolver< RT, QT, PT >::P |
![]() | |
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 | |
SubspaceSolverLinEig (std::shared_ptr< Logger > logger) | |
void | solve (IXSpace< R, Q, P > &xspace, const size_t nroots_max) override |
Solve the subspace problem. More... | |
void | set_error (int root, value_type_abs error) override |
Set error value for solution root More... | |
void | set_error (const std::vector< int > &roots, const std::vector< value_type_abs > &errors) override |
Update errors for a group of roots. More... | |
const Matrix< value_type > & | solutions () const override |
Access solutions from the last solve() call. More... | |
const std::vector< value_type > & | eigenvalues () const override |
Access eigenvalues from the last solve() call. More... | |
const std::vector< value_type_abs > & | errors () const override |
Access errors corresponding to each solution. More... | |
size_t | size () const override |
Number of solutions. More... | |
void | set_hermiticity (bool hermitian) |
Set Hermiticity of the subspace. More... | |
bool | get_hermiticity () |
void | set_augmented_hessian (double parameter) |
Set value of augmented hessian parameter. If 0, than augmented Hessian is not used. More... | |
double | get_augmented_hessian () |
![]() | |
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... | |
Public Attributes | |
value_type_abs | m_svd_solver_threshold = 1.0e-14 |
threshold to select null space during SVD in eigenproblem More... | |
Protected Member Functions | |
void | solve_eigenvalue (IXSpace< R, Q, P > &xspace, const size_t nroots_max) |
void | solve_linear_equations (IXSpace< R, Q, P > &xspace) |
Protected Attributes | |
Matrix< value_type > | m_solutions |
solution matrix with row vectors More... | |
std::vector< value_type > | m_eigenvalues |
eigenvalues More... | |
std::vector< value_type_abs > | m_errors |
errors in subspace solutions More... | |
std::shared_ptr< Logger > | m_logger {} |
bool | m_hermitian = false |
flags the matrix as Hermitian More... | |
double | m_augmented_hessian = 0 |
value of augmented hessian parameter. If 0, than augmented Hessian is not used More... | |
using molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::P = typename ISubspaceSolver<RT, QT, PT>::P |
using molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::Q = typename ISubspaceSolver<RT, QT, PT>::Q |
using molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::R = typename ISubspaceSolver<RT, QT, PT>::R |
using molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::value_type = typename ISubspaceSolver<RT, QT, PT>::value_type |
using molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::value_type_abs = typename ISubspaceSolver<RT, QT, PT>::value_type_abs |
|
inlineexplicit |
|
inlineoverridevirtual |
Access eigenvalues from the last solve() call.
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inlineoverridevirtual |
Access errors corresponding to each solution.
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inline |
|
inline |
|
inline |
Set value of augmented hessian parameter. If 0, than augmented Hessian is not used.
|
inlineoverridevirtual |
Update errors for a group of roots.
roots | group of roots |
errors | errors corresponding to each root |
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inlineoverridevirtual |
Set error value for solution root
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inline |
Set Hermiticity of the subspace.
|
inlineoverridevirtual |
Number of solutions.
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inlineoverridevirtual |
Access solutions from the last solve() call.
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
|
inlineoverridevirtual |
Solve the subspace problem.
xspace | definition of the subspace |
nroots_max | maximum number of roots to calculate |
Implements molpro::linalg::itsolv::subspace::ISubspaceSolver< RT, QT, PT >.
Reimplemented in molpro::linalg::itsolv::subspace::SubspaceSolverRSPT< RT, QT, PT >.
|
inlineprotected |
|
inlineprotected |
|
protected |
value of augmented hessian parameter. If 0, than augmented Hessian is not used
|
protected |
eigenvalues
|
protected |
errors in subspace solutions
|
protected |
flags the matrix as Hermitian
|
protected |
|
protected |
solution matrix with row vectors
value_type_abs molpro::linalg::itsolv::subspace::SubspaceSolverLinEig< RT, QT, PT >::m_svd_solver_threshold = 1.0e-14 |
threshold to select null space during SVD in eigenproblem