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