SyTen
krylov_evolve.h File Reference

Time evolution of a state/operator pair over more than one time step using any of the Krylov methods. More...

+ Include dependency graph for krylov_evolve.h:
+ This graph shows which files directly or indirectly include this file:

Classes

class  syten::Krylov::Evolution::AlwaysHeuristic< Solver >
 Heuristic which always recycles. More...
 
class  syten::Krylov::Evolution::ConcaveHeuristic< Solver >
 Concavity assumption: Number of vectors needed for the next step is at most as large as the number of vectors needed for the previous step. More...
 
struct  syten::Krylov::Evolution::Conf
 The Conf struct stores info on how to evolve the state. More...
 
struct  syten::Krylov::Evolution::GreedyHeuristic< Solver, Clock >::Element
 Element of the computational history. More...
 
struct  syten::Krylov::Evolution::Evolver< Solver >
 Base class from which different heuristics inherit. More...
 
class  syten::Krylov::Evolution::ExtrapolatingHeuristic< Solver >
 The ExtrapolatingHeuristic class tries to extrapolate the number of timesteps that can be taken with one more Krylov vector and the runtime for adding this vector, and compares both to building a new Krylov space from scratch. More...
 
class  syten::Krylov::Evolution::GreedyHeuristic< Solver, Clock >
 Heuristic which takes into account the time to build a new Krylov vector compared to the time to build an entire new subspace. More...
 
class  syten::Krylov::Evolution::NearlyAlwaysRecycleHeuristic< Solver >
 Recycles unless we reached the maximal Krylov subspace. More...
 

Namespaces

namespace  syten
 Syten namespace.
 
namespace  syten::Krylov
 Krylov subspace methods.
 
namespace  syten::Krylov::Evolution
 Implementation of time evolution with recycling etc. using Krylov subspaces.
 

Functions

bool syten::Krylov::Evolution::exploitable (IterativeExitReason r)
 Returns true if the reason r allows for a potential recycling of the space. More...
 
template<typename Matrix , typename Vec , typename Ortho , class SolverPolicy >
auto syten::Krylov::Evolution::fwd_continue_evolution (Standard< Matrix, Vec, Ortho, SolverPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the Standard solver: use already existing Krylov space to do one time step More...
 
template<typename Matrix , typename Vec , class Ortho , typename Expectation , class SolverPolicy , class ApplicationPolicy >
auto syten::Krylov::Evolution::fwd_continue_evolution (TensorNetworks< Matrix, Vec, Ortho, Expectation, SolverPolicy, ApplicationPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the TensorNetworks solver: use already existing Krylov space to do one time step More...
 
template<typename Matrix , typename Vec , typename Ortho , class SolverPolicy >
auto syten::Krylov::Evolution::fwd_evolve (Standard< Matrix, Vec, Ortho, SolverPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the Standard solver: Builds up a new Krylov space and evolve one time step More...
 
template<typename Matrix , typename Vec , class Ortho , class Expectation , class SolverPolicy , class ApplicationPolicy >
auto syten::Krylov::Evolution::fwd_evolve (TensorNetworks< Matrix, Vec, Ortho, Expectation, SolverPolicy, ApplicationPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the TensorNetworks solver: Builds up a new Krylov space and evolve one time step More...
 
template<typename Matrix , typename Vec , typename Ortho , class SolverPolicy >
std::tuple< IterativeExit, std::vector< Vec >, DenseTensor< 2, SDef > > syten::Krylov::Evolution::fwd_evolve_kss (Standard< Matrix, Vec, Ortho, SolverPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the Standard solver: Builds up a new Krylov space and evolve one time step More...
 
template<typename Matrix , typename Vec , class Ortho , class Expectation , class SolverPolicy , class ApplicationPolicy >
std::tuple< IterativeExit, std::vector< Vec >, DenseTensor< 2, SDef > > syten::Krylov::Evolution::fwd_evolve_kss (TensorNetworks< Matrix, Vec, Ortho, Expectation, SolverPolicy, ApplicationPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt)
 template-matched forwarder to the TensorNetworks solver: Builds up a new Krylov space and evolve one time step More...
 
template<typename Matrix , typename Vec , typename Ortho , class SolverPolicy >
auto syten::Krylov::Evolution::fwd_solve (Standard< Matrix, Vec, Ortho, SolverPolicy > &k, Vec &s, IterativeConfig &conf, SDef dt, IterativeExit &)
 template-matched forwarder to the Standard solver: solve the problem once. More...
 
template<typename Matrix , typename Vec , class Ortho , typename Expectation , class SolverPolicy , class ApplicationPolicy >
auto syten::Krylov::Evolution::fwd_solve (TensorNetworks< Matrix, Vec, Ortho, Expectation, SolverPolicy, ApplicationPolicy > &k, Vec &s, IterativeConfig &, SDef dt, IterativeExit &)
 template-matched forwarder to the Tensor networks solver: solve the problem once. More...
 
template<typename Solver >
std::unique_ptr< Evolver< Solver > > syten::Krylov::Evolution::make_evolver (Conf &conf)
 Creates a heuristic object based on the configuration supplied. More...
 
template<typename SolverPolicy , typename Op , typename SType , typename... Params>
void syten::Krylov::Evolution::run_evolution (Op &&op, SType &state, Conf conf, Params &&... params)
 evolve krylov evolution of state wrt operator op. More...
 

Detailed Description

Time evolution of a state/operator pair over more than one time step using any of the Krylov methods.

The driver for a time evolution using Krylov subspace methods can be fairly generic and is implemented here. Internally, it repeatedly calculates the time-evolution exponential using any of the algorithms implemented in classic_krylov.h or tn_krylov.h.