Dear khani,

I would like to correct my answer and complete  it by answering your
request.

I stated that for an infinite system the conductance is infinite and one
should study something like T(E)/W where W is the width of the system which
we take to infinity.
This is correct. I stated also that we deduce that    integral  T(E,ky) dky
should also be infinite! That is not correct. Indeed, as long as the
integral is on one Brillouin zone, it will be finite.
(W/pi is the number of Brillouin zones in the finite case!)
I also mentioned that the program I shared ls last time does not wraparound
the scattering region correctly: the reason is that I did a stupid
question. I forgot to put sys[lat.neighbors()]=-1  !
(although the system is one site, we need to put the hoppings since it has
a translational symmetry. )
Below, you can find the correct   program which verifies the analytical
formula I proposed. You can also find how to put a potential in the
scattering region.
The generalization to Graphene is straightforward.

I hope this helps
Adel


################################################################################
from numpy import array,linspace,sqrt,sin,cos,pi,exp,trapz,arccos
import kwant
from matplotlib import pyplot
lat=kwant.lattice.square()
sym1=kwant.TranslationalSymmetry((0,1))
sys=kwant.Builder(sym1)
def sys_pot(site,vg):
    return vg
sys[lat(0,0)]=sys_pot
sys[lat.neighbors()]=-1
# in the following put (0,1) first like for sys.
sym2=kwant.TranslationalSymmetry((0,1),(1,0))
lead=kwant.Builder(sym2)
def lead_pot(site,vl):
    return vl
lead[lat(0,0)]=lead_pot
lead[lat.neighbors()]=-1

sys=kwant.wraparound.wraparound(sys,coordinate_names='yxz')
lead=kwant.wraparound.wraparound(lead,keep=1,coordinate_names='yxz')
sys.attach_lead(lead)
sys.attach_lead(lead.reversed())

def Trans(E,vg):
    transmission=[]
    Ky=linspace(0,pi,100)
    params={"k_y": 0,"vg":vg, "vl":0}
    vg,vl=0,0
    for ky in Ky :
        params["k_y"]=ky

        Sm=kwant.smatrix(sys.finalized(),E,params=params)

        transmission.append(Sm.transmission(0,1))
    return trapz(transmission,Ky)

Energies=linspace(-2,2,20)
Result=[]   #for vg=0
for E in Energies:
    Result.append(Trans(E,0))
    #Result.append(Trans(E,0.3)) #if you want vg=0.3

pyplot.plot(Energies,Result,'ro')
# theoretical expected transmission
def T(E):
    return arccos(-1+abs(E/2))
Energies=linspace(-2,2,200)
pyplot.plot(Energies,T(Energies))
pyplot.show()
###############################################################################################################


On Sun, Oct 27, 2019 at 2:42 PM Abbout Adel <abbout.a...@gmail.com> wrote:

> Dear Hosein,
>
> Let me give you my understanding of the problem and then give you an
> example with kwant. I would love to hear a feedback on this matter.
> The best way to deal with this problem is to start with the easiest case:
> 2D square lattice.
> The transmission of an infinite  2D  system is the limit of a waveguide
> with width W when W goes to infinity.
> but we know that the transmission, in this case, is: 2*W/lambda, where
> lambda is the electron wavelength.
>
> So you can see that the conductance (transmission) goes to infinity when
> W---> infinity!
> So, it is better to talk about conductivity rather than conductance
> (conductivity =conductance/W)
>
> I remember that I calculated this for a square lattice during my thesis
> and found:
> T(E)/W =-1/pi   arcos(-1+abs(E/2))                             (onsite
> potential v=0)
>
> That means if you do just T(E)=0Intgral T(E, ky) dky , it should diverge
> in 2D!
>
> Let us go back to kwant and see why we get a finite result with a program
> as yours.
> For a uniform 2D system you need to do:
>
> sys=kwant.wraparound.wraparound(sys)
> lead=kwant.wraparound.wraparound(lead, keep=0)
>
> The problem with this is that when you call the scattering matrix:
> Sm=kwant.smatrix(sys.finalized(),energy,[ky])
>
> Only the lead gets the argument ky!  (I don't know why). This means that
> only the lead was wraparounded and got an effective onsite potential (-2t
> cos(ky)) but not the system!
> I checked this analytically for the transmission and found T(E=-1,
> ky=pi/4)=(1+2*sqrt(2))/(3+2*sqrt(2)) which is the same as obtained by kwant
> :0.6568
>
> This confirms my understanding. (I didn't have enough time to think about
> how to correct this)
>
> Another way of accessing the transmission and avoiding what I described
> above is s just to look at the self energy for each ky and each time you
> have an eigenvalue with an imaginary part you have one conducting mode.
>
>
> Your question about the angle: since you have ky, you find the
> corresponding kx at E from the conducting modes and the angle between them
> is what you are searching.
>
> I hope this helps,
> Regards
>
> from numpy import array,linspace,sqrt,sin,cos,pi,exp
> import kwant
> from matplotlib import pyplot
> lat=kwant.lattice.square()
> sym1=kwant.TranslationalSymmetry((0,1))
> sys=kwant.Builder(sym1)
>
> sys[lat(0,0)]=0
>
> sym2=kwant.TranslationalSymmetry((1,0),(0,1))
> lead=kwant.Builder(sym2)
> lead[lat(0,0)]=0
> lead[lat.neighbors()]=-1
>
> sym3=kwant.TranslationalSymmetry((-1,0),(0,1))
> lead2=kwant.Builder(sym3)
> lead2[lat(0,0)]=0
> lead2[lat.neighbors()]=-1
> sys=kwant.wraparound.wraparound(sys)
> lead=kwant.wraparound.wraparound(lead,keep=0)
> sys.attach_lead(lead)
> sys.attach_lead(lead.reversed())
>
>
>
> kwant.plot(sys)
> def Trans(E):
>     transmission=[]
>     Ky=linspace(0,2*pi,100)
>     for ky in Ky :
>         Sm=kwant.smatrix(sys.finalized(),energy,[ky])
>         transmission.append(Sm.transmission(0,1))
>     return trapz(transmission,Ky)
>
>
> Energies=linspace(-1.99,-0.0001,30)
> Result=[]
> for energy in Energies:
>     Result.append(Trans(energy))
>
> pyplot.plot(Energies,Result)
> pyplot.show()
>
>
>
>
> On Fri, Oct 25, 2019 at 12:50 PM Khani Hosein <hoseinkhani...@gmail.com>
> wrote:
>
>> Dear all,
>> I am using kwant to calculate the transmission of a bulk system. I use "
>> sys = kwant.wraparound.wraparound(sys) and  lead =
>> kwant.wraparound.wraparound(lead, keep=0)" to change my tight-binding
>> ribbon system to a bulk system. The transmission is obtained using:
>> kys = np.arange(-0.5, 0.5, 0.001)
>> for ky in kys:
>>     smatrix = kwant.smatrix(sys, energy, [ky])
>>     transmission.append(smatrix.transmission(1, 0))
>>
>> I want to obtain the Transmission vs the incident angle of an electron,
>> and I also need to do the integration ∫T(ky, E) dky or ∫T(θ,E)cosθdθ. I do
>> not undstand the ky in the system with kwant.wraparoun, what is the unit of
>> ky, what is k here for the system. Can you give me some advices on
>> this?Thanks in advance. The definition of incident angle is shown in the
>> attached Fig.1, the band structure for my bulk system is shown in attached
>> Fig.2 and the Tranmission vs ky is shown in Fig.3 (I do not know how the
>> set the values for ky).
>> Regards,
>> Hosein Khani
>>
>>
>>
>
> --
> Abbout Adel
>


-- 
Abbout Adel

Reply via email to