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$