Abbout Adel wrote: > Dear Sahu, > What you see is just a flat band. It doesn't mean that there is an error in > the code. > Actually, it is very common to see it in graphene for example if you have > dangling sites in an infinite stripe. > You need of course to avoid that energy in the calculation of the > scattering matrix because it is singular. > I hope this helps, > Adel > On Fri, Oct 14, 2022 at 11:26 AM sahu.aji...@gmail.com wrote: > > Dear all, > > I make AGNR in Kwant and introduce the defect in both the scattering > > region and lead. > > When plotting the bandstructure of the lead there is a straight line that > > comes at E=0. > > I am confused that there is some error in the code or not. Please help > > Thanking You > > code- > > ________________ > > import kwant > > import numpy as np > > import matplotlib.pyplot as plt > > pi = np.pi > > a = 1 > > d = 1.42; > > a1 = d*np.sqrt(3); > > lat = kwant.lattice.general( > > [[a1, 0], [a1/2, a1*np.sqrt(3)/2]],[[0, 0], [0, a1/np.sqrt(3)]] > > ) > > a,b = lat.sublattices > > def set_pub(): # for plotting the figures > > plt.rcParams.update({ > > "font.weight": "bold", # bold fonts > > "font.size":18, > > #"tick.labelsize": 15, # large tick labels > > "lines.linewidth": 2, # thick lines > > "lines.color": "k", # black lines > > "grid.color": "0.5", # gray gridlines > > "grid.linestyle": "-", # solid gridlines > > "grid.linewidth": 0.5, # thin gridlines > > "xtick.major.size":10, > > "xtick.minor.size":5, > > "ytick.major.size":10, > > "ytick.minor.size":5, > > "savefig.dpi": 600, # higher resolution output. > > }) > > def make_sys(w,l): > > def rect(pos): > > x,y = pos > > return -w*a1<x<w*a1 and -l*a1<y<l*a1 > > model1 = kwant.Builder() > > model1[lat.shape(rect,(1,1))] = 0 > > model1[lat.neighbors()] = 2.46 > > return model1 > > def lead_join(model1,w): > > def lead_shape(pos): > > x, y = pos > > return -w*a1<x<w*a1 > > Num = 8*(a1*np.sqrt(3)/2) > > sym = kwant.TranslationalSymmetry([0,Num]) > > lead = kwant.Builder(sym) > > lead[lat.shape(lead_shape, (1,1))] = 0 > > lead[lat.neighbors()] = 2.46 > > model1.attach_lead(lead) > > model1.attach_lead(lead.reversed()) > > return model1,lead > > def defect(model1,lead): > > def delet_lead(pos, shift = +a1*np.sqrt(3)): > > x, y = pos > > z=x**2+(y-shift)**2 > > return z<(a1)**2 > > def delet_str(pos, shift = a1*np.sqrt(3)): > > x, y = pos > > z = x**2 + (y-shift)**2 > > return z<(a1)**2#z<(2*a1)**2 > > del model1[lat.shape(delet_str, (1,1))] > > del lead[lat.shape(delet_lead, (2,2))] > > kwant.plot(model1) > > set_pub() > > plt.rc('axes', linewidth = 2.0) > > plt.show() > > return model1 > > def plot_bandstructure(flead, momenta): > > bands = kwant.physics.Bands(flead) > > energies = [bands(k) for k in momenta] > > band_gap = 100 > > for k in momenta: > > for band in bands(k): > > if(band <0): > > #Lower than fermi band > > min_band=band > > else: > > max_band=band > > if(max_band-min_band<band_gap): > > band_gap=max_band-min_band > > break > > print("Gap Energy= " + str(band_gap) +" ev ") > > kwant.plotter.bands(flead) # bandstructure of lead > > plt.ylim([-3,3]) > > set_pub() > > plt.xlabel("K $(\AA^{-1})$",fontweight='bold') > > plt.ylabel("Energy (eV)",fontweight='bold') > > plt.show() > > return band_gap > > def main(): > > w = 5 > > l = 8 > > sys = make_sys(w,l) > > syst,lead = lead_join(sys,w) > > syst = defect(syst,lead) > > fsys = syst.finalized() > > momenta = [-pi + 0.02 * pi * i for i in range(101)] > > Band_Gap = plot_bandstructure(lead.finalized(), momenta) > > if __name__ == '__main__': > > main() > > -- > Abbout Adel
Thank You, cleared my doubts