[−][src]Trait qmc::sse::semi_classical::ClassicalLoopUpdater
This does an SSE equivalent of the classical dimer loop update. Requires ising symmetry and a set of bonds which are equivalent but either sat or broken.
Required methods
fn var_ever_flips(&self, var: usize) -> bool
Check if variable is ever flipped by an offdiagonal op.
Provided methods
fn run_classical_loop_update<R: Rng, EN: EdgeNavigator>(
&mut self,
edges: &EN,
state: &mut [bool],
rng: R
) -> usize
&mut self,
edges: &EN,
state: &mut [bool],
rng: R
) -> usize
Perform an update, return size of cluster.
fn get_var_alloc(&mut self, nvars: usize) -> Vec<bool>
Get the allocation.
fn return_var_alloc(&mut self, _alloc: Vec<bool>)
Return the allocation.
fn get_boundary_alloc(&mut self) -> Vec<(usize, bool)>
Get the allocation.
fn return_boundary_alloc(&mut self, _alloc: Vec<(usize, bool)>)
Return the allocation.
fn get_sat_alloc(&mut self) -> HashSampler<usize>
Get the allocation
fn get_broken_alloc(&mut self) -> HashSampler<usize>
Get the allocation
fn return_sat_alloc(&mut self, _alloc: HashSampler<usize>)
Return the allocation.
fn return_broken_alloc(&mut self, _alloc: HashSampler<usize>)
Return the allocation.
fn post_semiclassical_update_hook(&mut self)
Called after an update.