Theory
Density-Matrix-Renormalization-Group (DMRG) iteratively optimizes the many particle waves function within a matrix product representation. There are many introductory articles you may refer to for an introduction to the method, e.g. Noack an Manmana, AIP Conf. Proc. 789, 93-163 (2005), arXiv.
The code is in production status for many years and has been used for DMRG related publications by Peter Schmitteckert and others, including
-
Peter Schmitteckert, Phys. Rev. B 70, 121302(R) (2004), arxiv link, "Nonequilibrium electron transport using the density matrix renormalization group method"
-
Tobias Ulbricht and P. Schmitteckert, EPL 86 57006, "Is spin-charge separation observable in a transport experiment?"
-
A. Branschädel, E. Boulat, H. Saleur, and P. Schmitteckert, Phys. Rev. Lett. 105, 146805 (2010), "Shot Noise in the Self-Dual Interacting Resonant Level Model"
-
Marion Moliner and Peter Schmitteckert, Phys. Rev. Lett. 111, 120602 (2013), "Adiabatic Tracking of a State: A New Route to Nonequilibrium Physics".
-
Peter Schmitteckert, Phys. Rev. B 97, 161110(R) (2018), "Density matrix renormalization group for a highly degenerate quantum system: Sliding environment block approach"
Especially the work on highly degenerate quantum systems shows that treating DMRG as a black blox can be dangerous.
We apply the following techniques:
- We first perform an infinite and a few finite lattice sweeps to find the initial state.
- Here we add an additional free system in order to avoid stagnation of the DMRG.
- Time evolution is restarted, iteratively increasing the range of the time evolution.
- Time evolution is performed using matrix exponentials in the Krylov space. There are no Trotter errors.
- We can apply adaptive and full evolution schemes. In the example provided we stick to the full evolution scheme, as it is safer and easier to use.
- Size of the target space is selected dynamically, keeping at least
NCutper block without counting the two sites inserted in the middle, at at mostDMRG_Scale_AB * NCutstates in order to decrease the discarded entropy below the threshold provided byDMRG_Discarded_Entropy. - We would like to remind, that DMRG is a method that works best for systems with low entanglement, which are typically the one-dimensional or quasi-one-dimensional systems.
- We added the possibility to switch to a site ordering provided by the Fiedler vector in order to decrease the band width of the hopping matrix.
- While not used in the example we can make use of the sliding block approach.
The interface from python to the DMRG code and back is provided via hdf5.
When running the DMRG one should take care of disc space needed by the DMRG.
First we need a scratch directory, DMRG_dirScratch, for intermediate data, which can be deleted
after the run or re-used to restart the calculation. For larger problems the disc space needed
in this directory can get quit large, a few GB for medium sized systems and hundreds of GB for large
systems with high accuracy.
Second we need a directory for the results, DMRG_dirResults. Here one can follow the status of the DMRG
and the results are stored in an hdf5 file, and partially in the .outtext file.