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