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} 32
Node kind classification using @enum
.
Possible values: pair_flag
, identity_flag
, inch_flag
, operator_flag
.
QInchworm.topology_eval.Node
— Typestruct Node
Node 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 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 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 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 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.pairs
assigned 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 processedNode
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.