Graphene tight-binding model¶
This example creates a minimal graphene unit-cell of two atoms. The Carbon atoms are described with a single orbital per atom and with a cutoff radius of 1.42 Å.
The Hamiltonian
H
is an object which may be treated as a sparse
matrix. The for
loop below loops over all atoms (ia
) in the graphene
unit-cell. The close
function returns a list of length len(R)
with
elements where all neighbouring atoms within the radius defined in R
are listed. Comments in the below example clarifies each of the steps
carefully.
# This example creates the tight-binding Hamiltonian
# for graphene with on-site energy 0, and hopping energy
# -2.7 eV.
import sisl
bond = 1.42
# Construct the atom with the appropriate orbital range
# Note the 0.01 which is for numerical accuracy.
C = sisl.Atom(6, R = bond + 0.01)
# Create graphene unit-cell
gr = sisl.geom.graphene(bond, C)
# Create the tight-binding Hamiltonian
H = sisl.Hamiltonian(gr)
R = [0.1 * bond, bond + 0.01]
for ia in gr:
idx_a = gr.close(ia, R)
# On-site
H[ia, idx_a[0]] = 0.
# Nearest neighbour hopping
H[ia, idx_a[1]] = -2.7
# Calculate eigenvalues at K-point
print(H.eigh([2./3, 1./3, 0.]))