Green’s Function calculation
In this module ed_gf_normal
the interacting impurity Green’s
functions \(\hat{G}(z)\) are evaluated for ed_mode
=
normal
.
The (rather well known) algorithm is outlined in j.cpc.2021.108261.
Briefly, for any eigenstate \(|n\rangle\) in the state_list
contributing to
the low energy part of the Hamiltonian spectrum the quantity is
evaluated:
using dynamical Lanczos method: a) the partial tridiagonalization of the sector Hamiltonian \(H\) with quantum numbers \(\vec{Q}=[\vec{N}_\uparrow,\vec{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:
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{\Sigma}(z) = \hat{G}^{-1}_0(z) - \hat{G}^{-1}(z)\).
Description
Constructs the interacting impurity electronic Green’s functions. On request it evaluated the phononic Green’s functions and and different susceptibilities.
Quick access
- Routines:
build_gf_normal()
,rebuild_gf_normal()
,build_sigma_normal()
Used modules
-
one()
xi()
pi()
-
-
ed_input_vars
: Contains all global input variables which can be set by the user through the input file. A specific preocedureed_read_input()
should be called to read the input file usingparse_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 theeffective_bath
, thegfmatrix
and thesector
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 Hamiltonianed_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 thesector_map
connecting the states of a given sector with the corresponding Fock ones.ed_hamiltonian_normal
: Setup and build the sector Hamiltonian, returns the correct dimension of the vectors in the Arpack/Lanczos procedure in each thread and provides an interface to Tri-Diagonalize the Hamiltonian on a Krylov basis given a starting vector.
Subroutines and functions
- subroutine ed_gf_normal/build_gf_normal()
Evaluates the impurity electrons Green’s function \(G(z)\) and the phonons one \(D(z)\) using dynamical Lanczos method. The result is stored in rank-5 arrays
impgmats
,impgreal
of dimensions [nspin
,nspin
,norb
,norb
,Lmats
/Lreal
] and rank-1 arrayimpdmats
,impdreal
.The off-diagonal components of \(G_{ab}\) with \(a \neq b\) are obtained using algebraic manipulation, see j.cpc.2021.108261.
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) and every degree of freedom)
impgmatrix
of typegfmatrix
.
- subroutine ed_gf_normal/rebuild_gf_normal()
Reconstructs the system impurity electrons Green’s functions using
impgmatrix
to retrieve weights and poles.
- subroutine ed_gf_normal/build_sigma_normal()
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)\).