Welcome to the Flexible DM-NRG web page, the most flexible NRG code yet available under the GNU license.



What is Flexible DM-NRG ?
License, Registration, and Credit
Improving Flexible DM-NRG
Contact and Reporting bugs



The Flexible DM-NRG site is powered by the
Department of Theoretical Physics
Budapest University of Technology and Economics

Team members:

Örs Legeza
Cătălin Paşcu Moca
Anna Tóth
Ireneusz Weymann
Gergely Zaránd 


What is Flexible DM-NRG?
The numerical renormalization group method (NRG) was first introduced by Wilson in the late 70's to solve the Kondo problem. Later NRG became one of the most popular tools to solve quantum impurity problems: It can be used to compute dynamical correlation functions as well as thermodynamic quantities, and very recently it has also been used to evaluate time-dependent correlation functions.

To perform efficient NRG calculations, one needs to exploit the symmetries as much as possible. Furthermore, for more delicate problems it is also essential to use a density matrix approach combined with recent spectral sum-conserving methods.

The DM-NRG code available here is one of the most efficient NRG codes and it is FREE for everyone. This code combines the spectral sum-conserving methods of Weichselbaum and von Delft and of Peters, Pruschke and Anders (both relying upon the complete basis set construction of Anders and Schiller) with the use of non-Abelian symmetries in a flexible manner: Essentially any non-Abelian symmetry can be taught to the code, and any number of such symmetries can be used throughout the computation for any density of states, and to compute any local operators' correlation function's real and imaginary parts or any thermodynamical expectation value. The code works both at zero and finite temperatures.  

This is the first release of the code. It will be continually developed and maintained, with a new release about once a year. 

  1. Zero and finite temperature calculations of the spectral function of any pair of local operators.
  2. Dynamical use of any number of symmetries.
  3. Static averages of various local operators.
  4. Perform conventional NRG as well as Density Matrix NRG with the full set of Anders-Schiller basis.
  5. Single input file and input file examples. Examples are available for Anderson as well as Kondo Hamiltonians in the presence of U(1) and spin and charge SU(2) symmetries.
  6. Mathematica utility to construct your own input file for your own problem.
  7. Calculations for flat density of states as well as any energy-dependent density of states (using arbitrary precision routines).
  8. Utility for spectral function evaluation and Hilbert transform is provided.
  9. Utility for computing the on-site energies and the hopping parameters for a user-defined density of states.

License, Registration, and Credit
 License, Registration

Flexible DM-NRG is distributed under the GNU LGPL. This license makes the code free to use, share, and improve, and allows you to pass on the resulting code. The license gives freedom, but also sets firm restrictions on the use with non-free programs. Registration is not necessary to download and use the code, you can just go ahead and click on the link below to download it. However, registration will help us to keep track of the usage of this code. Also, if you register, you have an option to get automatic alerts on updates and bug fixes.

To register, please, fill in the form below (all the fields are required)  

First Name:

Last Name:


Email Address:

Download the code here:  flexible-dmnrg-1.0.0.tgz



Yes, send me updates about the Flexible DM-NRG code


Although Flexible DM-NRG is a free program, we would appreciate if you could cite our web site and/or the following paper when publishing results obtained through Flexible DM-NRG code or its modified version:
In case of an oral/poster presentation, where you show results obtained with the present code, we would also be glad if you could advertise the code and display our web address, http://www.phy.bme.hu/~dmnrg. If you post some results on your home page that you obtained with the present code, please, also include a link to our web address so that more people become aware of this opportunity.

If you have a manuscript/paper in which you present results obtained with this code, send us an e-mail so that we can add a link on this page to your work.


User manual of Flexible DM-NRG code in the pdf format is available for download here.

This manual gives you only a basic introduction to NRG. To learn more about NRG, please refer to the following papers:
Additional important and useful papers include:

Basic installation:

The following compilers were tested and are known to work:
  • g++ (gnu C++ compiler)
    • this compiler is installed by default in practically any Linux distribution
  • gcc (gnu C and C++ compiler)
    • this compiler is installed by default in practically any Linux distribution

The following libraries need to be installed before trying to compile the code.
  1. lapack (used by the diagonalization and matrix multiplication routines)
  2. gmp (gnu multiple precision library)
  3. gsl (gnu scientific library)
You need to have root privileges to properly install these libraries. A technical advice: it is better to install the libraries as rpm packages, although for that you also need root privileges. If you have an x86_64 machine, install only the 64 bit libraries and link to them. Combining the 32 and 64 bits libraries is not recommended, because you may run into troubles when trying to link them to each other.

Advanced installation

We have tested the code by compiling it also with icc (Intel compiler) and linked with mkl_lapack libraries from Intel. Creating the proper configuration (make.sys file) needs some extra effort, but the gain in the speed deserves it. You could also link to optimized lapack and blas libraries to speed up the code.

Installation instructions
1. Download the file using the link provided under "Licence, Registration, and Credit".
2. Copy the downloaded file in a folder at your wish.
3. Unzip the package by running the following command in a shell:
    tar xvzf flexible-dm-nrg-1.0.0.tgz 

4. Install the libraries listed in the Prerequisites section.
5. Compile the code:
      In a shell console in the main folder of the code run
       make install
6. Run the code with
     using an input file provided in the package to make sure that everything works.
     The input files are located in the ./input_file folder that comes with the package.
     To calculate the spectral functions, run
7. Check the output in the ./results folder of the main directory of the code.
8. To analyze the finite size spectrum, run
9. To improve the speed of the code, you can use other compilers and link to optimized lapack/blas libraries.
    To do this, consult the manual.

Improving Flexible DM-NRG

Since Flexible DM-NRG is a free software, anybody can improve it and pass on the results, as permitted by the GNU LGPL.
If you have written an improvement and you want to make it publicly available, please send it to dmnrg@neumann.phy.bme.hu so that it may be included in the next public release. Of course, a proper credit will be given to you and your name will also appear on this page in case your work is included in the package. Before starting to work on an improvement, please write to the same address to make sure your work is not being done by somebody else at the same time. An up-to-date list of the improvements in progress will be posted on this web site as soon as possible.

Contact, Reporting BUGS and Comments

Before sending us a bug-report, please, first have a look here on how to report bugs. The proper address for bug reports is dmnrg@neumann.phy.bme.hu (use subject BUG REPORT). For any other comments/questions related to the code, please, do not hesitate to contact us by using the same e-mail address.