Struct lattice_qcd_rs::simulation::monte_carlo::McWrapper
source · pub struct McWrapper<MCD, State, Rng, const D: usize>where
MCD: MonteCarloDefault<State, D>,
State: LatticeState<D>,
Rng: Rng,{ /* private fields */ }
Expand description
A wrapper used to implement MonteCarlo
from a MonteCarloDefault
Example
use lattice_qcd_rs::error::ImplementationError;
use lattice_qcd_rs::simulation::{
LatticeState, LatticeStateDefault, McWrapper, MetropolisHastingsDiagnostic, MonteCarlo,
};
use rand::SeedableRng;
let rng = rand::rngs::StdRng::seed_from_u64(0); // change with your seed
let mh = MetropolisHastingsDiagnostic::new(1, 0.1_f64)
.ok_or(ImplementationError::OptionWithUnexpectedNone)?;
let mut wrapper = McWrapper::new(mh, rng);
// Realistically you want more steps than 10
let mut state = LatticeStateDefault::<3>::new_cold(1_f64, 6_f64, 4)?;
for _ in 0..100 {
state = state.monte_carlo_step(&mut wrapper)?;
println!(
"probability of acceptance during last step {}, does it accepted the change ? {}",
mh.prob_replace_last(),
mh.has_replace_last()
);
// or state.monte_carlo_step(&mut wrapper)?;
// operation to track the progress or the evolution
}
// operation at the end of the simulation
let (_, rng) = wrapper.deconstruct(); // get the rng back
Implementations§
source§impl<MCD, State, Rng, const D: usize> McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D>,
State: LatticeState<D>,
Rng: Rng,
impl<MCD, State, Rng, const D: usize> McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
sourcepub fn deconstruct(self) -> (MCD, Rng)
pub fn deconstruct(self) -> (MCD, Rng)
deconstruct the structure to get back the rng if necessary
sourcepub const fn mcd(&self) -> &MCD
pub const fn mcd(&self) -> &MCD
Get a reference to the MonteCarloDefault
inside the wrapper.
Trait Implementations§
source§impl<MCD, State, Rng, const D: usize> AsMut<Rng> for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D>,
State: LatticeState<D>,
Rng: Rng,
impl<MCD, State, Rng, const D: usize> AsMut<Rng> for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
source§impl<MCD, State, Rng, const D: usize> AsRef<Rng> for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D>,
State: LatticeState<D>,
Rng: Rng,
impl<MCD, State, Rng, const D: usize> AsRef<Rng> for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
source§impl<MCD, State, Rng, const D: usize> Clone for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Clone,
State: LatticeState<D> + Clone,
Rng: Rng + Clone,
impl<MCD, State, Rng, const D: usize> Clone for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Clone, State: LatticeState<D> + Clone, Rng: Rng + Clone,
source§impl<MCD, State, Rng, const D: usize> Debug for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Debug,
State: LatticeState<D> + Debug,
Rng: Rng + Debug,
impl<MCD, State, Rng, const D: usize> Debug for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Debug, State: LatticeState<D> + Debug, Rng: Rng + Debug,
source§impl<MCD, State, Rng, const D: usize> Default for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Default,
State: LatticeState<D>,
Rng: Rng + Default,
impl<MCD, State, Rng, const D: usize> Default for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Default, State: LatticeState<D>, Rng: Rng + Default,
source§impl<'de, MCD, State, Rng, const D: usize> Deserialize<'de> for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Deserialize<'de>,
State: LatticeState<D>,
Rng: Rng + Deserialize<'de>,
impl<'de, MCD, State, Rng, const D: usize> Deserialize<'de> for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Deserialize<'de>, State: LatticeState<D>, Rng: Rng + Deserialize<'de>,
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<MCD, State, Rng, const D: usize> Display for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Display,
State: LatticeState<D>,
Rng: Rng + Display,
impl<MCD, State, Rng, const D: usize> Display for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Display, State: LatticeState<D>, Rng: Rng + Display,
source§impl<MCD, State, Rng, const D: usize> Hash for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Hash,
State: LatticeState<D> + Hash,
Rng: Rng + Hash,
impl<MCD, State, Rng, const D: usize> Hash for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Hash, State: LatticeState<D> + Hash, Rng: Rng + Hash,
source§impl<T, State, Rng, const D: usize> MonteCarlo<State, D> for McWrapper<T, State, Rng, D>where
T: MonteCarloDefault<State, D>,
State: LatticeState<D>,
Rng: Rng,
impl<T, State, Rng, const D: usize> MonteCarlo<State, D> for McWrapper<T, State, Rng, D>where T: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
§type Error = <T as MonteCarloDefault<State, D>>::Error
type Error = <T as MonteCarloDefault<State, D>>::Error
Error returned while getting the next element.
source§impl<MCD, State, Rng, const D: usize> PartialEq<McWrapper<MCD, State, Rng, D>> for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + PartialEq,
State: LatticeState<D> + PartialEq,
Rng: Rng + PartialEq,
impl<MCD, State, Rng, const D: usize> PartialEq<McWrapper<MCD, State, Rng, D>> for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + PartialEq, State: LatticeState<D> + PartialEq, Rng: Rng + PartialEq,
source§impl<MCD, State, Rng, const D: usize> Serialize for McWrapper<MCD, State, Rng, D>where
MCD: MonteCarloDefault<State, D> + Serialize,
State: LatticeState<D>,
Rng: Rng + Serialize,
impl<MCD, State, Rng, const D: usize> Serialize for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Serialize, State: LatticeState<D>, Rng: Rng + Serialize,
impl<MCD, State, Rng, const D: usize> Eq for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D> + Eq, State: LatticeState<D> + Eq, Rng: Rng + Eq,
impl<MCD, State, Rng, const D: usize> StructuralEq for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
impl<MCD, State, Rng, const D: usize> StructuralPartialEq for McWrapper<MCD, State, Rng, D>where MCD: MonteCarloDefault<State, D>, State: LatticeState<D>, Rng: Rng,
Auto Trait Implementations§
impl<MCD, State, Rng, const D: usize> RefUnwindSafe for McWrapper<MCD, State, Rng, D>where MCD: RefUnwindSafe, Rng: RefUnwindSafe, State: RefUnwindSafe,
impl<MCD, State, Rng, const D: usize> Send for McWrapper<MCD, State, Rng, D>where MCD: Send, Rng: Send, State: Send,
impl<MCD, State, Rng, const D: usize> Sync for McWrapper<MCD, State, Rng, D>where MCD: Sync, Rng: Sync, State: Sync,
impl<MCD, State, Rng, const D: usize> Unpin for McWrapper<MCD, State, Rng, D>where MCD: Unpin, Rng: Unpin, State: Unpin,
impl<MCD, State, Rng, const D: usize> UnwindSafe for McWrapper<MCD, State, Rng, D>where MCD: UnwindSafe, Rng: UnwindSafe, State: 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.