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

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 NCut per block without counting the two sites inserted in the middle, at at most DMRG_Scale_AB * NCut states in order to decrease the discarded entropy below the threshold provided by DMRG_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 of DeltaTime.

  • 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 by DMRG_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 by DMRG_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 first DMRG_IndexH0Usage0sweeps.

  • DMRG_IndexH0Usage: As DMRG_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 size DeltaTime using 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.