Measurements: definitions
Here we list all the observables that can be measured by the solver along with their definitions. Each measurement can be turned on or off via the corresponding solve() parameters.
Green’s function
The single-particle Green’s function can be measured in imaginary time or the Legendre basis (see L. Boehnke et al., Phys. Rev. B 84, 075145 (2011)).
Imaginary time
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^A_{ij}(\tau)\), i.e. valid values of the indices, is fixed by
constructor’s parameter gf_struct
.
This measurement is turned on by setting measure_G_tau
to True
.
The result of accumulation is accessible as G_tau
attribute of the solver object.
The number of time points on the grid is specified through constructor’s parameter n_tau
.
Note
The imaginary-time measurement is most efficient. The performance of the algorithm does not scale with the number of points in the grid on which it is measured, so this number can and should be chosen large. By Nyquist’s theorem, the Fourier transform will correctly reproduce the function in the frequency domain on the first \(N_\omega\approx N_\tau/4\pi\) frequencies.
Legendre polynomial basis
The Legendre coefficients of the Green’s function are defined as
where \(x(\tau)=2\tau/\beta-1\), and \(P_l(x)\) are Legendre polynomials of order \(l\).
This measurement is controlled through the switch measure_G_l
.
The result of accumulation is accessible as G_l
attribute of the solver object.
The number of Legendre coefficients to be measured is specified through constructor’s parameter n_l
.
Local susceptibility and other operator pairs
Higher order response functions like local susceptibilities
can be sampled (by insertion) in the trace. This approach is limited to operators \(\hat{O}_1\) and \(\hat{O}_2\) that commutes with each other and the local Hamiltonian, \([\hat{O}_1, \hat{O}_2] = 0\), \([\hat{O}_i, H_{loc}]=0\).
This measurement is controlled by the argument measure_O_tau
. To enable the measurement pass a tuple of the operators to be sampled, e.g. measure_O_tau = (n('up',0), n('do',0))
will measure the response function \(\langle \hat{n}_\uparrow(\tau) \hat{n}_\downarrow \rangle\). The resulting response function is accessible as the O_tau
attribute of the solver object. The number of operator insertions is by default taken to be the square of the perturbation order of each configuration, however, for cases with perturbation order lower than the parameter measure_O_tau_min_ins
the number of insertions is kept fixed to this minimum value, the default value is a minimum of 10 insertions.
Two-particle Green’s functions
CTHYB implements several ways to measure the two-particle Green’s functions. We define \(G^{(2)}\) in the imaginary time as
Depending on the value of the measure_G2_block_order
parameter the combined block/inner indices
\(\alpha,\beta,\gamma,\delta\) are interpreted differently.
measure_g2_block_order = 'AABB'
: \(\{\alpha,\beta,\gamma,\delta\} = \{(A,a),(A,b),(B,c),(B,d)\}\);measure_g2_block_order = 'ABBA'
: \(\{\alpha,\beta,\gamma,\delta\} = \{(A,a),(B,b),(B,c),(A,d)\}\).
These two combinations exhaust all the possibilities for non-vanishing contributions to \(G^{(2)}\).
Measuring \(G^{(2)}\) is in general expensive, and in some cases time can be saved by skipping
particular block pairs \((A,B)\). Block pairs to be measured are selected via the measure_G2_blocks
parameter (all possible pairs are selected by default):
measure_G2_blocks = set([("A1","B1"), ("A2","B2"), ...])
See the PhD thesis of L. Boehnke for an in-depth discussion of these measurements.
Imaginary time binning
The simplest measure is to bin \(G^{(2)}\) directly in three imaginary times, after using time-tranlsational invariance to fix \(\tau_4 = 0\).
The imaginary time binning is switched on by
measure_G2_tau = True
.\[G^{(2)}_{\alpha\beta\gamma\delta}( \tau_1, \tau_2, \tau_3) \equiv G^{(2)}_{\alpha\beta\gamma\delta}(\tau_1,\tau_2,\tau_3, 0)\]Accumulation result is available via the
G2_tau
solver attribute.
The number of bins in each imaginary time dimension is set by measure_G2_n_tau
.
Matsubara frequency measurements
In Matsubara frequency space there are three different measurements:
Three Fermionic Matsubara frequency measurement, switched on by
measure_G2_iw = True
.\[G^{(2)}_{\alpha\beta\gamma\delta}(\nu_1, \nu_2, \nu_3) = \int_0^\beta d\tau_1 d\tau_2 d\tau_3 \, e^{-i\nu_1 \tau_1 + i\nu_2 \tau_2 - i\nu_3 \tau_3} G^{(2)}_{\alpha\beta\gamma\delta}(\tau_1,\tau_2,\tau_3,0) \, .\]Accumulation result is available via the
G2_inu
solver attribute.Particle-hole channel measurement, with one Bosonic (\(\omega\)) and two Fermionic (\(\nu, \nu'\)) frequencies, switched on by
measure_G2_iw_ph = True
.\[G^{(2)ph}_{\alpha\beta\gamma\delta}(\omega;\nu,\nu') = \frac{1}{\beta}\int_0^\beta d\tau_1d\tau_2d\tau_3d\tau_4 \, e^{-i\nu\tau_1 + i(\nu+\omega)\tau_2 - i(\nu'+\omega)\tau_3 + i\nu'\tau_4} G^{(2)}_{\alpha\beta\gamma\delta}(\tau_1,\tau_2,\tau_3,\tau_4) \, .\]Accumulation result is available via
G2_iw_ph
solver attribute.Particle-particle channel measurement, with one Bosonic (\(\Omega\)) and two Fermionic (\(\nu, \nu'\)) frequencies, switched on by
measure_G2_iw_pp = True
.\[G^{(2)pp}_{\alpha\beta\gamma\delta}(\omega;\nu,\nu') = \frac{1}{\beta}\int_0^\beta d\tau_1d\tau_2d\tau_3d\tau_4\ e^{-i\nu\tau_1 + i(\omega-\nu')\tau_2 - i(\omega-\nu)\tau_3 + i\nu'\tau_4} G^{(2)}_{\alpha\beta\gamma\delta}(\tau_1,\tau_2,\tau_3,\tau_4).\]Accumulation result is available via
G2_iw_pp
solver attribute.
The number of Bosonic and Fermionic Matsubara frequencies are set by the measure_G2_n_bosonic
and measure_G2_n_fermionic
parameters respectively.
All these frequency measurements use direct evaluation in frequency space, using an optimized frequency spreader that avoids the re-evaluation of exponential functions. This implementation performs well for low perturbation order and small number of sampled Matsubara frequencies.
As an alternative all frequency measurements are also implemented using non-equidistant fast fourier transform (NFFT) to speed up the sampling procedure. The corresponding flags and attributes are:
(
measure_G2_iw_nfft
,G2_iw_nfft
),(
measure_G2_iw_ph_nfft
,G2_iw_ph_nfft
), and(
measure_G2_pp_nfft
,G2_iw_ph_nfft
).
Depending on the impurity model the NFFT buffer can be adjusted for maximum performance by setting nfft_buf_sizes
.
Whether the direct frequency evaluation or NFFT performs better is problem dependent and has to be tested case by case.
Mixed Matsubara Frequency and Legendre measurements
Particle-hole channel, switched on by
measure_G2_iwll_ph = True
.\[G^{(2)ph}_{\alpha\beta\gamma\delta}(\omega_m;\ell,\ell') \equiv \sum_{n,n'\in\mathbb{Z}} \bar T_{2n+m+1,\ell} G^{(2)ph}_{\alpha\beta\gamma\delta}(\omega_m;\nu_n,\nu_{n'}) \bar T^*_{2n'+m+1,\ell'}.\]Accumulation result is available via
G2_iwll_ph
solver attribute.Particle-particle channel, switched on by
measure_G2_iwll_pp = True
.\[G^{(2)pp}_{\alpha\beta\gamma\delta}(\omega_m;\ell,\ell') \equiv \sum_{n,n'\in\mathbb{Z}} \bar T_{2n+m+1,\ell} G^{(2)pp}_{\alpha\beta\gamma\delta}(\omega_m;\nu_n,\nu_{n'}) \bar T^*_{2n'+m+1,\ell'}.\]Accumulation result is available via
G2_iwll_pp
solver attribute.
Numbers of bosonic Matsubara frequencies and Legendre coefficients are set by the measure_G2_n_iw
and measure_G2_n_l
parameters respectively.
The one Bosonic Matsubara frequency is treated using non-equidistant fast fourier tranform (NFFT) and the NFFT buffer size is set by measure_G2_iwll_nfft_buf_size
.
The transformation matrices \(\bar{T}_{o, \ell}\) introduced above transforms from the Matsubara frequency domain to the Legendre polynomial basis:
Impurity density matrix
The impurity density matrix (a.k.a. reduced density matrix) is the full density matrix of the system with the bath degrees of freedom traced out.
One can use this object to estimate average values of the static (\(\tau\)-independent) impurity observables,
This measurement is activated by setting measure_density_matrix
to True
. It also requires
enabling use_norm_as_weight
parameter.
The impurity density matrix is accessible as density_matrix
attribute of the solver object.
Warning
Presently the density matrix is treated as block-diagonal with the same block structure as \(\hat H_\mathrm{loc}\). The block-offdiagonal matrix elements are not accumulated, so results can only be reliably used with static observables of the same block structure.
The density_matrix
attribute returns a list of matrices, one matrix per diagonal block.
Perturbation order histograms
The perturbation order within a block \(A\) is defined as a half of the number of operators with the block index \(A\) in the dynamical trace. The total perturbation order is similarly related to the total number of operators in the dynamical trace.
Statistical histograms of the block-wise, as well as total perturbation orders will be measured if
measure_pert_order
is set to True
.
Note
These two kinds of histograms are independent measurements. The total perturbation order histogram is expressed as a convolution of the block-wise histograms solely for the non-interacting systems.
For each block, the corresponding partial histogram is accessible as perturbation_order[block_name]
.
The perturbation_order_total
attribute holds the total perturbation order histogram.
Average sign
The average sign is defined as a ratio of two Monte-Carlo averages
where \(\mathrm{sign}(W)\) is the sign of the total weight of a configuration, and \(|\mathrm{Tr}_{at}[\ldots]|/W_{at}\) is the atomic reweighting factor.
If use_norm_as_weight = False
(no reweighting of the atomic problem), the reweighting
factor equals 1, and our definition of the average sign coincides with the usual one for
fermionic QMC algorithms. Otherwise, the denominator ensures the correct normalization
of the observable.
Result of this measurement is always available as average_sign
attribute of the solver.