Hi Tómas,

that's what I wanted, thanks a lot!

Tibor

From: Tómas Örn Rosdahl [torosdahl@gmail.com]
Sent: Friday, December 08, 2017 5:18 PM
To: Tibor Sekera
Cc: kwant-discuss@kwant-project.org
Subject: Re: [Kwant] conservation law in the case of a spinfull Nambu basis

Hi Tibor,

The number of projectors is the same as the number of distinct eigenvalues in the specified conservation law. Note that the eigenvalues themselves are not important, only the order in which they appear and whether they are distinct or not. In your case, you could set conservation_law = np.diag([-2, -1, 1, 2]) to get projectors onto e_up, e_down, h_up and h_down, respectively, using lead.discrete_symmetry().projectors.To get subblocks of the scattering matrix between conservation law values, you can use the submatrix(lead_out, lead_in) method of kwant.solvers.common.SMatrix, where lead_in and lead_out can be tuples of (lead index, projector index).

Best,
Tómas

On Fri, Dec 8, 2017 at 4:02 PM, Tibor Sekera <tibor.sekera@unibas.ch> wrote:
Dear all,

as is explained in
https://kwant-project.org/doc/dev/tutorial/superconductors
the conservation law argument in Builder (e.g. a lead) is

conservation_law=-tau_z

with eigenvalues -1 and 1 yields scattering states of electron and hole type, respectively.
This leads to a block form of the scattering matrix. One can also get the electron and hole projectors as

(projector_e, projector_h) = lead.discrete_symmetry().projectors

In presence of spin (described by sigma matrices) and a magnetic field (giving rise to a Zeeman term) we could
have a conservation law of the following form

conservation_law=np.kron(-tau_z,-sigma_z)

where the Hamiltonian is written in the Nambu basis (e up, e down, h up, -h down). Eigenvalues of this conservation law
are now 1,-1,1,-1, which are degenerate.

Question 1: How can one resolve the four-by-four block structure of the scattering matrix in the electron-hole ⊗ spin up-down space?

Question 2: How can one get the four projectors? I am looking for something like:
                    (projector_e_up, projector_e_down, projector_h_up, projector_h_down) = lead.discrete_symmetry().projectors