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
OpeningLosses.h
Go to the documentation of this file.
1 
11 #ifndef AMO_SUITE_OPENINGLOSSES_H
12 #define AMO_SUITE_OPENINGLOSSES_H
13 
14 #include <functional>
15 #include <array>
16 
23 class OpeningLosses {
24 public:
25 
31  enum class OpeningShape {
32  CIRCULAR,
33  RECTANGULAR
34  };
35 
42  double calculateViewFactor(double thickness, double diameter);
43 
51  double calculateViewFactor(double thickness, double length, double height);
52 
65  OpeningLosses(double emissivity,
66  double length,
67  double width,
68  double thickness,
69  double ratio,
70  double ambientTemperature,
71  double insideTemperature,
72  double percentTimeOpen,
73  double viewFactor)
74  : emissivity(emissivity),
75  length(length),
76  width(width),
77  thickness(thickness), ratio(ratio),
78  ambientTemperature(ambientTemperature),
79  insideTemperature(insideTemperature),
80  percentTimeOpen(percentTimeOpen),
81  viewFactor(viewFactor),
82  openingShape(OpeningShape::RECTANGULAR)
83  {}
84 
96  OpeningLosses(double emissivity,
97  double diameter,
98  double thickness,
99  double ratio,
100  double ambientTemperature,
101  double insideTemperature,
102  double percentTimeOpen,
103  double viewFactor)
104  : emissivity(emissivity),
105  diameter(diameter),
106  thickness(thickness), ratio(ratio),
107  ambientTemperature(ambientTemperature),
108  insideTemperature(insideTemperature),
109  percentTimeOpen(percentTimeOpen),
110  viewFactor(viewFactor),
111  openingShape(OpeningShape::CIRCULAR)
112  {}
113 
114  OpeningLosses() = default;
115 
120  double getEmissivity() const {
121  return emissivity;
122  }
123 
124 
129  void setEmissivity(double emissivity) {
130  this->emissivity = emissivity;
131  }
132 
133 
138  double getDiameter() const {
139  return diameter;
140  }
141 
142 
147  void setDiameter(double diameter) {
148  this->diameter = diameter;
149  }
150 
155  double getWidth() const {
156  return width;
157  }
158 
163  void setWidth(double width) {
164  this->width = width;
165  }
166 
171  double getThickness() const {
172  return thickness;
173  }
174 
179  void setThickness(double thickness) {
180  this->thickness = thickness;
181  }
182 
187  double getRatio() const {
188  return ratio;
189  }
190 
196  void setRatio(double ratio) {
197  this->ratio = ratio;
198  }
199 
204  double getAmbientTemperature() const {
205  return ambientTemperature;
206  }
207 
212  void setAmbientTemperature(double ambientTemperature) {
213  this->ambientTemperature = ambientTemperature;
214  }
215 
220  double getInsideTemperature() const {
221  return insideTemperature;
222  }
223 
228  void setInsideTemperature(double insideTemperature) {
229  this->insideTemperature = insideTemperature;
230  }
231 
236  double getPercentTimeOpen() const {
237  return percentTimeOpen;
238  }
239 
244  void setPercentTimeOpen(double percentTimeOpen) {
245  this->percentTimeOpen = percentTimeOpen;
246  }
247 
252  double getViewFactor() const {
253  return viewFactor;
254  }
255 
260  void setViewFactor(double viewFactor) {
261  this->viewFactor = viewFactor;
262  }
263 
269  return openingShape;
270  }
271 
278  void setOpeningShape(OpeningShape const openingShape, const double length, const double width) {
279  if (openingShape != OpeningShape::RECTANGULAR) {
280  throw std::runtime_error("Call the other set opening shape function to set openingShape to Circular");
281  }
282  this->openingShape = openingShape;
283  this->length = length;
284  this->width = width;
285  diameter = 0;
286  }
287 
293  void setOpeningShape(OpeningShape const openingShape, const double diameter) {
294  if (openingShape != OpeningShape::CIRCULAR) {
295  throw std::runtime_error("Call the other set opening shape function to set openingShape to Rectangular");
296  }
297  this->openingShape = openingShape;
298  this->diameter = diameter;
299  length = 0;
300  width = 0;
301  }
302 
307  double getHeatLoss();
308 
309 private:
310  double emissivity = 0.95;
311  double diameter = 0;
312  double length = 0, width = 0;
313  double thickness;
314  double ratio;
315  double ambientTemperature;
316  double insideTemperature;
317  double percentTimeOpen;
318  double viewFactor;
319  OpeningShape openingShape;
320 
321  double heatLoss = 0;
322 
323  const std::array<const std::function< double ( const double thicknessRatio ) >, 8> viewFactorEquations = {
324  {
325  [](const double tr) {
326  return (1.10000000001829 + 92.8571428570049 * tr - 57.5892857139671 * std::pow(tr, 2) +
327  15.6249999998005 * std::pow(tr, 3)) / 100;
328  }, // case 1
329  [](const double tr) {
330  return (29.4999999989821 + 26.8416666684161 * tr - 4.35416666785322 * std::pow(tr, 2) -
331  8.33333330461522E-02 * std::pow(tr, 3) + 0.104166666655532 * std::pow(tr, 4) -
332  8.33333333686747E-03 * std::pow(tr, 5)) / 100;
333  }, // case 2
334  [](const double tr) {
335  return (3.50000000001719 + 89.5833333332039 * tr - 49.9999999997023 * std::pow(tr, 2) +
336  10.4166666664804 * std::pow(tr, 3)) / 100;
337  }, // case 3
338  [](const double tr) {
339  return (23.9999999965639 + 39.3916666718743 * tr - 11.6041666697487 * std::pow(tr, 2) +
340  1.85416666706894 * std::pow(tr, 3) - 0.145833333217932 * std::pow(tr, 4) +
341  4.16666663902102E-03 * std::pow(tr, 5)) / 100;
342  }, // case 4
343  [](const double tr) {
344  return (2.70000000002409 + 112.678571428391 * tr - 70.9821428567315 * std::pow(tr, 2) +
345  15.6249999997447 * std::pow(tr, 3)) / 100;
346  }, // case 5
347  [](const double tr) {
348  return (35.4999999992976 + 29.4583333347815 * tr - 4.52083333446976 * std::pow(tr, 2) -
349  0.687499999606652 * std::pow(tr, 3) + 0.270833333273064 * std::pow(tr, 4) -
350  2.08333333303721E-02 * std::pow(tr, 5)) / 100;
351  }, // case 6
352  [](const double tr) {
353  return (13.0000000000278 + 123.74999999979 * tr - 99.9999999995182 * std::pow(tr, 2) +
354  31.249999999699 * std::pow(tr, 3)) / 100;
355  }, // case 7
356  [](const double tr) {
357  return (26.9999999903567 + 64.5666666806646 * tr - 29.9166666745008 * std::pow(tr, 2) +
358  7.14583333396145 * std::pow(tr, 3) - 0.833333332874441 * std::pow(tr, 4) +
359  3.74999999085373E-02 * std::pow(tr, 5)) / 100;
360  }, // case 8
361  }
362  };
363 };
364 #endif //AMO_SUITE_OPENINGLOSSES_H
OpeningShape getOpeningShape() const
void setRatio(double ratio)
double getDiameter() const
void setInsideTemperature(double insideTemperature)
void setAmbientTemperature(double ambientTemperature)
double getInsideTemperature() const
double getThickness() const
void setWidth(double width)
double getHeatLoss()
void setDiameter(double diameter)
void setOpeningShape(OpeningShape const openingShape, const double length, const double width)
double getPercentTimeOpen() const
double getRatio() const
void setOpeningShape(OpeningShape const openingShape, const double diameter)
void setViewFactor(double viewFactor)
double getEmissivity() const
void setThickness(double thickness)
void setEmissivity(double emissivity)
OpeningLosses(double emissivity, double length, double width, double thickness, double ratio, double ambientTemperature, double insideTemperature, double percentTimeOpen, double viewFactor)
Definition: OpeningLosses.h:65
double getWidth() const
double getAmbientTemperature() const
void setPercentTimeOpen(double percentTimeOpen)
double calculateViewFactor(double thickness, double diameter)
OpeningLosses(double emissivity, double diameter, double thickness, double ratio, double ambientTemperature, double insideTemperature, double percentTimeOpen, double viewFactor)
Definition: OpeningLosses.h:96
double getViewFactor() const