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

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

Stochastic Metapopulation Model. More...

#include <model.h>

Inheritance diagram for mio::smm::Model< FP, Comp, Status, Region >:
Collaboration diagram for mio::smm::Model< FP, Comp, Status, Region >:

Public Member Functions

FP evaluate (const AdoptionRate< FP, Status, Region > &rate, const Eigen::VectorX< FP > &x) const
 Calculate the current rate of the given adoption. More...
 
FP evaluate (const TransitionRate< FP, Status, Region > &rate, const Eigen::VectorX< FP > &x) const
 Calculate the current rate of the given spatial transition. More...
 
mio::RandomNumberGenerator & get_rng ()
 Get the RandomNumberGenerator used by this Model for random events. More...
 
 Model (Status status_dimensions, Region region_dimensions)
 
- Public Member Functions inherited from mio::CompartmentalModel< FP, Comp, mio::Populations< FP, PopulationIndex< Comp, mio::regions::Region > >, ParametersBase< FP, Comp, mio::regions::Region > >
bool apply_constraints ()
 Checks whether the model satisfies all constraints. More...
 
bool check_constraints () const
 Checks that the model satisfies all constraints (e.g. More...
 
 CompartmentalModel (CompartmentalModel &&)=default
 
 CompartmentalModel (const CompartmentalModel &)=default
 
 CompartmentalModel (Populations const &po, ParameterSet const &pa)
 CompartmentalModel default constructor. More...
 
void eval_right_hand_side (Eigen::Ref< const Eigen::VectorX< FP >> pop, Eigen::Ref< const Eigen::VectorX< FP >> y, FP t, Eigen::Ref< Eigen::VectorX< FP >> dydt) const
 This function evaluates the right-hand-side f of the ODE dydt = f(y, t). More...
 
virtual void get_derivatives (Eigen::Ref< const Eigen::VectorX< FP >>, Eigen::Ref< const Eigen::VectorX< FP >>, FP, Eigen::Ref< Eigen::VectorX< FP >>) const
 
Eigen::VectorX< FP > get_initial_values () const
 Get the initial conditions for the ODE dydt = f(y, t). More...
 
CompartmentalModeloperator= (CompartmentalModel &&)=default
 
CompartmentalModeloperator= (const CompartmentalModel &)=default
 
virtual ~CompartmentalModel ()=default
 

Private Types

using Base = mio::CompartmentalModel< FP, Comp, mio::Populations< FP, PopulationIndex< Status, Region > >, ParametersBase< FP, Status, Region > >
 

Private Attributes

mio::RandomNumberGenerator m_rng
 Model's random number generator. More...
 

Additional Inherited Members

- Public Types inherited from mio::CompartmentalModel< FP, Comp, mio::Populations< FP, PopulationIndex< Comp, mio::regions::Region > >, ParametersBase< FP, Comp, mio::regions::Region > >
using Compartments = Comp
 
using ParameterSet = ParametersBase< FP, Comp, mio::regions::Region >
 
using Populations = mio::Populations< FP, PopulationIndex< Comp, mio::regions::Region > >
 
- Public Attributes inherited from mio::CompartmentalModel< FP, Comp, mio::Populations< FP, PopulationIndex< Comp, mio::regions::Region > >, ParametersBase< FP, Comp, mio::regions::Region > >
ParameterSet parameters
 
Populations populations
 

Detailed Description

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

Stochastic Metapopulation Model.

The stratification of the population of this model is split between "Status" and "Region". This split is mostly arbitrary, with the important distinction, that for second order rates the reference population (i.e., the N in S' = S * I / N) is calculated by accumulating subpopulations only over the Status, i.e. individuals only interact with other individuals within the same Region. Hence, the assumption of homogeneous mixing of the population only holds across Status groups within one Region. Across Regions, no direct interaction is possible (only indirectly, by first transitioning into another Region)

Template Parameters
CompAn enum representing the infection states. Must also be contained in Status
StatusA MultiIndex allowing to further stratify infection state adoptions.
RegionA MultiIndex for "spatially" distinct subpopulations, default is mio::regions::Region.

Member Typedef Documentation

◆ Base

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
using mio::smm::Model< FP, Comp, Status, Region >::Base = mio::CompartmentalModel<FP, Comp, mio::Populations<FP, PopulationIndex<Status, Region> >, ParametersBase<FP, Status, Region> >
private

Constructor & Destructor Documentation

◆ Model()

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
mio::smm::Model< FP, Comp, Status, Region >::Model ( Status  status_dimensions,
Region  region_dimensions 
)
inline

Member Function Documentation

◆ evaluate() [1/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
FP mio::smm::Model< FP, Comp, Status, Region >::evaluate ( const AdoptionRate< FP, Status, Region > &  rate,
const Eigen::VectorX< FP > &  x 
) const
inline

Calculate the current rate of the given adoption.

Parameters
[in]rateAn adoption rate from this model.
[in]xThe current state of the model.
Returns
Current value of the adoption rate.

◆ evaluate() [2/2]

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
FP mio::smm::Model< FP, Comp, Status, Region >::evaluate ( const TransitionRate< FP, Status, Region > &  rate,
const Eigen::VectorX< FP > &  x 
) const
inline

Calculate the current rate of the given spatial transition.

Parameters
[in]rateA transition rate from this model.
[in]xThe current state of the model.
Returns
Current value of the transition rate.

◆ get_rng()

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

Get the RandomNumberGenerator used by this Model for random events.

Returns
The random number generator.

Member Data Documentation

◆ m_rng

template<typename FP , class Comp , class Status = Comp, class Region = mio::regions::Region>
mio::RandomNumberGenerator mio::smm::Model< FP, Comp, Status, Region >::m_rng
private

Model's random number generator.