QuISP
Loading...
Searching...
No Matches
quisp::modules::StationaryQubit Class Reference

StationaryQubit. https://arxiv.org/abs/1908.10758. More...

#include <StationaryQubit.h>

Inheritance diagram for quisp::modules::StationaryQubit:
Collaboration diagram for quisp::modules::StationaryQubit:

Public Member Functions

 StationaryQubit ()
 
void setFree (bool consumed) override
 
void Lock (unsigned long rs_id, int rule_id, int action_id) override
 
void Unlock () override
 
bool isLocked () override
 
void emitPhoton (int pulse) override
 Emit photon.
 
virtual types::EigenvalueResult measureX () override
 
virtual types::EigenvalueResult measureY () override
 
virtual types::EigenvalueResult measureZ () override
 
virtual types::MeasurementOutcome measureRandomPauliBasis () override
 
void gateCNOT (IStationaryQubit *target_qubit) override
 
void gateHadamard () override
 
void gateX () override
 
void gateZ () override
 
void gateY () override
 
void gateS () override
 
void gateSdg () override
 
backends::IQubitgetBackendQubitRef () const override
 
- Public Member Functions inherited from quisp::modules::IStationaryQubit
 IStationaryQubit ()
 
virtual ~IStationaryQubit ()
 

Public Attributes

double emission_success_probability
 
bool locked
 
unsigned long locked_ruleset_id
 
unsigned long locked_rule_id
 
- Public Attributes inherited from quisp::modules::IStationaryQubit
int qnic_type
 
int qnic_index
 
int action_index
 

Protected Member Functions

void initialize () override
 Initialize StationaryQubit.
 
void finish () override
 
void handleMessage (omnetpp::cMessage *msg) override
 handle PhotonicQubit generated by StatinoryQubit itself
 
messages::PhotonicQubit * generateEntangledPhoton ()
 Generate photon entangled with the memory.
 
void setBusy ()
 
std::unique_ptr< IConfigurationprepareBackendQubitConfiguration (bool overwrite)
 

Protected Attributes

IBackendQubitqubit_ref
 
bool is_busy
 
omnetpp::simtime_t emitted_time = -1
 
double emission_jittering_standard_deviation
 
int stationary_qubit_address
 
int node_address
 
int qnic_address
 
utils::ComponentProvider provider
 
IQuantumBackendbackend
 

Detailed Description

Constructor & Destructor Documentation

◆ StationaryQubit()

quisp::modules::StationaryQubit::StationaryQubit ( )

Member Function Documentation

◆ emitPhoton()

void quisp::modules::StationaryQubit::emitPhoton ( int pulse)
overridevirtual

Emit photon.

Parameters
pulseis 1 for the beginning of the burst, 2 for the end.
pulse0 for nothing, 1 for first, 2 for last, 3 for first and last

The stationary qubit shouldn't be already busy.

Implements quisp::modules::IStationaryQubit.

◆ finish()

void quisp::modules::StationaryQubit::finish ( )
overrideprotected

◆ gateCNOT()

void quisp::modules::StationaryQubit::gateCNOT ( IStationaryQubit * target_qubit)
overridevirtual

◆ gateHadamard()

void quisp::modules::StationaryQubit::gateHadamard ( )
overridevirtual

◆ gateS()

void quisp::modules::StationaryQubit::gateS ( )
overridevirtual

◆ gateSdg()

void quisp::modules::StationaryQubit::gateSdg ( )
overridevirtual

◆ gateX()

void quisp::modules::StationaryQubit::gateX ( )
overridevirtual

◆ gateY()

void quisp::modules::StationaryQubit::gateY ( )
overridevirtual

◆ gateZ()

void quisp::modules::StationaryQubit::gateZ ( )
overridevirtual

◆ generateEntangledPhoton()

PhotonicQubit * quisp::modules::StationaryQubit::generateEntangledPhoton ( )
protected

Generate photon entangled with the memory.

Warning
Shouldn't we destroy a possibly existing photon object before? <- No, I dont think so...

◆ getBackendQubitRef()

backends::IQubit * quisp::modules::StationaryQubit::getBackendQubitRef ( ) const
overridevirtual

◆ handleMessage()

void quisp::modules::StationaryQubit::handleMessage ( omnetpp::cMessage * msg)
overrideprotected

handle PhotonicQubit generated by StatinoryQubit itself

Parameters
msgis the PhotonicQubit message

◆ initialize()

void quisp::modules::StationaryQubit::initialize ( )
overrideprotected

Initialize StationaryQubit.

Omnet called method to initialize objects.

◆ isLocked()

bool quisp::modules::StationaryQubit::isLocked ( )
overridevirtual

◆ Lock()

void quisp::modules::StationaryQubit::Lock ( unsigned long rs_id,
int rule_id,
int action_id )
overridevirtual

◆ measureRandomPauliBasis()

MeasurementOutcome quisp::modules::StationaryQubit::measureRandomPauliBasis ( )
overridevirtual

◆ measureX()

EigenvalueResult quisp::modules::StationaryQubit::measureX ( )
overridevirtual

◆ measureY()

EigenvalueResult quisp::modules::StationaryQubit::measureY ( )
overridevirtual

◆ measureZ()

EigenvalueResult quisp::modules::StationaryQubit::measureZ ( )
overridevirtual

◆ prepareBackendQubitConfiguration()

std::unique_ptr< IConfiguration > quisp::modules::StationaryQubit::prepareBackendQubitConfiguration ( bool overwrite)
protected

get the default backend configuration from the Bcakend module. if overwrite arg is true, collect StationaryQubit's backend qubit config and overwrite the default configuration with it. if you want to use different qubit configuration, it's useful.

◆ setBusy()

void quisp::modules::StationaryQubit::setBusy ( )
protected

◆ setFree()

void quisp::modules::StationaryQubit::setFree ( bool consumed)
overridevirtual

◆ Unlock()

void quisp::modules::StationaryQubit::Unlock ( )
overridevirtual

Member Data Documentation

◆ backend

IQuantumBackend* quisp::modules::StationaryQubit::backend
protected

◆ emission_jittering_standard_deviation

double quisp::modules::StationaryQubit::emission_jittering_standard_deviation
protected

◆ emission_success_probability

double quisp::modules::StationaryQubit::emission_success_probability

◆ emitted_time

omnetpp::simtime_t quisp::modules::StationaryQubit::emitted_time = -1
protected

◆ is_busy

bool quisp::modules::StationaryQubit::is_busy
protected

◆ locked

bool quisp::modules::StationaryQubit::locked

◆ locked_rule_id

unsigned long quisp::modules::StationaryQubit::locked_rule_id

◆ locked_ruleset_id

unsigned long quisp::modules::StationaryQubit::locked_ruleset_id

◆ node_address

int quisp::modules::StationaryQubit::node_address
protected

◆ provider

utils::ComponentProvider quisp::modules::StationaryQubit::provider
protected

◆ qnic_address

int quisp::modules::StationaryQubit::qnic_address
protected

◆ qubit_ref

IBackendQubit* quisp::modules::StationaryQubit::qubit_ref
protected

◆ stationary_qubit_address

int quisp::modules::StationaryQubit::stationary_qubit_address
protected

The documentation for this class was generated from the following files: