Motivations and capabilities#

The PythTB package was written in Python for several reasons, including

  • The ease of learning and using Python

  • The wide availability of Python in the community

  • The flexibility with which Python can be interfaced with graphics and visualization modules

  • In general, the easy extensibility of Python programs

You can get an idea of the capabilities of the package by browsing API for code documentation and the tutorials for notebooks that demonstrate these workflows.

Tight-binding models#

The tight binding method is an approximate approach for solving for the electronic wave functions for electrons in solids assuming a basis of localized atomic-like orbitals. We assume here that the orbitals are orthonormal, and focus on the “empirical tight binding” approach in which the Hamiltonian matrix elements are simply parametrized, as opposed to being computed ab-initio.

The PythTB package is intended to set up and solve tight-binding models for the electronic structure of

  • 0D clusters

  • 1D chains and ladders

  • 2D layers (square lattice, hexagonal lattice, honeycomb lattice, etc.)

  • 3D crystals

  • clusters, ribbons, slabs, etc., cut from higher-dimensional crystals

  • etc.

It provides tools for setting up more complicated tight-binding models, e.g., by “cutting” a cluster, ribbon, or slab out of a higher-dimensional crystal, and for visualizing the connectivity of a tight-binding model once it has been constructed.

As currently written, it is not intended to handle realistic chemical interactions. So for example, the Slater-Koster forms for interactions between s, p and d orbitals are not currently coded, although the addition of such features could be considered for a future release.

Topology and quantum geometry#

The PythTB package has a particular focus on computing topological and quantum geometric properties of tight-binding models.

The TBModel class is the core class for constructing and solving tight-binding models. It provides methods to compute a variety of observables related to topology and quantum geometry, including:

  • velocity operator,

  • quantum geometric tensor

  • Berry curvature

  • quantum metric

  • Chern number

  • local Chern marker

  • axion angle

  • second Chern number

  • position operator matrix elements

  • hybrid Wannier functions

These quantities can be computed either at individual k-points, or on meshes of k-points in the Brillouin zone. Each of these observables can also be computed on arrays of adiabatic parameters that modify the Hamiltonian.

WFArray cooperates with Mesh and TBModel to store states computed on structured k-point and/or parameter meshes. This is convenient for automatically managing periodic boundary conditions, and for storing states in a consistent gauge across the mesh. Once states are stored in a WFArray, one can use its methods to evaluate:

  • Wilson loops

  • Berry phases

  • Berry connections

  • Berry curvatures

  • Chern numbers

  • hybrid Wannier functions

  • position matrix elements

Wannier functions and Wannier90 interface#

Starting with Version 1.7, PythTB provides an interface to the popular Wannier90 package via the W90 class,

  • W90 reads tight-binding Hamiltonians from Wannier90 output files (*.win, *_hr.dat, *_centres.xyz). You can combine imported data with the broader PythTB ecosystem, run band-structure checks, or feed the states into WFArray and Wannier for further processing.

Starting with Version 2.0, PythTB includes the Wannier class, which constructs maximally localized Wannier functions directly from WFArray wavefunctions.

  • Wannier constructs maximally localized Wannier functions directly from PythTB wavefunctions. It supports single-shot projections, disentanglement, maximal localization, spread and center analysis, and plotting helpers such as plot_centers(), plot_decay(), and plot_density().

History#

This code package had its origins in a simpler package that was developed for use in a special-topics course on “Berry Phases in Solid State Physics” offered by D. Vanderbilt in Fall 2010 at Rutgers University. The students were asked to use the code as provided, or to make extensions on their own as needed, in order to compute properties of simple systems, such as a 2D honeycomb model of graphene, in the tight-binding (TB) approximation. Sinisa Coh, who was a PhD student with Vanderbilt at the time, was the initial developer and primary maintainer of the package. Since then, many others have contributed to its development, including those listed below.

Acknowledgments#

PythTB has benefited from the contributions of many individuals over the years. Below is a list of the current maintainers and contributors, along with their affiliations. We apologize for any omissions, and welcome feedback and corrections.

Maintainers#

Contributors#

We gratefully acknowledge additional contributions to PythTB from:

  • Wenshuo Liu - formerly Rutgers University

  • Victor Alexandrov - formerly Rutgers University

  • Tahir Yusufaly - formerly Rutgers University

  • Maryam Taherinejad - formerly Rutgers University

Funding#

This Web page is based in part upon work supported by the US National Science Foundation under Grants DMR-1005838, DMR-1408838, DMR-1954856, and DMR-2421895. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the National Science Foundation.

License#

PythTB is freely distributed under the terms of the GNU public license. A copy of the license is included with the code distribution, and is also available online. You are free to use it for your own research and educational purposes, or pass it on to others for similar use. You may modify it, but if you do so you must include a prominent notice stating that you have changed the code and include a copy of this license.