Dear Camilla,

The two relations, (eq. 10 kwant paper and eq. (47) Büttiker et al) are exactly the same for transmission  between two different leads (just develop the trace to check it   *zero temperature of course*).

Now, if alpha== beta, the formula by Büttiker et al gives the reflection coefficient 'R' whereas the calculation of kwant "smatrix.transmission(alpha,alpha) gives an intermediate value to calculate the reflection R.
Indeed you need for kwant to do R=N-smatrix.transmission(alpha,alpha) which is the physical value you want to calculate and which is at the same time the result given by  eq. (47) Büttiker et al.


I think, that what confused you to notice this is the mistake you did in the sign of eq. (47) Büttiker et al:    the derivative of Fermi-Dirac distribution will give  ' - delta function'  and not '+'

So the sum of your two results is always 2 (the number of the conducting modes) for all the energies where there are two conducting modes.

So to summarize:
* you need to correct the sign in your program for eq. (47) Büttiker et al
*you need to know that kwant gives the intermediate result to calculate  R

check the example of kwant on superconductivity
 https://kwant-project.org/doc/1.0/tutorial/tutorial5

I hope that this helps.

Regards,
Adel

On Wed, Dec 7, 2016 at 1:31 PM, Camilla Espedal <camilla.espedal@ntnu.no> wrote:

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()




--
Abbout Adel