flag=-1 is used to indicate that the site has not yet been visited. The values 0, 1, ... NBRNUM encode the environment of the atom at each site.
The binding energy is 2*omega per bond, omega per atom.
static void jump(struct SITE * s, int difEq[], double t) { int i; int last; double rate; double sum; double wght[NBRNUM]; for (i = 0; i < size * size; i++) site[i].flag = -1; tryJump(s, difEq, &emin); for (i = 0; i < NBRNUM; i++) wght[i] = exp(-(desene + 2. * i * omega) / gascon / t); last = 0; for (i = 0; i < size * size; i++) if (site[i].flag != -1) { queue[last].target = s; queue[last].action = i; queue[last].rate = wght[site[i].flag]; last++; } if (last == 0) return; for (i = 1; i < last; i++) queue[i].rate += queue[i - 1].rate; sum = queue[last - 1].rate; level= sum * ran2(0); for (i = 0; i < last; i++) if (level <= queue[i].rate) break; swapAtm(s, queue[i].action); }