# 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.