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
HeadTool.h
1 
9 #ifndef AMO_TOOLS_SUITE_HEADTOOL_H
10 #define AMO_TOOLS_SUITE_HEADTOOL_H
11 
12 #include <string>
13 #include <unordered_map>
14 
20 class HeadToolBase
21 {
22  protected:
23  struct Output
24  {
25  Output(double elevationHead, double pressureHead, double velocityHeadDifferential, double suctionHead, double dischargeHead, double pumpHead)
26  : elevationHead(elevationHead), pressureHead(pressureHead), velocityHeadDifferential(velocityHeadDifferential), suctionHead(suctionHead), dischargeHead(dischargeHead), pumpHead(pumpHead) {}
27 
28  Output() = default;
29  double elevationHead = 0, pressureHead = 0, velocityHeadDifferential = 0, suctionHead = 0, dischargeHead = 0, pumpHead = 0;
30  };
46  const double specificGravity,
47  const double flowRate,
48  const double suctionPipeDiameter,
49  const double suctionLineLossCoefficients,
50  const double dischargePipeDiameter,
51  const double dischargeGaugePressure,
52  const double dischargeGaugeElevation,
53  const double dischargeLineLossCoefficients) : specificGravity(specificGravity),
54  flowRate(flowRate),
55  suctionPipeDiameter(suctionPipeDiameter),
56  suctionLineLossCoefficients(suctionLineLossCoefficients),
57  dischargePipeDiameter(dischargePipeDiameter),
58  dischargeGaugePressure(dischargeGaugePressure),
59  dischargeGaugeElevation(dischargeGaugeElevation),
60  dischargeLineLossCoefficients(dischargeLineLossCoefficients)
61  {
62  }
63 
69  virtual HeadToolBase::Output calculate() = 0;
70 
79  double velocity(double diameter, double flow);
80 
86  double velocityHead(double velocity, double gravity);
87 
89  const double specificGravity;
91  const double flowRate;
93  const double suctionPipeDiameter;
95  const double suctionLineLossCoefficients;
97  const double dischargePipeDiameter;
99  const double dischargeGaugePressure;
101  const double dischargeGaugeElevation;
103  const double dischargeLineLossCoefficients;
105  const double gravity = 32.1740;
107  const double PI = 3.141592653589793238463;
108 };
109 
115 class HeadToolSuctionTank : private HeadToolBase
116 {
117  public:
135  const double specificGravity,
136  const double flowRate,
137  const double suctionPipeDiameter,
138  const double suctionTankGasOverPressure,
139  const double suctionTankFluidSurfaceElevation,
140  const double suctionLineLossCoefficients,
141  const double dischargePipeDiameter,
142  const double dischargeGaugePressure,
143  const double dischargeGaugeElevation,
144  const double dischargeLineLossCoefficients) : HeadToolBase(specificGravity,
145  flowRate,
146  suctionPipeDiameter,
147  suctionLineLossCoefficients,
148  dischargePipeDiameter,
149  dischargeGaugePressure,
150  dischargeGaugeElevation,
151  dischargeLineLossCoefficients),
152  suctionTankGasOverPressure(suctionTankGasOverPressure),
153  suctionTankFluidSurfaceElevation(suctionTankFluidSurfaceElevation)
154  {
155  }
156 
161  HeadToolBase::Output calculate() override;
162 
163  private:
164  const double suctionTankGasOverPressure, suctionTankFluidSurfaceElevation;
165  HeadToolBase::Output output;
166 };
167 
173 class HeadTool : private HeadToolBase
174 {
175  public:
193  const double specificGravity,
194  const double flowRate,
195  const double suctionPipeDiameter,
196  const double suctionGaugePressure,
197  const double suctionGaugeElevation,
198  const double suctionLineLossCoefficients,
199  const double dischargePipeDiameter,
200  const double dischargeGaugePressure,
201  const double dischargeGaugeElevation,
202  const double dischargeLineLossCoefficients) : HeadToolBase(specificGravity,
203  flowRate,
204  suctionPipeDiameter,
205  suctionLineLossCoefficients,
206  dischargePipeDiameter,
207  dischargeGaugePressure,
208  dischargeGaugeElevation,
209  dischargeLineLossCoefficients),
210  suctionGaugePressure(suctionGaugePressure),
211  suctionGaugeElevation(suctionGaugeElevation)
212  {
213  }
219  HeadToolBase::Output calculate() override;
220  // std::unordered_map<std::string, double> calculate() override;
221 
222  private:
223  const double suctionGaugePressure, suctionGaugeElevation;
224  HeadToolBase::Output output;
225 };
226 
227 #endif //AMO_TOOLS_SUITE_HEADTOOL_H
double velocityHead(double velocity, double gravity)
Definition: HeadTool.cpp:16
const double PI
value of Pi
Definition: HeadTool.h:107
const double dischargeGaugePressure
discharge gauge pressure in psi
Definition: HeadTool.h:99
HeadToolSuctionTank(const double specificGravity, const double flowRate, const double suctionPipeDiameter, const double suctionTankGasOverPressure, const double suctionTankFluidSurfaceElevation, const double suctionLineLossCoefficients, const double dischargePipeDiameter, const double dischargeGaugePressure, const double dischargeGaugeElevation, const double dischargeLineLossCoefficients)
Definition: HeadTool.h:134
const double dischargeLineLossCoefficients
discharge line loss coefficients - unitless
Definition: HeadTool.h:103
const double dischargeGaugeElevation
discharge gauge elevation in ft
Definition: HeadTool.h:101
const double suctionLineLossCoefficients
suction line loss coefficient - unitless
Definition: HeadTool.h:95
const double flowRate
flow rate in gpm
Definition: HeadTool.h:91
virtual HeadToolBase::Output calculate()=0
const double suctionPipeDiameter
suction pipe diameter in inches
Definition: HeadTool.h:93
const double dischargePipeDiameter
discharge pipe diameter in inches
Definition: HeadTool.h:97
HeadTool(const double specificGravity, const double flowRate, const double suctionPipeDiameter, const double suctionGaugePressure, const double suctionGaugeElevation, const double suctionLineLossCoefficients, const double dischargePipeDiameter, const double dischargeGaugePressure, const double dischargeGaugeElevation, const double dischargeLineLossCoefficients)
Definition: HeadTool.h:192
const double gravity
gravity constant
Definition: HeadTool.h:105
HeadToolBase(const double specificGravity, const double flowRate, const double suctionPipeDiameter, const double suctionLineLossCoefficients, const double dischargePipeDiameter, const double dischargeGaugePressure, const double dischargeGaugeElevation, const double dischargeLineLossCoefficients)
Definition: HeadTool.h:45
Contains the entire hierarchy of the HeadTool classes. calculate(): Calculates the operating pump hea...
Definition: HeadTool.h:20
double velocity(double diameter, double flow)
Contains the implementations of the HeadTool hierarchy methods. calculate(): Calculates the operating...
Definition: HeadTool.cpp:12
const double specificGravity
specific gravity - unitless
Definition: HeadTool.h:89