quad_well.h Source File
|
CPP API
|
quad_well.h
Go to the documentation of this file.
70 QuadWell(const std::vector<Agent>& agents, const std::vector<mio::AdoptionRate<ScalarType, Status>>& rates,
71 ScalarType contact_radius = 0.4, ScalarType sigma = 0.4, std::vector<Status> non_moving_states = {})
76 , m_number_transitions(static_cast<size_t>(Status::Count), Eigen::MatrixX<ScalarType>::Zero(4, 4))
154 mio::DistributionAdapter<std::normal_distribution<ScalarType>>::get_instance()(m_rng, 0.0, 1.0),
155 mio::DistributionAdapter<std::normal_distribution<ScalarType>>::get_instance()(m_rng, 0.0, 1.0)};
172 Eigen::VectorX<ScalarType> val = Eigen::VectorX<ScalarType>::Zero(4 * static_cast<size_t>(Status::Count));
176 static_cast<size_t>(agent.status) + well_index(agent.position) * static_cast<size_t>(Status::Count);
200 std::map<std::tuple<mio::regions::Region, Status, Status>, mio::AdoptionRate<ScalarType, Status>>&
261 std::map<std::tuple<mio::regions::Region, Status, Status>, mio::AdoptionRate<ScalarType, Status>>
ScalarType m_contact_radius
Agents' interaction radius. Within this radius agents are considered as contacts.
Definition: quad_well.h:263
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: quad_well.h:262
Eigen::VectorX< ScalarType > time_point() const
Calculate the current system state i.e.
Definition: quad_well.h:170
static Position grad_U(const Position x)
Claculate the gradient of the potential at a given position.
Definition: quad_well.h:231
ScalarType adoption_rate(const Agent &agent, const Status &new_status) const
Calculate adoption rate for an Agent.
Definition: quad_well.h:103
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: quad_well.h:146
QuadWell(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^2 -1)^2+(y^2-1)^2.
Definition: quad_well.h:70
mio::RandomNumberGenerator & get_rng()
Get the RandomNumberGenerator used by this Model for random events.
Definition: quad_well.h:218
std::vector< Eigen::MatrixX< ScalarType > > m_number_transitions
Vector that contains for every infection state a matrix with entry (k,l) the number of spatial transi...
Definition: quad_well.h:268
bool is_in_domain(const Position &p) const
Restrict domain to [-2, 2]^2 where "escaping" is impossible.
Definition: quad_well.h:256
std::map< std::tuple< mio::regions::Region, Status, Status >, mio::AdoptionRate< ScalarType, Status > > & get_adoption_rates()
Get AdoptionRate mapping.
Definition: quad_well.h:201
mio::RandomNumberGenerator m_rng
Model's random number generator.
Definition: quad_well.h:269
std::vector< size_t > m_non_moving_regions
Regions without movement.
Definition: quad_well.h:266
static constexpr void adopt(Agent &agent, const Status &new_status)
Perform infection state adoption for an Agent.
Definition: quad_well.h:92
std::vector< Agent > populations
Vector containing all Agents in the model.
Definition: quad_well.h:223
void set_non_moving_regions(std::vector< size_t > non_moving_regions)
Set regions where no movement happens.
Definition: quad_well.h:209
std::vector< Status > m_non_moving_states
Infection states within which agents do not change their location.
Definition: quad_well.h:265
const std::vector< Eigen::MatrixX< ScalarType > > & number_transitions() const
Get the number of spatial transitions that happened until the current system state.
Definition: quad_well.h:186
bool is_contact(const Agent &agent, const Agent &contact) const
Evaluate whether two agents are within their contact radius.
Definition: quad_well.h:244
std::vector< Eigen::MatrixX< ScalarType > > & number_transitions()
Definition: quad_well.h:191
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
size_t well_index(const Position &p)
Get the index of the well containing the given position.
Definition: quad_well.h:34
Struct defining a possible status adoption in a Model based on Poisson Processes.
Definition: adoption_rate.h:49
Generated by