How the spin is positioned in the Smatrix?
Dear all, I am trying square lattice with spinorbit coupling and Zeeman splititng just like the example of Tutorial 2.3.1. Now I want to get the spindependent 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 xdirection sys[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections 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 xdirection lead[kwant.builder.HoppingKind((1, 0), lat, lat)] = \ t * sigma_0  1j * alpha * sigma_y # hoppings in ydirections 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))
Hi Qingtian,
I suggest to put spinup and spindown on separate lattices, like in http://kwantproject.org/doc/1.0/tutorial/tutorial5#latticedescriptionusin... This will split each lead into a spinup and a spindown lead and you can easily calculate transmission between them.
Best, Christoph
PS
Another, more general but also way more advanced solution would be to get the wave functions of the lead modes, and project the spin current operator on them. (Note that the object returned by kwant.smatrix contains the wave functions of the modes: http://kwantproject.org/doc/1.0/reference/generated/kwant.solvers.common.SM...)
Dear Christoph， Thanks, that is very helpful. Best, Qingtian
20140306 22:50 GMT+08:00 christoph.groth@cea.fr:
Hi Qingtian,
I suggest to put spinup and spindown on separate lattices, like in
http://kwantproject.org/doc/1.0/tutorial/tutorial5#latticedescriptionusin... This will split each lead into a spinup and a spindown lead and you can easily calculate transmission between them.
Best, Christoph
PS
Another, more general but also way more advanced solution would be to get the wave functions of the lead modes, and project the spin current operator on them. (Note that the object returned by kwant.smatrix contains the wave functions of the modes:
http://kwantproject.org/doc/1.0/reference/generated/kwant.solvers.common.SM... )
participants (3)

christoph.groth＠cea.fr

diegobruno244＠gmail.com

Qingtian Zhang