Dear Liu,

I think that there is no problem in your result. It is the expected
physical result!

This behaviour is due to the fact that you are near the middle of the
conduction band.

To see it better, put the energy exactly =0. you will find that the
conductance is zero for odd numbers and oscillating for even.

In fact, for Ef=0, you have the wavenumber k=pi/2 and Lambda=2pi/k=4 (E=-2t
cos(k), whatever is the value of t, when E=0, k=pi/2 )

The system is like a tunneling barrierand therefore we will have maximum
transmission if L= N *lambda/2 (like for a quantum point contact) with N
Integer and expect extinction if N is half integer.

example: L=30, lambda =4 ===> N=15 oscillating at E=0. L=31 ====>N=15+1/2
extinction.

Since you are using an energy E=0.0001 a little bit different from 0 so you
do not see the full extinction. This is due to the fact that wavelength
lambda is not integer anymore

If you use an energy far from the middle of the band, even and odd systems
will behave the same way.

take more values of das=np.linspace(0,10,201) to see correctly the
oscillating behaviour of the conductance.

I hope this helps
Adel

On Tuesday, September 5, 2017, Liu Feng <ruser...@gmail.com> wrote:

> Dear All,
>
>       I have met a strange problem in computing conductance of 1D quantum
> wire.
>       The setup is as follows:
>       The hopping of the quantum wire is given by the first kind of Bessel
> function, for example, J0(A).
>       The coupling of the lead is set as 1.
>       As we know in this case the transmission should be proportional to
> J0(A)^2. However, I get very different results for wire of even and odd
> sites numbers as shown in the attachment...
>       Is this a bug or do I miss something else?
>
> source code
> ------------------------------------------
> """
> @author: liu
> """
> #import the plot function
> from matplotlib import pyplot
> import numpy as np
> #turn on kwant
> import kwant
> import scipy.special as sp #Bessel function
>
> def family_color(site):
>     if site.tag[0] in defect:
>         return 'magenta'
>     else:
>         return 'black'
>
> def conduct(mu,da):
>
>
>     sys=kwant.Builder()
>     a=1
>     lat=kwant.lattice.square(a)
>     t=sp.jn(0,da)
>     W=1
>     L=31
>     #da=1.0
> #    mu=0.0
>     for i in range(L):
>         for j in range(W):
> #        sys[lat(i,j)]=4*t
>             if i in defect:
>                 sys[lat(i,j)]=mu+da
>             else:
>                 sys[lat(i,j)]=mu
>
>             if j>0:
>                 sys[lat(i, j), lat(i, j-1)]=-t
>             if i>0:
>                 sys[lat(i, j), lat(i-1, j)]=-t
>
> #build the lead
>     sys_left_lead=kwant.TranslationalSymmetry((-a,0))
>     left_lead=kwant.Builder(sys_left_lead)
>
> #define the hopping in the lead, it is enough to only add one unit cell
> hopping
> #translational symmetry takes care the remainings.
>
>     for j in range(W):
>         left_lead[lat(-1, j)]=mu
>         if j>0:
>             left_lead[lat(0, j), lat(0, j-1)]=-1.0
>         left_lead[lat(-1, j), lat(-2, j)]=-1.0
>
> #attach the left lead
>     sys.attach_lead(left_lead)
>
> #similarly we define the right lead
>     sym_right_lead=kwant.TranslationalSymmetry((a,0))
>     right_lead=kwant.Builder(sym_right_lead)
>     for j in range(W):
>         right_lead[lat(L,j)]=mu
>         if j>0:
>             right_lead[lat(L,j),lat(L,j+1)]=-1.0;
>         right_lead[lat(L,j),lat(L+1,j)]=-1.0;
>     sys.attach_lead(right_lead)
>
> #plot system
> #    kwant.plot(sys,site_color=family_color)
> #    kwant.plotter.bands(left_lead.finalized())
>
> #finalize the system for conductivity computation
>     sys=sys.finalized()
>     return energies,kwant.smatrix(sys,0.0001).transmission(1,0)
>
> das=np.linspace(0,10,51)
>
> ts=[]
> defect=[1000]
> #energies,data,t=conduct(mu=0.0,da=0.0)
> #pyplot.plot(energies,data)
> for tda in das:
>     energies,t=conduct(mu=0,da=tda)
>     ts.append(t)
>
> #plot the conductance
>
>
>
>
>
> #pyplot.ylim([0,1])
> pyplot.show()
> pyplot.figure()
> pyplot.plot(das,ts)
> pyplot.xlabel('A')
> pyplot.ylabel('conductance[e^2/h]')
>
>
> Best regards,
> Feng Liu
>
>

-- 
Abbout Adel

Reply via email to