LayerwiseEvolver

class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)[source]

Bases: TEBDEvolver

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

As also explained in quimb_layers, this implementation extracts the alternating even/odd bond updates implemented inside of the original quimb.tensor.TEBD 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 quimb directly.

Initialize a LayerwiseEvolver instance.

Parameters:
  • evolution_state (quimb_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 quimb_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.

Methods

step()[source]

Perform a single time step of TEBD.

This will iterate over the layers and apply their interaction to the internal state.

Return type:

None