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()
|