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].
Two-particle, three-frequency Green’s function
The two-particle, three-frequency Green’s function in the particle-hole channel is defined as
where \(A, B\) are block indices and \(a, b, c, d\) are inner indices within the block.
\(i\omega\) are bosonic Matsubara frequencies,
whose number of points is set by n_w_b_vertex in the solve_params (which defaults to 10);
\(i\nu, i\nu'\) are fermionic Matsubara frequencies,
whose number of points is set by n_w_f_vertex in the solve_params (which defaults to 10).
This measurement is turned on by setting measure_g3w in the solve_params to True.
The result of the accumulation is accessible through the results.g3w 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.g3w["up", "up"][0, 0, 0, 0].
Two-particle, two-frequency Green’s function
It is the two-particle, three-frequency Green’s function in the particle-hole channel with \(\tau_3 = \tau_4\):
where \(A, B\) are block indices and \(a, b, c ,d\) are inner indices within the block.
\(i\omega\) are bosonic Matsubara frequencies,
whose number of points is set by n_w_b_vertex in the solve_params (which defaults to 10);
\(i\nu\) are fermionic Matsubara frequencies,
whose number of points is set by n_w_f_vertex in the solve_params (which defaults to 10).
This measurement is turned on by setting measure_g2w in the solve_params to True.
The result of the accumulation is accessible through the results.g2w 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.g2w["up", "up"][0, 0, 0, 0].
Warning
There is an ambiguity in the above definition for the disconnected component of \(g^{(2)}\). We adopt the convention \(g^{(2),~\rm disc}_{abcd}(\omega, \nu) = \beta G_{ba}(\nu) G_{dc}(\tau = 0^+) \delta_{\omega, 0} - \beta G_{da}(\nu) G_{bc}(\nu + \omega)\).
Warning
The measurement can only be implemented for \(d = c\). The components where \(d \neq c\) can be obtained as \(g^{(2)}_{abcd}(\omega, \nu) = \sum_{\nu'} e^{i \nu' 0^-} g^{(3)}_{abcd}(\omega, \nu, \nu')\).
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.