Dear Sahu,

The KPM method is based on a probabilistic algorithm. Each time you run the code the set of energies that you get is different. Since, you are calculating the conductance at the energies provided by the KPM method, you will of course get different values for each run.

In different words:
rho  =  kwant.kpm.SpectralDensity(model1)
eng1,  densities  =  rho.energies,  rho.densities

eng1 is different between two different runs of the program.

I hope this helps,
Adel


On Tue, Dec 13, 2022 at 9:18 AM <sahu.ajit92@gmail.com> wrote:
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()


--
Abbout Adel