Module lattice_qcd_rs::simulation::monte_carlo::overrelaxation
source · 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
- Overrelaxation algorithm using the reverse method.
- Overrelaxation algorithm using rotation method.