Hello everyone!

 

I want to solve a quantum transport question about the quantum spin Hall bar. The Hamiltonian of my system is

The tight-binding model can be written as follow ( is the lattice constant):

Onsite item:    ;       Hopping-x item:     ;       Hopping-y item:   

The matrix: 

My Question:

(1)     The first one is that I am not sure whether the tight-binding model presented above is right for the case of , such as , especially for the hopping –x and –y item.

(2)     In order to calculate the density distribution of electron and the conductance, the code presented below cannot exactly match the results in the paper [https://journals.aps.org/prb/abstract/10.1103/PhysRevB.83.081402]. For example the density of states calculated by Kwant near the edge is much thick compared with the paper results. The conductance also cannot give the same result, such as the conductance is 1.1e^2/h for my result but 2.0e^2/h for the paper at Fermi energy 10meV.

 

My kwant code is

import math

 

import numpy

from numpy import *

from matplotlib import pyplot

 

import kwant

import tinyarray

 

sigma_0 = tinyarray.array([[1, 0, 0, 0], [0, 1, 0 ,0], [0, 0, 1, 0], [0, 0, 0, 1]])

sigma_1 = tinyarray.array([[0, -1, 0, 0], [-1, 0, 0 ,0], [0, 0, 0, 1], [0, 0, 1, 0]])

sigma_2 = tinyarray.array([[1, 0, 0, 0], [0, -1, 0 ,0], [0, 0, 1, 0], [0, 0, 0, -1]])

sigma_3 = tinyarray.array([[0, -1, 0, 0], [1, 0, 0 ,0], [0, 0, 0, -1], [0, 0, 1, 0]])

 

 

def make_system(W_QPC):

    L1=70

    W1=60

    L2=70

    W=150

    A=364.5

    B=-686

    C=0

    D=-512

    M=-10

    a=2

    b=1

    def central_region(pos):

        x, y = pos

        return -(L1 +W1 + L2)/2 < x < (L1 +W1 + L2)/2 and \

            abs(y) < (x <= L1-(L1 +W1 + L2)/2) * abs(0.25 * (2 * W-W_QPC) * (math.sin((x+(L1 +W1 + L2)/2)*math.pi/L1 - math.pi/2) + 1)-W)    + (x > L1-(L1 +W1 + L2)/2 and x <= (L1+W1-(L1 +W1 + L2)/2)) * W_QPC/2 + (x > (L1 + W1-(L1 +W1 + L2)/2) and x < (L1+W1+L2-(L1 +W1 + L2)/2)) * abs(0.25 * (2 * W-W_QPC) * (math.sin((x-W1/2)*math.pi/L1 + math.pi/2) + 1)-W)

 

    lat = kwant.lattice.square(a)

    sys = kwant.Builder()

 

    sys[lat.shape(central_region, (0, 0))] = (C-4*D/a**2)*sigma_0 + (M-4*B/a**2)*sigma_2

    sys[kwant.builder.HoppingKind((b, 0), lat, lat)] = D * sigma_0/a**2+B * sigma_2/a**2+1j * A * sigma_1/a

    sys[kwant.builder.HoppingKind((0, b), lat, lat)] = D * sigma_0/a**2+B * sigma_2/a**2+ A * sigma_3/a

 

    sym = kwant.TranslationalSymmetry((-a, 0))

    lead = kwant.Builder(sym)

    lead[(lat(0, y) for y in range(-int(W/2) + 1, int(W/2)))] = (C-4*D/a**2)*sigma_0 + (M-4*B/a**2)*sigma_2

    lead[kwant.builder.HoppingKind((b, 0), lat, lat)] = D * sigma_0/a**2+B * sigma_2/a**2+1j * A * sigma_1/a

    lead[kwant.builder.HoppingKind((0, b), lat, lat)] = D * sigma_0/a**2+B * sigma_2/a**2+ A * sigma_3/a

 

    sys.attach_lead(lead)

    sys.attach_lead(lead.reversed())

 

    return sys.finalized()

 

def density(sys, energy):

psi = kwant.wave_function(sys, energy)

for i in range(2):

           psi_5 = abs(psi(0)[i]**2)#.sum(axis=0)

#psi_5 = abs(psi(0)[5]**2)

#numpy.savetxt("psi_n.txt",psi_n);

           A1, A2 = psi_5[::4], psi_5[1::4]#, psi_n[2::4], psi_n[3::4]

           D = A1+A2

           numpy.savetxt("D_now.txt",D);

           kwant.plotter.map(sys, D)

 

def plot_conductance(WW_QPC, energy):

    # Compute conductance

    data = []

    for w_QPC in WW_QPC:

        sys = make_system(W_QPC=w_QPC)

        #sys = sys.finalized()

        smatrix = kwant.smatrix(sys, energy)

        data.append(smatrix.transmission(1, 0))

    numpy.savetxt("WW_QPC.txt",WW_QPC)

    numpy.savetxt("data.txt",data)

    pyplot.figure()

    pyplot.plot(WW_QPC, data)

    pyplot.xlabel("W_QPC [nm]")

    pyplot.ylabel("conductance [e^2/h]")

    pyplot.show()

 

sys = make_system(W_QPC=50)

kwant.plot(sys)

d = density(sys, energy=10)

plot_conductance(WW_QPC = [50*i+50 for i in range(4)], energy = 10)

 

#numpy.savetxt("D.txt",d);

#kwant.plotter.map(sys, d)