Mundy: Multibody Nonlocal Dynamics Version of the Day
Loading...
Searching...
No Matches
mundy::LanczosStrategy< Config, Precond > Class Template Reference

The Lanczos strategy: initialize/iterate/done/result over (Problem, State), preconditioned by Precond. More...

#include <eigenvalues.hpp>

Public Types

using value_type = typename Config::value_type
using config_t = Config
using preconditioner_t = Precond
using result_t = LanczosResult<value_type>

Public Member Functions

 LanczosStrategy (config_t cfg={})
 LanczosStrategy (config_t cfg, Precond &&precond)
const auto & precond () const
template<class Problem, class State>
void initialize (const Problem &prob, State &state) const
template<class Problem, class State>
bool iterate (const Problem &prob, State &state) const
template<class State>
bool done (const State &state) const
template<class State>
result_t result (const State &state) const

Detailed Description

template<class Config, class Precond = NoPreconditioner>
class mundy::LanczosStrategy< Config, Precond >

For symmetric A (and SPD P), each iteration appends a row to T, whose extreme eigenvalues theta approach those of A (of P A) monotonically from inside. Each theta has the Ritz residual rho = ||A y - theta y|| of its Ritz vector y, within which an eigenvalue lies; by monotonicity, the least rho at an end so far still bounds it. The solve converges once that bound is at most tol |theta| at both ends.

Member Typedef Documentation

◆ value_type

template<class Config, class Precond = NoPreconditioner>
using mundy::LanczosStrategy< Config, Precond >::value_type = typename Config::value_type

◆ config_t

template<class Config, class Precond = NoPreconditioner>
using mundy::LanczosStrategy< Config, Precond >::config_t = Config

◆ preconditioner_t

template<class Config, class Precond = NoPreconditioner>
using mundy::LanczosStrategy< Config, Precond >::preconditioner_t = Precond

◆ result_t

template<class Config, class Precond = NoPreconditioner>
using mundy::LanczosStrategy< Config, Precond >::result_t = LanczosResult<value_type>

Constructor & Destructor Documentation

◆ LanczosStrategy() [1/2]

template<class Config, class Precond = NoPreconditioner>
mundy::LanczosStrategy< Config, Precond >::LanczosStrategy ( config_t cfg = {})
inlineexplicit

◆ LanczosStrategy() [2/2]

template<class Config, class Precond = NoPreconditioner>
mundy::LanczosStrategy< Config, Precond >::LanczosStrategy ( config_t cfg,
Precond && precond )
inline

Member Function Documentation

◆ precond()

template<class Config, class Precond = NoPreconditioner>
const auto & mundy::LanczosStrategy< Config, Precond >::precond ( ) const
inline

◆ initialize()

template<class Config, class Precond = NoPreconditioner>
template<class Problem, class State>
void mundy::LanczosStrategy< Config, Precond >::initialize ( const Problem & prob,
State & state ) const
inline

◆ iterate()

template<class Config, class Precond = NoPreconditioner>
template<class Problem, class State>
bool mundy::LanczosStrategy< Config, Precond >::iterate ( const Problem & prob,
State & state ) const
inline

◆ done()

template<class Config, class Precond = NoPreconditioner>
template<class State>
bool mundy::LanczosStrategy< Config, Precond >::done ( const State & state) const
inline

◆ result()

template<class Config, class Precond = NoPreconditioner>
template<class State>
result_t mundy::LanczosStrategy< Config, Precond >::result ( const State & state) const
inline