Hi Anant,
The problem lies in the way you defined your lattice. If we take a look at the graphene example from the tutorial for a moment, we can define a graphene lattice as follows:
graphene = kwant.lattice.general([(1, 0), (sin_30, cos_30)], [(0, 0), (0, 1 / sqrt(3))])
a, b = graphene.sublattices
so we first set the lattice vectors and then the basis coordinates of all the sublattices. One sublattice is centered around (0,0) and is called 'a', the other is centered around (0,1/sqrt(3)) and is called 'b'. How did we define hoppings in that tutorial? Between sublattices:
sys[a(0,0),b(0,0)] = t
so really a hopping between an 'a' atom and a 'b' atom.
Now coming back to your question, by writing
lat = kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)],[(0,0,0)])
you defined lat as something consisting of one cubic sublattice centered around (0,0,0). If you want to define hoppings and on site potentials you have to do the same as for the graphene example, by explicitly defining the sublattice as:
lat = lat.sublattices
A nicer way however is to define lat as:
lat = kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)])
The difference is that now I did not define a basis coordinate, so kwant sees this as a single lattice (Monatomic) and lat(0,0,0) makes perfect sense. Before lat(0,0,0) did not make much sense since lat could contain multiple sublattices (Polyatomic) and it is not clear to which sublattice (0,0,0) is referring to.
with seasonal greetings,
Robert