Struct lattice_qcd_rs::simulation::monte_carlo::metropolis_hastings_sweep::MetropolisHastingsSweep
source · pub struct MetropolisHastingsSweep<Rng: Rng> { /* private fields */ }
Expand description
Metropolis Hastings method by doing a pass on all points
Example
use lattice_qcd_rs::error::ImplementationError;
use lattice_qcd_rs::simulation::{LatticeState, LatticeStateDefault, MetropolisHastingsSweep};
use rand::SeedableRng;
let rng = rand::rngs::StdRng::seed_from_u64(0); // change with your seed
let mut mh = MetropolisHastingsSweep::new(1, 0.1_f64, rng)
.ok_or(ImplementationError::OptionWithUnexpectedNone)?;
// Realistically you want more steps than 10
let mut state = LatticeStateDefault::<3>::new_cold(1_f64, 6_f64, 4)?;
for _ in 0..10 {
state = state.monte_carlo_step(&mut mh)?;
println!(
"mean probability of acceptance during last step {} and replaced {} links",
mh.prob_replace_mean(),
mh.number_replace_last()
);
// operation to track the progress or the evolution
}
// operation at the end of the simulation
Implementations§
source§impl<Rng: Rng> MetropolisHastingsSweep<Rng>
impl<Rng: Rng> MetropolisHastingsSweep<Rng>
sourcepub fn new(number_of_update: usize, spread: Real, rng: Rng) -> Option<Self>
pub fn new(number_of_update: usize, spread: Real, rng: Rng) -> Option<Self>
spread
should be between 0 and 1 both not included and number_of_update should be greater
than 0.
number_of_update
is the number of times a link matrix is randomly changed.
spread
is the spread factor for the random matrix change
( used in su3::random_su3_close_to_unity
).
sourcepub const fn prob_replace_mean(&self) -> Real
pub const fn prob_replace_mean(&self) -> Real
Get the mean of last probably of acceptance of the random change.
sourcepub const fn number_replace_last(&self) -> usize
pub const fn number_replace_last(&self) -> usize
Number of accepted change during last sweep
Trait Implementations§
source§impl<Rng: Rng> AsMut<Rng> for MetropolisHastingsSweep<Rng>
impl<Rng: Rng> AsMut<Rng> for MetropolisHastingsSweep<Rng>
source§impl<Rng: Rng> AsRef<Rng> for MetropolisHastingsSweep<Rng>
impl<Rng: Rng> AsRef<Rng> for MetropolisHastingsSweep<Rng>
source§impl<Rng: Clone + Rng> Clone for MetropolisHastingsSweep<Rng>
impl<Rng: Clone + Rng> Clone for MetropolisHastingsSweep<Rng>
source§fn clone(&self) -> MetropolisHastingsSweep<Rng>
fn clone(&self) -> MetropolisHastingsSweep<Rng>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'de, Rng> Deserialize<'de> for MetropolisHastingsSweep<Rng>where
Rng: Deserialize<'de> + Rng,
impl<'de, Rng> Deserialize<'de> for MetropolisHastingsSweep<Rng>where Rng: Deserialize<'de> + Rng,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<Rng, const D: usize> MonteCarlo<LatticeStateDefault<D>, D> for MetropolisHastingsSweep<Rng>where
Rng: Rng,
impl<Rng, const D: usize> MonteCarlo<LatticeStateDefault<D>, D> for MetropolisHastingsSweep<Rng>where Rng: Rng,
source§fn next_element(
&mut self,
state: LatticeStateDefault<D>
) -> Result<LatticeStateDefault<D>, Self::Error>
fn next_element( &mut self, state: LatticeStateDefault<D> ) -> Result<LatticeStateDefault<D>, Self::Error>
Do one Monte Carlo simulation step. Read more
source§impl<Rng: PartialEq + Rng> PartialEq<MetropolisHastingsSweep<Rng>> for MetropolisHastingsSweep<Rng>
impl<Rng: PartialEq + Rng> PartialEq<MetropolisHastingsSweep<Rng>> for MetropolisHastingsSweep<Rng>
source§fn eq(&self, other: &MetropolisHastingsSweep<Rng>) -> bool
fn eq(&self, other: &MetropolisHastingsSweep<Rng>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.impl<Rng: Rng> StructuralPartialEq for MetropolisHastingsSweep<Rng>
Auto Trait Implementations§
impl<Rng> RefUnwindSafe for MetropolisHastingsSweep<Rng>where Rng: RefUnwindSafe,
impl<Rng> Send for MetropolisHastingsSweep<Rng>where Rng: Send,
impl<Rng> Sync for MetropolisHastingsSweep<Rng>where Rng: Sync,
impl<Rng> Unpin for MetropolisHastingsSweep<Rng>where Rng: Unpin,
impl<Rng> UnwindSafe for MetropolisHastingsSweep<Rng>where Rng: UnwindSafe,
Blanket Implementations§
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self
to the equivalent element of its superset.