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
TurbineInput.h
1 #ifndef AMO_TOOLS_SUITE_TURBINEINPUT_H
2 #define AMO_TOOLS_SUITE_TURBINEINPUT_H
3 
4 #include <iostream>
5 #include <type_traits>
6 
10 enum class CondensingTurbineOperation {
11  POWER_GENERATION = 1,
12  STEAM_FLOW = 0
13 };
14 
18 enum class PressureTurbineOperation {
19  BALANCE_HEADER = 2,
20  FLOW_RANGE = 4,
21  POWER_GENERATION = 1,
22  POWER_RANGE = 3,
23  STEAM_FLOW = 0
24 };
25 
26 template<typename T>
27 std::ostream& operator<<(typename std::enable_if<std::is_enum<T>::value, std::ostream>::type& stream, const T& e)
28 {
29  return stream << static_cast<typename std::underlying_type<T>::type>(e);
30 }
31 
35 class CondensingTurbine {
36 public:
37  CondensingTurbine(double isentropicEfficiency, double generationEfficiency, double condenserPressure,
38  CondensingTurbineOperation operationType, double operationValue, bool useTurbine);
39 
40  friend std::ostream &operator<<(std::ostream &stream, const CondensingTurbine &ct);
41 
42  double getIsentropicEfficiency() const;
43 
44  double getGenerationEfficiency() const;
45 
46  double getCondenserPressure() const;
47 
48  CondensingTurbineOperation getOperationType() const;
49 
50  double getOperationValue() const;
51 
52  bool isUseTurbine() const;
53 
54 private:
55  double isentropicEfficiency;
56  double generationEfficiency;
57  double condenserPressure;
58  CondensingTurbineOperation operationType;
59  double operationValue;
60  bool useTurbine;
61 };
62 
66 class PressureTurbine {
67 public:
68  PressureTurbine(double isentropicEfficiency, double generationEfficiency, PressureTurbineOperation operationType,
69  double operationValue1, double operationValue2, bool useTurbine);
70 
71  friend std::ostream &operator<<(std::ostream &stream, const PressureTurbine &pt);
72 
73  double getIsentropicEfficiency() const;
74 
75  double getGenerationEfficiency() const;
76 
77  PressureTurbineOperation getOperationType() const;
78 
79  double getOperationValue1() const;
80 
81  double getOperationValue2() const;
82 
83  bool isUseTurbine() const;
84 
85 private:
86  double isentropicEfficiency;
87  double generationEfficiency;
88  PressureTurbineOperation operationType;
89  double operationValue1;
90  double operationValue2;
91  bool useTurbine;
92 };
93 
97 class TurbineInput {
98 public:
99  TurbineInput(const CondensingTurbine &condensingTurbine, const PressureTurbine &highToLowTurbine,
100  const PressureTurbine &highToMediumTurbine, const PressureTurbine &mediumToLowTurbine);
101 
102  friend std::ostream &operator<<(std::ostream &stream, const TurbineInput &turbineInput);
103 
104  CondensingTurbine getCondensingTurbine() const;
105 
106  PressureTurbine getHighToLowTurbine() const;
107 
108  PressureTurbine getHighToMediumTurbine() const;
109 
110  PressureTurbine getMediumToLowTurbine() const;
111 
112 private:
113  CondensingTurbine condensingTurbine;
114  PressureTurbine highToLowTurbine;
115  PressureTurbine highToMediumTurbine;
116  PressureTurbine mediumToLowTurbine;
117 };
118 
119 #endif //AMO_TOOLS_SUITE_TURBINEINPUT_H