Dear All,
I am using Kwant to calculate the conductance of a Graphene structure. However, 
it gives different conductance each time I run the code. I didn't change the 
code. For the same code, I am getting different results each time. Is there 
some error in my code or am I using the kwant function incorrectly? Please Help

Code
-----------
import kwant
import matplotlib.pyplot as plt


Wnr = 99
lnr = 60
a = 2.46
lat = kwant.lattice.honeycomb(a,norbs=1)
a,b = lat.sublattices

def make_sys():
    def rect(pos):
        x,y = pos
        return 0<=x<=lnr and 0<=y<=Wnr
    
    def delet(pos):
        x, y = pos
        return  0<=x<=35 and 20<=y<=80           
    
    model1 = kwant.Builder()
    model1[lat.shape(rect,(1,1))] = 0
    model1[lat.neighbors()] = 2.64
    del model1[lat.shape(delet, (11,25))]
    model1.eradicate_dangling()
    return model1


def lead_attach(model1):
    
    def lead1_shape(pos):
        x, y = pos
        return 0<y<=20
    
    def lead2_shape(pos):
        x, y = pos
        return 80<=y<=Wnr  
    
    sym = kwant.TranslationalSymmetry(lat.vec((-1,0))) #from the left
    sym.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)])
    sym.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)])
    lead = kwant.Builder(sym)
    lead[lat.shape(lead1_shape, (1,2))]=0
    lead[lat.neighbors()] =2.64
    model1.attach_lead(lead)
    
    ########### lead 2 #################
    
    sym1 = kwant.TranslationalSymmetry(lat.vec((-1,0))) #from the left
    sym1.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)])
    sym1.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)])
    lead2 = kwant.Builder(sym1)
    lead2[lat.shape(lead2_shape, (2,82))] = 0
    lead2[lat.neighbors()] = 2.64
    model1.attach_lead(lead)
    model1.attach_lead(lead2)
    kwant.plot(model1)
    return model1

def dos_eng(model1):
    rho  =  kwant.kpm.SpectralDensity(model1)
    eng1,  densities  =  rho.energies,  rho.densities
    return eng1,  densities

def calc_conductance(sys, energies):
    data = []
    for energy in energies:
        smatrix = kwant.smatrix(sys, energy)
        data.append(smatrix.transmission(1, 0))
        
    plt.figure()
    plt.plot(energies, data)
    plt.xlim([-3,3])
    plt.ylim([0,4])
    plt.xlabel("Energy (eV)",fontweight='bold')
    plt.ylabel("Conductance $(e^2/h)$",fontweight='bold')
    return data

def main():
    sys = make_sys()
    syst = lead_attach(sys)
    syst = syst.finalized()
    eng1,  densities = dos_eng(syst)
    cond = calc_conductance(syst,eng1)
    

if __name__ == '__main__':
    main()

Reply via email to