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
SteamReduction.h
1 #ifndef AMO_LIBRARY_STEAMREDUCTION_H
2 #define AMO_LIBRARY_STEAMREDUCTION_H
3 
4 #include <exception>
5 #include <stdexcept>
6 #include <vector>
7 #include "ssmt/SaturatedProperties.h"
8 #include "ssmt/SteamSystemModelerTool.h"
9 
11 {
12 public:
13  SteamFlowMeterMethodData(const double flowRate)
14  : flowRate(flowRate) {}
15  double getFlowRate() const { return flowRate; }
16 
17 private:
18  double flowRate;
19 };
20 
22 {
23 public:
24  SteamMassFlowNameplateData(const double flowRate)
25  : flowRate(flowRate) {}
26 
27  double getFlowRate() const { return flowRate; }
28 
29 private:
30  double flowRate;
31 };
32 
34 {
35 public:
36  SteamMassFlowMeasuredData(const double areaOfDuct, const double airVelocity)
37  : areaOfDuct(areaOfDuct), airVelocity(airVelocity) {}
38 
39  double getAreaOfDuct() const { return areaOfDuct; }
40  double getAirVelocity() const { return airVelocity; }
41 
42 private:
43  double areaOfDuct, airVelocity;
44 };
45 
47 {
48 public:
49  SteamMassFlowMethodData(const bool isNameplate, const SteamMassFlowMeasuredData massFlowMeasuredData, const SteamMassFlowNameplateData massFlowNameplateData,
50  const double inletTemperature, const double outletTemperature)
51  : isNameplate(isNameplate), massFlowMeasuredData(massFlowMeasuredData),
52  massFlowNameplateData(massFlowNameplateData), inletTemperature(inletTemperature), outletTemperature(outletTemperature) {}
53 
54  bool getIsNameplate() const { return isNameplate; }
55  SteamMassFlowMeasuredData getMassFlowMeasuredData() { return massFlowMeasuredData; }
56  SteamMassFlowNameplateData getMassFlowNameplateData() { return massFlowNameplateData; }
57  double getInletTemperature() const { return inletTemperature; }
58  double getOutletTemperature() const { return outletTemperature; }
59 
60 private:
61  bool isNameplate;
62  SteamMassFlowMeasuredData massFlowMeasuredData;
63  SteamMassFlowNameplateData massFlowNameplateData;
64  double inletTemperature, outletTemperature;
65 };
66 
68 {
69 public:
70  SteamOtherMethodData(const double consumption)
71  : consumption(consumption) {}
72 
73  double getConsumption() const { return consumption; }
74 
75 private:
76  double consumption;
77 };
78 
80 {
81 public:
82  SteamReductionInput(const int hoursPerYear, const int utilityType, const double utilityCost, const int measurementMethod, const double systemEfficiency, const double pressure,
83  const SteamFlowMeterMethodData flowMeterMethodData, const SteamMassFlowMethodData airMassFlowMethodData,
84  const SteamMassFlowMethodData waterMassFlowMethodData, const SteamOtherMethodData otherMethodData, const int units)
85  : hoursPerYear(hoursPerYear), utilityType(utilityType), utilityCost(utilityCost), measurementMethod(measurementMethod), systemEfficiency(systemEfficiency), pressure(pressure),
86  flowMeterMethodData(flowMeterMethodData), airMassFlowMethodData(airMassFlowMethodData), waterMassFlowMethodData(waterMassFlowMethodData), otherMethodData(otherMethodData), units(units) {}
87 
88  int getHoursPerYear() const { return hoursPerYear; }
89  int getUtilityType() const { return utilityType; }
90  int getMeasurementMethod() const { return measurementMethod; }
91  int getUnits() const { return units; }
92  double getUtilityCost() const { return utilityCost; }
93  double getSystemEfficiency() const { return systemEfficiency; }
94  double getPressure() const { return pressure; }
95  SteamFlowMeterMethodData getFlowMeterMethodData() const { return flowMeterMethodData; }
96  SteamMassFlowMethodData getAirMassFlowMethodData() const { return airMassFlowMethodData; }
97  SteamMassFlowMethodData getWaterMassFlowMethodData() const { return waterMassFlowMethodData; }
98  SteamOtherMethodData getOtherMethodData() const { return otherMethodData; }
99 
100 private:
101  int hoursPerYear, utilityType;
102  double utilityCost;
103  int measurementMethod;
104  double systemEfficiency, pressure;
105  SteamFlowMeterMethodData flowMeterMethodData;
106  SteamMassFlowMethodData airMassFlowMethodData;
107  SteamMassFlowMethodData waterMassFlowMethodData;
108  SteamOtherMethodData otherMethodData;
109  int units;
110 };
111 
112 class SteamReduction
113 {
114 public:
115  struct Output
116  {
117  Output(double steamUse, double energyUse, double energyCost)
118  : steamUse(steamUse), energyUse(energyUse), energyCost(energyCost) {}
119  Output() = default;
120  double steamUse = 0, energyUse = 0, energyCost = 0;
121  };
122 
123  SteamReduction(std::vector<SteamReductionInput> &steamReductionInputVec) : steamReductionInputVec(steamReductionInputVec) {}
124  SteamReduction::Output calculate();
125 
126  std::vector<SteamReductionInput> const &getSteamReductionInputVec() const
127  {
128  return steamReductionInputVec;
129  }
130  void setSteamReductionInputVec(std::vector<SteamReductionInput> &steamReductionInputVec);
131 
132 private:
133  std::vector<SteamReductionInput> steamReductionInputVec;
134  SteamReduction::Output output;
135 };
136 
137 #endif // AMO_LIBRARY_STEAMREDUCTION_H