dmrg¶
full name: tenpy.algorithms.dmrg
parent module:
tenpy.algorithms
type: module
Classes

Generic ‘Engine’ for the singlesite DMRG algorithm. 

Mixer based on density matrices. 

Engine which combines legs into pipes as far as possible. 

Engine which keeps the legs separate. 

Base class of a general Mixer. 

‘Engine’ for the singlesite DMRG algorithm. 

Mixer for singlesite DMRG. 

‘Engine’ for the twosite DMRG algorithm. 

Mixer for twosite DMRG. 
Functions

Compute a ‘rampingup’ 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 preffered 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 onesite algorithm cannot increase the MPS bond dimension by itself.
Todo
Write UserGuide!!!