---
title: CircuitEvolver (latest version)
description: API reference for qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver in the latest version of qiskit-addon-mpf
source: https://quantum.cloud.ibm.com/docs/en/api/qiskit-addon-mpf/backends-quimb-circuit-circuit-evolver
---

# CircuitEvolver

*class* `CircuitEvolver(evolution_state, circuit, dt)`

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

Bases: [`Evolver`](/docs/api/qiskit-addon-mpf/backends#evolver "qiskit_addon_mpf.backends.interface.Evolver")

A time-evolution engine based on quantum circuits.

This algorithm performs time-evolution by means of successively applying a quantum circuit corresponding to a single Trotter step to its internal state. More specifically, it builds out a tensor network in the [`CircuitState`](/docs/api/qiskit-addon-mpf/backends-quimb-circuit-circuit-state "qiskit_addon_mpf.backends.quimb_circuit.CircuitState"). As required by the [`DynamicMPF`](/docs/api/qiskit-addon-mpf/dynamic#dynamicmpf "qiskit_addon_mpf.dynamic.DynamicMPF") algorithm, it tracks a left- and right-hand side of the time-evolution for computing the overlap of two circuits. Depending on [`conjugate`](#qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.conjugate "qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.conjugate"), an instance of this engine will apply the quantum gates of its template circuit to the corresponding side (see [`quimb_circuit`](/docs/api/qiskit-addon-mpf/backends-quimb-circuit#module-qiskit_addon_mpf.backends.quimb_circuit "qiskit_addon_mpf.backends.quimb_circuit") for more details).

Initialize a [`CircuitEvolver`](#qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver "qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver") instance.

**Parameters**

- **evolution\_state** ([*CircuitState*](/docs/api/qiskit-addon-mpf/backends-quimb-circuit-circuit-state "qiskit_addon_mpf.backends.quimb_circuit.CircuitState")) – a reference to the time-evolution state.
- **circuit** (*QuantumCircuit*) – the template circuit encoding the time-evolution of a single Trotter step. This circuit **must** be parameterized (see [`Parameter`](/docs/api/qiskit/qiskit.circuit.Parameter) in place of the Trotter methods time step. This parameter must be named `dt`.
- **dt** ([*float*](https://docs.python.org/3/library/functions.html#float)) – the time step that will be used and later bound to the [`Parameter`](/docs/api/qiskit/qiskit.circuit.Parameter) of the `circuit` object.

## Attributes

### conjugate

Returns whether this time-evolver instance acts on the right-hand side.

### evolved\_time

Returns the current evolution time.

### evolution\_state

The time-evolution state (see also [`DynamicMPF.evolution_state`](/docs/api/qiskit-addon-mpf/dynamic#evolution_state "qiskit_addon_mpf.dynamic.DynamicMPF.evolution_state")).

### circuit

The parameterized [`QuantumCircuit`](/docs/api/qiskit/qiskit.circuit.QuantumCircuit) describing the Trotter step.

## Methods

### step

`step()`

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

Perform a single time step of TEBD.

This will apply the gates of the [`circuit`](#qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.circuit "qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.circuit") to the [`evolution_state`](#qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.evolution_state "qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.evolution_state"). If [`conjugate`](#qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.conjugate "qiskit_addon_mpf.backends.quimb_circuit.CircuitEvolver.conjugate") is `True`, it applies to [`CircuitState.lhs`](/docs/api/qiskit-addon-mpf/backends-quimb-circuit-circuit-state#lhs "qiskit_addon_mpf.backends.quimb_circuit.CircuitState.lhs"), otherwise to [`CircuitState.rhs`](/docs/api/qiskit-addon-mpf/backends-quimb-circuit-circuit-state#rhs "qiskit_addon_mpf.backends.quimb_circuit.CircuitState.rhs").

**Return type**

None
