TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
Lattice tools

Detailed Description

Tools for working with Bravais lattices, Brillouin zones and tight-binding Hamiltonians.

The lattice tools provide classes to describe crystal lattices in real and reciprocal space, and to build tight-binding Hamiltonians on top of them. The main classes are:

  • triqs::lattice::bravais_lattice: A Bravais lattice in 1, 2 or 3 dimensions, defined by a set of basis vectors and the positions of (optionally named) atomic orbitals within the unit cell.
  • triqs::lattice::brillouin_zone: The first Brillouin zone of a given Bravais lattice, defined by the corresponding reciprocal-space basis vectors.
  • triqs::lattice::tight_binding: A tight-binding Hamiltonian on a Bravais lattice, parameterised by lattice displacements and the associated hopping (overlap) matrices between orbitals. It provides the Fourier transform to reciprocal space, dispersion (band-structure) calculations on Brillouin zone meshes and integration with the TRIQS Green's function framework.
  • triqs::lattice::grid_generator: A forward iterator that produces a regular grid of points inside the d-dimensional unit cube, useful for sampling the Brillouin zone.

Classes

class  triqs::lattice::bravais_lattice
 A Bravais lattice class. More...
class  triqs::lattice::brillouin_zone
 A Brillouin zone class. More...
class  triqs::lattice::grid_generator
 Forward iterator generating uniformly-spaced points in the d-dimensional unit cube \( [0,1)^d \). More...
struct  triqs::lattice::hopping_dict
 Ordered dictionary mapping lattice displacements to hopping (overlap) matrices. More...
class  triqs::lattice::tight_binding
 Tight-binding Hamiltonian on a Bravais lattice with fully localised orbitals. More...

Typedefs

using triqs::lattice::k_t = nda::vector<double>
 Reciprocal space vector type.
using triqs::lattice::matrix_t = nda::matrix<double>
 Matrix type for transformations involving real and reciprocal space vectors.
using triqs::lattice::r_t = nda::vector<double>
 Real space vector type.
using triqs::lattice::v_t = nda::vector<double>
 Point type used by grid_generator: a real-valued vector (nda::vector<double>).

Functions

std::pair< array< double, 1 >, array< double, 2 > > triqs::lattice::dos (tight_binding const &TB, int nkpts, int neps)
 Compute the density of states of a tight-binding Hamiltonian on a regular k-grid.
std::pair< nda::array< double, 1 >, nda::array< double, 1 > > triqs::lattice::dos_patch (tight_binding const &TB, const nda::array< double, 2 > &triangles, int neps, int ndiv)
 Compute the density of states of a tight-binding Hamiltonian on a triangular Brillouin zone patch.

Function Documentation

◆ dos()

std::pair< nda::array< double, 1 >, nda::array< double, 2 > > triqs::lattice::dos ( tight_binding const & TB,
int nkpts,
int neps )

#include <triqs/lattice/tight_binding.cpp>

Compute the density of states of a tight-binding Hamiltonian on a regular k-grid.

The Brillouin zone is sampled by a regular grid of \( n_\text{kpts}^d \) momentum points (where \( d \) is the dimension of the lattice), the dispersion is diagonalised on each grid point, and the resulting band energies are histogrammed into neps bins per orbital.

Parameters
TBTight-binding Hamiltonian.
nkptsNumber of k-points along each dimension.
nepsNumber of energy bins.
Returns
Pair (energies, dos), where energies is a 1-D array of bin centres and dos is a 2-D array of shape (n_orbitals, neps) containing one density-of-states histogram per orbital.

Definition at line 81 of file tight_binding.cpp.

◆ dos_patch()

std::pair< nda::array< double, 1 >, nda::array< double, 1 > > triqs::lattice::dos_patch ( tight_binding const & TB,
const nda::array< double, 2 > & triangles,
int neps,
int ndiv )

#include <triqs/lattice/tight_binding.hpp>

Compute the density of states of a tight-binding Hamiltonian on a triangular Brillouin zone patch.

Note
Only supported for 2-dimensional lattices.
Parameters
TBTight-binding Hamiltonian.
triangles2-D array of shape (n_triangles * 3, 2) containing the vertices of the triangular patches in the Brillouin zone, three rows per triangle.
nepsNumber of energy bins.
ndivNumber of sub-divisions of each triangle used for the sampling.
Returns
Pair (energies, dos), where energies is a 1-D array of bin centres and dos is a 1-D array of the same length containing the total density of states summed over orbitals.