QInchworm.spline_gf

SplineInterpolatedGF

QInchworm.spline_gf.make_interpolantMethod
make_interpolant(
    GF::Keldysh.ImaginaryTimeGF{T<:Number, scalar},
    k,
    l,
    τ_max::Keldysh.TimeGridPoint
) -> Interpolations.ScaledInterpolation{_A, 1, Interpolations.BSplineInterpolation{T, N, TCoefs, IT, Axs}, Interpolations.BSpline{Interpolations.Cubic{Interpolations.Line{Interpolations.OnGrid}}}, <:Tuple{LinRange{T, Int64} where T}} where {_A, T, N, TCoefs<:AbstractArray, IT<:Union{Interpolations.NoInterp, Tuple{Vararg{Union{Interpolations.NoInterp, Interpolations.BSpline}}}, Interpolations.BSpline}, Axs<:Tuple{Vararg{AbstractUnitRange, N}}}

Make a cubic B-spline interpolant from GF's data corresponding to its matrix indices k, l. Data points from the start of the grid up to τ_max are used.

source
QInchworm.spline_gf.update_interpolant!Method
update_interpolant!(
    G_int::QInchworm.spline_gf.SplineInterpolatedGF{Keldysh.ImaginaryTimeGF{T<:Number, scalar}, T<:Number, scalar},
    k,
    l;
    τ_max
) -> Interpolations.ScaledInterpolation{_A, 1, Interpolations.BSplineInterpolation{T, N, TCoefs, IT, Axs}, Interpolations.BSpline{Interpolations.Cubic{Interpolations.Line{Interpolations.OnGrid}}}, <:Tuple{LinRange{T, Int64} where T}} where {_A, T, N, TCoefs<:AbstractArray, IT<:Union{Interpolations.NoInterp, Tuple{Vararg{Union{Interpolations.NoInterp, Interpolations.BSpline}}}, Interpolations.BSpline}, Axs<:Tuple{Vararg{AbstractUnitRange, N}}}

Update the interpolant stored in G_int and corresponding to its matrix indices k, l. The updated interpolant interpolates data points of G_int.GF from the start of the grid up to τ_max. By default, the entire data array is used.

source
QInchworm.spline_gf.update_interpolants!Method
update_interpolants!(
    G_int::QInchworm.spline_gf.SplineInterpolatedGF{Keldysh.ImaginaryTimeGF{T<:Number, scalar}, T<:Number, scalar};
    τ_max
)

Update all interpolants stored in G_int. The updated interpolants interpolate data points of G_int.GF from the start of the grid up to τ_max. By default, the entire data array is used.

source
Interpolations.interpolateMethod
interpolate(
    G_int::QInchworm.spline_gf.SplineInterpolatedGF{Keldysh.ImaginaryTimeGF{T, true}, T, true},
    t1::Keldysh.BranchPoint,
    t2::Keldysh.BranchPoint
) -> Any

Evaluate the spline-interpolated Green's function G_int at the contour time arguments t1, t2.

source
Interpolations.interpolateMethod
interpolate(
    G_int::QInchworm.spline_gf.SplineInterpolatedGF{Keldysh.ImaginaryTimeGF{T, false}, T, false},
    t1::Keldysh.BranchPoint,
    t2::Keldysh.BranchPoint
) -> Any

Evaluate the spline-interpolated Green's function G_int at the contour time arguments t1, t2.

source

IncSplineImaginaryTimeGF

QInchworm.spline_gf.IncSplineImaginaryTimeGFType
struct IncSplineImaginaryTimeGF{T, scalar} <: Keldysh.AbstractTimeGF{T, scalar}

Wrapper around an imaginary time Green's function object that supports interpolation based on the IncrementalSpline.

The wrapper supports square bracket access to the wrapped object, direct access to the grid property, eltype(), Keldysh.norbitals() and Keldysh.TimeDomain(). Evaluation at an arbitrary imaginary time point (via operator ()) is carried out by a stored set of pre-computed IncrementalSpline interpolants.

Fields

  • GF::Keldysh.ImaginaryTimeGF: Wrapped Green's function

  • interpolants::Any: Incremental spline interpolants, one object per matrix element of GF

source
QInchworm.spline_gf.IncSplineImaginaryTimeGFMethod
IncSplineImaginaryTimeGF(
    GF::Keldysh.ImaginaryTimeGF{T<:Number, true},
    derivative_at_0::Number
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF{T, true} where T<:Number

Make a IncSplineImaginaryTimeGF wrapper around a scalar-valued GF and initialize incremental interpolants of its data. derivative_at_0 is imaginary time derivative of GF at $\tau=0$ needed to compute the first segment of the interpolants.

source
QInchworm.spline_gf.IncSplineImaginaryTimeGFMethod
IncSplineImaginaryTimeGF(
    GF::Keldysh.ImaginaryTimeGF{T<:Number, false},
    derivative_at_0::Array{T<:Number, 2}
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF{T, false} where T<:Number

Make a IncSplineImaginaryTimeGF wrapper around a matrix-valued GF and initialize incremental interpolants of its data. derivative_at_0 is imaginary time derivative of GF at $\tau=0$ needed to compute the first segment of the interpolants.

source
QInchworm.spline_gf.make_inc_interpolantMethod
make_inc_interpolant(
    GF::Keldysh.ImaginaryTimeGF{T<:Number, scalar},
    k,
    l,
    derivative_at_0::Number
) -> QInchworm.utility.IncrementalSpline

Make an incremental spline interpolant from GF's data and corresponding to its matrix indices k, l. derivative_at_0 is imaginary time derivative of GF[k, l] at $\tau=0$ needed to compute the first segment of the interpolant.

source
Base.zeroMethod
zero(
    G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T<:Number, false}
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF

Make a zero matrix-valued IncSplineImaginaryTimeGF object similar to G_int.

source
Base.zeroMethod
zero(
    G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T<:Number, true}
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF

Make a zero scalar-valued IncSplineImaginaryTimeGF object similar to G_int.

source
Interpolations.interpolateMethod
interpolate(
    G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T, true},
    τ1::Keldysh.BranchPoint,
    τ2::Keldysh.BranchPoint
) -> Any

Evaluate the spline-interpolated scalar-valued Green's function G_int at the imaginary time arguments τ1, τ2.

source
Interpolations.interpolateMethod
interpolate(
    G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T, false},
    τ1::Keldysh.BranchPoint,
    τ2::Keldysh.BranchPoint
) -> Any

Evaluate the spline-interpolated matrix-valued Green's function G_int at the imaginary time arguments τ1, τ2.

source