Solver options and accessors

The solver consists of one main object with a constructor and a solve() method, and accessors. The options of the constructor and solve() method are used to give more information as to the desired run, such as number of Matsubara frequencies, number of Monte-Carlo cycles, or which observables have to be measured. The accessors are members of the solver class which are used both to set the inputs of the solver (like the non-interacting Green’s function G0_iw or the dynamical interactions D0_iw) and to read out the observables at the end of the computation (such as G_tau, G_iw or nn_iw).

The options of the constructor are:

Parameter Name Type Default Documentation
beta double Inverse temperature
gf_struct gf_struct_t Structure of the GF (names, sizes of blocks)
n_tau int 10001 Number of time slices for \(Delta(\tau)\)/\(G(\tau)\)/\(F(\tau)\)
n_tau_k int 10001 Number of time slices for \(K(\tau)\)
n_tau_jperp int 10001 Number of time slices for \(J_\perp(\tau)\)
n_tau_nn int 101 Number of Legendre coefficients for G(l)
n_w_b_nn int 32 Number of bosonic Matsub. freqs for \(nn(i\omega)\), \(\mathcal{D}_0(i\omega)\), \(J_\perp\)
n_iw int 1025 Number of fermionic Matsubara frequencies for \(G_0(i\omega)\), \(G\), \(F\), \(\Sigma\)

The options of the solve() method and the solver accessors are summarized below. They are identical in the C++ and Python interface.

Python interface

class triqs_ctseg.SolverCore

Main solver class

Worker which runs the quantum Monte-Carlo simulation.

D0_iw

Density-density retarded interactions \(\mathcal{D}^{\sigma\sigma'}_{0,ab}(i\Omega)\)

Delta_tau

Hybridization function \(\Delta^\sigma_{ab}(\tau)\)

F_2w

3-point improved estimator (see measure_g2w)

F_3w

4-point improved estimator (see measure_g3w)

F_iw

Improved estimator function \(F^\sigma_{ab}(i\omega)\) (see measure_gw)

F_l

Improved estimator function in Legendre basis \(G^\sigma_{ab}(n)\) (see measure_gl)

F_tau

Improved estimator function \(F^\sigma_{ab}(\tau)\) (see measure_gt)

G0_iw

Weiss field \(\mathcal{G}^{\sigma}_{0,ab}(i\omega)\)

G_2w

3-point correlation function \(\chi^{\sigma\sigma'}_{abc}(i\omega,i\Omega)\) (see measure_g2w)

G_3w

4-point correlation function \(\chi^{\sigma\sigma'}_{abcd}(i\omega,i\omega',i\Omega)\) (see measure_g3w)

G_iw

Impurity Green’s function \(G^\sigma_{ab}(i\omega)\) (see measure_gw)

G_l

Impurity Green’s function in Legendre basis \(G^\sigma_{ab}(n)\) (see measure_gl)

G_tau

Impurity Green’s function \(G^\sigma_{ab}(\tau)\) (see measure_gt)

Jperp_iw

Dynamical spin-spin interaction, perpendicual components: \(\mathcal{J}_\perp(i\Omega)\)

Jperp_tau

Dynamical spin-spin interactions \(\mathcal{J}_\perp(\tau)\)

K_tau

Dynamical kernel \(K(\tau)\)

Kperpprime_tau

Derivative of the dynamical kernel \(\partial_\tau K_\perp(\tau)\)

Kprime_tau

Derivative of the dynamical kernel \(\partial_\tau K(\tau)\)

Sigma_iw

Impurity self-energy \(\Sigma^\sigma_{ab}(i\omega)\) (see measure_gw)

average_sign

Monte Carlo sign

chipm_tau

Spin spin correlation function \(\langle s_+(\tau) s_-(0)\rangle\) (see measure_chipmt)

histogram

histogram of hybridization perturbation order (see measure_hist)

histogram_composite

histogram of \(\mathcal{J}_\perp\) perturbation order (see measure_hist_composite)

nn

density-density static correlation \(\langle n^\sigma_a n^{\sigma'}_b \rangle\) (see measure_nn)

nn_iw

Density-density correlation function \(\mathrm{FT}\left[\langle n^\sigma_{a}(\tau) n^{\sigma'}_{b}(0)\rangle\right]\) (see measure_nnw)

nn_tau

Density-density correlation function \(\langle n^\sigma_{a}(\tau) n^{\sigma'}_{b}(0)\rangle\) (see measure_nnt)

percent_done
sanity_check()

Signature : (triqs_ctseg::solve_params_t p, int n_w, int n_w_b) -> None

solve()

solve method: starts the Metropolis algorithm

Steps:

  • extract \(\Delta^\sigma_{ab}(\tau)\) and \(\mu^\sigma_a\) from \(\mathcal{G}^\sigma_{ab}(i\omega)\)
  • if \(\mathcal{D}^{\sigma\sigma'}_{0,ab}(i\Omega)\neq 0\), extract \(K(^{\sigma\sigma'}_{ab}\tau)\) and \(\partial_\tau K^{\sigma\sigma'}_{ab}(\tau)\) from \(\mathcal{D}^{\sigma\sigma'}_{0,ab}(i\Omega)\)
  • if \(\mathcal{J}_{\perp,a}(i\Omega)\neq 0\), extract \(\partial_\tau K_{\perp,a}(\tau)\) from \(\mathcal{J}_{\perp,a}(i\Omega)\)
  • add the moves and measures according to the parameters supplied by the user
  • start the Monte-Carlo simulation
  • finalize the Monte Carlo simulation
Parameter Name Type Default Documentation
h_int triqs_ctseg::Op   local Hamiltonian
n_cycles int   Number of QMC cycles
length_cycle int 50 Length of a single QMC cycle
n_warmup_cycles int 5000 Number of cycles for thermalization
random_seed int 34788+928374*mpi::communicator().rank() Seed for random number generator
random_name std::string ‘’ Name of random number generator
max_time int -1 Maximum runtime in seconds, use -1 to set infinite
verbosity int mpi::communicator().rank()==0?3:0 Verbosity level
move_insert_segment bool true Whether to perform the move insert segment (see move_insert_segment)
move_remove_segment bool true Whether to perform the move remove segment (see move_remove_segment)
move_move bool false Whether to perform the move move segment (see move_move)
move_swap_empty_lines bool false Whether to perform the move swap empty lines (see move_swap_empty_lines)
move_group_into_spin_segment bool false Whether to perform the move group into spin segment (see move_group_into_spin_segment)
move_split_spin_segment bool false Whether to perform the move split spin segment (see move_split_spin_segment)
move_group_into_spin_segment2 bool false Whether to perform the move group into spin segment (see move_group_into_spin_segment2)
move_split_spin_segment2 bool false Whether to perform the move split spin segment (see move_split_spin_segment2)
keep_Jperp_negative bool true Whether to keep Jperp negative
measure_gt bool true Whether to measure G(tau) (see measure_gt)
measure_sign bool true Whether to measure MC sign (see measure_sign)
measure_ft bool false Whether to measure improved estimator F(tau) (see measure_gt) (only isotropic spin-spin interactions if any)
measure_gl bool false Whether to measure G(l) (Legendre) (see measure_gl)
measure_fl bool false Whether to measure improved estimator F(l) (Legendre) (see measure_gl) (only isotropic spin-spin interactions if any)
measure_gw bool false Whether to measure G(iomega) (see measure_gw)
use_nfft_for_gw bool false Whether to use NFFT in the measurement of gw
measure_fw bool false Whether to measure improved estimator F(iomega) (see measure_gw)(only isotropic spin-spin interactions if any)
measure_g2w bool false Whether to measure two-frequency correlation function (see measure_g2w)
use_nfft_for_Mw bool false Whether to use NFFT for the precomputation of Mw
measure_f2w bool false Whether to measure two-frequency improved estimator (see measure_g2w)
measure_g3w bool false Whether to measure three-frequency correlation function (see measure_g3w)
measure_f3w bool false Whether to measure three-frequency improved estimator (see measure_g3w)
measure_chipmt bool false Whether to measure chi_{+-}(tau) (see measure_chipmt)
measure_nn bool false Whether to measure <nn> (see measure_nn)
measure_nnt bool false Whether to measure langle n(tau)n(0)rangle (see measure_nnt)
measure_nnw bool false Whether to measure chi(iomega) (see measure_nnw)
evaluate_vertex bool false Whether to evaluate vertex functions (see evaluate_3w_vertex)
measure_hist bool false Whether to measure the perturbation order histogram (see measure_hist)
measure_hist_composite bool false Whether to measure the perturbation order histogram for bosonic lines (see measure_hist_composite)
measure_statehist bool false Whether to measure histogram of impurity states (see measure_statehist)
n_w_f_vertex int 10 Number of fermionic Matsubara frequencies for vertex functions
n_w_b_vertex int 10 Number of bosonic Matsubara frequencies for vertex functions
fname_gammaw std::string ‘gammaw.h5’ File name for 4-leg vertex gammaw
fname_gammaw | std::string | ‘gammaw.h5’ | File name for 4-leg vertex gammaw |
Warning: parameter nfft_threshold will not be used because the code has been compiled without NFFT support |
hartree_shift std::vector<double> std::vector<double>{} Hartree shift of the chem pot
state_histogram

histogram of the boundary states of the trace (see measure_statehist)