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.