Fourier and Legendre to Matsubara transforms

Here are the different ways to transform Green’s functions of one type into a different type.

Time to frequency

The command Fourier allows you to initialize a block Green’s function defined in frequency (time) from a block Green’s function defined in time (frequency). Here’s a simple example:

from triqs.gf import *
from triqs.plot.mpl_interface import oplot

# A Green's function on the Matsubara axis set to a semicircular
gw = GfImFreq(indices = [1], beta = 50)
gw << SemiCircular(half_bandwidth = 1)

# Create an imaginary-time Green's function and plot it
gt = GfImTime(indices = [1], beta = 50)
gt << Fourier(gw)
oplot(gt, '-')

(Source code, png, hires.png, pdf)

../../../../../_images/fourier.png

The same command can be used for real-time <-> real-frequency transformations.

Legendre to Matsubara

The commands MatsubaraToLegendre and LegendreToMatsubara allow to initialize a Matsubara Green’s function (either in imaginary time or in imaginary frequencies) from a Legendre Green’s function and conversely. Example:

from triqs.gf import *
from triqs.plot.mpl_interface import oplot

# A Green's function on the Matsubara axis set to a semicircular
gw = GfImFreq(indices = [1], beta = 50)
gw << SemiCircular(half_bandwidth = 1)

# Create a Legendre Green's function with 40 coefficients
# initialize it from gw and plot it
gl = GfLegendre(indices = [1], beta = 50, n_points = 40)
gl << MatsubaraToLegendre(gw)
oplot(gl, '-o')

(Source code, png, hires.png, pdf)

../../../../../_images/legendre.png