kwant.physics.modes(h_cell, h_hop, tol=1000000.0, stabilization=None, *, discrete_symmetry=None, projectors=None, time_reversal=None, particle_hole=None, chiral=None)[source]#

Compute the eigendecomposition of a translation operator of a lead.

  • h_cell (numpy array, real or complex, shape (N,N) The unit cell) – Hamiltonian of the lead unit cell.

  • h_hop (numpy array, real or complex, shape (N,M)) – The hopping matrix from a lead cell to the one on which self-energy has to be calculated (and any other hopping in the same direction).

  • tol (float) – Numbers and differences are considered zero when they are smaller than tol times the machine precision.

  • stabilization (sequence of 2 booleans or None) – Which steps of the eigenvalue prolem stabilization to perform. If the value is None, then Kwant chooses the fastest (and least stable) algorithm that is expected to be sufficient. For any other value, Kwant forms the eigenvalue problem in the basis of the hopping singular values. The first element set to True forces Kwant to add an anti-Hermitian term to the cell Hamiltonian before inverting. If it is set to False, the extra term will only be added if the cell Hamiltonian isn’t invertible. The second element set to True forces Kwant to solve a generalized eigenvalue problem, and not to reduce it to the regular one. If it is False, reduction to a regular problem is performed if possible. Selecting the stabilization manually is mostly necessary for testing purposes.

  • discrete_symmetry (DiscreteSymmetry or None) – The discrete symmetry to use when performing the computation.

  • projectors (an iterable of sparse or dense matrices) – Projectors that block diagonalize the Hamiltonian in accordance with a conservation law.

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

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

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


  • propagating (PropagatingModes) – Contains the array of the wave functions of propagating modes, their momenta, and their velocities. It can be used to identify the gauge in which the scattering problem is solved.

  • stabilized (StabilizedModes) – A basis of propagating and evanescent modes used by the solvers.


The sorting of the propagating modes is fully described in the documentation for PropagatingModes. In simple cases where bands do not cross, this ordering corresponds to “lowest modes first”. In general, however, it is necessary to examine the band structure – something this function is not doing by design.

Propagating modes with the same momentum are orthogonalized. All the propagating modes are normalized by current.

projectors, time_reversal, particle_hole, and chiral affect the basis in which the scattering modes are expressed - see DiscreteSymmetry for details.

This function uses the most stable and efficient algorithm for calculating the mode decomposition that the Kwant authors are aware about. Its details are to be published.