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
opening_losses.h
Go to the documentation of this file.
1
11#pragma once
12
13#include <array>
14#include <cmath>
15#include <functional>
16#include <stdexcept>
17
25 public:
31 enum class OpeningShape { CIRCULAR, RECTANGULAR };
32
39 double calculateViewFactor(double thickness, double diameter);
40
48 double calculateViewFactor(double thickness, double length, double height);
49
62 OpeningLosses(double emissivity, double length, double width, double thickness, double ratio,
63 double ambientTemperature, double insideTemperature, double percentTimeOpen, double viewFactor)
64 : emissivity(emissivity), length(length), width(width), thickness(thickness), ratio(ratio),
65 ambientTemperature(ambientTemperature), insideTemperature(insideTemperature),
66 percentTimeOpen(percentTimeOpen), viewFactor(viewFactor), openingShape(OpeningShape::RECTANGULAR) {}
67
79 OpeningLosses(double emissivity, double diameter, double thickness, double ratio, double ambientTemperature,
80 double insideTemperature, double percentTimeOpen, double viewFactor)
81 : emissivity(emissivity), diameter(diameter), thickness(thickness), ratio(ratio),
82 ambientTemperature(ambientTemperature), insideTemperature(insideTemperature),
83 percentTimeOpen(percentTimeOpen), viewFactor(viewFactor), openingShape(OpeningShape::CIRCULAR) {}
84
85 OpeningLosses() = default;
86
91 double getEmissivity() const { return emissivity; }
92
97 void setEmissivity(double emissivity) { this->emissivity = emissivity; }
98
103 double getDiameter() const { return diameter; }
104
109 void setDiameter(double diameter) { this->diameter = diameter; }
110
115 double getWidth() const { return width; }
116
121 void setWidth(double width) { this->width = width; }
122
127 double getThickness() const { return thickness; }
128
133 void setThickness(double thickness) { this->thickness = thickness; }
134
139 double getRatio() const { return ratio; }
140
146 void setRatio(double ratio) { this->ratio = ratio; }
147
152 double getAmbientTemperature() const { return ambientTemperature; }
153
158 void setAmbientTemperature(double ambientTemperature) { this->ambientTemperature = ambientTemperature; }
159
164 double getInsideTemperature() const { return insideTemperature; }
165
170 void setInsideTemperature(double insideTemperature) { this->insideTemperature = insideTemperature; }
171
176 double getPercentTimeOpen() const { return percentTimeOpen; }
177
182 void setPercentTimeOpen(double percentTimeOpen) { this->percentTimeOpen = percentTimeOpen; }
183
188 double getViewFactor() const { return viewFactor; }
189
194 void setViewFactor(double viewFactor) { this->viewFactor = viewFactor; }
195
200 OpeningShape getOpeningShape() const { return openingShape; }
201
208 void setOpeningShape(OpeningShape const openingShape, const double length, const double width) {
209 if (openingShape != OpeningShape::RECTANGULAR) {
210 throw std::runtime_error("Call the other set opening shape function to set openingShape to Circular");
211 }
212 this->openingShape = openingShape;
213 this->length = length;
214 this->width = width;
215 diameter = 0;
216 }
217
223 void setOpeningShape(OpeningShape const openingShape, const double diameter) {
224 if (openingShape != OpeningShape::CIRCULAR) {
225 throw std::runtime_error("Call the other set opening shape function to set openingShape to Rectangular");
226 }
227 this->openingShape = openingShape;
228 this->diameter = diameter;
229 length = 0;
230 width = 0;
231 }
232
237 double getHeatLoss();
238
239 private:
240 double emissivity = 0.95;
241 double diameter = 0;
242 double length = 0, width = 0;
243 double thickness;
244 double ratio;
245 double ambientTemperature;
246 double insideTemperature;
247 double percentTimeOpen;
248 double viewFactor;
249 OpeningShape openingShape;
250
251 double heatLoss = 0;
252
253 const std::array<const std::function<double(const double thicknessRatio)>, 8> viewFactorEquations = {{
254 [](const double tr) {
255 return (1.10000000001829 + 92.8571428570049 * tr - 57.5892857139671 * std::pow(tr, 2) +
256 15.6249999998005 * std::pow(tr, 3)) /
257 100;
258 }, // case 1
259 [](const double tr) {
260 return (29.4999999989821 + 26.8416666684161 * tr - 4.35416666785322 * std::pow(tr, 2) -
261 8.33333330461522E-02 * std::pow(tr, 3) + 0.104166666655532 * std::pow(tr, 4) -
262 8.33333333686747E-03 * std::pow(tr, 5)) /
263 100;
264 }, // case 2
265 [](const double tr) {
266 return (3.50000000001719 + 89.5833333332039 * tr - 49.9999999997023 * std::pow(tr, 2) +
267 10.4166666664804 * std::pow(tr, 3)) /
268 100;
269 }, // case 3
270 [](const double tr) {
271 return (23.9999999965639 + 39.3916666718743 * tr - 11.6041666697487 * std::pow(tr, 2) +
272 1.85416666706894 * std::pow(tr, 3) - 0.145833333217932 * std::pow(tr, 4) +
273 4.16666663902102E-03 * std::pow(tr, 5)) /
274 100;
275 }, // case 4
276 [](const double tr) {
277 return (2.70000000002409 + 112.678571428391 * tr - 70.9821428567315 * std::pow(tr, 2) +
278 15.6249999997447 * std::pow(tr, 3)) /
279 100;
280 }, // case 5
281 [](const double tr) {
282 return (35.4999999992976 + 29.4583333347815 * tr - 4.52083333446976 * std::pow(tr, 2) -
283 0.687499999606652 * std::pow(tr, 3) + 0.270833333273064 * std::pow(tr, 4) -
284 2.08333333303721E-02 * std::pow(tr, 5)) /
285 100;
286 }, // case 6
287 [](const double tr) {
288 return (13.0000000000278 + 123.74999999979 * tr - 99.9999999995182 * std::pow(tr, 2) +
289 31.249999999699 * std::pow(tr, 3)) /
290 100;
291 }, // case 7
292 [](const double tr) {
293 return (26.9999999903567 + 64.5666666806646 * tr - 29.9166666745008 * std::pow(tr, 2) +
294 7.14583333396145 * std::pow(tr, 3) - 0.833333332874441 * std::pow(tr, 4) +
295 3.74999999085373E-02 * std::pow(tr, 5)) /
296 100;
297 }, // case 8
298 }};
299};
double getWidth() const
double getAmbientTemperature() const
void setOpeningShape(OpeningShape const openingShape, const double length, const double width)
void setThickness(double thickness)
void setAmbientTemperature(double ambientTemperature)
double getHeatLoss()
void setViewFactor(double viewFactor)
OpeningShape getOpeningShape() const
void setWidth(double width)
OpeningLosses(double emissivity, double length, double width, double thickness, double ratio, double ambientTemperature, double insideTemperature, double percentTimeOpen, double viewFactor)
double getEmissivity() const
void setPercentTimeOpen(double percentTimeOpen)
void setInsideTemperature(double insideTemperature)
double getDiameter() const
void setEmissivity(double emissivity)
double calculateViewFactor(double thickness, double diameter)
void setRatio(double ratio)
void setDiameter(double diameter)
double getInsideTemperature() const
double calculateViewFactor(double thickness, double length, double height)
double getRatio() const
double getViewFactor() const
double getPercentTimeOpen() const
double getThickness() const
OpeningLosses(double emissivity, double diameter, double thickness, double ratio, double ambientTemperature, double insideTemperature, double percentTimeOpen, double viewFactor)
void setOpeningShape(OpeningShape const openingShape, const double diameter)