single_well.h Source File
|
CPP API
|
single_well.h
Go to the documentation of this file.
60 return {mio::UniformDistribution<ScalarType>::get_instance()(mio::thread_local_rng(), m_range.first[0],
96 SingleWell(const std::vector<Agent>& agents, const std::vector<mio::AdoptionRate<ScalarType, Status>>& rates,
97 ScalarType contact_radius = 0.4, ScalarType sigma = 0.4, std::vector<Status> non_moving_states = {})
176 mio::DistributionAdapter<std::normal_distribution<ScalarType>>::get_instance()(m_rng, 0.0, 1.0),
177 mio::DistributionAdapter<std::normal_distribution<ScalarType>>::get_instance()(m_rng, 0.0, 1.0)};
190 Eigen::VectorX<ScalarType> val = Eigen::VectorX<ScalarType>::Zero(static_cast<size_t>(Status::Count));
197 std::map<std::tuple<mio::regions::Region, Status, Status>, mio::AdoptionRate<ScalarType, Status>>&
247 // restrict domain to [lower_domain_border, upper_domain_border]^2 where "escaping" is impossible, i.e. it holds x <= grad_U(x) for dt <= 0.1
248 return lower_domain_border <= p[0] && p[0] <= upper_domain_border && lower_domain_border <= p[1] &&
252 std::map<std::tuple<mio::regions::Region, Status, Status>, mio::AdoptionRate<ScalarType, Status>>
A Sampler for sampling a position for the singlewell potential F(x,y) = (x^4 + y^4)/2,...
Definition: single_well.h:34
SWPositionSampler(const Position &bottom_left, const Position &top_right, ScalarType margin)
Create a sampler.
Definition: single_well.h:44
Position operator()() const
Sampling a position within [bottom_left.x + margin, bottom_left.y + margin] x [top_right....
Definition: single_well.h:58
void move(const ScalarType, const ScalarType dt, Agent &agent)
Perform one integration step of the diffusion process for a given Agent using the Euler-Maruyama meth...
Definition: single_well.h:171
std::map< std::tuple< mio::regions::Region, Status, Status >, mio::AdoptionRate< ScalarType, Status > > & get_adoption_rates()
Definition: single_well.h:198
mio::RandomNumberGenerator & get_rng()
Get the RandomNumberGenerator used by this Model for random events.
Definition: single_well.h:207
std::vector< Status > m_non_moving_states
Infection states within which agents do not change their location.
Definition: single_well.h:256
bool is_in_domain(const Position &p, const ScalarType lower_domain_border=-2, const ScalarType upper_domain_border=2) const
Restrict domain to [-2, 2]^2 where "escaping" is impossible.
Definition: single_well.h:244
ScalarType adoption_rate(const Agent &agent, const Status &new_status) const
Calculate adoption rate for an Agent.
Definition: single_well.h:128
mio::RandomNumberGenerator m_rng
Model's random number generator.
Definition: single_well.h:257
static Position grad_U(const Position p)
Calculate the gradient of the potential at a given position.
Definition: single_well.h:220
bool is_contact(const Agent &agent, const Agent &contact) const
Evaluate whether two agents are within their contact radius.
Definition: single_well.h:233
Eigen::VectorX< ScalarType > time_point() const
Calculate the current system state i.e.
Definition: single_well.h:188
ScalarType m_contact_radius
Agents' interaction radius. Within this radius agents are considered as contacts.
Definition: single_well.h:254
ScalarType m_sigma
Noise term of the diffusion process.
Definition: single_well.h:255
static constexpr void adopt(Agent &agent, const Status &new_status)
Perform infection state adoption for an Agent.
Definition: single_well.h:117
std::vector< Agent > populations
Vector containing all Agents in the model.
Definition: single_well.h:212
std::map< std::tuple< mio::regions::Region, Status, Status >, mio::AdoptionRate< ScalarType, Status > > m_adoption_rates
Map of AdoptionRates according to their region index and their from -> to infection states.
Definition: single_well.h:253
SingleWell(const std::vector< Agent > &agents, const std::vector< mio::AdoptionRate< ScalarType, Status >> &rates, ScalarType contact_radius=0.4, ScalarType sigma=0.4, std::vector< Status > non_moving_states={})
Set up a diffusive ABM using the quadwell potential F(x,y) = (x^4 + y^4)/2.
Definition: single_well.h:96
ad::internal::unary_intermediate< AD_TAPE_REAL, ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 >, ad::operations::ad_sqrt< AD_TAPE_REAL > > sqrt(const ad::internal::active_type< AD_TAPE_REAL, DATA_HANDLER_1 > &x1)
Definition: ad.hpp:1023
void unused(T &&...)
Does nothing, can be used to mark variables as not used.
Definition: compiler_diagnostics.h:30
RandomNumberGenerator & thread_local_rng()
Definition: random_number_generator.cpp:25
Definition: single_well.h:83
Struct defining a possible status adoption in a Model based on Poisson Processes.
Definition: adoption_rate.h:49
Generated by