I would like to analyze a Slater-Koster tight binding model for some materials. I have the data for both the Hamiltonian as a matrix-valued map on the reciprocal lattice $H_{mn}(\vec{T})$ and the overlap matrix $S_{mn}(\vec{T})$. My question is: what are the tools available that generate the band structure and calculate topological indices? I know that several tools exist, such as Z2Pack and Wanniertools. Can these tools work with Slater-Koster models? For example, in Slater-Koster models, one has to deal with non orthonormal basis vectors. In this case, one needs to supply the overlap matrices, but I am not sure if these tools automatically assume that the overlap matrices are unity.


1 Answer 1


The sisl Python package can deal with Hamiltonians (and other physical matrices) in orthogonal and non-orthogonal basis sets.

A simple example for graphene would be something like:

import sisl

# graphene with bond-length 1.42
graphene = sisl.geom.graphene()
H = sisl.Hamiltonian(graphene, orthogonal=False)
H[0, 0] = (0, 1) # on-site value, overlap element
H[0, 1] = (-2.7, 0.11) # hopping element, overlap element

sisl provides other extensive tools and constructs to make these things easier and faster.

Once you have a Hamiltonian you can create the band-structures. The below routines automatically determines whether it is non-orthogonal or orthogonal and calls the appropriate routine.

band = BandStructure(H, [[0, 0, 0], [0, 0.5, 0],
                         [1/3, 2/3, 0], [0, 0, 0]], 400,
                        [r'$\Gamma$', r'$M$',
                         r'$K$', r'$\Gamma$'])

# calculate all eigenvalues for the bands
eigs = band.apply.array.eigh()
# get linear band-structure (so the distances between special points
# are correctly calculated in reciprocal space)
lk, kt, kl = band.lineark(True)
import matplotlib.pyplot as plt
plt.xticks(kt, kl)
plt.xlim(0, lk[-1])
plt.ylim([-3, 3])
plt.ylabel('$E-E_F$ [eV]')
for bk in bs.T:
    plt.plot(lk, bk)

disclaimer: I am the author of sisl


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .