pub fn run_sweep_loop(
lattice: &Lattice,
real: &mut Realization,
n_replicas: usize,
n_temps: usize,
config: &SimConfig,
interrupted: &AtomicBool,
on_sweep: &(dyn Fn() + Sync),
) -> Result<SweepResult, String>Expand description
Run the full Monte Carlo loop (warmup + measurement) for one Realization.
Each sweep consists of:
- A full single-spin pass (
sweep_mode: Metropolis or Gibbs) - An optional cluster update (every
cluster_update.intervalsweeps) - Measurement (after
warmup_sweeps) - Optional overlap cluster move (every
overlap_cluster.intervalsweeps, requiresn_replicas ≥ 2) - Optional parallel tempering (every
pt_intervalsweeps)
on_sweep is called once per sweep (useful for progress bars).