Trait qmc::sse::qmc_traits::diagonal::DiagonalUpdater [−][src]
pub trait DiagonalUpdater: OpContainer { fn mutate_ps<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T
where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T); fn try_iterate_ps<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V>
where
F: Fn(&Self, Option<&Self::Op>, T) -> Result<T, V>; fn mutate_ops<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T
where
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T), { ... } fn try_iterate_ops<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V>
where
F: Fn(&Self, &Self::Op, usize, T) -> Result<T, V>, { ... } fn iterate_ps<F, T>(&self, pstart: usize, pend: usize, t: T, f: F) -> T
where
F: Fn(&Self, Option<&Self::Op>, T) -> T, { ... } fn iterate_ops<F, T>(&self, pstart: usize, pend: usize, t: T, f: F) -> T
where
F: Fn(&Self, &Self::Op, usize, T) -> T, { ... } fn make_diagonal_update<'b, H: Hamiltonian<'b>>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H
) { ... } fn make_diagonal_update_with_rng<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
rng: &mut R
) { ... } fn make_diagonal_update_with_rng_and_state_ref<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &mut [bool],
hamiltonian: &H,
rng: &mut R
) { ... } fn post_diagonal_update_hook(&mut self) { ... } }
Expand description
Perform diagonal updates to an op container.
Required methods
fn mutate_ps<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
[src]
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
Expand description
Folds across the p values, passing T down. Mutates op if returned values is Some(…)
fn try_iterate_ps<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, Option<&Self::Op>, T) -> Result<T, V>,
[src]
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, Option<&Self::Op>, T) -> Result<T, V>,
Expand description
Iterate through the ops and call f. Exit early with Err(v).
Provided methods
fn mutate_ops<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
[src]
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
Expand description
Mutate only the ops. Override with more efficient solutions if needed.
fn try_iterate_ops<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, &Self::Op, usize, T) -> Result<T, V>,
[src]
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, &Self::Op, usize, T) -> Result<T, V>,
Expand description
Iterate through ops only. Can override with more efficient implementation.
fn iterate_ps<F, T>(&self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, Option<&Self::Op>, T) -> T,
[src]
F: Fn(&Self, Option<&Self::Op>, T) -> T,
Expand description
Iterate through the ops and call f.
fn iterate_ops<F, T>(&self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, &Self::Op, usize, T) -> T,
[src]
F: Fn(&Self, &Self::Op, usize, T) -> T,
Expand description
Iterate through ops only. Calls try_iterate_ops by default.
fn make_diagonal_update<'b, H: Hamiltonian<'b>>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H
)
Expand description
Perform a diagonal update step with thread rng.
fn make_diagonal_update_with_rng<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
rng: &mut R
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
rng: &mut R
)
Expand description
Perform a diagonal update step.
fn make_diagonal_update_with_rng_and_state_ref<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &mut [bool],
hamiltonian: &H,
rng: &mut R
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &mut [bool],
hamiltonian: &H,
rng: &mut R
)
Expand description
Perform a diagonal update step using in place edits to state.
fn post_diagonal_update_hook(&mut self)
[src]
Expand description
Called after an update.
Implementors
impl<O: Op + Clone, ALLOC: FastOpAllocator> DiagonalUpdater for FastOpsTemplate<O, ALLOC>
[src]
impl<O: Op + Clone, ALLOC: FastOpAllocator> DiagonalUpdater for FastOpsTemplate<O, ALLOC>
[src]fn mutate_ps<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
[src]
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
fn mutate_ops<F, T>(&mut self, pstart: usize, pend: usize, t: T, f: F) -> T where
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
[src]
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
fn try_iterate_ps<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, Option<&Self::Op>, T) -> Result<T, V>,
[src]
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, Option<&Self::Op>, T) -> Result<T, V>,
fn try_iterate_ops<F, T, V>(
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, &Self::Op, usize, T) -> Result<T, V>,
[src]
&self,
pstart: usize,
pend: usize,
t: T,
f: F
) -> Result<T, V> where
F: Fn(&Self, &Self::Op, usize, T) -> Result<T, V>,