-
Notifications
You must be signed in to change notification settings - Fork 0
Numerical renormalization group implementation "NRG Ljubljana"
License
rokzitko/nrgljubljana-old
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
"NRG Ljubljana" is a flexible framework for performing large scale numerical renormalization group (NRG) calculations for quantum impurity problems. It is highly extensible without sacrificing numerical efficiency. Copyright (C) 2006-2014 Rok Zitko 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 (s-d) model or the Anderson single impurity model, and their multi-impurity and multi-channel 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. It efficiently handles problems with different symmetries, such as spin SU(2) symmetry, charge SU(2) symmetry, Z_2 reflection symmetry (parity), etc. 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 non-commutative second quantisation 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 second-quantization 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 routine which solves the eigenvalue problem. 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. 1. Features - all parameters and model definitions (!) configurable at run-time, no need to recompile for different runs - support for a large number of different symmetry types - flexible truncation schemes (energy cut-off truncation, avoidance of trunction within gaps, etc.) - density-matrix NRG (DM-NRG) for all symmetry types - full-density matrix (FD-NRG) for all symmetry types - FDM calculation of expectation values at finite temperatures - sum-rule conserving spectral function calculations (CFS approach) - various spectral-function broadening schemes & stand-alone tools - self-energy trick calculations - arbitrary number of channels (in practice 1,2,3) - calculations with real and complex numbers - support for superconducting bands, spin-polarized bands, etc. - support for global operators (i.e., operators defined on the Wilson chain sites) - calculation of temperature-dependent conductance, G(T) - flexibility in definition of the Hamiltonian, which is simply written using a second-quantization operator expression - automatic exact diagonalisation of the initial Hamiltonian with automagic generation of the (Q,S) (or some other) basis - flexibility in the choice of operators whose thermodynamical averages are computed, they can be expressed using operators of second quantization - dynamic spin susceptibility, dynamic charge susceptibility, etc. It is possible to compute arbitrary spectral functions for any pair of local operators. - multiple logarithmic discretization schemes (Wilson/Krishnamurthy, Yoshida/Whitaker/Oliveira, Campo/Oliveira, ODE scheme) - support for non-flat bands (i.e. cosine band that arrises from tight-binding description of leads in quantum transport problems, or arbitrary hybridization as needed in DMFT), see dmft.m - heavily commented code with reference to original publications of formulas and approaches used - object-oriented code for easy maintenance and expandability - FAST!: very high numeric efficiency with optimized-for loops in the most numerically demanding parts of the code (chiefly the recalculation of irreducible matrix elements of operators) - N/N+2 trick (patching) in calculation of spectral densities - amount of verbosity in log files is configurable - automatic recording of time elapsed in various parts of the program - monitoring of memory use - formated output files for easy interpretation of the results (for example, headers with parameters and heading lines in tables with operator names) - internal consistency checks, assertions, parameter compatibility and reasonableness checks that reduce the possibility of undetected bugs 2. Documentation Presently, there is no up-to-date documentation. Sorry. 3. License This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA The full text of the GPL General Public License can be found in file LICENSE. 4. Compiling and dependencies NRG Ljubljana is very portable and it should work without any modification on any modern Linux distribution and, with some tweaking, on any Unix or Unix-like operating system with a good standards-compliant C++ compiler. It has been reported to me that it can also be compiled under Windows. The following libraries are required to compile the C++ part of the NRG code: * LAPACK and BLAS linear algebra libraries * boost C++ libraries Due to the heavy use of template metaprogramming in boost libraries, a high-quality standards-compliant C++ compiler must be used. Wolfram Reasearch Mathematica must be installed for running the Mathematica part of the NRG code. Versions 5.0, 5.1, 5.2, 6.0, 7.0 and 8.0 have been tested. Mathematica is only required for the initialization of the problem (basis construction, diagonalisation of the initial Hamiltonian, transformations of the operator matrices, etc.) which is relatively fast. When "NRG Ljubljana" is used on a cluster, it is therefore sufficient to have Mathematica installed on a single computer (for example on the cluster host computer), while the numerically demanding (C++) part of the program can be ran on the cluster nodes. Usually, the compilation consists of configuring and compiling NRG: ./configure --prefix=$HOME --with-tools make (The tools are optional: you might not need them. In this case do not use the "--with-tools" option.) 5. "Installation" To install "NRG Ljubljana", copy the executables to an appropriate location. Furthermore, the Mathematica scripts *.m must be accessible; you may simply copy them to the directory from which the NRG code will be started. You can also do a "make install". Note, however, that the scripts from scripts/ and tools from tools/ will end up in the installation bin/ directory. 6. Contributing to "NRG Ljubljana" If you make improvements to "NRG Ljubljana", you are encouraged to share them with other users. Bug reports (and fixes) are very welcome as well. The contact information is in the next section. 7. Contact information: "NRG Ljubljana" home-page: http://nrgljubljana.ijs.si/ Rok Zitko "Jozef Stefan" Institute F1 - Theoretical physics Jamova 39 SI-1000 Ljubljana Slovenia rok.zitko@ijs.si 8. Acknowledgements The development of the "NRG Ljubljana" framework started during author's PhD studies at the Faculty for mathematics and physics of the University of Ljubljana, and the "Jozef Stefan" Institute, Ljubljana, Slovenia. Discussions and collaboration with prof. Janez Bonca, prof. Anton Ramsak, dr. Jernej Mravlje and dr. Tomaz Rejec from the F1, Theoretical Physics department are acknowledged. I'm also grateful to prof. Thomas Pruschke, Robert Peters and Oliver Bodensiek from the University in Goettingen for many very fruitful discussions. I thank Marcus Greger from the University in Augsburg for contributing optimized routines for the spectral function calculation.
About
Numerical renormalization group implementation "NRG Ljubljana"