Green's Function calculation: Superconducting

In this module ed_gf_superc the interacting impurity Green's functions \(\hat{G}(z)\) are evaluated for ed_mode = superc.

Briefly, for any eigenstate \(|n\rangle\) in the state_list contributing to the low energy part of the Hamiltonian spectrum the normal Green's functions:

\[G_{ab\sigma}(z) = \frac{1}{\cal Z}\sum_n e^{\beta E_n}\langle n| c^\dagger_{a\sigma} [z-H]^{-1} c_{b\sigma} |n \rangle + \langle n | c_{a\sigma} [z-H]^{-1} c^\dagger_{b\sigma} | n \rangle\]

and the anomalous ones

\[F_{ab\sigma}(z) = \frac{1}{\cal Z}\sum_n e^{\beta E_n}\langle n| c_{a\sigma} [z-H]^{-1} c_{b\sigma} |n \rangle + \langle n | c^\dagger_{a\sigma} [z-H]^{-1} c^\dagger_{b\sigma} | n \rangle\]

are evaluated using dynamical Lanczos method: a) the partial tridiagonalization of the sector Hamiltonian \(H\) with quantum numbers \(\vec{Q}=S_z = N_\uparrow-N\downarrow\) on the Krylov basis of \(c|n\rangle\) or \(c^\dagger|n\rangle\) is obtained; b) the resulting tridiagonal matrix is further diagonalized to obtained excitations amplitudes or weights \(\langle m | c_{a\sigma} | n \rangle\) or \(\langle m | c^\dagger_{a\sigma} | n \rangle\) for any state \(| m \rangle\) in the spectrum (without knowing the state itself ) and the excitations energies \(\delta E = E_m - E_n\) or poles; c) an controlled approximation to the Kallen-Lehmann sum is constructed for any value of \(z\in{\mathbb C}\) and \(a,b=1,\dots,N_{\rm orb}\), \(\sigma=\uparrow,\downarrow\).

A similar procedure is employed to evaluate the phonons Green's functions:

\[D(z) = \frac{1}{\cal Z} \sum_n e^{\beta E_n}\langle n|x[z-H]^{-1}x|n\rangle\]

where \(x = (b+b^\dagger)\) and \(b\) (\(b^\dagger\)) is the phonon destruction (creation) operator.

While the Green's functions are evaluated in a given set of Matsubara impgmats, impdmats and Real-axis points impgreal, impdreal, the weights and the poles obtained in this calculation are stored in a dedicated data structure gfmatrix for a fast recalculation on any given intervals of frequencies in the complex plane.

Finally, the self-energy functions are constructed using impurity Dyson equation \(\hat{\hat{\Sigma}}(z) = \hat{\hat{G}}^{-1}_0(z) - \hat{\hat{G}}^{-1}(z)\), where the \(\hat{\hat{}}\) symbol indicates matrices in the orbital and Nambu space, i.e.

\[\begin{split}\begin{bmatrix} \hat{G} & \hat{F} \\ \hat{\bar{F}} & \hat{\bar{G}} \end{bmatrix}\end{split}\]

Quick access

Routines:

build_impg_superc(), get_impd_superc(), get_impf_superc(), get_impg_superc(), get_self_superc(), get_sigma_superc()

Used modules

  • ed_input_vars: User-accessible input variables

  • ed_vars_global: Global variable accessible throughout the code

  • ed_aux_funx: Assortment of auxiliary procedures required throughout the code

  • ed_eigenspace: Data types for the eigenspace

  • ed_bath: Routines for bath creation and manipulation

  • ed_setup: Routines for solver environment initialization and finalization

  • ed_sector: Routines for Fock space sectors creation and manipulation

  • ed_hamiltonian_superc: Routines for Hamiltonian construction, SUPERC case

External modules

Subroutines and functions

subroutine  ed_gf_superc/build_impg_superc()
Use :

ed_input_vars (nspin, norb)

function  ed_gf_superc/get_impg_superc(zeta[, axis])
Parameters:

zeta (•) [complex, in]

Options:

axis [character(len=*)] – only for self-consistency, not used here

Result:

gf (nspin, nspin, norb, norb, size(zeta)) [complex]

Use :

ed_input_vars (nspin, norb)

function  ed_gf_superc/get_impf_superc(zeta[, axis])
Parameters:

zeta (•) [complex, in]

Options:

axis [character(len=*)] – only for self-consistency, not used here

Result:

ff (nspin, nspin, norb, norb, size(zeta)) [complex]

Use :

ed_input_vars (nspin, norb)

function  ed_gf_superc/get_impd_superc(zeta[, axis])
Parameters:

zeta (•) [complex, in]

Options:

axis [character(len=*)] – only for self-consistency, not used here

Result:

g (size(zeta)) [complex]

Use :

ed_input_vars (nspin, norb)

function  ed_gf_superc/get_sigma_superc(zeta[, axis])
Parameters:

zeta (•) [complex, in]

Options:

axis [character(len=*)] – string indicating the desired axis, 'm' for Matsubara (default), 'r' for Real-axis

Result:

sigma (nspin, nspin, norb, norb, size(zeta)) [complex]

Use :

ed_input_vars (nspin, norb)

function  ed_gf_superc/get_self_superc(zeta[, axis])
Parameters:

zeta (•) [complex, in]

Options:

axis [character(len=*)] – string indicating the desired axis, 'm' for Matsubara (default), 'r' for Real-axis

Result:

self (nspin, nspin, norb, norb, size(zeta)) [complex]

Use :

ed_input_vars (nspin, norb)