Dear all,
Use Kwant to build a graphene nanoribbon and calculate its conductivity. The
transition energy of the central device area is required to be consistent with
the internal transition energy of the conductor, while the coupling energy of
the edge of the device area and the connection of the conductor is half of the
internal transition energy. But the result of my code is not satisfactory, how
can I modify it? I will attach my code below for reference.
Any suggestions or insights would be greatly appreciated.
Best regards,
Rease
------------------------------------------------------------------------------
import kwant
import numpy as np
from matplotlib import pyplot
from math import sqrt
sigma_0 = np.array([[1, 0], [0, 1]])
sigma_x = np.array([[0, 1], [1, 0]])
sigma_y = np.array([[0, -1j], [1j, 0]])
sigma_z = np.array([[1, 0], [0, -1]])
lat = kwant.lattice.general([(1,0),(0,sqrt(3))], # 基矢
[(0, 0), (0, 1
/(sqrt(3))),(0.5,sqrt(3)/2),(0.5,5/(2*sqrt(3)))], # 原子位置:坐标
norbs=2)
a, b, a1, b1 = lat.sublattices
def make_system(t, t_lead):
syst = kwant.Builder()
def square(pos):
x, y = pos
return 0 <= x < 10 and -0.5 <= y < 4.5
syst[lat.shape(square, (0, 0))] = 2 * t * sigma_0
syst[lat.neighbors()] = -t * sigma_0
syst[b1(-1,-1)] = 2 * t * sigma_0
lead = kwant.Builder(kwant.TranslationalSymmetry(lat.vec((1,0))),
conservation_law=-sigma_z)
lead[lat.shape(square, (0, 0))] = 2 * t * sigma_0
lead[lat.neighbors()] = -t * sigma_0
syst.attach_lead(lead)
syst.attach_lead(lead.reversed())
for y in range(3):
syst[(a(0, y), b1(-1, y-1))] = -t_lead * sigma_0
syst[(b(0, y), a1(-1, y))] = -t_lead * sigma_0
return syst
syst = make_system(t=2.7, t_lead=1.0).finalized()
kwant.plot(syst)
# 导线
energies=[0.01 * i for i in range(500)]
Guu, Gdd, Gud, Gdu = [], [], [], []
for energy in energies:
smatrix = kwant.smatrix(syst, energy)
Guu.append(smatrix.transmission((1, 0), (0, 0)))
Gdd.append(smatrix.transmission((1, 1), (0, 1)))
Gud.append(smatrix.transmission((1, 1), (0, 0)))
Gdu.append(smatrix.transmission((1, 0), (0, 1)))
pyplot.plot(energies, Guu, color='red')
pyplot.xlabel("energy [t]")
pyplot.ylabel("conductance [e^2/h]")
pyplot.show()