Glauber Dynamics in C
Simulation for Glauber Dynamics written in C11
|
Define a general update_rule class and contains examples for them. More...
Go to the source code of this file.
Typedefs | |
typedef void(* | update_rule) (graph *, int, double, pcg32_random_t *) |
The update_rule function type to which all update rules should adhere. More... | |
Variables | |
update_rule | polya_update |
The polya update rule leading to polya competition on the graph. More... | |
Define a general update_rule class and contains examples for them.
This file is used to outline the possible update rules to graphs once the Poisson clock on a vertex has rung, the functions should be of the form
void graph_update(graph *state, int vertex_index, double alpha, pcg32_random_t *rng)
and update the pointed to graph using the random value given by rng in case it is needed.
typedef void(* update_rule) (graph *, int, double, pcg32_random_t *) |
The update_rule function type to which all update rules should adhere.
graph
The input graph to update. int
The index of the vertex to update (i.e. whose clock 'rang'). double
The intrinsic alpha parameter of the model. pcg32_random_t
The RNG governing the randomness in the model.
update_rule polya_update |
The polya update rule leading to polya competition on the graph.
For details see the paper by Yannick CouziniƩ and Christian Hirsch and the references therein. Essentially the update rules are like polya urns on every vertex reinforced with a power law which is governed by the double parameter in the update rule (i.e. double alpha = 1 is linear reinforcement).