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