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