
"NRG Ljubljana"  open source numerical renormalization group code

Framework "NRG Ljubljana" is a set of interrelated computer
codes for performing numerical renormalization group
(NRG) calculations for quantum impurity
problems, described by models such as the Kondo exchange
(sd)
model or the Anderson single impurity model, and their
multiimpurity and multichannel generalizations. It
also contains a number of tools for analyzing results (thermodynamic
properties, such as magnetic and charge susceptibility, entropy and
heat capacity; expectation values of arbitrary operators; spectral
functions). It is user friendly, in the sense that it is easy to set
up new types of problems (Hamiltonians, perturbation terms, etc.) and
the output is formatted and annotated for easy interpretation, parsing
and plotting.
To achieve a high degree of flexibility without sacrificing numerical
efficiency, "NRG Ljubljana" is composed of a hierarchy of modules:
high level modules are written in a mixture of functional and
procedural Mathematica code,
while the low level numerically intensive parts are programmed in the
object oriented approach in the C++ language. The foundation of the
framework is a Mathematica package for performing calculations with
noncommutative second quantization operators, SNEG. Next layer is a Mathematica program which
defines the Hamiltonian, the basis of states, and the physical
operators of interest: with the help of SNEG,
Hamiltonian and operators can be defined using the familiar
secondquantization expressions. This program performs the
diagonalization of the initial Hamiltonian and prepares the input for
the NRG iteration proper.
For efficiency, NRG iteration is performed by a separate C++
program: for a typical problem, most of the time (90%) is spent in the
LAPACK dsyev and dsyevr routines which solve eigenvalue problems. There is
very little housekeeping overhead due to the tasks required by the NRG
iteration; "NRG Ljubljana" is thus suitable for performing large
scale NRG calculations on computer
clusters.