Struct qmc::sse::fast_ops::FastOpsTemplate [−][src]
A fast op container.
Implementations
impl<O: Op + Clone> FastOpsTemplate<O>
[src]
pub fn new_from_ops<I>(nvars: usize, ps_and_ops: I) -> Self where
I: IntoIterator<Item = (usize, O)>,
[src]
I: IntoIterator<Item = (usize, O)>,
Make a new Manager from an interator of ops, and number of variables.
Trait Implementations
impl<O: Clone + Op> Clone for FastOpsTemplate<O>
[src]
fn clone(&self) -> FastOpsTemplate<O>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl<O: Op + Clone> ClusterUpdater for FastOpsTemplate<O>
[src]
fn flip_each_cluster_ising_symmetry_rng<R: Rng>(
&mut self,
prob: f64,
rng: &mut R,
state: &mut [bool]
)
[src]
&mut self,
prob: f64,
rng: &mut R,
state: &mut [bool]
)
fn flip_each_cluster_rng<R: Rng, F>(
&mut self,
prob: f64,
rng: &mut R,
state: &mut [bool],
weight_change_on_global_flip: Option<F>
) where
F: Fn(&Self::Node) -> f64,
[src]
&mut self,
prob: f64,
rng: &mut R,
state: &mut [bool],
weight_change_on_global_flip: Option<F>
) where
F: Fn(&Self::Node) -> f64,
fn find_constant_op(&self) -> Option<usize>
[src]
fn post_cluster_update_hook(&mut self)
[src]
impl<O: Debug + Op> Debug for FastOpsTemplate<O>
[src]
impl<O: Op> DebugOps for FastOpsTemplate<O>
[src]
fn count_diagonal_and_off(&self) -> (usize, usize)
[src]
fn count_constant_ops(&self) -> usize
[src]
impl<O: Op + Clone> DiagonalSubsection for FastOpsTemplate<O>
[src]
type Args = FastOpMutateArgs
The type required for mutating p values.
fn mutate_p<T, F>(
&mut self,
f: F,
p: usize,
t: T,
args: Self::Args
) -> (T, Self::Args) where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
[src]
&mut self,
f: F,
p: usize,
t: T,
args: Self::Args
) -> (T, Self::Args) where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
fn mutate_subsection<T, F>(
&mut self,
pstart: usize,
pend: usize,
t: T,
f: F,
args: Option<Self::Args>
) -> T where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
[src]
&mut self,
pstart: usize,
pend: usize,
t: T,
f: F,
args: Option<Self::Args>
) -> T where
F: Fn(&Self, Option<&Self::Op>, T) -> (Option<Option<Self::Op>>, T),
fn mutate_subsection_ops<T, F>(
&mut self,
pstart: usize,
pend: usize,
t: T,
f: F,
args: Option<Self::Args>
) -> T where
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
[src]
&mut self,
pstart: usize,
pend: usize,
t: T,
f: F,
args: Option<Self::Args>
) -> T where
F: Fn(&Self, &Self::Op, usize, T) -> (Option<Option<Self::Op>>, T),
fn get_empty_args(
&mut self,
vars: SubvarAccess<'_, FastOpMutateArgs>
) -> FastOpMutateArgs
[src]
&mut self,
vars: SubvarAccess<'_, FastOpMutateArgs>
) -> FastOpMutateArgs
fn fill_args_at_p(&self, p: usize, empty_args: Self::Args) -> Self::Args
[src]
fn fill_args_at_p_with_hint<It>(
&self,
p: usize,
args: &mut Self::Args,
vars: &[usize],
hint: It
) where
It: IntoIterator<Item = Option<usize>>,
[src]
&self,
p: usize,
args: &mut Self::Args,
vars: &[usize],
hint: It
) where
It: IntoIterator<Item = Option<usize>>,
fn return_args(&mut self, args: Self::Args)
[src]
fn get_propagated_substate_with_hint<It>(
&self,
p: usize,
substate: &mut [bool],
state: &[bool],
vars: &[usize],
hint: It
) where
It: IntoIterator<Item = Option<usize>>,
[src]
&self,
p: usize,
substate: &mut [bool],
state: &[bool],
vars: &[usize],
hint: It
) where
It: IntoIterator<Item = Option<usize>>,
fn iter_ops_above_p<T, F, G>(&self, p: usize, t: T, f: F, f_at_p: G) -> T where
F: Fn(usize, &Self::Node, T) -> (T, bool),
G: Fn(&Self::Node, T) -> (T, bool),
[src]
F: Fn(usize, &Self::Node, T) -> (T, bool),
G: Fn(&Self::Node, T) -> (T, bool),
impl<O: Op + Clone> DiagonalUpdater for FastOpsTemplate<O>
[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>,
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,
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,
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
)
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
)
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
)
fn post_diagonal_update_hook(&mut self)
[src]
impl<O: Op + Clone> Factory<BondContainer<VarPos>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> BondContainer<VarPos>
[src]
fn return_instance(&mut self, t: BondContainer<VarPos>)
[src]
impl<O: Op + Clone> Factory<BondContainer<usize>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> BondContainer<usize>
[src]
fn return_instance(&mut self, t: BondContainer<usize>)
[src]
impl<O: Op + Clone> Factory<Vec<(usize, OpSide), Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<(usize, OpSide)>
[src]
fn return_instance(&mut self, t: Vec<(usize, OpSide)>)
[src]
impl<O: Op + Clone> Factory<Vec<OpSide, Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<OpSide>
[src]
fn return_instance(&mut self, t: Vec<OpSide>)
[src]
impl<O: Op + Clone> Factory<Vec<Option<usize>, Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<Option<usize>>
[src]
fn return_instance(&mut self, t: Vec<Option<usize>>)
[src]
impl<O: Op + Clone> Factory<Vec<bool, Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<bool>
[src]
fn return_instance(&mut self, t: Vec<bool>)
[src]
impl<O: Op + Clone> Factory<Vec<f64, Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<f64>
[src]
fn return_instance(&mut self, t: Vec<f64>)
[src]
impl<O: Op + Clone> Factory<Vec<usize, Global>> for FastOpsTemplate<O>
[src]
fn get_instance(&mut self) -> Vec<usize>
[src]
fn return_instance(&mut self, t: Vec<usize>)
[src]
impl<O: Op + Clone> HeatBathDiagonalUpdater for FastOpsTemplate<O>
[src]
fn make_heatbath_diagonal_update<'b, H: Hamiltonian<'b>>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
bond_weights: &BondWeights
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
bond_weights: &BondWeights
)
fn make_heatbath_diagonal_update_with_rng<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
bond_weights: &BondWeights,
rng: &mut R
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &[bool],
hamiltonian: &H,
bond_weights: &BondWeights,
rng: &mut R
)
fn make_heatbath_diagonal_update_with_rng_and_state_ref<'b, H: Hamiltonian<'b>, R: Rng>(
&mut self,
cutoff: usize,
beta: f64,
state: &mut [bool],
hamiltonian: &H,
bond_weights: &BondWeights,
rng: &mut R
)
[src]
&mut self,
cutoff: usize,
beta: f64,
state: &mut [bool],
hamiltonian: &H,
bond_weights: &BondWeights,
rng: &mut R
)
fn make_bond_weights<'b, H, E>(
hamiltonian: H,
num_bonds: usize,
bonds_fn: E
) -> BondWeights where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
E: Fn(usize) -> &'b [usize],
[src]
hamiltonian: H,
num_bonds: usize,
bonds_fn: E
) -> BondWeights where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
E: Fn(usize) -> &'b [usize],
fn heat_bath_single_diagonal_update<'b, H: Hamiltonian<'b>, R: Rng>(
op: Option<&Self::Op>,
cutoff: usize,
n: usize,
beta: f64,
state: &mut [bool],
hamiltonian_and_weights: (&H, &BondWeights),
rng: &mut R
) -> Option<Option<Self::Op>>
[src]
op: Option<&Self::Op>,
cutoff: usize,
n: usize,
beta: f64,
state: &mut [bool],
hamiltonian_and_weights: (&H, &BondWeights),
rng: &mut R
) -> Option<Option<Self::Op>>
impl<O: Op> IsingManager for FastOpsTemplate<O>
[src]
impl<O: Op + Clone> LoopUpdater for FastOpsTemplate<O>
[src]
type Node = FastOpNodeTemplate<O>
The type used to contain the Op and handle movement around the worldlines.
fn get_node_ref(&self, p: usize) -> Option<&Self::Node>
[src]
fn get_node_mut(&mut self, p: usize) -> Option<&mut Self::Node>
[src]
fn get_first_p(&self) -> Option<usize>
[src]
fn get_last_p(&self) -> Option<usize>
[src]
fn get_first_p_for_var(&self, var: usize) -> Option<PRel>
[src]
fn get_last_p_for_var(&self, var: usize) -> Option<PRel>
[src]
fn get_previous_p(&self, node: &Self::Node) -> Option<usize>
[src]
fn get_next_p(&self, node: &Self::Node) -> Option<usize>
[src]
fn get_previous_p_for_rel_var(
&self,
relvar: usize,
node: &Self::Node
) -> Option<PRel>
[src]
&self,
relvar: usize,
node: &Self::Node
) -> Option<PRel>
fn get_next_p_for_rel_var(
&self,
relvar: usize,
node: &Self::Node
) -> Option<PRel>
[src]
&self,
relvar: usize,
node: &Self::Node
) -> Option<PRel>
fn get_nth_p(&self, n: usize) -> usize
[src]
fn get_previous_p_for_var(
&self,
var: usize,
node: &Self::Node
) -> Result<Option<PRel>, &str>
[src]
&self,
var: usize,
node: &Self::Node
) -> Result<Option<PRel>, &str>
fn get_next_p_for_var(
&self,
var: usize,
node: &Self::Node
) -> Result<Option<PRel>, &str>
[src]
&self,
var: usize,
node: &Self::Node
) -> Result<Option<PRel>, &str>
fn does_var_have_ops(&self, var: usize) -> bool
[src]
fn make_loop_update<H>(
&mut self,
initial_n: Option<usize>,
hamiltonian: H,
state: &mut [bool]
) where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
[src]
&mut self,
initial_n: Option<usize>,
hamiltonian: H,
state: &mut [bool]
) where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
fn make_loop_update_with_rng<H, R: Rng>(
&mut self,
initial_n: Option<usize>,
hamiltonian: H,
state: &mut [bool],
rng: &mut R
) where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
[src]
&mut self,
initial_n: Option<usize>,
hamiltonian: H,
state: &mut [bool],
rng: &mut R
) where
H: Fn(&[usize], usize, &[bool], &[bool]) -> f64,
fn post_loop_update_hook(&mut self)
[src]
impl<O: Op + Clone> OpContainer for FastOpsTemplate<O>
[src]
type Op = O
The op object to manage.
fn get_cutoff(&self) -> usize
[src]
fn set_cutoff(&mut self, cutoff: usize)
[src]
fn get_n(&self) -> usize
[src]
fn get_nvars(&self) -> usize
[src]
fn get_pth(&self, p: usize) -> Option<&Self::Op>
[src]
fn get_count(&self, bond: usize) -> usize
[src]
fn itime_fold<F, T>(&self, state: &mut [bool], fold_fn: F, init: T) -> T where
F: Fn(T, &[bool]) -> T,
[src]
F: Fn(T, &[bool]) -> T,
fn verify(&self, state: &[bool]) -> bool
[src]
impl<O: Op + Clone> OpContainerConstructor for FastOpsTemplate<O>
[src]
impl<O: Op> QmcManager for FastOpsTemplate<O>
[src]
impl<O: Op + Clone> RvbUpdater for FastOpsTemplate<O>
[src]
fn constant_ops_on_var(&self, var: usize, ps: &mut Vec<usize>)
[src]
fn spin_flips_on_var(&self, var: usize, ps: &mut Vec<usize>)
[src]
fn rvb_update<R: Rng, EN: EdgeNavigator, H>(
&mut self,
edges: &EN,
state: &mut [bool],
updates: usize,
diagonal_edge_hamiltonian: H,
rng: &mut R
) -> usize where
H: Fn(usize, bool, bool) -> f64,
[src]
&mut self,
edges: &EN,
state: &mut [bool],
updates: usize,
diagonal_edge_hamiltonian: H,
rng: &mut R
) -> usize where
H: Fn(usize, bool, bool) -> f64,
fn rvb_update_with_ising_weight<R: Rng, EN: EdgeNavigator, H, F>(
&mut self,
edges: &EN,
state: &mut [bool],
updates: usize,
diagonal_edge_hamiltonian: H,
ising_ratio: F,
rng: &mut R
) -> usize where
H: Fn(usize, bool, bool) -> f64,
F: Fn(&Self::Op) -> f64,
[src]
&mut self,
edges: &EN,
state: &mut [bool],
updates: usize,
diagonal_edge_hamiltonian: H,
ising_ratio: F,
rng: &mut R
) -> usize where
H: Fn(usize, bool, bool) -> f64,
F: Fn(&Self::Op) -> f64,
Auto Trait Implementations
impl<O> RefUnwindSafe for FastOpsTemplate<O> where
O: RefUnwindSafe,
O: RefUnwindSafe,
impl<O> Send for FastOpsTemplate<O> where
O: Send,
O: Send,
impl<O> Sync for FastOpsTemplate<O> where
O: Sync,
O: Sync,
impl<O> Unpin for FastOpsTemplate<O> where
O: Unpin,
O: Unpin,
impl<O> UnwindSafe for FastOpsTemplate<O> where
O: UnwindSafe,
O: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,