[][src]Trait qmc::sse::semi_classical::ClassicalLoopUpdater

pub trait ClassicalLoopUpdater: DiagonalUpdater {
    fn var_ever_flips(&self, var: usize) -> bool;

    fn run_classical_loop_update<R: Rng, EN: EdgeNavigator>(
        &mut self,
        edges: &EN,
        state: &mut [bool],
        rng: R
    ) -> usize { ... }
fn get_var_alloc(&mut self, nvars: usize) -> Vec<bool> { ... }
fn return_var_alloc(&mut self, _alloc: Vec<bool>) { ... }
fn get_boundary_alloc(&mut self) -> Vec<(usize, bool)> { ... }
fn return_boundary_alloc(&mut self, _alloc: Vec<(usize, bool)>) { ... }
fn get_sat_alloc(&mut self) -> HashSampler<usize> { ... }
fn get_broken_alloc(&mut self) -> HashSampler<usize> { ... }
fn return_sat_alloc(&mut self, _alloc: HashSampler<usize>) { ... }
fn return_broken_alloc(&mut self, _alloc: HashSampler<usize>) { ... }
fn post_semiclassical_update_hook(&mut self) { ... } }

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.

Loading content...

Provided methods

fn run_classical_loop_update<R: Rng, EN: EdgeNavigator>(
    &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.

Loading content...

Implementors

impl ClassicalLoopUpdater for SimpleOpDiagonal[src]

impl<O: Op + Clone> ClassicalLoopUpdater for FastOpsTemplate<O>[src]

Loading content...