Expand description

Overrelaxation method

The goal of the overrelaxation is to move thought the phase space as much as possible but conserving the hamiltonian. It can be used to improve the speed of thermalisation by vising more states. Alone it can’t advance the simulation as it preserved the hamiltonian. You need to use other method with this one. You can look at super::HybridMethodVec and super::HybridMethodCouple.

In my limited experience OverrelaxationSweepReverse moves a bit more though the phase space than OverrelaxationSweepRotation. The difference is slight though.

Example

use lattice_qcd_rs::simulation::{HeatBathSweep, LatticeState, LatticeStateDefault, OverrelaxationSweepReverse};
use rand::SeedableRng;

let rng = rand::rngs::StdRng::seed_from_u64(0); // change with your seed
let mut heat_bath = HeatBathSweep::new(rng);
let mut overrelax = OverrelaxationSweepReverse::default();

let mut state = LatticeStateDefault::<3>::new_cold(1_f64, 8_f64, 4)?; // 1_f64 : size, 8_f64: beta, 4 number of points.
for _ in 0..2 {
    state = state.monte_carlo_step(&mut heat_bath)?;
    state = state.monte_carlo_step(&mut overrelax)?;
    // operation to track the progress or the evolution
}
// operation at the end of the simulation

Structs