Skip to content

Commit e30c240

Browse files
authored
Merge pull request #63 from LLNL/use-references
Minor improvement: use const references for vectors
2 parents 636fcd4 + 2b19beb commit e30c240

File tree

8 files changed

+32
-32
lines changed

8 files changed

+32
-32
lines changed

include/gate.hpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class Gate {
5353
* @param lindbladtype_ Type of Lindblad operators for open system dynamics.
5454
* @param quietmode Flag to suppress output messages (default: false).
5555
*/
56-
Gate(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode=false);
56+
Gate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode=false);
5757

5858
virtual ~Gate();
5959

@@ -95,7 +95,7 @@ class Gate {
9595
*/
9696
class XGate : public Gate {
9797
public:
98-
XGate(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
98+
XGate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
9999
~XGate();
100100
};
101101

@@ -110,7 +110,7 @@ class XGate : public Gate {
110110
*/
111111
class YGate : public Gate {
112112
public:
113-
YGate(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
113+
YGate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
114114
~YGate();
115115
};
116116

@@ -125,7 +125,7 @@ class YGate : public Gate {
125125
*/
126126
class ZGate : public Gate {
127127
public:
128-
ZGate(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
128+
ZGate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
129129
~ZGate();
130130
};
131131

@@ -140,7 +140,7 @@ class ZGate : public Gate {
140140
*/
141141
class HadamardGate : public Gate {
142142
public:
143-
HadamardGate(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
143+
HadamardGate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
144144
~HadamardGate();
145145
};
146146

@@ -157,7 +157,7 @@ class HadamardGate : public Gate {
157157
*/
158158
class CNOT : public Gate {
159159
public:
160-
CNOT(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
160+
CNOT(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
161161
~CNOT();
162162
};
163163

@@ -174,7 +174,7 @@ class CNOT : public Gate {
174174
*/
175175
class SWAP: public Gate {
176176
public:
177-
SWAP(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
177+
SWAP(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
178178
~SWAP();
179179
};
180180

@@ -187,7 +187,7 @@ class SWAP: public Gate {
187187
*/
188188
class SWAP_0Q: public Gate {
189189
public:
190-
SWAP_0Q(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
190+
SWAP_0Q(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
191191
~SWAP_0Q();
192192
};
193193

@@ -199,7 +199,7 @@ class SWAP_0Q: public Gate {
199199
*/
200200
class CQNOT: public Gate {
201201
public:
202-
CQNOT(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
202+
CQNOT(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
203203
~CQNOT();
204204
};
205205

@@ -210,7 +210,7 @@ class CQNOT: public Gate {
210210
*/
211211
class QFT: public Gate {
212212
public:
213-
QFT(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
213+
QFT(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, bool quietmode=false);
214214
~QFT();
215215
};
216216

@@ -232,7 +232,7 @@ class FromFile: public Gate {
232232
* @param filename Path to file containing gate matrix data.
233233
* @param quietmode Flag to suppress output messages (default: false).
234234
*/
235-
FromFile(std::vector<int> nlevels_, std::vector<int> nessential_, double time, std::vector<double> rotation_frequencies_, LindbladType lindbladtype_, std::string filename, bool quietmode=false);
235+
FromFile(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time, const std::vector<double>& rotation_frequencies_, LindbladType lindbladtype_, const std::string& filename, bool quietmode=false);
236236
~FromFile();
237237
};
238238

@@ -252,4 +252,4 @@ class FromFile: public Gate {
252252
* @param quietmode Flag to suppress output messages.
253253
* @return Gate* Pointer to the initialized gate object.
254254
*/
255-
Gate* initTargetGate(std::vector<std::string> target_str, std::vector<int>nlevels, std::vector<int>nessential, double total_time, LindbladType lindbladtype, std::vector<double> gate_rot_freq, bool quietmode);
255+
Gate* initTargetGate(const std::vector<std::string>& target_str, const std::vector<int>& nlevels, const std::vector<int>& nessential, double total_time, LindbladType lindbladtype, const std::vector<double>& gate_rot_freq, bool quietmode);

include/mastereq.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ class MasterEq{
140140
* @param hamiltonian_file Filename for Hamiltonian data
141141
* @param quietmode Flag for quiet operation (default: false)
142142
*/
143-
MasterEq(std::vector<int> nlevels, std::vector<int> nessential, Oscillator** oscil_vec_, const std::vector<double> crosskerr_, const std::vector<double> Jkl_, const std::vector<double> eta_, LindbladType lindbladtype_, bool usematfree_, std::string hamiltonian_file, bool quietmode=false);
143+
MasterEq(const std::vector<int>& nlevels, const std::vector<int>& nessential, Oscillator** oscil_vec_, const std::vector<double>& crosskerr_, const std::vector<double>& Jkl_, const std::vector<double>& eta_, LindbladType lindbladtype_, bool usematfree_, const std::string& hamiltonian_file, bool quietmode=false);
144144

145145
~MasterEq();
146146

include/optimtarget.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ class OptimTarget{
5656
* @param rho_t0 Initial state vector
5757
* @param quietmode_ Flag for quiet operation
5858
*/
59-
OptimTarget(std::vector<std::string> target_str, std::string objective_str, std::vector<std::string> initcond_str, MasterEq* mastereq, double total_time, std::vector<double> read_gate_rot, Vec rho_t0, bool quietmode_);
59+
OptimTarget(std::vector<std::string> target_str, const std::string& objective_str, std::vector<std::string> initcond_str, MasterEq* mastereq, double total_time, std::vector<double> read_gate_rot, Vec rho_t0, bool quietmode_);
6060

6161
~OptimTarget();
6262

@@ -84,7 +84,7 @@ class OptimTarget{
8484
* @param rho0 Vector to store the initial condition
8585
* @return int Identifier for this initial condition (element number in matrix vectorization)
8686
*/
87-
int prepareInitialState(const int iinit, const int ninit, std::vector<int> nlevels, std::vector<int> nessential, Vec rho0);
87+
int prepareInitialState(const int iinit, const int ninit, const std::vector<int>& nlevels, const std::vector<int>& nessential, Vec rho0);
8888

8989
/**
9090
* @brief Prepares the target state for gate optimization.

include/oscillator.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Oscillator {
9292
* @param lindbladtype_ Type of Lindblad operators
9393
* @param rand_engine Random number generator engine
9494
*/
95-
Oscillator(Config config, size_t id, std::vector<int> nlevels_all_, std::vector<std::string>& controlsegments, std::vector<std::string>& controlinitializations, double ground_freq_, double selfkerr_, double rotational_freq_, double decay_time_, double dephase_time_, std::vector<double> carrier_freq_, double Tfinal_, LindbladType lindbladtype_, std::default_random_engine rand_engine);
95+
Oscillator(Config config, size_t id, const std::vector<int>& nlevels_all_, std::vector<std::string>& controlsegments, std::vector<std::string>& controlinitializations, double ground_freq_, double selfkerr_, double rotational_freq_, double decay_time_, double dephase_time_, const std::vector<double>& carrier_freq_, double Tfinal_, LindbladType lindbladtype_, std::default_random_engine rand_engine);
9696

9797
virtual ~Oscillator();
9898

src/gate.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Gate::Gate(){
66
quietmode=false;
77
}
88

9-
Gate::Gate(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, bool quietmode_){
9+
Gate::Gate(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, bool quietmode_){
1010

1111
MPI_Comm_rank(PETSC_COMM_WORLD, &mpirank_petsc);
1212
MPI_Comm_rank(MPI_COMM_WORLD, &mpirank_world);
@@ -283,7 +283,7 @@ void Gate::applyGate(const Vec state, Vec VrhoV){
283283
}
284284

285285

286-
XGate::XGate(std::vector<int> nlevels, std::vector<int> nessential, double time, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
286+
XGate::XGate(const std::vector<int>& nlevels, const std::vector<int>& nessential, double time, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
287287

288288
assert(dim_ess == 2);
289289

@@ -302,7 +302,7 @@ XGate::XGate(std::vector<int> nlevels, std::vector<int> nessential, double time,
302302

303303
XGate::~XGate() {}
304304

305-
YGate::YGate(std::vector<int> nlevels, std::vector<int> nessential, double time, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
305+
YGate::YGate(const std::vector<int>& nlevels, const std::vector<int>& nessential, double time, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
306306

307307
assert(dim_ess == 2);
308308

@@ -320,7 +320,7 @@ YGate::YGate(std::vector<int> nlevels, std::vector<int> nessential, double time,
320320
}
321321
YGate::~YGate() {}
322322

323-
ZGate::ZGate(std::vector<int> nlevels, std::vector<int> nessential, double time, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
323+
ZGate::ZGate(const std::vector<int>& nlevels, const std::vector<int>& nessential, double time, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
324324

325325
assert(dim_ess == 2);
326326

@@ -339,7 +339,7 @@ ZGate::ZGate(std::vector<int> nlevels, std::vector<int> nessential, double time,
339339

340340
ZGate::~ZGate() {}
341341

342-
HadamardGate::HadamardGate(std::vector<int> nlevels, std::vector<int> nessential, double time, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
342+
HadamardGate::HadamardGate(const std::vector<int>& nlevels, const std::vector<int>& nessential, double time, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential, time, gate_rot_freq, lindbladtype_, quietmode) {
343343

344344
assert(dim_ess == 2);
345345

@@ -362,7 +362,7 @@ HadamardGate::~HadamardGate() {}
362362

363363

364364

365-
CNOT::CNOT(std::vector<int> nlevels, std::vector<int> nessential, double time, std::vector<double> gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential,time, gate_rot_freq, lindbladtype_, quietmode) {
365+
CNOT::CNOT(const std::vector<int>& nlevels, const std::vector<int>& nessential, double time, const std::vector<double>& gate_rot_freq, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels, nessential,time, gate_rot_freq, lindbladtype_, quietmode) {
366366

367367
assert(dim_ess == 4);
368368

@@ -387,7 +387,7 @@ CNOT::CNOT(std::vector<int> nlevels, std::vector<int> nessential, double time, s
387387
CNOT::~CNOT(){}
388388

389389

390-
SWAP::SWAP(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
390+
SWAP::SWAP(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
391391
assert(dim_ess == 4);
392392

393393
/* Fill lab-frame swap gate in essential dimension system V_re = Re(V), V_im = Im(V) = 0 */
@@ -408,7 +408,7 @@ SWAP::SWAP(std::vector<int> nlevels_, std::vector<int> nessential_, double time_
408408

409409
SWAP::~SWAP(){}
410410

411-
SWAP_0Q::SWAP_0Q(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
411+
SWAP_0Q::SWAP_0Q(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
412412
int Q = nlevels.size(); // Number of total oscillators
413413

414414
/* Fill lab-frame swap 0<->Q-1 gate in essential dimension system V_re = Re(V), V_im = Im(V) = 0 */
@@ -448,7 +448,7 @@ SWAP_0Q::SWAP_0Q(std::vector<int> nlevels_, std::vector<int> nessential_, double
448448
SWAP_0Q::~SWAP_0Q(){}
449449

450450

451-
CQNOT::CQNOT(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
451+
CQNOT::CQNOT(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
452452

453453
/* Fill lab-frame CQNOT gate in essential dimension system V_re = Re(V), V_im = Im(V) = 0 */
454454
/* V = [1 0 0 ...
@@ -477,7 +477,7 @@ CQNOT::CQNOT(std::vector<int> nlevels_, std::vector<int> nessential_, double tim
477477
CQNOT::~CQNOT(){}
478478

479479

480-
QFT::QFT(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
480+
QFT::QFT(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode) {
481481

482482
double sq = sqrt(dim_ess);
483483

@@ -502,7 +502,7 @@ QFT::QFT(std::vector<int> nlevels_, std::vector<int> nessential_, double time_,
502502
QFT::~QFT(){}
503503

504504

505-
FromFile::FromFile(std::vector<int> nlevels_, std::vector<int> nessential_, double time_, std::vector<double> gate_rot_freq_, LindbladType lindbladtype_, std::string filename, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode){
505+
FromFile::FromFile(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, double time_, const std::vector<double>& gate_rot_freq_, LindbladType lindbladtype_, const std::string& filename, bool quietmode) : Gate(nlevels_, nessential_, time_, gate_rot_freq_, lindbladtype_, quietmode){
506506

507507
// Read the gate from a file
508508
int nelems = 2*dim_ess*dim_ess;
@@ -543,7 +543,7 @@ FromFile::FromFile(std::vector<int> nlevels_, std::vector<int> nessential_, doub
543543
FromFile::~FromFile(){}
544544

545545

546-
Gate* initTargetGate(std::vector<std::string> target_str, std::vector<int>nlevels, std::vector<int>nessential, double total_time, LindbladType lindbladtype, std::vector<double> gate_rot_freq, bool quietmode){
546+
Gate* initTargetGate(const std::vector<std::string>& target_str, const std::vector<int>& nlevels, const std::vector<int>& nessential, double total_time, LindbladType lindbladtype, const std::vector<double>& gate_rot_freq, bool quietmode){
547547

548548
if ( target_str.size() < 2 ) {
549549
printf("ERROR: You want to optimize for a gate, but didn't specify which one. Check your config for 'optim_target'!\n");

src/mastereq.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ MasterEq::MasterEq(){
1111
}
1212

1313

14-
MasterEq::MasterEq(std::vector<int> nlevels_, std::vector<int> nessential_, Oscillator** oscil_vec_, const std::vector<double> crosskerr_, const std::vector<double> Jkl_, const std::vector<double> eta_, LindbladType lindbladtype_, bool usematfree_, std::string hamiltonian_file_, bool quietmode_) {
14+
MasterEq::MasterEq(const std::vector<int>& nlevels_, const std::vector<int>& nessential_, Oscillator** oscil_vec_, const std::vector<double>& crosskerr_, const std::vector<double>& Jkl_, const std::vector<double>& eta_, LindbladType lindbladtype_, bool usematfree_, const std::string& hamiltonian_file_, bool quietmode_) {
1515
nlevels = nlevels_;
1616
nessential = nessential_;
1717
noscillators = nlevels.size();

src/optimtarget.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ OptimTarget::OptimTarget(){
1717
}
1818

1919

20-
OptimTarget::OptimTarget(std::vector<std::string> target_str, std::string objective_str, std::vector<std::string> initcond_str, MasterEq* mastereq, double total_time, std::vector<double> read_gate_rot, Vec rho_t0, bool quietmode_) : OptimTarget() {
20+
OptimTarget::OptimTarget(std::vector<std::string> target_str, const std::string& objective_str, std::vector<std::string> initcond_str, MasterEq* mastereq, double total_time, std::vector<double> read_gate_rot, Vec rho_t0, bool quietmode_) : OptimTarget() {
2121

2222
// initialize
2323
dim = mastereq->getDim();
@@ -424,7 +424,7 @@ void OptimTarget::HilbertSchmidtOverlap_diff(const Vec state, Vec statebar, bool
424424
}
425425

426426

427-
int OptimTarget::prepareInitialState(const int iinit, const int ninit, std::vector<int> nlevels, std::vector<int> nessential, Vec rho0){
427+
int OptimTarget::prepareInitialState(const int iinit, const int ninit, const std::vector<int>& nlevels, const std::vector<int>& nessential, Vec rho0){
428428

429429
PetscInt ilow, iupp;
430430
PetscInt elemID;

src/oscillator.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Oscillator::Oscillator(){
77
control_enforceBC = true;
88
}
99

10-
Oscillator::Oscillator(Config config, size_t id, std::vector<int> nlevels_all_, std::vector<std::string>& controlsegments, std::vector<std::string>& controlinitializations, double ground_freq_, double selfkerr_, double rotational_freq_, double decay_time_, double dephase_time_, std::vector<double> carrier_freq_, double Tfinal_, LindbladType lindbladtype_, std::default_random_engine rand_engine){
10+
Oscillator::Oscillator(Config config, size_t id, const std::vector<int>& nlevels_all_, std::vector<std::string>& controlsegments, std::vector<std::string>& controlinitializations, double ground_freq_, double selfkerr_, double rotational_freq_, double decay_time_, double dephase_time_, const std::vector<double>& carrier_freq_, double Tfinal_, LindbladType lindbladtype_, std::default_random_engine rand_engine){
1111

1212
myid = id;
1313
nlevels = nlevels_all_[id];

0 commit comments

Comments
 (0)