23#include <CD_NamespaceHeader.H>
47template <
typename R,
typename State,
typename T =
long long>
415#include <CD_NamespaceFooter.H>
Implementation of CD_KMCSolver.H.
KMCLeapPropagator
Supported propagators for hybrid tau leaping.
Definition CD_KMCSolver.H:29
Class for running Kinetic Monte-Carlo simulations.
Definition CD_KMCSolver.H:49
KMCSolver(const KMCSolver &)=default
Disallowed copy constructor.
Real m_eps
Maximum permitted change in propensities for non-critical reactions.
Definition CD_KMCSolver.H:407
void setSolverParameters(const T a_numCrit, const T a_numSSA, const Real a_eps, const Real a_SSAlim) noexcept
Set solver parameters.
Definition CD_KMCSolverImplem.H:59
virtual ~KMCSolver() noexcept
Destructor.
Definition CD_KMCSolverImplem.H:40
void advanceTauMidpoint(State &a_state, const Real a_dt) const noexcept
Perform one leaping step using the midpoint method all reactions over a time step a_dt.
Definition CD_KMCSolverImplem.H:445
void define(const ReactionList &a_reactions) noexcept
Define function. Sets the reactions.
Definition CD_KMCSolverImplem.H:47
KMCSolver() noexcept
Default constructor – must subsequently define the object.
Definition CD_KMCSolverImplem.H:28
KMCSolver(const KMCSolver &&)=delete
Disallowed move constructor.
ReactionList m_reactions
List of reactions used when advancing states.
Definition CD_KMCSolver.H:391
Real getCriticalTimeStep(const State &a_state) const noexcept
Get the time to the next critical reaction.
Definition CD_KMCSolverImplem.H:160
void stepTauMidpoint(State &a_state, const Real a_dt) const noexcept
Perform one leaping step using the midpoint method for ALL reactions over a time step a_dt.
Definition CD_KMCSolverImplem.H:408
void stepTauPlain(State &a_state, const Real a_dt) const noexcept
Perform one plain tau-leaping step using ALL reactions.
Definition CD_KMCSolverImplem.H:315
T m_numSSA
Maximum number of SSA steps to run when switching into SSA-based advancement for non-critical reactio...
Definition CD_KMCSolver.H:402
T m_Ncrit
Definition of critical reactions.
Definition CD_KMCSolver.H:397
void advanceSSA(State &a_state, const Real a_dt) const noexcept
Advance with the SSA over the input time. This can end up using substepping.
Definition CD_KMCSolverImplem.H:562
std::pair< ReactionList, ReactionList > partitionReactions(const State &a_state) const noexcept
Partition reactions into critical and non-critical reactions.
Definition CD_KMCSolverImplem.H:126
void advanceTauPlain(State &a_state, const Real a_dt) const noexcept
Advance with plain tau-leaping step over the input time. This can end up using substepping.
Definition CD_KMCSolverImplem.H:358
void stepSSA(State &a_state) const noexcept
Perform a single SSA step.
Definition CD_KMCSolverImplem.H:497
Real getNonCriticalTimeStep(const State &a_state) const noexcept
Get the non-critical time step.
Definition CD_KMCSolverImplem.H:216
void advanceHybrid(State &a_state, const Real a_dt, const KMCLeapPropagator &a_leapPropagator=KMCLeapPropagator::TauPlain) const noexcept
Advance using Cao et. al. hybrid algorithm over the input time. This can end up using substepping.
Definition CD_KMCSolverImplem.H:601
Real totalPropensity(const State &a_state) const noexcept
Compute the total propensity for ALL reactions.
Definition CD_KMCSolverImplem.H:100
Real m_SSAlim
Threshold for switching to SSA-based algorithm within the Cao algorithm.
Definition CD_KMCSolver.H:412
std::vector< Real > propensities(const State &a_state) const noexcept
Compute propensities for ALL reactions.
Definition CD_KMCSolverImplem.H:74
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25