Dear all, Using the Kwant package to calculate the spin-resolved conductance of a graphene nanoribbon, where the device region incorporates Rashba spin-orbit coupling (RSOC) in its Hamiltonian while the leads do not. The left lead is numbered 0 and the right lead is numbered 1. The goal is to obtain the conductance from spin-up electrons in the left lead to spin-down electrons in the right lead. How should the program be written? For reference and convenience, I attach the code I'm using at the end of this message, but the result was unsatisfactory. Any help and guidance would be appreciated!
Best regards, Rease ############################################################## import kwant import numpy as np from matplotlib import pyplot from tinyarray import array sigma_0 = array([[1, 0], [0, 1]]) sigma_x = array([[0, 1], [1, 0]]) sigma_y = array([[0, -1j], [1j, 0]]) sigma_z = array([[1, 0], [0, -1]]) graphene = kwant.lattice.general([(1, 0), (0.5, np.sqrt(3) / 2)], [(0, 0), (0, 1 / np.sqrt(3))],norbs=2) a, b = graphene.sublattices def make_system(W=10, L=30, t=1.0, alpha=0.1): syst = kwant.Builder() def circle(pos): x, y = pos return abs(x)<=L and abs(y)<=W syst[graphene.shape(circle, (0, 0))] = (4 * t * sigma_0 + alpha * sigma_y) syst[graphene.neighbors()] = -t * sigma_0 def lead_shape(pos): return abs(pos[1]) < W lead = kwant.Builder(kwant.TranslationalSymmetry((1, 0))) lead[graphene.shape(lead_shape, (0, 0))] = 4 * t * sigma_0 lead[graphene.neighbors()] = -t * sigma_0 syst.attach_lead(lead) syst.attach_lead(lead.reversed()) return syst def plot_conductance(syst, energies): data = [ ] for energy in energies: smatrix = kwant.smatrix(syst, energy) data.append(smatrix.transmission((1, 1), (0, 0))) pyplot.figure() pyplot.plot(energies, data) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() def main(): syst = make_system() kwant.plot(syst) syst = syst.finalized() plot_conductance(syst, energies=[0.01 * i for i in range(100)]) if __name__ == "__main__": main()