Main Module

Lehmann.DLRGridType
function DLRGrid(Euv, β, rtol, isFermi::Bool; symmetry::Symbol = :none, rebuild = false, folder = nothing, algorithm = :functional, verbose = false)
function DLRGrid(; isFermi::Bool, β = -1.0, beta = -1.0, Euv = 1.0, symmetry::Symbol = :none, rtol = 1e-14, rebuild = false, folder = nothing, algorithm = :functional, verbose = false)

Create DLR grids

#Arguments:

  • Euv : the UV energy scale of the spectral density
  • β or beta : inverse temeprature
  • isFermi : bool is fermionic or bosonic
  • symmetry : particle-hole symmetric :ph, or particle-hole asymmetric :pha, or :none
  • rtol : tolerance absolute error
  • rebuild : set false to load DLR basis from the file, set true to recalculate the DLR basis on the fly
  • folder : if rebuild is true and folder is set, then dlrGrid will be rebuilt and saved to the specified folder if rebuild is false and folder is set, then dlrGrid will be loaded from the specified folder
  • algorithm : if rebuild = true, then set :functional to use the functional algorithm to generate the DLR basis, or set :discrete to use the matrix algorithm.
  • verbose : false not to print DLRGrid to terminal, or true to print
source
Lehmann.DLRGridType
struct DLRGrid

DLR grids for imaginary-time/Matsubara frequency correlators

#Members:

  • isFermi: bool is fermionic or bosonic
  • symmetry: particle-hole symmetric :ph, or particle-hole asymmetric :pha, or :none
  • Euv : the UV energy scale of the spectral density
  • β or beta : inverse temeprature
  • Λ or lambda: cutoff = UV Energy scale of the spectral density * inverse temperature
  • rtol: tolerance absolute error
  • size : number of DLR basis
  • ω or omega : selected representative real-frequency grid
  • n : selected representative Matsubara-frequency grid (integer)
  • ωn or omegaN : (2n+1)π/β
  • τ or tau : selected representative imaginary-time grid
source
Lehmann.dlr2matfreqMethod
function dlr2matfreq(dlrGrid::DLRGrid, dlrcoeff, nGrid = dlrGrid.n; axis = 1, verbose = true)

DLR representation to Matsubara-frequency representation

#Members:

  • dlrGrid : DLRGrid
  • dlrcoeff : DLR coefficients
  • nGrid : expected fine Matsubara-freqeuncy grids (integer)
  • axis : Matsubara-frequency axis in the data dlrcoeff
  • verbose : true to print warning information
source
Lehmann.dlr2tauMethod
function dlr2tau(dlrGrid::DLRGrid, dlrcoeff, τGrid = dlrGrid.τ; axis = 1, verbose = true)

DLR representation to imaginary-time representation

#Members:

  • dlrGrid : DLRGrid
  • dlrcoeff : DLR coefficients
  • τGrid : expected fine imaginary-time grids
  • axis : imaginary-time axis in the data dlrcoeff
  • verbose : true to print warning information
source
Lehmann.matfreq2dlrMethod
function matfreq2dlr(dlrGrid::DLRGrid, green, nGrid = dlrGrid.n; error = nothing, axis = 1, sumrule = nothing, verbose = true)

Matsubara-frequency representation to DLR representation

#Members:

  • dlrGrid : DLRGrid struct.
  • green : green's function in Matsubara-frequency domain
  • nGrid : the n grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : the Matsubara-frequency axis in the data green
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source
Lehmann.matfreq2matfreqFunction
function matfreq2matfreq(dlrGrid, green, nNewGrid, nGrid = dlrGrid.n; error = nothing, axis = 1, sumrule = nothing, verbose = true)

Fourier transform from Matsubara-frequency to imaginary-time using the DLR representation

#Members:

  • dlrGrid : DLRGrid
  • green : green's function in Matsubara-freqeuncy repsentation
  • nNewGrid : expected fine Matsubara-freqeuncy grids (integer)
  • nGrid : the n grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : Matsubara-frequency axis in the data green
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source
Lehmann.matfreq2tauFunction
function matfreq2tau(dlrGrid, green, τNewGrid = dlrGrid.τ, nGrid = dlrGrid.n; error = nothing, axis = 1, sumrule = nothing, verbose = true)

Fourier transform from Matsubara-frequency to imaginary-time using the DLR representation

#Members:

  • dlrGrid : DLRGrid
  • green : green's function in Matsubara-freqeuncy repsentation
  • τNewGrid : expected fine imaginary-time grids
  • nGrid : the n grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : Matsubara-frequency axis in the data green
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source
Lehmann.rankMethod
rank(dlrGrid::DLRGrid) = length(dlrGrid.ω)
Base.size(dlrGrid::DLRGrid) = (length(dlrGrid.ω),)
Base.length(dlrGrid::DLRGrid) = length(dlrGrid.ω)

get the rank of the DLR grid, namely the number of the DLR coefficients.

source
Lehmann.tau2dlrMethod
function tau2dlr(dlrGrid::DLRGrid, green, τGrid = dlrGrid.τ; error = nothing, axis = 1, sumrule = nothing, verbose = true)

imaginary-time domain to DLR representation

#Members:

  • dlrGrid : DLRGrid struct.
  • green : green's function in imaginary-time domain.
  • τGrid : the imaginary-time grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : the imaginary-time axis in the data green.
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source
Lehmann.tau2matfreqMethod
function tau2matfreq(dlrGrid, green, nNewGrid = dlrGrid.n, τGrid = dlrGrid.τ; error = nothing, axis = 1, sumrule = nothing, verbose = true)

Fourier transform from imaginary-time to Matsubara-frequency using the DLR representation

#Members:

  • dlrGrid : DLRGrid
  • green : green's function in imaginary-time domain
  • nNewGrid : expected fine Matsubara-freqeuncy grids (integer)
  • τGrid : the imaginary-time grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : the imaginary-time axis in the data green
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source
Lehmann.tau2tauFunction
function tau2tau(dlrGrid, green, τNewGrid, τGrid = dlrGrid.τ; error = nothing, axis = 1, sumrule = nothing, verbose = true)

Interpolation from the old imaginary-time grid to a new grid using the DLR representation

#Members:

  • dlrGrid : DLRGrid
  • green : green's function in imaginary-time domain
  • τNewGrid : expected fine imaginary-time grids
  • τGrid : the imaginary-time grid that Green's function is defined on.
  • error : error the Green's function.
  • axis : the imaginary-time axis in the data green
  • sumrule : enforce the sum rule
  • verbose : true to print warning information
source