class kwant.physics.StabilizedModes(vecs, vecslmbdainv, nmodes, sqrt_hop=None)[source]

Stabilized eigendecomposition of the translation operator.

Due to the lack of Hermiticity of the translation operator, its eigendecomposition is frequently poorly conditioned. Solvers in Kwant use this stabilized decomposition of the propagating and evanescent modes in the leads. If the hopping between the unit cells of an infinite system is invertible, the translation eigenproblem is written in the basis psi_n, h_hop^+ * psi_(n+1), with h_hop the hopping between unit cells. If h_hop is not invertible, and has the singular value decomposition u s v^+, then the eigenproblem is written in the basis sqrt(s) v^+ psi_n, sqrt(s) u^+ psi_(n+1). In this basis we calculate the eigenvectors of the propagating modes, and the Schur vectors (an orthogonal basis) in the space of evanescent modes.

vecs and vecslmbdainv are the first and the second halves of the wave functions. The first nmodes are eigenmodes moving in the negative direction (hence they are incoming into the system in Kwant convention), the second nmodes are eigenmodes moving in the positive direction. The remaining modes are the Schur vectors of the modes evanescent in the positive direction. Propagating modes with the same eigenvalue are orthogonalized, and all the propagating modes are normalized to carry unit current. Finally the sqrt_hop attribute is v sqrt(s).

vecsnumpy array

Translation eigenvectors.

vecslmbdainvnumpy array

Translation eigenvectors divided by the corresponding eigenvalues.


Number of left-moving (or right-moving) modes.

sqrt_hopnumpy array or None

Part of the SVD of h_hop, or None if the latter is invertible.



Compute the self-energy generated by lead modes.

Sigmanumpy array, real or complex, shape (M,M)

The computed self-energy. Note that even if h_cell and h_hop are both real, Sigma will typically be complex. (More precisely, if there is a propagating mode, Sigma will definitely be complex.)

Previous topic


Next topic


This Page