Inheritance diagram of tenpy.algorithms.tdvp

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

Deprecated old name of the OldTDVPEngine.

H0_mixed(Lp, Rp)

Class defining the zero site Hamiltonian for Lanczos.

H1_mixed(Lp, Rp, W)

Class defining the one site Hamiltonian for Lanczos.

H2_mixed(Lp, Rp, W0, W1)

Class defining the two sites Hamiltonian for Lanczos.

OldTDVPEngine(psi, model, options[, environment])

Time dependent variational principle algorithm for MPS.

SingleSiteTDVPEngine(psi, model, options, ...)

Engine for the single-site TDVP algorithm.

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

Time dependent variational principle algorithm for MPS.

TimeDependentSingleSiteTDVP(psi, model, ...)

Variant of SingleSiteTDVPEngine that can handle time-dependent Hamiltonians.

TimeDependentTwoSiteTDVP(psi, model, ...)

Variant of TwoSiteTDVPEngine that can handle time-dependent Hamiltonians.

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

Engine for the two-site TDVP algorithm.

Module description

Time Dependant Variational Principle (TDVP) with MPS (finite version only).

The TDVP MPS algorithm was first proposed by [haegeman2011]. However the stability of the algorithm was later improved in [haegeman2016], that we are following in this implementation. The general idea of the algorithm is to project the quantum time evolution in the manyfold of MPS with a given bond dimension. Compared to e.g. TEBD, the algorithm has several advantages: e.g. it conserves the unitarity of the time evolution and the energy (for the single-site version), and it is suitable for time evolution of Hamiltonian with arbitrary long range in the form of MPOs. We have implemented:

  1. The one-site formulation following the TDVP princible in SingleSiteTDVPEngine, which does not allow for growth of the bond dimension.

  2. The two-site algorithm in the TwoSiteTDVPEngine, which does allow the bond dimension to grow - but requires truncation as in the TEBD case, and is no longer strictly TDVP, i.e. it does not strictly preserve the energy.

Much of the code is very similar to DMRG, and also based on the Sweep class.


The interface changed compared to version 0.9.0: Using TDVPEngine will result in a error. Use SingleSiteTDVPEngine or TwoSiteTDVPEngine instead. The old code is still around as OldTDVPEngine.


extend code to infinite MPS


allow for increasing bond dimension in SingleSiteTDVPEngine, similar to DMRG Mixer