Template Class fdmBackwardIteration

Class Documentation

template<typename nrgcore_type>
class fdmBackwardIteration

This class is responsible for the backward iteration of the NRG algorithm. This class has three useful functions to calculate the energy dependent quantities such as $A(\omega)$. These functions are :

  • 1. setCurrentIndex : set the indices for the kept and Discarded states

  • 2. setRhoZero : Creates the density matrix of the current Wilson Chain.

  • 3. setReduceDensityMatrix: Reduce the density matrix after summing over the Enviorentment degree.

Template Parameters:

nrgcore_type – : Type of the nrgcore object

Param t_nrgObject:

: norgcore object created from a Impurity and bath class.

Return:

[TODO:return]

Public Functions

inline explicit fdmBackwardIteration(nrgcore_type *t_nrgObject)
inline void setup(nrgcore_type *t_nrgObject)

Explicitly set the nrgobject

Parameters:

t_nrgObject

inline void calcSpectrum(double energyScale)

These function calls the following functions :

  • 1. setCurrentIndex : set the indices for the kept and Discarded states

  • 2. setRhoZero : Creates the density matrix of the current Wilson Chain.

  • 3. setReduceDensityMatrix: Reduce the density matrix after summing over the Enviorentment degree.

Parameters:

energyScale – Energy scale of the currect NRG iteration. \( \Lambda^{-(N-1)/2} \)

inline void setReduceDensityMatrix()

Creates the reduced density matrix.

inline void setLocalPartitionFunction()

Sets the Local partition function for the current Wilson chain.

inline auto rhoDotStaticOperators(std::vector<qOperator> *bOperator)

$\rho \cdot B$ : Dot product between $\rho$ and B operator.

Parameters:

bOperator – Pointer to a std::vector of B operators.

Returns:

returns the dot product value as std::vector

inline void setRhoZero(const std::vector<std::vector<double>> &tBoltzmannFactor)

Set the density matrix based on the BoltzmannFactors and reduced density matrix of the previous Wilson Chain if available.

Parameters:

tBoltzmannFactor – Boltzmann Factors of the form of $exp(- \beta E_n)$

inline void setRhoZero()
inline void setTemperature(double mkBT)

Set the temperature of the system.

Parameters:

mkBT – Temperature

inline void setCurrentIndex()
inline void clearKeptIndex()

Clear everything. Useful for the last iteration.

Public Members

nrgcore_type *nrgObject
double kBT = {0}
std::vector<std::vector<size_t>> currentKeptIndex
std::vector<qmatrix<>> rhoZero
bool lastiteration = {true}
double energyErrorBar = {1e-5}