Hi Mutcran,

I just checked it and it works fine.





import kwant
from math import floor
from numpy import arccos ,pi
from matplotlib import pyplot
def make_system(a=1, t=1.0, W=10, L=3):

    lat = kwant.lattice.square(a)
    syst = kwant.Builder()

    syst[(lat(x, y) for x in range(L) for y in range(W))] = 4 * t
    syst[lat.neighbors()] = -t

    lead = kwant.Builder(kwant.TranslationalSymmetry((-a, 0)))
    lead[(lat(0, j) for j in range(W))] = 4 * t
    lead[lat.neighbors()] = -t

    syst.attach_lead(lead)
    syst.attach_lead(lead.reversed())

    return syst


def plot_conductance(syst, energies):
    # Compute conductance
    data = []
    for energy in energies:
        smatrix = kwant.smatrix(syst, 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 M(E,W):
    N=W
    t=1.
    m=(N+1)/pi  *arccos((E-2*t)/(-2*t))   
    return floor(m)

W=10
syst = make_system(W=W)
kwant.plot(syst)

syst = syst.finalized()


energies=[0.01 * i for i in range(1,100,2)]
plot_conductance(syst, energies)
pyplot.plot(energies,[M(E,W) for E in energies],'ro')
pyplot.show()


On Wed, Jan 23, 2019 at 5:47 PM mutcran <mutcran@mynet.com> wrote:

Dear Adel,

 

Thank you for the additional remark. Yes, for near zero energies this "arcos formula" gives the same with Datta's simple expression. However, since you said it is exact for KWANT's discrete model, I tried to compare it with KWANT's results and I found discrepancy. Please see the attached figure.

 

In the Figure, you will see that I reduced "a" from 1 to 0.1 and KWANT results (blue curve) and it gave much closer to Datta's expression (yellow curve) now, as Joe predicted in the previous message. However, this "arcos expression" (green curve) does not give the same results with KWANT. And the results do not change much when decrease the lattice parameter a much lower like 0.00001. Am I doing sth wrong here or did I misinterpret your point?

 

Best,

Ran

 

 

Dear Mutcran,
 
I would like just to make an additional remark. Indeed, the formula in Datta's book is for a continuous model where the maximum number of modes is given by  M=2 W/ \lambda_f   (\lambda_f is the Fermi wavelength).
 
In the case of a discrete model, like in Kwant, you can deduce M from the band structure. In fact, we have:
E=4t -2t cos(kx)-2t cos(m pi/(N+1)), where N is the number of sites for one transversal cell.
The maximum number of transmitted modes is obtained when the longitudinal kinetic energy is 0 (kx~0).
so we get M= (N+1)/pi    arcos((E-2t)/(-2t))       (you need to take the integer part of this expression).
This result is exact for a discrete square lattice model.
A simple Taylor expansion around E~0 will give you the Datta's formula    (where W=(N+1)a).
 
As a conclusion, the number of transmitted modes for a given discrete model is obtained from the form of the Band structure. This allows you to calculate it for any complex lattice (as long as you can get analytically the band structure).
 
I hope this helps,
Adel
 
 
 

 

On Tue, Jan 22, 2019 at 11:22 PM mutcran <mutcran@mynet.com> wrote:

Thanks Joe! That was indeed the case! It became much closer with small a.

Best,

Ran

 


Hi Ran,

> I tried to compare KWANT’s results for transmission with Datta’s
ballistic transport formalism where total transmission is written as
>
> Ttot=T(E)M(E)
>
> Here Datta takes T(E)=1 for ballistic transport (please see: J. Appl.
Phys. 105, 034506, 2009) and M(E) is the number of modes in transverse
direction. When I compared KWANT's results with Datta’s expression,
for the system given in “quantum_wire_revisited.py”, I found different
results (please see the attached figure where I tried to put every
relevant thing in the calculation). Since the reflectance is zero for
that system and so transmission is 1 for each mode, shouldn’t it give
the same results with Datta’s transmission expression?
>

Nice question!

Looking at your results it seems that the energies at which new modes
open is shifted with respect to Datta's result.

I believe that this is simply due to the fact that your discretization
is not fine enough. Datta's result is valid in the continuum limit,
whereas the Kwant simulation (in the case presented) uses a
finite-difference discretization to render the problem discrete. If you
decrease the 'a' parameter, you should see the discrepancy between the
two result decrease.


Happy Kwanting,

Joe



--

Abbout Adel


--
Abbout Adel