Hi Leon, The upper and bottom limits of the conduction band are obtained from the relation of dispersion.

E=V-2t *cos(k) (# in your case V=2t for left lead and V0 for the right lead ). For more details, you can look for example to : http://www-personal.umich.edu/~sunkai/teaching/Fall_2014/Chapter6.pdf Regards, Adel On Mon, Oct 17, 2016 at 10:34 PM, Maurer, Leon <lmau...@sandia.gov> wrote: > Hi Abbout, > > Is the upper bound on the energies in the leads documented somewhere? I > guess it’s implicit in Sec. 2.4 of the tutorial, and now that you mention > it, it makes sense given the periodic lattice. > > -Leon > > From: Abbout Adel <abbout.a...@gmail.com> > Date: Monday, October 17, 2016 at 11:58 AM > To: "Leon Maurer (lmaurer)" <lmau...@sandia.gov> > Cc: "kwant-discuss@kwant-project.org" <kwant-discuss@kwant-project.org> > Subject: [EXTERNAL] Re: [Kwant] a step tripping up Kwant > > Dear Leon, > > the value of the parameter 't' in your program is around 16. this means > that the conduction band for the left lead is > band_l=[0, 4 t ]=[0,64] and the conduction band for the right lead is > band_r=[V0, V0+4 t]=[100, 164] > > as you can notice there is no energy which conducts in both leads. In > order to have a non zero transmission you need to use a value of V0<4 t. > > The result you are calling "exact" is valid for a continuous model: on a > lattice, the dispersion relation is not quadratic. > > To compare, your result with the continuous limit, you need to choose V0<< > 2t. > > For a "non uniform finite differences", you can look at the article [1] > > > > Hope that this helps. > Adel > > [1]: http://scitation.aip.org/content/aip/journal/jap/68/8/10. > 1063/1.346245 > > On Mon, Oct 17, 2016 at 7:10 PM, Maurer, Leon <lmau...@sandia.gov> wrote: > >> Hello everyone, >> >> I’ve been playing around with Kwant and come across some situations where >> the transmission between two leads is identically equal to zero when I >> wouldn’t expect that result. >> >> I’ve come up with a simple working example: a 1D step function with a >> step height that’s large relative to the lattice spacing (code below), >> altho this problem seems to sometimes crop up in other, somewhat less >> extreme situations. >> >> I understand that the numerical result should become less accurate as the >> step-height-to-lattice-spacing ratio increases, but why does the >> transmission become identically equal to zero at some point? Are there >> well-defined conditions for when this happens? Is there some way to know >> that the transmission is zero because of numerical issues rather than the >> underlying physics? >> >> (Ultimately, I’m interested in modeling some systems where the potential >> mostly varies gradually but has a few small regions with abrupt changes in >> potential. Moving to a finer mesh (smaller lattice constant) everywhere is >> cost-prohibitive. Having some tool to easily refine the mesh in a region >> would be very useful.) >> >> Thanks. >> >> -Leon >> >> >> (Below code taken from jupyter notebook.) >> >> >> # In[1]: >> >> get_ipython().magic('load_ext autoreload') >> get_ipython().magic('autoreload 2') >> from numpy import * >> import matplotlib.pyplot as plt >> get_ipython().magic('matplotlib inline') >> import tqdm >> import kwant >> >> >> # In[2]: >> >> m0 = 9.10938215e-31 # Electron mass, [kg] >> hbar = 1.054571726e-34 # hbar in [J] [s] >> q = 1.602176565e-19 # Elementary charge, [C] >> mt = 0.19 >> ml = 0.92 >> >> m = mt*m0 >> >> # In[3]: >> >> V0 = 100 # step height >> x = linspace(0,100,30) # thirty grid points >> U = zeros_like(x) >> U[len(x)//2:] = V0 >> plt.plot(x,U) >> >> >> # In[4]: >> >> a = x[1]-x[0] # grid spacing [nm] >> t = hbar**2/(2.*m*(a*1e-9)**2)/q*1e3 #hopping parameter [meV] >> >> lat = kwant.lattice.chain(a) # Set up the transport simulation on a 1D >> latice >> sys = kwant.Builder() # initialize the transport simulation >> for i in range(len(U)): # populate based on the potential landscape >> sys[lat(i)]=U[i]+2*t >> >> sys[lat.neighbors()] = -t # set the finite-difference hopping parameters >> leftLead = kwant.Builder(kwant.TranslationalSymmetry((-a,))) # the lead >> to the left >> leftLead[lat(0)] = 2*t + U[0] >> leftLead[lat.neighbors()] = -t >> sys.attach_lead(leftLead) # attach it >> >> rightLead = kwant.Builder(kwant.TranslationalSymmetry((a,))) # the lead >> to the right >> rightLead[lat(0)] = 2*t + U[-1] >> rightLead[lat.neighbors()] = -t >> sys.attach_lead(rightLead) # attach it >> sys = sys.finalized() >> >> >> # In[5]: >> >> def plot_conductance(sys, energies): >> # Compute transmission numerically >> data = [] >> for energy in tqdm.tqdm(energies,leave=True): >> smatrix = kwant.smatrix(sys, energy) >> data.append(smatrix.transmission(1, 0)) >> >> # Compute exact conductance >> k1 = sqrt(2*m*energies/hbar**2) >> k2 = sqrt(2*m*(energies - V0)/hbar**2) >> T = 4*k1*k2/(k1+k2)**2 >> T[energies <= V0] = 0 >> >> plt.figure() >> plt.plot(energies, data, energies, T) >> plt.legend(('numerical','exact'), loc=4) >> plt.xlabel("energy [V0]") >> plt.ylabel("Transmission") >> plt.show() >> return data, T >> >> >> # In[6]: >> >> stepNumerical, stepExact = plot_conductance(sys,linspace(1e-9,2*V0,201)) >> >> >> # In[7]: >> >> print(stepNumerical) >> >> > > > -- > Abbout Adel > -- Abbout Adel