metapopulation_mobility_instant.h Source File
|
CPP API
|
metapopulation_mobility_instant.h
Go to the documentation of this file.
155 MobilityParameters(const MobilityCoefficientGroup<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
170 MobilityParameters(const Eigen::VectorX<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
290 std::vector<std::vector<size_t>> m_saved_compartment_indices; // groups of indices from compartments to save
338 MobilityEdge(const MobilityParameters<FP>& params, const std::vector<std::vector<size_t>>& save_indices)
356 MobilityEdge(const Eigen::VectorX<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
401 void apply_mobility(FP t, FP dt, SimulationNode<FP, Sim>& node_from, SimulationNode<FP, Sim>& node_to);
409 std::pair<FP, SimulationTime<FP>> m_dynamic_npi = {-std::numeric_limits<FP>::max(), SimulationTime<FP>(0)};
410 std::vector<std::vector<size_t>> m_saved_compartment_indices; // groups of indices from compartments to save
411 TimeSeries<FP> m_mobility_results; // save results from edges + entry for the total number of commuters
462 void calculate_mobility_returns(Eigen::Ref<typename TimeSeries<FP>::Vector> mobile_population, const Sim& sim,
484 FP get_infections_relative(const SimulationNode<FP, Sim>& node, FP t, const Eigen::Ref<const Eigen::VectorX<FP>>& y)
491 mio::log_debug("get_infections_relative called without specialization for this simulation type. "
509 auto get_mobility_factors(const SimulationNode<FP, Sim>& node, FP t, const Eigen::Ref<const Eigen::VectorX<FP>>& y)
533 void test_commuters(SimulationNode<FP, Sim>& node, Eigen::Ref<Eigen::VectorX<FP>> mobile_population, FP time)
535 if constexpr (requires { test_commuters<FP>(node.get_simulation(), mobile_population, time); }) {
557 floating_point_greater_equal<FP>(t, m_t_last_dynamic_npi_check + dyn_npis.get_interval().get())) {
559 get_infections_relative<FP>(node_from, t, node_from.get_last_state()) * dyn_npis.get_base_value();
578 auto v0 = find_value_reverse<FP>(node_to.get_result(), m_mobile_population.get_time(i), 1e-10, 1e-10);
647 void apply_mobility(FP t, FP dt, MobilityEdge<FP>& mobilityEdge, SimulationNode<FP, Sim>& node_from,
665 void (*)(FP, FP, mio::MobilityEdge<FP>&, mio::SimulationNode<FP, Sim>&, mio::SimulationNode<FP, Sim>&),
670 t0, dt, graph, static_cast<void (*)(FP, FP, SimulationNode<FP, Sim>&)>(&advance_model<FP, Sim>),
671 static_cast<void (*)(FP, FP, MobilityEdge<FP>&, SimulationNode<FP, Sim>&, SimulationNode<FP, Sim>&)>(
677 void (*)(FP, FP, mio::MobilityEdge<FP>&, mio::SimulationNode<FP, Sim>&, mio::SimulationNode<FP, Sim>&),
682 t0, dt, std::move(graph), static_cast<void (*)(FP, FP, SimulationNode<FP, Sim>&)>(&advance_model<FP, Sim>),
683 static_cast<void (*)(FP, FP, MobilityEdge<FP>&, SimulationNode<FP, Sim>&, SimulationNode<FP, Sim>&)>(
717 return GraphSim(t0, std::numeric_limits<FP>::infinity(), std::move(graph), &advance_model<FP, Sim>,
represents a collection of DampingMatrixExpressions that are summed up.
Definition: contact_matrix.h:272
represents the coefficient wise matrix (or vector) expression B - D * M where B is a baseline,...
Definition: contact_matrix.h:46
represents non-pharmaceutical interventions (NPI) that are activated during the simulation if some va...
Definition: dynamic_npis.h:35
Simple explicit euler integration y(t+1) = y(t) + h*f(t,y) for ODE y'(t) = f(t,y)
Definition: euler.h:34
bool step(const DerivFunction< FP > &f, Eigen::Ref< const Eigen::VectorX< FP >> yt, FP &t, FP &dt, Eigen::Ref< Eigen::VectorX< FP >> ytp1) const override
Fixed step width of the integration.
Definition: euler.h:54
Definition: graph_simulation.h:96
represents the mobility between two nodes.
Definition: metapopulation_mobility_instant.h:298
std::pair< FP, SimulationTime< FP > > m_dynamic_npi
Definition: metapopulation_mobility_instant.h:409
MobilityEdge(const MobilityParameters< FP > ¶ms, const std::vector< std::vector< size_t >> &save_indices)
Create edge with coefficients as MobilityParameters object and a 2D vector of indices which determine...
Definition: metapopulation_mobility_instant.h:338
MobilityEdge(const Eigen::VectorX< FP > &coeffs, const std::vector< std::vector< size_t >> &save_indices)
Create edge with coefficients and a 2D vector of indices which determine which compartments are saved...
Definition: metapopulation_mobility_instant.h:356
TimeSeries< FP > & get_mobility_results()
Get the count of commuters in selected compartments, along with the total number of commuters.
Definition: metapopulation_mobility_instant.h:380
std::vector< std::vector< size_t > > m_saved_compartment_indices
Definition: metapopulation_mobility_instant.h:410
MobilityParameters< FP > m_parameters
Definition: metapopulation_mobility_instant.h:404
MobilityEdge(const MobilityParameters< FP > ¶ms)
Create edge with coefficients.
Definition: metapopulation_mobility_instant.h:304
FP m_t_last_dynamic_npi_check
Definition: metapopulation_mobility_instant.h:408
const MobilityParameters< FP > & get_parameters() const
get the mobility parameters.
Definition: metapopulation_mobility_instant.h:369
TimeSeries< FP > m_mobility_results
Definition: metapopulation_mobility_instant.h:411
void add_mobility_result_time_point(const FP t)
Computes a condensed version of m_mobile_population and stores it in m_mobility_results.
Definition: metapopulation_mobility_instant.h:425
void apply_mobility(FP t, FP dt, SimulationNode< FP, Sim > &node_from, SimulationNode< FP, Sim > &node_to)
compute mobility from node_from to node_to.
Definition: metapopulation_mobility_instant.h:547
MobilityEdge(const Eigen::VectorX< FP > &coeffs)
Create edge with coefficients.
Definition: metapopulation_mobility_instant.h:320
TimeSeries< FP > m_mobile_population
Definition: metapopulation_mobility_instant.h:405
const TimeSeries< FP > & get_mobility_results() const
Get the count of commuters in selected compartments, along with the total number of commuters.
Definition: metapopulation_mobility_instant.h:384
TimeSeries< FP > m_return_times
Definition: metapopulation_mobility_instant.h:406
bool m_return_mobile_population
Definition: metapopulation_mobility_instant.h:407
parameters that influence mobility.
Definition: metapopulation_mobility_instant.h:123
bool operator!=(const MobilityParameters &other) const
Definition: metapopulation_mobility_instant.h:184
MobilityParameters(const MobilityCoefficientGroup< FP > &coeffs, const std::vector< std::vector< size_t >> &save_indices)
Constructor for initializing mobility parameters with coefficients from type MobilityCoefficientGroup...
Definition: metapopulation_mobility_instant.h:155
bool operator==(const MobilityParameters &other) const
equality comparison operators
Definition: metapopulation_mobility_instant.h:180
DynamicNPIs< FP > & get_dynamic_npis_infected()
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:242
const MobilityCoefficientGroup< FP > & get_coefficients() const
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:199
void serialize(IOContext &io) const
serialize this.
Definition: metapopulation_mobility_instant.h:260
void set_coefficients(const MobilityCoefficientGroup< FP > &coeffs)
Definition: metapopulation_mobility_instant.h:210
void set_dynamic_npis_infected(const DynamicNPIs< FP > &v)
Definition: metapopulation_mobility_instant.h:249
MobilityParameters(const Eigen::VectorX< FP > &coeffs, const std::vector< std::vector< size_t >> &save_indices)
Constructor for initializing mobility parameters with coefficients from an Eigen Vector and specific ...
Definition: metapopulation_mobility_instant.h:170
static IOResult< MobilityParameters > deserialize(IOContext &io)
deserialize an object of this class.
Definition: metapopulation_mobility_instant.h:272
MobilityParameters(const Eigen::VectorX< FP > &coeffs)
constructor from mobility coefficients.
Definition: metapopulation_mobility_instant.h:139
MobilityCoefficientGroup< FP > & get_coefficients()
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:203
const DynamicNPIs< FP > & get_dynamic_npis_infected() const
Get/Set dynamic NPIs that are implemented when relative infections exceed thresholds.
Definition: metapopulation_mobility_instant.h:238
std::vector< std::vector< size_t > > m_saved_compartment_indices
Definition: metapopulation_mobility_instant.h:290
MobilityParameters(const MobilityCoefficientGroup< FP > &coeffs)
constructor from mobility coefficients.
Definition: metapopulation_mobility_instant.h:129
MobilityCoefficientGroup< FP > m_coefficients
Definition: metapopulation_mobility_instant.h:288
const auto & get_save_indices() const
Get the indices of compartments to be saved during mobility.
Definition: metapopulation_mobility_instant.h:225
DynamicNPIs< FP > m_dynamic_npis
Definition: metapopulation_mobility_instant.h:289
represents the simulation in one node of the graph.
Definition: metapopulation_mobility_instant.h:41
requires std::is_constructible_v< Sim, Args... > SimulationNode(Args &&... args)
Definition: metapopulation_mobility_instant.h:47
Eigen::Ref< const Eigen::VectorX< FP > > get_last_state() const
Definition: metapopulation_mobility_instant.h:82
decltype(auto) get_result() const
get the result of the simulation in this node.
Definition: metapopulation_mobility_instant.h:58
Eigen::VectorX< FP > m_last_state
Definition: metapopulation_mobility_instant.h:100
void advance(FP t, FP dt)
Definition: metapopulation_mobility_instant.h:92
Sim & get_simulation()
get the the simulation in this node.
Definition: metapopulation_mobility_instant.h:72
const Sim & get_simulation() const
get the the simulation in this node.
Definition: metapopulation_mobility_instant.h:76
stores vectors of values at time points (or some other abstract variable) the value at each time poin...
Definition: time_series.h:58
Eigen::Matrix< FP, Eigen::Dynamic, 1 > Vector
base type of expressions of vector values at a time point
Definition: time_series.h:63
static min_max_return_type< ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > >::type max(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &a, const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &b)
Definition: ad.hpp:2596
ApplyResultT< F, T... > eval(F f, const IOResult< T > &... rs)
Evaluates a function f using values of the given IOResults as arguments, assumes all IOResults are su...
Definition: io.h:448
int size(Comm comm)
Return the size of the given communicator.
Definition: miompi.cpp:75
A collection of classes to simplify handling of matrix shapes in meta programming.
Definition: models/abm/analyze_result.h:30
FP get_infections_relative(const SimulationNode< FP, Sim > &node, FP t, const Eigen::Ref< const Eigen::VectorX< FP >> &y)
get the percantage of infected people of the total population in the node If dynamic NPIs are enabled...
Definition: metapopulation_mobility_instant.h:484
boost::outcome_v2::in_place_type_t< T > Tag
Type that is used for overload resolution.
Definition: io.h:407
details::ApplyResultT< F, T... > apply(IOContext &io, F f, const IOResult< T > &... rs)
Evaluate a function with zero or more unpacked IOResults as arguments.
Definition: io.h:481
void advance_model(abm::TimePoint t, abm::TimeSpan dt, ABMSimulationNode< History... > &node)
Node functor for abm graph simulation.
Definition: graph_abm_mobility.h:178
requires(!std::is_trivial_v< T >) void BinarySerializerObject
Definition: binary_serializer.h:333
@ warn
@ info
void calculate_mobility_returns(Eigen::Ref< typename TimeSeries< FP >::Vector > mobile_population, const Sim &sim, Eigen::Ref< const typename TimeSeries< FP >::Vector > total, FP t, FP dt)
adjust number of people that changed node when they return according to the model.
Definition: metapopulation_mobility_instant.h:462
void log(LogLevel level, spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:128
auto slice(V &&v, Seq< Eigen::Index > elems)
take a regular slice of a row or column vector.
Definition: eigen_util.h:107
GraphSimulation< FP, Graph< SimulationNode< FP, Sim >, MobilityEdge< FP > >, FP, FP, void(*)(FP, FP, mio::MobilityEdge< FP > &, mio::SimulationNode< FP, Sim > &, mio::SimulationNode< FP, Sim > &), void(*)(FP, FP, mio::SimulationNode< FP, Sim > &)> make_mobility_sim(FP t0, FP dt, const Graph< SimulationNode< FP, Sim >, MobilityEdge< FP >> &graph)
create a mobility-based simulation.
Definition: metapopulation_mobility_instant.h:667
void log_debug(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:118
void unused(T &&...)
Does nothing, can be used to mark variables as not used.
Definition: compiler_diagnostics.h:30
auto make_no_mobility_sim(FP t0, Graph< SimulationNode< FP, Sim >, MobilityEdge< FP >> &graph)
Create a graph simulation without mobility.
Definition: metapopulation_mobility_instant.h:700
void apply_mobility(abm::TimePoint t, abm::TimeSpan, ABMMobilityEdge< History... > &edge, ABMSimulationNode< History... > &node_from, ABMSimulationNode< History... > &node_to)
Edge functor for abm graph simulation.
Definition: graph_abm_mobility.h:164
auto get_mobility_factors(const SimulationNode< FP, Sim > &node, FP t, const Eigen::Ref< const Eigen::VectorX< FP >> &y)
Get an additional mobility factor.
Definition: metapopulation_mobility_instant.h:509
boost::outcome_v2::unchecked< T, IOStatus > IOResult
Value-or-error type for operations that return a value but can fail.
Definition: io.h:353
void test_commuters(SimulationNode< FP, Sim > &node, Eigen::Ref< Eigen::VectorX< FP >> mobile_population, FP time)
Test persons when moving from their source node.
Definition: metapopulation_mobility_instant.h:533
Definition: io.h:94
Generated by