21#ifndef VOTCA_XTP_KMCWAITINGTIME_H
22#define VOTCA_XTP_KMCWAITINGTIME_H
72 virtual std::string
Name()
const = 0;
84 std::string
Name()
const override {
return "exponential"; }
104 std::string
Name()
const override {
return "thinning"; }
158 std::string
Name()
const override {
return "integrated-rate inversion"; }
170 const std::string& name);
Time-homogeneous KMC: waiting time Exp(escape rate), destination with probability w_e / escape rate....
Index ChooseHop(Index site, double t, KMCRandom &random) const override
std::string Name() const override
std::vector< double > escape_
std::vector< double > cumulative_
double NextTime(Index site, double t, KMCRandom &random) const override
void Prepare(const TimeDependentRates &rates) override
const TimeDependentRates * rates_
double NextTime(Index site, double t, KMCRandom &random) const override
IntegratedRateInversion(const Settings &settings)
Index ChooseHop(Index site, double t, KMCRandom &random) const override
std::string Name() const override
void Prepare(const TimeDependentRates &rates) override
Random numbers for kinetic Monte Carlo: one independent stream per (seed, stream) pair....
Thinning (Lewis-Shedler) for any rates with time-independent upper bounds B_e >= w_e(t): candidate ev...
std::vector< double > bound_escape_
std::string Name() const override
const TimeDependentRates * rates_
std::vector< double > cumulative_
double NextTime(Index site, double t, KMCRandom &random) const override
Index ChooseHop(Index site, double t, KMCRandom &random) const override
void Prepare(const TimeDependentRates &rates) override
Hop rates of the edges of a ToFGraph as functions of time.
Hopping graph for time-of-flight (ToF) transport.
How a carrier's next hop is drawn: the waiting time and the destination. The pluggable part of the KM...
virtual double NextTime(Index site, double t, KMCRandom &random) const =0
virtual Index ChooseHop(Index site, double t, KMCRandom &random) const =0
virtual std::string Name() const =0
virtual ~WaitingTimeStrategy()=default
virtual void Prepare(const TimeDependentRates &rates)=0
std::unique_ptr< WaitingTimeStrategy > MakeWaitingTimeStrategy(const std::string &name)
strategy by name: exponential, thinning, inversion
Provides a means for comparing floating point numbers.
Index interpolation_points