QuISP
Loading...
Searching...
No Matches
MockQubit.h
Go to the documentation of this file.
1#pragma once
2
3#include <gmock/gmock.h>
7#include "backends/Backends.h"
8#include "modules/QNIC.h"
11
13
20
22 public:
23 using IStationaryQubit::initialize;
24 using IStationaryQubit::par;
26
27 MOCK_METHOD(void, emitPhoton, (int pulse), (override));
28 MOCK_METHOD(void, setFree, (bool consumed), (override));
32 MOCK_METHOD(void, gateZ, (), (override));
33 MOCK_METHOD(void, gateX, (), (override));
34 MOCK_METHOD(void, gateY, (), (override));
35 MOCK_METHOD(void, gateS, (), (override));
36 MOCK_METHOD(void, gateSdg, (), (override));
37 MOCK_METHOD(void, gateHadamard, (), (override));
38 MOCK_METHOD(void, gateCNOT, (IStationaryQubit *), (override));
39 MOCK_METHOD(void, Lock, (unsigned long rs_id, int rule_id, int action_id), (override));
40 MOCK_METHOD(void, Unlock, (), (override));
41 MOCK_METHOD(bool, isLocked, (), (override));
43 MOCK_METHOD(IQubit *const, getBackendQubitRef, (), (const, override));
44
45 MockQubit() : IStationaryQubit() { setComponentType(new module_type::TestModuleType("test qubit")); }
46 MockQubit(quisp::modules::QNIC_type _type, quisp::modules::QNicIndex _qnic_index) : MockQubit() {
47 qnic_type = _type;
48 qnic_index = _qnic_index;
49 }
50 void reset() { setFree(true); }
51 void fillParams() {
52 // see networks/omnetpp.ini
53 setParDouble(this, "emission_success_probability", 0.5);
54 setParDouble(this, "memory_x_error_rate", 1.11111111e-7);
55 setParDouble(this, "memory_y_error_rate", 1.11111111e-7);
56 setParDouble(this, "memory_z_error_rate", 1.11111111e-7);
57 setParDouble(this, "memory_energy_excitation_rate", 0.000198);
58 setParDouble(this, "memory_energy_relaxation_rate", 0.00000198);
59 setParDouble(this, "memory_completely_mixed_rate", 0);
60
61 setParDouble(this, "h_gate_error_rate", 1. / 2000);
62 setParDouble(this, "h_gate_x_error_ratio", 0);
63 setParDouble(this, "h_gate_z_error_ratio", 0);
64 setParDouble(this, "h_gate_y_error_ratio", 0);
65
66 setParDouble(this, "x_gate_error_rate", 1. / 2000);
67 setParDouble(this, "x_gate_x_error_ratio", 0);
68 setParDouble(this, "x_gate_z_error_ratio", 0);
69 setParDouble(this, "x_gate_y_error_ratio", 0);
70
71 setParDouble(this, "z_gate_error_rate", 1. / 2000);
72 setParDouble(this, "z_gate_x_error_ratio", 0);
73 setParDouble(this, "z_gate_z_error_ratio", 0);
74 setParDouble(this, "z_gate_y_error_ratio", 0);
75
76 setParDouble(this, "cnot_gate_error_rate", 1. / 2000);
77 setParDouble(this, "cnot_gate_ix_error_ratio", 1);
78 setParDouble(this, "cnot_gate_xi_error_ratio", 1);
79 setParDouble(this, "cnot_gate_xx_error_ratio", 1);
80 setParDouble(this, "cnot_gate_iz_error_ratio", 1);
81 setParDouble(this, "cnot_gate_zi_error_ratio", 1);
82 setParDouble(this, "cnot_gate_zz_error_ratio", 1);
83 setParDouble(this, "cnot_gate_iy_error_ratio", 1);
84 setParDouble(this, "cnot_gate_yi_error_ratio", 1);
85 setParDouble(this, "cnot_gate_yy_error_ratio", 1);
86
87 setParDouble(this, "x_measurement_error_rate", 1. / 2000);
88 setParDouble(this, "y_measurement_error_rate", 1. / 2000);
89 setParDouble(this, "z_measurement_error_rate", 1. / 2000);
90
91 setParInt(this, "stationary_qubit_address", 1);
92 setParInt(this, "node_address", 1);
93 setParInt(this, "qnic_address", 1);
94 setParInt(this, "qnic_type", 0);
95 setParInt(this, "qnic_index", 0);
96 setParDouble(this, "emission_jittering_standard_deviation", 0.5);
97
98 setParBool(this, "is_busy", false);
99 setParDouble(this, "fidelity", -1.0);
100 }
101};
102} // namespace quisp_test::mock_modules::stationary_qubit
QNIC.
StationaryQubit.
Definition IQubit.h:30
a key to identify a qubit in a backend.
Definition IQubitId.h:14
Definition IStationaryQubit.h:20
virtual types::EigenvalueResult measureX()=0
virtual void Lock(unsigned long rs_id, int rule_id, int action_id)=0
virtual void setFree(bool consumed)=0
virtual types::MeasurementOutcome measureRandomPauliBasis()=0
int qnic_index
Definition IStationaryQubit.h:54
virtual types::EigenvalueResult measureY()=0
virtual backends::IQubit * getBackendQubitRef() const =0
virtual types::EigenvalueResult measureZ()=0
virtual void emitPhoton(int pulse)=0
Emit photon.
virtual void gateCNOT(IStationaryQubit *target_qubit)=0
int qnic_type
Definition IStationaryQubit.h:53
MOCK_METHOD(void, gateCNOT,(IStationaryQubit *),(override))
IStationaryQubit * entangled_partner
Definition MockQubit.h:25
MOCK_METHOD(void, setFree,(bool consumed),(override))
MOCK_METHOD(IQubit *const, getBackendQubitRef,(),(const, override))
MOCK_METHOD(void, gateHadamard,(),(override))
MOCK_METHOD(quisp::types::EigenvalueResult, measureX,(),(override))
MOCK_METHOD(void, Lock,(unsigned long rs_id, int rule_id, int action_id),(override))
MOCK_METHOD(quisp::types::MeasurementOutcome, measureRandomPauliBasis,(),(override))
MOCK_METHOD(quisp::types::EigenvalueResult, measureY,(),(override))
MOCK_METHOD(quisp::types::EigenvalueResult, measureZ,(),(override))
MOCK_METHOD(void, emitPhoton,(int pulse),(override))
MockQubit(quisp::modules::QNIC_type _type, quisp::modules::QNicIndex _qnic_index)
Definition MockQubit.h:46
Definition ModuleType.h:12
EigenvalueResult
Definition IQubit.h:17
QNIC_type
Definition QNIC.h:18
void setParDouble(cModule *module, const char *name, const double val)
Definition TestUtilFunctions.cc:25
void setParBool(cModule *module, const char *name, const bool val)
Definition TestUtilFunctions.cc:49
void setParInt(cModule *module, const char *name, const int val)
Definition TestUtilFunctions.cc:13