Reference

Methods

QFiND.AAAfittedSD — Method
(specdens::AAAfittedSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density fitted by the AAA algorithm.

source
QFiND.BrownianSD — Method
(specdens::BrownianSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density for the Brownian oscillator model.

source
QFiND.DrudeSD — Method
(specdens::DrudeSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density for the Drude-Lorentz model.

source
QFiND.OhmicExpSD — Method
(specdens::OhmicExpSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the Ohmic spectral density with an exponential cutoff.

source
QFiND.OhmicGaussSD — Method
(specdens::OhmicGaussSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the Ohmic spectral density with a Gaussian cutoff.

source
QFiND.PowerLawExpSD — Method
(specdens::PowerLawExpSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density for the Power-law with exponential cutoff model.

source
QFiND.SemicircleSD — Method
(specdens::SemicircleSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density for the Semicircle model.

source
QFiND.TannorMeyerSD — Method
(specdens::TannorMeyerSD)(ω::Float64; scale::Float64=1.0) -> Float64

Compute the spectral density for the Tannor-Meyer model.

source
QFiND.balanced_truncation — Method
balanced_truncation(a::AbstractVector{<:Number}, c::AbstractVector{<:Number}, eps::Float64) :: Exponentials

Given the exponents a and coefficients c of a sum of exponentials, compute a new sum of exponentials with a reduced number of terms for a given tolerance eps. The initial exponents must have positive real part.

source
QFiND.balanced_truncation — Method
balanced_truncation(a::AbstractVector{<:Number}, c::AbstractVector{<:Number}, M::Int) :: Exponentials

Given the exponents a and coefficients c of a sum of exponentials, compute a new sum of exponentials with a given number of terms M. The initial exponents must have positive real part.

source
QFiND.bsdo_discr — Method
bsdo(sbeta, ω::AbstractVector{Float64}, M_sp::Int)

Compute the discretization of the QNSD using the BSDO method.

source
QFiND.chebyshev_bcf — Method
chebyshev_bcf(cheb::ChebyshevExpansion)

Create a bath correlation function using Chebyshev expansion.

source
QFiND.chebyshev_bcf — Method
chebyshev_bcf(sd::SpectralDensity, Temp::Real, ω_min::Real, ω_max::Real, 
              n_terms::Int; kwargs...)

Create a bath correlation function using Chebyshev expansion.

source
QFiND.chebyshev_expansion — Method
chebyshev_expansion(sd::SpectralDensity, Temp::Real, ω_min::Real, ω_max::Real, n_terms::Int; 
                   scale::Float64=1.0, rtol::Real=1e-8, atol::Real=1e-12)

Compute Chebyshev expansion coefficients for a bath correlation function using QuadGK.

source
QFiND.evaluate_correlation — Method
evaluate_correlation(cheb::ChebyshevExpansion, t::Real)

Evaluate the correlation function at time t using Chebyshev expansion.

source
QFiND.filter_poles_by_linewidth — Method
filter_poles_by_linewidth(poles, residues; min_width=0.0, max_width=Inf)

Filter poles and residues based on the imaginary part (linewidth) range.

Arguments

  • poles::Vector{ComplexF64}: Vector of poles
  • residues::Vector{ComplexF64}: Vector of residues
  • min_width::Real: Minimum linewidth (default: 0.0)
  • max_width::Real: Maximum linewidth (default: Inf)

Returns

  • Named tuple (poles, residues) for poles with minwidth <= |Im(p)| < maxwidth
source
QFiND.id_freq — Method
id_freq_rank(f::AbstractMatrix{ComplexF64}, frank::Int, rnd::Bool)

Perform interpolative decomposition on matrix f with a specified rank frank.

source
QFiND.id_freq — Method
id_freq_eps(f::AbstractMatrix{Float64}, eps::Real, rnd::Bool)

Perform interpolative decomposition on matrix f with error tolerance eps.

source
QFiND.id_freq — Method
id_freq_rank(f::AbstractMatrix{Float64}, frank::Int, rnd::Bool)

Perform interpolative decomposition on matrix f with a specified rank frank.

source
QFiND.id_freq — Method
id_freq_eps(f::AbstractMatrix{Float64}, eps::Real, rnd::Bool)

Perform interpolative decomposition on matrix f with error tolerance eps.

source
QFiND.id_time — Method
id_time(f::AbstractMatrix{ComplexF64}, frank::Int, rnd::Bool)

Perform interpolative decomposition on matrix f with a specified rank frank.

source
QFiND.nnls_weight — Method
nnls_weight(t, B)

Estimate the coefficients (amplitudes) by solving a nonnegative least‐squares (NNLS) problem.

source
QFiND.poles_to_exponents — Method
poles_to_exponents(r::Barycentric)

Convert Barycentric rational approximation to exponential sum coefficients.

source
QFiND.poles_to_exponents — Method
poles_to_exponents(poles, residues)

Convert poles and residues of Sβ(ω) to exponential sum coefficients for correlation function.

Given the partial fraction decomposition: S̃β(ω) = Σk ηk / (ω - zk)

The correlation function is: C̃(t) = Σk ck exp(-a_k t)

where z'k are poles in the lower half plane (Im(zk) < 0), ck = -i ηk, and ak = i z'k.

Arguments

  • poles::Vector: All poles z_k (can be real or complex)
  • residues::Vector: Corresponding residues η_k

Returns

  • Named tuple (c, a) where C(t) = Σk ck exp(-a_k t)
    • c: Exponential coefficients ck = -i ηk
    • a: Exponents ak = i z'k (should have Re(a_k) > 0 for decay)
source
QFiND.sort_poles_by_linewidth — Method
sort_poles_by_linewidth(poles, residues; rev=false)

Sort poles and residues by the absolute value of the imaginary part (linewidth).

Arguments

  • poles::Vector{ComplexF64}: Vector of poles
  • residues::Vector{ComplexF64}: Vector of residues
  • rev::Bool: If true, sort in descending order (default: false, ascending)

Returns

  • Named tuple (poles, residues) sorted by linewidth
source
QFiND.split_poles_by_linewidth — Method
split_poles_by_linewidth(r::Barycentric; threshold)

Split poles and residues from a Barycentric rational approximation based on linewidth.

source
QFiND.split_poles_by_linewidth — Method
split_poles_by_linewidth(poles, residues; threshold)

Split poles and residues into two groups based on the imaginary part (linewidth) of the poles.

Arguments

  • poles::Vector{ComplexF64}: Vector of poles
  • residues::Vector{ComplexF64}: Vector of residues corresponding to poles
  • threshold::Real: Threshold for the absolute value of the imaginary part

Returns

  • narrow: Named tuple (poles, residues) for poles with |Im(p)| < threshold (narrow linewidth)
  • broad: Named tuple (poles, residues) for poles with |Im(p)| >= threshold (broad linewidth)
source