How the spin is positioned in the Smatrix?
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))
Hi Qingtian, I suggest to put spin-up and spin-down on separate lattices, like in http://kwant-project.org/doc/1.0/tutorial/tutorial5#lattice-description-usin... This will split each lead into a spin-up and a spin-down 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://kwant-project.org/doc/1.0/reference/generated/kwant.solvers.common.SM...)
Dear Christoph, Thanks, that is very helpful. Best, Qingtian 2014-03-06 22:50 GMT+08:00 <christoph.groth@cea.fr>:
Hi Qingtian,
I suggest to put spin-up and spin-down on separate lattices, like in
http://kwant-project.org/doc/1.0/tutorial/tutorial5#lattice-description-usin... This will split each lead into a spin-up and a spin-down 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://kwant-project.org/doc/1.0/reference/generated/kwant.solvers.common.SM... )
participants (3)
-
christoph.groth@cea.fr
-
diegobruno244@gmail.com
-
Qingtian Zhang