From 639552a2649139ba14363f30daa20786532b21b0 Mon Sep 17 00:00:00 2001 From: Jaron Kent-Dobias Date: Mon, 23 Jul 2018 13:51:13 -0400 Subject: implemented the discrete gaussian model for roughening --- src/wolff_potts.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src/wolff_potts.cpp') diff --git a/src/wolff_potts.cpp b/src/wolff_potts.cpp index 3b55472..74e0ea9 100644 --- a/src/wolff_potts.cpp +++ b/src/wolff_potts.cpp @@ -90,21 +90,21 @@ int main(int argc, char *argv[]) { state_t , potts_t> s(D, L, T, Z, B); // define function that generates self-inverse rotations - std::function (gsl_rng *, const sim_t *)> gen_R = [] (gsl_rng *r, const sim_t *s) -> symmetric_t { + std::function (gsl_rng *, potts_t)> gen_R = [] (gsl_rng *r, potts_t v) -> symmetric_t { symmetric_t rot; init(&rot); - for (int i = POTTSQ - 1; i >= 0; i--) { - if (rot.perm[i] == i) { - q_t j = gsl_rng_uniform_int(r, i + 1); - if (rot.perm[j] == j) { - q_t tmp = rot.perm[i]; - rot.perm[i] = rot.perm[j]; - rot.perm[j] = tmp; - } - } + q_t j = gsl_rng_uniform_int(r, POTTSQ - 1); + q_t swap_v; + if (j < v.x) { + swap_v = j; + } else { + swap_v = j + 1; } + rot.perm[v.x] = swap_v; + rot.perm[swap_v] = v.x; + return rot; }; -- cgit v1.2.3-70-g09d2