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
NaturalGasReduction.h
1 #ifndef AMO_LIBRARY_NATURALGASREDUCTION_H
2 #define AMO_LIBRARY_NATURALGASREDUCTION_H
3 
4 #include <exception>
5 #include <stdexcept>
6 #include <vector>
7 
9 {
10 public:
11  FlowMeterMethodData(const double flowRate)
12  : flowRate(flowRate) {}
13 
14  double getFlowRate() const { return flowRate; }
15  void setFlowRate(double flowRate);
16 
17 private:
18  double flowRate;
19 };
20 
22 {
23 public:
24  NaturalGasOtherMethodData(const double consumption)
25  : consumption(consumption) {}
26 
27  double getConsumption() const { return consumption; }
28  void setConsumption(double consumption);
29 
30 private:
31  double consumption;
32 };
33 
35 {
36 public:
37  AirMassFlowMeasuredData(const double areaOfDuct, const double airVelocity)
38  : areaOfDuct(areaOfDuct), airVelocity(airVelocity) {}
39 
40  double getAreaOfDuct() const { return areaOfDuct; }
41  double getAirVelocity() const { return airVelocity; }
42  void setAreaOfDuct(double areaOfDuct);
43  void setAirVelocity(double airVelocity);
44 
45 private:
46  double areaOfDuct, airVelocity;
47 };
48 
50 {
51 public:
52  AirMassFlowNameplateData(const double airFlow)
53  : airFlow(airFlow) {}
54 
55  double getAirFlow() const { return airFlow; }
56  void setAirFlow(double airFlow);
57 
58 private:
59  double airFlow;
60 };
61 
62 class AirMassFlowData
63 {
64 public:
65  AirMassFlowData(const bool isNameplate, const AirMassFlowMeasuredData airMassFlowMeasuredData, const AirMassFlowNameplateData airMassFlowNameplateData, const double inletTemperature, const double outletTemperature, const double systemEfficiency)
66  : isNameplate(isNameplate), airMassFlowMeasuredData(airMassFlowMeasuredData), airMassFlowNameplateData(airMassFlowNameplateData), inletTemperature(inletTemperature), outletTemperature(outletTemperature), systemEfficiency(systemEfficiency) {}
67 
68  bool getIsNameplate() const { return isNameplate; }
69  AirMassFlowMeasuredData getAirMassFlowMeasuredData() const { return airMassFlowMeasuredData; }
70  AirMassFlowNameplateData getAirMassFlowNameplateData() const { return airMassFlowNameplateData; }
71  double getInletTemperature() const { return inletTemperature; }
72  double getOutletTemperature() const { return outletTemperature; }
73  double getSystemEfficiency() const { return systemEfficiency; }
74  void setIsNameplate(bool isNameplate);
75  void setAirMassFlowMeasuredData(AirMassFlowMeasuredData airMassFlowMeasuredData);
76  void setAirMassFlowNameplateData(AirMassFlowNameplateData airMassFlowNameplateData);
77  void setInletTemperature(double inletTemperature);
78  void setOutletTemperature(double outletTemperature);
79  void setSystemEfficiency(double systemEfficiency);
80 
81 private:
82  bool isNameplate;
83  AirMassFlowMeasuredData airMassFlowMeasuredData;
84  AirMassFlowNameplateData airMassFlowNameplateData;
85  double inletTemperature, outletTemperature, systemEfficiency;
86 };
87 
89 {
90 public:
91  WaterMassFlowData(const double waterFlow, const double inletTemperature, const double outletTemperature, const double systemEfficiency) : waterFlow(waterFlow), inletTemperature(inletTemperature), outletTemperature(outletTemperature), systemEfficiency(systemEfficiency) {}
92  double getWaterFlow() const { return waterFlow; }
93  double getInletTemperature() const { return inletTemperature; }
94  double getOutletTemperature() const { return outletTemperature; }
95  double getSystemEfficiency() const { return systemEfficiency; }
96  void setWaterFlow(double waterFlow);
97  void setInletTemperature(double inletTemperature);
98  void setOutletTemperature(double outletTemperature);
99  void setSystemEfficiency(double systemEfficiency);
100 
101 private:
102  double waterFlow, inletTemperature, outletTemperature, systemEfficiency;
103 };
104 
106 {
107 public:
108  NaturalGasReductionInput(const int operatingHours, const double fuelCost, const int measurementMethod,
109  const FlowMeterMethodData flowMeterMethodData, const NaturalGasOtherMethodData otherMethodData,
110  const AirMassFlowData airMassFlowData, const WaterMassFlowData waterMassFlowData,
111  const int units)
112  : operatingHours(operatingHours), fuelCost(fuelCost), measurementMethod(measurementMethod), flowMeterMethodData(flowMeterMethodData),
113  otherMethodData(otherMethodData), airMassFlowData(airMassFlowData), waterMassFlowData(waterMassFlowData), units(units) {}
114 
115  int getOperatingHours() const { return operatingHours; }
116  double getFuelCost() const { return fuelCost; }
117  int getMeasurementMethod() const { return measurementMethod; }
118  int getUnits() const { return units; }
119  FlowMeterMethodData getFlowMeterMethodData() const { return flowMeterMethodData; }
120  NaturalGasOtherMethodData getNaturalGasOtherMethodData() const { return otherMethodData; }
121  AirMassFlowData getAirMassFlowData() const { return airMassFlowData; }
122  WaterMassFlowData getWaterMassFlowData() const { return waterMassFlowData; }
123 
124 private:
125  int operatingHours;
126  double fuelCost;
127  int measurementMethod;
128  FlowMeterMethodData flowMeterMethodData;
129  NaturalGasOtherMethodData otherMethodData;
130  AirMassFlowData airMassFlowData;
131  WaterMassFlowData waterMassFlowData;
132  int units;
133 };
134 
136 {
137 public:
138  struct Output
139  {
140  Output(double energyUse, double energyCost, double heatFlow, double totalFlow)
141  : energyUse(energyUse), energyCost(energyCost), heatFlow(heatFlow), totalFlow(totalFlow) {}
142 
143  Output() = default;
144  double energyUse = 0, energyCost = 0, heatFlow = 0, totalFlow = 0;
145  };
146 
148  std::vector<NaturalGasReductionInput> &naturalGasReductionInputVec) : naturalGasReductionInputVec(naturalGasReductionInputVec)
149  {
150  }
151 
152  NaturalGasReduction::Output calculate();
153  std::vector<NaturalGasReductionInput> const &getNaturalGasReductionInputVec() const
154  {
155  return naturalGasReductionInputVec;
156  }
157  void setNaturalGasReductionInputVec(std::vector<NaturalGasReductionInput> &naturalGasReductionInputVec);
158 
159 private:
160  std::vector<NaturalGasReductionInput> naturalGasReductionInputVec;
162 };
163 
164 #endif // AMO_LIBRARY_NATURALGASREDUCTION_H