Skip to main content

SymmetryReducer

Struct SymmetryReducer 

Source
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>

Source

pub fn new() -> Self

Create a reducer with no generators and an empty shared orbit cache.

Source

pub fn with_map<M>(self, map: M, sector: i32) -> Self
where 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.

Source

pub fn generators(&self) -> usize

Return the number of configured finite generators.

Source

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.

Source

pub fn clear_cache(&self)

Discard every cached orbit trace shared by clones of this reducer.

Source

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>
where State: Copy + Eq + Hash + Ord,

Source

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.

Source

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.

Source

pub fn orbit_with_states( &self, state: State, ) -> Result<(SymmetryOrbit<State>, Vec<State>)>

Source

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.

Source

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>

Source§

fn clone(&self) -> SymmetryReducer<State>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<State> Debug for SymmetryReducer<State>

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<State> Default for SymmetryReducer<State>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<State> Freeze for SymmetryReducer<State>

§

impl<State> !RefUnwindSafe for SymmetryReducer<State>

§

impl<State> Send for SymmetryReducer<State>
where State: Send + Sync,

§

impl<State> Sync for SymmetryReducer<State>
where State: Send + Sync,

§

impl<State> Unpin for SymmetryReducer<State>

§

impl<State> UnsafeUnpin for SymmetryReducer<State>

§

impl<State> !UnwindSafe for SymmetryReducer<State>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> ByRef<T> for T

§

fn by_ref(&self) -> &T

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

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

Checks if self is actually part of its subset T (and can be converted to it).
§

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

The inclusion map: converts self to the equivalent element of its superset.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T, U> Imply<T> for U
where T: ?Sized, U: ?Sized,