Time evolution of a state/operator pair over more than one time step using any of the Krylov methods. More...
#include "inc/alg/classic_krylov.h"
#include "inc/alg/tn_krylov.h"
#include "inc/alg/standard_krylov.h"
#include "inc/alg/state_wrappers.h"
#include "inc/util/types.h"
#include "inc/alg/orthogonalise_policies.h"
#include "inc/alg/solver_policies.h"
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... | |
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.