Dear Simon,

To take into account temperature, you need to do an integration over an interval at least 3x KT  around Ef if you want to have a good approximation (Unless your transmission is very sharp around EF).
You need also to do a proper integration and not just a sum as you did.
Taking the eigenenergies of the scattering system is not the correct way. The electrons are coming from the lead and you need to take all the energies (continuum) in the band (you can descritize your band in a smart way depending on the profile of the transmission as Ef). 
You need to be careful about how the band end the Fermi Dirac distribution change with the magnetic field too.

I hope this helps,
regards,
Adel
 

On Mon, Dec 9, 2019 at 7:48 PM <simon.flury@uzh.ch> wrote:
Dear kwant users

I'm trying to calculate magnetic field dependent conductance of a system. For this I used the scattering matrix and adding temperature dependence
by multiplying the transmission value by the derivative of the fermi-dirac function. Because of the results I got, I'm not sure if this is the right way of doing it.
Can someone please help me?

Thank you very much

Best regards
Simon

Code:

fluxes = np.linspace(0, 5, 100)

def make_system(a=1, t=1.5, w=15, d=30):
    lat = kwant.lattice.square(a)
    syst = kwant.Builder()

    def onsite(site, U0, salt):
        return U0 * (uniform(repr(site), repr(salt)) - 0.5) +  4*t

    syst[(lat(x, y) for x in range(w) for y in range(d))] = onsite

    def hopping(site_i, site_j, phi):
        xi, yi = site_i.pos
        xj, yj = site_j.pos
        if yi == yj:
            return -t
        if xi == xj:
            return -0.001 * t * exp(-0.5j * phi * (xi + xj) * (yi - yj))


    syst[lat.neighbors()] = hopping

    lead = kwant.Builder(kwant.TranslationalSymmetry((0, -a)))
    lead[(lat(j, 0) for j in range(w))] = 4 * t
    lead[lat.neighbors()] = hopping
    syst.attach_lead(lead)
    syst.attach_lead(lead.reversed())

    return syst

def plot_conductance(syst):
    temp = 0.01
    w=15
    d=30
    U0=0
    salt = 0.2
    phis = np.linspace(0, (2 * pi / w) * 5, 100)
    count = 0
    values = []
    for phi in phis:
        count += 1
        ham_mat = syst.hamiltonian_submatrix(params=dict(phi=phi, U0=U0, salt=salt), sparse=True)
        evals = np.real(np.sort(np.linalg.eigvals(ham_mat.todense())))
        EF = evals[int(len(evals) / 2)]
        liste = []
        for k in range(0,len(evals)):
            energy = evals[k]

            if EF-temp <= energy <= EF+temp:
                df = np.real(exp((energy - EF) / temp) / (temp * (exp((energy - EF) / temp) + 1) ** 2))
                Smatrix = kwant.smatrix(syst, energy, params=dict(phi=phi, U0=U0, salt=salt))
                liste.append(Smatrix.transmission(0,1)*df)
        val = sum(liste)/(len(liste))
        values.append(val/(w*d))
        print(count)


    plt.plot(fluxes,values, label = w)
    plt.grid(True)
    plt.title("Conductance eqhop temp=0.1")
    plt.legend()
    plt.ylabel("G_[G_0]")
    plt.xlabel(r'$\phi [2\pi / L]$')
    plt.show()



def main():
    syst = make_system()
    syst = syst.finalized()
    plot_conductance(syst)


if __name__ == "__main__":
    main()


--
Abbout Adel