pub struct SymmetryReducer<State> { /* private fields */ }Expand description
Finite generators and sector phases that extend to a one-dimensional character of the generated group.
Implementations§
Source§impl<State> SymmetryReducer<State>
impl<State> SymmetryReducer<State>
Sourcepub fn with_map<M>(self, map: M, sector: i32) -> Selfwhere
M: SymmetryMap<State> + 'static,
pub fn with_map<M>(self, map: M, sector: i32) -> Selfwhere
M: SymmetryMap<State> + 'static,
Add a finite symmetry generator and its one-dimensional character sector.
Adding a generator defines a different group action, so the returned reducer starts with a fresh cache. Clones made after construction share cached orbit traces.
Sourcepub fn generators(&self) -> usize
pub fn generators(&self) -> usize
Return the number of configured finite generators.
Sourcepub fn cached_orbits(&self) -> usize
pub fn cached_orbits(&self) -> usize
Return the number of canonical orbit traces currently cached.
This diagnostic is safe to call across cloned reducers. A poisoned cache reports zero rather than exposing lock internals.
Sourcepub fn clear_cache(&self)
pub fn clear_cache(&self)
Discard every cached orbit trace shared by clones of this reducer.
Sourcepub fn period_product(&self) -> Result<usize>
pub fn period_product(&self) -> Result<usize>
Product of declared generator periods.
This is not generally the order of a non-Abelian generated group. It is exposed because compatibility layers such as QuSpin define their historical normalization convention from this product.
Source§impl<State> SymmetryReducer<State>
impl<State> SymmetryReducer<State>
Sourcepub fn orbit_states(&self, state: State) -> Result<Vec<State>>
pub fn orbit_states(&self, state: State) -> Result<Vec<State>>
Enumerate the finite physical orbit of one state in canonical order.
This stays independent of any materialized basis. Deferred operator paths use it to test whether an output orbit intersects the seed constraint, including when the canonical representative itself lies outside that constraint.
Sourcepub fn orbit_with_states_and_ordering(
&self,
state: State,
ordering: RepresentativeOrdering,
) -> Result<(SymmetryOrbit<State>, Vec<State>)>
pub fn orbit_with_states_and_ordering( &self, state: State, ordering: RepresentativeOrdering, ) -> Result<(SymmetryOrbit<State>, Vec<State>)>
Reduce a state and return its physical orbit from one group traversal.
Consumers that need both results should prefer this method over
separate SymmetryReducer::orbit and
SymmetryReducer::orbit_states calls.
pub fn orbit_with_states( &self, state: State, ) -> Result<(SymmetryOrbit<State>, Vec<State>)>
Sourcepub fn orbit(&self, state: State) -> Result<SymmetryOrbit<State>>
pub fn orbit(&self, state: State) -> Result<SymmetryOrbit<State>>
Reduce one state using only the finite group action.
This query does not enumerate a parent Hilbert space or construct the reduced basis. Incompatible character requests still return the canonical orbit representative, but have no reduced-vector phase.
Sourcepub fn orbit_with_ordering(
&self,
state: State,
ordering: RepresentativeOrdering,
) -> Result<SymmetryOrbit<State>>
pub fn orbit_with_ordering( &self, state: State, ordering: RepresentativeOrdering, ) -> Result<SymmetryOrbit<State>>
Reduce one state using an explicit representative convention.
Trait Implementations§
Source§impl<State: Clone> Clone for SymmetryReducer<State>
impl<State: Clone> Clone for SymmetryReducer<State>
Source§fn clone(&self) -> SymmetryReducer<State>
fn clone(&self) -> SymmetryReducer<State>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<State> Debug for SymmetryReducer<State>
impl<State> Debug for SymmetryReducer<State>
Auto Trait Implementations§
impl<State> Freeze for SymmetryReducer<State>
impl<State> !RefUnwindSafe for SymmetryReducer<State>
impl<State> Send for SymmetryReducer<State>
impl<State> Sync for SymmetryReducer<State>
impl<State> Unpin for SymmetryReducer<State>
impl<State> UnsafeUnpin for SymmetryReducer<State>
impl<State> !UnwindSafe for SymmetryReducer<State>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
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
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.