iterative-solver 0.0
molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P > Class Template Referenceabstract

Implements IterativeSolver interface that is common to all solvers. More...

#include <IterativeSolverTemplate.h>

Inherits Solver< R, Q, P >.

Detailed Description

template<template< class, class, class > class Solver, class R, class Q, class P>
class molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >

Implements IterativeSolver interface that is common to all solvers.

Template Parameters
Solverone of the solvers that inherits from IterativeSolver.

Public Member Functions

 IterativeSolverTemplate ()=delete
 
 IterativeSolverTemplate (const IterativeSolverTemplate< Solver, R, Q, P > &)=delete
 
 IterativeSolverTemplate (IterativeSolverTemplate< Solver, R, Q, P > &&) noexcept=default
 
IterativeSolverTemplate< Solver, R, Q, P > & operator= (const IterativeSolverTemplate< Solver, R, Q, P > &)=delete
 
IterativeSolverTemplate< Solver, R, Q, P > & operator= (IterativeSolverTemplate< Solver, R, Q, P > &&) noexcept=default
 
int add_vector (const VecRef< R > &parameters, const VecRef< R > &actions) override
 
int add_vector (std::vector< R > &parameters, std::vector< R > &actions) override
 
int add_vector (R &parameters, R &actions, value_type value=0) override
 
size_t add_p (const CVecRef< P > &pparams, const array::Span< value_type > &pp_action_matrix, const VecRef< R > &parameters, const VecRef< R > &actions, fapply_on_p_type apply_p) override
 
void clearP () override
 
void solution (const std::vector< int > &roots, const VecRef< R > &parameters, const VecRef< R > &residual) override
 
void solution (const std::vector< int > &roots, std::vector< R > &parameters, std::vector< R > &residual) override
 
void solution (R &parameters, R &residual) override
 
void solution_params (const std::vector< int > &roots, std::vector< R > &parameters) override
 
void solution_params (const std::vector< int > &roots, const VecRef< R > &parameters) override
 
void solution_params (R &parameters) override
 
std::vector< size_t > suggest_p (const CVecRef< R > &solution, const CVecRef< R > &residual, size_t max_number, double threshold) override
 
const std::vector< int > & working_set () const override
 
size_t n_roots () const override
 
void set_n_roots (size_t roots) override
 
void set_options (const Options &options) override
 
std::shared_ptr< Optionsget_options () const override
 
const std::vector< scalar_type > & errors () const override
 
const Statisticsstatistics () const override
 
void report (std::ostream &cout, bool endl=true) const override
 
void report () const override
 
void set_convergence_threshold (double thresh) override
 
double convergence_threshold () const override
 
void set_convergence_threshold_value (double thresh) override
 
double convergence_threshold_value () const override
 
void set_verbosity (Verbosity v) override
 
void set_verbosity (int v) override
 
Verbosity get_verbosity () const override
 
void set_max_iter (int n) override
 
int get_max_iter () const override
 
void set_max_p (int n) override
 
int get_max_p () const override
 
void set_p_threshold (double threshold) override
 
double get_p_threshold () const override
 
const subspace::Dimensionsdimensions () const override
 Access dimensions of the subspace. More...
 
scalar_type value () const override
 
void set_profiler (molpro::profiler::Profiler &profiler) override
 
const std::shared_ptr< molpro::profiler::Profiler > & profiler () const override
 
bool solve (const VecRef< R > &parameters, const VecRef< R > &actions, const Problem< R > &problem, bool generate_initial_guess=false) override
 
bool solve (R &parameters, R &actions, const Problem< R > &problem, bool generate_initial_guess=false) override
 
bool solve (std::vector< R > &parameters, std::vector< R > &actions, const Problem< R > &problem, bool generate_initial_guess=false) override
 
bool test_problem (const Problem< R > &problem, R &v0, R &v1, int verbosity, double threshold) const override
 

Protected Member Functions

 IterativeSolverTemplate (std::shared_ptr< subspace::IXSpace< R, Q, P > > xspace, std::shared_ptr< subspace::ISubspaceSolver< R, Q, P > > solver, std::shared_ptr< ArrayHandlers< R, Q, P > > handlers, std::shared_ptr< Statistics > stats, std::shared_ptr< Logger > logger)
 
virtual ~IterativeSolverTemplate ()
 
virtual void set_value_errors ()
 Implementation class should overload this to set errors in the current values (e.g. change in eigenvalues) More...
 
virtual void construct_residual (const std::vector< int > &roots, const CVecRef< R > &params, const VecRef< R > &actions)=0
 Constructs residual for given roots provided their parameters and actions. More...
 
virtual bool linearEigensystem () const
 
size_t solve_and_generate_working_set (const VecRef< R > &parameters, const VecRef< R > &action)
 Solves the subspace problems and selects the working set of roots, returning their parameters and residual in parameters and action. More...
 
template<typename TTT >
void check_consistent_number_of_roots_and_solutions (const std::vector< TTT > &roots, const size_t nparams)
 
bool end_iteration_needed () override
 

Protected Attributes

std::shared_ptr< ArrayHandlers< R, Q, P > > m_handlers
 Array handlers. More...
 
std::shared_ptr< subspace::IXSpace< R, Q, P > > m_xspace
 manages the subspace and associated data More...
 
std::shared_ptr< subspace::ISubspaceSolver< R, Q, P > > m_subspace_solver
 solves the subspace problem More...
 
std::vector< double > m_errors
 errors from the most recent solution More...
 
std::vector< double > m_value_errors
 value errors from the most recent solution More...
 
std::vector< int > m_working_set
 indices of roots in the working set More...
 
size_t m_nroots {0}
 number of roots the solver is searching for More...
 
double m_convergence_threshold {1.0e-8}
 residual norms less than this mark a converged solution More...
 
double m_convergence_threshold_value
 value changes less than this mark a converged solution More...
 
std::shared_ptr< Statisticsm_stats
 accumulates statistics of operations performed by the solver More...
 
std::shared_ptr< Loggerm_logger
 logger More...
 
bool m_normalise_solution = false
 whether to normalise the solutions More...
 
fapply_on_p_type m_apply_p = {}
 function that evaluates effect of action on the P space projection More...
 
Verbosity m_verbosity = Verbosity::Iteration
 how much output to print in solve() More...
 
int m_max_iter = 100
 maximum number of iterations in solve() More...
 
size_t m_max_p = 0
 maximum size of P space More...
 
double m_p_threshold = std::numeric_limits<double>::max()
 threshold for selecting P space More...
 
bool m_end_iteration_needed = true
 whether end_iteration should be called after any preconditioner More...
 

Constructor & Destructor Documentation

◆ IterativeSolverTemplate() [1/4]

template<template< class, class, class > class Solver, class R , class Q , class P >
molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::IterativeSolverTemplate ( )
delete

◆ IterativeSolverTemplate() [2/4]

template<template< class, class, class > class Solver, class R , class Q , class P >
molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::IterativeSolverTemplate ( const IterativeSolverTemplate< Solver, R, Q, P > &  )
delete

◆ IterativeSolverTemplate() [3/4]

template<template< class, class, class > class Solver, class R , class Q , class P >
molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::IterativeSolverTemplate ( IterativeSolverTemplate< Solver, R, Q, P > &&  )
defaultnoexcept

◆ IterativeSolverTemplate() [4/4]

template<template< class, class, class > class Solver, class R , class Q , class P >
molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::IterativeSolverTemplate ( std::shared_ptr< subspace::IXSpace< R, Q, P > >  xspace,
std::shared_ptr< subspace::ISubspaceSolver< R, Q, P > >  solver,
std::shared_ptr< ArrayHandlers< R, Q, P > >  handlers,
std::shared_ptr< Statistics stats,
std::shared_ptr< Logger logger 
)
inlineprotected

◆ ~IterativeSolverTemplate()

template<template< class, class, class > class Solver, class R , class Q , class P >
virtual molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::~IterativeSolverTemplate ( )
inlineprotectedvirtual

Member Function Documentation

◆ add_p()

template<template< class, class, class > class Solver, class R , class Q , class P >
size_t molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::add_p ( const CVecRef< P > &  pparams,
const array::Span< value_type > &  pp_action_matrix,
const VecRef< R > &  parameters,
const VecRef< R > &  actions,
fapply_on_p_type  apply_p 
)
inlineoverride

◆ add_vector() [1/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::add_vector ( const VecRef< R > &  parameters,
const VecRef< R > &  actions 
)
inlineoverride

◆ add_vector() [2/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::add_vector ( R &  parameters,
R &  actions,
value_type  value = 0 
)
inlineoverride

◆ add_vector() [3/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::add_vector ( std::vector< R > &  parameters,
std::vector< R > &  actions 
)
inlineoverride

◆ check_consistent_number_of_roots_and_solutions()

template<template< class, class, class > class Solver, class R , class Q , class P >
template<typename TTT >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::check_consistent_number_of_roots_and_solutions ( const std::vector< TTT > &  roots,
const size_t  nparams 
)
inlineprotected

◆ clearP()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::clearP ( )
inlineoverride

◆ construct_residual()

template<template< class, class, class > class Solver, class R , class Q , class P >
virtual void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::construct_residual ( const std::vector< int > &  roots,
const CVecRef< R > &  params,
const VecRef< R > &  actions 
)
protectedpure virtual

◆ convergence_threshold()

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::convergence_threshold ( ) const
inlineoverride

◆ convergence_threshold_value()

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::convergence_threshold_value ( ) const
inlineoverride

◆ dimensions()

template<template< class, class, class > class Solver, class R , class Q , class P >
const subspace::Dimensions & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::dimensions ( ) const
inlineoverride

Access dimensions of the subspace.

◆ end_iteration_needed()

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::end_iteration_needed ( )
inlineoverrideprotected

◆ errors()

template<template< class, class, class > class Solver, class R , class Q , class P >
const std::vector< scalar_type > & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::errors ( ) const
inlineoverride

◆ get_max_iter()

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::get_max_iter ( ) const
inlineoverride

◆ get_max_p()

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::get_max_p ( ) const
inlineoverride

◆ get_options()

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr< Options > molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::get_options ( ) const
inlineoverride

◆ get_p_threshold()

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::get_p_threshold ( ) const
inlineoverride

◆ get_verbosity()

template<template< class, class, class > class Solver, class R , class Q , class P >
Verbosity molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::get_verbosity ( ) const
inlineoverride

◆ linearEigensystem()

template<template< class, class, class > class Solver, class R , class Q , class P >
virtual bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::linearEigensystem ( ) const
inlineprotectedvirtual

◆ n_roots()

template<template< class, class, class > class Solver, class R , class Q , class P >
size_t molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::n_roots ( ) const
inlineoverride

◆ operator=() [1/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
IterativeSolverTemplate< Solver, R, Q, P > & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::operator= ( const IterativeSolverTemplate< Solver, R, Q, P > &  )
delete

◆ operator=() [2/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
IterativeSolverTemplate< Solver, R, Q, P > & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::operator= ( IterativeSolverTemplate< Solver, R, Q, P > &&  )
defaultnoexcept

◆ profiler()

template<template< class, class, class > class Solver, class R , class Q , class P >
const std::shared_ptr< molpro::profiler::Profiler > & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::profiler ( ) const
inlineoverride

◆ report() [1/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::report ( ) const
inlineoverride

◆ report() [2/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::report ( std::ostream &  cout,
bool  endl = true 
) const
inlineoverride

◆ set_convergence_threshold()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_convergence_threshold ( double  thresh)
inlineoverride

◆ set_convergence_threshold_value()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_convergence_threshold_value ( double  thresh)
inlineoverride

◆ set_max_iter()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_max_iter ( int  n)
inlineoverride

◆ set_max_p()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_max_p ( int  n)
inlineoverride

◆ set_n_roots()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_n_roots ( size_t  roots)
inlineoverride

◆ set_options()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_options ( const Options options)
inlineoverride

◆ set_p_threshold()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_p_threshold ( double  threshold)
inlineoverride

◆ set_profiler()

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_profiler ( molpro::profiler::Profiler profiler)
inlineoverride

◆ set_value_errors()

template<template< class, class, class > class Solver, class R , class Q , class P >
virtual void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_value_errors ( )
inlineprotectedvirtual

Implementation class should overload this to set errors in the current values (e.g. change in eigenvalues)

Reimplemented in molpro::linalg::itsolv::LinearEigensystemDavidson< R, Q, P >, molpro::linalg::itsolv::OptimizeBFGS< R, Q, P >, and molpro::linalg::itsolv::OptimizeSD< R, Q, P >.

◆ set_verbosity() [1/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_verbosity ( int  v)
inlineoverride

◆ set_verbosity() [2/2]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::set_verbosity ( Verbosity  v)
inlineoverride

◆ solution() [1/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution ( const std::vector< int > &  roots,
const VecRef< R > &  parameters,
const VecRef< R > &  residual 
)
inlineoverride

◆ solution() [2/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution ( const std::vector< int > &  roots,
std::vector< R > &  parameters,
std::vector< R > &  residual 
)
inlineoverride

◆ solution() [3/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution ( R &  parameters,
R &  residual 
)
inlineoverride

◆ solution_params() [1/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution_params ( const std::vector< int > &  roots,
const VecRef< R > &  parameters 
)
inlineoverride

◆ solution_params() [2/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution_params ( const std::vector< int > &  roots,
std::vector< R > &  parameters 
)
inlineoverride

◆ solution_params() [3/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
void molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solution_params ( R &  parameters)
inlineoverride

◆ solve() [1/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solve ( const VecRef< R > &  parameters,
const VecRef< R > &  actions,
const Problem< R > &  problem,
bool  generate_initial_guess = false 
)
inlineoverride

◆ solve() [2/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solve ( R &  parameters,
R &  actions,
const Problem< R > &  problem,
bool  generate_initial_guess = false 
)
inlineoverride

◆ solve() [3/3]

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solve ( std::vector< R > &  parameters,
std::vector< R > &  actions,
const Problem< R > &  problem,
bool  generate_initial_guess = false 
)
inlineoverride

◆ solve_and_generate_working_set()

template<template< class, class, class > class Solver, class R , class Q , class P >
size_t molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::solve_and_generate_working_set ( const VecRef< R > &  parameters,
const VecRef< R > &  action 
)
inlineprotected

Solves the subspace problems and selects the working set of roots, returning their parameters and residual in parameters and action.

Parameters
parameterscontainer for storing parameters of the working set
actioncontainer for storing the residual of the working set
apply_pfunction that accumulates action from the P space projection of parameters
Returns
size of the working set

◆ statistics()

template<template< class, class, class > class Solver, class R , class Q , class P >
const Statistics & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::statistics ( ) const
inlineoverride

◆ suggest_p()

template<template< class, class, class > class Solver, class R , class Q , class P >
std::vector< size_t > molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::suggest_p ( const CVecRef< R > &  solution,
const CVecRef< R > &  residual,
size_t  max_number,
double  threshold 
)
inlineoverride

◆ test_problem()

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::test_problem ( const Problem< R > &  problem,
R &  v0,
R &  v1,
int  verbosity,
double  threshold 
) const
inlineoverride

◆ value()

template<template< class, class, class > class Solver, class R , class Q , class P >
scalar_type molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::value ( ) const
inlineoverride

◆ working_set()

template<template< class, class, class > class Solver, class R , class Q , class P >
const std::vector< int > & molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::working_set ( ) const
inlineoverride

Member Data Documentation

◆ m_apply_p

template<template< class, class, class > class Solver, class R , class Q , class P >
fapply_on_p_type molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_apply_p = {}
protected

function that evaluates effect of action on the P space projection

◆ m_convergence_threshold

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_convergence_threshold {1.0e-8}
protected

residual norms less than this mark a converged solution

◆ m_convergence_threshold_value

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_convergence_threshold_value
protected
Initial value:
{
std::numeric_limits<double>::max()}

value changes less than this mark a converged solution

◆ m_end_iteration_needed

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_end_iteration_needed = true
protected

whether end_iteration should be called after any preconditioner

◆ m_errors

template<template< class, class, class > class Solver, class R , class Q , class P >
std::vector<double> molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_errors
protected

errors from the most recent solution

◆ m_handlers

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr<ArrayHandlers<R, Q, P> > molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_handlers
protected

Array handlers.

◆ m_logger

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr<Logger> molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_logger
protected

logger

◆ m_max_iter

template<template< class, class, class > class Solver, class R , class Q , class P >
int molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_max_iter = 100
protected

maximum number of iterations in solve()

◆ m_max_p

template<template< class, class, class > class Solver, class R , class Q , class P >
size_t molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_max_p = 0
protected

maximum size of P space

◆ m_normalise_solution

template<template< class, class, class > class Solver, class R , class Q , class P >
bool molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_normalise_solution = false
protected

whether to normalise the solutions

◆ m_nroots

template<template< class, class, class > class Solver, class R , class Q , class P >
size_t molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_nroots {0}
protected

number of roots the solver is searching for

◆ m_p_threshold

template<template< class, class, class > class Solver, class R , class Q , class P >
double molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_p_threshold = std::numeric_limits<double>::max()
protected

threshold for selecting P space

◆ m_stats

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr<Statistics> molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_stats
protected

accumulates statistics of operations performed by the solver

◆ m_subspace_solver

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr<subspace::ISubspaceSolver<R, Q, P> > molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_subspace_solver
protected

solves the subspace problem

◆ m_value_errors

template<template< class, class, class > class Solver, class R , class Q , class P >
std::vector<double> molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_value_errors
protected

value errors from the most recent solution

◆ m_verbosity

template<template< class, class, class > class Solver, class R , class Q , class P >
Verbosity molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_verbosity = Verbosity::Iteration
protected

how much output to print in solve()

◆ m_working_set

template<template< class, class, class > class Solver, class R , class Q , class P >
std::vector<int> molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_working_set
protected

indices of roots in the working set

◆ m_xspace

template<template< class, class, class > class Solver, class R , class Q , class P >
std::shared_ptr<subspace::IXSpace<R, Q, P> > molpro::linalg::itsolv::IterativeSolverTemplate< Solver, R, Q, P >::m_xspace
protected

manages the subspace and associated data