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:

ed_finalize_solver(), ed_init_solver(), ed_solve()

Used modules

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 ]. while nb depends on the bath size and geometry and can be obtained from get_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 ]. while nb depends on the bath size and geometry and can be obtained from get_bath_dimension() .

The solution is achieved in this sequence:

  1. setup the MPI environment, if any

  2. Set the internal bath instance dmft_bath copying from the user provided input bath

  3. Get the low energy spectrum: call diagonalize_impurity()

  4. Get the impurity Green's functions: call buildgf_impurity() (if sflag = .true. )

  5. Get the impurity susceptibilities, if any: call buildchi_impurity() (if sflag = .true. )

  6. Get the impurity observables: call observables_impurity()

  7. Get the impurity local energy: call local_energy_impurity()

  8. Get the impurity reduced density matric: call rdm_impurity()

  9. Delete MPI environment and deallocate used structures state_list and dmft_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.