Hi Martin,
Your interpretation of the conservation law is correct, and so does
your implementation of it. However I see that you create the graphene
lattice as having 2 orbitals, whereas if you have spin and
particle-hole, you should have 4 orbitals instead.
That is also what the error message says.
I usually define all matrix-valued functions via np.kron, so that I
remember which Pauli matrix refers to which degree of freedom.
Best,
Anton
On Wed, 19 Aug 2020 at 14:03, Martin Fonnum Jakobsen
Hello,
I have recently started using KWANT. I hope this is the correct way to ask questions.
I’m interested in reproducing Fig. 4 in PRL 97, 067007 (2006) – Specular Andreev Reflection in Graphene. This has been done in KWANT in the PhD thesis of Tibor Sekera – “Quantum transport of fermions in honeycomb lattices and cold atomic systems”, chapter 4. The problem is similar to tutorial 2.6.
In my problem, I have a tight-binding Hamiltonian living on a hexagonal lattice, from which I can construct a discrete BdG equation (See attachment). In addition, to electron-hole degrees of freedom I’m also interested in including spin because later I will add magnetic fields and such.
I consider a normal metal lead attached to a superconducing scattering region with zero barrier at the interface. Since I have both electron-hole and spin degrees of freedom my BdG equation is 4x4. To account for electron-hole degrees of freedom I have specified that at each site there should be two orbitals. In the tutorial 2.6 it is emphasized that it is important to specify the correct conservation law in the N lead when we want to calculate the conductance. My question is how should the conservation law (and particle hole symmetry) in the normal-metal lead look like for my case?
I have tried the standard expression L_0 = kwant.Builder(sym,conservation_law=s_z) where s_z is the Pauli matrix [[1,0],[0,-1]]. In this case I obtain a dimension mismatch error.
I have also tried a generalized 4x4 matrix version of this
L_0 = kwant.Builder(sym,conservation_law=tinyarray.array([[1,0,0,0],[0,-1,0,0],[0,0,1,0],[0,0,0,-1]]))
Or
L_0 = kwant.Builder(sym,conservation_law=tinyarray.array([[1,0,0,0],[0,1,0,0],[0,0,-1,0],[0,0,0,-1]])).
In these cases I obtain the error “Single `onsite` matrix of shape (4, 4) provided but there are 2 orbitals per site in the system”.
I think my issue is that I do not fully understand what the Conservation law actually does. Initially I thought the conservation law was a matrix C such that C.H.C^-1 should return a block diagonal matrix, where the eigenvalues of C refers to each block. Is this not an accurate interpretation?
I have attached a PDF with the BdG equation, and my python code as a .py and .txt file. The content of the .py and .txt file are identical, which format do you prefer in the future?
I hope this is OK, and not too overwhelming.
I also tried to subscribe (with this e-mail) to the mailing list, but I’m not sure that it worked.
Yours sincerely,
Martin F Jakobsen