model.h Source File
|
CPP API
|
ode_seirv/model.h
Go to the documentation of this file.
56 : public FlowModel<FP, InfectionState, mio::Populations<FP, AgeGroup, InfectionState>, Parameters<FP>, Flows>
58 using Base = FlowModel<FP, InfectionState, mio::Populations<FP, AgeGroup, InfectionState>, Parameters<FP>, Flows>;
69 : Base(PopulationsType({AgeGroup(num_agegroups), InfectionState::Count}), ParameterSet(AgeGroup(num_agegroups)))
73 void get_flows(Eigen::Ref<const Eigen::VectorX<FP>> pop, Eigen::Ref<const Eigen::VectorX<FP>> y, FP t,
81 params.template get<ContactPatternsHealthy<FP>>().get_cont_freq_mat().get_matrix_at(SimulationTime<FP>(t));
83 params.template get<ContactPatternsSick<FP>>().get_cont_freq_mat().get_matrix_at(SimulationTime<FP>(t));
95 // NG = Sigma * effective_contacts is the (unnormalized) next-generation matrix. Its spectral radius will be used
96 // below to scale contacts effective_contacts so that structure (mixing pattern) and transmissibility magnitude (BaselineTransmissibility)
108 params.template get<BaselineTransmissibility<FP>>(); // baseline transmissibility scaling (R-like factor)
109 const FP infection_rate = FP(1) / params.template get<TimeExposed<FP>>(); // 1 / mean latent duration
110 const FP recovery_rate = FP(1) / params.template get<TimeInfected<FP>>(); // 1 / mean infectious duration
111 const FP season_amplitude = params.template get<SeasonalityAmplitude<FP>>(); // amplitude of seasonal modulation
115 params.template get<SeasonalityShiftPerSeason<FP>>(); // additional phase shift (e.g. season-specific)
116 const FP outside_foi = params.template get<OutsideFoI<FP>>(); // constant external force of infection
118 FP>>(); // clustering exponent; clustering_exp<1 dampens, clustering_exp>1 amplifies prevalence effect
127 const size_t SVi = this->populations.get_flat_index({i, InfectionState::SusceptibleVaccinated});
136 const size_t SVj = this->populations.get_flat_index({j, InfectionState::SusceptibleVaccinated});
144 const FP Nj = pop[Sj] + pop[SVj] + pop[Ej] + pop[EVj] + pop[Ij] + pop[IVj] + pop[Rj] + pop[RVj];
146 const FP transmission_rate = (clustering_exp == FP(1)) ? inf_frac : std::pow(inf_frac, clustering_exp);
152 flows[Base::template get_flat_flow_index<InfectionState::Susceptible, InfectionState::Exposed>(i)] =
157 flows[Base::template get_flat_flow_index<InfectionState::Exposed, InfectionState::Infected>(i)] =
162 flows[Base::template get_flat_flow_index<InfectionState::Infected, InfectionState::Recovered>(i)] =
size_t get_flat_index(Index const &index) const
get_flat_index returns the flat index into the stored array, given the indices of each category
Definition: custom_index_array.h:309
A FlowModel is a CompartmentalModel defined by the flows between compartments.
Definition: flow_model.h:74
constexpr size_t get_flat_flow_index() const
A flat index into an array of flows (as computed by get_flows), if the only used category in Pop is C...
Definition: flow_model.h:201
size_t get_num_groups() const
Get the number of the age groups.
Definition: abm/parameters.h:783
Definition: ode_seirv/model.h:57
typename Base::Populations PopulationsType
Definition: ode_seirv/model.h:62
typename Base::ParameterSet ParameterSet
Definition: ode_seirv/model.h:61
Model(const PopulationsType &pop, const ParameterSet ¶ms)
Definition: ode_seirv/model.h:64
void get_flows(Eigen::Ref< const Eigen::VectorX< FP >> pop, Eigen::Ref< const Eigen::VectorX< FP >> y, FP t, Eigen::Ref< Eigen::VectorX< FP >> flows) const override
Definition: ode_seirv/model.h:73
Parameter set for the age-resolved SEIRV model (S,E,I,R plus vaccinated states) as per the appendix.
Definition: ode_seirv/parameters.h:327
ad::internal::unary_intermediate< AD_TAPE_REAL, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::operations::ad_sin< AD_TAPE_REAL > > sin(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &x1)
Definition: ad.hpp:913
ad::internal::binary_intermediate_aa< AD_TAPE_REAL, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::operations::ad_pow_aa< AD_TAPE_REAL > > pow(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &x1, const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &x2)
Definition: ad.hpp:1610
ad::internal::unary_intermediate< AD_TAPE_REAL, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::operations::ad_exp< AD_TAPE_REAL > > exp(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &x1)
Definition: ad.hpp:990
@ InfectedVaccinated
@ Susceptible
@ Recovered
@ RecoveredVaccinated
@ SusceptibleVaccinated
@ ExposedVaccinated
@ Exposed
@ Infected
A collection of classes to simplify handling of matrix shapes in meta programming.
Definition: models/abm/analyze_result.h:30
Range< MultiIndexIterator< Index< Categories... > > > make_index_range(Index< Categories... > dimensions)
Construct a range that can be used to iterate over all MultiIndices in the given dimensions.
Definition: index_range.h:168
constexpr std::tuple_element< I, std::tuple< Index< CategoryTags >... > >::type & get(Index< CategoryTags... > &i) noexcept
Retrieves the Index (by reference) at the Ith position of a MultiIndex.
Definition: index.h:294
The AgeGroup struct is used as a dynamically sized tag for all age dependent categories.
Definition: age_group.h:32
Populations populations
Definition: compartmental_model.h:156
mio::Populations< FP, AgeGroup, InfectionState > Populations
Definition: compartmental_model.h:62
Parameters< FP > ParameterSet
Definition: compartmental_model.h:63
ParameterSet parameters
Definition: compartmental_model.h:157
A Flow defines a possible transition between two Compartments in a FlowModel.
Definition: flow.h:33
Collection of types. Each type is mapped to an index of type size_t.
Definition: type_list.h:32
Clustering/concavity parameter ρ (dimensionless).
Definition: ode_seirv/parameters.h:172
Generated by