Package: tightbinder
tightbinder is a Python library for electronic structure calculations based on the Slater-Koster approximation for tight-binding models. It provides all the necessary tools to build,
modify and characterize any crystalline or disordered material.The construction of a Slater-Koster model relies on the definition of a configuration file, which contains all the information needed to build the model.
Namely, one has to specify completely the crystalline structure, i.e. the Bravais vectors and motif, and the electronic structure which amounts to the
orbitals, onsite energies and hoppings between orbitals. The configuration file then fully characterizes the Slater-Koster models and constitutes the starting point for the majority of the calculations done
with the library. Alternatively, it is also possible to define custom models that can still leverage the capabilities of the package.The features of the library are:Construction ofSlater-Kostertight-binding models up to $d$ orbitals, with intraatomicspin-orbit coupling.Construction ofamorphousSlater-Koster models, with hoppings modified accordingly (power or exponential law) with respect to the crystalline model.Methods tomodifythe system as desired: construction of supercells, finite systems, introduction of vacancies or impurities, amorphization of the lattice,
application of electric or magnetic fields.Completetopological characterizationof materials: evolution of Wannier charge centers, $\mathbb{Z}_2$ invariant, Berry curvature, Chern number and marker, and spatial entanglement spectrum.Transportcalculations intwo-terminaldevices based on the Landauer-Buttiker formalism (conductance and transmission).Computation ofobservablessuch as the band structure, expected value of the spin components, density of states (either using Green's functions or the KPM), local density of states, as well as the plotting routines for
the corresponding quantities.Predefinedmodels (e.g. Haldane or BHZ) and ability to define custom ones.Fittingmodule to obtain the Slater-Koster parameters of any user-defined model from some input band structure.Additional classes for building models (define model bond by bond instead of relying on the Slater-Koster constructor, or stackings of 2d layers) (under development).For a complete description of the capabilities of the package, we refer to thedocumentationwhere several usage examples can be found together with the full API
reference.InstallationUsage of avirtual environmentis recommended in general to avoid conflicts between packages.To install the latest version of the package, simply run:pipinstalltightbinderAlternatively, you can clone the repository to get the most up-to-date version of the package.git clone https://github.com/alejandrojuria/tightbinder.gitFrom the root folder of the repository, install the library (which will automatically install the required dependencies):cd {path}/tightbinder
pip install .DocumentationThe documentation can be accessedonline. To build it, you must have installed GNU Make and the library itself. Additional requirements to build documentation can be installed by specifying docs qualifier when installing tightbindercd {path}/tightbinder
pip install ".[docs]"Then,cd docs/and then, runmake htmlto build the documentation. It will be created indocs/build/html, and can be accessed throughindex.html.ContributingThe library is still under development as new features and optimizations are added. Therefore, any kind of contribution is welcome, from completing the documentation, bug fixing, adding new features or reporting bugs of the library.
In general, any contribution should stick to thePEP style guidelines. If in doubt, do not hesitate to contact!