# Software recommendations to construct band structures using tight binding

I am at the beginning of computational materials modeling. My objective is to calculate the electrical conductivity of a system that consists of several thousand atoms, and running DFT calculations is not an option due to the lack of computational resources.

Therefore, I want to construct electronic band structures using the tight-binding model and then calculate the electrical conductivity. I have tried by PYBINDING package, however, it did not work for 3D materials.

• RuntimeError: 3D Brillouin zones are not currently supported.
• Pybinding has no option to specify the atom type.

I want to know freely available software packages to build the electronic band structure of solids using the tight-binding model.

It will be a great starting point If an introductory reference is mentioned related to the tight-binding modeling of materials. Thank You in advance.

• Have you considered DFTB method? There are freely available implementations, eg DFTB+.
– Greg
Commented Nov 18, 2022 at 17:49
• not yet, but sure I will try Commented Nov 19, 2022 at 16:26

The sisl package can do exactly what you need. It should be easily extendible if you need some routines not implemented.

There is also some tutorials, which has a focus on transport using the NEGF method, but one needs not focus on that: https://github.com/zerothi/ts-tbt-sisl-tutorial

For a quick reference see Tools for working with tight-binding models

The sisl package has a set of default geometries implemented in the sisl.geom sub-package.

So when creating the graphene geometry (graphene = sisl.geom.graphene()) that method already has everything, 1) lattice parameters, 2) atomic species and 3) the periodicities of the geometry.
On the other hand one can manually define the geometries:

bond = 1.42
lattice = sisl.Lattice([[1.5 * bond, -3**0.5 / 2 * bond, 0],
[1.5 * bond, 3**0.5 / 2 * bond, 0],
[0, 0, 100]], nsc=[3, 3, 1])
# nsc is the number of supercell connections (periodicities)
geometry = sisl.Geometry([[0, 0, 0], [bond, 0, 0]], "C", lattice=lattice)


The above is almost the same as what the default graphene lattice looks like. So you are free to do your own geometries if needed.

For 3D geometries, you simply define your own lattice vectors, and/or use the built-in geometries, say fcc, bcc, etc.

I refrain from adding a longer answer since this might be duplicated by the above referenced question.

Disclaimer: I am the author of sisl

• In case this won't be closed as a duplicate, I can extend a bit more? Commented Nov 10, 2022 at 13:49
• @wenu see the updated answer. Commented Nov 14, 2022 at 13:08
• @nickpapior Just out of curiosity, I was under the impression that TB calculations needed the Hamiltonian to be built using external tools such as DFT calculations. Also, in both answers I could not find any input regarding the atomic species other than the bond length. Does TB depend solely on the geometry? If so, is there a way to use TB calculations for the case of epitaxial layering of materials such as Si and Ge?
– PBH
Commented Nov 16, 2022 at 13:21
• @PBH no, sisl TB calculations can be custom built, but it just so happens that reading in the LCAO matrices let's you manipulate H on the same footing as a pure TB H. A TB parameterization can depend on the atomic specie, or not. If not, then the atomic specie is purely aethestical, whereas they have physical meaning if the parameterization depends on the species. As such, if you have a TB parameterization for the epitaxial layer of Si and Ge, then sure you can go ahead and use sisl and its functionality (and even use Tbtrans for transport). Commented Nov 16, 2022 at 19:07
• I don't know of any, this is not directly in my field of research, so you should scour the literature for parametrizations. They surely must exist, but interfaces are a bit more difficult to parametrize, and so it might not be so easy on that... Commented Nov 17, 2022 at 12:52