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? 















Reply via email to