volumential.list1_symmetry#

Symmetry bookkeeping for the list 1 interaction gallery.

This module owns the description of the discrete symmetries a near-field interaction table may exploit (axis flips and axis swaps), and the reduction of a set of case vectors to the subset of symmetry representatives together with each representative’s invariant group.

class volumential.list1_symmetry.SymmetryOperationBase(index)[source]#

Bases: object

Base class for the symmetry operations a case vector may admit.

class volumential.list1_symmetry.Flip(iaxis: int)[source]#

Bases: SymmetryOperationBase

Flip the sign of an axis, spanning S_2^dim

class volumential.list1_symmetry.Swap(iaxis: int, jaxis: int)[source]#

Bases: SymmetryOperationBase

Swap two axes, spanning S_dim

class volumential.list1_symmetry.CaseVecReduction(vecs: list | None = None, sym_tags: list[SymmetryOperationBase] | None = None, do_reduction: bool = True)[source]#

Bases: object

Reduce a set of case vectors based on symmetry.

parse_symmetry_tags(tags: list[SymmetryOperationBase] | None) → tuple[ndarray, list[set[int]]][source]#

Split tags into a per-axis flippable mask and swappable axis groups.

tags of None means maximum symmetry: every axis is flippable and all axes form a single swappable group.

find_base_vecs() → tuple[list, list[int]][source]#

Return the symmetry representatives and their ids in the full list.

find_invariant_group(vec: Sequence[int]) → list[SymmetryOperationBase][source]#

For a given case vector, within the allowed symmetry tags, return a generating set of its invariant group as a list of SymmetryOperationBase objects.

reduce() → None[source]#

Compute the representatives and their invariant groups.

get_reduced_vecs() → list[source]#

Return the symmetry representatives.

get_reduced_vec_ids() → list[int][source]#

Return the indices of the representatives into the full vector list.

get_inter_box_reduction_ratio() → float[source]#

Return the fraction of case vectors that survive as representatives.

get_intra_box_reduction_ratio() → float[source]#

Return the mean fraction of entries needed within a representative box.

get_full_reduction_ratio() → float[source]#

Return the combined inter-box and intra-box reduction ratio.

get_reduced_invariant_groups() → list[list[SymmetryOperationBase]][source]#

Return the invariant group generators of each representative.