summaryrefslogtreecommitdiff
path: root/lib/cluster_finite.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/cluster_finite.c')
-rw-r--r--lib/cluster_finite.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/lib/cluster_finite.c b/lib/cluster_finite.c
index f11a3ea..9392cf8 100644
--- a/lib/cluster_finite.c
+++ b/lib/cluster_finite.c
@@ -1,8 +1,8 @@
#include "cluster_finite.h"
-v_t flip_cluster_finite(state_finite_t *s, v_t v0, q_t rot_ind, gsl_rng *r) {
- q_t *rot = s->transformations + s->q * rot_ind;
+v_t flip_cluster_finite(state_finite_t *s, v_t v0, R_t rot_ind, gsl_rng *r) {
+ q_t *rot = s->transformations + s->q * s->involutions[rot_ind];
q_t *R_inv = symmetric_invert(s->q, s->R);
v_t nv = 0;
@@ -62,14 +62,14 @@ v_t flip_cluster_finite(state_finite_t *s, v_t v0, q_t rot_ind, gsl_rng *r) {
s->M[rot_s_old]--;
s->M[rot_s_new]++;
- s->E += - s->H[rot_s_new] + s->H[rot_s_old];
} else {
- q_t diff_old = (s_old + s->q - sn) % s->q;
- q_t diff_new = (s_new + s->q - sn) % s->q;
+ q_t diff_old = s->bond_with_zero_type[s->transformations[s->q * s->transform_site_to_zero[sn] + s_old]];
+ q_t diff_new = s->bond_with_zero_type[s->transformations[s->q * s->transform_site_to_zero[sn] + s_new]];
- prob = s->J_probs[diff_new * s->q + diff_old];
+ prob = s->J_probs[diff_new * s->n_bond_types + diff_old];
- s->E += - s->J[diff_new] + s->J[diff_old];
+ s->B[diff_old]--;
+ s->B[diff_new]++;
}
if (gsl_rng_uniform(r) < prob) { // and with probability ps[e]...