Hi,

 

I have a question regarding the equation you use to calculate the conductance (Eq. (10)) in the Kwant paper, and how it relates to Eq. (47) in this paper (https://arxiv.org/pdf/cond-mat/9910158v2.pdf) by Büttiker et al

 

I tried to use both methods to calculate the conductance in a simple 2D two-terminal geometry. As far as I understand, you calculate the conductance assuming that the two leads only differ infinitesimally (so for low temperatures I guess it is safe to assume that the fermi-function is a delta-function around the fermi energy). My system is so that I have 2 modes in each lead. So, assume that I want the conductance in lead 0

 

Your formula

G_00 = S_00^2 + S_01^2 S_10^2 + S_11^2 = 1.9

(the result I get from doing this is consistent with transmission(0,0))

 

Büttiker

G_00 = - ( N_0 –  S_00^2 – S_11^2) = -0.1

Where N_0 = 2 (number of  modes).

 

Now, the numerical values I got from running my program, which I include as well below. Should these results not be the same? Or is my interpretation of their meaning wrong?

 

Before I include the script I would just like to say thank you for making Kwant, and also I am very gratefull that you take your time to answer all my questions so quickly. I really appreciate it. Thank you!

 

Best,

Camilla

 

# Tutorial 2.2.3. Building the same system with less code

# =======================================================

#

# Physics background

# ------------------

#  Conductance of a quantum wire; subbands

#

# Kwant features highlighted

# --------------------------

#  - Using iterables and builder.HoppingKind for making systems

#  - introducing `reversed()` for the leads

#

# Note: Does the same as tutorial1a.py, but using other features of Kwant.

 

import kwant

 

# For plotting

from matplotlib import pyplot

from math import pi, sqrt, tanh

 

import numpy as np

from numpy import ndarray

import scipy

from scipy.constants import *

 

 

def modes(energy):

    return 0

 

 

def plot_bandstructure(flead, momenta):

    bands = kwant.physics.Bands(flead)

    energies = [bands(k) for k in momenta]

 

    pyplot.figure()

    pyplot.plot(momenta, energies)

    pyplot.xlabel("momentum [(lattice constant)^-1]")

    pyplot.ylabel("energy [t]")

    pyplot.show()

 

def make_system(a=1.0, t=1.0, W=2, L=3):

    # Start with an empty tight-binding system and a single square lattice.

    # `a` is the lattice constant (by default set to 1 for simplicity.

    lat = kwant.lattice.square(a)

 

    sys = kwant.Builder()

 

    #### Define the scattering region. ####

    sys[(lat(x, y) for x in range(L) for y in range(W))] = 4 * t + 2

    sys[lat.neighbors()] = -t

 

    #### Define and attach the leads. ####

    # Construct the left lead.

    lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))

    lead[(lat(0, j) for j in range(W))] = 4 * t

    lead[lat.neighbors()] = -t

 

    # Attach the left lead and its reversed copy.

    sys.attach_lead(lead)

    lead2 = kwant.Builder(kwant.TranslationalSymmetry((a, 0)))

    lead2[(lat(L, j) for j in range(W))] = 4 * t

    lead2[lat.neighbors()] = -t

    sys.attach_lead(lead2)

 

 

    return sys, lead

 

 

def plot_conductance(sys, energies):

    # Compute conductance

    data = []

    for energy in energies:

        smatrix = kwant.smatrix(sys, energy)

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

 

    pyplot.figure()

    pyplot.plot(energies, data)

    pyplot.xlabel("energy [t]")

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

    pyplot.show()

 

 

def main():

    sys, lead = make_system()

 

    # Check that the system looks as intended.

    # kwant.plot(sys)

 

    # Finalize the system.

    sys = sys.finalized()

 

    en = 3

    sm = kwant.smatrix(sys, en)

 

    print('transmission by kwant: ',sm.transmission(0,0))

 

    smatrix = sm.data

    sdags = (smatrix.conj().T)

    # As from Eq. (10) in kwant paper

    print((sdags[0,0]*smatrix[0,0] + sdags[0,1]*smatrix[0,1] + sdags[1,1]*smatrix[1,1]+ sdags[1,0]*smatrix[1,0]))

    # As from Eq. (47) in buttiker

    print(sdags[0,0]*smatrix[0,0]+sdags[1,1]*smatrix[1,1] - 2)

 

# Call the main function if the script gets executed (as opposed to imported).

# See <http://docs.python.org/library/__main__.html>.

if __name__ == '__main__':

    main()