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)
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))
On Fri, Oct 25, 2019 at 12:50 PM Khani Hosein email@example.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