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:
objectA tight-binding Hamiltonian on top of a Bravais lattice.
Bundles a
BravaisLattice, aBrillouinZoneand aTightBindinginstance 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
Real-space hoppings as a
{displacement: matrix}dict.Number of spatial dimensions of the lattice.
Lattice basis vectors as a
(ndim, ndim)array in the standard basis.Number of orbitals in the unit cell.
Positions of the orbitals inside the unit cell.
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.
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
DOSper 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)