dmrg
full name: tenpy.algorithms.dmrg
parent module:
tenpy.algorithms
type: module
Classes
|
DMRG base class with common methods for the TwoSiteDMRG and SingleSiteDMRG. |
|
Engine for the single-site DMRG algorithm. |
|
Engine for the two-site DMRG algorithm. |
Functions
|
Compute a 'ramping-up' chi_list. |
|
Perform an exact diagonalization of effH. |
|
Run the DMRG algorithm to find the ground state of the given model. |
Module description
Density Matrix Renormalization Group (DMRG).
Although it was originally not formulated with tensor networks, the DMRG algorithm (invented by Steven White in 1992 [white1992]) opened the whole field with its enormous success in finding ground states in 1D.
We implement DMRG in the modern formulation of matrix product states [schollwoeck2011],
both for finite systems ('finite'
or 'segment'
boundary conditions)
and in the thermodynamic limit ('infinite'
b.c.).
The function run()
- well - runs one DMRG simulation.
Internally, it generates an instance of an Sweep
.
This class implements the common functionality like defining a sweep,
but leaves the details of the contractions to be performed to the derived classes.
Currently, there are two derived classes implementing the contractions: SingleSiteDMRGEngine
and TwoSiteDMRGEngine
. They differ (as their name implies) in the number of sites which
are optimized simultaneously.
They should both give the same results (up to rounding errors). However, if started from a product
state, SingleSiteDMRGEngine
depends critically on the use of a
Mixer
, while TwoSiteDMRGEngine
is in principle more
computationally expensive to run and has occasionally displayed some convergence issues.
Which one is preferred in the end is not obvious a priori and might depend on the used model.
Just try both of them.
A Mixer
should be used initially to avoid that the algorithm gets stuck in local energy
minima, and then slowly turned off in the end. For SingleSiteDMRGEngine
, using a mixer is
crucial, as the one-site algorithm cannot increase the MPS bond dimension by itself.
A generic protocol for approaching a physics question using DMRG is given in Protocol for using (i)DMRG.