pub struct PhysicsCollector { /* private fields */ }Expand description
Geometry and Fourier phases shared by every measurement of a run.
Implementations§
Source§impl PhysicsCollector
impl PhysicsCollector
pub fn new( lattice: &Lattice, n_temps: usize, options: &PhysicsOptions, components: usize, ) -> Result<Self, String>
Sourcepub fn with_overlap(self, lattice: &Lattice) -> Self
pub fn with_overlap(self, lattice: &Lattice) -> Self
Adds replica-overlap moments overlap2, overlap4 and
overlap_structure_factor_min, filled by Self::measure_overlap, and
overlap2_all_pairs, filled by Self::measure_overlap_all_pairs. Call
before the first measurement.
Sourcepub fn measure_overlap(
&mut self,
lattice: &Lattice,
a: &[i8],
b: &[i8],
occupied: &[bool],
temperature: usize,
weight: f64,
)
pub fn measure_overlap( &mut self, lattice: &Lattice, a: &[i8], b: &[i8], occupied: &[bool], temperature: usize, weight: f64, )
Accumulates the overlap q_i = a_i b_i of one replica pair at temperature.
Self::end_sweep counts replicas, not pairs, so weight should be
replicas per measured pair to normalize these moments per pair.
Sourcepub fn measure_overlap_all_pairs(
&mut self,
replicas: &[&[i8]],
temperature: usize,
weight: f64,
)
pub fn measure_overlap_all_pairs( &mut self, replicas: &[&[i8]], temperature: usize, weight: f64, )
Accumulates Q2, q² averaged over every pair of replicas, at
temperature. Unlike the fixed pairs of Self::measure_overlap, Q2 does
not change when replicas are relabeled. weight is the replica count that
Self::end_sweep adds per sweep.
Sourcepub fn measure<S: Spin>(
&mut self,
lattice: &Lattice,
spins: &[S],
couplings: &[S::Value],
occupied: &[bool],
temperature: usize,
) -> [f64; 2]
pub fn measure<S: Spin>( &mut self, lattice: &Lattice, spins: &[S], couplings: &[S::Value], occupied: &[bool], temperature: usize, ) -> [f64; 2]
Returns (physical energy/site, magnetization squared/site²) for diagnostics.
Sourcepub fn measure_cached<S: Spin>(
&mut self,
lattice: &Lattice,
spins: &[S],
couplings: &[S::Value],
occupied: &[bool],
temperature: usize,
cached: CachedTotals,
) -> [f64; 2]
pub fn measure_cached<S: Spin>( &mut self, lattice: &Lattice, spins: &[S], couplings: &[S::Value], occupied: &[bool], temperature: usize, cached: CachedTotals, ) -> [f64; 2]
Like Self::measure, but takes energy and magnetization from cached
instead of repeating the bond pass. One-component collectors only; XY
helicity moments need the bond pass, so two-component collectors ignore it.
pub fn end_sweep(&mut self, n_replicas: usize)
Sourcepub fn finish(self) -> PhysicsResult
pub fn finish(self) -> PhysicsResult
Moments are NaN when no sweep was measured.
Auto Trait Implementations§
impl Forget for PhysicsCollector
impl Freeze for PhysicsCollector
impl RefUnwindSafe for PhysicsCollector
impl Send for PhysicsCollector
impl Sync for PhysicsCollector
impl Unpin for PhysicsCollector
impl UnsafeUnpin for PhysicsCollector
impl UnwindSafe for PhysicsCollector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more