The electronic structure of graphene is well described by a simple tight-binding model that only uses one \(p_z\) orbital
in a hexagonal unit cell with two equivalent carbon atoms.
These atoms are located on the different subbattices, A and B, and don't have an on-site energy term.

Though the model is relative simple, it is used suite often in the literature.

defgraphene_lattice(onsite=(0,0)):"""Return lattice specification for a honeycomb lattice with nearest neighbor hoppings"""# parametersa=0.24595# [nm] unit cell lengtha_cc=0.142# [nm] carbon-carbon distancet=2.8# eV# define lattice vectorsa1=a*np.array([1,0])a2=a*np.array([1/2,1/2*np.sqrt(3)])# create a lattice with 2 primitive vectorslat=pb.Lattice(a1=a1,a2=a2)# add sublatticeslat.add_sublattices(# name, position, and onsite potential('A',[0,-a_cc/2],onsite[0]),('B',[0,a_cc/2],onsite[1]))# Add hoppingslat.add_hoppings(# inside the main cell, between which atoms, and the value([0,0],'A','B',-t),# between neighboring cells, between which atoms, and the value([1,-1],'A','B',-t),([0,-1],'A','B',-t))returnlat

We can visualize this lattice using the following code: