Kernels
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.
Contents
Index
ACFlow.build_kernel
ACFlow.build_kernel_symm
ACFlow.make_blur
ACFlow.make_gauss_peaks
ACFlow.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
.