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?