30 CostInfoOutput(
double annualOperationSavings,
double totalInstalledCostsPayback,
double simplePayback,
31 double fuelCosts,
double thermalCredit,
double incrementalOandMDollarsKwH,
32 double totalOperatingCostsToGenerate)
33 : annualOperationSavings(annualOperationSavings), totalInstalledCostsPayback(totalInstalledCostsPayback),
34 simplePayback(simplePayback), fuelCosts(fuelCosts), thermalCredit(thermalCredit),
35 incrementalOandMDollarsKwH(incrementalOandMDollarsKwH),
36 totalOperatingCostsToGenerate(totalOperatingCostsToGenerate) {};
38 double annualOperationSavings;
39 double totalInstalledCostsPayback;
43 double incrementalOandMDollarsKwH;
44 double totalOperatingCostsToGenerate;
63 enum class Option { PercentAvgkWhElectricCostAvoided, StandbyRate };
65 CHP(
double annualOperatingHours,
double annualElectricityConsumption,
double annualThermalDemand,
66 double boilerThermalFuelCosts,
double avgElectricityCosts,
Option calculationOption,
67 double boilerThermalFuelCostsCHPcase,
double CHPfuelCosts,
double percentAvgkWhElectricCostAvoidedOrStandbyRate,
68 double displacedThermalEfficiency,
double chpAvailability,
double thermalUtilization);
70 CostInfoOutput getCostInfo()
const {
return costInfo; }
180 void setAnnualOperatingHours(
double annualOperatingHours);
181 void setAnnualElectricityConsumption(
double annualElectricityConsumption);
182 void setAnnualThermalDemand(
double annualThermalDemand);
183 void setBoilerThermalFuelCosts(
double boilerThermalFuelCosts);
184 void setChpFuelCosts(
double chpFuelCosts);
185 void setAvgElectricityCosts(
double avgElectricityCosts);
186 void setCalculationOption(
Option calculationOption,
double percentAvgkWhElectricCostAvoidedOrStandbyRate);
187 void setBoilerThermalFuelCostsCHPcase(
double boilerThermalFuelCostsCHPcase);
188 void setPercentAvgkWhElectricCostAvoided(
double percentAvgkWhElectricCostAvoided);
189 void setStandbyRate(
double standbyRate);
190 void setDisplacedThermalEfficiency(
double displacedThermalEfficiency);
191 void setChpElectricEfficiency(
double chpElectricEfficiency);
192 void setChpThermalOutput(
double chpThermalOutput);
193 void setChpAvailability(
double chpAvailability);
194 void setThermalUtilization(
double thermalUtilization);
195 void setAvgPowerDemand(
double avgPowerDemand);
196 void setAvgThermalDemand(
double avgThermalDemand);
197 void setNetCHPpower(
double netCHPpower);
202 std::map<double, std::size_t>::const_iterator findNearest(
double val, std::size_t index)
const;
204 double annualOperatingHours, annualElectricityConsumption, annualThermalDemand;
205 double boilerThermalFuelCosts, chpFuelCosts, avgElectricityCosts;
207 double boilerThermalFuelCostsCHPcase, percentAvgkWhElectricCostAvoided = 0, standbyRate = 0;
208 double displacedThermalEfficiency, chpElectricEfficiency, chpThermalOutput, chpAvailability, thermalUtilization;
210 double avgPowerDemand, avgThermalDemand, netCHPpower;
212 CostInfoOutput costInfo;
214 const std::array<std::array<double, 8>, 3> chpSystemByIndex = {{
215 {{50, 600, 1000, 3300, 5000, 10000, 20000, 45000}},
219 {{0.024, 0.021, 0.019, 0.0126, 0.0123, 0.012, 0.0093, 0.0092}},
220 {{2900, 2737, 2335, 1917, 2080, 1976, 1518, 1248}}
223 const std::array<std::map<double, std::size_t>, 6> chpSystemByKey = {{
224 {{50, 0}, {600, 1}, {1000, 2}, {3300, 3}, {5000, 4}, {10000, 5}, {20000, 6}, {45000, 7}},
225 {{27.0, 0}, {34.5, 1}, {36.8, 2}, {40.4, 3}, {28.9, 4}, {27.3, 5}, {33.2, 6}, {36.0, 7}},
226 {{6700, 0}, {4392, 1}, {3854, 2}, {3233, 3}, {4893, 4}, {5262, 5}, {3821, 6}, {3141, 7}},
227 {{0.34, 0}, {2.64, 1}, {3.85, 2}, {10.67, 3}, {24.47, 4}, {52.62, 5}, {76.42, 6}, {141.33, 7}},
237 {{2900, 0}, {2737, 1}, {2335, 2}, {1917, 3}, {2080, 4}, {1976, 5}, {1518, 6}, {1248, 7}}