diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index dce9669c..dc8b3048 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,4 +6,4 @@ For questions or general discussion, please open a [discussion](https://github.c To contribute code, fork the repository, make your changes, and submit a pull request. Please review our [Developer Guide](https://reeds-model.github.io/ReEDS/developer_best_practices.html) before getting started. -**Note:** if you're considering making a change that might lead to meaningful differences in model capability, workflow, or outputs, we recommend initiating a [discussion](https://github.com/ReEDS-Model/ReEDS/discussions). \ No newline at end of file +**Note:** if you're considering making a change that might lead to meaningful differences in model capability, workflow, or outputs, we recommend initiating a [discussion](https://github.com/ReEDS-Model/ReEDS/discussions). diff --git a/cases_test.csv b/cases_test.csv index fea9f712..e66fe17b 100644 --- a/cases_test.csv +++ b/cases_test.csv @@ -19,6 +19,7 @@ GSw_RetirePenalty,,,,,0,,,,,,,,,,,,,,,,,,,,,,,,, GSw_FakeData,,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,, GSw_PRM_CapCredit,,,,,,,,1,1,,,,,,,,1,,,,,,,,,,,,, GSw_PRM_scenario,,,,,,,,,static,,,,,,,,static,,,,,,,,,,,,, +GSw_PRM_UpdateMethod,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,, GSw_HourlyType,,,,,,,,,,wek,year,,,,,,,,,,,,,,,,,,, GSw_InterDayLinkage,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,, GSw_HourlyWeatherYears,,,,,,,2012_2013,,,,,,2020,2007_2008_2009_2010_2011_2012_2013,,,,,,,,2012_2013,,,,2018,,,, diff --git a/docs/source/model_documentation.md b/docs/source/model_documentation.md index dad2c8d6..321c76b6 100644 --- a/docs/source/model_documentation.md +++ b/docs/source/model_documentation.md @@ -2460,11 +2460,12 @@ Adapted from {cite}`maiIncorporatingStressfulGrid2024`. The calculation of capacity credit for VRE is described in the [VRE capacity credit](#vre-capacity-credit) section; the method for storage is described in the [storage capacity credit](#storage-capacity-credit) section. -Thermal generators are given a capacity credit of 100% in ReEDS; -technology-specific [outage rates](#outage-rates) for thermal generators are not considered in this method -and are instead assumed to be factored into the [planning reserve margin](#planning-reserve-margins). +#### Thermal generation capacity credit + +For thermal generators (i.e. combined cycle, combustion turbine, nuclear (conventional and SMR), and steam (coal)), ReEDS estimates a seasonal capacity credit for each region/technology combination based on temperature-dependent forced outage rates (described in detail in [outage rates](#outage-rates)). To calculate each technology's contribution to the seasonal reserve margin, its nameplate capacity is multiplied by $(1 - \bar{FOR})$, where $\bar{FOR}$ is the mean forced outage rate during the top 20 net load hours cross all modeled [weather years](#weather-years) for each season. + #### VRE capacity credit diff --git a/inputs/sets/i_subtech.csv b/inputs/sets/i_subtech.csv index fabf8237..fcef7b39 100755 --- a/inputs/sets/i_subtech.csv +++ b/inputs/sets/i_subtech.csv @@ -9,6 +9,7 @@ COMBINED_CYCLE COMBUSTION_TURBINE FUEL_CELL CONV +THERMAL CCS CCS_MOD CCS_MAX diff --git a/inputs/tech-subset-table.csv b/inputs/tech-subset-table.csv index 2c5507ec..9acd6e52 100644 --- a/inputs/tech-subset-table.csv +++ b/inputs/tech-subset-table.csv @@ -1,74 +1,74 @@ -,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,FUEL_CELL,CONV,CCS,CCS_MOD,CCS_MAX,CCSFLEX,CCSFLEX_BYP,CCSFLEX_STO,CCSFLEX_DAC,BECCS,RE,VRE,RSC,WIND,ONSWIND,OFSWIND,UPV,distpv,PV,PVB,PVB1,PVB2,PVB3,CSP,CSP_STORAGE,CSP1,CSP2,CSP3,CSP4,STORAGE,STORAGE_HYBRID,STORAGE_STANDALONE,STORAGE_INTERDAY,THERMAL_STORAGE,BATTERY,DEMAND_FLEX,EVMC,EVMC_STORAGE,EVMC_SHAPE,COFIRE,HYDRO,HYDRO_D,HYDRO_ND,PSH,GEO,GEO_HYDRO,GEO_EGS,GEO_EGS_ALLKM,GEO_EGS_NF,GEO_BASE,GEO_EXTRA,CANADA,VRE_NO_CSP,VRE_UTILITY,VRE_DISTRIBUTED,NUCLEAR,OGS,CONSUME,H2,SMR,DAC,LFILL,H2_COMBUSTION,H2_CC,H2_CT,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED -can-imports,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,, -coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -coal-CCS_max,,YES,YES,,,,,,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -Coal-IGCC,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -coal-new,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -CoalOldScr,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -CoalOldUns,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -CofireNew,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -CofireOld,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, -Gas-CC,,,,YES,YES,,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC-CCS-F1,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC-CCS-F2,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CT,,,,YES,,,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -Gas-CT_aero,,,,YES,,,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -ng-fuel-cell,,,,YES,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, -o-g-s,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,YES,YES,, -Nuclear,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,, -Nuclear-SMR,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,, -H2-CT,,,,,,,,,YES,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,, -H2-CC,,,,,,,,YES,,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,, -biopower,YES,,,,,,,,,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, -geothermal,,,,,,,,,,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,, -beccs_mod,YES,,,,,,,,,,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, -beccs_max,YES,,,,,,,,,,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, -Hydro,,,,,,,,,,,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -lfill-gas,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,, -battery_li,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -dr_shed_1*dr_shed_2,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -evmc_storage_1*evmc_storage_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,, -evmc_shape_1*evmc_shape_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,, -pumped-hydro,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,YES,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,, -pumped-hydro-flex,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,, -distpv,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES, -upv_1*upv_10,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, -pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, -pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, -pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, -wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, -wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, -csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydD,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydND,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, -hydSD,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydSND,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, -hydUD,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydUND,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, -hydNPD,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydNPND,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, -hydED,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, -hydEND,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, -electrolyzer,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,, -smr,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,,,,,,, -smr_ccs,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,,,,,,, -dac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,,,,,,,,, -dac_gas,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,,,,,,,,, -egs_allkm_1*egs_allkm_10,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,YES,,,YES,,,,,,,,,,,,,,,,,,,, -geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,, -egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,, +,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,FUEL_CELL,CONV,THERMAL,CCS,CCS_MOD,CCS_MAX,CCSFLEX,CCSFLEX_BYP,CCSFLEX_STO,CCSFLEX_DAC,BECCS,RE,VRE,RSC,WIND,ONSWIND,OFSWIND,UPV,distpv,PV,PVB,PVB1,PVB2,PVB3,CSP,CSP_STORAGE,CSP1,CSP2,CSP3,CSP4,STORAGE,STORAGE_HYBRID,STORAGE_STANDALONE,STORAGE_INTERDAY,THERMAL_STORAGE,BATTERY,DEMAND_FLEX,EVMC,EVMC_STORAGE,EVMC_SHAPE,COFIRE,HYDRO,HYDRO_D,HYDRO_ND,PSH,GEO,GEO_HYDRO,GEO_EGS,GEO_EGS_ALLKM,GEO_EGS_NF,GEO_BASE,GEO_EXTRA,CANADA,VRE_NO_CSP,VRE_UTILITY,VRE_DISTRIBUTED,NUCLEAR,OGS,CONSUME,H2,SMR,DAC,LFILL,H2_COMBUSTION,H2_CC,H2_CT,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED +can-imports,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,, +coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +coal-CCS_max,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +Coal-IGCC,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +coal-new,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +CoalOldScr,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +CoalOldUns,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +CofireNew,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +CofireOld,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,, +Gas-CC,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC-CCS-F1,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC-CCS-F2,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CT,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +Gas-CT_aero,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +ng-fuel-cell,,,,YES,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,, +o-g-s,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,YES,YES,, +Nuclear,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,, +Nuclear-SMR,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,, +H2-CT,,,,,,,,,YES,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,, +H2-CC,,,,,,,,YES,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,, +biopower,YES,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +geothermal,,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,, +beccs_mod,YES,,,,,,,,,,YES,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +beccs_max,YES,,,,,,,,,,YES,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +Hydro,,,,,,,,,,,YES,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +lfill-gas,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,, +battery_li,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +dr_shed_1*dr_shed_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES +evmc_storage_1*evmc_storage_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,, +evmc_shape_1*evmc_shape_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,, +pumped-hydro,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,YES,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,, +pumped-hydro-flex,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,, +distpv,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES, +upv_1*upv_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, +pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, +pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, +pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,, +wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, +wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,YES,YES,,,, +csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, +hydSD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydSND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, +hydUD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydUND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, +hydNPD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydNPND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, +hydED,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,, +hydEND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES, +electrolyzer,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,, +smr,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,,,,,,, +smr_ccs,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,,,,,,,, +dac,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,,,,,,,,, +dac_gas,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,,,,,,,,, +egs_allkm_1*egs_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,YES,,,YES,,,,,,,,,,,,,,,,,,,, +geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,, +egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,, diff --git a/reeds/core/setup/b_inputs.gms b/reeds/core/setup/b_inputs.gms index 83a4fd6f..36ac1177 100644 --- a/reeds/core/setup/b_inputs.gms +++ b/reeds/core/setup/b_inputs.gms @@ -259,6 +259,7 @@ set combustion_turbine(i)"combustion turbine technologies", consume(i) "technologies that consume electricity and add to load", conv(i) "conventional generation technologies", + thermal(i) "thermal generation technologies", csp_storage(i) "csp generation technologies with thermal storage", csp(i) "csp generation technologies", csp1(i) "csp-tes generation technologies 1", @@ -717,6 +718,7 @@ combined_cycle(i)$(not ban(i)) = yes$i_subsets(i,'combined_cycle') ; combustion_turbine(i)$(not ban(i)) = yes$i_subsets(i,'combustion_turbine') ; consume(i)$(not ban(i)) = yes$i_subsets(i,'consume') ; conv(i)$(not ban(i)) = yes$i_subsets(i,'conv') ; +thermal(i)$(not ban(i)) = yes$i_subsets(i,'thermal') ; csp_storage(i)$(not ban(i)) = yes$i_subsets(i,'csp_storage') ; csp(i)$(not ban(i)) = yes$i_subsets(i,'csp') ; csp1(i)$(not ban(i)) = yes$i_subsets(i,'csp1') ; @@ -6118,7 +6120,8 @@ Parameter cc_excess(i,r,ccseason,t) "--MW-- this is the excess capacity credit when assuming marginal capacity credit in intertemporal solve" vre_gen_last_year(r,allh,t) "--MW-- generation from VRE generators in the prior solve year" hybrid_cc_derate(i,r,ccseason,sdbin,t) "--fraction-- derate factor for hybrid PV+battery storage capacity credit" - m_cc_mar(i,r,ccseason,t) "--fraction-- marginal capacity credit", + m_cc_mar(i,r,ccseason,t) "--fraction-- marginal capacity credit" + mean_forced_outage_rate(i,r,ccseason,t)"--fraction-- mean forced outage rate for each technology, region, and ccseason - used to derate thermal generator capacity" * Heuristic climate impacts trans_cap_delta(allh,allt) "--fraction-- fractional adjustment to transmission capacity from climate heuristics" * Emissions and policies @@ -6140,6 +6143,7 @@ cc_excess(i,r,ccseason,t) = 0 ; cc_old(i,r,ccseason,t) = 0 ; m_cc_mar(i,r,ccseason,t) = 0 ; hybrid_cc_derate(i,r,ccseason,sdbin,t)$[pvb(i)$valcap_irt(i,r,t)] = 1 ; +mean_forced_outage_rate(i,r,ccseason,t) = 0 ; * Trim some of the largest matrices to reduce file sizes cost_vom(i,v,r,t)$[not valgen(i,v,r,t)] = 0 ; diff --git a/reeds/core/setup/c_model.gms b/reeds/core/setup/c_model.gms index c6a8b834..d3c10223 100644 --- a/reeds/core/setup/c_model.gms +++ b/reeds/core/setup/c_model.gms @@ -1718,6 +1718,7 @@ eq_reserve_margin(r,ccseason,t) + sum{(i,v)$[valcap(i,v,r,t)$(not vre(i))$(not hydro(i))$(not storage(i))$(not consume(i))$(not forced_retire(i,r,t))], CAP(i,v,r,t) * (1 + ccseason_cap_frac_delta(i,v,r,ccseason,t)) + * (1 - mean_forced_outage_rate(i,r,ccseason,t)) } *[plus] firm capacity from existing VRE or CSP diff --git a/reeds/core/setup/e_solveprep.gms b/reeds/core/setup/e_solveprep.gms index ba54eaf1..326d0d62 100644 --- a/reeds/core/setup/e_solveprep.gms +++ b/reeds/core/setup/e_solveprep.gms @@ -40,6 +40,7 @@ parameter sdbin_size_load(ccreg,ccseason,sdbin,t) "--MW-- bin_size power loading in from the cc_out gdx file" cc_mar_load(i,r,ccreg,ccseason,t) "--fraction-- cc_mar loading in from the cc_out gdx file" cc_evmc_load(i,r,ccseason,t) "--fraction-- cc_evmc loading in from the cc_out gdx file" + mean_forced_outage_rate_load(i,r,ccseason,t) "--fraction-- mean_forced_outage_rate loading in from the cc_out gdx file" ; diff --git a/reeds/core/solve/3_solve_oneyear.gms b/reeds/core/solve/3_solve_oneyear.gms index dde80524..36550d5b 100644 --- a/reeds/core/solve/3_solve_oneyear.gms +++ b/reeds/core/solve/3_solve_oneyear.gms @@ -147,6 +147,7 @@ $loaddcr cc_old_load = cc_old $loaddcr cc_mar_load = cc_mar $loaddcr cc_evmc_load = cc_evmc $loaddcr sdbin_size_load = sdbin_size +$loaddcr mean_forced_outage_rate_load = mean_forced_outage_rate $gdxin *Note: these values are rounded before they are written to the gdx file, so no need to round them here @@ -181,6 +182,7 @@ cc_old(i,r,ccseason,t)$[tload(t)$pvb(i)$sum{(v,tt)$tprev(t,tt), CAP.l(i,v,r,tt)} min{ cc_old(i,r,ccseason,t) / sum{(v,tt)$tprev(t,tt), CAP.l(i,v,r,tt)}, 1 / ilr(i) - bcr(i) } * sum{(v,tt)$tprev(t,tt), CAP.l(i,v,r,tt)}; +mean_forced_outage_rate(i,r,ccseason,t)$tload(t) = mean_forced_outage_rate_load(i,r,ccseason,t) ; $endif.tcheck diff --git a/reeds/core/terminus/report.gms b/reeds/core/terminus/report.gms index bb729367..33ff1c96 100644 --- a/reeds/core/terminus/report.gms +++ b/reeds/core/terminus/report.gms @@ -934,7 +934,10 @@ cc_new(i,r,ccseason,t)$[valcap_irt(i,r,t)$cap_new_cc(i,r,ccseason,t)] = sum{v$iv cap_firm(i,r,ccseason,t)$[valcap_irt(i,r,t)$[not consume(i)]$tmodel_new(t)$Sw_PRM_CapCredit] = sum{v$[(not vre(i))$(not hydro(i))$(not storage(i))$(not storage_hybrid(i)$(not csp(i)))$valcap(i,v,r,t)], - CAP.l(i,v,r,t) * (1 + ccseason_cap_frac_delta(i,v,r,ccseason,t)) } + CAP.l(i,v,r,t) + * (1 + ccseason_cap_frac_delta(i,v,r,ccseason,t)) + * (1 - mean_forced_outage_rate(i,r,ccseason,t)) + } + cc_old(i,r,ccseason,t) + sum{v$[(vre(i) or csp(i) or storage_hybrid(i)$(not csp(i)))$valinv(i,v,r,t)], m_cc_mar(i,r,ccseason,t) * (INV.l(i,v,r,t) + INV_REFURB.l(i,v,r,t)$[refurbtech(i)$Sw_Refurb]) } diff --git a/reeds/resource_adequacy/capacity_credit.py b/reeds/resource_adequacy/capacity_credit.py index 0440e102..fa18b619 100644 --- a/reeds/resource_adequacy/capacity_credit.py +++ b/reeds/resource_adequacy/capacity_credit.py @@ -152,6 +152,17 @@ def reeds_cc(t, tnext, casedir): ### Get the non-duplicated profiles resource_profiles = resources.drop_duplicates('resource') + ### Get forced outage rates for thermal technologies + forced_outage_rate = reeds.io.get_outage_hourly(inputs_case,'forced') + + tech_subset_table = reeds.techs.expand_GAMS_tech_groups( + reeds.techs.get_tech_subset_table(casedir).reset_index() + ).set_index('tech_group').i + techs_to_keep = tech_subset_table.loc['THERMAL'].tolist() + techs_to_drop = [col for col in forced_outage_rate.columns.levels[0] if col not in techs_to_keep] + + forced_outage_rate = forced_outage_rate.drop(columns=techs_to_drop, level=0, errors='ignore') + # Remove the "8760" safety valve bin safety_bin = max(sdb['bin'].values) sdb = sdb[sdb['bin'] != max(sdb['bin'])] @@ -159,6 +170,7 @@ def reeds_cc(t, tnext, casedir): # Temporal definitions h_dt_szn = pd.read_csv(os.path.join('inputs_case', 'rep', 'h_dt_szn.csv')) + hmap_allyrs = pd.read_csv(os.path.join('inputs_case','rep','hmap_allyrs.csv')) ccseasons = [] if sw['cc_calc_annual']: @@ -464,6 +476,27 @@ def pivot_melt_data(df): ### Reorder to match ReEDS convention net_load_2012 = net_load_2012.reindex(['ccreg','ccseason','year','h','hour','t','value'], axis=1) + # export mean forced outage rate for top load hours in each region and ccseason + top_net_load_hours = net_load.groupby(['ccreg','ccseason']).head(int(sw['GSw_PRM_CapCreditHours'])) + # map back to regions from ccreg for ReEDS input + top_net_load_hours = top_net_load_hours.merge( + hierarchy[['r','ccreg']], on='ccreg', how='left' + ).drop(['ccreg','year','hour','t','value'], axis=1) + # map h to timestamp to match forced outage rate + top_net_load_hours['*timestamp'] = top_net_load_hours['h'].apply(reeds.timeseries.h2timestamp) + hours = top_net_load_hours.groupby(['ccseason', 'r'])['*timestamp'].agg(list) + + mean_forced_outage_rate = ( + pd.concat({ + (ccseason, r): forced_outage_rate.loc[h].xs(r, 1, 'r').mean() + for (ccseason, r), h in hours.items() + }, names=('ccseason', 'r')) + .reset_index() + .rename(columns={0:'value'}) + .assign(t=str(tnext)) + .reindex(['i','r','ccseason','t','value'], axis=1) + ) + if int(sw['GSw_EVMC']): cc_evmc = ( pd.concat(dict_cc_evmc, axis=0) @@ -484,6 +517,7 @@ def pivot_melt_data(df): 'sdbin_size': sdbin_size, 'net_load': net_load, 'net_load_2012': net_load_2012, + 'mean_forced_outage_rate' : mean_forced_outage_rate, } return cc_results diff --git a/reeds/resource_adequacy/ra_calcs.py b/reeds/resource_adequacy/ra_calcs.py index fc296808..63847779 100644 --- a/reeds/resource_adequacy/ra_calcs.py +++ b/reeds/resource_adequacy/ra_calcs.py @@ -138,6 +138,7 @@ def main(t, tnext, casedir, iteration=0): 'cc_old': pd.DataFrame(columns=['i','r','ccreg','szn','t','Value']), 'cc_evmc': pd.DataFrame(columns=['i','r','szn','t','Value']), 'sdbin_size': pd.DataFrame(columns=['ccreg','szn','bin','t','Value']), + 'mean_forced_outage_rate': pd.DataFrame(columns=['i','r','szn','t','Value']), } reeds.log.toc(tic=tic, year=t, process='ra/capacity_credit.py') @@ -165,7 +166,6 @@ def main(t, tnext, casedir, iteration=0): ) #%% Identify stress periods - print('identifying new stress periods...') tic = datetime.datetime.now() if ( ('user' not in sw['GSw_PRM_StressModel'].lower()) diff --git a/runreeds.py b/runreeds.py index ac9a8b6a..41e30a93 100644 --- a/runreeds.py +++ b/runreeds.py @@ -386,6 +386,16 @@ def check_compatibility(sw): except ValueError: raise ValueError(err) + if int(sw['GSw_PRM_UpdateMethod']) == 0 and int(sw['GSw_PRM_CapCredit']) == 1 and int(sw['GSw_PRM_StressIterateMax']) > 0: + raise ValueError( + "The combination of GSw_PRM_UpdateMethod=0, GSw_PRM_CapCredit=1, " + "and GSw_PRM_StressIterateMax>0 is not supported.\n" + "To iteratively update the PRM, set GSw_PRM_UpdateMethod to an integer between 1-3:" + "\n1: static update set by GSw_PRM_UpdateFraction; " + "\n2: dynamic update informed by PRAS; " + "\n3: dynamic update but only after all new stress periods have been added" + ) + for bir in sw['GSw_PVB_BIR'].split('_'): if not (float(bir) >= 0): raise ValueError("Fix GSw_PVB_BIR")