Base class from which different heuristics inherit. More...
#include <krylov_evolve.h>
Public Member Functions | |
template<typename... WrapUpParams> | |
void | do_step (Solver &k, typename Solver::Vector_type &s, Conf &conf, std::string const &suffix, WrapUpParams &&... params) |
Does one step if the subspace can be recycled does not discard it(hopefully) More... | |
template<typename... WrapUpParams> | |
void | evolve (Solver k, typename Solver::Vector_type &s, Conf &conf, std::string const &suffix, WrapUpParams &&... params) |
Builds one Krylov space and evolves within that space as far as possible, recycling it if necessary. More... | |
virtual void | init_evolve (Conf &) |
Hook to initialise the evolution process for subclasses. More... | |
template<typename... WrapUpParams> | |
void | loop_evolve (typename Solver::Matrix_type o, typename Solver::Vector_type &v, Conf &conf, std::string const &suffix, WrapUpParams &&... params) |
Constructs the solver and evolves until the target time is reached. More... | |
virtual IterativeExit | virt_continue_evolution (Solver &k, typename Solver::Vector_type &s, Conf &conf, SDef dt) |
Hook for the continued actual evolution, calling out to the external functions by default. More... | |
virtual IterativeExit | virt_evolve (Solver &k, typename Solver::Vector_type &s, Conf &conf, SDef dt) |
Hook for the actual evolution, calling out to the external functions by default. More... | |
virtual | ~Evolver () |
Virtual dtor to allow proper destruction. More... | |
Public Attributes | |
Index | count {} |
number of steps taken More... | |
DenseTensor< 2, SDef > | current_Heff |
Current krylov vectors. More... | |
Vec< typename Solver::Vector_type > | current_krylov_vectors |
Current krylov vectors. More... | |
Private Member Functions | |
virtual bool | do_recycle (Conf const &) const |
Return true if you wish to recycle here. More... | |
bool | finalizeStep (typename Solver::Vector_type &s, Conf &conf, std::string const &filename) const |
Normalise and save if necessary, returning true if normalised. More... | |
void | trim_dt (Conf &conf) const |
If the difference between the current and target time is less than dt, dt is changed to that difference or zero if that difference is smaller than 0.001 times the current dt. More... | |
template<typename... WrapUpParams> | |
void | wrapupstep (Solver &k, typename Solver::Vector_type &s, Conf &conf, IterativeExit const &r, std::string const &suffix, bool exploitedSpace, SDef toffset, WrapUpParams &&... params) |
Complete the current step and output data. More... | |
Base class from which different heuristics inherit.
Different heuristics then primarily override do_recycle()
and, if necessary, evolve()
and continue_evolution()
to include additional steps.