The ClassicKrylov struct encapsulates the Lanczos algorithm. Template Parameters are:
More...
|
| | Classic ()=default |
| | the default constructor More...
|
| |
| template<typename Matrix_ , typename Vector_ , template< typename > class Solver_, template< typename > class GetMat_> |
| | Classic (Classic< Matrix_, Vector_, Solver_, GetMat_ > &&other) |
| | move constructor More...
|
| |
| template<typename Matrix_ , typename Vector_ , template< typename > class Solver_, template< typename > class GetMat_> |
| | Classic (Classic< Matrix_, Vector_, Solver_, GetMat_ > const &other) |
| | copy constructor More...
|
| |
| | Classic (Matrix mat_) |
| | constructor for non-assignable/-default-constructible Matrix types (like references) More...
|
| |
| template<typename... Pars> |
| IterativeExit | operator() (IterativeConfig const &conf, Pars &&...pars) |
| | operator() resume the lanczos algorithm More...
|
| |
| template<typename... Pars> |
| IterativeExit | operator() (Vector v, IterativeConfig const &conf, Pars &&...pars) |
| | operator() implements the Lanczos algorithm; discards all previous data More...
|
| |
| template<typename Matrix_ , typename Vector_ , template< typename > class Solver_, template< typename > class GetMat_> |
| Classic & | operator= (Classic< Matrix_, Vector_, Solver_, GetMat_ > &&rhs) |
| | move assignment. steals all data, but not solver and ortho More...
|
| |
| template<typename Matrix_ , typename Vector_ , template< typename > class Solver_, template< typename > class GetMat_> |
| Classic & | operator= (Classic< Matrix_, Vector_, Solver_, GetMat_ > const &rhs) |
| | copy assignment. copies all data, but not solver and ortho More...
|
| |
| template<typename... Pars> |
| void | solve (IterativeConfig &conf, IterativeExit &r, Pars &&...pars) |
| | Simplified interface to solve() More...
|
| |
template<typename Matrix, typename Vector, template< typename > class Solver, template< typename > class Ortho = NoOrthoMat>
struct syten::Krylov::ClassicImpl::Classic< Matrix, Vector, Solver, Ortho >
The ClassicKrylov struct encapsulates the Lanczos algorithm. Template Parameters are:
- Template Parameters
-
| Matrix,the | type of matrix we wish to solve. implicit interface:
- operator ()(Vector) -> Vector
|
| Vector,the | type Matrix operates on. implicit interface:
- usable with std containers (ie. default/copy/move constructible etc.)
- operator *(Vector, Vector) -> complex<double> (inner product)
- operator +=(Vector) -> Vector&
- operator *=(complex<double> -> Vector&
|
| Solver,a | template taking the type of Vector. implicit interface:
- operator ()(std::pair<DenseTensor<2, MatrixScalar>, Vectors> &&, SRDef, Pars...) -> SRDef, where Vectors is a functor which can compute the inner product of 'some kind of vector' with the Lanczos Vectors ie Vectors(Vector_) -> Vector
|
| Ortho,a | template taking ClassicKrylov<...> as parameter. implicit interface:
- operator () -> SRDef which orthonormalises vec to the previous krylov vectors (in krylov) and returns the norm of the new vector
- mat(ClassicKrylov<...>) -> std::pair<DenseTensor<2, MatrixScalar>, Vectors>, which is used as first parameter of Solver<...>::operator()
|