vumps

  • full name: tenpy.algorithms.vumps

  • parent module: tenpy.algorithms

  • type: module

Classes

Inheritance diagram of tenpy.algorithms.vumps

SingleSiteVUMPSEngine(psi, model, options, ...)

Engine for the single-site VUMPS algorithm.

TwoSiteVUMPSEngine(psi, model, options, **kwargs)

Engine for the two-site VUMPS algorithm.

VUMPSEngine(psi, model, options, **kwargs)

VUMPS base class with common methods for the TwoSiteVUMPS and SingleSiteVUMPS.

Module description

Variational Uniform Matrix Product State (VUMPS)

The VUMPS algorithm was developed to find ground states directly in the thermodynamic limit in a more principled fashion than iDMRG, which essentially is a finite algorithm extrapolated to the thermodynamic limit. VUMPS is a tangent space MPS method, where we look for the optimal ground state in the manifold of fixed bond dimensionMPS [vanderstraeten2019].

The VUMPS algorithm was introduced in 2017 [zauner-stauber2018], where it was shown that VUMPS outperforms both iTEBD and iDMRG as ground state search algorithms for both 1D and quasi-1D models. The VUMPS algorithm uses the network UniformMPS to represent the current state of the uniform MPS during optimization. On each site, left canonical AL, right canonical AR, and single-site orthogonality center AC is stored; on each bond a center matrix C is stored. During the algorithm, the canonical form equality AL_i C_{i+1} = C_i AR_i = AC_i is not necessarily respected, yet in the ground state, we expect this to be restored. The difference in norm of the first two is the 'max_split_error' that is reported at each checkpoint.

There are two derived classes that implement the vumps algorithm, SingleSiteVUMPSEngine and TwoSiteVUMPSEngine. The first implements the algorithm found in the original paper, where the uMPS is updated by 2 zero-site eigenvalue problems and 1 one-site eigenvalue problem. This algorithm works at FIXED bond dimension, so the starting uMPS must be prepared with desired bond dimension. Currently we do this with 'MPS.from_desired_bond_dimension' which is NOT compatible with charge conservation, as it is implemented with random unitaries to artificially grow $chi$. The single-site algorithm allows for optimization of a translationally invariant uMPS with a single-site unit cell, which is currently not possible in our iDMRG implementation.

Charge conservation and dynamic control of bond dimension is enabled by a novel two-site algorithm, in which we solve a two-site eigenvalue problem and 2 one-site eigenvalue problems. This algorithm involves an SVD, which allows us to dynamically grow the bond dimension. Thus, we can start the algorithm in a product state with charge conservation and enlarge the bond dimension based on max_chi or SVD cutoff. Best practices for multi-site unit cell uMPS would be to start with the 2-site algorithm and switch to the single-site algorithm, which is the more principled algorithm.