Green’s Function calculation

In this module ed_gf_nonsu2 the interacting impurity Green’s functions \(\hat{G}(z)\) are evaluated for ed_mode = nonsu2.

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\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\]

are evaluated using dynamical Lanczos method: a) the partial tridiagonalization of the sector Hamiltonian \(H\) with quantum numbers \(\vec{Q}=N_{\rm tot} = N_\uparrow+N\downarrow\) on the Krylov basis of \(c_{a\sigma}|n\rangle\) or \(c^\dagger_{a\sigma}|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\).

While the Green’s functions are evaluated in a given set of Matsubara impgmats and Real-axis points impgreal, 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{\Sigma}(z) = \hat{G}^{-1}_0(z) - \hat{G}^{-1}(z)\).

Quick access

Routines:

build_gf_nonsu2(), rebuild_gf_nonsu2(), build_sigma_nonsu2()

Used modules

  • sf_constants

    • one()

    • xi()

    • zero

    • pi()

  • sf_timer

  • sf_iotools

  • sf_linalg

  • ed_input_vars: Contains all global input variables which can be set by the user through the input file. A specific preocedure ed_read_input() should be called to read the input file using parse_input_variable() procedure from SciFortran. All variables are automatically set to a default, looked for and updated by reading into the file and, sequentially looked for and updated from command line (std.input) using the notation variable_name=variable_value(s) (case independent).

  • ed_vars_global: Contains all variables, arrays and derived types instances shared throughout the code. Specifically, it contains definitions of the effective_bath, the gfmatrix and the sector data structures.

  • ed_aux_funx: Hosts a number of auxiliary procedures required in different parts of the code. Specifically, it implements: creation/annihilation fermionic operators, binary decomposition of integer representation of Fock states and setup the local impurity Hamiltonian

  • ed_eigenspace: A class implementing a data structure to efficiently store the low part of the Fock space spectrum, automatically spreading and retrieving the eigenstates among/from MPI threads.

  • ed_bath: Contains routines for setting, accessing, manipulating and clearing the bath of the Impurity problem.

  • ed_setup: Contains procedures to set up the Exact Diagonalization calculation, executing all internal consistency checks and allocation of the global memory.

  • ed_sector: Contains procedures to construct the symmetry sectors corresponding to a given set of quantum numbers \(\vec{Q}\), in particular it allocated and build the sector_map connecting the states of a given sector with the corresponding Fock ones.

  • ed_hamiltonian_nonsu2

Subroutines and functions

subroutine  ed_gf_nonsu2/build_gf_nonsu2()

Evaluates the impurity electrons Green’s functions \(G(z)\) using dynamical Lanczos method. The result is stored in rank-5 arrays impgmats, impgreal , impfmats , impfreal of dimensions [ nspin , nspin , norb , norb , Lmats / Lreal ]

The off-diagonal components of \(G_{ab\sigma\sigma'}\) with \(a \neq b\) and \(\sigma,\sigma'=\uparrow, \downarrow\) are obtained using algebraic manipulation to ensure working with hermitian conjugate operators in the dynamical Lanczos procedure.

The weights and the poles obtained in this procedure are saved in a hierarchical data structure (for every state, every channel (creation or annihilation of excitations, normal or anomalous) and every degree of freedom) impgmatrix of type gfmatrix.

subroutine  ed_gf_nonsu2/rebuild_gf_nonsu2()

Reconstructs the system impurity electrons Green’s functions using impgmatrix to retrieve weights and poles.

subroutine  ed_gf_nonsu2/build_sigma_nonsu2()

Obtains the self-energy function \(\Sigma\) on the current Matsubara and Real-axis intervals using impurity Dyson equation \(\hat{\Sigma}(z) = \hat{G}^{-1}_0(z) - \hat{G}^{-1}(z)\)