Dear all,
I am trying square lattice with spin-orbit coupling and Zeeman splititng
just like the example of Tutorial 2.3.1. Now I want to get the
spin-dependent conductance：Guu,Gud,Gdu,and Gdd, where "u" indicates up
spin, d indicates down spin. We can have the scattering matrix through
Smatrix=kwant.smatrix(sys, energy), but how the spin is positioned in the
scattering matrix? I have checked some simple cases, it seems the Smatrix
is organized like this:
| r t |
S= | t' r' |
but how the spin is included?
Thanks in advance.
Qingtiian Zhang
The code is:
import kwant
from matplotlib import pyplot
from numpy import matrix
import tinyarray
sigma_0 = tinyarray.array([[1, 0], [0, 1]])
sigma_x = tinyarray.array([[0, 1], [1, 0]])
sigma_y = tinyarray.array([[0, -1j], [1j, 0]])
sigma_z = tinyarray.array([[1, 0], [0, -1]])
sys=kwant.Builder()
lat=kwant.lattice.square()
a=1
t=1.0
alpha=0.5
e_z=0.08
W=2
L=2
sys[(lat(x, y) for x in range(L) for y in range(W))] = \
4 * t * sigma_0 + e_z * sigma_z
# hoppings in x-direction
sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \
-t * sigma_0 - 1j * alpha * sigma_y
# hoppings in y-directions
sys[kwant.builder.HoppingKind((0, 1), lat, lat)] = \
-t * sigma_0 + 1j * alpha * sigma_x
#### Define the left lead. ####
lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))
lead[(lat(0, j) for j in xrange(W))] = 4 * t * sigma_0 + e_z * sigma_z
# hoppings in x-direction
lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = \
-t * sigma_0 - 1j * alpha * sigma_y
# hoppings in y-directions
lead[kwant.builder.HoppingKind((0, 1), lat, lat)] = \
-t * sigma_0 + 1j * alpha * sigma_x
#### Attach the leads and return the finalized system. ####
sys.attach_lead(lead)
sys.attach_lead(lead.reversed())
kwant.plot(sys)
sys=sys.finalized()
print "Hamiltonian="
print sys.hamiltonian_submatrix()
Smatrix=kwant.smatrix(sys, energy=3.)
print "The scattering matrix="
print matrix.round((Smatrix.data),2)
print "T=",(Smatrix.transmission(1, 0))