triqs.lattice.tight_binding.TBLattice

class triqs.lattice.tight_binding.TBLattice(units, hoppings={}, orbital_positions=[(0, 0, 0)], orbital_names=None, hopping=None)[source]

Bases: object

A tight-binding Hamiltonian on top of a Bravais lattice.

Bundles a BravaisLattice, a BrillouinZone and a TightBinding instance and exposes part of their interfaces directly.

Parameters:
unitslist of tuples of floats

Basis vectors of the real-space lattice.

hoppingsdict, optional

Dictionary mapping tuples of integers (real-space displacements in multiples of the lattice basis vectors) to numpy ndarray hopping matrices over the orbital indices.

orbital_positionslist of three-tuples of floats, optional

Internal orbital positions in the unit cell.

orbital_nameslist of str, optional

Names for each orbital.

Attributes

hoppings

Real-space hoppings as a {displacement: matrix} dict.

ndim

Number of spatial dimensions of the lattice.

units

Lattice basis vectors as a (ndim, ndim) array in the standard basis.

n_orbitals

Number of orbitals in the unit cell.

orbital_positions

Positions of the orbitals inside the unit cell.

orbital_names

Names of the orbitals in the unit cell.

bl

(BravaisLattice) The associated Bravais lattice.

bz

(BrillouinZone) The associated Brillouin zone.

tb

(TightBinding) The tight-binding Hamiltonian.

Methods

dispersion(arg)

Compute the dispersion, i.e. the eigenvalue spectrum of \(h_{\mathbf{k}}\), for a given momentum vector.

fourier(arg)

Compute the Fourier transform for a given momentum vector (or array of momentum vectors).

get_kmesh(n_k)

Return a mesh on the Brillouin zone with a given discretization.

get_rmesh(n_r)

Return a mesh on the Bravais lattice with a given periodicity.

lattice_to_real_coordinates(x)

Transform a vector from the lattice basis to the standard basis.

Examples

A nearest-neighbour tight-binding model on the 2D square lattice:

>>> from triqs.lattice.tight_binding import TBLattice, dos
>>> t = 1.0
>>> TB = TBLattice(
...     units=[(1, 0, 0), (0, 1, 0)],
...     hoppings={( 1, 0): [[-t]], (-1,  0): [[-t]],
...               ( 0, 1): [[-t]], ( 0, -1): [[-t]]},
...     orbital_positions=[(0, 0, 0)])

Compute its density of states on a regular k-grid (one DOS per band):

>>> d = dos(TB, n_kpts=100, n_eps=100, name='square')[0]

Build a k-mesh on the Brillouin zone for further calculations:

>>> kmesh = TB.get_kmesh(n_k=32)