Functional DLR builder
This module provides a DLR builder based on a functional QR algorithm. It can generate DLR at extremely low temperature.
Lehmann.Functional.build
— Functionfunction build(dlrGrid, print::Bool = true)
Construct discrete Lehmann representation
#Arguments:
dlrGrid
: struct that contains the information to construct the DLR grid. The following entries are required: Λ: the dimensionless scale β*Euv, rtol: the required relative accuracy, isFermi: fermionic or bosonic, symmetry: particle-hole symmetry/antisymmetry or noneprint
: print the internal information or not
Lehmann.Functional.kernel
— Methodfunction kernel(ω::Float)
zero-temperature kernel $\frac{1-e^{-Λx}}{x}$
Lehmann.Functional.mGramSchmidt
— Methodmodified Gram-Schmidt process
Lehmann.Functional.projKernel
— Methodfunction projKernel(basis, proj)
$\left<K(g_i), K(g_j)\right>$
Lehmann.Functional.projPHA_τ
— Methodfunction projPHA_τ(Λ::Float, t1::Float, t2::Float)
particle-hole asymmetric kernel: $K(ω, τ)=e^{-ωτ}-e^{-ω(β-τ)}$
\[KK=\int_0^{Λ} dω K(ω,t_1)K(ω,t_2)=\frac{1-e^{-(t_1+t_2)}}{t_1+t_2}+\frac{1-e^{-(2β-t_1-t_2)}}{2β-t_1-t_2}-\frac{1-e^{-(β+t_1-t_2)}}{β+t_1-t_2}-\frac{1-e^{-(β-t_1+t_2)}}{β-t_1+t_2}\]
Lehmann.Functional.projPHA_ω
— Methodfunction projPHA_ω(Λ::Float, ω1::Float, ω2::Float)
particle=hole asymmetric kernel: $K(ω, τ)=e^{-ωτ}-e^{-ω(β-τ)}$
\[KK=\int_0^{1/2} dτ K(ω_1,τ)K(ω_2,τ)=\frac{1-e^{-(ω_1+ω_2)}}{ω_1+ω_2}-\frac{e^{-ω_2}-e^{-ω_1}}{ω_1-ω_2}\]
Lehmann.Functional.projPH_τ
— Methodfunction projPH_τ(Λ::Float, t1::Float, t2::Float)
particle-hole symmetric kernel: $K(ω, τ)=e^{-ω*τ}+e^{-ω*(β-τ)}$
\[KK=\int_0^{Λ} dω K(ω,t_1)K(ω,t_2)=\frac{1-e^{-(t_1+t_2)}}{t_1+t_2}+\frac{1-e^{-(2β-t_1-t_2)}}{2β-t_1-t_2}+\frac{1-e^{-(β+t_1-t_2)}}{β+t_1-t_2}+\frac{1-e^{-(β-t_1+t_2)}}{β-t_1+t_2}\]
Lehmann.Functional.projPH_ω
— Methodfunction projPH_ω(Λ::Float, ω1::Float, ω2::Float)
particle-hole symmetric kernel: $K(ω, τ)=e^{-ωτ}+e^{-ω(β-τ)}$
\[KK=\int_0^{1/2} dτ K(ω_1,τ)K(ω_2,τ)=\frac{1-e^{-(ω_1+ω_2)}}{ω_1+ω_2}+\frac{e^{-ω_2}-e^{-ω_1}}{ω_1-ω_2}\]
Lehmann.Functional.projqq
— Methodprojqq(basis, q1::Vector{Float}, q2::Vector{Float})
return $\left<q1, q2\right> = \sum_{jk} c_j d_k \left<K_j, K_k\right>$ where $q_1=\sum_j c_j K_j$ and $q_2=\sum_k d_k K_k$