Krylov subspace methods. More...
Namespaces | |
| namespace | ClassicImpl |
| Contains the classic Krylov implementation and helper functions. | |
| namespace | Evolution |
| Implementation of time evolution with recycling etc. using Krylov subspaces. | |
| namespace | OrthoPolicies |
| Orthonormalisation policies used by StandardKrylov and TensorNetworksKrylov. | |
| namespace | SolverPolicies |
| Solver policies to be used by StandardKrylov and TensorNetworksKrylov. | |
| namespace | TensorNetworksImpl |
| Implementation helpers for Krylov::TensorNetworks class. | |
Classes | |
| struct | KrylovEvolver |
| Helper class to model a Krylov time evolution. More... | |
| class | NaiveExponential |
| The plain exponential via application of the operator to the vector. More... | |
| class | OperatorWrapper |
| The OperatorWrapper class wraps a MPS/BTT operator, providing an interface complying to the exponentialLanczos template. More... | |
| class | Standard |
| The "Standard" Krylov method using the same solver and orthonormalisation policies as TensorNetworksKrylov but with the original Lanczos order. More... | |
| class | StateWrapper |
| The StateWrapper class wraps a MPS/BTT-state to provide an interface complying to exponentialLanczos template. More... | |
| class | TensorNetworks |
| Krylov implementation optimised for tensor network applications where calculating \( x^T \cdot A \cdot y \) does not require a matrix-vector application. More... | |
Functions | |
| template<typename Vector , typename Matrix , typename... Pars> | |
| IterativeExit | eigenLanczos (Vector &&vec, Matrix const &mat, IterativeConfig const &conf, Vector &evec) |
| eigenLanczos shorthand for a Lanczos eigen-solver More... | |
| template<typename Vector , typename Matrix , typename Scalar > | |
| IterativeExit | expLanczos (Vector &&vec, Matrix const &mat, IterativeConfig const &conf, Scalar prefactor, Vector &result) |
| expLanczos shorthand for an exponential Lanczos solver, calculates \(\exp(c H) v\) More... | |
| template<typename Op > | |
| auto | make_OperatorWrapper (Op &&o) |
| make_OperatorWrapper simplifies OperatorWrapper construction by template type deduction More... | |
| template<typename StateT , typename TruncT > | |
| auto | make_StateWrapper (StateT &&state, TruncT &&trunc) |
| make_StateWrapper simplifies StateWrapper construction by template type deduction More... | |
| template<typename SType , typename TType > | |
| SRDef | norm (StateWrapper< SType, TType > const &s) |
| norm non-member norm function More... | |
| template<typename SType , typename TType > | |
| StateWrapper< SType, TType > | operator* (SDef prefactor, StateWrapper< SType, TType > const &s) |
| operator * Multiplication of scalar w/ statewrapper. invokes StateWrapper::operator * More... | |
| template<typename SType , typename TType , typename It > | |
| void | orthogonalise_arithmetic (StateWrapper< SType, TType > &s, It first, It last, bool assume_norm_one=false) |
| template<typename SType , typename TType , typename It > | |
| void | orthogonalise_variational (StateWrapper< SType, TType > &s, It first, It last) |
| template<typename SType , typename TType , typename It > | |
| void | orthogonalise_variational_two_site (StateWrapper< SType, TType > &s, It first, It last) |
| template<typename SType , typename TType > | |
| SDef | overlap (StateWrapper< SType, TType > const &a, StateWrapper< SType, TType > const &b) |
| Overlap of two StateWrappers, first argument is complex-conjugated. More... | |
Krylov subspace methods.
classic_krylov.h, standard_krylov.h and tn_krylov.h provide Lanczos/Krylov implementations. classic_krylov.h is the currently oldest version and hopefully will be removed soon. standard_krylov.h and tn_krylov.h both provide nearly the same overall interface and crucially can make use of the same solver and orthonormalisation policies. standard_krylov.h only makes use of generic matrix-vector operations and assumes that \( \hat O
|\psi\rangle \) is required to calculate \( \langle \psi |
\hat O | \psi \rangle \) (true for generic matrix-vector algebra, e.g. tensors in DMRG). tn_krylov.h assumes that there is a cheaper way to calculate this product (true for MPS-MPO algebra, e.g. the Krylov time evolution method).solver_policies.h provides two solver policies which are used by standard_krylov.h and tn_krylov.h to turn the generated Krylov subspace into a useful result, i.e. either \( e^{\hat H t}
|\psi\rangle \) or the eigenvalue-eigenvector pair for \( \hat H
\).orthogonalise_policies.h in namespace syten::Krylov::OrthoPolicies are used by standard_krylov.h and tn_krylov.h to re-orthogonalise the generated subspaces. Not all policies are used by standard_krylov.h, as e.g. two-site variational orthonormalisation makes little sense for a DMRG tensor.common_krylov.h provides two simple-to-use entry points which can use either standard_krylov.h or classic_krylov.h.krylov_evolve.h provides the large-scale framework for Krylov time evolution including the recycling of subspaces in the namespace syten::Krylov::Evolution.