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
InsulatedPipeReduction.h
1#ifndef TOOLS_SUITE_INSULATEDPIPECALCULATOR_H
2#define TOOLS_SUITE_INSULATEDPIPECALCULATOR_H
3
4#include <vector>
5
6#include "InsulationFluidProperties.h"
7
9 public:
20 InsulatedPipeInput(int operatingHours, double pipeLength, double pipeDiameter, double pipeThickness,
21 double pipeTemperature, double ambientTemperature, double windVelocity, double systemEfficiency,
22 double insulationThickness, double pipeEmissivity, double jacketEmissivity,
23 std::vector<double> pipeMaterialCoefficients, std::vector<double> insulationMaterialCoefficients)
24 : _operatingHours(operatingHours), _pipeLength(pipeLength), _pipeDiameter(pipeDiameter),
25 _pipeThickness(pipeThickness), _pipeTemperature(pipeTemperature), _ambientTemperature(ambientTemperature),
26 _windVelocity(windVelocity), _systemEfficiency(systemEfficiency), _insulationThickness(insulationThickness),
27 _pipeEmissivity(pipeEmissivity), _jacketEmissivity(jacketEmissivity),
28 _pipeMaterialCoefficients(pipeMaterialCoefficients),
29 _insulationMaterialCoefficients(insulationMaterialCoefficients) {}
30
31 int getOperatingHours() { return this->_operatingHours; }
32
33 double getPipeLength() { return this->_pipeLength; }
34
35 double getPipeDiameter() { return this->_pipeDiameter; }
36
37 double getPipeThickness() { return this->_pipeThickness; }
38
39 double getPipeTemperature() { return this->_pipeTemperature; }
40
41 double getAmbientTemperature() { return this->_ambientTemperature; }
42
43 double getWindVelocity() { return this->_windVelocity; }
44
45 double getSystemEfficiency() { return this->_systemEfficiency; }
46
47 double getInsulationThickness() { return this->_insulationThickness; }
48
49 double getPipeEmissivity() { return this->_pipeEmissivity; }
50
51 double getJacketEmissivity() { return this->_jacketEmissivity; }
52
53 std::vector<double> getPipeMaterialCoefficients() { return this->_pipeMaterialCoefficients; }
54
55 std::vector<double> getInsulationMaterialCoefficients() { return this->_insulationMaterialCoefficients; }
56
57 private:
58 InsulationFluidProperties _airProperties;
59 int _operatingHours;
60 double _pipeLength;
61 double _pipeDiameter;
62 double _pipeThickness;
63 double _pipeTemperature;
64 double _ambientTemperature;
65 double _windVelocity;
66 double _systemEfficiency;
67 double _insulationThickness;
68 double _pipeEmissivity;
69 double _jacketEmissivity;
70 std::vector<double> _pipeMaterialCoefficients;
71 std::vector<double> _insulationMaterialCoefficients;
72};
73
75 public:
77 InsulatedPipeOutput(double heatLength, double annualHeatLoss)
78 : _heatLength(heatLength), _annualHeatLoss(annualHeatLoss) {}
79
80 double getHeatLength() { return this->_heatLength; }
81
82 double getAnnualHeatLoss() { return this->_annualHeatLoss; }
83
84 void setHeatLength(double heatLength) { this->_heatLength = heatLength; }
85
86 void setAnnualHeatLoss(double annualHeatLoss) { this->_annualHeatLoss = annualHeatLoss; }
87
88 private:
89 double _heatLength;
90 double _annualHeatLoss;
91};
92
94 public:
96 InsulatedPipeReduction(InsulatedPipeInput insulatedPipeInput) : _insulatedPipeInput(insulatedPipeInput) {}
97
98 InsulatedPipeOutput calculate();
99 InsulationFluidProperties calculateAirProperties(double temp);
100 InsulatedPipeOutput calculateNoInsulation(InsulatedPipeInput input);
101 InsulatedPipeOutput calculateInsulation(InsulatedPipeInput input);
102 double insulationRecursive(InsulatedPipeInput input, double innerPipeDiameter, double insulationOuterDiameter,
103 double surfaceTemperature, double interfaceTemperature, double heatLength, int i);
104 double noInsulationRecursive(InsulatedPipeInput input, double innerPipeDiameter, double insulationOuterDiameter,
105 double surfaceTemperature, double interfaceTemperature, double heatLength, int i);
106 double calculateAirProperty(int property, double temp);
107 double lookupAirPropertyCoefficient(int property, int n);
108 const double* lookupAirProperty(int property);
109
110 static double calculateThermalResistance(double diameterA, double diameterB, double diameterC,
111 double thermalConductivity);
112 static double calculateReynoldsNumber(double diameter, double windVelocity, double kinematicViscosity);
113 static double calculateRayleighNumber(double expCoefficient, double surfaceTemperature, double ambientTemperature,
114 double diameter, double kinematicViscosity, double alpha);
115 static double calculateNusseltNumber(double a, double b);
116 static double calculateNusseltForcedConvection(double a, double b);
117 static double calculateNusseltFreeConvection(double a, double b);
118 static double calculateRadiativeHeatTransferCoefficient(double emissivity, double surfaceTemperature,
119 double ambientTemperature);
120 static double calculateConvectiveHeatTransferCoefficient(double nusselt, double airConductivity, double diameter);
121
122 private:
123 void validateInput(InsulatedPipeInput input);
124 double propertyFit(std::vector<double> coefficients, double temp);
125
126 InsulatedPipeInput _insulatedPipeInput;
127 const double _airPropertiesArray[6][5] = {
128 {3.03724e-13, -1.1132e-9, 1.44382e-6, -0.000565339, 1.07223839}, // specificHeat
129 {-1.586e-10, 5.115e-7, -7.246e-4, 7.978e-1, -1.850}, // viscosity
130 {2.25852e-11, -8.32093e-8, 0.000172673, 0.01063728, -0.76108359}, // kinViscosity
131 {3.17176E-11, -5.90229E-08, 4.58531E-06, 0.088867888, 0.520072239}, // thermCond
132 {1.35569E-10, -3.80588E-07, 0.000446483, -0.035935528, 2.254489164}, // Alpha
133 {-2.08438E-13, -1.72787E-11, 8.00624E-07, -0.000694606, 0.845781218} // Prandtl
134 };
135};
136
137#endif
InsulatedPipeInput(int operatingHours, double pipeLength, double pipeDiameter, double pipeThickness, double pipeTemperature, double ambientTemperature, double windVelocity, double systemEfficiency, double insulationThickness, double pipeEmissivity, double jacketEmissivity, std::vector< double > pipeMaterialCoefficients, std::vector< double > insulationMaterialCoefficients)