reproducing simple analytical solution (chain of atoms)
Dear Kwant Community, In my research work I've come to the simple test problem which can be solved both using Kwant and analytically. It's about scattering of the electron wave in the chain of atoms in which hopping integral is t1 for x < 0 and t2 for x > 0. Almost all the solution is in the picture in the attachments. Realization of this analytical solution is presented in testChain.py which plots the dependence on scattering energy of the transmission coefficient tau**2 * v2/v1, vj = 2*tj*sin(phi_j)  velocity of the electron. The testChainkwant.py also plots transmission coefficient versus energy in the same system, but the results are not coincide. So, my question, is it possible to reach the accordance between the solutions in both cases? P.S. Analytical solution seems to be correct, at least rho**2 + tau**2 * v2/v1 is 1 identically. P.P.S. Is it possible to draw the different hopping kinds with different colors and line styles? It can be useful for controlling errors when building the geometries with hoppings between secondneighbors... Sincerely, Jambulat
Dear Jambulat, Your programs are well written but with no comments it is heavy to follow them. For the system you propose, the analytical result is straightforward using the Landauer Buttiker formula: After simplification, we get: T= 4*Gamma1*Gamma2/(Gamma1+Gamma2)**2 with Gamma the broadening. You can check this as follows import kwant from matplotlib import pyplot from numpy import * t1,t2=1,1.5 lat = kwant.lattice.square(a) sys = kwant.Builder() sys[lat(0,0) ] = 0 ###system one site x==0 #define and attach the leads lead1 = kwant.Builder(kwant.TranslationalSymmetry((a, 0))) lead1[lat(0, 0) ] = 0 lead1[lat.neighbors()] = t1 lead2 = kwant.Builder(kwant.TranslationalSymmetry((+a, 0))) lead2[lat(1, 0) ] = 0 lead2[lat.neighbors()] = t2 sys.attach_lead(lead1) sys.attach_lead(lead2) #finalize system syst=sys.finalized() energies=linspace(1.999,1.999,50) #transmission calculated by Kwant transmission=[] for E in energies: smatrix=kwant.smatrix(syst,E) transmission.append(smatrix.transmission(0,1)) #the linewidth Gamma (Landauer Buttiker formula) def Gamma(E,t): return sqrt(4*t**2E**2) #analytical result of the conductance using Landauer Buttiker formula def T(E,t1,t2): return 4*Gamma(E,t1)*Gamma(E,t2)/abs(Gamma(E,t1)+Gamma(E,t2))**2 T=[T(E,1.,1.5) for E in energies] pyplot.plot(energies,T) #kwant pyplot.plot(energies,transmission,'ro') #analytical result pyplot.ylabel('Transmission') pyplot.xlabel('Energy') pyplot.show() Hope this helps. Adel On Wed, May 31, 2017 at 7:34 PM, Jambulat Basaev <basaev.ja@gmail.com> wrote:
Dear Kwant Community,
In my research work I've come to the simple test problem which can be solved both using Kwant and analytically. It's about scattering of the electron wave in the chain of atoms in which hopping integral is t1 for x < 0 and t2 for x > 0. Almost all the solution is in the picture in the attachments. Realization of this analytical solution is presented in testChain.py which plots the dependence on scattering energy of the transmission coefficient tau**2 * v2/v1, vj = 2*tj*sin(phi_j)  velocity of the electron. The testChainkwant.py also plots transmission coefficient versus energy in the same system, but the results are not coincide.
So, my question, is it possible to reach the accordance between the solutions in both cases?
P.S. Analytical solution seems to be correct, at least rho**2 + tau**2 * v2/v1 is 1 identically.
P.P.S. Is it possible to draw the different hopping kinds with different colors and line styles? It can be useful for controlling errors when building the geometries with hoppings between secondneighbors...
Sincerely, Jambulat
 Abbout Adel
Dear Adel, Thank You very much for your answer. It seems the problem is in my deriving LandauerButtiker formula. I should find out why the approach stated in the jpg file doesn't work. I need to derive this formula by myself because my next step is to chek the chain with second and thirdneighbour hoppings. I want to be certain that I set the topology of hoppings in Kwant correctly. Thank You once again, suppose I'll be back with new questions in some time) Sincerely, Jambulat 20170601 1:14 GMT+03:00 Abbout Adel <abbout.adel@gmail.com>:
Dear Jambulat,
Your programs are well written but with no comments it is heavy to follow them.
For the system you propose, the analytical result is straightforward using the Landauer Buttiker formula:
After simplification, we get: T= 4*Gamma1*Gamma2/(Gamma1+Gamma2)**2
with Gamma the broadening. You can check this as follows
import kwant from matplotlib import pyplot from numpy import *
t1,t2=1,1.5
lat = kwant.lattice.square(a) sys = kwant.Builder() sys[lat(0,0) ] = 0 ###system one site x==0
#define and attach the leads lead1 = kwant.Builder(kwant.TranslationalSymmetry((a, 0))) lead1[lat(0, 0) ] = 0 lead1[lat.neighbors()] = t1
lead2 = kwant.Builder(kwant.TranslationalSymmetry((+a, 0))) lead2[lat(1, 0) ] = 0 lead2[lat.neighbors()] = t2
sys.attach_lead(lead1) sys.attach_lead(lead2)
#finalize system syst=sys.finalized() energies=linspace(1.999,1.999,50)
#transmission calculated by Kwant transmission=[] for E in energies: smatrix=kwant.smatrix(syst,E) transmission.append(smatrix.transmission(0,1))
#the linewidth Gamma (Landauer Buttiker formula) def Gamma(E,t): return sqrt(4*t**2E**2)
#analytical result of the conductance using Landauer Buttiker formula def T(E,t1,t2): return 4*Gamma(E,t1)*Gamma(E,t2)/abs(Gamma(E,t1)+Gamma(E,t2))**2
T=[T(E,1.,1.5) for E in energies]
pyplot.plot(energies,T) #kwant pyplot.plot(energies,transmission,'ro') #analytical result pyplot.ylabel('Transmission') pyplot.xlabel('Energy') pyplot.show()
Hope this helps. Adel
On Wed, May 31, 2017 at 7:34 PM, Jambulat Basaev <basaev.ja@gmail.com> wrote:
Dear Kwant Community,
In my research work I've come to the simple test problem which can be solved both using Kwant and analytically. It's about scattering of the electron wave in the chain of atoms in which hopping integral is t1 for x < 0 and t2 for x > 0. Almost all the solution is in the picture in the attachments. Realization of this analytical solution is presented in testChain.py which plots the dependence on scattering energy of the transmission coefficient tau**2 * v2/v1, vj = 2*tj*sin(phi_j)  velocity of the electron. The testChainkwant.py also plots transmission coefficient versus energy in the same system, but the results are not coincide.
So, my question, is it possible to reach the accordance between the solutions in both cases?
P.S. Analytical solution seems to be correct, at least rho**2 + tau**2 * v2/v1 is 1 identically.
P.P.S. Is it possible to draw the different hopping kinds with different colors and line styles? It can be useful for controlling errors when building the geometries with hoppings between secondneighbors...
Sincerely, Jambulat
 Abbout Adel
Dear Adel (and other kwantazing people), I've found the way how to obtain the formula to which you pointed me. If someone is interested, its derivation in terms of scattering theory is in the picture attached. If there will be some issues with reproducing in kwant the solution of system with nonfirstneighbour hoppings, I hope you help me once again. Sincerely, Jambulat 20170601 1:14 GMT+03:00 Abbout Adel <abbout.adel@gmail.com>:
Dear Jambulat,
Your programs are well written but with no comments it is heavy to follow them.
For the system you propose, the analytical result is straightforward using the Landauer Buttiker formula:
After simplification, we get: T= 4*Gamma1*Gamma2/(Gamma1+Gamma2)**2
with Gamma the broadening. You can check this as follows
import kwant from matplotlib import pyplot from numpy import *
t1,t2=1,1.5
lat = kwant.lattice.square(a) sys = kwant.Builder() sys[lat(0,0) ] = 0 ###system one site x==0
#define and attach the leads lead1 = kwant.Builder(kwant.TranslationalSymmetry((a, 0))) lead1[lat(0, 0) ] = 0 lead1[lat.neighbors()] = t1
lead2 = kwant.Builder(kwant.TranslationalSymmetry((+a, 0))) lead2[lat(1, 0) ] = 0 lead2[lat.neighbors()] = t2
sys.attach_lead(lead1) sys.attach_lead(lead2)
#finalize system syst=sys.finalized() energies=linspace(1.999,1.999,50)
#transmission calculated by Kwant transmission=[] for E in energies: smatrix=kwant.smatrix(syst,E) transmission.append(smatrix.transmission(0,1))
#the linewidth Gamma (Landauer Buttiker formula) def Gamma(E,t): return sqrt(4*t**2E**2)
#analytical result of the conductance using Landauer Buttiker formula def T(E,t1,t2): return 4*Gamma(E,t1)*Gamma(E,t2)/abs(Gamma(E,t1)+Gamma(E,t2))**2
T=[T(E,1.,1.5) for E in energies]
pyplot.plot(energies,T) #kwant pyplot.plot(energies,transmission,'ro') #analytical result pyplot.ylabel('Transmission') pyplot.xlabel('Energy') pyplot.show()
Hope this helps. Adel
On Wed, May 31, 2017 at 7:34 PM, Jambulat Basaev <basaev.ja@gmail.com> wrote:
Dear Kwant Community,
In my research work I've come to the simple test problem which can be solved both using Kwant and analytically. It's about scattering of the electron wave in the chain of atoms in which hopping integral is t1 for x < 0 and t2 for x > 0. Almost all the solution is in the picture in the attachments. Realization of this analytical solution is presented in testChain.py which plots the dependence on scattering energy of the transmission coefficient tau**2 * v2/v1, vj = 2*tj*sin(phi_j)  velocity of the electron. The testChainkwant.py also plots transmission coefficient versus energy in the same system, but the results are not coincide.
So, my question, is it possible to reach the accordance between the solutions in both cases?
P.S. Analytical solution seems to be correct, at least rho**2 + tau**2 * v2/v1 is 1 identically.
P.P.S. Is it possible to draw the different hopping kinds with different colors and line styles? It can be useful for controlling errors when building the geometries with hoppings between secondneighbors...
Sincerely, Jambulat
 Abbout Adel
participants (2)

Abbout Adel

Jambulat Basaev