CircuitEvolver
class CircuitEvolver(evolution_state, circuit, dt)
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 parameterized (see
Parameter
in place of the Trotter methods time step. This parameter must be nameddt
. - dt (float) – the time step that will be used and later bound to the
Parameter
of thecircuit
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
step()
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