Problem in calculation of Current density

Dear all, I am new to kwant. I am trying to calculate the current density for different widths of zigzag graphene nanoribbon. But I am getting strange results for widths above 22 angstroms, there is slightly back propagation of current. I want to know, is there any mistake in my code or anything else to be considered for the calculation of current density. Here i am attaching the code with current density result for width 22 and 24 angstroms. In 24 angstroms, there is back propagation of current. Please help me. --------Code ---- import kwant import numpy as np from matplotlib import pyplot import matplotlib.pyplot as plt import numpy.linalg as npl import scipy.sparse.linalg as sla import os pi=np.pi ############################################## structure ######################## Wnr=22 lnr=180 ############# empty system kwant lat=kwant.lattice.honeycomb(a=2.46,norbs=1) a,b=lat.sublattices ########### functions for structure build def onsite(site, voltage): x, y = site.pos return voltage def rect(pos): x,y=pos return 0<x<=lnr and 0<y<=Wnr ################################ main structure i.e. rectangle #################### model1 = kwant.Builder() model1[lat.shape(rect,(1,1))] = 0 model1[lat.neighbors()] =2.64 model1.eradicate_dangling() kwant.plot(model1) ############### functions for lead structure build ################################ def lead1_shape(pos): x, y = pos return 0<y <=Wnr ############first lead codes########## sym = kwant.TranslationalSymmetry(lat.vec((-1,0))) #from the left sym.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)]) sym.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)]) lead = kwant.Builder(sym) lead[lat.shape(lead1_shape, (0,1))]=onsite lead[lat.neighbors()] =2.64 #########attaching the lead to model1 model1.attach_lead(lead) model1.attach_lead(lead.reversed()) #second lead attach in reverse manner model1=model1.finalized() kwant.plot(model1) ####################### calculations ############################ ###functions for calculations params = dict(voltage=0) kwant.plotter.bands(model1.leads[1],params=params) #bandstructure of lead def plot_conductance(sys, energies,params): # Compute transmission as a function of energy data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy, params=params) data.append(smatrix.transmission(0, 1)) pyplot.figure() pyplot.plot(energies, data) #pyplot.xlim([-2,2]) #pyplot.ylim([0,6]) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() return data ##########DOS KPM################# rho = kwant.kpm.SpectralDensity(model1,params=params) energies, densities = rho.energies, rho.densities plt.figure() plt.plot(energies, densities) ##################################### #######conductance w.r.t energy############## data=plot_conductance(model1,energies, params) ####################### ###########current density######## J_0 = kwant.operator.Current(model1) wf = kwant.wave_function(model1,energy=1,params=params) wfs=wf(0) wfs_of_lead_2 = wf(1) psi = wf(0)[0] current = J_0(psi) kwant.plotter.current(model1, current, colorbar=True) ################################################ please find the current density result in the link https://drive.google.com/file/d/1j8A6yZbZwaR1yAi3gKnuZalJYTJ8FQHc/view?usp=s... https://drive.google.com/file/d/155-PxKLLCtGewqQL2fuitGWPI6KCReik/view?usp=s...

Dear user, A quick look at your code tells me that what you see is due to the fact that you eradicate the dangling sites in the central system solely and not in the lead. This means that at the interface lead/system, you will have a back scattering. (the whole system is not uniform in the x-direction) This, of course, will appear only for some widths where the dangling sites exist. I hope this helps, Best regards, Adel On Thu, Apr 7, 2022 at 2:01 PM <sahu.ajit92@gmail.com> wrote:
Dear all, I am new to kwant. I am trying to calculate the current density for different widths of zigzag graphene nanoribbon. But I am getting strange results for widths above 22 angstroms, there is slightly back propagation of current. I want to know, is there any mistake in my code or anything else to be considered for the calculation of current density. Here i am attaching the code with current density result for width 22 and 24 angstroms. In 24 angstroms, there is back propagation of current. Please help me. --------Code ----
import kwant import numpy as np from matplotlib import pyplot import matplotlib.pyplot as plt import numpy.linalg as npl import scipy.sparse.linalg as sla import os
pi=np.pi
############################################## structure ######################## Wnr=22 lnr=180 ############# empty system kwant lat=kwant.lattice.honeycomb(a=2.46,norbs=1) a,b=lat.sublattices
########### functions for structure build def onsite(site, voltage): x, y = site.pos return voltage
def rect(pos): x,y=pos return 0<x<=lnr and 0<y<=Wnr ################################ main structure i.e. rectangle ####################
model1 = kwant.Builder() model1[lat.shape(rect,(1,1))] = 0 model1[lat.neighbors()] =2.64 model1.eradicate_dangling() kwant.plot(model1)
############### functions for lead structure build ################################
def lead1_shape(pos): x, y = pos return 0<y <=Wnr
############first lead codes########## sym = kwant.TranslationalSymmetry(lat.vec((-1,0))) #from the left sym.add_site_family(lat.sublattices[0], other_vectors=[(-1, 2)]) sym.add_site_family(lat.sublattices[1], other_vectors=[(-1, 2)]) lead = kwant.Builder(sym)
lead[lat.shape(lead1_shape, (0,1))]=onsite lead[lat.neighbors()] =2.64
#########attaching the lead to model1
model1.attach_lead(lead) model1.attach_lead(lead.reversed()) #second lead attach in reverse manner
model1=model1.finalized()
kwant.plot(model1)
####################### calculations ############################ ###functions for calculations params = dict(voltage=0)
kwant.plotter.bands(model1.leads[1],params=params) #bandstructure of lead
def plot_conductance(sys, energies,params): # Compute transmission as a function of energy data = [] for energy in energies: smatrix = kwant.smatrix(sys, energy, params=params) data.append(smatrix.transmission(0, 1)) pyplot.figure() pyplot.plot(energies, data) #pyplot.xlim([-2,2]) #pyplot.ylim([0,6]) pyplot.xlabel("energy [t]") pyplot.ylabel("conductance [e^2/h]") pyplot.show() return data
##########DOS KPM################# rho = kwant.kpm.SpectralDensity(model1,params=params) energies, densities = rho.energies, rho.densities plt.figure() plt.plot(energies, densities)
##################################### #######conductance w.r.t energy############## data=plot_conductance(model1,energies, params) ####################### ###########current density######## J_0 = kwant.operator.Current(model1) wf = kwant.wave_function(model1,energy=1,params=params) wfs=wf(0) wfs_of_lead_2 = wf(1) psi = wf(0)[0] current = J_0(psi) kwant.plotter.current(model1, current, colorbar=True) ################################################ please find the current density result in the link
https://drive.google.com/file/d/1j8A6yZbZwaR1yAi3gKnuZalJYTJ8FQHc/view?usp=s...
https://drive.google.com/file/d/155-PxKLLCtGewqQL2fuitGWPI6KCReik/view?usp=s...
-- Abbout Adel
participants (2)
-
Abbout Adel
-
sahu.ajit92@gmail.com