Impurity Problem Solver Routines
The module ED_MAIN
contains the procedures that initializes,
launch and finalize the EDIpack2 solver for the quantum impurity
problem.
The initialization, ed_init()
setups and allocates all the
internal variables and memory used in the code, which remain
available to the user until ed_finalize()
is called.
The key procedure is ed_solve()
which aims to diagonalize the
impurity problem, evaluate the dynamical response functions and local
observables making them available to user through input/output
procedures.
Description
Contains routine that initialize, run and finalize the Impurity model solver
Quick access
- Routines:
Used modules
ed_input_vars
: User-accessible input variablesed_vars_global
: Global variable accessible throughout the codeed_eigenspace
: Data types for the eigenspaceed_aux_funx
: Assortment of auxiliary procedures required throughout the codeed_setup
: Routines for solver environment initialization and finalizationed_bath
: Routines for bath creation and manipulationed_hamiltonian
: Routines for Fock space Hamiltonian constructioned_greens_functions
: Routines for Green's functions calculationed_chi_functions
: Routines for susceptibilities calculationed_observables
: Routines for observables calculationed_rdm
: Routines for Reduced Density Matrix calculationed_diag
: Fock space ED-Lanczos diagonalization routinesed_io
: Routines for response functions and variables input/output
External modules
Subroutines and functions
- interface ed_main/ed_init_solver(bath)
Initialize the Exact Diagonalization solver of EDIpack2.0. This procedure reserves and allocates all the memory required by the solver, performs all the consistency check and initializes the bath instance guessing or reading from a file. It requires as an input a double precision array of rank-1 [
nb
]. whilenb
depends on the bath size and geometry and can be obtained fromget_bath_dimension()
.- Parameters:
bath (•) [real, inout] – user bath input array
- interface ed_main/ed_solve(bath[, flag_gf, flag_mpi])
Launch the Exact Diagonalizaton solver for the single-site and multiple-site (R-DMFT) quantum impurity problem. It requires as an input a double precision array of rank-1 [
nb
]. whilenb
depends on the bath size and geometry and can be obtained fromget_bath_dimension()
.The solution is achieved in this sequence:
setup the MPI environment, if any
Set the internal bath instance
dmft_bath
copying from the user provided inputbath
Get the low energy spectrum: call
diagonalize_impurity()
Get the impurity Green's functions: call
buildgf_impurity()
(ifsflag
=.true.
)Get the impurity susceptibilities, if any: call
buildchi_impurity()
(ifsflag
=.true.
)Get the impurity observables: call
observables_impurity()
Get the impurity local energy: call
local_energy_impurity()
Get the impurity reduced density matric: call
rdm_impurity()
Delete MPI environment and deallocate used structures
state_list
anddmft_bath
- Parameters:
bath (•) [real, in] – user bath input array
- Options:
flag_gf [logical] – flag to calculate (
.true.
) or not (.false.
) Green's functions and susceptibilities. Default.true.
.flag_mpi [logical] – flag to solve the impurity problem parallely (
.true.
) or not (.false.
). Default.true.
.
- interface ed_main/ed_finalize_solver()
Finalize the Exact Diagonalization solver, clean up all the allocated memory.