Backward iteration#
The fdmBackwardIteration class performs the backward-iteration steps used in full-density-matrix
NRG calculations. It propagates reduced density matrices and computes the thermal weights needed for
spectral and dynamical observables.
How backward iteration works#
The helper is attached to an existing nrgcore object and processes one saved Wilson shell at a time,
starting from the last shell and moving toward the impurity. The NRG object supplies the shell’s sector
energies, eigenbasis, kept-state indices, and the mapping between system and bath basis states.
For each shell, the helper updates its kept-state index sets and assembles a density matrix for every quantum-
number sector. On the final shell, the no-argument density-matrix path assigns normalized weight to states
within energyErrorBar of the shell ground state. On earlier shells, it places the supplied Boltzmann
weights on discarded states and carries the reduced density matrix from the next shell on the kept states.
This is how contributions from discarded shells are combined with the states retained for the next backward
step.
To obtain that next-shell density matrix, the helper rotates each shell matrix into the coupled system-bath
basis, then traces over bath states. The result is stored as reducedRho by system sector. The class also
provides rhoDotStaticOperators to contract the shell density matrix with sector-diagonal operators and
return their traces. clearKeptIndex resets the cached matrices, weights, and kept-state history before a
new backward pass.
The helper retains a pointer to the NRG object rather than copying its state, so that object must outlive the backward-iteration calculation. Temperature and degeneracy tolerance are supplied in the same energy units as the NRG spectrum.
For the generated class reference and member list, see the fdmBackwardIteration class documentation.