TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
GF Fourier transform

Detailed Description

Fourier transform between time and frequency representations.

The Fourier transform between imaginary time and Matsubara frequency and between real time and real frequency, as well as the lattice Fourier transform.

Functions

template<int N = 0, typename G, typename... Args>
_fourier_lazy< N, typename G::const_view_type, Args... > triqs::gfs::fourier (G const &g, Args &&...1)
 Build a lazy Fourier transform expression for use in g_out = fourier(g_in, ...) assignments.
template<int N = 0, typename M1, typename M2, typename T, typename... OptArgs>
auto triqs::gfs::make_gf_from_fourier (gf_const_view< M1, T > gin, M2 const &mesh, OptArgs const &...opt_args)
 Build a new Green's function on the conjugate mesh by Fourier transforming an input Green's function.
template<int... Ns, typename V, typename T>
auto triqs::gfs::make_gf_from_multi_fourier (gf_const_view< V, T > gin)
 Fourier transform several components of a product-mesh Green's function at once.
template<int N = 0, typename... M, typename Target>
auto triqs::gfs::partial_transform (gf_const_view< mesh::prod< M... >, Target > gin, auto lambda)
 Apply a transform to a single mesh component of a product-mesh Green's function.

Function Documentation

◆ fourier()

template<int N = 0, typename G, typename... Args>
_fourier_lazy< N, typename G::const_view_type, Args... > triqs::gfs::fourier ( G const & g,
Args &&... args )

#include <triqs/gfs/transform/fourier.hpp>

Build a lazy Fourier transform expression for use in g_out = fourier(g_in, ...) assignments.

The returned object holds a const view on g and the optional arguments; the actual transform is performed when it is assigned into a target Green's function, whose mesh selects the conjugate variable.

Template Parameters
NIndex of the mesh component to transform (default \( 0 \)).
GThe type of the input Green's function.
ArgsTypes of the optional arguments (e.g. known high-frequency moments).
Parameters
gThe input Green's function.
argsOptional arguments forwarded to the transform.
Returns
A lazy expression assignable into a Green's function on the conjugate mesh.

Definition at line 331 of file fourier.hpp.

◆ make_gf_from_fourier()

template<int N = 0, typename M1, typename M2, typename T, typename... OptArgs>
auto triqs::gfs::make_gf_from_fourier ( gf_const_view< M1, T > gin,
M2 const & mesh,
OptArgs const &... opt_args )

#include <triqs/gfs/transform/fourier.hpp>

Build a new Green's function on the conjugate mesh by Fourier transforming an input Green's function.

Supports the standard pairs of conjugate meshes:

  • imaginary time \( \tau \in [0, \beta] \) \( \leftrightarrow \) Matsubara frequencies \( i\omega_n \),
  • real time \( t \) \( \leftrightarrow \) real frequencies \( \omega \),
  • imaginary-time DLR \( \leftrightarrow \) Matsubara-frequency DLR,
  • cyclic lattice \( \leftrightarrow \) Brillouin zone.

The output mesh may be supplied explicitly; if omitted, the conjugate mesh of the input is used. For Matsubara/real-frequency pairs an optional integer ( \( n_{\tau} \) or \( n_{i\omega} \)) controls the size of the generated mesh. Known high-frequency moments may be passed to improve accuracy near the tail.

For block Green's functions, the transform is applied block by block.

Template Parameters
NIndex of the mesh component to transform (default \( 0 \)).
M1Mesh type of the input Green's function.
M2Mesh type of the output Green's function.
TTarget type of the input Green's function.
Parameters
ginThe input Green's function.
meshThe output mesh on the conjugate variable.
opt_argsOptional arguments (e.g. known high-frequency moments).
Returns
A new Green's function on the conjugate mesh.

Definition at line 141 of file fourier.hpp.

◆ make_gf_from_multi_fourier()

template<int... Ns, typename V, typename T>
auto triqs::gfs::make_gf_from_multi_fourier ( gf_const_view< V, T > gin)

#include <triqs/gfs/transform/fourier.hpp>

Fourier transform several components of a product-mesh Green's function at once.

Each axis listed in the template pack Ns is transformed to its conjugate mesh, in turn.

Template Parameters
NsIndices of the mesh components to transform.
VProduct mesh type of the input Green's function.
TTarget type of the input Green's function.
Parameters
ginThe input Green's function on a product mesh.
Returns
A new Green's function with the selected components Fourier transformed.

Definition at line 225 of file fourier.hpp.

◆ partial_transform()

template<int N = 0, typename... M, typename Target>
auto triqs::gfs::partial_transform ( gf_const_view< mesh::prod< M... >, Target > gin,
auto lambda )

#include <triqs/gfs/transform/partial_transform.hpp>

Apply a transform to a single mesh component of a product-mesh Green's function.

The input Green's function is flattened along the component N (collapsing all other mesh axes and target indices into a single dimension), the user-supplied lambda is applied to the resulting flattened Green's function, and the result is unflattened back onto a product mesh whose N-th component is replaced by the mesh produced by lambda. This is the common scaffold used by per-axis transforms on product meshes.

Template Parameters
NIndex of the mesh component to transform (default \( 0 \)).
MMesh types of the product-mesh components.
TargetTarget type of the input Green's function.
Parameters
ginThe input Green's function on a product mesh.
lambdaThe transform applied to the flattened Green's function of the selected component.
Returns
A new Green's function whose N-th mesh component has been transformed.

Definition at line 50 of file partial_transform.hpp.