metapopulation_mobility_instant.h Source File
|
CPP API
|
metapopulation_mobility_instant.h
Go to the documentation of this file.
154 MobilityParameters(const MobilityCoefficientGroup<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
169 MobilityParameters(const Eigen::VectorX<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
289 std::vector<std::vector<size_t>> m_saved_compartment_indices; // groups of indices from compartments to save
337 MobilityEdge(const MobilityParameters<FP>& params, const std::vector<std::vector<size_t>>& save_indices)
355 MobilityEdge(const Eigen::VectorX<FP>& coeffs, const std::vector<std::vector<size_t>>& save_indices)
400 void apply_mobility(FP t, FP dt, SimulationNode<FP, Sim>& node_from, SimulationNode<FP, Sim>& node_to);
408 std::pair<FP, SimulationTime<FP>> m_dynamic_npi = {-std::numeric_limits<FP>::max(), SimulationTime<FP>(0)};
409 std::vector<std::vector<size_t>> m_saved_compartment_indices; // groups of indices from compartments to save
410 TimeSeries<FP> m_mobility_results; // save results from edges + entry for the total number of commuters
461 void calculate_mobility_returns(Eigen::Ref<typename TimeSeries<FP>::Vector> mobile_population, const Sim& sim,
483 FP get_infections_relative(const SimulationNode<FP, Sim>& node, FP t, const Eigen::Ref<const Eigen::VectorX<FP>>& y)
490 mio::log_debug("get_infections_relative called without specialization for this simulation type. "
508 auto get_mobility_factors(const SimulationNode<FP, Sim>& node, FP t, const Eigen::Ref<const Eigen::VectorX<FP>>& y)
532 void test_commuters(SimulationNode<FP, Sim>& node, Eigen::Ref<Eigen::VectorX<FP>> mobile_population, FP time)
534 if constexpr (requires { test_commuters<FP>(node.get_simulation(), mobile_population, time); }) {
552 get_infections_relative<FP>(node_from, t, node_from.get_last_state()) * dyn_npis.get_base_value();
571 auto v0 = find_value_reverse<FP>(node_to.get_result(), m_mobile_population.get_time(i), 1e-10, 1e-10);
640 void apply_mobility(FP t, FP dt, MobilityEdge<FP>& mobilityEdge, SimulationNode<FP, Sim>& node_from,
658 void (*)(FP, FP, mio::MobilityEdge<FP>&, mio::SimulationNode<FP, Sim>&, mio::SimulationNode<FP, Sim>&),
663 t0, dt, graph, static_cast<void (*)(FP, FP, SimulationNode<FP, Sim>&)>(&advance_model<FP, Sim>),
664 static_cast<void (*)(FP, FP, MobilityEdge<FP>&, SimulationNode<FP, Sim>&, SimulationNode<FP, Sim>&)>(
670 void (*)(FP, FP, mio::MobilityEdge<FP>&, mio::SimulationNode<FP, Sim>&, mio::SimulationNode<FP, Sim>&),
675 t0, dt, std::move(graph), static_cast<void (*)(FP, FP, SimulationNode<FP, Sim>&)>(&advance_model<FP, Sim>),
676 static_cast<void (*)(FP, FP, MobilityEdge<FP>&, SimulationNode<FP, Sim>&, SimulationNode<FP, Sim>&)>(
710 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 * (B - 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:37
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:297
std::pair< FP, SimulationTime< FP > > m_dynamic_npi
Definition: metapopulation_mobility_instant.h:408
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:337
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:355
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:379
std::vector< std::vector< size_t > > m_saved_compartment_indices
Definition: metapopulation_mobility_instant.h:409
MobilityParameters< FP > m_parameters
Definition: metapopulation_mobility_instant.h:403
MobilityEdge(const MobilityParameters< FP > ¶ms)
Create edge with coefficients.
Definition: metapopulation_mobility_instant.h:303
FP m_t_last_dynamic_npi_check
Definition: metapopulation_mobility_instant.h:407
const MobilityParameters< FP > & get_parameters() const
get the mobility parameters.
Definition: metapopulation_mobility_instant.h:368
TimeSeries< FP > m_mobility_results
Definition: metapopulation_mobility_instant.h:410
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:424
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:546
MobilityEdge(const Eigen::VectorX< FP > &coeffs)
Create edge with coefficients.
Definition: metapopulation_mobility_instant.h:319
TimeSeries< FP > m_mobile_population
Definition: metapopulation_mobility_instant.h:404
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:383
TimeSeries< FP > m_return_times
Definition: metapopulation_mobility_instant.h:405
bool m_return_mobile_population
Definition: metapopulation_mobility_instant.h:406
parameters that influence mobility.
Definition: metapopulation_mobility_instant.h:122
bool operator!=(const MobilityParameters &other) const
Definition: metapopulation_mobility_instant.h:183
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:154
bool operator==(const MobilityParameters &other) const
equality comparison operators
Definition: metapopulation_mobility_instant.h:179
DynamicNPIs< FP > & get_dynamic_npis_infected()
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:241
const MobilityCoefficientGroup< FP > & get_coefficients() const
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:198
void serialize(IOContext &io) const
serialize this.
Definition: metapopulation_mobility_instant.h:259
void set_coefficients(const MobilityCoefficientGroup< FP > &coeffs)
Definition: metapopulation_mobility_instant.h:209
void set_dynamic_npis_infected(const DynamicNPIs< FP > &v)
Definition: metapopulation_mobility_instant.h:248
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:169
static IOResult< MobilityParameters > deserialize(IOContext &io)
deserialize an object of this class.
Definition: metapopulation_mobility_instant.h:271
MobilityParameters(const Eigen::VectorX< FP > &coeffs)
constructor from mobility coefficients.
Definition: metapopulation_mobility_instant.h:138
MobilityCoefficientGroup< FP > & get_coefficients()
Get/Setthe mobility coefficients.
Definition: metapopulation_mobility_instant.h:202
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:237
std::vector< std::vector< size_t > > m_saved_compartment_indices
Definition: metapopulation_mobility_instant.h:289
MobilityParameters(const MobilityCoefficientGroup< FP > &coeffs)
constructor from mobility coefficients.
Definition: metapopulation_mobility_instant.h:128
MobilityCoefficientGroup< FP > m_coefficients
Definition: metapopulation_mobility_instant.h:287
const auto & get_save_indices() const
Get the indices of compartments to be saved during mobility.
Definition: metapopulation_mobility_instant.h:224
DynamicNPIs< FP > m_dynamic_npis
Definition: metapopulation_mobility_instant.h:288
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:46
Eigen::Ref< const Eigen::VectorX< FP > > get_last_state() const
Definition: metapopulation_mobility_instant.h:81
decltype(auto) get_result() const
get the result of the simulation in this node.
Definition: metapopulation_mobility_instant.h:57
Eigen::VectorX< FP > m_last_state
Definition: metapopulation_mobility_instant.h:99
void advance(FP t, FP dt)
Definition: metapopulation_mobility_instant.h:91
Sim & get_simulation()
get the the simulation in this node.
Definition: metapopulation_mobility_instant.h:71
const Sim & get_simulation() const
get the the simulation in this node.
Definition: metapopulation_mobility_instant.h:75
Typesafe wrapper for a floating-point simulation time value (in days).
Definition: damping.h:78
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:449
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 percentage of infected people of the total population in the node.
Definition: metapopulation_mobility_instant.h:483
boost::outcome_v2::in_place_type_t< T > Tag
Type that is used for overload resolution.
Definition: io.h:408
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:482
void advance_model(abm::TimePoint t, abm::TimeSpan dt, ABMSimulationNode< History... > &node)
Node functor for abm graph simulation.
Definition: graph_abm_mobility.h:171
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:461
void log(LogLevel level, spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:142
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:660
void log_debug(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:132
bool floating_point_greater_equal(FP v1, FP v2, FP abs_tol=0, FP rel_tol=std::numeric_limits< FP >::min())
compare two floating point values with tolerances.
Definition: floating_point.h:136
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:693
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:157
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:508
boost::outcome_v2::unchecked< T, IOStatus > IOResult
Value-or-error type for operations that return a value but can fail.
Definition: io.h:354
void log_info(spdlog::string_view_t fmt, const Args &... args)
Definition: logging.h:108
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:532
Definition: io.h:95
Generated by