Build kernel functions.
The ACFlow toolkit supports twelve types of kernel functions. They are:
- Fermionic imaginary time kernel (
ktype = "fermi", grid = "ftime") - Fermionic fragment imaginary time kernel (
ktype = "fermi", grid = "fpart") - Fermionic Matsubara kernel (
ktype = "fermi", grid = "ffreq") - Fermionic fragment Matsubara kernel (
ktype = "fermi", grid = "ffrag") - Bosonic imaginary time kernel (
ktype = "boson", grid = "btime") - Bosonic fragment imaginary time kernel (
ktype = "boson", grid = "bpart") - Bosonc Matsubara kernel (
ktype = "boson", grid = "bfreq") - Bosonc fragment Matsubara kernel (
ktype = "boson", grid = "bfrag") - Symmetric bosonic imaginary time kernel (
ktype = "bsymm", grid = "btime") - Symmetric bosonic fragment imaginary time kernel (
ktype = "bsymm", grid = "bpart") - Symmetric bosonic Matsubara kernel (
ktype = "bsymm", grid = "bfreq") - Symmetric bosonic fragment Matsubara kernel (
ktype = "bsymm", grid = "bfrag")
Note that the MaxEnt, StochAC, and StochSK solvers rely on the make_kernel() function to provide the kernel function. However, the kernel function or matrix used in the StochOM and StochPX solvers are implemented in their own calc_lambda() functions.
ACFlow.build_kernelACFlow.build_kernel_symmACFlow.make_blurACFlow.make_gauss_peaksACFlow.make_singular_space
Making Kernels
ACFlow.build_kernel — Functionbuild_kernel(am::AbstractMesh, fg::FermionicImaginaryTimeGrid)Try to build fermionic kernel function in imaginary time axis.
Arguments
- am -> Real frequency mesh.
- fg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, FermionicImaginaryTimeGrid.
build_kernel(am::AbstractMesh, fg::FermionicFragmentTimeGrid)Try to build fermionic kernel function in imaginary time axis. Note that fg contains incomplete imaginary time data.
Arguments
- am -> Real frequency mesh.
- fg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, FermionicFragmentTimeGrid.
build_kernel(am::AbstractMesh, fg::FermionicMatsubaraGrid)Try to build fermionic kernel function in Matsubara frequency axis. This function support the so-called preblur algorithm.
Arguments
- am -> Real frequency mesh.
- fg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, FermionicMatsubaraGrid.
build_kernel(am::AbstractMesh, fg::FermionicFragmentMatsubaraGrid)Try to build fermionic kernel function in Matsubara frequency axis. This function support the so-called preblur algorithm.
Arguments
- am -> Real frequency mesh.
- fg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, FermionicFragmentMatsubaraGrid.
build_kernel(am::AbstractMesh, bg::BosonicImaginaryTimeGrid)Try to build bosonic kernel function in imaginary time axis.
Arguments
- am -> Real frequency mesh.
- bg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, BosonicImaginaryTimeGrid.
build_kernel(am::AbstractMesh, bg::BosonicFragmentTimeGrid)Try to build bosonic kernel function in imaginary time axis. Note that bg contains incomplete imaginary time data.
Arguments
- am -> Real frequency mesh.
- bg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, BosonicFragmentTimeGrid.
build_kernel(am::AbstractMesh, bg::BosonicMatsubaraGrid)Try to build bosonic kernel function in Matsubara frequency axis.
Arguments
- am -> Real frequency mesh.
- bg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, BosonicMatsubaraGrid.
build_kernel(am::AbstractMesh, bg::BosonicFragmentMatsubaraGrid)Try to build bosonic kernel function in Matsubara frequency axis.
Arguments
- am -> Real frequency mesh.
- bg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, BosonicFragmentMatsubaraGrid.
ACFlow.build_kernel_symm — Functionbuild_kernel_symm(am::AbstractMesh, bg::BosonicImaginaryTimeGrid)Try to build bosonic kernel function in imaginary time axis (just for correlator of Hermitian operator only).
Arguments
- am -> Real frequency mesh.
- bg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, BosonicImaginaryTimeGrid.
build_kernel_symm(am::AbstractMesh, bg::BosonicFragmentTimeGrid)Try to build bosonic kernel function in imaginary time axis (just for correlator of Hermitian operator only). Note that bg contains incomplete imaginary time data.
Arguments
- am -> Real frequency mesh.
- bg -> Imaginary time grid.
Returns
- kernel -> Kernel function, K(τ,ω).
See also: AbstractMesh, BosonicFragmentTimeGrid.
build_kernel_symm(am::AbstractMesh, bg::BosonicMatsubaraGrid)Try to build bosonic kernel function in Matsubara frequency axis (just for correlator of Hermitian operator only). This function support the so-called preblur algorithm.
Arguments
- am -> Real frequency mesh.
- bg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, BosonicMatsubaraGrid.
build_kernel_symm(am::AbstractMesh, bg::BosonicFragmentMatsubaraGrid)Try to build bosonic kernel function in Matsubara frequency axis (just for correlator of Hermitian operator only). This function support the so-called preblur algorithm.
Arguments
- am -> Real frequency mesh.
- bg -> Matsubara frequency grid.
Returns
- kernel -> Kernel function, K(iωₙ,ω).
See also: AbstractMesh, BosonicFragmentMatsubaraGrid.
Utilities
ACFlow.make_blur — Functionmake_blur(am::AbstractMesh, A::Vector{F64}, blur::F64)Try to blur the given spectrum A, which is defined in am. And blur is the blur parameter.
Arguments
- am -> Real frequency mesh.
- A -> Spectral function.
- blur -> Blur parameter. It must be larger than 0.0.
Returns
- A -> It is updated in this function.
ACFlow.make_singular_space — Functionmake_singular_space(kernel::Matrix{F64})Perform singular value decomposition for the input matrix kernel.
kernel = U Σ Vᵀ
Supposed that kernel is a m × n matrix, then U is m × m, Σ is m × n, and V is n × n. For Σ, only the diagonal elements are non-zero.
Arguments
- kernel -> Fermionic or bosonic kernel matrix.
Returns
- U -> A m × n matrix.
- S -> Diagonal elements of Σ.
- V -> A n × n matrix.
ACFlow.make_gauss_peaks — Functionmake_gauss_peaks(blur::F64)Try to generate a gaussian peak along a linear mesh, whose energy range is [-5 * blur, +5 * blur]. The number of mesh points is fixed to 201.
Arguments
- blur -> This parameter is used to control the width of gaussian peak.
Returns
- bmesh -> A linear mesh in [-5 * blur, 5 * blur].
- gaussian -> A gaussian peak at
bmesh.