---
title: LayerwiseEvolver (latest version)
description: API reference for qiskit_addon_mpf.backends.quimb_layers.LayerwiseEvolver in the latest version of qiskit-addon-mpf
source: https://eu-de.quantum.cloud.ibm.com/docs/en/api/qiskit-addon-mpf/backends-quimb-layers-layerwise-evolver
---

# LayerwiseEvolver

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

[GitHub](https://github.com/Qiskit/qiskit-addon-mpf/tree/stable/0.3/qiskit_addon_mpf/backends/quimb_layers/evolver.py#L23-L89)

Bases: [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.evolver.TEBDEvolver")

A special case of the [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.TEBDEvolver") based on layer-wise evolution models.

As also explained in [`quimb_layers`](/docs/api/qiskit-addon-mpf/backends-quimb-layers#module-qiskit_addon_mpf.backends.quimb_layers "qiskit_addon_mpf.backends.quimb_layers"), this implementation extracts the alternating even/odd bond updates implemented inside of the original [`quimb.tensor.TEBD`](https://quimb.readthedocs.io/en/latest/autoapi/quimb/tensor/index.html#quimb.tensor.TEBD) to become the end users responsibility. It does so, by replacing the single Hamiltonian provided to the [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.TEBDEvolver") instance with a sequence of [`LayerModel`](/docs/api/qiskit-addon-mpf/backends-quimb-layers-layer-model "qiskit_addon_mpf.backends.quimb_layers.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`](#qiskit_addon_mpf.backends.quimb_layers.LayerwiseEvolver "qiskit_addon_mpf.backends.quimb_layers.LayerwiseEvolver") instance.

**Parameters**

- **evolution\_state** ([*quimb\_tebd.MPOState*](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-mpo-state "qiskit_addon_mpf.backends.quimb_tebd.MPOState") *| MatrixProductState*) – forwarded to [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.TEBDEvolver"). Please refer to its documentation for more details.
- **layers** ([*list*](https://docs.python.org/3/library/stdtypes.html#list)*\[*[*LayerModel*](/docs/api/qiskit-addon-mpf/backends-quimb-layers-layer-model "qiskit_addon_mpf.backends.quimb_layers.LayerModel")*]*) – the list of models describing single layers of interactions. See above as well as the explanations provided in [`quimb_layers`](/docs/api/qiskit-addon-mpf/backends-quimb-layers#module-qiskit_addon_mpf.backends.quimb_layers "qiskit_addon_mpf.backends.quimb_layers").
- **args** – any further positional arguments will be forwarded to the [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.TEBDEvolver") constructor.
- **kwargs** – any further keyword arguments will be forwarded to the [`TEBDEvolver`](/docs/api/qiskit-addon-mpf/backends-quimb-tebd-tebd-evolver "qiskit_addon_mpf.backends.quimb_tebd.TEBDEvolver") constructor.

## Attributes

### layers

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

## Methods

### step

`step()`

[GitHub](https://github.com/Qiskit/qiskit-addon-mpf/tree/stable/0.3/qiskit_addon_mpf/backends/quimb_layers/evolver.py#L61-L89)

Perform a single time step of TEBD.

This will iterate over the [`layers`](#qiskit_addon_mpf.backends.quimb_layers.LayerwiseEvolver.layers "qiskit_addon_mpf.backends.quimb_layers.LayerwiseEvolver.layers") and apply their interaction to the internal state.

**Return type**

None
