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
FanCurve.h
Go to the documentation of this file.
1#ifndef TOOLS_SUITE_FANCURVE_H
2#define TOOLS_SUITE_FANCURVE_H
11#include <vector>
15enum class FanCurveType { FanStaticPressure, FanTotalPressure, StaticPressureRise };
22 public:
23 ResultData(const double flow, const double pressure, const double power, const double efficiency)
24 : flow(flow), pressure(pressure), power(power), efficiency(efficiency) {};
25
26 const double flow, pressure, power, efficiency;
27};
34 public:
40
41 struct BaseCurve {
42 // pressure here is pressureBox, determined by Curve Type
43 BaseCurve(const double flow, const double pressure, const double power)
44 : flow(flow), pressure(pressure), power(power) {};
45
46 const double flow, pressure, power;
47 friend class FanCurveData;
48 };
49
50 struct RatedPoint : public BaseCurve {
51 // pressure here is pressureBox, determined by Curve Type
52 RatedPoint(const double flow, const double pressure, const double power, const double density,
53 const double speed, const double speedCorrected)
54 : BaseCurve(flow, pressure, power), density(density), speed(speed), speedCorrected(speedCorrected) {};
55
56 const double density, speed, speedCorrected;
57 friend class FanCurveData;
58 };
59
61 // pressure here is pressureBox, determined by Curve Type
62 BaseOperatingPoint(const double flow, const double pressure, const double power, const double density,
63 const double speed, const double speedCorrected, const double pressureBarometric,
64 const bool usePt1Factor, const double pt1 = 0)
65 : RatedPoint(flow, pressure, power, density, speed, speedCorrected), pressureBarometric(pressureBarometric),
66 usePt1Factor(usePt1Factor), pt1(pt1) {};
67
68 const double pressureBarometric;
69 bool usePt1Factor;
70 const double pt1;
71 friend class FanCurveData;
72 };
73
74 FanCurveData(FanCurveType const curveType, std::vector<BaseCurve> baseCurveData)
75 : curveType(curveType), baseCurveData(std::move(baseCurveData)), calcType(CalculationType::BaseCurve) {}
76
77 FanCurveData(FanCurveType const curveType, std::vector<RatedPoint> ratedPointData)
78 : curveType(curveType), ratedPointData(std::move(ratedPointData)), calcType(CalculationType::RatedPoint) {}
79
80 FanCurveData(FanCurveType const curveType, std::vector<BaseOperatingPoint> baseOperatingPointData)
81 : curveType(curveType), baseOperatingPointData(std::move(baseOperatingPointData)),
82 calcType(CalculationType::BaseOperatingPoint) {}
83
84 private:
85 FanCurveType curveType;
86 std::vector<BaseCurve> baseCurveData;
87 std::vector<RatedPoint> ratedPointData;
88 std::vector<BaseOperatingPoint> baseOperatingPointData;
89
90 CalculationType calcType;
91
92 friend class FanCurve;
93};
94
95class FanCurve {
96 public:
97 FanCurve(const double density, const double densityCorrected, const double speed, const double speedCorrected,
98 const double pressureBarometric, const double pressureBarometricCorrected, const double pt1Factor,
99 const double gamma, const double gammaCorrected, const double area1, const double area2, FanCurveData data)
100 : density(density), densityCorrected(densityCorrected), speed(speed), speedCorrected(speedCorrected),
101 pressureBarometric(pressureBarometric), pressureBarometricCorrected(pressureBarometricCorrected),
102 pt1Factor(pt1Factor), gamma(gamma), gammaCorrected(gammaCorrected), area1(area1), area2(area2),
103 curveData(std::move(data)) {};
104
105 std::vector<ResultData> calculate();
106
107 private:
108 std::vector<ResultData> calculateBaseCurve();
109 std::vector<ResultData> calculateBaseOperatingPoint();
110 std::vector<ResultData> calculateRatedPoint();
111
112 double density, densityCorrected, speed, speedCorrected, pressureBarometric, pressureBarometricCorrected;
113 double pt1Factor, gamma, gammaCorrected, area1, area2;
114
115 FanCurveData curveData;
116};
117
118#endif // TOOLS_SUITE_FANCURVE_H
FanCurveType
Definition FanCurve.h:15