QInchworm.spline_gf
SplineInterpolatedGF
QInchworm.spline_gf.make_interpolant
— Methodmake_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.
QInchworm.spline_gf.update_interpolant!
— Methodupdate_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.
QInchworm.spline_gf.update_interpolants!
— Methodupdate_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.
Interpolations.interpolate
— Methodinterpolate(
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
.
Interpolations.interpolate
— Methodinterpolate(
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
.
IncSplineImaginaryTimeGF
QInchworm.spline_gf.IncSplineImaginaryTimeGF
— Typestruct 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 functioninterpolants::Any
: Incremental spline interpolants, one object per matrix element of GF
QInchworm.spline_gf.IncSplineImaginaryTimeGF
— MethodIncSplineImaginaryTimeGF(
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.
QInchworm.spline_gf.IncSplineImaginaryTimeGF
— MethodIncSplineImaginaryTimeGF(
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.
QInchworm.spline_gf.make_inc_interpolant
— Methodmake_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.
Base.zero
— Methodzero(
G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T<:Number, false}
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF
Make a zero matrix-valued IncSplineImaginaryTimeGF
object similar to G_int
.
Base.zero
— Methodzero(
G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF{T<:Number, true}
) -> QInchworm.spline_gf.IncSplineImaginaryTimeGF
Make a zero scalar-valued IncSplineImaginaryTimeGF
object similar to G_int
.
QInchworm.utility.extend!
— Methodextend!(
G_int::QInchworm.spline_gf.IncSplineImaginaryTimeGF,
val
) -> Any
Extend the underlying IncrementalSpline
objects stored in G_int
with a value val
.
Interpolations.interpolate
— Methodinterpolate(
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
.
Interpolations.interpolate
— Methodinterpolate(
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
.