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#pragma once
2
12#include <cmath>
13#include <functional>
14#include <stdexcept>
15#include <vector>
16
17#ifndef M_PI
18 #define M_PI 3.14159265358979323846
19#endif
20
22 public:
23 struct Output {
24 Output(const double standardDensity, const double sonicDensity, const double leakVelocity,
25 const double leakRateLBMmin, const double leakRateScfm, const double leakRateEstimate,
26 const double annualConsumption)
27 : standardDensity(standardDensity), sonicDensity(sonicDensity), leakVelocity(leakVelocity),
28 leakRateLBMmin(leakRateLBMmin), leakRateScfm(leakRateScfm), leakRateEstimate(leakRateEstimate),
29 annualConsumption(annualConsumption) {}
30
31 const double standardDensity, sonicDensity, leakVelocity, leakRateLBMmin, leakRateScfm, leakRateEstimate,
32 annualConsumption;
33 };
34
47 OrificeMethod(const double operatingTime, const double airTemp, const double atmPressure,
48 const double dischargeCoef, const double diameter, const double supplyPressure, const int numOrifices)
49 : operatingTime(operatingTime), airTemp(airTemp), atmPressure(atmPressure), dischargeCoef(dischargeCoef),
50 diameter(diameter), supplyPressure(supplyPressure), numOrifices(numOrifices) {}
51
57 const double standardDensity = (atmPressure + supplyPressure) * (144 / (53.34 * airTemp));
58 const double sonicDensity = std::pow(standardDensity * (2 / (1.4 + 1)), 1 / (1.4 - 1));
59 const double leakVelocity = std::pow(((2 * 1.4) / (1.4 + 1)) * 53.34 * airTemp * 32.2, 0.5);
60 const double leakRateLBMmin =
61 sonicDensity * (diameter * diameter) * (M_PI / (4 * 144)) * leakVelocity * 60 * dischargeCoef;
62 const double leakRateScfm = leakRateLBMmin / standardDensity;
63 const double leakRateEstimate = leakRateScfm * numOrifices;
64 const double annualConsumption = (operatingTime * leakRateEstimate * 60) / 1000;
65 OrificeMethod::Output output(standardDensity, sonicDensity, leakVelocity, leakRateLBMmin, leakRateScfm,
66 leakRateEstimate, annualConsumption);
67
68 return output;
69 }
70
71 private:
72 double operatingTime, airTemp, atmPressure, dischargeCoef, diameter, supplyPressure;
73 int numOrifices;
74};
75
Output calculate()
OrificeMethod(const double operatingTime, const double airTemp, const double atmPressure, const double dischargeCoef, const double diameter, const double supplyPressure, const int numOrifices)