Exact Diagonalization: Superconductive
How Exact Diagonalization/Arpack/Lanczos is performed
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_sector: Routines for Fock space sectors creation and manipulationed_hamiltonian_superc: Routines for Hamiltonian construction,SUPERCcase
External modules
Subroutines and functions
- subroutine ed_diag_superc/diagonalize_impurity_superc()
This procedure performs the diagonalization of the Hamiltonian in each symmetry sector for
ed_mode=superc, i.e. for quantum number \(\vec{Q}=S_{z}\).The diagonalization proceeds in three steps.
Setup the diagonalization of selected sectors only if the file
sectorfileexists.Perform a cycle over all the symmetry sectors \({\cal S}(\vec{Q})\)
Decide if the sector should be diagonalized, i.e. if this is a twin sector and
ed_twinis True.Setup the Arpack/Lanczos parameters
neigen,nblock,nitermaxConstruct the sector Hamiltonian and/or just associate the correct matrix-vector product in
build_hv_sector_normalcall
sp_eigh(Arpack) orsp_lanc_eigh(Lanczos) oreigh(Lapack) according to the dimension of the sector and the value oflanc_methodRetrieve the eigen-states and save them to
state_list
Analyze the
state_list, find the overall groundstate \(|\psi_0\rangle\) , trim the list using thecutoff\(\epsilon\) to that \(e^{-\beta E_{max}} < \epsilon\) , create an histogram of the states requested to each sector and use it to increase or decrease those number according to the contribution of each sector to the spectrum.