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}#