A word on the algorithm
The continuous-time quantum Monte Carlo (CTQMC) algorithm is based on a hybridization expansion of the partition function [1], [2]. The principle of the algorithm is to sample stochastically the diagrams of this expansion with the correct Monte Carlo weights and to compute the Green’s function. A Monte Carlo configuration \(\mathcal{C}\) is a set of fermionic operators (in interaction representation) at different imaginary times:
The algorithm samples new configurations by inserting/removing pairs of operators, or by moving operators in the configuration. Note that it is a finite-temperature algorithm, and so \(\tau \in [0,\beta]\), where \(\beta\) is the inverse temperature. The Monte Carlo weight of a configuration is essentially the product of the trace \(\mathrm{Tr} \, \mathcal{C}\) and the determinant of a matrix, whose elements are the hybridization functions \(\Delta_{\alpha_i \alpha_j'} (\tau_i - \tau_j')\).
The main inputs of the solver are the hybridization functions \(\Delta(i\omega_n)\) and the local Hamiltonian \(\mathcal{H}_\mathrm{loc}\) of the impurity. The solver then computes the Green’s function on the imaginary-time interval \([0,\beta]\). This can be done in the imaginary time representation, as well as on a basis of Legendre polynomials, as described in Ref. [3]. Note that our implementation of the algorithm uses a matrix representation [4] of the operators \(d^\dagger_{\alpha}\). This allows the use of any local Hamiltonian \(\mathcal{H}_\mathrm{loc}\) in the algorithm.