TDVPEngine

Inheritance Diagram

Inheritance diagram of tenpy.algorithms.tdvp.TDVPEngine

Methods

TDVPEngine.__init__(psi, model, options[, …])

Initialize self.

TDVPEngine.get_resume_data([…])

Return necessary data to resume a run() interrupted at a checkpoint.

TDVPEngine.resume_run()

Resume a run that was interrupted.

TDVPEngine.run()

(Real-)time evolution with TDVP.

TDVPEngine.run_one_site([N_steps])

Run the TDVP algorithm with the one site algorithm.

TDVPEngine.run_two_sites([N_steps])

Run the TDVP algorithm with two sites update.

TDVPEngine.set_anonymous_svd(U, new_label)

Relabel the svd.

TDVPEngine.sweep_left_right()

Performs the sweep left->right of the second order TDVP scheme with one site update.

TDVPEngine.sweep_left_right_two()

Performs the sweep left->right of the second order TDVP scheme with two sites update.

TDVPEngine.sweep_right_left()

Performs the sweep right->left of the second order TDVP scheme with one site update.

TDVPEngine.sweep_right_left_two()

Performs the sweep left->right of the second order TDVP scheme with two sites update.

TDVPEngine.theta_svd_left_right(theta)

Performs the SVD from left to right.

TDVPEngine.theta_svd_right_left(theta)

Performs the SVD from right to left.

TDVPEngine.update_s_h0(s, H, dt)

Update with the zero site Hamiltonian (update of the singular value)

TDVPEngine.update_theta_h1(Lp, Rp, theta, W, dt)

Update with the one site Hamiltonian.

TDVPEngine.update_theta_h2(Lp, Rp, theta, …)

Update with the two sites Hamiltonian.

Class Attributes and Properties

TDVPEngine.TDVP_params

TDVPEngine.verbose

class tenpy.algorithms.tdvp.TDVPEngine(psi, model, options, environment=None)[source]

Bases: tenpy.algorithms.algorithm.TimeEvolutionAlgorithm

Time dependent variational principle algorithm for MPS.

Deprecated since version 0.6.0: Renamed parameter/attribute TDVP_params to options.

Parameters
  • psi (MPS) – Initial state to be time evolved. Modified in place.

  • model (MPOModel) – The model representing the Hamiltonian for which we want to find the ground state.

  • options (dict) – Further optional parameters as described in the following table.

  • environment (:class:'~tenpy.networks.mpo.MPOEnvironment` | None) – Initial environment. If None (default), it will be calculated at the beginning.

Options

config TDVP
option summary

active_sites

The number of active sites to be used for the time evolution. [...]

dt (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm

Minimal time step by which to evolve.

lanczos_options

Lanczos options as described in :cfg:config:`Lanczos`.

N_steps (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm

Number of time steps `dt` to evolve by in :meth:`run`. [...]

start_time (from TimeEvolutionAlgorithm) in TimeEvolutionAlgorithm

Initial value for :attr:`evolved_time`.

trunc_params

Truncation parameters as described in :func:`~tenpy.algorithms.truncation.t [...]

option active_sites

The number of active sites to be used for the time evolution. If set to 1, run_one_site() is used. The bond dimension will not increase! If set to 2, run_two_sites() is used.

option trunc_params: dict

Truncation parameters as described in truncate()

option lanczos_options: dict

Lanczos options as described in Lanczos.

options

Optional parameters.

Type

dict

evolved_time

Indicating how long psi has been evolved, psi = exp(-i * evolved_time * H) psi(t=0).

Type

float | complex

psi

The MPS, time evolved in-place.

Type

MPS

environment

The environment, storing the LP and RP to avoid recalculations.

Type

MPOEnvironment

lanczos_options

Options passed on to LanczosEvolution.

Type

Config

run()[source]

(Real-)time evolution with TDVP.

run_one_site(N_steps=None)[source]

Run the TDVP algorithm with the one site algorithm.

Warning

Be aware that the bond dimension will not increase!

Parameters

N_steps (integer. Number of steps) –

run_two_sites(N_steps=None)[source]

Run the TDVP algorithm with two sites update.

The bond dimension will increase. Truncation happens at every step of the sweep, according to the parameters set in trunc_params.

Parameters

N_steps (integer. Number of steps) –

sweep_left_right()[source]

Performs the sweep left->right of the second order TDVP scheme with one site update.

Evolve from 0.5*dt.

sweep_left_right_two()[source]

Performs the sweep left->right of the second order TDVP scheme with two sites update.

Evolve from 0.5*dt

sweep_right_left()[source]

Performs the sweep right->left of the second order TDVP scheme with one site update.

Evolve from 0.5*dt

sweep_right_left_two()[source]

Performs the sweep left->right of the second order TDVP scheme with two sites update.

Evolve from 0.5*dt

update_theta_h1(Lp, Rp, theta, W, dt)[source]

Update with the one site Hamiltonian.

Parameters
  • Lp (Array) – tensor representing the left environment

  • Rp (Array) – tensor representing the right environment

  • theta (Array) – the theta tensor which needs to be updated

  • W (Array) – MPO which is applied to the ‘p’ leg of theta

update_theta_h2(Lp, Rp, theta, W0, W1, dt)[source]

Update with the two sites Hamiltonian.

Parameters
theta_svd_left_right(theta)[source]

Performs the SVD from left to right.

Parameters

theta (tenpy.linalg.np_conserved.Array) – the theta tensor on which the SVD is applied

set_anonymous_svd(U, new_label)[source]

Relabel the svd.

Parameters

U (tenpy.linalg.np_conserved.Array) – the tensor which lacks a leg_label

theta_svd_right_left(theta)[source]

Performs the SVD from right to left.

Parameters

theta (tenpy.linalg.np_conserved.Array,) – The theta tensor on which the SVD is applied

update_s_h0(s, H, dt)[source]

Update with the zero site Hamiltonian (update of the singular value)

Parameters
  • s (tenpy.linalg.np_conserved.Array) – representing the singular value matrix which is updated

  • H (H0_mixed) – zero site Hamiltonian that we need to apply on the singular value matrix

  • dt (complex number) – time step of the evolution

get_resume_data(sequential_simulations=False)[source]

Return necessary data to resume a run() interrupted at a checkpoint.

At a checkpoint, you can save psi, model and options along with the data returned by this function. When the simulation aborts, you can resume it using this saved data with:

eng = AlgorithmClass(psi, model, options, resume_data=resume_data)
eng.resume_run()

An algorithm which doesn’t support this should override resume_run to raise an Error.

Parameters

sequential_simulations (bool) – If True, return only the data for re-initializing a sequential simulation run, where we “adiabatically” follow the evolution of a ground state (for variational algorithms), or do series of quenches (for time evolution algorithms); see run_seq_simulations().

Returns

resume_data – Dictionary with necessary data (apart from copies of psi, model, options) that allows to continue the simulation from where we are now.

Return type

dict

resume_run()[source]

Resume a run that was interrupted.

In case we saved an intermediate result at a checkpoint, this function allows to resume the run() of the algorithm (after re-initialization with the resume_data). Since most algorithms just have a while loop with break conditions, the default behaviour implemented here is to just call run().