Skip to main contentIBM Quantum Documentation

LayerwiseEvolver

class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)

GitHub

Bases: TEBDEvolver

A special case of the TEBDEvolver based on layer-wise evolution models.

As also explained in tenpy_layers, this implementation extracts the alternating even/odd bond updates implemented inside of the original TEBDEngine to become the end users responsibility. It does so, by replacing the single Hamiltonian provided to the TEBDEvolver instance with a sequence of LayerModel instances. Every single instance of these encodes a single layer of interactions. These should enforce the alternating updates of even and odd bonds of the underlying tensor network.

The motivation for this more complicated interface is that is provides a lot more flexbility and enables users to define custom Trotter product formulas rather than being limited to the ones implemented by TeNPy directly.

Initialize a LayerwiseEvolver instance.

Parameters

  • evolution_state (tenpy_tebd.MPOState) – forwarded to TEBDEvolver. Please refer to its documentation for more details.
  • layers (list[LayerModel]) – the list of models describing single layers of interactions. See above as well as the explanations provided in tenpy_layers.
  • args – any further positional arguments will be forwarded to the TEBDEvolver constructor.
  • kwargs – any further keyword arguments will be forwarded to the TEBDEvolver constructor.

Attributes

layers

The layers of interactions used to implement the time-evolution.

dt

The time step to be used by this time-evolution instance.


Methods

calc_U

calc_U(order, delta_t, type_evo='real', E_offset=None)

GitHub

Calculates the local bond updates.

This adapts calc_U() to work with the layer-wise implementation.

Parameters

  • order (int) – this is being ignored.
  • delta_t (float) – the time-step to use.
  • type_evo (str) – the type of time-evolution. Imaginary time-evolution is not supported at this time.
  • E_offset (list[float] | None) – a constant energy offset to be applied.

Return type

None

evolve

evolve(N_steps, dt)

GitHub

Perform a single time step of TEBD.

Parameters

  • N_steps (int) – should always be 1 in this case. See TEBDEngine for more details.
  • dt (float) – the time-step to use.

Returns

The truncation error.

Return type

TruncationError

suzuki_trotter_decomposition

static suzuki_trotter_decomposition(order, N_steps)

GitHub

Returns an empty list.

Note

This method is undefined for this subclass but we cannot raise an error upon calling it because of the internal algorithm flow. Instead, the Trotter decomposition in this class is encoded directly into the layers.

Parameters

  • order (int) – is being ignored.
  • N_steps (int) – is being ignored.

Returns

An empty list.

Return type

list[tuple[int, int]]

suzuki_trotter_time_steps

static suzuki_trotter_time_steps(order)

GitHub

Returns an empty list.

Note

This method is undefined for this subclass but we cannot raise an error upon calling it because of the internal algorithm flow. Instead, the Trotter decomposition in this class is encoded directly into the layers.

Parameters

order (int) – is being ignored.

Returns

An empty list.

Return type

list[float]

Was this page helpful?
Report a bug or request content on GitHub.