Hi
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?
We tried the program in the attachment, but the result was unsatisfactory.
Any help and guidance would be appreciated!
import kwant
import numpy as np
from matplotlib import pyplot
from tinyarray import array
# å®ä¹Pauliç©éµ
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)
# 计ç®ä»0å¯¼çº¿èªæåä¸å°1å¯¼çº¿èªæåä¸ççµå¯¼
data.append(smatrix.transmission((1, 1), (0, 0))) #
åè®¾èªæåä¸ååä¸çééåå«ä¸º0å1
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()