MEASUR-Tools-Suite v1.0.11
The MEASUR Tools Suite is a collection of industrial efficiency calculations written in C++ and with bindings for compilation to WebAssembly.
Loading...
Searching...
No Matches
OrificeMethod.h
Go to the documentation of this file.
1
10#ifndef TOOLS_SUITE_ORIFICEMETHOD_H
11#define TOOLS_SUITE_ORIFICEMETHOD_H
12
13#include <cmath>
14#include <functional>
15#include <stdexcept>
16#include <vector>
17
18#ifndef M_PI
19 #define M_PI 3.14159265358979323846
20#endif
21
23 public:
24 struct Output {
25 Output(const double standardDensity, const double sonicDensity, const double leakVelocity,
26 const double leakRateLBMmin, const double leakRateScfm, const double leakRateEstimate,
27 const double annualConsumption)
28 : standardDensity(standardDensity), sonicDensity(sonicDensity), leakVelocity(leakVelocity),
29 leakRateLBMmin(leakRateLBMmin), leakRateScfm(leakRateScfm), leakRateEstimate(leakRateEstimate),
30 annualConsumption(annualConsumption) {}
31
32 const double standardDensity, sonicDensity, leakVelocity, leakRateLBMmin, leakRateScfm, leakRateEstimate,
33 annualConsumption;
34 };
35
48 OrificeMethod(const double operatingTime, const double airTemp, const double atmPressure,
49 const double dischargeCoef, const double diameter, const double supplyPressure, const int numOrifices)
50 : operatingTime(operatingTime), airTemp(airTemp), atmPressure(atmPressure), dischargeCoef(dischargeCoef),
51 diameter(diameter), supplyPressure(supplyPressure), numOrifices(numOrifices) {}
52
58 const double standardDensity = (atmPressure + supplyPressure) * (144 / (53.34 * airTemp));
59 const double sonicDensity = std::pow(standardDensity * (2 / (1.4 + 1)), 1 / (1.4 - 1));
60 const double leakVelocity = std::pow(((2 * 1.4) / (1.4 + 1)) * 53.34 * airTemp * 32.2, 0.5);
61 const double leakRateLBMmin =
62 sonicDensity * (diameter * diameter) * (M_PI / (4 * 144)) * leakVelocity * 60 * dischargeCoef;
63 const double leakRateScfm = leakRateLBMmin / standardDensity;
64 const double leakRateEstimate = leakRateScfm * numOrifices;
65 const double annualConsumption = (operatingTime * leakRateEstimate * 60) / 1000;
66 OrificeMethod::Output output(standardDensity, sonicDensity, leakVelocity, leakRateLBMmin, leakRateScfm,
67 leakRateEstimate, annualConsumption);
68
69 return output;
70 }
71
72 private:
73 double operatingTime, airTemp, atmPressure, dischargeCoef, diameter, supplyPressure;
74 int numOrifices;
75};
76
77#endif
Output calculate()
OrificeMethod(const double operatingTime, const double airTemp, const double atmPressure, const double dischargeCoef, const double diameter, const double supplyPressure, const int numOrifices)