Home
TMDybinding¶
TMDybinding is an open-source Python module for pybinding.
This package contains the basic lattices in the pybinding
pb.Lattice()
format to create tight-binding
models for TMDs.
Installation¶
Installation is simple, just run
The installation only contains the source files in the PyPi repository. This code does not need any compilation, this source can be used immediately in combination with pybinding.Installing pybinding
Additionally, you might want to install the latest development version of pybinding. This latest version has additional tools to inspect the sublattices or orbitals, and analyze the wavefunction:
Usage¶
Making a lattice¶
To use TMDybinding, first follow the tutorial at pybinding.
In TMDybinding, a pb.Lattice()
is created for a specific TMD lattice.
You need to make specific choices for the lattice you want to obtain:
- params the parameters to use with the model
- soc select if you want to include the spin orbit coupling (SOC)
- material select the material you want to use (depends on the parameters of choice)
- lat4 make a square unit cell (doubled to obtain the armchair direction)
For example, you can take the parameters from G-B. Liu
for "MoS2"
in a hexagonal lattice without SOC, for the specific model used in their publication for the
sixth-nearest neighbour hopping (in their paper this is described as the third-nearest neighbour hopping, as they only
consider the metal d
-orbitals):
import tmdybinding as tmdy
# make the lattice object
lat = tmdy.TmdNN256Me(params=tmdy.liu6["MoS2"]).lattice()
# make a figure with the lattice
lat.plot()

Selecting parameters and classes
Please use the combinations of class and parameters as given in Documentation/Possible parameters.
Using the lattice¶
Below is a small example of how to use the code for the 5-band model from Liu/Wu:
import pybinding as pb
import tmdybinding as tmdy
# get the parameters
lat = tmdy.TmdNN256Meo(params=tmdy.wu["MoS2"]).lattice()
model = pb.Model(lat, pb.translational_symmetry())
bz = lat.brillouin_zone()
bands = pb.solver.lapack(model).calc_bands(
bz[3] * 0, bz[3], (bz[3] + bz[4]) / 2, bz[3] * 0
)
bands.plot(point_labels=[r"$\Gamma$", "$K$", "$M$", r"$\Gamma$"])

Further documentation is coming soon. Made by Bert Jorissen.
Citing¶
If you used this code in your research, please cite the following article: B. Jorissen, L. Covaci, B. Partoens, SciPost Phys. Core 7, 004 (2024).