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
WaterAssessment.h
1
13#ifndef TOOLS_SUITE_WATERASSESSMENT_H
14#define TOOLS_SUITE_WATERASSESSMENT_H
15
17 public:
19 ProcessWaterUseOutput(double recirculatedWater, double incomingWater, double wasteDischargedAndRecycledOther)
20 : recirculatedWater(recirculatedWater), incomingWater(incomingWater),
21 wasteDischargedAndRecycledOther(wasteDischargedAndRecycledOther) {}
22
23 ProcessWaterUseOutput() = default;
24 double recirculatedWater = 0, incomingWater = 0, wasteDischargedAndRecycledOther = 0;
25 };
26
28 CoolingTowerLossOutput(double grossWaterUse, double evaporationLoss, double cycleOfConcentration,
29 double makeupWater, double blowdownLoss)
30 : grossWaterUse(grossWaterUse), evaporationLoss(evaporationLoss),
31 cycleOfConcentration(cycleOfConcentration), makeupWater(makeupWater), blowdownLoss(blowdownLoss) {}
32
33 CoolingTowerLossOutput() = default;
34 double grossWaterUse = 0, evaporationLoss = 0, cycleOfConcentration = 0, makeupWater = 0, blowdownLoss = 0;
35 };
36
38 BoilerWaterLossOutput(double cycleOfConcentration, double grossWaterUse, double makeupWater, double steamLoss,
39 double blowdownLoss, double condensateReturn, double rateOfRecirculation)
40 : cycleOfConcentration(cycleOfConcentration), grossWaterUse(grossWaterUse), makeupWater(makeupWater),
41 steamLoss(steamLoss), blowdownLoss(blowdownLoss), condensateReturn(condensateReturn),
42 rateOfRecirculation(rateOfRecirculation) {}
43
44 BoilerWaterLossOutput() = default;
45 double cycleOfConcentration = 0, grossWaterUse = 0, makeupWater = 0, steamLoss = 0, blowdownLoss = 0,
46 condensateReturn = 0, rateOfRecirculation = 0;
47 };
48
52 WaterAssessment() = default;
53
66 ProcessWaterUseOutput calculateProcessWaterUse(double waterRequired, double waterConsumed, double waterLoss,
67 double fractionGrossWaterRecirculated) {
68 const double recirculatedWater = waterRequired * fractionGrossWaterRecirculated;
69 const double incomingWater = waterRequired - recirculatedWater;
70 const double wasteDischargedAndRecycledOther = incomingWater - waterConsumed - waterLoss;
71
72 return {recirculatedWater, incomingWater, wasteDischargedAndRecycledOther};
73 }
74
92 CoolingTowerLossOutput calculateCoolingTowerLoss(double hoursPerYear, double tonnage, double loadFactor,
93 double evaporationRateDegree, double temperatureDrop,
94 double makeupConductivity, double blowdownConductivity) {
95 const double grossWaterUse = 3 * tonnage * loadFactor * 60 * hoursPerYear;
96 const double evaporationLoss = (evaporationRateDegree / 10) * temperatureDrop * grossWaterUse;
97 const double cycleOfConcentration = blowdownConductivity / makeupConductivity;
98 const double makeupWater = evaporationLoss / (1 - (1 / cycleOfConcentration));
99 const double blowdownLoss = makeupWater - evaporationLoss;
100
101 return {grossWaterUse, evaporationLoss, cycleOfConcentration, makeupWater, blowdownLoss};
102 }
103
123 BoilerWaterLossOutput calculateBoilerWaterLosses(double hoursPerYear, double power, double loadFactor,
124 double steamPerPower, double feedWaterConductivity,
125 double makeupConductivity, double blowdownConductivity) {
126 const double cycleOfConcentration = blowdownConductivity / feedWaterConductivity;
127 const double grossWaterUse =
128 hoursPerYear * power * loadFactor * 0.002 * 60 * steamPerPower / (1 - (1 / cycleOfConcentration));
129 const double makeupWater = (feedWaterConductivity / makeupConductivity) * grossWaterUse;
130 const double blowdownLoss = (1 / cycleOfConcentration) * grossWaterUse;
131 const double steamLoss = makeupWater - blowdownLoss;
132 const double condensateReturn = (1 - (feedWaterConductivity / makeupConductivity)) * grossWaterUse;
133 const double rateOfRecirculation = makeupWater / grossWaterUse;
134
135 return {cycleOfConcentration, grossWaterUse, makeupWater, steamLoss,
136 blowdownLoss, condensateReturn, rateOfRecirculation};
137 }
138
147 double calculateKitchenRestroomGrossWaterUse(double employeeCount, double workdaysPerYear,
148 double dailyUsePerEmployee) {
149 return employeeCount * workdaysPerYear * dailyUsePerEmployee;
150 }
151
159 double calculateLandscapingGrossWaterUse(double areaIrrigated, double yearlyInchesIrrigated) {
160 return areaIrrigated * yearlyInchesIrrigated;
161 }
162
172 double calculateHeatEnergyInDischarge(double incomingTemp, double outgoingTemp, double heatingEfficiency,
173 double wasteWaterDischarge) {
174 return wasteWaterDischarge * (outgoingTemp - incomingTemp) * 1 * 8.3454 * heatingEfficiency / 1000000;
175 }
176
187 double calculateAddedMotorEnergyUse(double numberUnits, double hoursPerYear, double ratedPower, double loadFactor,
188 double systemEfficiency) {
189 return ratedPower * numberUnits * loadFactor * hoursPerYear / systemEfficiency;
190 }
191};
192
193#endif // TOOLS_SUITE_WATERASSESSMENT_H
double calculateAddedMotorEnergyUse(double numberUnits, double hoursPerYear, double ratedPower, double loadFactor, double systemEfficiency)
ProcessWaterUseOutput calculateProcessWaterUse(double waterRequired, double waterConsumed, double waterLoss, double fractionGrossWaterRecirculated)
CoolingTowerLossOutput calculateCoolingTowerLoss(double hoursPerYear, double tonnage, double loadFactor, double evaporationRateDegree, double temperatureDrop, double makeupConductivity, double blowdownConductivity)
double calculateLandscapingGrossWaterUse(double areaIrrigated, double yearlyInchesIrrigated)
double calculateHeatEnergyInDischarge(double incomingTemp, double outgoingTemp, double heatingEfficiency, double wasteWaterDischarge)
double calculateKitchenRestroomGrossWaterUse(double employeeCount, double workdaysPerYear, double dailyUsePerEmployee)
BoilerWaterLossOutput calculateBoilerWaterLosses(double hoursPerYear, double power, double loadFactor, double steamPerPower, double feedWaterConductivity, double makeupConductivity, double blowdownConductivity)
WaterAssessment()=default