QInchworm.topology_eval

QInchworm.topology_eval.NodeKindType
primitive type NodeKind <: Enum{Int32} 32

Node kind classification using @enum.

Possible values: pair_flag, identity_flag, inch_flag, operator_flag.

source
QInchworm.topology_eval.NodeType
struct Node

Node in the atomic propagator backbone of a strong-coupling diagram.

Fields

  • kind::QInchworm.topology_eval.NodeKind: Kind of the node

  • arc_index::Int64: Index for pair interaction arc

  • operator_index::Int64: Index of operator

source
QInchworm.topology_eval.FixedNodeType
struct FixedNode

Node in the atomic propagator backbone of a strong-coupling diagram fixed at a certain contour time point.

Fields

  • node::QInchworm.topology_eval.Node: Reference to operator

  • time::Keldysh.BranchPoint: Contour time point

source
QInchworm.topology_eval.PairNodeFunction
PairNode(
    time::Keldysh.BranchPoint
) -> QInchworm.topology_eval.FixedNode

Return a node that serves as an end of a pair interaction arc fixed at time time.

source
QInchworm.topology_eval.InchNodeFunction
InchNode(
    time::Keldysh.BranchPoint
) -> QInchworm.topology_eval.FixedNode

Return a fixed 'inch' node at time time with an associated identity operator.

source
QInchworm.topology_eval.OperatorNodeFunction
OperatorNode(
    time::Keldysh.BranchPoint,
    operator_pair_index::Int64,
    operator_index::Int64
) -> QInchworm.topology_eval.FixedNode

Return a fixed operator node at time time with an associated operator. The actual operator is stored in an Expansion structure and is uniquely identified by the pair (operator_pair_index, operator_index).

source
QInchworm.topology_eval.get_finite_timeFunction
get_finite_time(
    esbm::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}, Matrix{ComplexF64}}},
    s::Int64
) -> Matrix{ComplexF64}

Get the finite-time matrix in esbm corresponding to the subspace s.

source
QInchworm.topology_eval.update_finite_time!Function
update_finite_time!(
    esbm::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}, Matrix{ComplexF64}}},
    p
)

Update the finite-time matrices in esbm by multiplying the initial matrices by a block-diagonal matrix p.

source
QInchworm.topology_eval.TopologyEvaluatorType
struct TopologyEvaluator

The evaluation engine for the strong-coupling expansion diagrams.

In the following, a sequence of Node's contributing to a diagram of a certain topology is referred to as 'configuration'.

Fields

  • exp::QInchworm.expansion.Expansion: Pseudo-particle expansion problem

  • conf::Vector{QInchworm.topology_eval.Node}: Configuration as a list of nodes arranged in the contour order

  • times::Vector{Keldysh.BranchPoint}: Contour positions of nodes in the configuration

  • top_to_conf_pos::Vector{Int64}: Correspondence of node positions within a topology and a configuration

  • var_time_pos::Vector{Int64}: Positions of variable time (non-fixed) nodes within a configuration

  • use_bold_prop::Bool: Must the bold PPGFs be used?

  • ppgf_mats::Matrix{Matrix{ComplexF64}}: PPGFs evaluated at all relevant pairs of time arguments. ppgf_mats[i, s] is the s-th diagonal block of exp.P (or exp.P0) evaluated at the pair of time points $(t_{i+1}, t_i)$.

  • pair_ints::Matrix{ComplexF64}: Pair interaction arcs evaluated at all relevant pairs of time arguments.

    pair_ints[a, p] is the propagator from exp.pairs[p] evaluated at the pair of time points corresponding to the a-th arc in a topology.

  • selected_pair_ints::Vector{Int64}: Indices of pair interactions within exp.pairs assigned to each interaction arc in a topology.
  • top_result_mats::Vector{Matrix{ComplexF64}}: Pre-allocated container for per-topology evaluation results

  • matrix_prods::Vector{QInchworm.utility.LazyMatrixProduct{ComplexF64}}: Pre-allocated matrix product evaluators, one per initial subspace

  • node_mats::Vector{Union{Dict{Int64, Tuple{Int64, Matrix{ComplexF64}, Matrix{ComplexF64}}}, Matrix{Dict{Int64, Tuple{Int64, Matrix{ComplexF64}, Matrix{ComplexF64}}}}}}: Pre-allocated space for matrices of nodes multiplied by a PPGF from the right. For the pair nodes, matrices for all pair interactions are stored.

  • result::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}}}: Pre-allocated container for final evaluation result

  • tmr::TimerOutputs.TimerOutput: Internal performance timer

source
QInchworm.topology_eval.TopologyEvaluatorMethod
TopologyEvaluator(
    exp::QInchworm.expansion.Expansion,
    order::Int64,
    use_bold_prop::Bool,
    fixed_nodes::Dict{Int64, QInchworm.topology_eval.FixedNode};
    tmr
) -> QInchworm.topology_eval.TopologyEvaluator

Parameters

  • exp: Strong-coupling expansion problem.
  • order: Expansion order of the diagrams (the number of interaction arcs).
  • use_bold_prop: Must the bold PPGFs be used in the diagrams?
  • fixed_nodes: List of fixed nodes in a configuration along with their positions.
  • tmr: Internal performance timer.
source
QInchworm.topology_eval._traverse_configuration_tree!Function
_traverse_configuration_tree!(
    eval::QInchworm.topology_eval.TopologyEvaluator,
    pos::Int64,
    s_i::Int64,
    s_f::Int64,
    pair_int_weight::ComplexF64
) -> Union{Nothing, Bool, Int64}

Recursively traverse a tree of all configurations stemming from a given topology and contributing to the quantity of interest. The result is accumulated in eval.top_result_mats.

Parameters

  • eval: Evaluator object.
  • pos: Position of the currently processed Node in the configuration.
  • s_i: Left block index of the matrix representation of the current node.
  • s_f: Right block index expected at the final node.
  • pair_int_weight: Current weight of the pair interaction contribution.
source