Problem in Bandstructure of AGNR defect
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()
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.ajit92@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
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.ajit92@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
participants (2)
-
Abbout Adel -
sahu.ajit92@gmail.com