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

Detailed Description

Various meshes for Green's functions.

Meshes form the basis for the Green's functions (GF) containers in the TRIQS library. They determine the mathematical domain of the underlying function, how it is represented, i.e. what is actually stored in memory, and how it is evaluated.

Every mesh satisfies the triqs::mesh::Mesh, and optionally the triqs::mesh::MeshWithValues concept. It consists of \( N \) mesh points, where \( N \) is the size of the mesh. The mesh points themselves satisfy the triqs::mesh::MeshPoint concept and they have two indices associated with it, as well as an optional value:

  • The data index \( d \) is usually an integer \( \in \{ 0, \dots, N-1 \} \) (except for product meshes, for which it is a tuple of indices) and simply indexes all mesh points in the mesh. The name refers to the fact that the GF containers store a certain value/object for each mesh point in an array and the data index \( d \) is the position of the value/object in that array.
  • For some meshes, it is natural to associate each mesh point with another index \( n \). The meaning of the index depends on the mesh type. For example,
    • for a triqs::mesh::imfreq mesh on the imaginary frequency axis, \( n \in \mathbb{Z} \) denotes the index of the Matsubara frequency \( i \omega_n \).
    • for a 3D triqs::mesh::cyclat mesh with periodic boundary conditions, \( n \equiv \mathbf{n} \in \mathbb{Z}^3 \) denotes the index of the lattice point \( \mathbf{R}^{\mathbf{n}} \).
    • for a triqs::mesh::imtime mesh, the index is simply equal to its data index, i.e. \( n = d \).
  • If a mesh satisfies the triqs::mesh::MeshWithValues concept, each mesh point has an additional value. For example, the value of the mesh point with index \( n \)

To make this more concrete, let us look at a typical example. One of the most important quantities in quantum many-body physics is the single particle GF \( G(\tau) \) defined on the imaginary time axis interval \( [0, \beta] \). For simplicity, we assume that the GF is real valued such that \( G : [0, \beta] \in \mathbb{R} \to \mathbb{R} \). The Green's functions containers allow us to represent the same function with different meshes. For example, we can use

  • a triqs::mesh::imtime mesh on the imaginary time axis with \( N \) mesh points. In this case, the interval \( [0, \beta] \) is divided into \( N \) equally spaced points \( \tau_n = n \beta / (N - 1) \), where the imaginary time point \( \tau_n \) is the value of the mesh point with index \( n = d \in \{ 0, \dots, N-1 \} \). For each mesh point, the GF container stores the function value \( G(\tau_n) \) in an array of size \( N \). To evaluate the GF at an arbitrary \( \tau \in [0, \beta] \) with \( \tau_n \leq \tau \leq \tau_{n+1} \), the container uses linear interpolation between the two mesh points \( \tau_n \) and \( \tau_{n+1} \).
  • a triqs::mesh::legendre mesh with \( N \) mesh points. In this case, the mesh point with index \( n = d \in \{ 0, \dots, N-1 \} \) refers to the Legendre polynomial \( P_n(x) \) of degree \( n \) and has no value associated with it. The GF container stores the coefficients

    \[ g_n = \sqrt{2n + 1} \int_0^\beta d\tau \, G(\tau) P_n(x(\tau)) \; , \]

    where \( x(\tau) = 2\tau / \beta - 1 \) is a linear map from \( [0, \beta] \) to \( [-1, 1] \). To evaluate the GF at an arbitrary point \( \tau \in [0, \beta] \), the container uses a truncated series expansion of \(G(\tau) \) in terms of Legendre polynomials:

    \[ G(\tau) \approx \sum_{n=0}^{N-1} \frac{\sqrt{2n + 1}}{\beta} g_n P_n(x(\tau)) \; . \]

Topics

 Mesh concepts
 Various concepts used with Meshes.
 Mesh types
 Different mesh types provided by the TRIQS library.
 Mesh utilities
 Various utilities used with Meshes.
 Tail fitting tools
 Tools to fit the high- and low-frequency tails of functions defined on real or imaginary frequency meshes.