Algorithms¶
Definition of the susceptibility¶
The momentum-dependent susceptibility computed by ChiQ is defined by
where \(\boldsymbol{q}\) represents the momentum, \(\Omega_m\) represents the bosonic Matsubara frequency, \(\beta\) is the inverse temperature, and \(\boldsymbol{r}\) denotes the lattice positions (the origin of each unit cell) with \(N\) being their total number. The superscript \(i, j, k, l\) indicates the combined spin and orbital indices. Here, the term “orbital” includes the site within a unit cell, as defined in the tight-binding model in the Wannier90 format. The angle brackets denote the thermal average. The operator \(O_{ij}(\boldsymbol{r}, \tau)\) is defined by
and the argument \(\tau\) indicates the time evolution in the Heisenberg picture.
Calculation of the susceptibility¶
Bethe-Salpeter equation (BSE)¶
This part is based on Section II.A in Ref. [Otsuki et al. 2019].
In DMFT, we compute the two-particle Green’s function \(X_{ij,kl}(i\omega_n, i\omega_{n'}; i\Omega_m)\), which has two additional fermionic Matsubara frequencies \(i\omega_n\) and \(i\omega_{n'}\). The susceptibility \(\chi_{ij,kl}(\boldsymbol{q}, i\Omega_m)\) in Eq. (1) is obtained by summing over the fermionic frequencies as
We introduce a matrix notation by combining spin-orbital indices and the frequency index as
Then, the Bethe-Salpeter (BS) equation that \(\hat{X}(\boldsymbol{q}, i\Omega_{m})\) follows is given by
where \(\hat{X}_0(\boldsymbol{q}, i\Omega_{m})\) is the bare two-particle Green’s function
Here, \(N\) denotes the number of lattice sites, and \(G_{ki}(\boldsymbol{k}, i\omega_n)\) is the single-particle Green function within DMFT. \(\Gamma_{\text{loc}}(i\Omega_m)\) is the vertex part. The vertex part is local (no dependence on \(\boldsymbol{q}\)) in DMFT. The vertex part can be obtained from the local two-particle Green’s function \(\hat{X}_{\text{loc}}(i\Omega_m)\) defined in the effective impurity problem in the DMFT:
Eliminating \(\Gamma_{\text{loc}}(i\Omega_{m})\) from the above two BS equations, we obtain the final equation
Implementation notes:
\(\hat{X}_0(\boldsymbol{q}, i\Omega_{m})\) [Eq. (3)] is computed in
dcore_chiq.py
.\(\hat{X}_\text{loc}(i\Omega_{m})\) is computed in the impurity solver, which is called from
dcore_chiq.py
.\(\hat{X}(\boldsymbol{q}, i\Omega_{m})\) [Eq. (4)] and \(\hat{\chi}(\boldsymbol{q}, i\Omega_{m})\) [Eq. (2)] are computed in C++ part, which is called from
chiq_main.py
.The fermionic Matsubara frequencies are truncated. The number of fermionic Matsubara frequency is specified by the parameter
num_wf
. The maximum frequency is \((2 \mathtt{num\_wf} + 1) \pi T\).The size of the matrices is \((2N_{\text{orb}})^2 \times \mathtt{num\_wf}\), where \(N_{\text{orb}}\) is the number of the total orbitals of the correlated shells in the unit cell.
Strong-coupling limit formula (SCL)¶
The desciption below is based on Section III.C in Ref. [Otsuki et al. 2024].
The strong-coupling limit formula (SCL) is a simplified approach to compute the momentum-dependent static susceptibilities in DMFT. The derivation is based on the strong-coupling feature of the two-particle Green’s function. The validity of the SCL formula has been demonstrated for the single-orbital and two-orbital Hubbard models [Otsuki et al. 2019] and for the multipolar ordering in CeB6 [Otsuki et al. 2024].
In the original paper [Otsuki et al. 2019], three levels of approximations termed SCL1, SCL2, and SCL3 were proposed. ChiQ package provides SCL3, which is the simplest method among the three and does not require the vertex part.
The momentum-dependent static (\(\Omega_m=0\)) susceptibility in the SCL formula is given by
where hat indicates the matrix form defined as
\(\hat{\chi}_\text{loc}\) is the local susceptibility computed in the effective impurity model. \(\hat{I}_\text{SCL}(\boldsymbol{q})\) is the effective intersite interaction defined by
The function \(\hat{\Lambda}(i\omega_n, \boldsymbol{q})\) is computed from the bare two-particle Green’s function in the effective impurity and lattice models:
\(\phi(i\omega_n)\) is given by
where \(\Delta_{-}\) and \(\Delta_{+}\) are the excitation energy from \(n\)-electron state to \((n-1)\)-electron states and \((n+1)\)-electron states, respectively. In the single-band Hubbard model, \(\Delta_{-}\) and \(\Delta_{+}\) correspond to the position of the lower and upper Hubbard bands, respectively.
Implementation notes:
\(\hat{X}_0(\boldsymbol{q}, i\Omega_{m})\) [Eq. (3)] is computed in
dcore_chiq.py
.\(\hat{\chi}_\text{SCL}(\boldsymbol{q})\) and \(\hat{I}_\text{SCL}(\boldsymbol{q})\) [Eqs. (5) and (6)] are computed in the script
calc_Iq_scl.py
(chiq_main.py
is not used).The value of \(\Delta_{-}\) and \(\Delta_{+}\) are specified by the parameter
delta_minus
anddelta_plus
, respectively.The size of the matrices is \((2N_{\text{orb}})^2\).
Random phase approximation (RPA)¶
The random-phase approximation (RPA) is a simple weak-coupling approximation to compute the momentum-dependent susceptibility. The RPA susceptibility is given by
where \(\hat{\chi}_0(\boldsymbol{q}, i\Omega_{m})\) is the bare susceptibility, which is calculated from \(\hat{X}_0\) in Eq. (3) by
\(\hat{\gamma}\) is the symmetrized vertex part given by
Implementation notes:
\(\hat{\gamma}_0\) is generated in
dcore_chiq.py
.\(\hat{X}_0(\boldsymbol{q}, i\Omega_{m})\) [Eq. (3)] is computed in
dcore_chiq.py
.\(\hat{\chi}_\text{RPA}(\boldsymbol{q}, i\Omega_{m})\) and \(\hat{\chi}_0(\boldsymbol{q}, i\Omega_{m})\) [Eqs. (8) and (9)] are computed in C++ part, which is called from
chiq_main.py
.The size of the matrices is \((2N_{\text{orb}})^2\).
Renormalized random-phase approximation (RRPA)¶
This part is based on Section II.B in Ref. [Otsuki et al. 2019].
The RPA above overestimates the fluctuations. Improvement to the RPA is made by including correlations from DMFT. By taking the Matsubara summation independently for each \(X\) in Eq. (4), we obtain the renormalized RPA (RRPA) susceptibility as
Compared with the RPA formula in Eq. (8), the bare interaction \(\hat{\gamma}\) is replaced by \(\hat{\chi}_\text{0,loc}(i\Omega_{m})^{-1} - \hat{\chi}_\text{loc}(i\Omega_{m})^{-1}\), which takes the local correlations into account.
Implementation notes:
\(\hat{X}_0(\boldsymbol{q}, i\Omega_{m})\) [Eq. (3)] is computed in
dcore_chiq.py
.\(\hat{\chi}_\text{RRPA}(\boldsymbol{q}, i\Omega_{m})\) and \(\hat{\chi}_0(\boldsymbol{q}, i\Omega_{m})\) [Eqs. (10) and (9)] are computed in C++ part, which is called from
chiq_main.py
.The size of the matrices is \((2N_{\text{orb}})^2\).
Intersite interactions¶
This part is based on Section III.B in Ref. [Otsuki et al. 2024].
We can estimate the intersite interactions inversly from \(\hat{\chi}(\boldsymbol{q})\) computed by solving the BSE. Assuming that the final results for \(\hat{\chi}(\boldsymbol{q})\) was obtained from a localized model within the mean-field approximation, we can define the momentum-dependent interactions \(\hat{I}(\boldsymbol{q})\) by
We note that, in the SCL, we directly compute \(\hat{I}(\boldsymbol{q})\) by Eq. (6).
Performing the Fourier transform, we obtain the interaction coefficients in the real space
where the summation of \(\boldsymbol{q}\) is taken over the Brillouin zone. This quantity defines the effective localized Hamiltonian
Implementation notes:
\(\hat{I}(\boldsymbol{q})\) [Eq. (11)] is computed in
calc_Iq.py
.Calculation of Eq. (11) is unstable when the charge fluctuation is tiny. The script
calc_Iq.py
takes a special care of the charge fluctuation to avoid the instability. See Appendix B in Ref. [Otsuki et al. 2024] for details.chiq_main.py
also output \(\hat{I}(\boldsymbol{q})\), but usingcalc_Iq.py
is recommended because the special treatment of the charge fluctuation is done only incalc_Iq.py
.\(\hat{I}(\boldsymbol{r})\) [Eq. (12)] is computed in
chiq_fft.py
.
Analyzing the susceptibility¶
\(\chi_{ij,kl}(\boldsymbol{q}, i\Omega_m)\) is a complicated object with many components. This section describes how to analyze it to extract the physical information. For simplicity, we consider only the static component, \(\Omega_{m}=0\).
Eigenvalues¶
A simple way is to diagonalize \(\chi_{ij,kl}(\boldsymbol{q})\) by taking the combined index \((ij)\) as row and \((kl)\) as column.
The eigenvalues \(\chi_{\xi}(\boldsymbol{q})\) represent physical susceptibilities. The eigenvectors represent the physical quantitiy corresponding to the fluctuation.
Impelementation notes:
chiq_post.py
outputs eigenvalues by default (mode = 'eigen'
).The eigenvalues are sorted in descending order by default. This behavior can be changed by parameter
order
.The eigenvectors are output by setting
vector = true
(default isfalse
).
Linear combinations¶
We can define the spin, charge, orbital, or multipole operator by taking linear comination of the density operator \(O_{\gamma} (\boldsymbol{r})\) as
With this coefficient \(C^{(\gamma)}_{ij}\), we can transform \(\chi_{ij,kl}(\boldsymbol{q})\) as follows:
Implementation notes:
chiq_post.py
outputs the diagonal componenents \(\chi_{\gamma\gamma}(\boldsymbol{q})\) whenmode = 'linear_combination'
.The coefficients \(C^{(\gamma)}_{ij}\) are input by an external file.
The number of coefficients can be smaller than the total number of operators.
References¶
J. Otsuki, K. Yoshimi, H. Shinaoka, and Y. Nomura, “Strong-coupling formula for momentum-dependent susceptibilities in dynamical mean-field theory”, Phys. Rev. B, 99, 165134 (2019).
J. Otsuki, K. Yoshimi, H. Shinaoka, and H. Jeschke, “Multipolar ordering from dynamical mean field theory with application to CeB6“, Phys. Rev. B, 110, 035104 (2024).