@@ -1111,6 +1111,18 @@ def __init__(self, model: Model):
1111
1111
ErrMessage = "assume default peaking boiler efficiency (85%)" ,
1112
1112
ToolTipText = "Peaking boiler efficiency"
1113
1113
)
1114
+ self ._default_peaking_boiler_cost_USD_per_kw = 65
1115
+ self .peaking_boiler_cost_per_kw = self .ParameterDict [self .peaking_boiler_cost_per_kw .Name ] = floatParameter (
1116
+ "Peaking Boiler Cost per KW" ,
1117
+ DefaultValue = self ._default_peaking_boiler_cost_USD_per_kw ,
1118
+ Min = 0 ,
1119
+ Max = 1000 ,
1120
+ UnitType = Units .ENERGYCOST ,
1121
+ PreferredUnits = EnergyCostUnit .DOLLARSPERKW ,
1122
+ CurrentUnits = EnergyCostUnit .DOLLARSPERKW ,
1123
+ Required = False ,
1124
+ ToolTipText = "Peaking boiler cost per KW of maximum peaking boiler demand"
1125
+ )
1114
1126
self .dhpipingcostrate = self .ParameterDict [self .dhpipingcostrate .Name ] = floatParameter (
1115
1127
"District Heating Piping Cost Rate" ,
1116
1128
DefaultValue = 1200 ,
@@ -1689,13 +1701,18 @@ def __init__(self, model: Model):
1689
1701
PreferredUnits = CurrencyFrequencyUnit .MDOLLARSPERYEAR ,
1690
1702
CurrentUnits = CurrencyFrequencyUnit .MDOLLARSPERYEAR
1691
1703
)
1704
+
1692
1705
# district heating
1693
1706
self .peakingboilercost = self .OutputParameterDict [self .peakingboilercost .Name ] = OutputParameter (
1694
1707
Name = "Peaking boiler cost" ,
1695
1708
UnitType = Units .CURRENCY ,
1696
1709
PreferredUnits = CurrencyUnit .MDOLLARS ,
1697
- CurrentUnits = CurrencyUnit .MDOLLARS
1710
+ CurrentUnits = CurrencyUnit .MDOLLARS ,
1711
+ ToolTipText = f'Default cost: ${ self ._default_peaking_boiler_cost_USD_per_kw } /KW '
1712
+ f'of maximum peaking boiler demand. '
1713
+ f'Provide { self .peaking_boiler_cost_per_kw .Name } override the default.'
1698
1714
)
1715
+
1699
1716
self .dhdistrictcost = self .OutputParameterDict [self .dhdistrictcost .Name ] = OutputParameter (
1700
1717
Name = "District Heating System Cost" ,
1701
1718
UnitType = Units .CURRENCY ,
@@ -2386,8 +2403,13 @@ def Calculate(self, model: Model) -> None:
2386
2403
self .Cplant .value = 1.12 * 1.15 * self .ccplantadjfactor .value * 250E-6 * np .max (
2387
2404
model .surfaceplant .HeatExtracted .value ) * 1000.
2388
2405
2389
- self .peakingboilercost .value = 65 * model .surfaceplant .max_peaking_boiler_demand .value / 1000 # add 65$/KW for peaking boiler
2390
- self .Cplant .value += self .peakingboilercost .value # add peaking boiler cost to surface plant cost
2406
+ # add 65$/KW for peaking boiler
2407
+ self .peakingboilercost .value = (self .peaking_boiler_cost_per_kw .quantity ()
2408
+ .to ('USD / kilowatt' ).magnitude
2409
+ * model .surfaceplant .max_peaking_boiler_demand .value / 1000 )
2410
+
2411
+ # add peaking boiler cost to surface plant cost
2412
+ self .Cplant .value += self .peakingboilercost .value
2391
2413
2392
2414
2393
2415
else : # all other options have power plant
0 commit comments