Overview SCCE
Self-consistent-cluster embedding (SCCE) contains various tools in the field of cluster embedding.
Currently SCCE is released on HQStage as an interface to the HQS in-house Density-Matrix-Renormalization-Group (DMRG) code,
specifically for time dependent simulations.
With DMRG it is possible to solve large fermionic, bosonic or spin systems particularly in (quasi-) one dimension. The underlying DMRG code is open source and maintained by HQS. For details see the theory section.
Installation
SCCE must be installed using our the HQStage management tool. SCCE requires the MKL library. Below we provide several routes how this can be achieved.
HQStage
Using HQStage you can run
hqstage envs install-mkl
which automatically sets up the MKL library.
Pip
Furthermore, you can use pip directly to install the MKL library via
pip install mkl --upgrade
on some systems it is required to adjust the LD_LIBRARY_PATH to point to the python libs.
For example, if the virtual environment in which you have pip-installed MKL is
.local/share/HQStage/envs/HQStageEnv, you might have to execute
export LD_LIBRARY_PATH=$HOME/.local/share/HQStage/envs/HQStageEnv/lib:$LD_LIBRARY_PATH
point the linker to the location of the libraries.
In addition, the MKL pip package may not setup certain symbolic links, which can be fixed by running
cd $HOME/.local/share/HQStage/envs/HQStageEnv/lib/
ln -s libmkl_rt.so.2 libmkl_rt.so
cd -
Conda and other package management tools
Alternatively, you can conda (or other package manager like apt) to install MKL.
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.
Usage
SCCE is a very flexible tool. Currently, we provide examples to demonstrate how SCCE is used as
interface to the underlying DMRG code. Hence, the example notebooks serve as an "how-to-use" introduction.
As a start, look at the examples in groundstates_introduction to get acquainted with the approach.
Main DMRG parameter
-
DMRG_dirScratch: a directory for scratch data -
DMRG_dirResults: a directory for the DMRG results -
DeltaTime: site of the time stepping in . -
NumTimeSteps: number of time steps to be performed, each with a time stepping ofDeltaTime. -
skipDMRG: allows for skipping the actual DMRG run, reusing results from the previous run -
DMRG_DiscardedEntropy: measure for dynamically adapting the target space dimension -
DMRG_Scale_AB: maximal dimension of the target space is given byDMRG_Scale_AB · DMRG_NCut. -
DMRG_dirScratch: a directory for scratch data. Do not run this over NFS. Use a dedicated scratch storage if available. -
DMRG_dirResults: a directory for the DMRG results. -
skipDMRG: allows for skipping the actual DMRG run, reusing results from the previous run. -
DMRG_DiscardedEntropy: measure for dynamically adapting the target space dimension. -
DMRG_Scale_AB: maximal dimension of the target space is given byDMRG_Scale_AB · DMRG_NCut. -
DMRG_IndexH0Usage0: number of sweeps a free Hamiltonian is added to obtain the density matrix in order to avoid stagnation during the inital warm up and firstDMRG_IndexH0Usage0sweeps. -
DMRG_IndexH0Usage: AsDMRG_IndexH0Usage0, just for the restarted runs. Since there is no risk of stagnation here, we can disable this feature to increase performance. -
NumTimeSteps: time steps of sizeDeltaTimeusing a matrix exponential within the Krylov subspace approximation not relying on any trotterization. -
DMRG_NumWorkerThreads: allows to set the number of worker threads. There are additional supervising threads to ensure concurrency which may lead to a small over-provisioning.
Warning
Note, the final DMRG result is stored in a hdf5 file. If this file is opened by another programme, like an hdf5 viewer as HDFCompass, while the DMRG is running then storing the results fails.
One also has to take into account that the DMRG can create a lot of scratch data.
It is therefore recommended to use a dedicated scratch device and not just /tmp
as in the example notebooks. In addition, one should be careful with using NFS mounted
storage as a scratch device, especially if it is also serving other users, as the DMRG code
can allocate a lot of bandwidth.
Examples
Introductory ground state calculations
-
groundstates_introduction/groundstate_fermions.ipynb: Single particle reduced density matrix for spinless fermions on a honeycomb lattice. -
groundstates_introduction/groundstate_fermions_spinful.ipynb: A model of spin 1/2 fermions on a Lieb lattice representing a prototype for the copper oxide based high-temperature superconductors. -
groundstates_introduction/groundstate_spins_Majumdar_Gosh.ipynb: An example for a perturbed valence bond solid.
Time dependent quenches
wavepaket_dynamics/spin_charge_separation_k_resolved.ipynb: A time dependent simulation of spin-charge separation in the one-dimensional Hubbard model.