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

Making Kernels

ACFlow.build_kernelFunction
build_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_symmFunction
build_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_blurFunction
make_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_spaceFunction
make_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_peaksFunction
make_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.