CircuitEvolver

class CircuitEvolver(evolution_state, circuit, dt)[source]

Bases: 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. As required by the DynamicMPF algorithm, it tracks a left- and right-hand side of the time-evolution for computing the overlap of two circuits. Depending on conjugate, an instance of this engine will apply the quantum gates of its template circuit to the corresponding side (see quimb_circuit for more details).

Initialize a CircuitEvolver instance.

Parameters:
  • evolution_state (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 parametrized (see Parameter in place of the Trotter methods time step. This parameter must be named dt.

  • dt (float) – the time step that will be used and later bound to the 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).

circuit

The parameterized QuantumCircuit describing the Trotter step.

Methods

step()[source]

Perform a single time step of TEBD.

This will apply the gates of the circuit to the evolution_state. If conjugate is True, it applies to CircuitState.lhs, otherwise to CircuitState.rhs.

Return type:

None