Simulation< FP, Comp, Status, Region > Class Template Reference

CPP API: mio::smm::Simulation< FP, Comp, Status, Region > Class Template Reference
mio::smm::Simulation< FP, Comp, Status, Region > Class Template Reference

A specialized Simulation for mio::smm::Model. More...

#include <simulation.h>

Public Types

using Model = smm::Model< FP, Comp, Status, Region >
 

Public Member Functions

Eigen::Ref< Eigen::VectorX< FP > > advance (FP tmax)
 Advance simulation to tmax. More...
 
Modelget_model ()
 
const Modelget_model () const
 Returns the model used in the simulation. More...
 
TimeSeries< FP > & get_result ()
 Returns the final simulation result. More...
 
const TimeSeries< FP > & get_result () const
 
 Simulation (Model const &model, FP t0=0., FP dt=1.)
 Set up the simulation for a Stochastic Metapopulation Model. More...
 

Private Member Functions

constexpr const smm::AdoptionRates< FP, Status, Region >::Type & adoption_rates ()
 Returns the model's adoption rates. More...
 
size_t determine_next_event ()
 Get next event i.e. More...
 
constexpr const smm::TransitionRates< FP, Status, Region >::Type & transition_rates ()
 Returns the model's transition rates. More...
 
void update_current_rates_and_waiting_times ()
 Calculate current values for m_current_rates and m_waiting_times. More...
 

Private Attributes

std::vector< FP > m_current_rates
 Current values of both types of rates i.e. adoption and transition rates. More...
 
FP m_dt
 Initial step size. More...
 
std::vector< FP > m_internal_time
 Internal times of all poisson processes (aka T_k). More...
 
std::unique_ptr< Modelm_model
 Pointer to the model used in the simulation. More...
 
mio::TimeSeries< FP > m_result
 Result time series. More...
 
std::vector< FP > m_tp_next_event
 Internal time points of next event i after m_internal[i] (aka P_k). More...
 
std::vector< FP > m_waiting_times
 External times between m_internal_time and m_tp_next_event. More...
 

Detailed Description

template<typename FP, class Comp, class Status = Comp, class Region = mio::regions::Region>
class mio::smm::Simulation< FP, Comp, Status, Region >

A specialized Simulation for mio::smm::Model.

Template Parameters
regionsThe number of regions.
StatusAn infection state enum.

Member Typedef Documentation

◆ Model

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
using mio::smm::Simulation< FP, Comp, Status, Region >::Model = smm::Model<FP, Comp, Status, Region>

Constructor & Destructor Documentation

◆ Simulation()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
mio::smm::Simulation< FP, Comp, Status, Region >::Simulation ( Model const &  model,
FP  t0 = 0.,
FP  dt = 1. 
)
inline

Set up the simulation for a Stochastic Metapopulation Model.

Parameters
[in]modelAn instance of mio::smm::Model.
[in]t0Start time.
[in]dtInitial Step size.

Member Function Documentation

◆ adoption_rates()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
constexpr const smm::AdoptionRates<FP, Status, Region>::Type& mio::smm::Simulation< FP, Comp, Status, Region >::adoption_rates ( )
inlineconstexprprivate

Returns the model's adoption rates.

◆ advance()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
Eigen::Ref<Eigen::VectorX<FP> > mio::smm::Simulation< FP, Comp, Status, Region >::advance ( FP  tmax)
inline

Advance simulation to tmax.

This function performs a Gillespie algorithm.

Parameters
tmaxNext stopping point of simulation.

◆ determine_next_event()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
size_t mio::smm::Simulation< FP, Comp, Status, Region >::determine_next_event ( )
inlineprivate

Get next event i.e.

event with the smallest waiting time.

◆ get_model() [1/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
Model& mio::smm::Simulation< FP, Comp, Status, Region >::get_model ( )
inline

◆ get_model() [2/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
const Model& mio::smm::Simulation< FP, Comp, Status, Region >::get_model ( ) const
inline

Returns the model used in the simulation.

◆ get_result() [1/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
TimeSeries<FP>& mio::smm::Simulation< FP, Comp, Status, Region >::get_result ( )
inline

Returns the final simulation result.

Returns
A TimeSeries to represent the final simulation result.

◆ get_result() [2/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
const TimeSeries<FP>& mio::smm::Simulation< FP, Comp, Status, Region >::get_result ( ) const
inline

◆ transition_rates()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
constexpr const smm::TransitionRates<FP, Status, Region>::Type& mio::smm::Simulation< FP, Comp, Status, Region >::transition_rates ( )
inlineconstexprprivate

Returns the model's transition rates.

◆ update_current_rates_and_waiting_times()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
void mio::smm::Simulation< FP, Comp, Status, Region >::update_current_rates_and_waiting_times ( )
inlineprivate

Calculate current values for m_current_rates and m_waiting_times.

Member Data Documentation

◆ m_current_rates

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
std::vector<FP> mio::smm::Simulation< FP, Comp, Status, Region >::m_current_rates
private

Current values of both types of rates i.e. adoption and transition rates.

◆ m_dt

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
FP mio::smm::Simulation< FP, Comp, Status, Region >::m_dt
private

Initial step size.

◆ m_internal_time

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
std::vector<FP> mio::smm::Simulation< FP, Comp, Status, Region >::m_internal_time
private

Internal times of all poisson processes (aka T_k).

◆ m_model

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
std::unique_ptr<Model> mio::smm::Simulation< FP, Comp, Status, Region >::m_model
private

Pointer to the model used in the simulation.

◆ m_result

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
mio::TimeSeries<FP> mio::smm::Simulation< FP, Comp, Status, Region >::m_result
private

Result time series.

◆ m_tp_next_event

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
std::vector<FP> mio::smm::Simulation< FP, Comp, Status, Region >::m_tp_next_event
private

Internal time points of next event i after m_internal[i] (aka P_k).

◆ m_waiting_times

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
std::vector<FP> mio::smm::Simulation< FP, Comp, Status, Region >::m_waiting_times
private

External times between m_internal_time and m_tp_next_event.