netket.utils.group.PointGroup#
- class netket.utils.group.PointGroup[source]#
Bases:
FiniteGroup
Collection of point group symmetries acting on n-dimensional vectors.
Group elements need not all be of type
netket.utils.group.PGSymmetry
, only act on such vectors when called. Currently, however, onlyIdentity
andPGSymmetry
have canonical forms implemented.The class can contain elements that are distinct as objects (e.g.,
Identity()
andRotation(0)
) but have identical action. Those can be removed by callingremove_duplicates
.- Inheritance
- Attributes
- character_table_by_class#
Calculates the character table using Burnside’s algorithm.
Each row of the output lists the characters of one irrep in the order the conjugacy classes are listed in
conjugacy_classes
.Assumes that
Identity() == self[0]
, if not, the sign of some characters may be flipped. The irreps are sorted by dimension.
- conjugacy_classes#
The conjugacy classes of the group.
- Returns:
The three arrays
classes: a boolean array, each row indicating the elements that belong to one conjugacy class
representatives: the lowest-indexed member of each conjugacy class
inverse: the conjugacy class index of every group element
- conjugacy_table#
The conjugacy table of the group.
Assuming the definitions
g = self[idx_g] h = self[idx_h]
self[self.conjugacy_table[idx_g,idx_h]]
corresponds to \(h^{-1}gh\).
- inverse#
Indices of the inverse of each element.
Assuming the definitions
g = self[idx_g] h = self[self.inverse[idx_g]]
gh = product(g, h)
is equivalent toIdentity()
- is_symmorphic#
True
if the point group is symmorphic, i.e., if every group element leaves the origin invariant.
- product_table#
A table of indices corresponding to \(g^{-1} h\) over the group.
Assuming the definitions
g = self[idx_g] h = self[idx_h] idx_u = self.product_table[idx_g, idx_h]
self[idx_u]
corresponds to \(u = g^{-1} h\) .
- shape#
Tuple (<# of group elements>, <ndim>, <ndim>). Equivalent to
self.to_array().shape
.
- Methods
-
- change_origin(origin)[source]#
Returns a new PointGroup, out, such that all elements of out describe pure point-group transformations around origin and out[i] has the same transformation matrix as self[i].
- Return type:
- Parameters:
- character_table(multiplier=None)[source]#
Calculates the character table using Burnside’s algorithm.
- Parameters:
multiplier (
Union
[ndarray
,Array
,None
]) – (optional) Schur multiplier- Return type:
- Returns:
a matrix of all linear irrep characters (if
multiplier is None
) or projective irrep characters with the givenmultiplier
, sorted by dimension.Each row of lists the characters of all group elements for one irrep, i.e.
self.character_table()[i,g]
gives \(\chi_i(g)\).
It is assumed that
Identity() == self[0]
. If not, the sign of some characters may be flipped and the sorting by dimension will be wrong.
- character_table_readable(multiplier=None, full=False)[source]#
Returns a conventional rendering of the character table.
- Parameters:
- Return type:
- Returns:
A tuple containing a list of strings and an array
classes
: a text description of a representative of each conjugacy class (or each group element) as a listcharacters
: a matrix, each row of which lists the characters of one irrep
- check_multiplier(multiplier, rtol=1e-08, atol=0)[source]#
Checks the associativity constraint of Schur multipliers.
\[\alpha(x, y) \alpha(xy, z) = \alpha(x, yz) \alpha(y, z).\]- Parameters:
- Return type:
- Returns:
whether
multiplier
is a valid Schur multiplier up to the given tolerance- Raises:
ValueError – if the shape of multiplier does not match the size of the group
- projective_characters_by_class(multiplier)[source]#
Calculates the character table of projective representations with a given Schur multiplier α using a modified Burnside algorithm.
- Parameters:
multiplier (
Union
[ndarray
,Array
,None
]) – the unitary Schur multiplier. If unspecified, computes linear representation characters.- Return type:
- Returns:
characters_by_class
a 2D array, each row containing the characters of a representative element of each conjugacy class in one projective irrep with the given multiplier.
class_factors
a 1D array listing the “class factors” of each element of the group. The character of each element is the product of the character of the class representative with this class factor. (Only returned if
multiplier
is notNone
.)
Note: the algorithm and the definitions above are explained in more detail in https://arxiv.org/abs/2505.14790.
- remove_duplicates(*, return_inverse=False)[source]#
Returns a new
PointGroup
with duplicate elements (that is, elements which represent identical transformations) removed.- Parameters:
return_inverse – If True, also return indices to reconstruct the original group from the result.
- Return type:
- Returns:
The point group with duplicate elements removed. If
return_inverse==True
, then it also returns the list of indices needed to reconstruct the original group from the result.
- rotation_group()[source]#
Returns a new PointGroup that represents the subgroup of rotations (i.e. symmetries where the determinant of the transformation matrix is +1) in self
- Return type:
- to_array()[source]#
Convert the abstract group operations to an array of transformation matrices
For symmorphic groups, self.to_array()[i] contains the transformation matrix of the i`th group element. For nonsymmorphic groups, `self.to_array()[i] is a (d+1)Ă—(d+1) block matrix of the form [[W,w],[0,1]]: multiplying these matrices is equivalent to multiplying the symmetry operations.