TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
API Documentation

The TRIQS library provides various useful tools for studying interacting quantum systems.

The following provides a detailed reference documentation grouped into logical units.

If you are looking for a specific function, class, etc., try using the search bar in the top left corner.

Atomic problem diagonalization

Atomic problem diagonalization provides a lightweight exact diagonalization solver for finite fermionic Hamiltonians, together with helpers that build derived quantities from a solved eigensystem:

Determinant manipulation

Determinant manipulation provides tools to efficiently compute determinants and ratios of determinants, as needed for the acceptance probabilities of CTQMC solvers. By caching the inverse matrix and the determinant of an internally permuted matrix, rows and columns can be inserted, removed or changed at low cost, with most operations split into a cheap try step that only evaluates the determinant ratio and a complete step that applies the accepted update.

Experimental tools

Experimental tools collect functionality that is still under active development and whose API may change between releases. They live in the triqs::experimental namespace and are organized into two submodules:

  • Lattice tools (experimental) provides advanced lattice tools, such as Fourier-series representations of lattice functions, tight-binding Hamiltonians, superlattice folding, Wannier90 file loaders and Brillouin-zone integration.
  • Utilities (experimental) provides numerical helpers, such as adaptive integration and root finding.

Green's functions

Green's functions are generic containers for functions that are not known analytically, such as quantum many-body Green's functions, self energies and other correlation functions. A container is parameterised by a mesh (see Meshes), which fixes the domain and representation of the function, and a target, which fixes the value stored at each mesh point.

  • GF concepts specify the requirements for Green's function types.
  • GF containers are the central containers and their views, including their block-diagonal variants.
  • GF functions provide common physical operations on Green's functions.
  • GF input/output provides HDF5 serialisation.
  • GF transforms convert between different representations.
  • GF utilities provide factory functions, expression templates, MPI support and other utilities.

Hilbert space

Hilbert space provides the fermionic Fock space and related tools for performing many-body calculations:

Lattice tools

Lattice tools provide classes to describe crystal lattices and tight-binding Hamiltonians:

  • triqs::lattice::bravais_lattice represents a Bravais lattice in 1, 2 or 3 dimensions, defined by its basis vectors and the positions of atomic orbitals within the unit cell.
  • triqs::lattice::brillouin_zone represents the first Brillouin zone of a given Bravais lattice via its reciprocal-space basis vectors.
  • triqs::lattice::tight_binding represents a tight-binding Hamiltonian on a Bravais lattice. It supports Fourier transforms to reciprocal space, dispersion (band-structure) calculations on Brillouin zone meshes and produces matrix-valued Green's functions on those meshes.
  • triqs::lattice::grid_generator generates a regular grid of points inside the d-dimensional unit cube, useful for Brillouin zone sampling.

MC tools

The MC tools module provides a generic, MPI-aware Markov-chain Monte Carlo framework. The user supplies moves (see MC moves), measurements (see MC measurements) and a sign type satisfying the concepts in MC concepts. These are registered with a triqs::mc_tools::mc_generic instance (see MC simulation) which drives the warmup and accumulation phases. Random number generation and other building blocks are documented under MC utilities.

Meshes

Meshes form the basis of the Green's functions containers in the TRIQS library. They define the mathematical domain of the underlying function, how it is represented in memory, and how it is evaluated.

Operators

Operators provides a symbolic algebra for second-quantized many-body operators that act on the fermionic Fock space documented under Hilbert space. It is split into two parts:

Statistical analysis tools

Statistical analysis tools is a header-mostly toolkit for the statistical analysis of Monte Carlo data and other sampled observables:

Every component has an MPI-aware variant so the same client code runs serially or in parallel.

Test tools

Test tools is a header-only collection of GoogleTest-based helpers used throughout the TRIQS C++ test suite.

It provides various macros and helper functions to simplify writing unit tests involving TRIQS components.

Utilities

Utilities collects the foundational building blocks shared across the TRIQS library:

  • I/O streams provide verbosity-controlled and auto-indenting output streams.
  • Macros and exceptions provide the exception hierarchy, various macros, and the compiler / platform glue used by every other component.
  • Math helpers expose numerical helpers used across the library, such as interpolation points and weights, analytic continuation and runtime-typed numbers.
  • Other utilities collects general-purpose helpers that do not fit the other categories.
  • Runtime utilities contains process-level utilities such as timers and signal handling tools.
  • Tuple and variant tools contain various useful functions when working with std::tuple and std::variant types.
  • Type traits and metaprogramming collect template-metaprogramming helpers, type traits and RAII helpers.