Four leads or six leads in hall bar-How to use " add_site_family" exactly in Kwant
Dear Joe
"add_site_family" did work in graphene zigzag nanoribbon.When I use
"add_site_family",the central scattering region would not enlarge after
connected with leads in zigzag nanoribbon.But when I use it in graphene
armchair nanoribbon,the central scattering region will enlarge. If you have
spare time,you can run my code,and you can see the picture that the central
scattering is enlarge a little in up and downd leads,left and right lead is
right.
Thank you
Bill Yang
This is my code
from math import pi, sqrt, tanh
import kwant
# For computing eigenvalues
import scipy.sparse.linalg as sla
# For plotting
from matplotlib import pyplot
#Paramter
LeftLength=0.5 #width of scattering region
RightLength=5
UpWidth=0
DownWidth=2*4+1#length of scattering region
UnitCell=int((DownWidth-1)/2)+1 #unit cell
# Define the graphene lattice
sin_30, cos_30 = (1 / 2, sqrt(3) / 2)
graphene = kwant.lattice.general([(1, 0), (sin_30, cos_30)],
[(0, 0), (0, 1 / sqrt(3))])
a,b=graphene.sublattices
#graphene2 = graphene = kwant.lattice.general([(sqrt(3)/2, 1/2), (0, 1)],
#[(0, 0), (1 / (2*sqrt(3)),1/2)])
def make_system(LeftLength,RightLength,UpWidth,DownWidth):
#### Define the scattering region. ####
# circular scattering region
def circle(pos):
x, y = pos
return (-LeftLength <= x <= RightLength and
(-(sqrt(3)/2*DownWidth+1/2/sqrt(3))<=y<=sqrt(3)/2*UpWidth))
syst = kwant.Builder()
# w: width and pot: potential maximum of the p-n junction
def potential(pos):
#def potential(pos):
(x, y) = pos
return 0
syst[graphene.shape(circle, (0, 0))] = potential
# specify the hoppings of the graphene lattice in the
# format expected by builder.HoppingKind
hoppings = (((0, 0), a, b), ((0, 1), a, b), ((-1, 1), a, b))
syst[[kwant.builder.HoppingKind(*hopping) for hopping in hoppings]] = -1
# Lead left and right
sym0 = kwant.TranslationalSymmetry(graphene.vec((-1, 0)))
sym0.add_site_family(graphene.sublattices[0], other_vectors=[(1, -2)])
sym0.add_site_family(graphene.sublattices[1], other_vectors=[(1, -2)])
def lead0_shape(pos):
x, y = pos
return (-(sqrt(3)/2*DownWidth+1/2/sqrt(3))<=y<=sqrt(3)/2*UpWidth)
lead0= kwant.Builder(sym0)
lead0[graphene.shape(lead0_shape, (0, 0))] = 0
lead0[[kwant.builder.HoppingKind(*hopping) for hopping in hoppings]] = -1
#Lead up and down
sym1 = kwant.TranslationalSymmetry(graphene.vec((-1, 2)))
#sym1.add_site_family(graphene.sublattices[0], other_vectors=[(1,1)])
#sym1.add_site_family(graphene.sublattices[1], other_vectors=[(1,1)])
def lead1_shape(pos):
x, y = pos
return (-1
Hi Bill,
Dear Joe "add_site_family" did work in graphene zigzag nanoribbon.When I use "add_site_family",the central scattering region would not enlarge after connected with leads in zigzag nanoribbon.But when I use it in graphene armchair nanoribbon,the central scattering region will enlarge. If you have spare time,you can run my code,and you can see the picture that the central scattering is enlarge a little in up and downd leads,left and right lead is right. Thank you Bill Yang
Ah, I understand now. In your original email you talked about a "triangle of sites", which I did not see in the images you posted, so I was unsure what you were talking about. I don't think you be able to get rid of the "extra added bit" with a judicious choice of 'other_vectors'; I think you'll have to define the lattice differently in order to do what you want. On the other hand, is this extra added region such a problem? There will be no physical consequences, as the extra added piece has the same Hamiltonian as the leads... Happy Kwanting, Joe
participants (2)
-
hui yang
-
Joseph Weston