QInchworm.ppgf

Operators and their matrices

QInchworm.ppgf.total_density_operatorFunction
total_density_operator(ed::KeldyshED.EDCore) -> Any

Return the total density operator $\hat N = \sum_i n_i$, where $i$ labels all single-particle basis states used to construct the exact diagonalization object ed.

source
QInchworm.ppgf.operator_matrix_representationFunction
operator_matrix_representation(
    op_expr::KeldyshED.Operators.OperatorExpr{S<:Number},
    ed::KeldyshED.EDCore
) -> Vector{T} where T<:(Matrix{T} where T<:Number)

Make matrix representation of an operator expression op_expr in each invariant subspace (symmetry sector) defined by the exact diagonalization object ed.

NB! Requires that the operator expression does not mix symmetry sectors.

source
QInchworm.ppgf.operator_productFunction
operator_product(
    ed::KeldyshED.EDCore,
    P,
    s_i::Integer,
    z_i,
    z_f,
    vertices
) -> Tuple{Any, Any}

Evaluate a product of vertices at different contour times $z_n, n=1\ldots N$ with the pseudo-particle Green's functions sandwiched in between. The product is padded with the PPGFs $P(z_1, z_i)$ and $P(z_f, z_N)$ at the respective ends of the contour segment $[z_i, z_f]$.

vertices is a contour-time ordered list of triples (z_n, c_n, o_n) were:

  • z_n is a contour time,
  • c_n is +1/-1 for creation/annihilation operator respectively, and
  • o_n is a spin-orbital index.

Parameters

  • ed: An object defining the exact diagonalization problem.
  • P: The pseudo-particle Green's function as a list of its diagonal blocks.
  • s_i: Initial symmetry sector, in which the rightmost PPGF is acting.
  • z_i: Initial contour time $z_i$.
  • z_f: Final contour time $z_f$.
  • vertices: The list of vertices.

Returns

The evaluated matrix product and the final symmetry sector, in which the leftmost PPGF is acting.

source

Pseudo-particle Green's functions

QInchworm.ppgf.atomic_ppgf!Function
atomic_ppgf!(P::Vector, ed::KeldyshED.EDCore; Δλ)

In-place version of atomic_ppgf() that writes the computed PPGF into its first argument P. If Δλ is non-zero, then $P(z, z')$ is multiplied by $e^{-i\Delta\lambda (z-z')}$.

source
QInchworm.ppgf.first_order_spgfFunction
first_order_spgf(
    P::Vector{Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid}},
    ed::KeldyshED.EDCore,
    o1,
    o2
) -> Any

Compute the first order pseudo-particle diagram contribution to the single-particle Green's function $g_{o_1, o_2}(z, z')$ defined on the full Keldysh contour.

Parameters

  • P: Pseudo-particle Green's function.
  • ed: An object defining the exact diagonalization problem.
  • o1: First index of the single-particle Green's function to be computed.
  • o2: Second index of the single-particle Green's function to be computed.

Returns

The computed single-particle Green's function.

source
first_order_spgf(
    P::Vector{Keldysh.ImaginaryTimeGF{ComplexF64, false}},
    ed::KeldyshED.EDCore,
    o1,
    o2
) -> Any

Compute the first order pseudo-particle diagram contribution to the single-particle Green's function $g_{o_1, o_2}(\tau)$ defined on the imaginary time segment.

Parameters

  • P: Pseudo-particle Green's function.
  • ed: An object defining the exact diagonalization problem.
  • o1: First index of the single-particle Green's function to be computed.
  • o2: Second index of the single-particle Green's function to be computed.

Returns

The computed single-particle Green's function.

source
QInchworm.ppgf.check_ppgf_real_time_symmetriesFunction
check_ppgf_real_time_symmetries(
    P::Vector{Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid}},
    ed::KeldyshED.EDCore
) -> Bool

Check whether a given pseudo-particle Green's function P obeys all symmetry relations between its Keldysh components.

Parameters

  • P: Pseudo-particle Green's function to check.
  • ed: An object defining the respective exact diagonalization problem.
source
QInchworm.ppgf.set_ppgf!Function
set_ppgf!(
    P::Vector{QInchworm.spline_gf.IncSplineImaginaryTimeGF{ComplexF64, false}},
    τ_i::Keldysh.TimeGridPoint,
    τ_f::Keldysh.TimeGridPoint,
    val::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}}}
)

Set the value of P corresponding to a given pair of imaginary time points $(\tau_f, \tau_i)$. This method is defined for the spline-interpolated imaginary-time propagators.

Parameters

  • P: Pseudo-particle Green's function.
  • τ_i: Initial imaginary time $\tau_i$.
  • τ_f: Final imaginary time $\tau_f$.
  • val: Block matrix to set $P(\tau_f, \tau_i)$ to. Expected to be block-diagonal.
source
set_ppgf!(
    P::Union{Vector{Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid}}, Vector{Keldysh.ImaginaryTimeGF{ComplexF64, false}}},
    t_i::Keldysh.TimeGridPoint,
    t_f::Keldysh.TimeGridPoint,
    val::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}}}
)

Set the value of P corresponding to a given pair of contour time points $(t_f, t_i)$.

Parameters

  • P: Pseudo-particle Green's function.
  • t_i: Initial contour time $t_i$.
  • t_f: Final contour time $t_f$.
  • val: Block matrix to set $P(t_f, t_i)$ to. Expected to be block-diagonal.
source
QInchworm.ppgf.set_ppgf_initial_conditions!Function
set_ppgf_initial_conditions!(
    P::Union{Vector{Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid}}, Vector{Keldysh.ImaginaryTimeGF{ComplexF64, false}}}
)

Given a pseudo-particle Green's function P, set its values to zero except for the same-time components $P(z, z) = -i$.

source
QInchworm.ppgf.ppgf_real_time_initial_conditions!Function
ppgf_real_time_initial_conditions!(
    P::Vector{Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid}},
    ed::KeldyshED.EDCore
)

Given a pseudo-particle Green's function P, set its values at the real branch edges $t = 0$ to be consistent with values on the imaginary time branch.

Parameters

  • P: Pseudo-particle Green's function.
  • ed: Exact diagonalization object used to derive statistical sign pre-factors of PPGF sectors.
source
QInchworm.ppgf.set_ppgf_symmetric!Function
set_ppgf_symmetric!(
    P_s::Keldysh.GenericTimeGF{ComplexF64, false, Keldysh.FullTimeGrid},
    n,
    z1::Keldysh.TimeGridPoint,
    z2::Keldysh.TimeGridPoint,
    value
) -> Any

Set real-time pseudo-particle Green's function symmetry connected time pairs.

Parameters

  • P_s: Diagonal block of the PPGF to be updated.
  • n: The number of particles in the corresponding sector.
  • z1: First argument of the PPGF.
  • z2: Second argument of the PPGF (must lie on the backward branch).
  • value: Value to set elements of the PPGF to.
source
QInchworm.ppgf.initial_ppgf_derivativeFunction
initial_ppgf_derivative(
    ed::KeldyshED.EDCore,
    β::Float64
) -> Vector{Any}

Compute the imaginary time derivative of the atomic pseudo-particle Green's function, $\partial_\tau P(\tau)$ at $\tau=0$.

Parameters

  • ed: Exact diagonalization object defining the atomic propagator.
  • β: Inverse temperature.

Returns

Value of the derivative as a block-diagonal matrix (a list of blocks).

source
QInchworm.ppgf.reduced_ppgfFunction
reduced_ppgf(
    P::Vector{<:Keldysh.AbstractTimeGF},
    ed::KeldyshED.EDCore,
    target_soi::KeldyshED.Hilbert.SetOfIndices
) -> Any

Take a partial trace of a pseudo-particle Green's function.

Parameters

  • P: Pseudo-particle Green's function.
  • ed: Exact diagonalization object compatible with P.
  • target_soi: A subset of creation/annihilation operator labels defining the target subsystem, in which the reduced PPGF acts.

Returns

The reduced PPGF written in the Fock state basis of the target subsystem.

source