class kwant.physics.DiscreteSymmetry(projectors=None, time_reversal=None, particle_hole=None, chiral=None)[source]#

Bases: object

A collection of discrete symmetries and conservation laws.

  • projectors (iterable of rectangular or square sparse matrices) – Projectors that block-diagonalize the Hamiltonian.

  • time_reversal (square sparse matrix) – The unitary part of the time-reversal symmetry operator.

  • particle_hole (square sparse matrix) – The unitary part of the particle-hole symmetry operator.

  • chiral (square sparse matrix) – The chiral symmetry operator.


When computing scattering modes, the representation of the modes is chosen to reflect declared discrete symmetries and conservation laws.

projectors block diagonalize the Hamiltonian, and modes are computed separately in each block. The ordering of blocks is the same as of projectors. If conservation_law is declared in Builder, projectors is computed as the projectors onto its orthogonal eigensubspaces. The projectors are stored in the order of ascending eigenvalues of conservation_law.

Symmetrization using discrete symmetries varies depending on whether a conservation law/projectors are declared. Consider the case with no conservation law declared. With time_reversal declared, the outgoing modes are chosen as the time-reversed partners of the incoming modes, i.e. \(\psi_{out}(-k) = T \psi_{in}(k)\) with k the momentum. chiral also relates incoming and outgoing modes, such that \(\psi_{out}(k) = C \psi_{in}(k)\). particle_hole gives symmetric incoming and outgoing modes separately, such that \(\psi_{in/out}(-k) = P \psi_{in/out}(k)\), except when k=-k, at k = 0 or \(\pi\). In this case, each mode is chosen as an eigenstate \(P \psi = \psi\) if \(P^2=1\). If \(P^2=-1\), we symmetrize the modes by generating pairs of orthogonal modes \(\psi\) and \(P\psi\). Because chiral and particle_hole flip the sign of energy, they only apply at zero energy.

Discrete symmetries can be combined with a conservation law if they leave each block invariant or transform it to another block. With S a discrete symmetry and \(P_i\) and \(P_j\) projectors onto blocks i and j of the Hamiltonian, \(S_{ji} = P_j^+ S P_i\) is the symmetry projection that maps from block i to block j. \(S_{ji} = P_j^+ S P_i\) must for each j be nonzero for exactly one i. If S leaves block i invariant, the modes within block i are symmetrized using the nonzero projection \(S_{ii}\), like in the case without a conservation law. If S transforms between blocks i and j, the modes of the block with the larger index are obtained by transforming the modes of the block with the lower index. Thus, with \(\psi_i\) and \(\psi_j\) the modes of blocks i and j, we have \(\psi_j = S_{ji} \psi_i\).



Check if a matrix satisfies the discrete symmetries.


matrix (sparse or dense matrix) – If rectangular, it is padded by zeros to be square.


broken_symmetries – List of strings, the names of symmetries broken by the matrix: any combination of “Conservation law”, “Time reversal”, “Particle-hole”, “Chiral”. If no symmetries are broken, returns an empty list.

Return type: