
Hi dears, I am trying to study curved structures on Kwant and i've already done a code that gives me the coordinates for all atoms. What I have done was to curve a graphene sheet. By now, I am trying to add the hoppings to its structure, but as my structure does not have "symmetry" when I write down: lat = kwant.lattice.general([(1,0,0), (0,1,0), (0,0,1)],norbs=3) syst[lat(surface[0][0],surface[1][0],surface[2][0])]=2*t syst[sites[0], lat(surface[0][0],surface[1][0],surface[2][0])] = -t where surface[0][0], surface[1][0], surface[2][0] are the coordinates x, y and z of the first atom and sites[0] is the first site. I create a curved surface and make my Kwant Ambient as follow: class SURFACE(kwant.builder.SimpleSiteFamily): def normalize_tag(self, tag): return tinyarray.array(tag, float) def pos(self, tag): return tag atoms = SURFACE(norbs=3) syst = kwant.Builder() sites = [] for i in range(int(len(surface[0]))): x = surface[0][i] y = surface[1][i] z = surface[2][i] sites.append(atoms(x,y,z)) My question is: When I write lat(surface[0][0],surface[1][0],surface[2][0]) it does not stay at the real surface[0][0],surface[1][0],surface[2][0] position because it has floats values. When I type lat(surface[0][0],surface[1][0],surface[2][0]) I see: (Site(<class '__main__.SURFACE'>(None, 1), array([-3.472, -9.108, 1.205])), Site(kwant.lattice.Monatomic([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [0.0, 0.0, 0.0], '', 3), array([-3, -9, 1]))) and array([-3, -9, 1]) should be array([-3.472, -9.108, 1.205]). Why lattices accept only integer values?

Dear Eudes, You created a general 3D square lattice and an amorphous lattice. So it is normal that you will need integers for the site you create with the 3D lattice. Just use the lattice that you called "atoms". Another remark: If you are studying systems like nanobubles in Graphene, although the texture is curved, you do not need to go to 3D. Indeed, just use the 2D structure and change the hopping according to what the deformations gives you. I hope this helps. Adel On Tue, Nov 26, 2019 at 5:34 PM EUDES THOMAS GOMES DA SILVA < eudes.gomes@ufrpe.br> wrote:
Hi dears,
I am trying to study curved structures on Kwant and i've already done a code that gives me the coordinates for all atoms. What I have done was to curve a graphene sheet. By now, I am trying to add the hoppings to its structure, but as my structure does not have "symmetry" when I write down:
lat = kwant.lattice.general([(1,0,0), (0,1,0), (0,0,1)],norbs=3) syst[lat(surface[0][0],surface[1][0],surface[2][0])]=2*t
syst[sites[0], lat(surface[0][0],surface[1][0],surface[2][0])] = -t
where surface[0][0], surface[1][0], surface[2][0] are the coordinates x, y and z of the first atom and sites[0] is the first site.
I create a curved surface and make my Kwant Ambient as follow:
class SURFACE(kwant.builder.SimpleSiteFamily): def normalize_tag(self, tag): return tinyarray.array(tag, float) def pos(self, tag): return tag
atoms = SURFACE(norbs=3) syst = kwant.Builder() sites = [] for i in range(int(len(surface[0]))): x = surface[0][i] y = surface[1][i] z = surface[2][i] sites.append(atoms(x,y,z))
My question is:
When I write lat(surface[0][0],surface[1][0],surface[2][0]) it does not stay at the real surface[0][0],surface[1][0],surface[2][0] position because it has floats values.
When I type lat(surface[0][0],surface[1][0],surface[2][0]) I see:
(Site(<class '__main__.SURFACE'>(None, 1), array([-3.472, -9.108, 1.205])), Site(kwant.lattice.Monatomic([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]], [0.0, 0.0, 0.0], '', 3), array([-3, -9, 1])))
and array([-3, -9, 1]) should be array([-3.472, -9.108, 1.205]). Why lattices accept only integer values?
-- Abbout Adel
participants (2)
-
Abbout Adel
-
EUDES THOMAS GOMES DA SILVA