summaryrefslogtreecommitdiff
path: root/lib/wolff_tools.c
diff options
context:
space:
mode:
authorJaron Kent-Dobias <jaron@kent-dobias.com>2017-06-21 17:29:10 -0400
committerJaron Kent-Dobias <jaron@kent-dobias.com>2017-06-21 17:29:10 -0400
commitf2639be5d5006079868f69b0c7105a066166bec6 (patch)
tree5dcbc9802f6f34f6f0f6488c47d4f5486bca3b40 /lib/wolff_tools.c
parentf036a7fc75752b362eb17fe55b2a05376a0bb09f (diff)
downloadc++-f2639be5d5006079868f69b0c7105a066166bec6.tar.gz
c++-f2639be5d5006079868f69b0c7105a066166bec6.tar.bz2
c++-f2639be5d5006079868f69b0c7105a066166bec6.zip
fixed bug related to counting number of full cluster flips, and added support for choosing other lattices
Diffstat (limited to 'lib/wolff_tools.c')
-rw-r--r--lib/wolff_tools.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/wolff_tools.c b/lib/wolff_tools.c
index d361344..016e19b 100644
--- a/lib/wolff_tools.c
+++ b/lib/wolff_tools.c
@@ -79,7 +79,6 @@ cluster_t *flip_cluster(const graph_t *g, const double *ps, double H, bool *x, g
// initiate the data structure for returning flip information
c = (cluster_t *)calloc(1, sizeof(cluster_t));
c->nv = 0;
- c->dH = 0;
n_h_bonds = 0; n_bonds = 0;
@@ -152,7 +151,7 @@ double *get_bond_probs(double T, double H, ising_state_t *s) {
return ps;
}
-int32_t wolff_step(double T, double H, ising_state_t *s, gsl_rng *r, double *ps) {
+uint32_t wolff_step(double T, double H, ising_state_t *s, gsl_rng *r, double *ps) {
if (r == NULL) {
r = gsl_rng_alloc(gsl_rng_mt19937);
gsl_rng_set(r, jst_rand_seed());
@@ -167,8 +166,10 @@ int32_t wolff_step(double T, double H, ising_state_t *s, gsl_rng *r, double *ps)
s->M += -2 * c->dM;
s->H += 2 * c->dH;
+ uint32_t n_flips = c->nv;
+
free(c);
- return c->nv;
+ return n_flips;
}