quantax.symmetry.Translation#

class quantax.symmetry.Translation#

Bases: Symmetry

Translation symmetry.

__init__(vectors: Sequence[int] | NDArray[integer], sector: int | Sequence[int] = 0)#

Translation symmetry.

Parameters:
  • vectors – The translation vectors, in the unit of lattice basis vectors.

  • sector – The symmetry sector.

__matmul__(other: Symmetry) → Symmetry#

Generate superposition of two symmetries.

from quantax.sites import Square
from quantax.symmetry import Translation

lattice = Square(4)
trans1 = Translation((1, 0))  # translation symmetry in x axis
trans2 = Translation((0, 1))  # translation symmetry in y axis
trans2D = trans1 @ trans2  # 2D translation symmetry

Warning

Users are responsible to ensure the compatibility of different symmetries, especially if their generators don’t commute.

property vectors: ndarray#

The translation vectors.

get_sublattice_coord() → ndarray#

Get the coordinate of lattice sites in the sublattice.

property Nmodes: int#

The length of a configuration array, i.e. the number of local modes per sample. This is Nsites for spins or spinless fermions and 2 * Nsites for spinful fermions.

property Nparticles: int | tuple[int, int] | None#

The number of particles.

  • None: No particle conservation.

  • int: Conservation of total particle number.

  • Tuple[int, int]: Conservation of spin-up and spin-down particle numbers.

property Nsites: int#

The number of sites.

property Z2_inversion: int#

The Z2 inversion symmetry. It represents the spin flip in spin-1/2 systems, and the particle-hole symmetry in fermionic systems. The meaning of each number is

  • 1: Eigenvalue 1 after Z2 inversion

  • 0: No Z2 inversion symmetry

  • -1: Eigenvalue -1 after Z2 inversion

property basis#

The QuSpin basis corresponding to the symmetry.

basis_make() → None#

Make the QuSpin basis stored in the symmetry.

property character: Array#

Characters \(\chi\) of all group elements.

property double_occ: bool#

Whether the system allows double occupancy.

get_symm_spins(spins: Array) → Array#

Get all symmetrized bases \(s'=Ts\) generated by the symmetry permutations.

Parameters:

spins – Input spin or fermion configuration \(s\).

Note

This function is jittable.

property is_fermion: bool#

Whether the system is made of fermions.

property is_spinful: bool#

Whether the system is spinful.

property nsymm: int#

Number of elements in the symmetry group.

property particle_type: PARTICLE_TYPE#

The type of particle in the system. See PARTICLE_TYPE.

symmetrize(psi: NDArray | Array | LogArray | ScaleArray, spins: Array | None = None) → NDArray | Array | LogArray | ScaleArray#

Symmetrize the wavefunction as

\[\psi^{\mathrm{symm}}(s) = \frac{d}{|G|} \sum_g \mathrm{sign}(s, g) \chi_g \psi(T_g s),\]

where \(d\) is the dimension of the group representation, \(|G|\) is the number of elements in the symmetry group, and \(\mathrm{sign}(s, g)\) is the additional sign generated by the symmetry depending on the input Fock state (only for fermionic systems).

Parameters:
  • psi – Wavefunctions \(\psi(T_i s)\).

  • spins – Input spin or fermion configuration \(s\). This is only necessary in fermionic systems, where additional minus signs \(\mathrm{sign}(s, g)\) can be generated by the symmetry.

Returns:

The symmetrized wave function

Note

This function is jittable.