Measurements
Below is a list of all observables that can be measured by the solver, along with their definitions. Details on the
implementation of the measurements can be found in the PhD thesis of T. Ayral (chapter 11). Each measurement can be
turned on or off via the corresponding parameter of the solve
method.
Imaginary time Green’s function
The imaginary time Green’s function is defined as
where \(A\) is a block index and \(i, j\) are inner indices within the block. The block structure
of \(G_{ij}^A(\tau)\) (valid values of the indices) is set by gf_struct
in the constr_params
.
It is measured on a uniform time grid, whose number of points is set by n_tau_G
in the solve_params
(defaults to n_tau
in constr_params
).
Warning
The value of n_tau
supplied in the constr_params
and the number of points in the \(\tau\) grid of
the \(\Delta(\tau)\) input must match.
The measurement is turned on by setting measure_G_tau
in the solve_params
to True
. The result of the
accumulation is accessible through the results.G_tau
attribute of the solver object.
Self-energy improved estimator
The impurity self-energy can be computed via the Dyson equation
from the Green’s function \(G_{ij}^A(\tau)\). However, this procedure suffers from numerical instability at high Matsubara frequencies. A numerically stable way of computing the self-energy is provided by measuring the improved estimator
In the absence of \(\mathcal{J}_{\perp}\) interactions,
The expression of \(I_i^A(\tau)\) in the presence of \(\mathcal{J}_{\perp}\) interactions can be found in the PhD thesis of T. Ayral (Eq. 11.41).
Note
In the presence of \(\mathcal{J}_{\perp}\) interactions, the measurement of \(F(\tau)\) is possible only if the spin-spin interactions are rotationally invariant (\(\mathcal{J}_{\perp}(\tau) = \mathcal{J}_z(\tau)\)).
Once the improved estimator is known, the self-energy is obtained according to
The block structure and imaginary time grid for the improved estimator are the same as for the Green’s function.
The measurement is turned on by setting measure_F_tau
in the solve_params
to True
. The result of the
accumulation is accessible through the results.F_tau
attribute of the solver object.
Density
The average density is
Here \(A\) represents a block name and \(i\) an index within the block. The measurement
is turned on by setting measure_densities
in the solve_params
to True
. The result of the
accumulation is accessible through the results.densities
attribute of the solver object, as a Python
dictionary that associates a numpy vector to a block name. For example, the average density in the first
color of the spin up block is accessed as results.densities["up"][0]
.
Static density correlation function
The static density correlation function is defined as
Here \(A, B\) represents block names and \(i, j\) indices within the block. The measurement
is turned on by setting measure_nn_static
in the solve_params
to True
. The result of the
accumulation is accessible through the results.nn_static
attribute of the solver object, as a Python
dictionary that associates a matrix to a pair of block names. For example the static density correlation function
of the spin up block with itself is acccessed as results.nn_static[("up", "up")]
.
Dynamic density correlation function
The dynamic density correlation function is defined as
Here the indices \(i, j = 0, \dots N - 1\) represents colors (irrespective of the block structure).
\(\chi_{ij}(\tau)\) is measured on a uniform time grid, whose number of points is set by n_tau_chi2
in the solve_params
(which defaults to n_tau_bosonic
from constr_params
).
The measurement is turned on by setting measure_nn_tau
in the solve_params
to True
. The result of the
accumulation is accessible through the results.nn_tau
attribute of the solver object, as a
Block2Gf
. For example, the correlation function in the first color of the spin up block is accessed as
results.nn_tau["up", "up"][0, 0]
.
Perpendicular spin-spin correlation function
The perpendicular spin-spin correlation function is defined as
\(\chi^{\perp}(\tau)\) is measured on a uniform time grid, whose number of points is set by n_tau_chi2
in the solve_params
(which defaults to n_tau_bosonic
from constr_params
).
This measurement is useful if rotational invariance is broken (for instance, in the presence of a Zeeman field). It is
implemented for a single orbital only. Otherwise, all components of the spin-spin correlation function can be determined from \(\chi_{ij}(\tau)\), with better statistics.
The measurement is turned on by setting measure_sperp_tau
in the solve_params
to True
. The result of the
accumulation is accessible through the results.sperp_tau
attribute of the solver object, as a matrix-valued
GfImTime
with size \(1 \times 1\).
State histogram
This measurement determines the occupation probabilities of the non-interacting impurity eigenstates. Formally, these are the diagonal elements of the impurity density matrix expressed in the occupation number basis. For example, in the case of an impurity with 2 colors, the eigenstates are \(|00\rangle, |10\rangle, |01 \rangle, |11\rangle\).
The measurement is turned on by setting measure_state_hist
in the solve_params
to True
. The result of the
accumulation is accessible through the results.state_hist
attribute of the solver object, as a numpy array of size
\(2^N\). The index of the state \(|n_0, n_1, \dots n_N \rangle\) in the histogram is given by \(\sum_{i = 0}^{N - 1} n_i 2^i\).
Average sign
This measurement computes the average sign of the weight of the configuration.
It is always on. The result of the accumulation is accessible through the results.average_sign
attribute of the solver object as a double precision scalar.
Perturbation order histograms
This measurement determines the histograms of the perturbation orders in \(\Delta(\tau)\) and \(\mathcal{J}_{\perp}(\tau)\).
The measurement is turned on by setting measure_pert_order
in the solve_params
to True
. The results of the
accumulation are accessible through the results.pert_order_Delta
and results.pert_order_Jperp
attributes of the solver, as TRIQS histogram objects. The average orders can also be directly accessed via
results.average_order_Delta
and results.average_order_Jperp
.