@@ -1626,11 +1626,18 @@ def exclusion_weighted_mean(self, flat_arr):
1626
1626
Mean of flat_arr masked by the binary exclusions then weighted by
1627
1627
the non-zero exclusions.
1628
1628
"""
1629
- x = flat_arr [self ._gen_gids [self .bool_mask ]].astype ("float32" )
1629
+
1630
+ if len (flat_arr ) > len (self .gen_gid_set ):
1631
+ incl_indices = self ._gen_gids [self .bool_mask ]
1632
+ else :
1633
+ incl_indices = pd .Series (
1634
+ self ._gen_gids [self .bool_mask ]
1635
+ ).map ({v : i for i , v in enumerate (self .gen_gid_set )}).values
1636
+
1637
+ x = flat_arr [incl_indices ].astype ("float32" )
1630
1638
incl = self .include_mask_flat [self .bool_mask ]
1631
1639
x *= incl
1632
1640
mean = x .sum () / incl .sum ()
1633
-
1634
1641
return mean
1635
1642
1636
1643
@property
@@ -1724,7 +1731,9 @@ def res_data(self):
1724
1731
1725
1732
if self ._res_data is None :
1726
1733
if self ._res_class_dset in self .gen .datasets :
1727
- self ._res_data = self .gen [self ._res_class_dset ]
1734
+ self ._res_data = self .gen [
1735
+ self ._res_class_dset , self .gen_gid_set
1736
+ ]
1728
1737
1729
1738
return self ._res_data
1730
1739
@@ -1744,7 +1753,7 @@ def gen_data(self):
1744
1753
1745
1754
if self ._gen_data is None :
1746
1755
if self ._cf_dset in self .gen .datasets :
1747
- self ._gen_data = self .gen [self ._cf_dset ]
1756
+ self ._gen_data = self .gen [self ._cf_dset , self . gen_gid_set ]
1748
1757
1749
1758
return self ._gen_data
1750
1759
@@ -1768,7 +1777,7 @@ def gen_ac_data(self):
1768
1777
1769
1778
ac_cf_dset = _infer_cf_dset_ac (self ._cf_dset )
1770
1779
if ac_cf_dset in self .gen .datasets :
1771
- return self .gen [ac_cf_dset ]
1780
+ return self .gen [ac_cf_dset , self . gen_gid_set ]
1772
1781
1773
1782
return None
1774
1783
@@ -1788,7 +1797,7 @@ def lcoe_data(self):
1788
1797
1789
1798
if self ._lcoe_data is None :
1790
1799
if self ._lcoe_dset in self .gen .datasets :
1791
- self ._lcoe_data = self .gen [self ._lcoe_dset ]
1800
+ self ._lcoe_data = self .gen [self ._lcoe_dset , self . gen_gid_set ]
1792
1801
1793
1802
return self ._lcoe_data
1794
1803
@@ -2165,7 +2174,7 @@ def h5_dsets_data(self):
2165
2174
_h5_dsets_data = {}
2166
2175
for dset in self ._h5_dsets :
2167
2176
if dset in self .gen .datasets :
2168
- _h5_dsets_data [dset ] = self .gen [dset ]
2177
+ _h5_dsets_data [dset ] = self .gen [dset , self . gen_gid_set ]
2169
2178
2170
2179
elif isinstance (self ._h5_dsets , dict ):
2171
2180
_h5_dsets_data = self ._h5_dsets
@@ -2189,7 +2198,7 @@ def regional_multiplier(self):
2189
2198
if "capital_cost_multiplier" not in self .gen .datasets :
2190
2199
return 1
2191
2200
2192
- multipliers = self .gen ["capital_cost_multiplier" ]
2201
+ multipliers = self .gen ["capital_cost_multiplier" , self . gen_gid_set ]
2193
2202
return self .exclusion_weighted_mean (multipliers )
2194
2203
2195
2204
@property
@@ -2198,7 +2207,9 @@ def fixed_charge_rate(self):
2198
2207
if "fixed_charge_rate" not in self .gen .datasets :
2199
2208
return 0
2200
2209
2201
- return self .exclusion_weighted_mean (self .gen ["fixed_charge_rate" ])
2210
+ return self .exclusion_weighted_mean (
2211
+ self .gen ["fixed_charge_rate" , self .gen_gid_set ]
2212
+ )
2202
2213
2203
2214
@property
2204
2215
def _sam_system_capacity_kw (self ):
@@ -2209,7 +2220,7 @@ def _sam_system_capacity_kw(self):
2209
2220
self ._ssc = 0
2210
2221
if "system_capacity" in self .gen .datasets :
2211
2222
self ._ssc = self .exclusion_weighted_mean (
2212
- self .gen ["system_capacity" ]
2223
+ self .gen ["system_capacity" , self . gen_gid_set ]
2213
2224
)
2214
2225
2215
2226
return self ._ssc
@@ -2227,7 +2238,7 @@ def _sam_lcoe_kwargs(self):
2227
2238
for dset in self ._slk :
2228
2239
if dset in self .gen .datasets :
2229
2240
self ._slk [dset ] = self .exclusion_weighted_mean (
2230
- self .gen [dset ]
2241
+ self .gen [dset , self . gen_gid_set ]
2231
2242
)
2232
2243
2233
2244
return self ._slk
@@ -2240,7 +2251,9 @@ def _compute_cost_per_ac_mw(self, dset):
2240
2251
if dset not in self .gen .datasets :
2241
2252
return None
2242
2253
2243
- sam_cost = self .exclusion_weighted_mean (self .gen [dset ])
2254
+ sam_cost = self .exclusion_weighted_mean (
2255
+ self .gen [dset , self .gen_gid_set ]
2256
+ )
2244
2257
sam_cost_per_mw = sam_cost / (self ._sam_system_capacity_kw / 1000 )
2245
2258
sc_point_cost = sam_cost_per_mw * self .capacity
2246
2259
0 commit comments