QInchworm.topology_eval
QInchworm.topology_eval — ModuleEvaluator for strong-coupling expansion diagrams of a specific topology.
QInchworm.topology_eval.NodeKind — Typeprimitive type NodeKind <: Enum{Int32} 32Node kind classification using @enum.
Possible values: pair_flag, identity_flag, inch_flag, operator_flag.
QInchworm.topology_eval.Node — Typestruct NodeNode in the atomic propagator backbone of a strong-coupling diagram.
Fields
kind::QInchworm.topology_eval.NodeKind: Kind of the nodearc_index::Int64: Index for pair interaction arcoperator_index::Int64: Index of operator
QInchworm.topology_eval.FixedNode — Typestruct FixedNodeNode 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 operatortime::Keldysh.BranchPoint: Contour time point
QInchworm.topology_eval.PairNode — FunctionPairNode(
time::Keldysh.BranchPoint
) -> QInchworm.topology_eval.FixedNode
Return a node that serves as an end of a pair interaction arc fixed at time time.
QInchworm.topology_eval.IdentityNode — FunctionIdentityNode(
time::Keldysh.BranchPoint
) -> QInchworm.topology_eval.FixedNode
Return a fixed node at time time with an associated identity operator.
QInchworm.topology_eval.InchNode — FunctionInchNode(
time::Keldysh.BranchPoint
) -> QInchworm.topology_eval.FixedNode
Return a fixed 'inch' node at time time with an associated identity operator.
QInchworm.topology_eval.OperatorNode — FunctionOperatorNode(
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).
QInchworm.topology_eval.EvolvingSectorBlockMatrix — TypeA type similar to SectorBlockMatrix, but storing two matrices per non-vanishing block. The two matrices represent an operator evaluated at the initial time and at a certain finite time.
QInchworm.topology_eval.EvolvingSectorBlockMatrix — MethodEvolvingSectorBlockMatrix(
sbm::Dict{Int64, Tuple{Int64, Matrix{ComplexF64}}}
) -> Dict{Int64, Tuple{Int64, Matrix{ComplexF64}, Matrix{ComplexF64}}}
Construct an EvolvingSectorBlockMatrix by setting both (initial and finite-time) matrices to those taken from a given SectorBlockMatrix.
QInchworm.topology_eval.get_finite_time — Functionget_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.
QInchworm.topology_eval.update_finite_time! — Functionupdate_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.
QInchworm.topology_eval.TopologyEvaluator — Typestruct TopologyEvaluatorThe 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 problemconf::Vector{QInchworm.topology_eval.Node}: Configuration as a list of nodes arranged in the contour ordertimes::Vector{Keldysh.BranchPoint}: Contour positions of nodes in the configurationtop_to_conf_pos::Vector{Int64}: Correspondence of node positions within a topology and a configurationvar_time_pos::Vector{Int64}: Positions of variable time (non-fixed) nodes within a configurationuse_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 thes-th diagonal block ofexp.P(orexp.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 fromexp.pairs[p]evaluated at the pair of time points corresponding to thea-th arc in a topology.
selected_pair_ints::Vector{Int64}: Indices of pair interactions withinexp.pairsassigned to each interaction arc in a topology.
top_result_mats::Vector{Matrix{ComplexF64}}: Pre-allocated container for per-topology evaluation resultsmatrix_prods::Vector{QInchworm.utility.LazyMatrixProduct{ComplexF64}}: Pre-allocated matrix product evaluators, one per initial subspacenode_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 resulttmr::TimerOutputs.TimerOutput: Internal performance timer
QInchworm.topology_eval.TopologyEvaluator — MethodTopologyEvaluator(
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.
QInchworm.topology_eval.TopologyEvaluator — MethodGiven a single diagram topology, evaluate contribution from all relevant configurations assuming that non-fixed nodes are located at contour time points times.
QInchworm.topology_eval.TopologyEvaluator — MethodGiven a list of diagram topologies, evaluate contribution from all relevant configurations assuming that non-fixed nodes are located at contour time points times.
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 processedNodein 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.