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()

Reply via email to