AMO-Tools-Suite  v.0.9.0
Set of tools for calculating energy efficiency in industrial equipment
All Classes Namespaces Files Functions Variables Enumerations Friends Macros Pages
ElectricityReduction.h
1 #ifndef AMO_LIBRARY_ELECTRICITYREDUCTION_H
2 #define AMO_LIBRARY_ELECTRICITYREDUCTION_H
3 
4 #include <exception>
5 #include <stdexcept>
6 #include <vector>
7 
8 class MultimeterData
9 {
10 public:
11  MultimeterData(const int numberOfPhases, const double supplyVoltage,
12  const double averageCurrent, const double powerFactor)
13  : numberOfPhases(numberOfPhases), supplyVoltage(supplyVoltage),
14  averageCurrent(averageCurrent), powerFactor(powerFactor) {}
15 
16  int getNumberOfPhases() const { return numberOfPhases; }
17 
18  double getSupplyVoltage() const { return supplyVoltage; }
19 
20  double getAverageCurrent() const { return averageCurrent; }
21 
22  double getPowerFactor() const { return powerFactor; }
23 
24  void setNumberOfPhases(int numberOfPhases);
25 
26  void setSupplyVoltage(double supplyVoltage);
27 
28  void setAverageCurrent(double averageCurrent);
29 
30  void setPowerFactor(double powerFactor);
31 
32 private:
33  int numberOfPhases;
34  double supplyVoltage, averageCurrent, powerFactor;
35 };
36 
37 class NameplateData
38 {
39 public:
40  NameplateData(const double ratedMotorPower, const bool variableSpeedMotor,
41  const double operationalFrequency, const double lineFrequency,
42  const double motorAndDriveEfficiency, const double loadFactor)
43  : ratedMotorPower(ratedMotorPower), variableSpeedMotor(variableSpeedMotor),
44  operationalFrequency(operationalFrequency), lineFrequency(lineFrequency),
45  motorAndDriveEfficiency(motorAndDriveEfficiency), loadFactor(loadFactor) {}
46 
47  double getRatedMotorPower() const { return ratedMotorPower; }
48 
49  bool getVariableSpeedMotor() const { return variableSpeedMotor; }
50 
51  double getOperationalFrequency() const { return operationalFrequency; }
52 
53  double getLineFrequency() const { return lineFrequency; }
54 
55  double getMotorAndDriveEfficiency() const { return motorAndDriveEfficiency; }
56 
57  double getLoadFactor() const { return loadFactor; }
58 
59  void setRatedMotorPower(double ratedMotorPower);
60 
61  void setVariableSpeedMotor(bool variableSpeedMotor);
62 
63  void setOperationalFrequency(double operationalFrequency);
64 
65  void setLineFrequency(double lineFrequency);
66 
67  void setMotorAndDriveEfficiency(double motorAndDriveEfficiency);
68 
69  void setLoadFactor(double loadFactor);
70 
71 private:
72  double ratedMotorPower;
73  bool variableSpeedMotor;
74  double operationalFrequency, lineFrequency, motorAndDriveEfficiency, loadFactor;
75 };
76 
77 class PowerMeterData
78 {
79 public:
80  PowerMeterData(const double power)
81  : power(power) {}
82 
83  double getPower() const { return power; }
84 
85  void setPower(double power);
86 
87 private:
88  double power;
89 };
90 
91 class OtherMethodData
92 {
93 public:
94  OtherMethodData(const double energy)
95  : energy(energy) {}
96 
97  double getEnergy() const { return energy; }
98 
99  void setEnergy(double energy);
100 
101 private:
102  double energy;
103 };
104 
106 {
107 public:
108  ElectricityReductionInput(const int operatingHours, const double electricityCost, const int measurementMethod,
109  const MultimeterData multimeterData, const NameplateData nameplateData,
110  const PowerMeterData powerMeterData, const OtherMethodData otherMethodData,
111  const int units)
112  : operatingHours(operatingHours), electricityCost(electricityCost), measurementMethod(measurementMethod),
113  multimeterData(multimeterData), nameplateData(nameplateData),
114  powerMeterData(powerMeterData), otherMethodData(otherMethodData),
115  units(units) {}
116 
117  int getOperatingHours() const { return operatingHours; }
118 
119  double getElectricityCost() const { return electricityCost; }
120 
121  int getMeasurementMethod() const { return measurementMethod; }
122 
123  int getUnits() const { return units; }
124 
125  MultimeterData getMultimeterData() const { return multimeterData; }
126 
127  NameplateData getNameplateData() const { return nameplateData; }
128 
129  PowerMeterData getPowerMeterData() const { return powerMeterData; }
130 
131  OtherMethodData getOtherMethodData() const { return otherMethodData; }
132 
133 private:
134  int operatingHours;
135  double electricityCost;
136  int measurementMethod;
137  MultimeterData multimeterData;
138  NameplateData nameplateData;
139  PowerMeterData powerMeterData;
140  OtherMethodData otherMethodData;
141  int units;
142 };
143 
145 {
146 public:
147  struct Output
148  {
149  Output(double energyUse, double energyCost, double power)
150  : energyUse(energyUse), energyCost(energyCost), power(power) {}
151 
152  Output() = default;
153 
154  double energyUse = 0, energyCost = 0, power = 0;
155  };
156 
158  std::vector<ElectricityReductionInput> &electricityReductionInputVec) : electricityReductionInputVec(electricityReductionInputVec) {}
159 
160  ElectricityReduction::Output calculate();
161 
162  ElectricityReduction::Output getOutput() { return output; }
163 
164  std::vector<ElectricityReductionInput> const &getElectricityReductionInputVec() const
165  {
166  return electricityReductionInputVec;
167  }
168 
169  void setElectricityReductionInputVec(std::vector<ElectricityReductionInput> &electricityReductionInputVec);
170 
171 private:
172  std::vector<ElectricityReductionInput> electricityReductionInputVec;
174 };
175 
176 #endif // AMO_LIBRARY_ELECTRICITYREDUCTION_H