bool swap(Replica box1, Replica box2, RanMars *random) { double beta1 = 1/box1.temp, beta2 = 1/box2.temp; double u1 = box1.u, u2 = box2.u; double delta = -1*(beta2-beta1)*(u2-u1); // cout << delta << "\t" << exp(-delta) << endl; //check if swap move is accepted bool accept = false; if (delta<=0) { accept = true; // cout << "accepted" << endl; } else { double prob = exp(-delta); double rand = random->uniform(); if (rand<prob) { accept=true; // cout << "accepted here!" << endl; } } //if accepted, then swap if (accept) { double **x1 = box1.get_pos(); box1.set_pos(box2.get_pos()); box2.set_pos(x1); } // else // cout << "rejected" << endl; return accept; }