|
Maestro 0.3.1
Unified interface for quantum circuit simulation
|
Delay (idle) operation class. More...
#include <Delay.h>
Public Member Functions | |
| Delay (Types::qubit_t qubit=0, Time duration=0) | |
| Construct a new Delay object. | |
| virtual std::vector< size_t > | AffectedBits () const |
| Returns the affected bits. | |
| Types::qubits_vector | AffectedQubits () const override |
| Return the affected qubits. | |
| bool | CanAffectQuantumState () const override |
| Find if the operation can affect the quantum state. | |
| std::shared_ptr< IOperation< Time > > | Clone () const override |
| Get a shared pointer to a clone of this object. | |
| void | Execute (const std::shared_ptr< Simulators::ISimulator > &sim, OperationState &state) const override |
| Execute the delay operation on the simulator. | |
| Types::time_type | GetDelay () const |
| Get the delay of the operation. | |
| Time | GetDuration () const |
| Get the delay duration. | |
| std::shared_ptr< IOperation< Types::time_type > > | getptr () |
| Get a shared pointer to this object. | |
| Types::qubit_t | GetQubit () const |
| Get the target qubit. | |
| OperationType | GetType () const override |
| Get the operation type. | |
| virtual bool | IsBranching () const |
| Checks if the operation is a branching one. | |
| bool | IsClifford () const override |
| Checks if the operation is a Clifford one. | |
| virtual bool | IsConditional () const |
| Find if the operation is a conditional operation. | |
| virtual bool | NeedsEntanglementForDistribution () const |
| Find if the operation needs entanglement for distribution. | |
| std::shared_ptr< IOperation< Time > > | Remap (const std::unordered_map< Types::qubit_t, Types::qubit_t > &qubitsMap, const std::unordered_map< Types::qubit_t, Types::qubit_t > &bitsMap={}) const override |
| Get a shared pointer to a remapped operation. | |
| void | SetDelay (Time d) override |
| Set the delay of the operation. | |
| virtual void | SetDelay (Types::time_type d) |
| Set the delay of the operation. | |
| void | SetDuration (Time d) |
| Set the delay duration. | |
| void | SetQubit (Types::qubit_t q) |
| Set the target qubit. | |
Delay (idle) operation class.
Represents a physical delay or idling period on a target qubit with duration tau. In ideal noiseless simulation, it acts as an identity operation. In noisy simulation, it triggers wall-clock thermal relaxation, continuous Ornstein-Uhlenbeck dephasing, and coherent detuning rotation.
| Time | The time type used for operation timing. |
|
inline |
Construct a new Delay object.
| qubit | The target qubit. |
| duration | The physical delay duration in seconds. |
Definition at line 37 of file Delay.h.
References Circuits::IOperation< Types::time_type >::IOperation().
|
inlinevirtualinherited |
Returns the affected bits.
Returns the affected classical bits.
Reimplemented in Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, Circuits::IConditionalOperation< Time >, Circuits::IConditionalOperation< Types::time_type >, Circuits::MeasurementOperation< Time >, and Circuits::Random< Time >.
Definition at line 482 of file Operations.h.
|
inlineoverridevirtual |
Return the affected qubits.
Reimplemented from Circuits::IOperation< Types::time_type >.
|
inlineoverridevirtual |
Find if the operation can affect the quantum state.
Returns true if the operation can affect the quantum state, false otherwise.
Reimplemented from Circuits::IOperation< Types::time_type >.
|
inlineoverridevirtual |
Get a shared pointer to a clone of this object.
Returns a shared pointer to a copy of this object.
Implements Circuits::IOperation< Types::time_type >.
Definition at line 94 of file Delay.h.
References GetDuration().
|
inlineoverridevirtual |
Execute the delay operation on the simulator.
In noiseless simulation, delay does not alter the quantum state.
Implements Circuits::IOperation< Types::time_type >.
|
inlineinherited |
Get the delay of the operation.
Returns the delay due of the execution time of the operation.
Definition at line 501 of file Operations.h.
Referenced by Circuits::NoOperation< Time >::Clone().
|
inline |
Get the delay duration.
Definition at line 76 of file Delay.h.
References Circuits::IOperation< Time >::GetDelay().
Referenced by Clone().
|
inlineinherited |
Get a shared pointer to this object.
Returns a shared pointer to this object. The object needs to be already wrapped in a shared pointer.
Definition at line 491 of file Operations.h.
|
inline |
|
inlineoverridevirtual |
Get the operation type.
Reimplemented from Circuits::IOperation< Types::time_type >.
Definition at line 56 of file Delay.h.
References Circuits::kDelay.
|
inlinevirtualinherited |
Checks if the operation is a branching one.
Checks if the operation is a branching one, meaning that it can lead to splitting paths (relevant for the path integral simulator).
Reimplemented in Circuits::CHGate< Time >, Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, Circuits::CRxGate< Time >, Circuits::CRyGate< Time >, Circuits::CSxDagGate< Time >, Circuits::CSxGate< Time >, Circuits::CUGate< Time >, Circuits::HadamardGate< Time >, Circuits::IConditionalOperation< Time >, Circuits::IConditionalOperation< Types::time_type >, Circuits::KGate< Time >, Circuits::RxGate< Time >, Circuits::RyGate< Time >, Circuits::SxDagGate< Time >, Circuits::SxGate< Time >, and Circuits::UGate< Time >.
Definition at line 530 of file Operations.h.
|
inlineoverridevirtual |
Checks if the operation is a Clifford one.
Checks if the operation is a Clifford one, allowing to be simulated in a stabilizers simulator.
Reimplemented from Circuits::IOperation< Types::time_type >.
|
inlinevirtualinherited |
Find if the operation is a conditional operation.
Returns true if the operation is conditional, false otherwise.
Definition at line 462 of file Operations.h.
|
inlinevirtualinherited |
Find if the operation needs entanglement for distribution.
Returns true if the operation needs entanglement for distribution, false otherwise.
Reimplemented in Circuits::Circuit< Time >, Circuits::Circuit< Types::time_type >, and Circuits::QuantumChannelOperation< Time >.
Definition at line 449 of file Operations.h.
|
inlineoverridevirtual |
Get a shared pointer to a remapped operation.
Returns a shared pointer to a copy of the operation with qubits and classical bits changed according to the provided maps.
| qubitsMap | The map of qubits to remap. |
| bitsMap | The map of classical bits to remap. |
Implements Circuits::IOperation< Types::time_type >.
|
inlineoverride |
|
inlinevirtualinherited |
Set the delay of the operation.
Sets the delay due of the execution time of the operation.
| d | The delay of the operation. |
Definition at line 509 of file Operations.h.
|
inline |
Set the delay duration.
Definition at line 81 of file Delay.h.
References Circuits::IOperation< Time >::SetDelay().
Referenced by SetDelay().
|
inline |