Spin polarized transport calculation
Dear Kwant users and developers
I have two questions related to the spin calculation using kwant.
1. I'm wondering if we can do spinpolarized transport in kwant? For example, can we can get the separate Conductance Vs Energy diagram for spin up and spin down terms.
I'm thinking one way of doing this is to set up the Rashba Hamiltonian as a whole. And then manually extract the spin up and spin down hamiltonian and do the transport calculation separately. But this will eliminate some extra terms that I don't know whether this is correct anymore. Any suggestions?
2. How can we set up the spin polarization for a particular site? For example, in some of the topological insulator, can we set up spin polarization on the edge as up and the other side of the edge as down, and then do the transport? Or this question is completely wrong?
Thanks for advance.
Sincerely, Liming
Hi, this has been asked several times on the mailing list, see these threads:
http://thread.gmane.org/gmane.comp.science.kwant.user/77 http://thread.gmane.org/gmane.comp.science.kwant.user/6 http://kwantdiscuss.kwantproject.narkive.com/96MScaQw/spincurrentsusing...
Please make an effort to search the mailing list *before* you post to see if the question has been answered before.
In addition to the above threads there is currently an enhancement proposal (that is not yet merged into the kwant mainline yet) to allow one to specify conservation laws in the leads. For your case of spin this will mean that the modes of the system will have welldefined spin projections and you will be able to calculate transmissions between spin up/down subblocks of the scattering matrix directly. See https://gitlab.kwantproject.org/kwant/kwant/merge_requests/15 for details.
Happy Kwanting,
Joe
On 13 April 2016 at 09:35, L.M J heysuperming@gmail.com wrote:
Dear Kwant users and developers
I have two questions related to the spin calculation using kwant.
 I'm wondering if we can do spinpolarized transport in kwant? For
example, can we can get the separate Conductance Vs Energy diagram for spin up and spin down terms.
I'm thinking one way of doing this is to set up the Rashba Hamiltonian as a whole. And then manually extract the spin up and spin down hamiltonian and do the transport calculation separately. But this will eliminate some extra terms that I don't know whether this is correct anymore. Any suggestions?
 How can we set up the spin polarization for a particular site? For
example, in some of the topological insulator, can we set up spin polarization on the edge as up and the other side of the edge as down, and then do the transport? Or this question is completely wrong?
Thanks for advance.
Sincerely, Liming
Hi, part of links are broken. I also want to compute separately conductance upup, downdown, updown and downup. I read the threads where up, but I still not sure if i implemented in code correctly with these informations.
In my code i use rashba interaction (in code):  def rashba(xi, yi, xj, yj, alpha, t): #d_ij = sitej.pos  sitei.pos x_ij = xj  xi y_ij = yj  yi rashb = 1j * alpha * (sigma_x * y_ij  sigma_y * x_ij) return (rashb  t * sigma_0)
 i use norbs=1, because is only electrons And in conductances computations i've implemented (in code): 
smat = kwant.smatrix(syst, energy)
t = np.matrix(smat.submatrix(1, 0)) #trasmission block from Smatrix
tt_mat = np.matmul(t, t.getH()) # t*t_dagger matrix
tt = np.trace(np.matmul(t, t.getH())) #trace of t*t_dagger = total transmission counts (up/down)
#getting upup Transmission, downdown and downup #upup t*t_dagger block t11 = np.trace(np.matrix([[tt_mat[i,j] for j in range(int(len(tt_mat)/2))] for i in range(int(len(tt_mat)/2))])) #downdown t*t_dagger block t22 = np.trace(np.matrix([[tt_mat[i + int(len(tt_mat)/2), j + int(len(tt_mat)/2)] for j in range(int(len(tt_mat)/2))] for i in range(int(len(tt_mat)/2))])) #downup t*t_dagger block t21 = np.trace(np.matrix([[tt_mat[i + int(len(tt_mat)/2), j] for j in range(int(len(tt_mat)/2))] for i in range(int(len(tt_mat)/2))]))

It is completely incorrect compute using these form? I've tryed by smat.transmission((1,0), (0,0)) structure but i got error, and decide to try these aproach above. by information the i got using smat.transmission((1,0), (0,0)) structure:  return self.out_block_coords(lead_out), self.in_block_coords(lead_in) File "C:\Users\Diego\AppData\Roaming\Python\Python39\sitepackages\kwant\solvers\common.py", line 854, in in_block_coords self.in_block_offsets[lead_ind][block_ind + 1]) IndexError: index 2 is out of bounds for axis 0 with size 2 
Thanks in advance!
I figure out what is cause my error! In fact, is in using norbs = 1, the correct form is norbs = 2: one orbital to spin up and other to spin down and also in lead construction where is to use conservation_law=sigma_z
with these fixs my code is working now!
In this thread i explain better (and with code exemples) how these fixs works: https://mail.python.org/archives/list/kwantdiscuss@python.org/thread/YYOG27...
participants (3)

diegobruno244＠gmail.com

Joseph Weston

L.M J