# netket.utils.group.PointGroup#

class netket.utils.group.PointGroup[source]#

Collection of point group symmetries acting on n-dimensional vectors.

Group elements need not all be of type netket.utils.symmetry.PGSymmetry, only act on such vectors when called. Currently, however, only Identity and PGSymmetry have canonical forms implemented.

The class can contain elements that are distinct as objects (e.g., Identity() and Rotation(0)) but have identical action. Those can be removed by calling remove_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 self.conjugacy_classes.

Assumes that Identity() == self[0], if not, the sign of some characters may be flipped. The irreps are sorted by dimension.

Return type

Union[ndarray, DeviceArray, Tracer]

conjugacy_classes#

The conjugacy classes of the group.

Return type

Tuple[Union[ndarray, DeviceArray, Tracer], Union[ndarray, DeviceArray, Tracer], Union[ndarray, DeviceArray, Tracer]]

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 this Permutation 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$$.

Return type

Union[ndarray, DeviceArray, Tracer]

inverse#
Return type

Union[ndarray, DeviceArray, Tracer]

is_symmorphic#
Return type

bool

product_table#
Return type

Union[ndarray, DeviceArray, Tracer]

shape#

Tuple (<# of group elements>, <ndim>, <ndim>). Equivalent to self.to_array().shape.

Return type
unit_cell: Optional[Union[numpy.ndarray, jaxlib.xla_extension.DeviceArray, jax.core.Tracer]] = None#

Lattice vectors of the unit cell on which the point group acts. It is used to match non-symmorphic symmetries modulo lattice translations.

ndim: int#

Dimensionality of point group operations.

elems: List[Element]#
Methods
__call__(initial)#

Apply all group elements to all entries of initial along the last axis.

affine_matrix(x)[source]#
Return type

Union[ndarray, DeviceArray, Tracer]

Parameters

x (netket.utils.group._semigroup.Element) –

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

PointGroup

Parameters

origin (Union[numpy.ndarray, jaxlib.xla_extension.DeviceArray, jax.core.Tracer]) –

character_table()#

Calculates the character table using Burnside’s algorithm.

Each row of the output lists the characters of all group elements for one irrep, i.e. self.character_table()[i,g] gives $$\chi_i(g)$$.

Assumes that Identity() == self[0], if not, the sign of some characters may be flipped. The irreps are sorted by dimension.

Return type

Union[ndarray, DeviceArray, Tracer]

character_table_readable()#

Returns a conventional rendering of the character table.

Return type

Tuple[List[str], Union[ndarray, DeviceArray, Tracer]]

Returns

A tuple containing a list of strings and an array

• classes: a text description of a representative of each conjugacy class as a list

• characters: a matrix, each row of which lists the characters of one irrep

irrep_matrices()#

Returns matrices that realise all irreps of the group.

Return type

List[Union[ndarray, DeviceArray, Tracer]]

Returns

A list of 3D arrays such that self.irrep_matrices()[i][g] contains the representation of self[g] consistent with the characters in self.character_table()[i].

matrices()[source]#
Return type

Union[ndarray, DeviceArray, Tracer]

matrix(x)[source]#
Return type

Union[ndarray, DeviceArray, Tracer]

Parameters

x (netket.utils.group._semigroup.Element) –

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

PointGroup

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.

replace(**updates)#

Returns a new object replacing the specified fields with new values.

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

PointGroup

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 ith 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.

Return type

Union[ndarray, DeviceArray, Tracer]

translation(x)[source]#
Return type

Union[ndarray, DeviceArray, Tracer]

Parameters

x (netket.utils.group._semigroup.Element) –

translations()[source]#
Return type

Union[ndarray, DeviceArray, Tracer]