From 11edf79c955f52f0b14b5bd25c9f25ade1fffb8b Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Fri, 24 Apr 2026 16:09:16 +0000 Subject: [PATCH 01/25] transfer from .gov --- .github/PULL_REQUEST_TEMPLATE.md | 12 +- Augur.py | 1 - ReEDS_Augur/augur_switches.csv | 1 - ReEDS_Augur/capacity_credit.py | 124 +---- ReEDS_Augur/prep_data.py | 32 +- b_inputs.gms | 155 +++++- c_supplymodel.gms | 126 ++++- c_supplyobjective.gms | 5 +- cases.csv | 10 +- cases_examples.csv | 4 +- d1_financials.gms | 4 + d1_temporal_params.gms | 46 +- d3_data_dump.gms | 26 +- d_solveallyears.gms | 2 - d_solveoneyear.gms | 1 - d_solveprep.gms | 2 - docs/source/model_documentation.md | 34 +- docs/source/postprocessing_tools.md | 1 + docs/source/user_guide.md | 7 +- e_report.gms | 21 + e_report_params.csv | 1 + input_processing/aggregate_regions.py | 2 +- input_processing/hourly_writetimeseries.py | 430 ++++++++------- input_processing/plantcostprep.py | 12 +- input_processing/writedrshift.py | 16 - input_processing/writesupplycurves.py | 64 ++- .../degradation_annual_default.csv | 4 +- ...capacity_scalar_demo_data_January_2025.csv | 23 - .../financials/construction_times_default.csv | 164 +++--- inputs/financials/financials_tech_ATB2023.csv | 246 --------- .../financials_tech_ATB2023_CRP20.csv | 246 --------- inputs/financials/financials_tech_ATB2024.csv | 492 +++++++++--------- inputs/plant_characteristics/dollaryear.csv | 2 - .../evmc_shape_Baseline.csv | 411 --------------- .../evmc_storage_Baseline.csv | 411 --------------- inputs/plant_characteristics/maxage.csv | 4 +- inputs/plant_characteristics/ramprate.csv | 5 +- inputs/plant_characteristics/unitsize_atb.csv | 5 +- .../years_until_endogenous.csv | 4 +- inputs/sets/i.csv | 30 +- inputs/sets/i_subtech.csv | 5 +- inputs/sets/tg.csv | 4 +- inputs/storage/storage_duration.csv | 10 - inputs/supply_curve/dollaryear.csv | 3 +- inputs/tech-subset-table.csv | 148 +++--- inputs/techs/techs_default.csv | 4 +- inputs/userinput/futurefiles.csv | 28 +- inputs/userinput/ivt_default.csv | 4 +- inputs/userinput/ivt_small.csv | 4 +- inputs/userinput/ivt_step.csv | 4 +- .../bokehpivot/in/reeds2/tech_map.csv | 4 +- .../bokehpivot/in/reeds2/tech_style.csv | 4 +- .../templates/reeds2/value_factor_report.py | 2 +- postprocessing/compare_cases.py | 2 +- postprocessing/single_case_plots.py | 13 +- postprocessing/tech_aggregation.csv | 2 - reeds/reedsplots.py | 327 ++++++++++++ runbatch.py | 37 +- runfiles.csv | 21 +- sources.csv | 56 +- sources_documentation.md | 79 +-- tests/objective_function_params.yaml | 2 + 62 files changed, 1539 insertions(+), 2410 deletions(-) delete mode 100644 inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv delete mode 100644 inputs/plant_characteristics/evmc_shape_Baseline.csv delete mode 100644 inputs/plant_characteristics/evmc_storage_Baseline.csv diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5ac735ba3..6d60f3d50 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,6 +15,10 @@ ### Relevant sources or documentation + +## Charge code for review + + ## Validation, testing, and comparison report(s) -- [ ] Charge code provided to reviewers +- [ ] Charge code provided for review - [ ] Included comparison reports for appropriate test cases - [ ] Documentation updated if necessary +- [ ] Code formatting standardized - [ ] Reusable functions used where possible instead of copy/pasted code ### General information to guide review @@ -86,7 +90,7 @@ Include additional illustrative plots describing input data, methods, testing, a - + @@ -109,7 +113,7 @@ Include additional illustrative plots describing input data, methods, testing, a - + diff --git a/Augur.py b/Augur.py index 11c856eb4..b9f41fa54 100644 --- a/Augur.py +++ b/Augur.py @@ -138,7 +138,6 @@ def main(t, tnext, casedir, iteration=0): cc_results = { 'cc_mar': pd.DataFrame(columns=['i','r','ccreg','szn','t','Value']), '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']), } diff --git a/ReEDS_Augur/augur_switches.csv b/ReEDS_Augur/augur_switches.csv index bff65dbe7..7e8461b21 100644 --- a/ReEDS_Augur/augur_switches.csv +++ b/ReEDS_Augur/augur_switches.csv @@ -4,7 +4,6 @@ cc_ann_hours,20,int,number of top hours considered in annual cc calculations cc_calc_annual,FALSE,boolean,when true: annual cc values are calculated cc_calc_seasonal,TRUE,boolean,when true: seasonal cc values are calculated cc_default_rte,0.85,float,default efficiency value to use for assessing peaking storage potential -cc_marg_evmc_mw,100,int,step size used for marginal DR cc calculations cc_max_stor_pen,0.9,float,max fraction of peak load considered for storage peaking capacity assessment cc_safety_bin_size,100000,int,default value (in MW) for the safety bin size in ReEDS cc_stor_buffer,60,int,additional duration (in minutes) that is required of storage to receive full capacity credit diff --git a/ReEDS_Augur/capacity_credit.py b/ReEDS_Augur/capacity_credit.py index d778d6daf..e276c4600 100644 --- a/ReEDS_Augur/capacity_credit.py +++ b/ReEDS_Augur/capacity_credit.py @@ -92,13 +92,6 @@ def set_marg_vre_step_size(t, sw, gdx, hierarchy): return marg_vre_mw_cc -def load_evmc_data(csv_path,inputs_case,h_dt_szn, - set_h_szn_cols=['h','ccseason','hour'], - set_idx_cols=['h','hour', 'year','ccseason']): - df = pd.read_csv(os.path.join(inputs_case,csv_path)) - df = pd.merge(df,h_dt_szn[set_h_szn_cols],on='hour',how='left') - return df.set_index(set_idx_cols) - #%% Main function def reeds_cc(t, tnext, casedir): @@ -201,17 +194,10 @@ def reeds_cc(t, tnext, casedir): # Restrict capacity credit evaluation to use 2012 only (rather than multi-year) load_profiles = load_profiles[load_profiles.index.get_level_values('year') == 2012].copy() - # Get EVMC data if necessary - if int(sw['GSw_EVMC']): - # Get EVMC props - evmccf_shape_increase = load_evmc_data('evmc_shape_profile_increase.csv',inputs_case,h_dt_szn) - evmccf_shape_decrease = load_evmc_data('evmc_shape_profile_decrease.csv',inputs_case,h_dt_szn) - # Initialize dataframes to store results dict_cc_old = {} dict_cc_mar = {} dict_sdbin_size = {} - dict_cc_evmc = {} dict_net_load = {} dict_net_load_2012 = {} @@ -234,15 +220,6 @@ def reeds_cc(t, tnext, casedir): # Hourly profiles load_profile_ccreg = load_profiles[ccreg] - # EVMC profile - if int(sw['GSw_EVMC']): - evmc_shape_reg = [r for r in resources_ccreg.r.drop_duplicates() - if r in evmccf_shape_increase.columns] - evmccf_shape_increase_ccreg = evmccf_shape_increase[['i'] + evmc_shape_reg] - evmc_shape_reg = [r for r in resources_ccreg.r.drop_duplicates() - if r in evmccf_shape_decrease.columns] - evmccf_shape_decrease_ccreg = evmccf_shape_decrease[['i'] + evmc_shape_reg] - # Storage information # Note that we only calculate storage capacity credit for storage in the same ccreg cap_stor_agg_ccreg = cap_stor_agg[ @@ -280,22 +257,13 @@ def reeds_cc(t, tnext, casedir): if ccseason == 'year': load_profile_ccseason = load_profile_ccreg.copy() hours_considered = int(sw['cc_ann_hours']) - if int(sw['GSw_EVMC']): - evmc_shape_load_ccseason = evmccf_shape_increase_ccreg.copy() - evmc_shape_gen_ccseason = evmccf_shape_decrease_ccreg.copy() else: load_profile_ccseason = load_profile_ccreg.xs( ccseason, axis=0, level='ccseason').reset_index() hours_considered = int(sw['GSw_PRM_CapCreditHours']) - if int(sw['GSw_EVMC']): - evmc_shape_load_ccseason = evmccf_shape_increase_ccreg.xs( - ccseason, axis=0, level='ccseason').reset_index() - evmc_shape_gen_ccseason = evmccf_shape_decrease_ccreg.xs( - ccseason, axis=0, level='ccseason').reset_index() - - # log.debug(ccseason, int(len(load_profile_ccseason) / 7)) + # log.debug(ccseason, int(len(load_profile_ccseason) / 7)) ###### Calculate the capacity credit for each resource cc_vg_results = cc_vg( vg_power=vregen_ccseason[ccseason][resourcelist].values, @@ -378,38 +346,6 @@ def pivot_melt_data(df): index=['year','hour','h'], columns=['i','r'], values='value') - if int(sw['GSw_EVMC']): - evmc_shape_inc_timestamp = pivot_melt_data(evmc_shape_load_ccseason) - evmc_shape_dec_timestamp = pivot_melt_data(evmc_shape_gen_ccseason) - evmc_years = evmc_shape_dec_timestamp.index.get_level_values('year').unique() - #do as evmc cap credit instead? - if len(evmc_years)==1: - gen_array = evmc_shape_dec_timestamp.values - evmc_shape_inc_timestamp.values - evmc_shape_marg_power = np.tile(gen_array,(7,1)) - elif len(evmc_years)==7: - evmc_shape_marg_power = evmc_shape_dec_timestamp.values - evmc_shape_inc_timestamp.values - else: - log.info("no weather year data on EVMC for any relevant regions; skipping") - continue - - ###### Calculate the capacity credit for each evmc_shape resource - results_evmc_shape = cc_evmc_shape(load=cc_vg_results['load'], - load_net=cc_vg_results['load_net'], - top_hours_net=cc_vg_results['top_hours_net'], - top_hours_n=hours_considered, - evmc_shape_marg_power=evmc_shape_marg_power*float(sw['marg_evmc_mw']), - cap_marg=float(sw['marg_evmc_mw'])) - - evmc_cc_i = pd.melt(pd.DataFrame(data=[np.round(results_evmc_shape, decimals=5), ], - columns=evmc_shape_dec_timestamp.columns)) - - if (ccreg, ccseason) in dict_cc_evmc.keys(): - dict_cc_evmc[ccreg, ccseason] = pd.concat( - [dict_cc_evmc[ccreg, ccseason], - evmc_cc_i[['r', 'i', 'value']]]) - else: - dict_cc_evmc[ccreg, ccseason] = evmc_cc_i[['r', 'i', 'value']] - # ------ AGGREGATE OUTPUTS ------ cc_old = ( pd.concat(dict_cc_old, axis=0) @@ -465,23 +401,12 @@ 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) - if int(sw['GSw_EVMC']): - cc_evmc = ( - pd.concat(dict_cc_evmc, axis=0) - .reset_index().drop(['level_2', 'level_0'], axis=1) - .rename(columns={'level_1':'ccseason'}) - .assign(t=str(tnext)) - .reindex(['i','r','ccseason','t','value'], axis=1) - ) - else: - cc_evmc = pd.DataFrame(columns=['i', 'r', 'ccseason', 't', 'value']) # ---------------- RETURN A DICTIONARY WITH THE OUTPUTS FOR REEDS -------- cc_results = { 'cc_mar': cc_mar, 'cc_old': cc_old, - 'cc_evmc': cc_evmc, 'sdbin_size': sdbin_size, 'net_load': net_load, 'net_load_2012': net_load_2012, @@ -614,53 +539,6 @@ def cc_vg(vg_power, load, vg_marg_power, top_hours_n, cap_marg): return results -def cc_evmc_shape(load,load_net,top_hours_net,top_hours_n,evmc_shape_marg_power,cap_marg): - ''' - Calculate the capacity credit of marginal evmc_shape resources - using a top hour approximation. - Args: - load: numpy array containing time-synchronous load profile for all - hours_n. Units: MW - load_net: net load profile. Units: MW - top_hours_net: arguments for the highest net load hours in load_net, - calculated in cc_vg(). Is of length top_hours_n - top_hours_n: number of top hours to consider for the calculation - evmc_shape_marg: numpy array containing capacity factor profiles for marginal - builds of each evmc_shape resource bin - cap_marg: marginal capacity used to calculate marginal capacity credit - Returns: - cc_marg: marginal capacity credit for each evmc_shape resource - Notes: - Currently only built for hourly profiles. Generalize to any duration - timestep. - ''' - hours_n = len(load) - - # get the marg net load for each evmc_shape resource [hours x resources] - load_marg = ( - np.tile(load_net.reshape(hours_n, 1), (1, evmc_shape_marg_power.shape[1])) - - evmc_shape_marg_power) - - ### Get the peak net load hours [top_hours_n x evmc_shape resources] - peak_net_load = np.transpose(np.array( - ### np.partition returns the max top_hours_n values, unsorted; then np.sort sorts. - ### So we only sort top_hours_n values instead of the whole array, saving time. - [np.sort( - np.partition(load_marg[:,n], -top_hours_n)[-top_hours_n:] - )[::-1] - for n in range(load_marg.shape[1])] - )) - - load_reduct_marg = np.tile( - load_net[top_hours_net].reshape(top_hours_n, 1), - (1, evmc_shape_marg_power.shape[1]) - ) - peak_net_load - # get the marginal CCs for each resource - cc_marg = np.sum(load_reduct_marg, axis=0) / top_hours_n / cap_marg - - # setting the lower bound for marginal CC to be 0.01 - cc_marg[cc_marg < 0.01] = 0.0 - return cc_marg # -------------------------CALC REQUIRED MWHS---------------------------------- # @numba.jit(nopython=True, cache=True) diff --git a/ReEDS_Augur/prep_data.py b/ReEDS_Augur/prep_data.py index 8f4febfcc..7f481e2dd 100644 --- a/ReEDS_Augur/prep_data.py +++ b/ReEDS_Augur/prep_data.py @@ -234,7 +234,7 @@ def _devint_storage(dfin): ], axis=0) #%% Remove VRE and demand-modifying techs (H2 production, DAC, DR) - demand_techs = tech_subset_table[['CONSUME', 'DR_SHED']].values + demand_techs = tech_subset_table[['CONSUME', 'DR_SHED','DR_SHAPE','DR_SHIFT']].values cap_nonloadtechs = cap_ivr.loc[~cap_ivr.i.isin(demand_techs)].copy() vretechs_i = resources.i.str.lower().unique() @@ -337,6 +337,25 @@ def intify(v): .reindex(h_dt_szn_load_years.index) ) + ### DR shape: make it all inflexible for PRAS + load_dr_shape_all_hourly = ( + gdxreeds['dr_shape_load_mod'] + .groupby(['r', 'allh']).Value.sum().reset_index() + .merge(h_dt_szn_load_years[['h']].reset_index(), left_on='allh', right_on='h') + .pivot(index='timestamp', columns='r', values='Value') + .fillna(0) + .reindex(h_dt_szn_load_years.index) + ) + + ### DR shift: make it all inflexible for PRAS + load_dr_shift_all_hourly = ( + gdxreeds['dr_shift_load_mod'] + .groupby(['r', 'allh']).Value.sum().reset_index() + .merge(h_dt_szn_load_years[['h']].reset_index(), left_on='allh', right_on='h') + .pivot(index='timestamp', columns='r', values='Value') + .fillna(0) + .reindex(h_dt_szn_load_years.index) + ) #%% Load shedding ## Get the DR shed load for all weather years gen_h_stress = gdxreeds['gen_h_stress_filt'] @@ -386,6 +405,17 @@ def intify(v): if int(sw.GSw_DRShed) and not gen_shed_combined.empty: print(f'Subtracted shed load from PRAS load since GSw_DRShed = {sw.GSw_DRShed}') pras_load = pras_load.subtract(gen_shed_combined, fill_value=0).clip(lower=0) + + ## Modify load for DR shape impacts + if int(sw.GSw_DRShape): + print(f'Subtracted shape load from PRAS load since GSw_DRShape = {sw.GSw_DRShape}') + pras_load = pras_load.add(load_dr_shape_all_hourly, fill_value=0).clip(lower=0) + + ## Modify load for DR shift impacts + if int(sw.GSw_DRShift): + print(f'Subtracted shift load from PRAS load since GSw_DRShape = {sw.GSw_DRShape}') + pras_load = pras_load.add(load_dr_shift_all_hourly, fill_value=0).clip(lower=0) + ### Add flexibly sited load if its profile is inflexible (GSw_LoadSiteCF = 1) if ( diff --git a/b_inputs.gms b/b_inputs.gms index 0d59e5626..1cbef7ffe 100644 --- a/b_inputs.gms +++ b/b_inputs.gms @@ -436,11 +436,10 @@ set csp4(i) "csp-tes generation technologies 4", dac(i) "direct air capture technologies", distpv(i) "distpv (i.e., rooftop PV) generation technologies", - demand_flex(i) "demand flexibility technologies (includes DR and EVMC)", - dr_shed(i) "DR shed technologies" - evmc(i) "ev flexibility technologies", - evmc_storage(i) "ev flexibility as direct load control", - evmc_shape(i) "ev flexibility as adoptable change to load from response to pricing", + demand_flex(i) "demand flexibility technologies (includes DR)", + dr_shed(i) "DR shed technologies", + dr_shape(i) "DR shape technologies", + dr_shift(i) "DR shift technologies", fossil(i) "fossil technologies" fuel_cell(i) "fuel cell technologies", gas_cc_ccs(i) "techs that are gas combined cycle and have CCS", @@ -704,10 +703,6 @@ if(Sw_DAC_Gas = 0, ban("dac_gas") = yes ; ); -if(Sw_EVMC = 0, - ban(i)$i_subsets(i,'evmc') = yes ; -) ; - if(Sw_GasCT_Aero = 0, ban('Gas-CT_aero') = yes ; ) ; @@ -788,6 +783,14 @@ if(Sw_DRShed = 0, ban(i)$i_subsets(i,'DR_SHED') = yes ; ) ; +if(Sw_DRShape = 0, + ban(i)$i_subsets(i,'DR_SHAPE') = yes ; +) ; + +if(Sw_DRShift = 0, + ban(i)$i_subsets(i,'DR_SHIFT') = yes ; +) ; + * always allow PSH to use fresh surface water (fsa, fsu) * do not allow new PSH to use saline surface water bannew(i)$[sum{wst_i_ii(i,ii)$i_subsets(i,'psh'), i_wst(i,'ss') }] = YES ; @@ -970,10 +973,9 @@ csp4(i)$(not ban(i)) = yes$i_subsets(i,'csp4') ; dac(i)$(not ban(i)) = yes$i_subsets(i,'dac') ; distpv(i)$(not ban(i)) = yes$i_subsets(i,'distpv') ; dr_shed(i)$(not ban(i)) = yes$i_subsets(i,'dr_shed') ; +dr_shape(i)$(not ban(i)) = yes$i_subsets(i,'dr_shape') ; +dr_shift(i)$(not ban(i)) = yes$i_subsets(i,'dr_shift') ; demand_flex(i)$(not ban(i)) = yes$i_subsets(i,'demand_flex') ; -evmc(i)$(not ban(i)) = yes$i_subsets(i,'evmc') ; -evmc_storage(i)$(not ban(i)) = yes$i_subsets(i,'evmc_storage') ; -evmc_shape(i)$(not ban(i)) = yes$i_subsets(i,'evmc_shape') ; fossil(i)$(not ban(i)) = yes$i_subsets(i,'fossil') ; fuel_cell(i)$(not ban(i)) = yes$i_subsets(i,'fuel_cell') ; gas_cc_ccs(i)$(not ban(i)) = yes$i_subsets(i,'gas_cc_ccs') ; @@ -1041,6 +1043,8 @@ tg_i('geothermal',i)$geo(i) = yes ; tg_i('biomass',i)$bio(i) = yes ; tg_i('pumped-hydro',i)$psh(i) = yes ; tg_i('dr_shed',i)$dr_shed(i) = yes ; +tg_i('dr_shape',i)$dr_shape(i) = yes ; +tg_i('dr_shift',i)$dr_shift(i) = yes ; *Hybrid pv+battery (PVB) configurations are defined by: * (1) inverter loading ratio (DC/AC) and @@ -1147,7 +1151,7 @@ set dispatchtech(i) "technologies that are dispatchable", noret_upgrade_tech(i)$hyd_add_pump(i) = yes ; noret_upgrade_tech(i)$[(coal_ccs(i) or gas_cc_ccs(i))$upgrade(i)$Sw_CCS_NoRetire] = yes ; dispatchtech(i)$[not(vre(i) or hydro_nd(i) or ban(i))] = yes ; -sccapcosttech(i)$[hydro(i) or psh(i) or dr_shed(i)] = yes ; +sccapcosttech(i)$[geo(i) or hydro(i) or psh(i) or dr_shed(i) or dr_shape(i) or dr_shift(i) ] = yes ; *initialize sets to "no" retiretech(i,v,r,t) = no ; @@ -2679,6 +2683,9 @@ valgen(i,v,r,t)$valcap(i,v,r,t) = yes ; * consuming technologies are not allowed to generate valgen(i,v,r,t)$consume(i) = no ; +* load modification technologies not allowed to generate +valgen(i,v,r,t)$dr_shape(i) = no ; + * Remove technologies that are required to retire valgen(i,v,r,t)$forced_retire(i,r,t) = no ; @@ -4325,6 +4332,29 @@ $onlisting ; $offempty +* Written by plantcostprep.py +$onempty +table dr_shape_capmult(i,r,allt) "--unitless-- dr_shape capital cost multipliers over time" +$offlisting +$ondelim +$include inputs_case%ds%dr_shape_capcostmult.csv +$offdelim +$onlisting +; +$offempty + +* Written by plantcostprep.py +$onempty +table dr_shift_capmult(i,r,allt) "--unitless-- dr_shift capital cost multipliers over time" +$offlisting +$ondelim +$include inputs_case%ds%dr_shift_capcostmult.csv +$offdelim +$onlisting +; +$offempty + +* Written in input processing repo under Demand_Response $onempty table dr_shed_capacity_scalar(i,r,allt) "--unitless-- dr_shed capacity multipliers over time" $offlisting @@ -4335,6 +4365,27 @@ $onlisting ; $offempty +* Written in input processing repo under Demand_Response +$onempty +table dr_shape_capacity_scalar(i,r,allt) "--unitless-- dr_shape capacity multipliers over time" +$offlisting +$ondelim +$include inputs_case%ds%dr_shape_capacity_scalar.csv +$offdelim +$onlisting +; +$offempty + +* Written in input processing repo under Demand_Response +$onempty +table dr_shift_capacity_scalar(i,r,allt) "--unitless-- dr_shift capacity multipliers over time" +$offlisting +$ondelim +$include inputs_case%ds%dr_shift_capacity_scalar.csv +$offdelim +$onlisting +; +$offempty *Written in copy_files.py $onempty @@ -4360,6 +4411,52 @@ $onlisting $offempty +*Written in copy_files.py +$onempty +table vom_dr_shape(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +$offlisting +$ondelim +$include inputs_case%ds%plantchar_dr_shape_vom.csv +$offdelim +$onlisting +; +$offempty + + +*Written in copy_files.py +$onempty +table fom_dr_shape(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +$offlisting +$ondelim +$include inputs_case%ds%plantchar_dr_shape_fom.csv +$offdelim +$onlisting +; +$offempty + +*Written in copy_files.py +$onempty +table vom_dr_shift(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +$offlisting +$ondelim +$include inputs_case%ds%plantchar_dr_shift_vom.csv +$offdelim +$onlisting +; +$offempty + + +*Written in copy_files.py +$onempty +table fom_dr_shift(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +$offlisting +$ondelim +$include inputs_case%ds%plantchar_dr_shift_fom.csv +$offdelim +$onlisting +; +$offempty + * Written by plantcostprep.py table ofswind_rsc_mult(allt,i) "--unitless-- multiplier by year for supply curve cost" $offlisting @@ -4403,6 +4500,11 @@ cost_vom(i,v,r,t)$[valcap(i,v,r,t)$hydro(i)] = vom_hyd ; * Add VOM cost for dr shed resource to cost_vom cost_vom(i,v,r,t)$[valcap(i,v,r,t)$dr_shed(i)] = vom_dr_shed(i,r,t) ; +* Add VOM cost for dr shape resource to cost_vom +cost_vom(i,v,r,t)$[valcap(i,v,r,t)$dr_shape(i)] = vom_dr_shape(i,r,t) ; + +* Add VOM cost for dr shift resource to cost_vom +cost_vom(i,v,r,t)$[valcap(i,v,r,t)$dr_shift(i)] = vom_dr_shift(i,r,t) ; * Assign hybrid PV+battery to have the same value as UPV parameter cost_vom_pvb_p(i,v,r,t) "--2004$/MWh-- variable OM for the PV portion of hybrid PV+battery " ; @@ -4513,6 +4615,12 @@ cost_fom(i,v,r,t)$[valcap(i,v,r,t)$hydro(i)$hyd_fom(i,r)] = hyd_fom(i,r) ; * Add FOM cost for dr shed resource to cost_fom cost_fom(i,v,r,t)$[valcap(i,v,r,t)$dr_shed(i)] = fom_dr_shed(i,r,t) ; +* Add FOM cost for dr shape resource to cost_fom +cost_fom(i,v,r,t)$[valcap(i,v,r,t)$dr_shape(i)] = fom_dr_shape(i,r,t) ; + +* Add FOM cost for dr shift resource to cost_fom +cost_fom(i,v,r,t)$[valcap(i,v,r,t)$dr_shift(i)] = fom_dr_shift(i,r,t) ; + cost_fom(i,initv,r,t)$[(not Sw_BinOM)$valcap(i,initv,r,t)] = sum{tt$tfirst(tt), cost_fom(i,initv,r,tt) } ; *upgrade fom costs for initial classes are the fom costs for that tech @@ -5723,7 +5831,6 @@ parameter storage_eff(i,t) "--fraction-- round-trip efficiency of storage techno storage_eff(i,t)$storage(i) = 1 ; storage_eff(i,t)$psh(i) = storage_eff_psh ; storage_eff(i,t)$[storage(i)$plant_char0(i,t,'rte')] = plant_char0(i,t,'rte') ; -storage_eff(i,t)$[evmc_storage(i)$plant_char0(i,t,'rte')] = plant_char0(i,t,'rte') ; storage_eff(i,t)$pvb(i) = storage_eff("battery_li",t) ; parameter storage_eff_pvb_p(i,t) "--fraction-- efficiency of hybrid PV+battery when charging from the coupled PV" @@ -6307,7 +6414,8 @@ parameter rsc_reduct_frac(pcat,r) "--unitless-- fraction of renewable resource rsc_capacity_scalar(i,r,t) "--unitless-- resource scalar for any technology that has a change in the supply curve capacity over time" ; -set rsc_capacity_scalar_i(i) "technologies that have a capacity resource scalar" ; +set rsc_capacity_scalar_i(i) "technologies that have a capacity resource scalar" +; rsc_reduct_frac(pcat,r) = 0 ; prescrip_rsc_frac(pcat,r) = 0 ; @@ -6338,8 +6446,8 @@ if (Sw_ReducedResource = 1, m_rsc_dat(r,i,rscbin,"cap") * (1 - sum{pcat$prescriptivelink(pcat,i), rsc_reduct_frac(pcat,r) }) ; ) ; -*Currently only geothermal and dr_shed have supply curve capacities that change over time -rsc_capacity_scalar(i,r,t) = geo_discovery(i,r,t) + dr_shed_capacity_scalar(i,r,t) ; +* Only geothermal and dr_shed/shape/shift have supply curve capacities that change over time irrespective of bins +rsc_capacity_scalar(i,r,t) = geo_discovery(i,r,t)+ dr_shed_capacity_scalar(i,r,t) +dr_shape_capacity_scalar(i,r,t) + dr_shift_capacity_scalar(i,r,t) ; rsc_capacity_scalar_i(i)$[sum{(r,t), rsc_capacity_scalar(i,r,t) }] = yes ; *convert UPV and PVB interconnection costs from $/MW-AC to $/MW-DC using ILR @@ -6707,14 +6815,11 @@ Parameter load_exog_flex(flex_type,r,allh,t) "the amount of exogenous load that is flexible" load_exog_static(r,allh,t) "the amount of exogenous load that is static" dr_shed_out(i,r,allh) "--fraction-- dr shed capacity availability" -* EVMC storage - evmc_storage_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted EV storage discharge capacity that can be discharged (deferred charging) in each timeslice h" - evmc_storage_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted EV storage discharge capacity that can be charged (add back deferred charging) in each timeslice h" - evmc_storage_energy_hours(i,r,allh,allt) "--hours-- Allowable EV storage SOC (quantity deferred EV charge) [MWh] divided by nameplate EVMC discharge capacity [MW]" -* EVMC load - evmc_baseline_load(r,allh,allt) "--MW-- baseline electricity load from EV charging by timeslice h and year t" - evmc_shape_load(i,r,allh) "--fraction-- fraction of adopted price-responsive (shaped) EV load added by timeslice" - evmc_shape_gen(i,r,allh) "--fraction-- fraction of adopted price-responsive (shaped) EV load subtracted by timeslice" + dr_shape_load(i,r,allh,allt) "--fraction-- fraction of adopted price-responsive DR shape load added by timeslice" + dr_shape_gen(i,r,allh,allt) "--fraction-- fraction of adopted price-responsive DR shape load subtracted by timeslice" + dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be discharged in each timeslice h" + dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift charge capacity that can be charged in each timeslice h" + dr_shift_energy_hours(i,r,allh,allt) "--hours-- Allowable DR shift SOC (quantity deferred DR charge) [MWh] divided by nameplate DR shift discharge capacity [MW]" * Flexible Canadian imports/exports [Sw_Canada=1] can_imports_szn(r,allszn,t) "--MWh-- [Sw_Canada=1] seasonal imports from Canada by year" can_imports_szn_frac(allszn) "--fraction-- [Sw_Canada=1] fraction of annual imports that occur in each season" diff --git a/c_supplymodel.gms b/c_supplymodel.gms index 029d53f10..dfc4c2e4a 100644 --- a/c_supplymodel.gms +++ b/c_supplymodel.gms @@ -25,7 +25,7 @@ positive variables * capacity and investment variables CAP_SDBIN(i,v,r,ccseason,sdbin,t) "--MW-- generation power capacity by storage duration bin for relevant technologies" CAP_SDBIN_ENERGY(i,v,r,ccseason,sdbin,t) "--MWh-- generation energy capacity by storage duration bin for relevant technologies" - CAP(i,v,r,t) "--MW-- total generation capacity in MWac (MWdc for PV); PV capacity of hybrid PV+battery; max native, flexible EV load for EVMC" + CAP(i,v,r,t) "--MW-- total generation capacity in MWac (MWdc for PV); PV capacity of hybrid PV+battery; max native" CAP_ENERGY(i,v,r,t) "--MWh-- battery capacity in terms of energy" CAP_ABOVE_LIM(tg,r,t) "--MW-- amount of capacity that is deployed above the interconnection queue limits" CAP_RSC(i,v,r,rscbin,t) "--MW-- total generation capacity in MWac (MWdc for PV) for wind-ons and upv" @@ -113,6 +113,8 @@ positive variables H2_STOR_LEVEL_SZN(h2_stor,r,actualszn,t) "--metric tons-- total storage level of H2 in a period by storage type" CREDIT_H2PTC(i,v,r,allh,t) "--MW-- generation by resources which qualify for the hydrogen production tax credit, in hour h" + RHS_DRSHAPE_SLACK(r,allh,t) "--slack variable for DR shape in eq_loadcon" + * water climate variables WATCAP(i,v,r,t) "--million gallons/year; Mgal/yr-- total water access capacity available in terms of withdraw/consumption per year" WAT(i,v,w,r,allh,t) "--Mgal-- quantity of water withdrawn or consumed in hour h" @@ -315,6 +317,8 @@ eq_interconnection_queues(tg,r,t) "--MW-- capacity deployment limit base eq_storage_opres(i,v,r,allh,t) "--MWh-- there must be sufficient energy in the storage to be able to provide operating reserves" eq_storage_thermalres(i,v,r,allh,t) "--MW-- thermal storage contribution to operating reserves is store_in only" eq_battery_minduration(i,v,r,t) "--MWh-- when power capacity is built, energy capacity should have a minimum capacity" + eq_dr_shift_gen_capacity(i,v,r,allh,t) "--MW-- storage generation capacity (deferment) for DR shifting resources is limited to a fraction of total capacity" + eq_dr_shift_storage_in_capacity(i,v,r,allh,t) "--MW-- storage load capacity (payback) for DR shifting resources is limited to a fraction of total capacity" * hybrid plant equations eq_plant_total_gen(i,v,r,allh,t) "--MW-- generation post curtailment = generation from pv (post curtailment) + generation from battery - charging from PV" @@ -337,8 +341,41 @@ eq_interconnection_queues(tg,r,t) "--MW-- capacity deployment limit base eq_ccsflex_sto_ccsenergy_balance(i,v,r,allszn,t) "--MWh-- Total CCS energy requirement can be distributed across a characteristic day" eq_ccsflex_sto_storage_level(i,v,r,allh,t) "--varies-- Track the level of the CCS storage balance for each time-slice" eq_ccsflex_sto_storage_level_max(i,v,r,allh,t) "--varies-- Limit the level of the CCS storage system" + + +* eq_force_drshift_gen(t) +* eq_force_drshape_cap(t) ; + +* eq_force_drshift_gen(t) +* $[tmodel(t) +* $(Sw_DRShift=1) +* $(yeart(t)>model_builds_start_yr) +* ].. + +* sum{(i,v,r,h)$[valgen(i,v,r,t)$dr_shift(i)], +* hours(h) * GEN(i,v,r,h,t) +* } +* =g= + +* 1000 +* ; + +* eq_force_drshape_cap(t) +* $[tmodel(t) +* $(Sw_DRShape=1) +* $(yeart(t)>model_builds_start_yr) +* ].. + +* sum{(i,v,r)$[valcap(i,v,r,t)$dr_shape(i)], +* CAP(i,v,r,t) +* } +* =g= + +* 10 +* ; + *========================== * --- LOAD CONSTRAINTS --- *========================== @@ -364,11 +401,12 @@ eq_loadcon(r,h,t)$tmodel(t).. * while net_trade can be negative and cause infeasibilities + can_exports_h(r,h,t)$[Sw_Canada=1] -*[plus] load from EV charging (baseline/unmanaged) - + evmc_baseline_load(r,h,t)$Sw_EVMC +*[plus] shifted load from adopted DR shape resources + + sum{(i,v)$[dr_shape(i)$valcap(i,v,r,t)], dr_shape_load(i,r,h,t) * CAP(i,v,r,t)} + - sum{(i,v)$[dr_shape(i)$valcap(i,v,r,t)], dr_shape_gen(i,r,h,t) * CAP(i,v,r,t)} -*[plus] shifted load from adopted EVMC shape resources - + sum{(i,v)$[evmc_shape(i)$valcap(i,v,r,t)], evmc_shape_load(i,r,h) * CAP(i,v,r,t)} +* add slack variable to avoid infeasibilities + + RHS_DRSHAPE_SLACK(r,h,t) *[plus] load shifted from other timeslices + sum{flex_type, FLEX(flex_type,r,h,t) }$Sw_EFS_flex @@ -1026,8 +1064,9 @@ eq_rsc_INVlim(r,i,rscbin,t)$[tmodel(t) *to be limited by the numeraire techs' m_rsc_dat *capacity indicated by the resource supply curve (scaled by rsc_capacity_scalar) - m_rsc_dat(r,i,rscbin,"cap")$[not evmc(i)] * ( - 1$[not rsc_capacity_scalar_i(i)] + rsc_capacity_scalar(i,r,t)$rsc_capacity_scalar_i(i)) + m_rsc_dat(r,i,rscbin,"cap") * ( + 1$(not rsc_capacity_scalar_i(i)) + rsc_capacity_scalar(i,r,t)$rsc_capacity_scalar_i(i) + ) * available hydro upgrade capacity + hyd_add_upg_cap(r,i,rscbin,t)$(Sw_HydroCapEnerUpgradeType=1) @@ -1036,7 +1075,7 @@ eq_rsc_INVlim(r,i,rscbin,t)$[tmodel(t) *must exceed the cumulative invested capacity in that region/class/bin... sum{(ii,v,tt)$[valinv(ii,v,r,tt)$(yeart(tt) <= yeart(t))$rsc_agg(i,ii)], INV_RSC(ii,v,r,rscbin,tt) * resourcescaler(ii) } - + *plus exogenous (pre-start-year) capacity, using its level in the first year (tfirst) + sum{(ii,v,tt)$[tfirst(tt)$rsc_agg(i,ii)$exog_rsc(i)], capacity_exog_rsc(ii,v,r,rscbin,tt) } @@ -1183,8 +1222,8 @@ eq_capacity_limit(i,v,r,h,t) $(not spur_techs(i)) $(not storage_standalone(i))$(not storage_hybrid(i)$(not csp(i)))$(not nondispatch(i))].. -*total amount of dispatchable, non-hydro capacity - avail(i,r,h)$[dispatchtech(i)$(not hydro_d(i))] +*total amount of dispatchable, non-hydro, non DR shape and shift capacity + avail(i,r,h)$[dispatchtech(i)$(not hydro_d(i))$(not dr_shape(i))$(not dr_shift(i))] * derate_geo_vintage(i,v) * (1 + sum{szn, h_szn(h,szn) * seas_cap_frac_delta(i,v,r,szn,t)}) * CAP(i,v,r,t) @@ -1207,8 +1246,6 @@ eq_capacity_limit(i,v,r,h,t) *subtract energy that would be embedded in a capacity-only upsizing - degrade(i,tt,t) * INV_CAP_UP(i,v,r,rscbin,tt)$allow_cap_up(i,v,r,rscbin,tt) }) )$[not dispatchtech(i)] -*add EVMC shape generation - + (evmc_shape_gen(i,r,h) * CAP(i,v,r,t)) =g= @@ -1223,6 +1260,7 @@ eq_capacity_limit(i,v,r,h,t) + CCSFLEX_POW(i,v,r,h,t) $[ccsflex(i)$(Sw_CCSFLEX_BYP OR Sw_CCSFLEX_STO OR Sw_CCSFLEX_DAC)] ; + * --------------------------------------------------------------------------- * For hybrid resources, the sum of generation from constituent resources is * limited by the available generation at that site, which is defined in @@ -3013,11 +3051,10 @@ eq_biousedlimit(bioclass,usda_region,t)$tmodel(t).. * --------------------------------------------------------------------------- *storage use cannot exceed capacity -*this constraint does not apply to CSP+TES or hydro pump upgrades -eq_storage_capacity(i,v,r,h,t)$[valgen(i,v,r,t) - $(storage_standalone(i)$(not evmc_storage(i)) - or evmc_storage(i) - $[evmc_storage_charge_frac(i,r,h,t)$evmc_storage_discharge_frac(i,r,h,t)] +*this constraint does not apply to DR Shift, CSP+TES or hydro pump upgrades +eq_storage_capacity(i,v,r,h,t) + $[valgen(i,v,r,t) + $(storage_standalone(i) or storage_hybrid(i)$(not csp(i))) $tmodel(t)].. @@ -3028,16 +3065,15 @@ eq_storage_capacity(i,v,r,h,t)$[valgen(i,v,r,t) =g= -* [plus] Generation from storage, excluding hybrid+storage and adjusting evmc_storage for time-varying discharge (deferral) availability - GEN(i,v,r,h,t)$(not storage_hybrid(i)$(not csp(i))) / (1$(not evmc_storage(i)) + evmc_storage_discharge_frac(i,r,h,t)$evmc_storage(i)) +* [plus] Generation from storage, excluding hybrid+storage + GEN(i,v,r,h,t)$(not storage_hybrid(i)$(not csp(i))) * [plus] Generation from battery of hybrid+storage + GEN_STORAGE(i,v,r,h,t)$[storage_hybrid(i)$(not csp(i))$Sw_HybridPlant] * [plus] Storage charging -* excludes hybrid plant+storage and adjusting evmc_storage for time-varying charge (add back deferred EV load) availability - + STORAGE_IN(i,v,r,h,t)$[not storage_hybrid(i)$(not csp(i))] / (1$(not evmc_storage(i)) + evmc_storage_charge_frac(i,r,h,t)$evmc_storage(i)) - +* excludes hybrid plant+storage + + STORAGE_IN(i,v,r,h,t)$(not storage_hybrid(i)$(not csp(i))) * hybrid+storage plant: plant generation + STORAGE_IN_PLANT(i,v,r,h,t)$[storage_hybrid(i)$(not csp(i))$dayhours(h)$Sw_HybridPlant] * hybrid+storage plant: Grid generation @@ -3047,6 +3083,43 @@ eq_storage_capacity(i,v,r,h,t)$[valgen(i,v,r,t) + sum{ortype$[Sw_OpRes$opres_model(ortype)$opres_h(h)], reserve_frac(i,ortype) * OPRES(ortype,i,v,r,h,t) } ; +* --------------------------------------------------------------------------- +* demand shifting specific storage constraints to handle 0 avaialbility fractions of charge/disharge. +* constain generation from demand shifting storage to be less than or equal +* to capacity adjusted for availability fraction + +* DR shift resource can only generate when discharge fraction is non-zero +eq_dr_shift_gen_capacity(i,v,r,h,t) + $[Sw_DRShift + $dr_shift(i) + $valgen(i,v,r,t) + $tmodel(t)].. + +* capacity of demand shifting storage technologies modified by availability fraction + CAP(i,v,r,t)* dr_shift_discharge_frac(i,r,h,t) + + =g= + +* demand shifting deferment + GEN(i,v,r,h,t) +; + + +* DR shift resource can only charge when charge fraction is non-zero +eq_dr_shift_storage_in_capacity(i,v,r,h,t) + $[Sw_DRShift + $dr_shift(i) + $valgen(i,v,r,t) + $tmodel(t)].. + +* capacity of demand shifting storage technologies modified by availability fraction + CAP(i,v,r,t)* dr_shift_charge_frac(i,r,h,t) + + =g= + +* demand shifting payback/charging + STORAGE_IN(i,v,r,h,t) +; * --------------------------------------------------------------------------- @@ -3164,8 +3237,8 @@ eq_storage_duration(i,v,r,h,t)$[valgen(i,v,r,t)$valcap(i,v,r,t) * [plus] storage duration times storage capacity for fixed-duration techs storage_duration(i) * CAP(i,v,r,t) * (1$CSP_Storage(i) + 1$psh(i) + bcr(i)$pvb(i)) -* [plus] EVMC storage has time-varying energy capacity - + evmc_storage_energy_hours(i,r,h,t) * CAP(i,v,r,t) * (bcr(i)$evmc_storage(i)) +* [plus] DR Shift has time-varying energy capacity + + dr_shift_energy_hours(i,r,h,t) * CAP(i,v,r,t) * (bcr(i)$dr_shift(i)) * [plus] battery storage capacity + CAP_ENERGY(i,v,r,t)$battery(i) @@ -3179,16 +3252,15 @@ eq_storage_duration(i,v,r,h,t)$[valgen(i,v,r,t)$valcap(i,v,r,t) * Charging power must be less than a specified fraction of power output capacity * This is required in addition to eq_storage_capacity for facilities where input capacity < output capacity. -* If storinmaxfrac were applied to CAP in eq_storage_capacity, it would also limit output capacity. eq_storage_in_cap(i,v,r,h,t)$[(storage_standalone(i) or hyd_add_pump(i))$valgen(i,v,r,t)$valcap(i,v,r,t) $tmodel(t)$(storinmaxfrac(i,v,r) < 1)].. *[plus] maximum storage input capacity as a fraction of output capacity and accounting for availability -* for evmc_storage this adjust for time-varying availability of charging (add back deferred EV load) +* for DR Shifting this adjust for time-varying availability of charging (add back deferred EV load) avail(i,r,h) * storinmaxfrac(i,v,r) * CAP(i,v,r,t) * (1 + sum{szn, h_szn(h,szn) * seas_cap_frac_delta(i,v,r,szn,t)}) - * (1$(not evmc_storage(i)) + evmc_storage_charge_frac(i,r,h,t)$evmc_storage(i)) + * (1$(not dr_shift(i)) + dr_shift_charge_frac(i,r,h,t)$dr_shift(i)) =g= diff --git a/c_supplyobjective.gms b/c_supplyobjective.gms index 38a5b0b36..9b00de59e 100644 --- a/c_supplyobjective.gms +++ b/c_supplyobjective.gms @@ -14,7 +14,7 @@ Equation * note these are not restricited to positive domain Variable Z "--$-- total cost of operations and investment, scale varies based on cost_scale" Z_op(t) "--$-- total cost of operations", - Z_inv(t) "--$-- total cost of operations" + Z_inv(t) "--$-- total cost of investment" ; * objective function is the sum over modeled years of the investment @@ -86,6 +86,9 @@ eq_ObjFn_inv(t)$tmodel(t).. *Note that existing wst data is not consistent with availability of water source in the region + sum{(wst,r), 1E6 * WATER_CAPACITY_LIMIT_SLACK(wst,r,t) }$[Sw_WaterMain$Sw_WaterCapacity] +*slack variable for DR infeasibilites + + sum{(r,h), 1E6 * RHS_DRSHAPE_SLACK(r,h,t) } + * --- cost of refurbishments of RSC tech--- + sum{(i,v,r)$[Sw_Refurb$valinv(i,v,r,t)$refurbtech(i)], cost_cap_fin_mult(i,r,t) * cost_cap(i,t) * INV_REFURB(i,v,r,t) diff --git a/cases.csv b/cases.csv index 317faeb06..d6f42b542 100644 --- a/cases.csv +++ b/cases.csv @@ -30,9 +30,10 @@ plantchar_upv,UPV cost and performance inputs (inputs/plant_characteristics/{pla ccsflexscen,"Flexible CCS scenario (inputs\plant_characteristics\{ccsflexscen}_cost/perf.csv).The options for ccsflexscen start with 'ccsflex_' and the switch should be set to the file name, dropping '_cost' or '_perf' (ex: ccsflex_ATB_2020)",ccsflex_ATB_2020,ccsflex_ATB_2020, ccs_upgrade_cost_case,case in upgrade_cost_ccs_coal and upgrade_cost_ccs_gas to use for ccs retrofit costs,atb22_1p2_moderate; atb22_1p2_advanced,atb22_1p2_moderate, coalscen,"Coal price scenario (inputs\fuelprices\{coalscen}.csv). The options for coalscen start with 'coal_' and the switch should be set to the file name, dropping 'coal' (ex: AEO_2025_reference)",AEO_(2023|2025)_reference,AEO_2025_reference, -demandscen,Demand scenario (see inputs\load),N/A,AEO_2025_reference, +demandscen,Demand scenario (see inputs\load),N/A,AEO_2023_reference, dr_shedscen,DR shed scenario,demo_data_January_2025,demo_data_January_2025, -evmcscen,EVMC scenario for load and supply curve and flexibility,Baseline,Baseline, +dr_shapescen,DR shed scenario,ex_dr1 ,ex_dr1, +dr_shiftscen,DR shed scenario,ex_dr1 ,ex_dr1, geodiscov,Annual discover rates for new geothermal sites,BAU; TI,BAU, geohydrosupplycurve,Geohydro Supply Curve,ATB_2023,ATB_2023, egssupplycurve,EGS Supply Curve,ATB_2023; reV,reV, @@ -74,7 +75,6 @@ mindev,minimum deviation for a hintage to qualify for a new bin,int,50, unitdata,"Unit Database: ""EIA-NEMS"" for NEMS",EIA-NEMS,EIA-NEMS, marg_vre_mw,MW for marginal VRE curt/cc calcs,N/A,1000, marg_stor_mw,MW for marginal storage capacity credit,N/A,100, -marg_evmc_mw,MW for marginal electric vehicle managed charging (EVMC) capacity credit,N/A,100, GSw_AnnualCap,CO2/CO2e emission cap. Turn off cap (0) or turn on CO2 only cap (1) or turn on CO2e cap (2) or include H2 leakage in CO2e cap (3) ,0; 1; 2; 3,0, GSw_AnnualCapScen,Scenario for CO2 cap pathway (see inputs\emission_constraints\co2_cap.csv),N/A,default, GSw_AVG_iter,Select method for choosing which iterations are used for CC/curt calculations,0; 1,1, @@ -132,10 +132,10 @@ GSw_DAC_Gas,"Turn on or off the representation of gas fueled direct air capture GSw_DAC_Gas_Case,DAC gas parameterization case (See inputs/consume/dac_gas_[GSw_DAC_Gas_Case].csv),BVRE_2021_(high|mid|low),BVRE_2021_mid, GSw_distpv,Turn on/off distpv,0;1,1, GSw_DRShed, switch to turn on/off demand response shed resource,0;1,0, +GSw_DRShape, switch to turn on/off demand response shape resource,0;1,0, +GSw_DRShift, switch to turn on/off demand response shift resource,0;1,0, GSw_EFS_Flex,Switch for turning EFS load flexibility on or off,0,0, GSw_EFS2_FlexCase,"Case used for electrification flex_type - format is {1}_{2}, where 1 in [EFS_REFERENCE, EFS_MEDIUM, EFS_HIGH, EFS_Clean2035] and 2 in [Baseflex, Currentflex, Enhancedflex, Uberflex1, Uberflex2]",N/A,EFS_MEDIUM_EnhancedflexStretch2046, -GSw_EVMC,Turn on adoptable EV managed charging,0; 1,0, -GSw_FakeData,Use fake capacity factor profiles (for TESTING ONLY when you do not want to download the real CF data),^[0-1]$,0, GSw_ForcePrescription,Turn on/off forced prescriptions - turning off will allow unlimited but not free builds in historical years,0; 1,1, GSw_FuelCell,Turn on/off fuel cells (natural gas / H2) as a technology option,0; 1,0, GSw_FutureHydCF_RepYears,_-delimited years of historical hydro plant data from which to calculate capacity factors representing future hydro,N/A,2007_2008_2009_2010_2011_2012_2013_2016_2017_2018_2019_2020_2021_2022, diff --git a/cases_examples.csv b/cases_examples.csv index d30998827..1365912d9 100644 --- a/cases_examples.csv +++ b/cases_examples.csv @@ -1,6 +1,6 @@ ,Default Value,ERCOT_rep_days,ERCOT_rep_wek,ERCOT_full_year,ERCOT_cap_credit,USA_20_rep_days,USA_69_regions,USA_54_regions,USA_FasterSolve,NorthDakota_county,NY_VT_mixed,ERCOT_county -ignore,1,,,,,,,,,,, -endyear,,2032,2032,2032,2032,,,,,2032,2032,2032 +ignore,1,,,,0,,,,,,, +endyear,,2032,2032,2032,2050,,,,,2032,2032,2032 GSw_Region,,interconnect/texas,interconnect/texas,interconnect/texas,interconnect/texas,,,,,st/ND,st/NY.VT,interconnect/texas GSw_ZoneSet,,,,,,,z69,z54,z54,z3109,PJMcounty,z3109 GSw_GasCurve,,2,2,2,2,,,,,2,2,2 diff --git a/d1_financials.gms b/d1_financials.gms index e6e6815fe..8a01d773e 100644 --- a/d1_financials.gms +++ b/d1_financials.gms @@ -111,6 +111,10 @@ rsc_fin_mult(i,r,t)$psh(i) = cost_cap_fin_mult(i,r,t) * hydrocapmult(t,i) ; rsc_fin_mult_noITC(i,r,t)$psh(i) = cost_cap_fin_mult_noITC(i,r,t) * hydrocapmult(t,i) ; rsc_fin_mult(i,r,t)$dr_shed(i) = cost_cap_fin_mult(i,r,t)* dr_shed_capmult(i,r,t) ; rsc_fin_mult_noITC(i,r,t)$dr_shed(i) = cost_cap_fin_mult_noITC(i,r,t)* dr_shed_capmult(i,r,t) ; +rsc_fin_mult(i,r,t)$dr_shape(i) = cost_cap_fin_mult(i,r,t)* dr_shape_capmult(i,r,t) ; +rsc_fin_mult_noITC(i,r,t)$dr_shape(i) = cost_cap_fin_mult_noITC(i,r,t)* dr_shape_capmult(i,r,t) ; +rsc_fin_mult(i,r,t)$dr_shift(i) = cost_cap_fin_mult(i,r,t)* dr_shift_capmult(i,r,t) ; +rsc_fin_mult_noITC(i,r,t)$dr_shift(i) = cost_cap_fin_mult_noITC(i,r,t)* dr_shift_capmult(i,r,t) ; * Create a new parameter to hold capital financing multipliers with and without ITC for OSW transmission costs inside the resource supply curve cost * Currently, OSW receives federal incentives in both its capital and transmission costs, hence this custom application for OSW diff --git a/d1_temporal_params.gms b/d1_temporal_params.gms index 444c7fc5e..1b6a007be 100644 --- a/d1_temporal_params.gms +++ b/d1_temporal_params.gms @@ -709,64 +709,68 @@ $include inputs_case%ds%%temporal_inputs%%ds%flex_frac_all.csv $offdelim $onlisting / ; +$offempty - -* EV adoptable managed charging -parameter evmc_baseline_load(r,allh,allt) "--fraction-- how much adopted shaped EV load is allowed to be shed in each timeslice h" -/ -$offlisting -$ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_baseline_load.csv -$offdelim -$onlisting -/ ; - -parameter evmc_shape_gen(i,r,allh) "--fraction-- how much adopted shaped EV load is allowed to be shed in each timeslice h" +* DR Shape +$onempty +parameter dr_shape_gen(i,r,allh,allt) "--fraction-- how much adopted DR shape load is allowed to be shed in each timeslice h" / $offlisting $ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_shape_generation.csv +$include inputs_case%ds%%temporal_inputs%%ds%dr_shape_generation.csv +$include inputs_case%ds%stress%stress_year%%ds%dr_shape_generation.csv $offdelim $onlisting / ; +$offempty -parameter evmc_shape_load(i,r,allh) "--fraction-- how much adopted shaped EV load is added in each timeslice h" +$onempty +parameter dr_shape_load(i,r,allh,allt) "--fraction-- how much adopted DR shape load is added in each timeslice h" / $offlisting $ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_shape_load.csv +$include inputs_case%ds%%temporal_inputs%%ds%dr_shape_load.csv +$include inputs_case%ds%stress%stress_year%%ds%dr_shape_load.csv $offdelim $onlisting / ; +$offempty -parameter evmc_storage_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted EV storage discharge capacity that can be discharged (deferred charging) in each timeslice h" +$onempty +* DR shift adoption +parameter dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be discharged (deferred charging) in each timeslice h" / $offlisting $ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_storage_discharge.csv +$include inputs_case%ds%%temporal_inputs%%ds%dr_shift_discharge.csv $offdelim $onlisting / ; +$offempty -parameter evmc_storage_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted EV storage discharge capacity that can be charged (add back deferred charging) in each timeslice h" +$onempty +parameter dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be charged (add back deferred charging) in each timeslice h" / $offlisting $ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_storage_charge.csv +$include inputs_case%ds%%temporal_inputs%%ds%dr_shift_charge.csv $offdelim $onlisting / ; +$offempty -parameter evmc_storage_energy_hours(i,r,allh,allt) "--hours-- Allowable EV storage SOC (quantity deferred EV charge) [MWh] divided by nameplate EVMC discharge capacity [MW]" +$onempty +parameter dr_shift_energy_hours(i,r,allh,allt) "--hours-- Allowable DR shift device storage SOC (quantity deferred charge) [MWh] divided by nameplate discharge capacity [MW]" / $offlisting $ondelim -$include inputs_case%ds%%temporal_inputs%%ds%evmc_storage_energy.csv +$include inputs_case%ds%%temporal_inputs%%ds%dr_shift_profile_energy.csv $offdelim $onlisting / ; $offempty + * Written by hourly_writetimeseries.py parameter load_allyear(r,allh,allt) "--MW-- end-use load by region, timeslice, and year" / diff --git a/d3_data_dump.gms b/d3_data_dump.gms index 29c97036e..9b49519f0 100644 --- a/d3_data_dump.gms +++ b/d3_data_dump.gms @@ -50,6 +50,8 @@ cost_cap_fin_mult_filt(i,r,t) "--unitless-- capital cost financial multipli cost_vom_filt(i,v,r) "--$/MWh-- VO&M costs filtered for the previous solve year and existing capacity" ctt_i_ii_filt(i,ii) "--set-- set linking watercooling techs i to numeraire techs ii filtered for existing watercooling techs" ctt_i_ii_psh(i,ii) "--set-- set linking PSH techs with water i to numeraire techs ii filtered for valid capacity techs" +dr_shape_load_mod(i,v,r,allh,t) "--MW-- power consumed or reduced for DR shape" +dr_shift_load_mod(i,v,r,allh,t) "--MW-- power consumed or reduced for DR shift" emissions_price(e,r) "--2004$/metric ton-- combined emissions taxes and marginal prices for emissions caps" emit_rate_filt(e,i,v,r) "--metric tons/MWh-- emission rate for the previous solve year" energy_price(r,allh) "--2004$/MWh-- energy price from the previous solve year" @@ -141,9 +143,7 @@ ret(i,v,r)$valcap_ivr(i,v,r) = sum{t, ret_ivrt(i,v,r,t) } ; cap_exog_filt(i,v,r)$([not canada(i)]$valcap_ivr(i,v,r)) = sum{t$tnext(t), m_capacity_exog(i,v,r,t) } ; -gen_h_stress_filt(i,r,allh,t)$[tcur(t)$valgen_irt(i,r,t)$h_stress_t(allh,t)] = - sum{v$valgen(i,v,r,t), GEN.l(i,v,r,allh,t)} -; + *============================ * Fuel prices *============================ @@ -300,6 +300,18 @@ ra_cap_loadsite(r,t)$[Sw_LoadSiteCF$val_loadsite(r)] = CAP_LOADSITE.l(r,t) ; prod_filt(i,v,r,h)$[sum{t$tcur(t), valcap(i,v,r,t)}$consume(i)$hours(h)] = sum{(p,t)$[i_p(i,p)$tcur(t)], PRODUCE.l(p,i,v,r,h,t) / prod_conversion_rate(i,v,r,t) } ; +* DR Shape load modification based on net dr shift charging +dr_shape_load_mod(i,v,r,h,t)$[tcur(t)$dr_shape(i)$hours(h)] = + (dr_shape_load(i,r,h,t) - dr_shape_gen(i,r,h,t)) * CAP.l(i,v,r,t); + +* DR Shift load modification based on net dr shift charging +dr_shift_load_mod(i,v,r,h,t)$[tcur(t)$dr_shift(i)$hours(h)] = + STORAGE_IN.l(i,v,r,h,t)-GEN.l(i,v,r,h,t) ; + +* DR Shed load modification +gen_h_stress_filt(i,r,h,t)$[tcur(t)$valgen_irt(i,r,t)$h_stress_t(h,t)] = + sum{v$valgen(i,v,r,t), GEN.l(i,v,r,h,t)}; + *============================ * Get ReEDS emissions prices [$/metric ton] *============================ @@ -358,6 +370,14 @@ execute_unload 'ReEDS_Augur%ds%augur_data%ds%reeds_data_%cur_year%.gdx' ctt_i_ii_filt ctt_i_ii_psh degrade_annual + dr_shape + dr_shape_gen + dr_shape_load + dr_shape_load_mod + dr_shift_load_mod + dr_shift_charge_frac + dr_shift_discharge_frac + dr_shift_energy_hours emissions_price emit_rate_filt energy_price diff --git a/d_solveallyears.gms b/d_solveallyears.gms index 204d1bc54..92568a1ac 100644 --- a/d_solveallyears.gms +++ b/d_solveallyears.gms @@ -40,14 +40,12 @@ tload(t)$tmodel(t) = yes ; $gdxin ReEDS_Augur%ds%augur_data%ds%ReEDS_Augur_merged_%niter%.gdx $loaddcr cc_old_load2 = cc_old $loaddcr cc_mar_load2 = cc_mar -$loaddcr cc_evmc_load2 = cc_evmc $loaddcr sdbin_size_load2 = sdbin_size $gdxin cc_old_load(i,r,szn,t) = sum{loadset, sum{ccreg$r_ccreg(r,ccreg), cc_old_load2(loadset,i,r,ccreg,szn,t) } } ; cc_mar_load(i,r,szn,t) = sum{loadset, sum{ccreg$r_ccreg(r,ccreg), cc_mar_load2(loadset,i,r,ccreg,szn,t) } } ; -cc_evmc_load(i,r,szn,t) = sum{loadset, cc_evmc_load2(loadset,i,r,szn,t) } ; sdbin_size_load(ccreg,szn,sdbin,t) = sum{loadset, sdbin_size_load2(loadset,ccreg,szn,sdbin,t) } ; diff --git a/d_solveoneyear.gms b/d_solveoneyear.gms index b3484a805..17700cc9e 100644 --- a/d_solveoneyear.gms +++ b/d_solveoneyear.gms @@ -146,7 +146,6 @@ tload("%cur_year%") = yes ; $gdxin ReEDS_Augur%ds%augur_data%ds%ReEDS_Augur_%prev_year%.gdx $loaddcr cc_old_load = cc_old $loaddcr cc_mar_load = cc_mar -$loaddcr cc_evmc_load = cc_evmc $loaddcr sdbin_size_load = sdbin_size $gdxin diff --git a/d_solveprep.gms b/d_solveprep.gms index dbaa6df9b..5a6100162 100644 --- a/d_solveprep.gms +++ b/d_solveprep.gms @@ -39,7 +39,6 @@ parameter cc_old_load(i,r,ccreg,ccseason,t) "--MW-- cc_old loading in from the cc_out gdx file" 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" ; @@ -139,7 +138,6 @@ set ; parameter - cc_evmc_load2(loadset,i,r,ccseason,t) "--fraction-- cc_evmc loading in from the cc_out gdx file" cc_iter(i,v,r,ccseason,t,cciter) "--fraction-- Actual capacity value in iteration cciter" cc_mar_load2(loadset,i,r,ccseason,t) "--fraction-- cc_mar loading in from the cc_out gdx file" cc_old_load2(loadset,i,r,ccseason,t) "--MW-- cc_old loading in from the cc_out gdx file" diff --git a/docs/source/model_documentation.md b/docs/source/model_documentation.md index 06d890339..210191291 100644 --- a/docs/source/model_documentation.md +++ b/docs/source/model_documentation.md @@ -9,7 +9,7 @@ We are especially grateful to Walter Short who first envisioned and developed th Finally, we are grateful to all those who helped sponsor ReEDS model development and analysis, particularly supporters from the U.S. Department of Energy (DOE) but also others who have funded our work over the years. ```{admonition} Suggested Citation -National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model documentation — ReEDS 2.0*. https://reeds-model.github.io/ReEDS/model_documentation.html +National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model documentation — ReEDS 2.0*. https://natlabrockies.github.io/ReEDS-2.0/model_documentation.html ``` @@ -43,6 +43,7 @@ National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model docum | dGen | Distributed Generation Market Demand model | | DNI | direct normal insolation | | DOE | U.S. Department of Energy | +| DR | demand response | DSIRE | Database of State Incentives for Renewables and Efficiency | | EAC | energy attribute credit | | EGS | enhanced geothermal system | @@ -153,11 +154,11 @@ National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model docum ## Introduction -This documentation describes the structure and key data elements of the [Regional Energy Deployment System](https://www.nlr.gov/analysis/reeds/) (ReEDS) model, which is maintained and operated by the National Laboratory of the Rockies (NLR). +This documentation describes the structure and key data elements of the [Regional Energy Deployment System](https://www.nrel.gov/analysis/reeds/) (ReEDS) model, which is maintained and operated by the National Laboratory of the Rockies (NLR). In this introduction, we provide a high-level overview of ReEDS objectives, capabilities, and applications. We also provide a short discussion of important caveats that apply to any ReEDS analysis. -The ReEDS model code and input data can be accessed at . +The ReEDS model code and input data can be accessed at . ### Overview @@ -199,7 +200,7 @@ ReEDS has been the primary analytical tool in numerous studies, including the Re ReEDS has also been used to examine the impacts of a range of existing and proposed energy policies {cite:p}`lantzImplicationsPTCExtension2014, maiImpactFederalTax2015, gagnonImpactRetailElectricity2017, steinbergEvaluatingImpactsInflation2023, denholmExaminingSupplySideOptions2022`. Transmission and grid integration studies often require scenarios of future power systems, and ReEDS has been used in such studies, e.g., the National Transmission Planning Study {cite}`doeNationalTransmissionPlanning2024`, the Atlantic Offshore Wind Transmission Study {cite}`brinkmanAtlanticOffshoreWind2024a`, and the North American Renewable Integration Study {cite}`brinkmanNorthAmericanRenewable2021a`. Many other studies, conducted by NLR and non-NLR researchers, use ReEDS to evaluate diverse topics relevant to the power sector. -The [ReEDS website](https://www.nlr.gov/analysis/reeds/) includes a list of publications with NLR co-authorship that use ReEDS. +The [ReEDS website](https://www.nrel.gov/analysis/reeds/) includes a list of publications with NLR co-authorship that use ReEDS. ### Summary of Caveats @@ -1196,7 +1197,7 @@ As a result, its capital cost is uprated by the ratio of a 15-year evaluation wi Batteries are assumed to have a round-trip efficiency of 85% and a representative size of 60 MW. Existing PSH capacity is represented in the model according to the input plant database. -New PSH potential is derived from a national PSH resource assessment described in {cite}`rosenliebClosedLoopPumpedStorage2022` and at . +New PSH potential is derived from a national PSH resource assessment described in {cite}`rosenliebClosedLoopPumpedStorage2022` and at . Several PSH supply curves are available in ReEDS, including alternative storage durations (8, 10, or 12 hours) and alternative environmental site exclusions specifying whether new PSH reservoir construction can occur where there are ephemeral streams as defined by the National Hydrography Dataset, or whether to include sites that utilize existing reservoirs. The PSH resource assessment includes site-level capital costs calculated from a detailed bottom-up cost model that incorporates dam, reservoir, and other site characteristics {cite}`cohenComponentLevelBottomUpCost2023`. PSH fixed O&M costs and round-trip efficiency are taken from {cite}`mongird2020GridEnergy2020`, and PSH cost and resource assumptions are taken from the ATB {cite}`nrelAnnualTechnologyBaseline2024`. @@ -1341,7 +1342,7 @@ At least 1% of the region's land area must overlap with the storage availability ReEDS requires any hydrogen storage be sized to hold at least 24 hours' worth of hydrogen to run the H2-CTs in a given region. ReEDS also allows the modeling of interzonal hydrogen transport. -Transport requires the construction of hydrogen pipelines, and the model assumes cost estimates based on the H2 [SERA model](https://www.nlr.gov/hydrogen/sera-model.html). +Transport requires the construction of hydrogen pipelines, and the model assumes cost estimates based on the H2 [SERA model](https://www.nrel.gov/hydrogen/sera-model.html). Modeling hydrogen transport in ReEDS is an experimental feature and, because this feature adds significant runtime, the model includes the option to model zonal balancing with transport disabled or a fixed \$/kg hydrogen transport cost. @@ -1516,7 +1517,8 @@ The 2026 limits are based on plants with a signed interconnection agreement, and Values between years are interpolated based on the 2026 and 2030 points. The limits are applied regionally by technology. -To avoid infeasibility, the constraint allows a technology to be built over the capacity limits with a penalty of $10,000/kW. +To avoid infeasibility, the constraint allows for a technology to be built over the capacity limits with a penalty of $10,000/kW. + ### Regional Parameter Variations and Adjustments @@ -1755,8 +1757,17 @@ The `GSw_RetailAdder` switch (default 0, units of [2004\$/MWh]) adds a cost adde ### Demand Response -Demand response (DR) is turned off by default in ReEDS, but the user has the option to enable DR via load shedding. -The demonstration data used to characterize the amount of load shedding available were obtained from a workflow which includes ResStock, DR-Path, and dsgrid. +Unlike other generation or storage technologies, demand response (DR) contributes to system supply-demand balance through the management of demand-side loads. +Load management can be facilitated by different types of signals and responses on different timescales and with different types of communication. +For example, price-responsive dispatch mechanisms like time-of-use rates or real-time pricing involve one-way communication of prices that electricity users and/or their devices can use to inform consumption decisions. +On the other hand, direct load control programs often involve two-way communications between a utility or an aggregator and devices (e.g., thermostat, electric vehicle charger, industrial equipment) whose consumption patterns are modified to shed or shift load away from peak or reliability event times. +ReEDS represents price-responsive DR as a resource that modifies load based on exogenous shapes and represents direct load control programs as dispatchable shed or shift resources. + +DR is turned off by default in ReEDS, but the user has the option to enable DR via load shedding. + +#### Load Shedding + +The demonstration data used to characterize the amount of load shedding avaiable were obtained from a workflow which includes ResStock, DR-Path, and dsgrid. The data reflect the technical potential for residential load shedding in 11 states (AZ, CA, CO, FL, GA, MN, MT, NM, NY, TX, WA) and were developed using the 2018 weather year. Through this implementation the demand response is effectively added as a new supply curve-based resource; however, the DR shed potential is only available during stress periods. If ReEDS chooses to dispatch DR shed, the "generation" from the resource is subtracted from the load considered in the resource adeqaucy calculations. @@ -1764,6 +1775,7 @@ The capital costs for the residential resource are derived from the installation In addition to only allowing the shed resource to be dispatched during stress periods, a max daily capacity factor is defined. For the residential heating and cooling resources the max daily capacity factor is set to 4 hours per day. + ## Transmission ReEDS considers two categories of transmission: "local interconnection" of generation capacity within the model zones and "interzonal" or "long-distance" transmission between the model zones. @@ -3408,7 +3420,7 @@ To enable more detailed study of system operations, NLR has developed a translat expansion solution for any solve year in production cost models (PCMs). R2X supports translations to two PCMs: Sienna and PLEXOS. -[Sienna](https://www.nlr.gov/analysis/sienna) is an open-source NLR modeling tool for scientific energy system analysis. +[Sienna](https://www.nrel.gov/analysis/sienna) is an open-source NLR modeling tool for scientific energy system analysis. As part of its core capabilities, `Sienna\Ops` supports the simulation of system scheduling---including unit commitment and economic dispatch, automatic generation control, and nonlinear optimal power flow---along with sequential problem specifications to enable production cost modeling techniques. NLR has used Sienna in several analyses such as Puerto Rico 100 and the National Transmission Planning Study where it was used as the PCM tool for transmission planning and operational analysis for future scenarios {cite:p}`muralibagguPuertoRicoGrid2024, doeNationalTransmissionPlanning2024`. @@ -3446,7 +3458,7 @@ such as a long-run marginal emission rate.[^ref64] [^ref64]: The long-run marginal emission rate is a metric designed to help estimate the emissions induced (or avoided) by a persistent change in electricity consumption. Unlike the short-run marginal emission rate, the long-run marginal emission rate reflects the structural changes to the grid that can be induced by a persistent change in electricity consumption. -Datasets derived through Cambium can be viewed and downloaded at . +Datasets derived through Cambium can be viewed and downloaded at . The documentation for Cambium contains descriptions of the metrics reported in the databases and the methods for calculating those metrics {cite}`gagnonCambium2022Scenario2023`. diff --git a/docs/source/postprocessing_tools.md b/docs/source/postprocessing_tools.md index 0c9367b7a..29230e804 100644 --- a/docs/source/postprocessing_tools.md +++ b/docs/source/postprocessing_tools.md @@ -145,3 +145,4 @@ For more information on this module, see the [retail_rate_module documentation]( The commercial software Tableau can be used for the analysis and publication of ReEDS results. For more information on how to use Tableau with ReEDS, see the [Tableau documentation](tableau.md). + diff --git a/docs/source/user_guide.md b/docs/source/user_guide.md index d22cd5e5f..2d8ae186e 100644 --- a/docs/source/user_guide.md +++ b/docs/source/user_guide.md @@ -112,7 +112,7 @@ The `GSw_LoadProfiles` switch corresponds to a file saved to `inputs/remote/dema | Switch Name | Description of Profile | Origin | Weather year included | | ------------- | ------------- | ------------- | ------------- | -| historic | Detrended historic demand from 2007-2013 and 2016-2023. This is multiplied by annual growth factors from AEO to forecast load growth. | Produced by the ReEDS team from a compilation of data sources. More detail can be found in the [hourlize readme](https://github.com/ReEDS-Model/ReEDS/tree/main/hourlize). | 2007-2013 & 2016-2023 | +| historic | Detrended historic demand from 2007-2013 and 2016-2023. This is multiplied by annual growth factors from AEO to forecast load growth. | Produced by the ReEDS team from a compilation of data sources. More detail can be found in the [hourlize readme](https://github.com/NatLabRockies/ReEDS-2.0/tree/main/hourlize). | 2007-2013 & 2016-2023 | | EFS_Clean2035_LTS | Net-zero emissions, economy wide, by 2050 based on the White House's Long Term Strategy as shown here: | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | | EFS_Clean2035 | Accelerated Demand Electrification (ADE) profile. This profile was custom made for the 100% Clean Electricity by 2035 study. More information about how it was formed can be found in Appendix C. | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | | EFS_Clean2035clip1pct | Same as Clean2035 but clips off the top 1% of load hours. | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | @@ -138,7 +138,7 @@ The `GSw_LoadProfiles` switch corresponds to a file saved to `inputs/remote/dema ### Different weather years -For EER’s load profiles, “weather” includes everything considered by NLR's [ResStock](https://resstock.nlr.gov/) and [ComStock](https://comstock.nlr.gov/) building models (i.e., temperature, humidity, insolation, and wind speed). This information gets translated into variations in load through regressions and benchmarking with historical system load data for the weather year in question. +For EER’s load profiles, “weather” includes everything considered by NLR's [ResStock](https://resstock.nrel.gov/) and [ComStock](https://comstock.nrel.gov/) building models (i.e., temperature, humidity, insolation, and wind speed). This information gets translated into variations in load through regressions and benchmarking with historical system load data for the weather year in question. ### Demand Response @@ -148,6 +148,7 @@ Demand response is turned off by default. To enable it the following switches ar - `GSw_MaxDailyCF` : turns on/off daily maximum capacity factor constraint - `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity + ## Hydrogen inputs Most hydrogen input files are in the `inputs/consume/` folder. @@ -162,7 +163,7 @@ The low cost scenario assumes further declines from 2030 to 2050. Fixed O&M values are assumed to be 5% of CAPEX (source: ) -Electrolyzer performance (efficiency) as well as SMR cost and performance assumptions are derived from assumptions [H2A: Hydrogen Analysis Production Models](https://www.nlr.gov/hydrogen/h2a-production-models.html), with guidance from Paige Jadun. +Electrolyzer performance (efficiency) as well as SMR cost and performance assumptions are derived from assumptions [H2A: Hydrogen Analysis Production Models](https://www.nrel.gov/hydrogen/h2a-production-models.html), with guidance from Paige Jadun. See original input assumptions in the [ReEDS_Input_Processing repo](https://github.com/ReEDS-Model/ReEDS_Input_Processing/blob/main/hydrogen/costs/H2ProductionCosts-20210414.xlsx). Note that SMR costs are currently in 2018$ and electrolyzer costs are in 2022$. diff --git a/e_report.gms b/e_report.gms index ebd14d10e..4d4525bae 100644 --- a/e_report.gms +++ b/e_report.gms @@ -625,6 +625,13 @@ gen_h(i,r,h,t)$[tmodel_new(t)$valgen_irt(i,r,t)] = * less load from hydrogen production - sum{(v,p)$[consume(i)$valcap(i,v,r,t)$i_p(i,p)], PRODUCE.l(p,i,v,r,h,t) / prod_conversion_rate(i,v,r,t)}$Sw_Prod ; +* Calculate 'generation' from DR shape resource +gen_h(i,r,h,t)$[tmodel_new(t)$dr_shape(i)] = +* minus dr_shape_load loads + - sum{v$[dr_shape(i)$valcap(i,v,r,t)],dr_shape_load(i,r,h,t) * CAP.l(i,v,r,t)} +* plus dr_shape_gen loads + + sum{v$[dr_shape(i)$valcap(i,v,r,t)],dr_shape_gen(i,r,h,t) * CAP.l(i,v,r,t)} +; * A small amount of upv capacity is actually csp-ns, so convert it back now. * UPV capacity is already in MWac at this point (matching csp-ns), * so don't need to account for ILR. @@ -638,6 +645,7 @@ gen_h("upv_6",r,h,t)$[cap_cspns(r,t)$tmodel_new(t)] gen_h("upv_6",r,h,t)$[cap_cspns(r,t)$tmodel_new(t)$(gen_h("upv_6",r,h,t) < 0)] = 0 ; gen_h_nat(i,h,t)$tmodel_new(t) = sum{r, gen_h(i,r,h,t) } ; + * Do it again for stress periods gen_h_stress(i,r,allh,t)$[tmodel_new(t)$valgen_irt(i,r,t)$h_stress_t(allh,t)] = sum{v$valgen(i,v,r,t), GEN.l(i,v,r,allh,t) @@ -647,6 +655,15 @@ gen_h_stress(i,r,allh,t)$[tmodel_new(t)$valgen_irt(i,r,t)$h_stress_t(allh,t)] = - sum{(v,p)$[consume(i)$valcap(i,v,r,t)$i_p(i,p)], PRODUCE.l(p,i,v,r,allh,t) / prod_conversion_rate(i,v,r,t)}$Sw_Prod ; + +* Calculate stress period 'generation' from DR shape resource +gen_h_stress(i,r,allh,t)$[tmodel_new(t)$dr_shape(i)$h_stress_t(allh,t)] = +* minus dr_shape_load loads + - sum{v$[dr_shape(i)$valcap(i,v,r,t)],dr_shape_load(i,r,allh,t) * CAP.l(i,v,r,t)} +* plus dr_shape_gen loads + + sum{v$[dr_shape(i)$valcap(i,v,r,t)],dr_shape_gen(i,r,allh,t) * CAP.l(i,v,r,t)} +; + gen_h_stress_nat(i,allh,t)$[tmodel_new(t)$h_stress_t(allh,t)] = sum{r, gen_h_stress(i,r,allh,t) } ; gen_ann(i,r,t)$tmodel_new(t) = sum{h, gen_h(i,r,h,t) * hours(h) } ; @@ -912,6 +929,10 @@ cap_sdbin_out(i,r,ccseason,sdbin,t)$valcap_irt(i,r,t) = sum{v, CAP_SDBIN.l(i,v,r stor_energy_cap(i,v,r,t)$[tmodel_new(t)$valcap(i,v,r,t)] = storage_duration(i) * CAP.l(i,v,r,t) * (1$CSP_Storage(i) + 1$psh(i) + bcr(i)$[battery(i) or storage_hybrid(i)$(not csp(i))]) ; +* stor_level_cap; energy capacity of DR shift, which has time-varying energy capacity +stor_energy_cap_DR_shift(i,v,r,h,t)$[valgen(i,v,r,t)$dr_shift(i)] = + dr_shift_energy_hours(i,r,h,t) * CAP.l(i,v,r,t) * (bcr(i)) ; + * add PSH energy capacity to cap_energy_ivrt cap_energy_ivrt(i,v,r,t)$[valcap(i,v,r,t)$psh(i)] = CAP.l(i,v,r,t) * storage_duration(i) ; diff --git a/e_report_params.csv b/e_report_params.csv index 70b370208..135185946 100644 --- a/e_report_params.csv +++ b/e_report_params.csv @@ -170,6 +170,7 @@ repgasquant_nat(t),Quads,national consumption of natural gas,,, rggi_price(t),2004$/metric ton,shadow price from RGGI constraint,,, rggi_quant(t),metric tons,annual CO2 cap for the regional greenhouse gas initiative (RGGI),,, "stor_energy_cap(i,v,r,t)",MWh,"energy capacity of storage devices by tech, BA, vintage, and year",,, +"stor_energy_cap_DR_shift(i,v,r,allh,t)",MWh,"energy capacity of DR Shift resources by tech, BA, hour, vintage, and year",,, "storage_duration_out(i,v,r,t)",h,"storage duration of battery",,, "stor_inout(i,v,r,t,*)",MWh,Annual energy going into and out of storage,,, "stor_in(i,v,r,allh,t)",MW,energy going into storage by timeslice,,, diff --git a/input_processing/aggregate_regions.py b/input_processing/aggregate_regions.py index 48679a777..b18880eec 100644 --- a/input_processing/aggregate_regions.py +++ b/input_processing/aggregate_regions.py @@ -1136,7 +1136,7 @@ def agg_disagg(filepath, r2aggreg_glob, r_ba_glob, runfiles_row): dfmap_r_agg.r = dfmap_r_agg.r.map(r2aggreg) dfmap_r_agg = dfmap_r_agg.dissolve('r').loc[aggreg2anchorreg.index].copy() - ## Map endpoints to anchor regions + ## Map endpoints to anchor regions for j in ['x','y']: dfmap_r_agg[j] = dfmap['r'][j].loc[dfmap_r_agg[j].index.map(aggreg2anchorreg)].values dfmap_r_agg[f'centroid_{j}'] = dfmap_r_agg.centroid.x if j == 'x' else dfmap_r_agg.centroid.y diff --git a/input_processing/hourly_writetimeseries.py b/input_processing/hourly_writetimeseries.py index 5fa326089..be5bf2d42 100644 --- a/input_processing/hourly_writetimeseries.py +++ b/input_processing/hourly_writetimeseries.py @@ -264,126 +264,180 @@ def get_yearly_flexibility( set_szn, inputs_case, drcat, + modeledyears, ): """ After clustering based on GSw_HourlyClusterYear and identifying the modeled days, reload the raw flexible DR or EV profiles and extract for the modeled days of each year """ - hoursperperiod = {"day": 24, "wek": 120, "year": np.nan}[sw["GSw_HourlyType"]] - ### Get the set of szn's and h's - szn_h = ( - hmap_1yr.drop_duplicates(["h", "season"]) - .sort_values(["season", "hour"]) - .reset_index(drop=True)[["season", "h"]] - .assign( - periodhour=np.ravel( - ( - [range(1, 25)] * 365 - if sw["GSw_HourlyType"] == "year" - else [range(1, hoursperperiod + 1)] * len(set_szn) - ) - ) - ) - .set_index(["season", "periodhour"]) - .h - ).copy() - - idx_vals = [i + 1 for i in period_szn.index.values] - period_szn_dict = period_szn.set_index("yperiod").to_dict()["season"] - ### Original flexibility data shape = {} shape_out = {} for stype in ["increase", "decrease", "energy"]: if stype == "energy": - if drcat.lower() == "evmc_storage": + if drcat.lower() == "dr_shift": shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"evmc_storage_{stype}.csv") + os.path.join(inputs_case, f"dr_shift_profile_{stype}.csv") ) else: continue - elif drcat.lower() == "evmc_shape": + + elif drcat.lower() == "dr_shape": shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"evmc_shape_profile_{stype}.csv") + os.path.join(inputs_case, f"dr_shape_profile_{stype}.csv") ) - elif drcat.lower() == "evmc_storage": + elif drcat.lower() == "dr_shift": shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"evmc_storage_profile_{stype}.csv") + os.path.join(inputs_case, f"dr_shift_profile_{stype}.csv") ) else: raise ValueError( - f"drcat must be in ['dr','evmc_shape','evmc_storage'] but is '{drcat}'" + f"drcat must be in ['dr','dr_shape','dr_shift'] but is '{drcat}'" ) - unique_techs = len(shape[stype].i.unique()) - unique_years = len(shape[stype].year.unique()) - ### Add time indices ("season" is the identifier for modeled periods) - shape[stype]["yperiod"] = ( - np.ravel([[d] * 24 for d in range(1, 366)] * unique_techs * unique_years) - if sw["GSw_HourlyType"] == "year" - else np.ravel( - [[d] * hoursperperiod for d in idx_vals] * unique_techs * unique_years - ) - ) - shape[stype]["periodhour"] = ( - np.ravel([range(1, 25) for d in range(365)] * unique_techs * unique_years) - if sw["GSw_HourlyType"] == "year" - else np.ravel( - [range(1, hoursperperiod + 1) for d in idx_vals] - * unique_techs - * unique_years - ) - ) - shape[stype]["season"] = shape[stype].yperiod.map(period_szn_dict) + modeledyears_int = [int(y) for y in modeledyears] + shape[stype] = shape[stype].loc[shape[stype].year.isin(modeledyears_int)].reset_index(drop = True) + + unique_techs = len(shape[stype].i.unique()) if 'i' in shape[stype].columns else 1 + + # EER derived shape data is populated for multiple weather years + # The hour column is populated as a timestamp + if len(str(shape[stype].hour[0])) > 4: + # Define timezone to UTC-6 + shape[stype].set_index(pd.to_datetime(shape[stype]['hour']), inplace=True) + shape[stype].index = shape[stype].index.tz_localize('Etc/GMT+6') + shape[stype].drop('hour', axis=1, inplace=True) + shape[stype].reset_index(inplace=True) + + # create dictionary from hmap + hour2h = hmap_1yr.set_index('timestamp')['h'].to_dict() + # Map timestamps to h values + shape[stype]['h'] = shape[stype]['hour'].map(hour2h) + # Filter out hours not in hmap + shape[stype] = shape[stype].loc[~shape[stype]['h'].isnull()] + # Remove timestamp col + shape[stype] = shape[stype].drop(columns = 'hour') + # Flip region columns to single column + region_cols = [col for col in shape[stype].columns if col not in ['i','year','h']] + if region_cols: + shape[stype] = shape[stype].melt( + id_vars=[col for col in shape[stype].columns if col not in region_cols], + value_vars=region_cols, + var_name='r', + value_name='Values' + ) - ### If modeling a full year, keep everything - if sw["GSw_HourlyType"] == "year": - shape_out[stype] = shape[stype].drop( - ["yperiod", "periodhour", "season"], axis=1 - ) - shape_out[stype].index = hmap_1yr.h - ### If using representative periods, pull out the representative periods - elif unique_years == 1: - shape_out[stype] = ( - shape[stype] - .loc[shape[stype].season.isin(rep_periods)] - .drop(["yperiod", "hour", "year"], axis=1) - .set_index(["season", "periodhour"]) - .sort_index() - ) - shape_out[stype].index = shape_out[stype].index.map(szn_h).rename("h") - shape_out[stype] = ( - shape_out[stype] - .reset_index() - .set_index(["h", "i"]) - .stack() - .reset_index() - .rename(columns={"i": "*i", "level_2": "r", 0: "Values"})[ - ["*i", "r", "h", "Values"] - ] - ) + # Reorder columns + shape_out[stype] = shape[stype][['i','r','h','year','Values']].copy() + shape_out[stype] = shape_out[stype].rename(columns={'year':'t','i':'*i'}) + + + # End use shape data populated for single weather year + # The hour column is populated as an integer hour of year else: - shape_out[stype] = ( - shape[stype] - .loc[shape[stype].season.isin(rep_periods)] - .drop(["yperiod", "hour"], axis=1) + hoursperperiod = {"day": 24, "wek": 120, "year": np.nan}[sw["GSw_HourlyType"]] + ### Get the set of szn's and h's + szn_h = ( + hmap_1yr.drop_duplicates(["h", "season"]) + .sort_values(["season", "hour"]) + .reset_index(drop=True)[["season", "h"]] + .assign( + periodhour=np.ravel( + ( + [range(1, 25)] * 365 + if sw["GSw_HourlyType"] == "year" + else [range(1, hoursperperiod + 1)] * len(set_szn) + ) + ) + ) .set_index(["season", "periodhour"]) - .sort_index() - ) + .h + ).copy() - shape_out[stype].index = shape_out[stype].index.map(szn_h).rename("h") - shape_out[stype] = ( - shape_out[stype] - .reset_index() - .set_index(["h", "i", "year"]) - .stack() - .reset_index() - .rename(columns={"i": "*i", "level_3": "r", "year": "t", 0: "Values"})[ - ["*i", "r", "h", "t", "Values"] - ] + idx_vals = [i + 1 for i in period_szn.index.values] + period_szn_dict = period_szn.set_index("yperiod").to_dict()["season"] + + ### Filter out the days not in the stress periods + shape[stype]['day'] = np.ceil(shape[stype].hour/24) + + shape[stype] = shape[stype].loc[shape[stype]['day'].isin(list(period_szn_dict.keys()))] + + unique_years = len(shape[stype].year.unique()) + + ### Add time indices ("season" is the identifier for modeled periods) + shape[stype]["yperiod"] = shape[stype]["day"].astype(int) + + shape[stype].drop('day', axis = 1, inplace = True) + shape[stype].sort_values(by = ['i','year','hour'],inplace = True) + + # Sort data by year so periodhour is assigned correctly + shape[stype] = shape[stype].sort_values(['i','year', 'yperiod', 'hour',]) + + shape[stype]["periodhour"] = ( + np.ravel([range(1, 25) for d in range(365)] * unique_techs * unique_years) + if sw["GSw_HourlyType"] == "year" + else np.ravel( + [range(1, hoursperperiod + 1) for d in idx_vals] + * unique_techs + * unique_years + ) ) + shape[stype]["season"] = shape[stype].yperiod.map(period_szn_dict) + + ### If modeling a full year, keep everything + if sw["GSw_HourlyType"] == "year": + shape_out[stype] = shape[stype].drop( + ["yperiod", "periodhour", "season"], axis=1 + ) + shape_out[stype].index = hmap_1yr.h + + ### If using representative periods, pull out the representative periods + elif unique_years == 1: + shape_out[stype] = ( + shape[stype] + .loc[shape[stype].season.isin(rep_periods)] + .drop(["yperiod", "hour", "year"], axis=1) + .set_index(["season", "periodhour"]) + .sort_index() + ) + shape_out[stype].index = shape_out[stype].index.map(szn_h).rename("h") + + shape_out[stype] = ( + shape_out[stype] + .reset_index() + .set_index(["h", "i"]) + .stack() + .reset_index() + .rename(columns={"i": "*i", "level_2": "r", 0: "Values"})[ + ["*i", "r", "h", "Values"] + ] + ) + else: + shape_out[stype] = ( + shape[stype] + .loc[shape[stype].season.isin(rep_periods)] + .drop(["yperiod", "hour"], axis=1) + .set_index(["season", "periodhour"]) + .sort_index() + ) + + shape_out[stype].index = shape_out[stype].index.map(szn_h).rename("h") + + shape_out[stype] = ( + shape_out[stype] + .reset_index() + .set_index(["h", "i", "year"]) + .stack() + .reset_index() + .rename(columns={"i": "*i", "level_3": "r", "year": "t", 0: "Values"})[ + ["*i", "r", "h", "t", "Values"] + ] + ) + + shape_out = {k: v.drop_duplicates() for k, v in shape_out.items()} + if "energy" in shape.keys(): return shape_out["decrease"], shape_out["increase"], shape_out["energy"] else: @@ -437,6 +491,12 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr .set_index("r") ) + val_r = hierarchy.index.tolist() + + modeledyears = ( + pd.read_csv(os.path.join(inputs_case, "modeledyears.csv")) + ).columns.tolist() + #%%### Load period-szn map, get representative and stress periods period_szn = pd.read_csv(os.path.join(outpath, 'period_szn.csv')) try: @@ -488,13 +548,12 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr 'canmexload': ['*r','h'], 'outage_forced_h': ['*i','r','h'], 'outage_scheduled_h': ['*i','h'], + 'dr_shape_generation': ['*i','r','h','t'], + 'dr_shape_load': ['*i','r','h','t'], 'dr_shed_out': ['*i','r','h'], - 'evmc_baseline_load': ['r','h','t'], - 'evmc_shape_generation': ['*i','r','h'], - 'evmc_shape_load': ['*i','r','h'], - 'evmc_storage_discharge': ['*i','r','h','t'], - 'evmc_storage_charge': ['*i','r','h','t'], - 'evmc_storage_energy': ['*i','r','h','t'], + 'dr_shift_discharge': ['*i','r','h','t'], + 'dr_shift_charge': ['*i','r','h','t'], + 'dr_shift_profile_energy': ['*i','r','h','t'], 'flex_frac_all': ['*flex_type','r','h','t'], 'peak_h': ['*r','h','t','MW'], } @@ -1154,26 +1213,32 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr # identify year t = int(periodtype[6:10]) - # each year (2030-2050) has a different dr shed profile - # prior years assume 2030 data - t_set = max(t, 2030) + # IEF demonstration data only for 1 weather year + if sw.dr_shedscen == 'demo_data_IEF_January_2025': + # each year (2030-2050) has a different dr shed profile + # prior years assume 2030 data + t_set = max(t, 2030) + + dr_shed_avail_allyears = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5'), parse_timestamps=True) + dr_shed_avail_allyears['year'] = round(dr_shed_avail_allyears['year'],0).astype(int) + dr_shed_avail = dr_shed_avail_allyears.loc[dr_shed_avail_allyears['year']==t_set].copy().drop('year', axis=1) + + # dr_shed only has 2018 weather year data, need to populate for other RA years + dr_shed_avail_all_weatheryears = pd.DataFrame() + # copy 2018 data to other weather years + for y in sw.resource_adequacy_years_list: + #set datetime column to match hmap_allyrs.timestamp for y + dr_shed_avail_new_index = dr_shed_avail.copy() + dr_shed_avail_new_index.index = pd.to_datetime(hmap_allyrs[hmap_allyrs['year']==y].timestamp) + dr_shed_avail_all_weatheryears = pd.concat([dr_shed_avail_all_weatheryears, dr_shed_avail_new_index]) + else: + t_set = max(t, 2021) + dr_shed_avail_all_weatheryears = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5'), parse_timestamps=True) + dr_shed_avail_all_weatheryears['year'] = round(dr_shed_avail_all_weatheryears['year'],0).astype(int) + dr_shed_avail_all_weatheryears = dr_shed_avail_all_weatheryears.loc[dr_shed_avail_all_weatheryears['year']==t_set].copy().drop('year', axis=1) - dr_shed_avail_allyears = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5'), parse_timestamps=True) - dr_shed_avail_allyears['year'] = round(dr_shed_avail_allyears['year'],0).astype(int) - dr_shed_avail = dr_shed_avail_allyears.loc[dr_shed_avail_allyears['year']==t_set].copy().drop('year', axis=1) - - # dr_shed only has 2018 weather year data, need to populate for other RA years - dr_shed_avail_all_weatheryears = pd.DataFrame() - # copy 2018 data to other weather years - for y in sw.resource_adequacy_years_list: - #set datetime column to match hmap_allyrs.timestamp for y - dr_shed_avail_new_index = dr_shed_avail.copy() - dr_shed_avail_new_index.index = pd.to_datetime(hmap_allyrs[hmap_allyrs['year']==y].timestamp) - - dr_shed_avail_all_weatheryears = pd.concat([dr_shed_avail_all_weatheryears, dr_shed_avail_new_index]) - # downselect dr_shed_avail to timestamps in all weather years - dr_shed_avail_all_weatheryears.loc[hmap_allyrs.timestamp] + dr_shed_avail_all_weatheryears = dr_shed_avail_all_weatheryears.loc[hmap_allyrs.timestamp] # map dr_shed_avail index to actual period dr_shed_avail_all_weatheryears.index = hmap_allyrs.loc[hmap_allyrs.timestamp.isin(dr_shed_avail_all_weatheryears.index)].actual_h # Map actual periods to rep periods @@ -1185,7 +1250,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr dr_shed_avail_scalar = dr_shed_avail_scalar[dr_shed_avail_scalar['t']==t_set]['Value'].item() dr_shed_avail_all_weatheryears = (dr_shed_avail_all_weatheryears .div(dr_shed_avail_all_weatheryears .max()))*dr_shed_avail_scalar - + # Reformat to be indexed by i,r,h dr_shed_avail_out = dr_shed_avail_all_weatheryears.rename_axis('h').copy() @@ -1199,51 +1264,42 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr dr_shed_avail_out = pd.DataFrame(columns=['i','r','h','cap']) ############################# - # -- EV Managed Charging -- # + # -- DR Shape and DR Shift -- # ############################# - if int(sw.GSw_EVMC): - evmc_baseline_load = ( - pd.read_hdf(os.path.join(inputs_case, "ev_baseline_load.h5")) - .rename(columns={"h": "hour"}) - .astype({"r": str}) - ) - ## Drop the h - evmc_baseline_load.hour = evmc_baseline_load.hour.str.strip("h").astype("int") - ## Concat for each weather year - evmc_baseline_load_weatheryears = evmc_baseline_load.pivot( - index="hour", columns=["t", "r"], values="net" - ) - evmc_baseline_load_weatheryears = pd.concat( - {y: evmc_baseline_load_weatheryears for y in sw.resource_adequacy_years_list}, - axis=0, ignore_index=True).loc[hmap_myr.hour0] - ## Map 8760 hours to modeled hours - evmc_baseline_load_weatheryears.index = hmap_myr.h - ### Sum by (r,h,t) to get net trade in MWh during modeled hours - evmc_baseline_load_out = ( - evmc_baseline_load_weatheryears.stack(["r", "t"]) - .groupby(["r", "h", "t"]) - .sum() - .rename("MWh") - ## Divide by number of weather years since we concatted that number of weather years - / (len(sw['GSw_HourlyWeatherYears']) if (not periodtype.startswith('stress')) else 1) - ).reset_index() - ## Only keep modeled regions - evmc_baseline_load_out = evmc_baseline_load_out.loc[ - evmc_baseline_load_out.r.isin(val_r_all) - ].copy() + if int(sw.GSw_DRShape): + # DR shape mapped to all weather years + if periodtype.startswith('stress'): + dr_shape_dec, dr_shape_inc = get_yearly_flexibility( + sw=sw, + period_szn=period_szn, + rep_periods=rep_periods, + hmap_1yr=hmap_allyrs, + set_szn=set_szn, + inputs_case=inputs_case, + drcat="dr_shape", + modeledyears=modeledyears, + ) + # DR shape mapped to single year + else: + dr_shape_dec, dr_shape_inc = get_yearly_flexibility( + sw=sw, + period_szn=period_szn, + rep_periods=rep_periods, + hmap_1yr=hmap_myr, + set_szn=set_szn, + inputs_case=inputs_case, + drcat="dr_shape", + modeledyears=modeledyears, + ) - evmc_shape_dec, evmc_shape_inc = get_yearly_flexibility( - sw=sw, - period_szn=period_szn, - rep_periods=rep_periods, - hmap_1yr=hmap_myr, - set_szn=set_szn, - inputs_case=inputs_case, - drcat="evmc_shape", - ) + else: + # populate empty dataframe + dr_shape_dec = pd.DataFrame(columns=["*i", "r", "h","t"]) + dr_shape_inc = pd.DataFrame(columns=["*i", "r", "h","t"]) - evmc_storage_dec, evmc_storage_inc, evmc_storage_energy = ( + if int(sw.GSw_DRShift): + dr_shift_dec, dr_shift_inc, dr_shift_profile_energy = ( get_yearly_flexibility( sw=sw, period_szn=period_szn, @@ -1251,16 +1307,16 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr hmap_1yr=hmap_myr, set_szn=set_szn, inputs_case=inputs_case, - drcat="evmc_storage", + drcat="dr_shift", + modeledyears=modeledyears, ) ) else: - evmc_shape_dec = pd.DataFrame(columns=["*i", "r", "h"]) - evmc_shape_inc = pd.DataFrame(columns=["*i", "r", "h"]) - evmc_storage_dec = pd.DataFrame(columns=["*i", "r", "h", "t"]) - evmc_storage_inc = pd.DataFrame(columns=["*i", "r", "h", "t"]) - evmc_storage_energy = pd.DataFrame(columns=["*i", "r", "h", "t"]) - evmc_baseline_load_out = pd.DataFrame(columns=["r", "h", "t", "MWh"]) + # Populate empty dataframe + dr_shift_dec = pd.DataFrame(columns=["*i", "r", "h", "t"]) + dr_shift_inc = pd.DataFrame(columns=["*i", "r", "h", "t"]) + dr_shift_profile_energy = pd.DataFrame(columns=["*i", "r", "h", "t"]) + #%% Chunk the profiles @@ -1429,26 +1485,17 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr ## Outage rates 'outage_forced_h': [outage_h['forced'].round(3), False, False], 'outage_scheduled_h': [outage_h['scheduled'].round(3), False, False], - # DR + # DR Shed "dr_shed_out": [ (dr_shed_avail_out.assign(h=dr_shed_avail_out.h.map(chunkmap)) .groupby(['i','r','h'], as_index=False).cap.mean().round(5)), False, False], - ## EVMC - "evmc_baseline_load": [ - ( - evmc_baseline_load_out.assign(h=evmc_baseline_load_out.h.map(chunkmap)) - .groupby(["r", "h", "t"], as_index=False) - .MWh.sum() - .round(decimals) - ), - False, - False, - ], - "evmc_shape_generation": [ + + ## DR shape + "dr_shape_generation": [ ( - evmc_shape_dec.assign(h=evmc_shape_dec.h.map(chunkmap)) - .groupby(["*i", "r", "h"]) + dr_shape_dec.assign(h=dr_shape_dec.h.map(chunkmap)) + .groupby(["*i", "r", "h","t"]) .mean() .round(decimals) .reset_index() @@ -1456,10 +1503,10 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr False, False, ], - "evmc_shape_load": [ + "dr_shape_load": [ ( - evmc_shape_inc.assign(h=evmc_shape_inc.h.map(chunkmap)) - .groupby(["*i", "r", "h"]) + dr_shape_inc.assign(h=dr_shape_inc.h.map(chunkmap)) + .groupby(["*i", "r", "h","t"]) .mean() .round(decimals) .reset_index() @@ -1467,39 +1514,40 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr False, False, ], - "evmc_storage_discharge": [ + "dr_shift_discharge": [ ( - evmc_storage_dec.assign(h=evmc_storage_dec.h.map(chunkmap)) + dr_shift_dec.assign(h=dr_shift_dec.h.map(chunkmap)) .groupby(["*i", "r", "h", "t"]) - .mean() + .max() .round(decimals) .reset_index() ), False, False, ], - "evmc_storage_charge": [ + "dr_shift_charge": [ ( - evmc_storage_inc.assign(h=evmc_storage_inc.h.map(chunkmap)) + dr_shift_inc.assign(h=dr_shift_inc.h.map(chunkmap)) .groupby(["*i", "r", "h", "t"]) - .mean() + .max() .round(decimals) .reset_index() ), False, False, ], - "evmc_storage_energy": [ + "dr_shift_profile_energy": [ ( - evmc_storage_energy.assign(h=evmc_storage_energy.h.map(chunkmap)) + dr_shift_profile_energy.assign(h=dr_shift_profile_energy.h.map(chunkmap)) .groupby(["*i", "r", "h", "t"]) - .mean() + .max() .round(decimals) .reset_index() ), False, False, ], + ################################################################################## ###### The next parameters are just diagnostics and are not actually used in ReEDS ## Representative period weights for postprocessing (szn) diff --git a/input_processing/plantcostprep.py b/input_processing/plantcostprep.py index 0026ccfae..38f2d5b19 100644 --- a/input_processing/plantcostprep.py +++ b/input_processing/plantcostprep.py @@ -218,17 +218,12 @@ def deflate_func(data,case): battery = pd.read_csv(os.path.join(inputs_case,'plantchar_battery.csv')) battery = deflate_func(battery, sw.plantchar_battery) -evmc_storage = pd.read_csv(os.path.join(inputs_case,'plantchar_evmc_storage.csv')) -evmc_storage = deflate_func(evmc_storage, 'evmc_storage_' + sw.evmcscen) -evmc_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_evmc_shape.csv'), dtype = {'fom':float,'vom':float,'rte':float}) -evmc_shape = deflate_func(evmc_shape, 'evmc_shape_' + sw.evmcscen) - #%%############################ # -- Concat all data -- # ############################### alldata = pd.concat([conv,upv_stack,wind_stack,geo_stack,csp_stack,battery, - evmc_storage,evmc_shape,beccs,ccsflex,h2combustion],sort=False) + beccs,ccsflex,h2combustion],sort=False) if sw.upgradescen != 'default': alldata = pd.concat([alldata,upgrade]) @@ -330,6 +325,9 @@ def disaggregate_to_regions(data, state2r): ccsflex_perf = pd.read_csv(os.path.join(inputs_case,'plantchar_ccsflex_perf.csv'),index_col=0).round(6) hydro = pd.read_csv(os.path.join(inputs_case,'plantchar_hydro.csv'), index_col=0).round(6) +dr_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed.csv'), index_col=0).round(6) +dr_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shape.csv'), index_col=0).round(6) +dr_shift = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shift.csv'), index_col=0).round(6) degrade = pd.read_csv( os.path.join(inputs_case,'degradation_annual.csv'), header=None) @@ -488,6 +486,8 @@ def get_pvb_cost( ccsflex_perf.to_csv(os.path.join(inputs_case,'ccsflex_perf.csv')) consume_char.to_csv(os.path.join(inputs_case,'consume_char.csv'),index=False) hydro.to_csv(os.path.join(inputs_case,'hydrocapcostmult.csv')) +dr_shape.to_csv(os.path.join(inputs_case,'dr_shape_capcostmult.csv')) +dr_shift.to_csv(os.path.join(inputs_case,'dr_shift_capcostmult.csv')) dr_shed_capcost_mult.to_csv(os.path.join(inputs_case,'dr_shed_capcostmult.csv')) dr_shed_fom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_fom.csv')) dr_shed_vom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_vom.csv')) diff --git a/input_processing/writedrshift.py b/input_processing/writedrshift.py index 106528f7c..efd7626a6 100644 --- a/input_processing/writedrshift.py +++ b/input_processing/writedrshift.py @@ -65,22 +65,6 @@ .tolist() ) - ### Create empty EVMC data files if GSw_EVMC == 0: - evmc_files = [ - "evmc_shape_profile_decrease", - "evmc_shape_profile_increase", - "evmc_storage_profile_decrease", - "evmc_storage_profile_increase", - "evmc_storage_energy", - ] - for file in evmc_files: - if int(sw["GSw_EVMC"]): - pass - else: - # Overwrite empty dataframes created in copy_files.py - df = pd.DataFrame(columns=["i", "hour", "year"] + val_r) - df.to_csv(os.path.join(inputs_case, file + ".csv"), index=False) - reeds.log.toc(tic=tic, year=0, process='input_processing/writedrshift.py', path=os.path.join(inputs_case,'..')) print('Finished writedrshift.py') diff --git a/input_processing/writesupplycurves.py b/input_processing/writesupplycurves.py index 52b80a44b..da7edb414 100644 --- a/input_processing/writesupplycurves.py +++ b/input_processing/writesupplycurves.py @@ -811,6 +811,30 @@ def main( ####################################################### # -- Demand Response -- # ####################################################### + + ##### DR Shed, Shape, and Shift ##### + + def process_dr_sc_data(file_prefix, deflate_key): + cap = pd.read_csv(os.path.join(inputs_case, f'{file_prefix}_cap.csv')) + cost = pd.read_csv(os.path.join(inputs_case, f'{file_prefix}_cost.csv')) + # DR Shape supply curve data have a column for tech bin included + if file_prefix == 'dr_shape' or file_prefix == 'dr_shift': + cap = cap.rename(columns = {'rscbin':'class'}) + cost = cost.rename(columns = {'rscbin':'class'}) + # DR Shed supply curve data do not have a column for tech bin included + # Duplicate the tech column to class column to retain correct file format + else: + cap['class'], cost['class'] = cap['tech'], cost['tech'] + cap = pd.melt(cap, id_vars=['tech', 'class']).reset_index() + cost = pd.melt(cost, id_vars=['tech', 'class']) + cost[cost.select_dtypes(include=['number']).columns] *= deflate[deflate_key] + cap['var'], cost['var'] = 'cap', 'cost' + data = pd.concat([cap, cost]) + data['bin'] = data['class'].str.replace(f'{file_prefix}_', 'bin') + data['class'] = data['class'].str.replace(f'{file_prefix}_', '') + data.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) + return data[['tech', 'r', 'value', 'var', 'variable']].fillna(0) + # State-level DR shed data - need to modify this section of code to allow for state-level shape and shift data # Use capacity and cost to add DR Shed to rsc_combined disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() @@ -852,29 +876,7 @@ def main( dr_shed_cap['class'] = dr_shed_cap['tech'] dr_shed_cost = dr_shed_cost_reg.copy() dr_shed_cost['class'] = dr_shed_cost['tech'] - - dr_shed_cap = (pd.melt(dr_shed_cap, id_vars=['tech','class']) - .set_index(['tech','class','variable']) - .sort_index()) - dr_shed_cap = dr_shed_cap.reset_index() - dr_shed_cost = pd.melt(dr_shed_cost, id_vars=['tech','class']) - - # Convert dollar year - dr_shed_cost[dr_shed_cost.select_dtypes(include=['number']).columns] *= deflate['dr_shed'] - - # Assign rsc cat - dr_shed_cap['var'] = 'cap' - dr_shed_cost['var'] = 'cost' - - # Combined cost and capacity - dr_shed_dat = pd.concat([dr_shed_cap, dr_shed_cost]) - dr_shed_dat['bin'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','bin')) - dr_shed_dat['class'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','')) - - dr_shed_dat.rename(columns={'variable':'r','bin':'variable'}, inplace=True) - dr_shed_dat = dr_shed_dat[['tech','r','value','var','variable']].fillna(0) - allout_list.append(dr_shed_dat) - + if write: # Update supply curve capacity multiplier from state-level to region-level dr_shed_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case,'dr_shed_capacity_scalar.csv')) @@ -892,7 +894,19 @@ def main( dr_shed_capacity_scalar_reg[st] = pd.concat(scalar_df) dr_shed_capacity_scalar_reg = pd.concat(dr_shed_capacity_scalar_reg.values(), ignore_index=True) dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case,'dr_shed_capacity_scalar.csv'), index=False) - + + if int(sw.GSw_DRShed) == 1: + dr_shed_dat = process_dr_sc_data('dr_shed', 'dr_shed') + allout_list.append(dr_shed_dat) + + if int(sw.GSw_DRShape) == 1: + dr_shape_dat = process_dr_sc_data('dr_shape', 'dr_shape') + allout_list.append(dr_shape_dat) + + if int(sw.GSw_DRShift) == 1: + dr_shift_dat = process_dr_sc_data('dr_shift', 'dr_shift') + allout_list.append(dr_shift_dat) + # %%---------------------------------------------------------------------------------- ################################## # -- Combine everything -- # @@ -968,7 +982,7 @@ def main( alloutm.to_csv( os.path.join(inputs_case, "rsc_combined.csv"), index=False, header=True ) - + #%%---------------------------------------------------------------------------------- ####################### # -- Biomass -- # diff --git a/inputs/degradation/degradation_annual_default.csv b/inputs/degradation/degradation_annual_default.csv index 2f757287a..b714c17b6 100644 --- a/inputs/degradation/degradation_annual_default.csv +++ b/inputs/degradation/degradation_annual_default.csv @@ -55,5 +55,5 @@ egs_allkm_1*egs_allkm_10,0 geohydro_allkm_1*geohydro_allkm_10,0 egs_nearfield_1*egs_nearfield_10,0 dr_shed_1*dr_shed_2,0 -evmc_storage_1*evmc_storage_10,0 -evmc_shape_1*evmc_shape_10,0 \ No newline at end of file +dr_shape_1*dr_shape_5,0 +dr_shift_1*dr_shift_5,0 diff --git a/inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv b/inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv deleted file mode 100644 index bd6a9f5aa..000000000 --- a/inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv +++ /dev/null @@ -1,23 +0,0 @@ -tech,r,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 -dr_shed_1,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.089,1.119,1.149,1.179,1.208,1.238,1.268,1.298,1.33,1.362,1.394,1.426,1.458,1.49,1.522,1.554,1.586,1.618 -dr_shed_1,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.027,1.054,1.081,1.109,1.136,1.163,1.19,1.217,1.244,1.271,1.296,1.32,1.344,1.368,1.393,1.417,1.441,1.466,1.49,1.514 -dr_shed_1,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.035,1.071,1.106,1.142,1.177,1.213,1.248,1.284,1.319,1.355,1.386,1.417,1.448,1.479,1.51,1.542,1.573,1.604,1.635,1.666 -dr_shed_1,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.011,1.021,1.032,1.043,1.053,1.064,1.074,1.085,1.096,1.106,1.124,1.142,1.16,1.178,1.196,1.214,1.232,1.25,1.268,1.286 -dr_shed_1,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.013,1.025,1.038,1.05,1.063,1.075,1.088,1.1,1.113,1.125,1.144,1.162,1.181,1.2,1.219,1.237,1.256,1.275,1.293,1.312 -dr_shed_1,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.026,1.052,1.078,1.104,1.13,1.157,1.183,1.209,1.235,1.261,1.282,1.303,1.325,1.346,1.367,1.388,1.41,1.431,1.452,1.473 -dr_shed_1,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.052,1.103,1.155,1.207,1.258,1.31,1.362,1.414,1.465,1.517,1.562,1.607,1.653,1.698,1.743,1.788,1.833,1.878,1.924,1.969 -dr_shed_1,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.028,1.056,1.085,1.113,1.141,1.169,1.197,1.226,1.254,1.282,1.31,1.338,1.366,1.394,1.422,1.45,1.478,1.506,1.534,1.562 -dr_shed_1,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.02,1.039,1.059,1.078,1.098,1.117,1.137,1.156,1.176,1.195,1.217,1.24,1.262,1.284,1.307,1.329,1.351,1.373,1.396,1.418 -dr_shed_1,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.014,1.027,1.041,1.054,1.068,1.082,1.095,1.109,1.122,1.136,1.153,1.169,1.186,1.203,1.219,1.236,1.252,1.269,1.286,1.302 -dr_shed_1,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.08,1.161,1.241,1.321,1.402,1.482,1.562,1.642,1.723,1.803,1.858,1.913,1.969,2.024,2.079,2.134,2.189,2.244,2.299,2.355 -dr_shed_2,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.018,1.035,1.053,1.07,1.088,1.105,1.123,1.141,1.158,1.176,1.173,1.17,1.167,1.164,1.161,1.158,1.155,1.152,1.149,1.146 -dr_shed_2,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.09,1.119,1.149,1.179,1.209,1.239,1.269,1.299,1.289,1.28,1.27,1.261,1.251,1.242,1.232,1.223,1.213,1.204 -dr_shed_2,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.067,1.133,1.2,1.266,1.333,1.399,1.466,1.532,1.599,1.665,1.694,1.722,1.75,1.778,1.806,1.834,1.862,1.89,1.918,1.946 -dr_shed_2,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.982,0.964,0.947,0.929,0.911,0.893,0.875,0.858,0.84,0.822,0.809,0.795,0.781,0.768,0.754,0.74,0.727,0.713,0.7,0.686 -dr_shed_2,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.001,1.002,1.003,1.004,1.005,1.007,1.008,1.009,1.01,1.011,1.0,0.99,0.979,0.969,0.958,0.948,0.937,0.927,0.916,0.905 -dr_shed_2,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.099,1.197,1.296,1.395,1.494,1.592,1.691,1.79,1.888,1.987,2.033,2.078,2.124,2.169,2.215,2.26,2.306,2.351,2.397,2.443 -dr_shed_2,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.029,1.058,1.087,1.116,1.145,1.174,1.203,1.232,1.262,1.291,1.3,1.309,1.319,1.328,1.338,1.347,1.356,1.366,1.375,1.385 -dr_shed_2,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.038,1.076,1.113,1.151,1.189,1.227,1.266,1.305,1.344,1.383,1.394,1.405,1.415,1.426,1.437,1.447,1.458,1.469,1.479,1.49 -dr_shed_2,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.108,1.216,1.323,1.431,1.539,1.647,1.754,1.862,1.97,2.078,2.106,2.135,2.163,2.192,2.221,2.249,2.278,2.306,2.335,2.364 -dr_shed_2,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.996,0.991,0.987,0.983,0.979,0.974,0.97,0.966,0.961,0.957,0.945,0.933,0.921,0.909,0.897,0.885,0.872,0.86,0.848,0.836 -dr_shed_2,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.978,0.955,0.933,0.91,0.888,0.865,0.843,0.82,0.798,0.775,0.757,0.739,0.722,0.704,0.686,0.668,0.65,0.632,0.615,0.597 diff --git a/inputs/financials/construction_times_default.csv b/inputs/financials/construction_times_default.csv index 6c013411e..95e613eb3 100644 --- a/inputs/financials/construction_times_default.csv +++ b/inputs/financials/construction_times_default.csv @@ -696,6 +696,47 @@ CSP,2047,3 CSP,2048,3 CSP,2049,3 CSP,2050,3 +DR_SHAPE,2010,1 +DR_SHAPE,2011,1 +DR_SHAPE,2012,1 +DR_SHAPE,2013,1 +DR_SHAPE,2014,1 +DR_SHAPE,2015,1 +DR_SHAPE,2016,1 +DR_SHAPE,2017,1 +DR_SHAPE,2018,1 +DR_SHAPE,2019,1 +DR_SHAPE,2020,1 +DR_SHAPE,2021,1 +DR_SHAPE,2022,1 +DR_SHAPE,2023,1 +DR_SHAPE,2024,1 +DR_SHAPE,2025,1 +DR_SHAPE,2026,1 +DR_SHAPE,2027,1 +DR_SHAPE,2028,1 +DR_SHAPE,2029,1 +DR_SHAPE,2030,1 +DR_SHAPE,2031,1 +DR_SHAPE,2032,1 +DR_SHAPE,2033,1 +DR_SHAPE,2034,1 +DR_SHAPE,2035,1 +DR_SHAPE,2036,1 +DR_SHAPE,2037,1 +DR_SHAPE,2038,1 +DR_SHAPE,2039,1 +DR_SHAPE,2040,1 +DR_SHAPE,2041,1 +DR_SHAPE,2042,1 +DR_SHAPE,2043,1 +DR_SHAPE,2044,1 +DR_SHAPE,2045,1 +DR_SHAPE,2046,1 +DR_SHAPE,2047,1 +DR_SHAPE,2048,1 +DR_SHAPE,2049,1 +DR_SHAPE,2050,1 DR_SHED,2010,1 DR_SHED,2011,1 DR_SHED,2012,1 @@ -737,88 +778,47 @@ DR_SHED,2047,1 DR_SHED,2048,1 DR_SHED,2049,1 DR_SHED,2050,1 -EVMC_STORAGE,2010,1 -EVMC_STORAGE,2011,1 -EVMC_STORAGE,2012,1 -EVMC_STORAGE,2013,1 -EVMC_STORAGE,2014,1 -EVMC_STORAGE,2015,1 -EVMC_STORAGE,2016,1 -EVMC_STORAGE,2017,1 -EVMC_STORAGE,2018,1 -EVMC_STORAGE,2019,1 -EVMC_STORAGE,2020,1 -EVMC_STORAGE,2021,1 -EVMC_STORAGE,2022,1 -EVMC_STORAGE,2023,1 -EVMC_STORAGE,2024,1 -EVMC_STORAGE,2025,1 -EVMC_STORAGE,2026,1 -EVMC_STORAGE,2027,1 -EVMC_STORAGE,2028,1 -EVMC_STORAGE,2029,1 -EVMC_STORAGE,2030,1 -EVMC_STORAGE,2031,1 -EVMC_STORAGE,2032,1 -EVMC_STORAGE,2033,1 -EVMC_STORAGE,2034,1 -EVMC_STORAGE,2035,1 -EVMC_STORAGE,2036,1 -EVMC_STORAGE,2037,1 -EVMC_STORAGE,2038,1 -EVMC_STORAGE,2039,1 -EVMC_STORAGE,2040,1 -EVMC_STORAGE,2041,1 -EVMC_STORAGE,2042,1 -EVMC_STORAGE,2043,1 -EVMC_STORAGE,2044,1 -EVMC_STORAGE,2045,1 -EVMC_STORAGE,2046,1 -EVMC_STORAGE,2047,1 -EVMC_STORAGE,2048,1 -EVMC_STORAGE,2049,1 -EVMC_STORAGE,2050,1 -EVMC_SHAPE,2010,1 -EVMC_SHAPE,2011,1 -EVMC_SHAPE,2012,1 -EVMC_SHAPE,2013,1 -EVMC_SHAPE,2014,1 -EVMC_SHAPE,2015,1 -EVMC_SHAPE,2016,1 -EVMC_SHAPE,2017,1 -EVMC_SHAPE,2018,1 -EVMC_SHAPE,2019,1 -EVMC_SHAPE,2020,1 -EVMC_SHAPE,2021,1 -EVMC_SHAPE,2022,1 -EVMC_SHAPE,2023,1 -EVMC_SHAPE,2024,1 -EVMC_SHAPE,2025,1 -EVMC_SHAPE,2026,1 -EVMC_SHAPE,2027,1 -EVMC_SHAPE,2028,1 -EVMC_SHAPE,2029,1 -EVMC_SHAPE,2030,1 -EVMC_SHAPE,2031,1 -EVMC_SHAPE,2032,1 -EVMC_SHAPE,2033,1 -EVMC_SHAPE,2034,1 -EVMC_SHAPE,2035,1 -EVMC_SHAPE,2036,1 -EVMC_SHAPE,2037,1 -EVMC_SHAPE,2038,1 -EVMC_SHAPE,2039,1 -EVMC_SHAPE,2040,1 -EVMC_SHAPE,2041,1 -EVMC_SHAPE,2042,1 -EVMC_SHAPE,2043,1 -EVMC_SHAPE,2044,1 -EVMC_SHAPE,2045,1 -EVMC_SHAPE,2046,1 -EVMC_SHAPE,2047,1 -EVMC_SHAPE,2048,1 -EVMC_SHAPE,2049,1 -EVMC_SHAPE,2050,1 +DR_SHIFT,2010,1 +DR_SHIFT,2011,1 +DR_SHIFT,2012,1 +DR_SHIFT,2013,1 +DR_SHIFT,2014,1 +DR_SHIFT,2015,1 +DR_SHIFT,2016,1 +DR_SHIFT,2017,1 +DR_SHIFT,2018,1 +DR_SHIFT,2019,1 +DR_SHIFT,2020,1 +DR_SHIFT,2021,1 +DR_SHIFT,2022,1 +DR_SHIFT,2023,1 +DR_SHIFT,2024,1 +DR_SHIFT,2025,1 +DR_SHIFT,2026,1 +DR_SHIFT,2027,1 +DR_SHIFT,2028,1 +DR_SHIFT,2029,1 +DR_SHIFT,2030,1 +DR_SHIFT,2031,1 +DR_SHIFT,2032,1 +DR_SHIFT,2033,1 +DR_SHIFT,2034,1 +DR_SHIFT,2035,1 +DR_SHIFT,2036,1 +DR_SHIFT,2037,1 +DR_SHIFT,2038,1 +DR_SHIFT,2039,1 +DR_SHIFT,2040,1 +DR_SHIFT,2041,1 +DR_SHIFT,2042,1 +DR_SHIFT,2043,1 +DR_SHIFT,2044,1 +DR_SHIFT,2045,1 +DR_SHIFT,2046,1 +DR_SHIFT,2047,1 +DR_SHIFT,2048,1 +DR_SHIFT,2049,1 +DR_SHIFT,2050,1 Gas-CC,2010,3 Gas-CC,2011,3 Gas-CC,2012,3 diff --git a/inputs/financials/financials_tech_ATB2023.csv b/inputs/financials/financials_tech_ATB2023.csv index d1258c036..f61135984 100644 --- a/inputs/financials/financials_tech_ATB2023.csv +++ b/inputs/financials/financials_tech_ATB2023.csv @@ -2090,252 +2090,6 @@ CSP,2047,usa,5,30,1,-0.0129 CSP,2048,usa,5,30,1,-0.0129 CSP,2049,usa,5,30,1,-0.0129 CSP,2050,usa,5,30,1,-0.0129 -EVMC_STORAGE,2010,can,7,15,1,0 -EVMC_STORAGE,2011,can,7,15,1,0 -EVMC_STORAGE,2012,can,7,15,1,0 -EVMC_STORAGE,2013,can,7,15,1,0 -EVMC_STORAGE,2014,can,7,15,1,0 -EVMC_STORAGE,2015,can,7,15,1,0 -EVMC_STORAGE,2016,can,7,15,1,0 -EVMC_STORAGE,2017,can,7,15,1,0 -EVMC_STORAGE,2018,can,7,15,1,0 -EVMC_STORAGE,2019,can,7,15,1,0 -EVMC_STORAGE,2020,can,7,15,1,0 -EVMC_STORAGE,2021,can,7,15,1,0 -EVMC_STORAGE,2022,can,7,15,1,0 -EVMC_STORAGE,2023,can,7,15,1,0 -EVMC_STORAGE,2024,can,7,15,1,0 -EVMC_STORAGE,2025,can,7,15,1,0 -EVMC_STORAGE,2026,can,7,15,1,0 -EVMC_STORAGE,2027,can,7,15,1,0 -EVMC_STORAGE,2028,can,7,15,1,0 -EVMC_STORAGE,2029,can,7,15,1,0 -EVMC_STORAGE,2030,can,7,15,1,0 -EVMC_STORAGE,2031,can,7,15,1,0 -EVMC_STORAGE,2032,can,7,15,1,0 -EVMC_STORAGE,2033,can,7,15,1,0 -EVMC_STORAGE,2034,can,7,15,1,0 -EVMC_STORAGE,2035,can,7,15,1,0 -EVMC_STORAGE,2036,can,7,15,1,0 -EVMC_STORAGE,2037,can,7,15,1,0 -EVMC_STORAGE,2038,can,7,15,1,0 -EVMC_STORAGE,2039,can,7,15,1,0 -EVMC_STORAGE,2040,can,7,15,1,0 -EVMC_STORAGE,2041,can,7,15,1,0 -EVMC_STORAGE,2042,can,7,15,1,0 -EVMC_STORAGE,2043,can,7,15,1,0 -EVMC_STORAGE,2044,can,7,15,1,0 -EVMC_STORAGE,2045,can,7,15,1,0 -EVMC_STORAGE,2046,can,7,15,1,0 -EVMC_STORAGE,2047,can,7,15,1,0 -EVMC_STORAGE,2048,can,7,15,1,0 -EVMC_STORAGE,2049,can,7,15,1,0 -EVMC_STORAGE,2050,can,7,15,1,0 -EVMC_STORAGE,2010,mex,7,15,1,0 -EVMC_STORAGE,2011,mex,7,15,1,0 -EVMC_STORAGE,2012,mex,7,15,1,0 -EVMC_STORAGE,2013,mex,7,15,1,0 -EVMC_STORAGE,2014,mex,7,15,1,0 -EVMC_STORAGE,2015,mex,7,15,1,0 -EVMC_STORAGE,2016,mex,7,15,1,0 -EVMC_STORAGE,2017,mex,7,15,1,0 -EVMC_STORAGE,2018,mex,7,15,1,0 -EVMC_STORAGE,2019,mex,7,15,1,0 -EVMC_STORAGE,2020,mex,7,15,1,0 -EVMC_STORAGE,2021,mex,7,15,1,0 -EVMC_STORAGE,2022,mex,7,15,1,0 -EVMC_STORAGE,2023,mex,7,15,1,0 -EVMC_STORAGE,2024,mex,7,15,1,0 -EVMC_STORAGE,2025,mex,7,15,1,0 -EVMC_STORAGE,2026,mex,7,15,1,0 -EVMC_STORAGE,2027,mex,7,15,1,0 -EVMC_STORAGE,2028,mex,7,15,1,0 -EVMC_STORAGE,2029,mex,7,15,1,0 -EVMC_STORAGE,2030,mex,7,15,1,0 -EVMC_STORAGE,2031,mex,7,15,1,0 -EVMC_STORAGE,2032,mex,7,15,1,0 -EVMC_STORAGE,2033,mex,7,15,1,0 -EVMC_STORAGE,2034,mex,7,15,1,0 -EVMC_STORAGE,2035,mex,7,15,1,0 -EVMC_STORAGE,2036,mex,7,15,1,0 -EVMC_STORAGE,2037,mex,7,15,1,0 -EVMC_STORAGE,2038,mex,7,15,1,0 -EVMC_STORAGE,2039,mex,7,15,1,0 -EVMC_STORAGE,2040,mex,7,15,1,0 -EVMC_STORAGE,2041,mex,7,15,1,0 -EVMC_STORAGE,2042,mex,7,15,1,0 -EVMC_STORAGE,2043,mex,7,15,1,0 -EVMC_STORAGE,2044,mex,7,15,1,0 -EVMC_STORAGE,2045,mex,7,15,1,0 -EVMC_STORAGE,2046,mex,7,15,1,0 -EVMC_STORAGE,2047,mex,7,15,1,0 -EVMC_STORAGE,2048,mex,7,15,1,0 -EVMC_STORAGE,2049,mex,7,15,1,0 -EVMC_STORAGE,2050,mex,7,15,1,0 -EVMC_STORAGE,2010,usa,7,15,1,0 -EVMC_STORAGE,2011,usa,7,15,1,0 -EVMC_STORAGE,2012,usa,7,15,1,0 -EVMC_STORAGE,2013,usa,7,15,1,0 -EVMC_STORAGE,2014,usa,7,15,1,0 -EVMC_STORAGE,2015,usa,7,15,1,0 -EVMC_STORAGE,2016,usa,7,15,1,0 -EVMC_STORAGE,2017,usa,7,15,1,0 -EVMC_STORAGE,2018,usa,7,15,1,0 -EVMC_STORAGE,2019,usa,7,15,1,0 -EVMC_STORAGE,2020,usa,7,15,1,0 -EVMC_STORAGE,2021,usa,7,15,1,0 -EVMC_STORAGE,2022,usa,7,15,1,0 -EVMC_STORAGE,2023,usa,7,15,1,0 -EVMC_STORAGE,2024,usa,7,15,1,0 -EVMC_STORAGE,2025,usa,7,15,1,0 -EVMC_STORAGE,2026,usa,7,15,1,0 -EVMC_STORAGE,2027,usa,7,15,1,0 -EVMC_STORAGE,2028,usa,7,15,1,0 -EVMC_STORAGE,2029,usa,7,15,1,0 -EVMC_STORAGE,2030,usa,7,15,1,0 -EVMC_STORAGE,2031,usa,7,15,1,0 -EVMC_STORAGE,2032,usa,7,15,1,0 -EVMC_STORAGE,2033,usa,7,15,1,0 -EVMC_STORAGE,2034,usa,7,15,1,0 -EVMC_STORAGE,2035,usa,7,15,1,0 -EVMC_STORAGE,2036,usa,7,15,1,0 -EVMC_STORAGE,2037,usa,7,15,1,0 -EVMC_STORAGE,2038,usa,7,15,1,0 -EVMC_STORAGE,2039,usa,7,15,1,0 -EVMC_STORAGE,2040,usa,7,15,1,0 -EVMC_STORAGE,2041,usa,7,15,1,0 -EVMC_STORAGE,2042,usa,7,15,1,0 -EVMC_STORAGE,2043,usa,7,15,1,0 -EVMC_STORAGE,2044,usa,7,15,1,0 -EVMC_STORAGE,2045,usa,7,15,1,0 -EVMC_STORAGE,2046,usa,7,15,1,0 -EVMC_STORAGE,2047,usa,7,15,1,0 -EVMC_STORAGE,2048,usa,7,15,1,0 -EVMC_STORAGE,2049,usa,7,15,1,0 -EVMC_STORAGE,2050,usa,7,15,1,0 -EVMC_SHAPE,2010,can,7,15,1,0 -EVMC_SHAPE,2011,can,7,15,1,0 -EVMC_SHAPE,2012,can,7,15,1,0 -EVMC_SHAPE,2013,can,7,15,1,0 -EVMC_SHAPE,2014,can,7,15,1,0 -EVMC_SHAPE,2015,can,7,15,1,0 -EVMC_SHAPE,2016,can,7,15,1,0 -EVMC_SHAPE,2017,can,7,15,1,0 -EVMC_SHAPE,2018,can,7,15,1,0 -EVMC_SHAPE,2019,can,7,15,1,0 -EVMC_SHAPE,2020,can,7,15,1,0 -EVMC_SHAPE,2021,can,7,15,1,0 -EVMC_SHAPE,2022,can,7,15,1,0 -EVMC_SHAPE,2023,can,7,15,1,0 -EVMC_SHAPE,2024,can,7,15,1,0 -EVMC_SHAPE,2025,can,7,15,1,0 -EVMC_SHAPE,2026,can,7,15,1,0 -EVMC_SHAPE,2027,can,7,15,1,0 -EVMC_SHAPE,2028,can,7,15,1,0 -EVMC_SHAPE,2029,can,7,15,1,0 -EVMC_SHAPE,2030,can,7,15,1,0 -EVMC_SHAPE,2031,can,7,15,1,0 -EVMC_SHAPE,2032,can,7,15,1,0 -EVMC_SHAPE,2033,can,7,15,1,0 -EVMC_SHAPE,2034,can,7,15,1,0 -EVMC_SHAPE,2035,can,7,15,1,0 -EVMC_SHAPE,2036,can,7,15,1,0 -EVMC_SHAPE,2037,can,7,15,1,0 -EVMC_SHAPE,2038,can,7,15,1,0 -EVMC_SHAPE,2039,can,7,15,1,0 -EVMC_SHAPE,2040,can,7,15,1,0 -EVMC_SHAPE,2041,can,7,15,1,0 -EVMC_SHAPE,2042,can,7,15,1,0 -EVMC_SHAPE,2043,can,7,15,1,0 -EVMC_SHAPE,2044,can,7,15,1,0 -EVMC_SHAPE,2045,can,7,15,1,0 -EVMC_SHAPE,2046,can,7,15,1,0 -EVMC_SHAPE,2047,can,7,15,1,0 -EVMC_SHAPE,2048,can,7,15,1,0 -EVMC_SHAPE,2049,can,7,15,1,0 -EVMC_SHAPE,2050,can,7,15,1,0 -EVMC_SHAPE,2010,mex,7,15,1,0 -EVMC_SHAPE,2011,mex,7,15,1,0 -EVMC_SHAPE,2012,mex,7,15,1,0 -EVMC_SHAPE,2013,mex,7,15,1,0 -EVMC_SHAPE,2014,mex,7,15,1,0 -EVMC_SHAPE,2015,mex,7,15,1,0 -EVMC_SHAPE,2016,mex,7,15,1,0 -EVMC_SHAPE,2017,mex,7,15,1,0 -EVMC_SHAPE,2018,mex,7,15,1,0 -EVMC_SHAPE,2019,mex,7,15,1,0 -EVMC_SHAPE,2020,mex,7,15,1,0 -EVMC_SHAPE,2021,mex,7,15,1,0 -EVMC_SHAPE,2022,mex,7,15,1,0 -EVMC_SHAPE,2023,mex,7,15,1,0 -EVMC_SHAPE,2024,mex,7,15,1,0 -EVMC_SHAPE,2025,mex,7,15,1,0 -EVMC_SHAPE,2026,mex,7,15,1,0 -EVMC_SHAPE,2027,mex,7,15,1,0 -EVMC_SHAPE,2028,mex,7,15,1,0 -EVMC_SHAPE,2029,mex,7,15,1,0 -EVMC_SHAPE,2030,mex,7,15,1,0 -EVMC_SHAPE,2031,mex,7,15,1,0 -EVMC_SHAPE,2032,mex,7,15,1,0 -EVMC_SHAPE,2033,mex,7,15,1,0 -EVMC_SHAPE,2034,mex,7,15,1,0 -EVMC_SHAPE,2035,mex,7,15,1,0 -EVMC_SHAPE,2036,mex,7,15,1,0 -EVMC_SHAPE,2037,mex,7,15,1,0 -EVMC_SHAPE,2038,mex,7,15,1,0 -EVMC_SHAPE,2039,mex,7,15,1,0 -EVMC_SHAPE,2040,mex,7,15,1,0 -EVMC_SHAPE,2041,mex,7,15,1,0 -EVMC_SHAPE,2042,mex,7,15,1,0 -EVMC_SHAPE,2043,mex,7,15,1,0 -EVMC_SHAPE,2044,mex,7,15,1,0 -EVMC_SHAPE,2045,mex,7,15,1,0 -EVMC_SHAPE,2046,mex,7,15,1,0 -EVMC_SHAPE,2047,mex,7,15,1,0 -EVMC_SHAPE,2048,mex,7,15,1,0 -EVMC_SHAPE,2049,mex,7,15,1,0 -EVMC_SHAPE,2050,mex,7,15,1,0 -EVMC_SHAPE,2010,usa,7,15,1,0 -EVMC_SHAPE,2011,usa,7,15,1,0 -EVMC_SHAPE,2012,usa,7,15,1,0 -EVMC_SHAPE,2013,usa,7,15,1,0 -EVMC_SHAPE,2014,usa,7,15,1,0 -EVMC_SHAPE,2015,usa,7,15,1,0 -EVMC_SHAPE,2016,usa,7,15,1,0 -EVMC_SHAPE,2017,usa,7,15,1,0 -EVMC_SHAPE,2018,usa,7,15,1,0 -EVMC_SHAPE,2019,usa,7,15,1,0 -EVMC_SHAPE,2020,usa,7,15,1,0 -EVMC_SHAPE,2021,usa,7,15,1,0 -EVMC_SHAPE,2022,usa,7,15,1,0 -EVMC_SHAPE,2023,usa,7,15,1,0 -EVMC_SHAPE,2024,usa,7,15,1,0 -EVMC_SHAPE,2025,usa,7,15,1,0 -EVMC_SHAPE,2026,usa,7,15,1,0 -EVMC_SHAPE,2027,usa,7,15,1,0 -EVMC_SHAPE,2028,usa,7,15,1,0 -EVMC_SHAPE,2029,usa,7,15,1,0 -EVMC_SHAPE,2030,usa,7,15,1,0 -EVMC_SHAPE,2031,usa,7,15,1,0 -EVMC_SHAPE,2032,usa,7,15,1,0 -EVMC_SHAPE,2033,usa,7,15,1,0 -EVMC_SHAPE,2034,usa,7,15,1,0 -EVMC_SHAPE,2035,usa,7,15,1,0 -EVMC_SHAPE,2036,usa,7,15,1,0 -EVMC_SHAPE,2037,usa,7,15,1,0 -EVMC_SHAPE,2038,usa,7,15,1,0 -EVMC_SHAPE,2039,usa,7,15,1,0 -EVMC_SHAPE,2040,usa,7,15,1,0 -EVMC_SHAPE,2041,usa,7,15,1,0 -EVMC_SHAPE,2042,usa,7,15,1,0 -EVMC_SHAPE,2043,usa,7,15,1,0 -EVMC_SHAPE,2044,usa,7,15,1,0 -EVMC_SHAPE,2045,usa,7,15,1,0 -EVMC_SHAPE,2046,usa,7,15,1,0 -EVMC_SHAPE,2047,usa,7,15,1,0 -EVMC_SHAPE,2048,usa,7,15,1,0 -EVMC_SHAPE,2049,usa,7,15,1,0 -EVMC_SHAPE,2050,usa,7,15,1,0 Gas-CC,2010,can,20,30,3B,0 Gas-CC,2011,can,20,30,3B,0 Gas-CC,2012,can,20,30,3B,0 diff --git a/inputs/financials/financials_tech_ATB2023_CRP20.csv b/inputs/financials/financials_tech_ATB2023_CRP20.csv index 77d908159..300d7310f 100644 --- a/inputs/financials/financials_tech_ATB2023_CRP20.csv +++ b/inputs/financials/financials_tech_ATB2023_CRP20.csv @@ -2090,252 +2090,6 @@ CSP,2047,usa,5,20,1,-0.0129 CSP,2048,usa,5,20,1,-0.0129 CSP,2049,usa,5,20,1,-0.0129 CSP,2050,usa,5,20,1,-0.0129 -EVMC_STORAGE,2010,can,7,15,1,0 -EVMC_STORAGE,2011,can,7,15,1,0 -EVMC_STORAGE,2012,can,7,15,1,0 -EVMC_STORAGE,2013,can,7,15,1,0 -EVMC_STORAGE,2014,can,7,15,1,0 -EVMC_STORAGE,2015,can,7,15,1,0 -EVMC_STORAGE,2016,can,7,15,1,0 -EVMC_STORAGE,2017,can,7,15,1,0 -EVMC_STORAGE,2018,can,7,15,1,0 -EVMC_STORAGE,2019,can,7,15,1,0 -EVMC_STORAGE,2020,can,7,15,1,0 -EVMC_STORAGE,2021,can,7,15,1,0 -EVMC_STORAGE,2022,can,7,15,1,0 -EVMC_STORAGE,2023,can,7,15,1,0 -EVMC_STORAGE,2024,can,7,15,1,0 -EVMC_STORAGE,2025,can,7,15,1,0 -EVMC_STORAGE,2026,can,7,15,1,0 -EVMC_STORAGE,2027,can,7,15,1,0 -EVMC_STORAGE,2028,can,7,15,1,0 -EVMC_STORAGE,2029,can,7,15,1,0 -EVMC_STORAGE,2030,can,7,15,1,0 -EVMC_STORAGE,2031,can,7,15,1,0 -EVMC_STORAGE,2032,can,7,15,1,0 -EVMC_STORAGE,2033,can,7,15,1,0 -EVMC_STORAGE,2034,can,7,15,1,0 -EVMC_STORAGE,2035,can,7,15,1,0 -EVMC_STORAGE,2036,can,7,15,1,0 -EVMC_STORAGE,2037,can,7,15,1,0 -EVMC_STORAGE,2038,can,7,15,1,0 -EVMC_STORAGE,2039,can,7,15,1,0 -EVMC_STORAGE,2040,can,7,15,1,0 -EVMC_STORAGE,2041,can,7,15,1,0 -EVMC_STORAGE,2042,can,7,15,1,0 -EVMC_STORAGE,2043,can,7,15,1,0 -EVMC_STORAGE,2044,can,7,15,1,0 -EVMC_STORAGE,2045,can,7,15,1,0 -EVMC_STORAGE,2046,can,7,15,1,0 -EVMC_STORAGE,2047,can,7,15,1,0 -EVMC_STORAGE,2048,can,7,15,1,0 -EVMC_STORAGE,2049,can,7,15,1,0 -EVMC_STORAGE,2050,can,7,15,1,0 -EVMC_STORAGE,2010,mex,7,15,1,0 -EVMC_STORAGE,2011,mex,7,15,1,0 -EVMC_STORAGE,2012,mex,7,15,1,0 -EVMC_STORAGE,2013,mex,7,15,1,0 -EVMC_STORAGE,2014,mex,7,15,1,0 -EVMC_STORAGE,2015,mex,7,15,1,0 -EVMC_STORAGE,2016,mex,7,15,1,0 -EVMC_STORAGE,2017,mex,7,15,1,0 -EVMC_STORAGE,2018,mex,7,15,1,0 -EVMC_STORAGE,2019,mex,7,15,1,0 -EVMC_STORAGE,2020,mex,7,15,1,0 -EVMC_STORAGE,2021,mex,7,15,1,0 -EVMC_STORAGE,2022,mex,7,15,1,0 -EVMC_STORAGE,2023,mex,7,15,1,0 -EVMC_STORAGE,2024,mex,7,15,1,0 -EVMC_STORAGE,2025,mex,7,15,1,0 -EVMC_STORAGE,2026,mex,7,15,1,0 -EVMC_STORAGE,2027,mex,7,15,1,0 -EVMC_STORAGE,2028,mex,7,15,1,0 -EVMC_STORAGE,2029,mex,7,15,1,0 -EVMC_STORAGE,2030,mex,7,15,1,0 -EVMC_STORAGE,2031,mex,7,15,1,0 -EVMC_STORAGE,2032,mex,7,15,1,0 -EVMC_STORAGE,2033,mex,7,15,1,0 -EVMC_STORAGE,2034,mex,7,15,1,0 -EVMC_STORAGE,2035,mex,7,15,1,0 -EVMC_STORAGE,2036,mex,7,15,1,0 -EVMC_STORAGE,2037,mex,7,15,1,0 -EVMC_STORAGE,2038,mex,7,15,1,0 -EVMC_STORAGE,2039,mex,7,15,1,0 -EVMC_STORAGE,2040,mex,7,15,1,0 -EVMC_STORAGE,2041,mex,7,15,1,0 -EVMC_STORAGE,2042,mex,7,15,1,0 -EVMC_STORAGE,2043,mex,7,15,1,0 -EVMC_STORAGE,2044,mex,7,15,1,0 -EVMC_STORAGE,2045,mex,7,15,1,0 -EVMC_STORAGE,2046,mex,7,15,1,0 -EVMC_STORAGE,2047,mex,7,15,1,0 -EVMC_STORAGE,2048,mex,7,15,1,0 -EVMC_STORAGE,2049,mex,7,15,1,0 -EVMC_STORAGE,2050,mex,7,15,1,0 -EVMC_STORAGE,2010,usa,7,15,1,0 -EVMC_STORAGE,2011,usa,7,15,1,0 -EVMC_STORAGE,2012,usa,7,15,1,0 -EVMC_STORAGE,2013,usa,7,15,1,0 -EVMC_STORAGE,2014,usa,7,15,1,0 -EVMC_STORAGE,2015,usa,7,15,1,0 -EVMC_STORAGE,2016,usa,7,15,1,0 -EVMC_STORAGE,2017,usa,7,15,1,0 -EVMC_STORAGE,2018,usa,7,15,1,0 -EVMC_STORAGE,2019,usa,7,15,1,0 -EVMC_STORAGE,2020,usa,7,15,1,0 -EVMC_STORAGE,2021,usa,7,15,1,0 -EVMC_STORAGE,2022,usa,7,15,1,0 -EVMC_STORAGE,2023,usa,7,15,1,0 -EVMC_STORAGE,2024,usa,7,15,1,0 -EVMC_STORAGE,2025,usa,7,15,1,0 -EVMC_STORAGE,2026,usa,7,15,1,0 -EVMC_STORAGE,2027,usa,7,15,1,0 -EVMC_STORAGE,2028,usa,7,15,1,0 -EVMC_STORAGE,2029,usa,7,15,1,0 -EVMC_STORAGE,2030,usa,7,15,1,0 -EVMC_STORAGE,2031,usa,7,15,1,0 -EVMC_STORAGE,2032,usa,7,15,1,0 -EVMC_STORAGE,2033,usa,7,15,1,0 -EVMC_STORAGE,2034,usa,7,15,1,0 -EVMC_STORAGE,2035,usa,7,15,1,0 -EVMC_STORAGE,2036,usa,7,15,1,0 -EVMC_STORAGE,2037,usa,7,15,1,0 -EVMC_STORAGE,2038,usa,7,15,1,0 -EVMC_STORAGE,2039,usa,7,15,1,0 -EVMC_STORAGE,2040,usa,7,15,1,0 -EVMC_STORAGE,2041,usa,7,15,1,0 -EVMC_STORAGE,2042,usa,7,15,1,0 -EVMC_STORAGE,2043,usa,7,15,1,0 -EVMC_STORAGE,2044,usa,7,15,1,0 -EVMC_STORAGE,2045,usa,7,15,1,0 -EVMC_STORAGE,2046,usa,7,15,1,0 -EVMC_STORAGE,2047,usa,7,15,1,0 -EVMC_STORAGE,2048,usa,7,15,1,0 -EVMC_STORAGE,2049,usa,7,15,1,0 -EVMC_STORAGE,2050,usa,7,15,1,0 -EVMC_SHAPE,2010,can,7,15,1,0 -EVMC_SHAPE,2011,can,7,15,1,0 -EVMC_SHAPE,2012,can,7,15,1,0 -EVMC_SHAPE,2013,can,7,15,1,0 -EVMC_SHAPE,2014,can,7,15,1,0 -EVMC_SHAPE,2015,can,7,15,1,0 -EVMC_SHAPE,2016,can,7,15,1,0 -EVMC_SHAPE,2017,can,7,15,1,0 -EVMC_SHAPE,2018,can,7,15,1,0 -EVMC_SHAPE,2019,can,7,15,1,0 -EVMC_SHAPE,2020,can,7,15,1,0 -EVMC_SHAPE,2021,can,7,15,1,0 -EVMC_SHAPE,2022,can,7,15,1,0 -EVMC_SHAPE,2023,can,7,15,1,0 -EVMC_SHAPE,2024,can,7,15,1,0 -EVMC_SHAPE,2025,can,7,15,1,0 -EVMC_SHAPE,2026,can,7,15,1,0 -EVMC_SHAPE,2027,can,7,15,1,0 -EVMC_SHAPE,2028,can,7,15,1,0 -EVMC_SHAPE,2029,can,7,15,1,0 -EVMC_SHAPE,2030,can,7,15,1,0 -EVMC_SHAPE,2031,can,7,15,1,0 -EVMC_SHAPE,2032,can,7,15,1,0 -EVMC_SHAPE,2033,can,7,15,1,0 -EVMC_SHAPE,2034,can,7,15,1,0 -EVMC_SHAPE,2035,can,7,15,1,0 -EVMC_SHAPE,2036,can,7,15,1,0 -EVMC_SHAPE,2037,can,7,15,1,0 -EVMC_SHAPE,2038,can,7,15,1,0 -EVMC_SHAPE,2039,can,7,15,1,0 -EVMC_SHAPE,2040,can,7,15,1,0 -EVMC_SHAPE,2041,can,7,15,1,0 -EVMC_SHAPE,2042,can,7,15,1,0 -EVMC_SHAPE,2043,can,7,15,1,0 -EVMC_SHAPE,2044,can,7,15,1,0 -EVMC_SHAPE,2045,can,7,15,1,0 -EVMC_SHAPE,2046,can,7,15,1,0 -EVMC_SHAPE,2047,can,7,15,1,0 -EVMC_SHAPE,2048,can,7,15,1,0 -EVMC_SHAPE,2049,can,7,15,1,0 -EVMC_SHAPE,2050,can,7,15,1,0 -EVMC_SHAPE,2010,mex,7,15,1,0 -EVMC_SHAPE,2011,mex,7,15,1,0 -EVMC_SHAPE,2012,mex,7,15,1,0 -EVMC_SHAPE,2013,mex,7,15,1,0 -EVMC_SHAPE,2014,mex,7,15,1,0 -EVMC_SHAPE,2015,mex,7,15,1,0 -EVMC_SHAPE,2016,mex,7,15,1,0 -EVMC_SHAPE,2017,mex,7,15,1,0 -EVMC_SHAPE,2018,mex,7,15,1,0 -EVMC_SHAPE,2019,mex,7,15,1,0 -EVMC_SHAPE,2020,mex,7,15,1,0 -EVMC_SHAPE,2021,mex,7,15,1,0 -EVMC_SHAPE,2022,mex,7,15,1,0 -EVMC_SHAPE,2023,mex,7,15,1,0 -EVMC_SHAPE,2024,mex,7,15,1,0 -EVMC_SHAPE,2025,mex,7,15,1,0 -EVMC_SHAPE,2026,mex,7,15,1,0 -EVMC_SHAPE,2027,mex,7,15,1,0 -EVMC_SHAPE,2028,mex,7,15,1,0 -EVMC_SHAPE,2029,mex,7,15,1,0 -EVMC_SHAPE,2030,mex,7,15,1,0 -EVMC_SHAPE,2031,mex,7,15,1,0 -EVMC_SHAPE,2032,mex,7,15,1,0 -EVMC_SHAPE,2033,mex,7,15,1,0 -EVMC_SHAPE,2034,mex,7,15,1,0 -EVMC_SHAPE,2035,mex,7,15,1,0 -EVMC_SHAPE,2036,mex,7,15,1,0 -EVMC_SHAPE,2037,mex,7,15,1,0 -EVMC_SHAPE,2038,mex,7,15,1,0 -EVMC_SHAPE,2039,mex,7,15,1,0 -EVMC_SHAPE,2040,mex,7,15,1,0 -EVMC_SHAPE,2041,mex,7,15,1,0 -EVMC_SHAPE,2042,mex,7,15,1,0 -EVMC_SHAPE,2043,mex,7,15,1,0 -EVMC_SHAPE,2044,mex,7,15,1,0 -EVMC_SHAPE,2045,mex,7,15,1,0 -EVMC_SHAPE,2046,mex,7,15,1,0 -EVMC_SHAPE,2047,mex,7,15,1,0 -EVMC_SHAPE,2048,mex,7,15,1,0 -EVMC_SHAPE,2049,mex,7,15,1,0 -EVMC_SHAPE,2050,mex,7,15,1,0 -EVMC_SHAPE,2010,usa,7,15,1,0 -EVMC_SHAPE,2011,usa,7,15,1,0 -EVMC_SHAPE,2012,usa,7,15,1,0 -EVMC_SHAPE,2013,usa,7,15,1,0 -EVMC_SHAPE,2014,usa,7,15,1,0 -EVMC_SHAPE,2015,usa,7,15,1,0 -EVMC_SHAPE,2016,usa,7,15,1,0 -EVMC_SHAPE,2017,usa,7,15,1,0 -EVMC_SHAPE,2018,usa,7,15,1,0 -EVMC_SHAPE,2019,usa,7,15,1,0 -EVMC_SHAPE,2020,usa,7,15,1,0 -EVMC_SHAPE,2021,usa,7,15,1,0 -EVMC_SHAPE,2022,usa,7,15,1,0 -EVMC_SHAPE,2023,usa,7,15,1,0 -EVMC_SHAPE,2024,usa,7,15,1,0 -EVMC_SHAPE,2025,usa,7,15,1,0 -EVMC_SHAPE,2026,usa,7,15,1,0 -EVMC_SHAPE,2027,usa,7,15,1,0 -EVMC_SHAPE,2028,usa,7,15,1,0 -EVMC_SHAPE,2029,usa,7,15,1,0 -EVMC_SHAPE,2030,usa,7,15,1,0 -EVMC_SHAPE,2031,usa,7,15,1,0 -EVMC_SHAPE,2032,usa,7,15,1,0 -EVMC_SHAPE,2033,usa,7,15,1,0 -EVMC_SHAPE,2034,usa,7,15,1,0 -EVMC_SHAPE,2035,usa,7,15,1,0 -EVMC_SHAPE,2036,usa,7,15,1,0 -EVMC_SHAPE,2037,usa,7,15,1,0 -EVMC_SHAPE,2038,usa,7,15,1,0 -EVMC_SHAPE,2039,usa,7,15,1,0 -EVMC_SHAPE,2040,usa,7,15,1,0 -EVMC_SHAPE,2041,usa,7,15,1,0 -EVMC_SHAPE,2042,usa,7,15,1,0 -EVMC_SHAPE,2043,usa,7,15,1,0 -EVMC_SHAPE,2044,usa,7,15,1,0 -EVMC_SHAPE,2045,usa,7,15,1,0 -EVMC_SHAPE,2046,usa,7,15,1,0 -EVMC_SHAPE,2047,usa,7,15,1,0 -EVMC_SHAPE,2048,usa,7,15,1,0 -EVMC_SHAPE,2049,usa,7,15,1,0 -EVMC_SHAPE,2050,usa,7,15,1,0 Gas-CC,2010,can,20,20,3B,0 Gas-CC,2011,can,20,20,3B,0 Gas-CC,2012,can,20,20,3B,0 diff --git a/inputs/financials/financials_tech_ATB2024.csv b/inputs/financials/financials_tech_ATB2024.csv index a528078f1..0f288e13f 100644 --- a/inputs/financials/financials_tech_ATB2024.csv +++ b/inputs/financials/financials_tech_ATB2024.csv @@ -2459,6 +2459,252 @@ DR_SHED,2047,usa,7,8,1,0 DR_SHED,2048,usa,7,8,1,0 DR_SHED,2049,usa,7,8,1,0 DR_SHED,2050,usa,7,8,1,0 +DR_SHAPE,2010,can,7,15,1,0 +DR_SHAPE,2011,can,7,15,1,0 +DR_SHAPE,2012,can,7,15,1,0 +DR_SHAPE,2013,can,7,15,1,0 +DR_SHAPE,2014,can,7,15,1,0 +DR_SHAPE,2015,can,7,15,1,0 +DR_SHAPE,2016,can,7,15,1,0 +DR_SHAPE,2017,can,7,15,1,0 +DR_SHAPE,2018,can,7,15,1,0 +DR_SHAPE,2019,can,7,15,1,0 +DR_SHAPE,2020,can,7,15,1,0 +DR_SHAPE,2021,can,7,15,1,0 +DR_SHAPE,2022,can,7,15,1,0 +DR_SHAPE,2023,can,7,15,1,0 +DR_SHAPE,2024,can,7,15,1,0 +DR_SHAPE,2025,can,7,15,1,0 +DR_SHAPE,2026,can,7,15,1,0 +DR_SHAPE,2027,can,7,15,1,0 +DR_SHAPE,2028,can,7,15,1,0 +DR_SHAPE,2029,can,7,15,1,0 +DR_SHAPE,2030,can,7,15,1,0 +DR_SHAPE,2031,can,7,15,1,0 +DR_SHAPE,2032,can,7,15,1,0 +DR_SHAPE,2033,can,7,15,1,0 +DR_SHAPE,2034,can,7,15,1,0 +DR_SHAPE,2035,can,7,15,1,0 +DR_SHAPE,2036,can,7,15,1,0 +DR_SHAPE,2037,can,7,15,1,0 +DR_SHAPE,2038,can,7,15,1,0 +DR_SHAPE,2039,can,7,15,1,0 +DR_SHAPE,2040,can,7,15,1,0 +DR_SHAPE,2041,can,7,15,1,0 +DR_SHAPE,2042,can,7,15,1,0 +DR_SHAPE,2043,can,7,15,1,0 +DR_SHAPE,2044,can,7,15,1,0 +DR_SHAPE,2045,can,7,15,1,0 +DR_SHAPE,2046,can,7,15,1,0 +DR_SHAPE,2047,can,7,15,1,0 +DR_SHAPE,2048,can,7,15,1,0 +DR_SHAPE,2049,can,7,15,1,0 +DR_SHAPE,2050,can,7,15,1,0 +DR_SHAPE,2010,mex,7,15,1,0 +DR_SHAPE,2011,mex,7,15,1,0 +DR_SHAPE,2012,mex,7,15,1,0 +DR_SHAPE,2013,mex,7,15,1,0 +DR_SHAPE,2014,mex,7,15,1,0 +DR_SHAPE,2015,mex,7,15,1,0 +DR_SHAPE,2016,mex,7,15,1,0 +DR_SHAPE,2017,mex,7,15,1,0 +DR_SHAPE,2018,mex,7,15,1,0 +DR_SHAPE,2019,mex,7,15,1,0 +DR_SHAPE,2020,mex,7,15,1,0 +DR_SHAPE,2021,mex,7,15,1,0 +DR_SHAPE,2022,mex,7,15,1,0 +DR_SHAPE,2023,mex,7,15,1,0 +DR_SHAPE,2024,mex,7,15,1,0 +DR_SHAPE,2025,mex,7,15,1,0 +DR_SHAPE,2026,mex,7,15,1,0 +DR_SHAPE,2027,mex,7,15,1,0 +DR_SHAPE,2028,mex,7,15,1,0 +DR_SHAPE,2029,mex,7,15,1,0 +DR_SHAPE,2030,mex,7,15,1,0 +DR_SHAPE,2031,mex,7,15,1,0 +DR_SHAPE,2032,mex,7,15,1,0 +DR_SHAPE,2033,mex,7,15,1,0 +DR_SHAPE,2034,mex,7,15,1,0 +DR_SHAPE,2035,mex,7,15,1,0 +DR_SHAPE,2036,mex,7,15,1,0 +DR_SHAPE,2037,mex,7,15,1,0 +DR_SHAPE,2038,mex,7,15,1,0 +DR_SHAPE,2039,mex,7,15,1,0 +DR_SHAPE,2040,mex,7,15,1,0 +DR_SHAPE,2041,mex,7,15,1,0 +DR_SHAPE,2042,mex,7,15,1,0 +DR_SHAPE,2043,mex,7,15,1,0 +DR_SHAPE,2044,mex,7,15,1,0 +DR_SHAPE,2045,mex,7,15,1,0 +DR_SHAPE,2046,mex,7,15,1,0 +DR_SHAPE,2047,mex,7,15,1,0 +DR_SHAPE,2048,mex,7,15,1,0 +DR_SHAPE,2049,mex,7,15,1,0 +DR_SHAPE,2050,mex,7,15,1,0 +DR_SHAPE,2010,usa,7,15,1,0 +DR_SHAPE,2011,usa,7,15,1,0 +DR_SHAPE,2012,usa,7,15,1,0 +DR_SHAPE,2013,usa,7,15,1,0 +DR_SHAPE,2014,usa,7,15,1,0 +DR_SHAPE,2015,usa,7,15,1,0 +DR_SHAPE,2016,usa,7,15,1,0 +DR_SHAPE,2017,usa,7,15,1,0 +DR_SHAPE,2018,usa,7,15,1,0 +DR_SHAPE,2019,usa,7,15,1,0 +DR_SHAPE,2020,usa,7,15,1,0 +DR_SHAPE,2021,usa,7,15,1,0 +DR_SHAPE,2022,usa,7,15,1,0 +DR_SHAPE,2023,usa,7,15,1,0 +DR_SHAPE,2024,usa,7,15,1,0 +DR_SHAPE,2025,usa,7,15,1,0 +DR_SHAPE,2026,usa,7,15,1,0 +DR_SHAPE,2027,usa,7,15,1,0 +DR_SHAPE,2028,usa,7,15,1,0 +DR_SHAPE,2029,usa,7,15,1,0 +DR_SHAPE,2030,usa,7,15,1,0 +DR_SHAPE,2031,usa,7,15,1,0 +DR_SHAPE,2032,usa,7,15,1,0 +DR_SHAPE,2033,usa,7,15,1,0 +DR_SHAPE,2034,usa,7,15,1,0 +DR_SHAPE,2035,usa,7,15,1,0 +DR_SHAPE,2036,usa,7,15,1,0 +DR_SHAPE,2037,usa,7,15,1,0 +DR_SHAPE,2038,usa,7,15,1,0 +DR_SHAPE,2039,usa,7,15,1,0 +DR_SHAPE,2040,usa,7,15,1,0 +DR_SHAPE,2041,usa,7,15,1,0 +DR_SHAPE,2042,usa,7,15,1,0 +DR_SHAPE,2043,usa,7,15,1,0 +DR_SHAPE,2044,usa,7,15,1,0 +DR_SHAPE,2045,usa,7,15,1,0 +DR_SHAPE,2046,usa,7,15,1,0 +DR_SHAPE,2047,usa,7,15,1,0 +DR_SHAPE,2048,usa,7,15,1,0 +DR_SHAPE,2049,usa,7,15,1,0 +DR_SHAPE,2050,usa,7,15,1,0 +DR_SHIFT,2010,can,7,15,1,0 +DR_SHIFT,2011,can,7,15,1,0 +DR_SHIFT,2012,can,7,15,1,0 +DR_SHIFT,2013,can,7,15,1,0 +DR_SHIFT,2014,can,7,15,1,0 +DR_SHIFT,2015,can,7,15,1,0 +DR_SHIFT,2016,can,7,15,1,0 +DR_SHIFT,2017,can,7,15,1,0 +DR_SHIFT,2018,can,7,15,1,0 +DR_SHIFT,2019,can,7,15,1,0 +DR_SHIFT,2020,can,7,15,1,0 +DR_SHIFT,2021,can,7,15,1,0 +DR_SHIFT,2022,can,7,15,1,0 +DR_SHIFT,2023,can,7,15,1,0 +DR_SHIFT,2024,can,7,15,1,0 +DR_SHIFT,2025,can,7,15,1,0 +DR_SHIFT,2026,can,7,15,1,0 +DR_SHIFT,2027,can,7,15,1,0 +DR_SHIFT,2028,can,7,15,1,0 +DR_SHIFT,2029,can,7,15,1,0 +DR_SHIFT,2030,can,7,15,1,0 +DR_SHIFT,2031,can,7,15,1,0 +DR_SHIFT,2032,can,7,15,1,0 +DR_SHIFT,2033,can,7,15,1,0 +DR_SHIFT,2034,can,7,15,1,0 +DR_SHIFT,2035,can,7,15,1,0 +DR_SHIFT,2036,can,7,15,1,0 +DR_SHIFT,2037,can,7,15,1,0 +DR_SHIFT,2038,can,7,15,1,0 +DR_SHIFT,2039,can,7,15,1,0 +DR_SHIFT,2040,can,7,15,1,0 +DR_SHIFT,2041,can,7,15,1,0 +DR_SHIFT,2042,can,7,15,1,0 +DR_SHIFT,2043,can,7,15,1,0 +DR_SHIFT,2044,can,7,15,1,0 +DR_SHIFT,2045,can,7,15,1,0 +DR_SHIFT,2046,can,7,15,1,0 +DR_SHIFT,2047,can,7,15,1,0 +DR_SHIFT,2048,can,7,15,1,0 +DR_SHIFT,2049,can,7,15,1,0 +DR_SHIFT,2050,can,7,15,1,0 +DR_SHIFT,2010,mex,7,15,1,0 +DR_SHIFT,2011,mex,7,15,1,0 +DR_SHIFT,2012,mex,7,15,1,0 +DR_SHIFT,2013,mex,7,15,1,0 +DR_SHIFT,2014,mex,7,15,1,0 +DR_SHIFT,2015,mex,7,15,1,0 +DR_SHIFT,2016,mex,7,15,1,0 +DR_SHIFT,2017,mex,7,15,1,0 +DR_SHIFT,2018,mex,7,15,1,0 +DR_SHIFT,2019,mex,7,15,1,0 +DR_SHIFT,2020,mex,7,15,1,0 +DR_SHIFT,2021,mex,7,15,1,0 +DR_SHIFT,2022,mex,7,15,1,0 +DR_SHIFT,2023,mex,7,15,1,0 +DR_SHIFT,2024,mex,7,15,1,0 +DR_SHIFT,2025,mex,7,15,1,0 +DR_SHIFT,2026,mex,7,15,1,0 +DR_SHIFT,2027,mex,7,15,1,0 +DR_SHIFT,2028,mex,7,15,1,0 +DR_SHIFT,2029,mex,7,15,1,0 +DR_SHIFT,2030,mex,7,15,1,0 +DR_SHIFT,2031,mex,7,15,1,0 +DR_SHIFT,2032,mex,7,15,1,0 +DR_SHIFT,2033,mex,7,15,1,0 +DR_SHIFT,2034,mex,7,15,1,0 +DR_SHIFT,2035,mex,7,15,1,0 +DR_SHIFT,2036,mex,7,15,1,0 +DR_SHIFT,2037,mex,7,15,1,0 +DR_SHIFT,2038,mex,7,15,1,0 +DR_SHIFT,2039,mex,7,15,1,0 +DR_SHIFT,2040,mex,7,15,1,0 +DR_SHIFT,2041,mex,7,15,1,0 +DR_SHIFT,2042,mex,7,15,1,0 +DR_SHIFT,2043,mex,7,15,1,0 +DR_SHIFT,2044,mex,7,15,1,0 +DR_SHIFT,2045,mex,7,15,1,0 +DR_SHIFT,2046,mex,7,15,1,0 +DR_SHIFT,2047,mex,7,15,1,0 +DR_SHIFT,2048,mex,7,15,1,0 +DR_SHIFT,2049,mex,7,15,1,0 +DR_SHIFT,2050,mex,7,15,1,0 +DR_SHIFT,2010,usa,7,15,1,0 +DR_SHIFT,2011,usa,7,15,1,0 +DR_SHIFT,2012,usa,7,15,1,0 +DR_SHIFT,2013,usa,7,15,1,0 +DR_SHIFT,2014,usa,7,15,1,0 +DR_SHIFT,2015,usa,7,15,1,0 +DR_SHIFT,2016,usa,7,15,1,0 +DR_SHIFT,2017,usa,7,15,1,0 +DR_SHIFT,2018,usa,7,15,1,0 +DR_SHIFT,2019,usa,7,15,1,0 +DR_SHIFT,2020,usa,7,15,1,0 +DR_SHIFT,2021,usa,7,15,1,0 +DR_SHIFT,2022,usa,7,15,1,0 +DR_SHIFT,2023,usa,7,15,1,0 +DR_SHIFT,2024,usa,7,15,1,0 +DR_SHIFT,2025,usa,7,15,1,0 +DR_SHIFT,2026,usa,7,15,1,0 +DR_SHIFT,2027,usa,7,15,1,0 +DR_SHIFT,2028,usa,7,15,1,0 +DR_SHIFT,2029,usa,7,15,1,0 +DR_SHIFT,2030,usa,7,15,1,0 +DR_SHIFT,2031,usa,7,15,1,0 +DR_SHIFT,2032,usa,7,15,1,0 +DR_SHIFT,2033,usa,7,15,1,0 +DR_SHIFT,2034,usa,7,15,1,0 +DR_SHIFT,2035,usa,7,15,1,0 +DR_SHIFT,2036,usa,7,15,1,0 +DR_SHIFT,2037,usa,7,15,1,0 +DR_SHIFT,2038,usa,7,15,1,0 +DR_SHIFT,2039,usa,7,15,1,0 +DR_SHIFT,2040,usa,7,15,1,0 +DR_SHIFT,2041,usa,7,15,1,0 +DR_SHIFT,2042,usa,7,15,1,0 +DR_SHIFT,2043,usa,7,15,1,0 +DR_SHIFT,2044,usa,7,15,1,0 +DR_SHIFT,2045,usa,7,15,1,0 +DR_SHIFT,2046,usa,7,15,1,0 +DR_SHIFT,2047,usa,7,15,1,0 +DR_SHIFT,2048,usa,7,15,1,0 +DR_SHIFT,2049,usa,7,15,1,0 +DR_SHIFT,2050,usa,7,15,1,0 electrolyzer,2010,can,7,15,1,0 electrolyzer,2011,can,7,15,1,0 electrolyzer,2012,can,7,15,1,0 @@ -2582,252 +2828,6 @@ electrolyzer,2047,usa,7,15,1,0 electrolyzer,2048,usa,7,15,1,0 electrolyzer,2049,usa,7,15,1,0 electrolyzer,2050,usa,7,15,1,0 -EVMC_SHAPE,2010,can,7,15,1,0 -EVMC_SHAPE,2011,can,7,15,1,0 -EVMC_SHAPE,2012,can,7,15,1,0 -EVMC_SHAPE,2013,can,7,15,1,0 -EVMC_SHAPE,2014,can,7,15,1,0 -EVMC_SHAPE,2015,can,7,15,1,0 -EVMC_SHAPE,2016,can,7,15,1,0 -EVMC_SHAPE,2017,can,7,15,1,0 -EVMC_SHAPE,2018,can,7,15,1,0 -EVMC_SHAPE,2019,can,7,15,1,0 -EVMC_SHAPE,2020,can,7,15,1,0 -EVMC_SHAPE,2021,can,7,15,1,0 -EVMC_SHAPE,2022,can,7,15,1,0 -EVMC_SHAPE,2023,can,7,15,1,0 -EVMC_SHAPE,2024,can,7,15,1,0 -EVMC_SHAPE,2025,can,7,15,1,0 -EVMC_SHAPE,2026,can,7,15,1,0 -EVMC_SHAPE,2027,can,7,15,1,0 -EVMC_SHAPE,2028,can,7,15,1,0 -EVMC_SHAPE,2029,can,7,15,1,0 -EVMC_SHAPE,2030,can,7,15,1,0 -EVMC_SHAPE,2031,can,7,15,1,0 -EVMC_SHAPE,2032,can,7,15,1,0 -EVMC_SHAPE,2033,can,7,15,1,0 -EVMC_SHAPE,2034,can,7,15,1,0 -EVMC_SHAPE,2035,can,7,15,1,0 -EVMC_SHAPE,2036,can,7,15,1,0 -EVMC_SHAPE,2037,can,7,15,1,0 -EVMC_SHAPE,2038,can,7,15,1,0 -EVMC_SHAPE,2039,can,7,15,1,0 -EVMC_SHAPE,2040,can,7,15,1,0 -EVMC_SHAPE,2041,can,7,15,1,0 -EVMC_SHAPE,2042,can,7,15,1,0 -EVMC_SHAPE,2043,can,7,15,1,0 -EVMC_SHAPE,2044,can,7,15,1,0 -EVMC_SHAPE,2045,can,7,15,1,0 -EVMC_SHAPE,2046,can,7,15,1,0 -EVMC_SHAPE,2047,can,7,15,1,0 -EVMC_SHAPE,2048,can,7,15,1,0 -EVMC_SHAPE,2049,can,7,15,1,0 -EVMC_SHAPE,2050,can,7,15,1,0 -EVMC_SHAPE,2010,mex,7,15,1,0 -EVMC_SHAPE,2011,mex,7,15,1,0 -EVMC_SHAPE,2012,mex,7,15,1,0 -EVMC_SHAPE,2013,mex,7,15,1,0 -EVMC_SHAPE,2014,mex,7,15,1,0 -EVMC_SHAPE,2015,mex,7,15,1,0 -EVMC_SHAPE,2016,mex,7,15,1,0 -EVMC_SHAPE,2017,mex,7,15,1,0 -EVMC_SHAPE,2018,mex,7,15,1,0 -EVMC_SHAPE,2019,mex,7,15,1,0 -EVMC_SHAPE,2020,mex,7,15,1,0 -EVMC_SHAPE,2021,mex,7,15,1,0 -EVMC_SHAPE,2022,mex,7,15,1,0 -EVMC_SHAPE,2023,mex,7,15,1,0 -EVMC_SHAPE,2024,mex,7,15,1,0 -EVMC_SHAPE,2025,mex,7,15,1,0 -EVMC_SHAPE,2026,mex,7,15,1,0 -EVMC_SHAPE,2027,mex,7,15,1,0 -EVMC_SHAPE,2028,mex,7,15,1,0 -EVMC_SHAPE,2029,mex,7,15,1,0 -EVMC_SHAPE,2030,mex,7,15,1,0 -EVMC_SHAPE,2031,mex,7,15,1,0 -EVMC_SHAPE,2032,mex,7,15,1,0 -EVMC_SHAPE,2033,mex,7,15,1,0 -EVMC_SHAPE,2034,mex,7,15,1,0 -EVMC_SHAPE,2035,mex,7,15,1,0 -EVMC_SHAPE,2036,mex,7,15,1,0 -EVMC_SHAPE,2037,mex,7,15,1,0 -EVMC_SHAPE,2038,mex,7,15,1,0 -EVMC_SHAPE,2039,mex,7,15,1,0 -EVMC_SHAPE,2040,mex,7,15,1,0 -EVMC_SHAPE,2041,mex,7,15,1,0 -EVMC_SHAPE,2042,mex,7,15,1,0 -EVMC_SHAPE,2043,mex,7,15,1,0 -EVMC_SHAPE,2044,mex,7,15,1,0 -EVMC_SHAPE,2045,mex,7,15,1,0 -EVMC_SHAPE,2046,mex,7,15,1,0 -EVMC_SHAPE,2047,mex,7,15,1,0 -EVMC_SHAPE,2048,mex,7,15,1,0 -EVMC_SHAPE,2049,mex,7,15,1,0 -EVMC_SHAPE,2050,mex,7,15,1,0 -EVMC_SHAPE,2010,usa,7,15,1,0 -EVMC_SHAPE,2011,usa,7,15,1,0 -EVMC_SHAPE,2012,usa,7,15,1,0 -EVMC_SHAPE,2013,usa,7,15,1,0 -EVMC_SHAPE,2014,usa,7,15,1,0 -EVMC_SHAPE,2015,usa,7,15,1,0 -EVMC_SHAPE,2016,usa,7,15,1,0 -EVMC_SHAPE,2017,usa,7,15,1,0 -EVMC_SHAPE,2018,usa,7,15,1,0 -EVMC_SHAPE,2019,usa,7,15,1,0 -EVMC_SHAPE,2020,usa,7,15,1,0 -EVMC_SHAPE,2021,usa,7,15,1,0 -EVMC_SHAPE,2022,usa,7,15,1,0 -EVMC_SHAPE,2023,usa,7,15,1,0 -EVMC_SHAPE,2024,usa,7,15,1,0 -EVMC_SHAPE,2025,usa,7,15,1,0 -EVMC_SHAPE,2026,usa,7,15,1,0 -EVMC_SHAPE,2027,usa,7,15,1,0 -EVMC_SHAPE,2028,usa,7,15,1,0 -EVMC_SHAPE,2029,usa,7,15,1,0 -EVMC_SHAPE,2030,usa,7,15,1,0 -EVMC_SHAPE,2031,usa,7,15,1,0 -EVMC_SHAPE,2032,usa,7,15,1,0 -EVMC_SHAPE,2033,usa,7,15,1,0 -EVMC_SHAPE,2034,usa,7,15,1,0 -EVMC_SHAPE,2035,usa,7,15,1,0 -EVMC_SHAPE,2036,usa,7,15,1,0 -EVMC_SHAPE,2037,usa,7,15,1,0 -EVMC_SHAPE,2038,usa,7,15,1,0 -EVMC_SHAPE,2039,usa,7,15,1,0 -EVMC_SHAPE,2040,usa,7,15,1,0 -EVMC_SHAPE,2041,usa,7,15,1,0 -EVMC_SHAPE,2042,usa,7,15,1,0 -EVMC_SHAPE,2043,usa,7,15,1,0 -EVMC_SHAPE,2044,usa,7,15,1,0 -EVMC_SHAPE,2045,usa,7,15,1,0 -EVMC_SHAPE,2046,usa,7,15,1,0 -EVMC_SHAPE,2047,usa,7,15,1,0 -EVMC_SHAPE,2048,usa,7,15,1,0 -EVMC_SHAPE,2049,usa,7,15,1,0 -EVMC_SHAPE,2050,usa,7,15,1,0 -EVMC_STORAGE,2010,can,7,15,1,0 -EVMC_STORAGE,2011,can,7,15,1,0 -EVMC_STORAGE,2012,can,7,15,1,0 -EVMC_STORAGE,2013,can,7,15,1,0 -EVMC_STORAGE,2014,can,7,15,1,0 -EVMC_STORAGE,2015,can,7,15,1,0 -EVMC_STORAGE,2016,can,7,15,1,0 -EVMC_STORAGE,2017,can,7,15,1,0 -EVMC_STORAGE,2018,can,7,15,1,0 -EVMC_STORAGE,2019,can,7,15,1,0 -EVMC_STORAGE,2020,can,7,15,1,0 -EVMC_STORAGE,2021,can,7,15,1,0 -EVMC_STORAGE,2022,can,7,15,1,0 -EVMC_STORAGE,2023,can,7,15,1,0 -EVMC_STORAGE,2024,can,7,15,1,0 -EVMC_STORAGE,2025,can,7,15,1,0 -EVMC_STORAGE,2026,can,7,15,1,0 -EVMC_STORAGE,2027,can,7,15,1,0 -EVMC_STORAGE,2028,can,7,15,1,0 -EVMC_STORAGE,2029,can,7,15,1,0 -EVMC_STORAGE,2030,can,7,15,1,0 -EVMC_STORAGE,2031,can,7,15,1,0 -EVMC_STORAGE,2032,can,7,15,1,0 -EVMC_STORAGE,2033,can,7,15,1,0 -EVMC_STORAGE,2034,can,7,15,1,0 -EVMC_STORAGE,2035,can,7,15,1,0 -EVMC_STORAGE,2036,can,7,15,1,0 -EVMC_STORAGE,2037,can,7,15,1,0 -EVMC_STORAGE,2038,can,7,15,1,0 -EVMC_STORAGE,2039,can,7,15,1,0 -EVMC_STORAGE,2040,can,7,15,1,0 -EVMC_STORAGE,2041,can,7,15,1,0 -EVMC_STORAGE,2042,can,7,15,1,0 -EVMC_STORAGE,2043,can,7,15,1,0 -EVMC_STORAGE,2044,can,7,15,1,0 -EVMC_STORAGE,2045,can,7,15,1,0 -EVMC_STORAGE,2046,can,7,15,1,0 -EVMC_STORAGE,2047,can,7,15,1,0 -EVMC_STORAGE,2048,can,7,15,1,0 -EVMC_STORAGE,2049,can,7,15,1,0 -EVMC_STORAGE,2050,can,7,15,1,0 -EVMC_STORAGE,2010,mex,7,15,1,0 -EVMC_STORAGE,2011,mex,7,15,1,0 -EVMC_STORAGE,2012,mex,7,15,1,0 -EVMC_STORAGE,2013,mex,7,15,1,0 -EVMC_STORAGE,2014,mex,7,15,1,0 -EVMC_STORAGE,2015,mex,7,15,1,0 -EVMC_STORAGE,2016,mex,7,15,1,0 -EVMC_STORAGE,2017,mex,7,15,1,0 -EVMC_STORAGE,2018,mex,7,15,1,0 -EVMC_STORAGE,2019,mex,7,15,1,0 -EVMC_STORAGE,2020,mex,7,15,1,0 -EVMC_STORAGE,2021,mex,7,15,1,0 -EVMC_STORAGE,2022,mex,7,15,1,0 -EVMC_STORAGE,2023,mex,7,15,1,0 -EVMC_STORAGE,2024,mex,7,15,1,0 -EVMC_STORAGE,2025,mex,7,15,1,0 -EVMC_STORAGE,2026,mex,7,15,1,0 -EVMC_STORAGE,2027,mex,7,15,1,0 -EVMC_STORAGE,2028,mex,7,15,1,0 -EVMC_STORAGE,2029,mex,7,15,1,0 -EVMC_STORAGE,2030,mex,7,15,1,0 -EVMC_STORAGE,2031,mex,7,15,1,0 -EVMC_STORAGE,2032,mex,7,15,1,0 -EVMC_STORAGE,2033,mex,7,15,1,0 -EVMC_STORAGE,2034,mex,7,15,1,0 -EVMC_STORAGE,2035,mex,7,15,1,0 -EVMC_STORAGE,2036,mex,7,15,1,0 -EVMC_STORAGE,2037,mex,7,15,1,0 -EVMC_STORAGE,2038,mex,7,15,1,0 -EVMC_STORAGE,2039,mex,7,15,1,0 -EVMC_STORAGE,2040,mex,7,15,1,0 -EVMC_STORAGE,2041,mex,7,15,1,0 -EVMC_STORAGE,2042,mex,7,15,1,0 -EVMC_STORAGE,2043,mex,7,15,1,0 -EVMC_STORAGE,2044,mex,7,15,1,0 -EVMC_STORAGE,2045,mex,7,15,1,0 -EVMC_STORAGE,2046,mex,7,15,1,0 -EVMC_STORAGE,2047,mex,7,15,1,0 -EVMC_STORAGE,2048,mex,7,15,1,0 -EVMC_STORAGE,2049,mex,7,15,1,0 -EVMC_STORAGE,2050,mex,7,15,1,0 -EVMC_STORAGE,2010,usa,7,15,1,0 -EVMC_STORAGE,2011,usa,7,15,1,0 -EVMC_STORAGE,2012,usa,7,15,1,0 -EVMC_STORAGE,2013,usa,7,15,1,0 -EVMC_STORAGE,2014,usa,7,15,1,0 -EVMC_STORAGE,2015,usa,7,15,1,0 -EVMC_STORAGE,2016,usa,7,15,1,0 -EVMC_STORAGE,2017,usa,7,15,1,0 -EVMC_STORAGE,2018,usa,7,15,1,0 -EVMC_STORAGE,2019,usa,7,15,1,0 -EVMC_STORAGE,2020,usa,7,15,1,0 -EVMC_STORAGE,2021,usa,7,15,1,0 -EVMC_STORAGE,2022,usa,7,15,1,0 -EVMC_STORAGE,2023,usa,7,15,1,0 -EVMC_STORAGE,2024,usa,7,15,1,0 -EVMC_STORAGE,2025,usa,7,15,1,0 -EVMC_STORAGE,2026,usa,7,15,1,0 -EVMC_STORAGE,2027,usa,7,15,1,0 -EVMC_STORAGE,2028,usa,7,15,1,0 -EVMC_STORAGE,2029,usa,7,15,1,0 -EVMC_STORAGE,2030,usa,7,15,1,0 -EVMC_STORAGE,2031,usa,7,15,1,0 -EVMC_STORAGE,2032,usa,7,15,1,0 -EVMC_STORAGE,2033,usa,7,15,1,0 -EVMC_STORAGE,2034,usa,7,15,1,0 -EVMC_STORAGE,2035,usa,7,15,1,0 -EVMC_STORAGE,2036,usa,7,15,1,0 -EVMC_STORAGE,2037,usa,7,15,1,0 -EVMC_STORAGE,2038,usa,7,15,1,0 -EVMC_STORAGE,2039,usa,7,15,1,0 -EVMC_STORAGE,2040,usa,7,15,1,0 -EVMC_STORAGE,2041,usa,7,15,1,0 -EVMC_STORAGE,2042,usa,7,15,1,0 -EVMC_STORAGE,2043,usa,7,15,1,0 -EVMC_STORAGE,2044,usa,7,15,1,0 -EVMC_STORAGE,2045,usa,7,15,1,0 -EVMC_STORAGE,2046,usa,7,15,1,0 -EVMC_STORAGE,2047,usa,7,15,1,0 -EVMC_STORAGE,2048,usa,7,15,1,0 -EVMC_STORAGE,2049,usa,7,15,1,0 -EVMC_STORAGE,2050,usa,7,15,1,0 Gas-CC,2010,can,20,30,3B,0 Gas-CC,2011,can,20,30,3B,0 Gas-CC,2012,can,20,30,3B,0 diff --git a/inputs/plant_characteristics/dollaryear.csv b/inputs/plant_characteristics/dollaryear.csv index 31e81c5f7..74af7c717 100644 --- a/inputs/plant_characteristics/dollaryear.csv +++ b/inputs/plant_characteristics/dollaryear.csv @@ -23,8 +23,6 @@ csp_ATB_2024_advanced,2022 csp_ATB_2024_conservative,2022 csp_ATB_2024_moderate,2022 csp_SunShot2030,2017 -evmc_shape_Baseline,2020 -evmc_storage_Baseline,2020 fuelcell_ATB_2024_advanced,2022 fuelcell_ATB_2024_moderate,2022 gas_ATB_2024_moderate,2022 diff --git a/inputs/plant_characteristics/evmc_shape_Baseline.csv b/inputs/plant_characteristics/evmc_shape_Baseline.csv deleted file mode 100644 index 9fcc06710..000000000 --- a/inputs/plant_characteristics/evmc_shape_Baseline.csv +++ /dev/null @@ -1,411 +0,0 @@ -i,t,capcost,fom,vom,rte -evmc_shape_1,2010,0.001,0.001,0.1,1 -evmc_shape_1,2011,0.001,0.001,0.1,1 -evmc_shape_1,2012,0.001,0.001,0.1,1 -evmc_shape_1,2013,0.001,0.001,0.1,1 -evmc_shape_1,2014,0.001,0.001,0.1,1 -evmc_shape_1,2015,0.001,0.001,0.1,1 -evmc_shape_1,2016,0.001,0.001,0.1,1 -evmc_shape_1,2017,0.001,0.001,0.1,1 -evmc_shape_1,2018,0.001,0.001,0.1,1 -evmc_shape_1,2019,0.001,0.001,0.1,1 -evmc_shape_1,2020,0.001,0.001,0.1,1 -evmc_shape_1,2021,0.001,0.001,0.1,1 -evmc_shape_1,2022,0.001,0.001,0.1,1 -evmc_shape_1,2023,0.001,0.001,0.1,1 -evmc_shape_1,2024,0.001,0.001,0.1,1 -evmc_shape_1,2025,0.001,0.001,0.1,1 -evmc_shape_1,2026,0.001,0.001,0.1,1 -evmc_shape_1,2027,0.001,0.001,0.1,1 -evmc_shape_1,2028,0.001,0.001,0.1,1 -evmc_shape_1,2029,0.001,0.001,0.1,1 -evmc_shape_1,2030,0.001,0.001,0.1,1 -evmc_shape_1,2031,0.001,0.001,0.1,1 -evmc_shape_1,2032,0.001,0.001,0.1,1 -evmc_shape_1,2033,0.001,0.001,0.1,1 -evmc_shape_1,2034,0.001,0.001,0.1,1 -evmc_shape_1,2035,0.001,0.001,0.1,1 -evmc_shape_1,2036,0.001,0.001,0.1,1 -evmc_shape_1,2037,0.001,0.001,0.1,1 -evmc_shape_1,2038,0.001,0.001,0.1,1 -evmc_shape_1,2039,0.001,0.001,0.1,1 -evmc_shape_1,2040,0.001,0.001,0.1,1 -evmc_shape_1,2041,0.001,0.001,0.1,1 -evmc_shape_1,2042,0.001,0.001,0.1,1 -evmc_shape_1,2043,0.001,0.001,0.1,1 -evmc_shape_1,2044,0.001,0.001,0.1,1 -evmc_shape_1,2045,0.001,0.001,0.1,1 -evmc_shape_1,2046,0.001,0.001,0.1,1 -evmc_shape_1,2047,0.001,0.001,0.1,1 -evmc_shape_1,2048,0.001,0.001,0.1,1 -evmc_shape_1,2049,0.001,0.001,0.1,1 -evmc_shape_1,2050,0.001,0.001,0.1,1 -evmc_shape_2,2010,0.001,0.001,0.1,1 -evmc_shape_2,2011,0.001,0.001,0.1,1 -evmc_shape_2,2012,0.001,0.001,0.1,1 -evmc_shape_2,2013,0.001,0.001,0.1,1 -evmc_shape_2,2014,0.001,0.001,0.1,1 -evmc_shape_2,2015,0.001,0.001,0.1,1 -evmc_shape_2,2016,0.001,0.001,0.1,1 -evmc_shape_2,2017,0.001,0.001,0.1,1 -evmc_shape_2,2018,0.001,0.001,0.1,1 -evmc_shape_2,2019,0.001,0.001,0.1,1 -evmc_shape_2,2020,0.001,0.001,0.1,1 -evmc_shape_2,2021,0.001,0.001,0.1,1 -evmc_shape_2,2022,0.001,0.001,0.1,1 -evmc_shape_2,2023,0.001,0.001,0.1,1 -evmc_shape_2,2024,0.001,0.001,0.1,1 -evmc_shape_2,2025,0.001,0.001,0.1,1 -evmc_shape_2,2026,0.001,0.001,0.1,1 -evmc_shape_2,2027,0.001,0.001,0.1,1 -evmc_shape_2,2028,0.001,0.001,0.1,1 -evmc_shape_2,2029,0.001,0.001,0.1,1 -evmc_shape_2,2030,0.001,0.001,0.1,1 -evmc_shape_2,2031,0.001,0.001,0.1,1 -evmc_shape_2,2032,0.001,0.001,0.1,1 -evmc_shape_2,2033,0.001,0.001,0.1,1 -evmc_shape_2,2034,0.001,0.001,0.1,1 -evmc_shape_2,2035,0.001,0.001,0.1,1 -evmc_shape_2,2036,0.001,0.001,0.1,1 -evmc_shape_2,2037,0.001,0.001,0.1,1 -evmc_shape_2,2038,0.001,0.001,0.1,1 -evmc_shape_2,2039,0.001,0.001,0.1,1 -evmc_shape_2,2040,0.001,0.001,0.1,1 -evmc_shape_2,2041,0.001,0.001,0.1,1 -evmc_shape_2,2042,0.001,0.001,0.1,1 -evmc_shape_2,2043,0.001,0.001,0.1,1 -evmc_shape_2,2044,0.001,0.001,0.1,1 -evmc_shape_2,2045,0.001,0.001,0.1,1 -evmc_shape_2,2046,0.001,0.001,0.1,1 -evmc_shape_2,2047,0.001,0.001,0.1,1 -evmc_shape_2,2048,0.001,0.001,0.1,1 -evmc_shape_2,2049,0.001,0.001,0.1,1 -evmc_shape_2,2050,0.001,0.001,0.1,1 -evmc_shape_3,2010,0.001,0.001,0.1,1 -evmc_shape_3,2011,0.001,0.001,0.1,1 -evmc_shape_3,2012,0.001,0.001,0.1,1 -evmc_shape_3,2013,0.001,0.001,0.1,1 -evmc_shape_3,2014,0.001,0.001,0.1,1 -evmc_shape_3,2015,0.001,0.001,0.1,1 -evmc_shape_3,2016,0.001,0.001,0.1,1 -evmc_shape_3,2017,0.001,0.001,0.1,1 -evmc_shape_3,2018,0.001,0.001,0.1,1 -evmc_shape_3,2019,0.001,0.001,0.1,1 -evmc_shape_3,2020,0.001,0.001,0.1,1 -evmc_shape_3,2021,0.001,0.001,0.1,1 -evmc_shape_3,2022,0.001,0.001,0.1,1 -evmc_shape_3,2023,0.001,0.001,0.1,1 -evmc_shape_3,2024,0.001,0.001,0.1,1 -evmc_shape_3,2025,0.001,0.001,0.1,1 -evmc_shape_3,2026,0.001,0.001,0.1,1 -evmc_shape_3,2027,0.001,0.001,0.1,1 -evmc_shape_3,2028,0.001,0.001,0.1,1 -evmc_shape_3,2029,0.001,0.001,0.1,1 -evmc_shape_3,2030,0.001,0.001,0.1,1 -evmc_shape_3,2031,0.001,0.001,0.1,1 -evmc_shape_3,2032,0.001,0.001,0.1,1 -evmc_shape_3,2033,0.001,0.001,0.1,1 -evmc_shape_3,2034,0.001,0.001,0.1,1 -evmc_shape_3,2035,0.001,0.001,0.1,1 -evmc_shape_3,2036,0.001,0.001,0.1,1 -evmc_shape_3,2037,0.001,0.001,0.1,1 -evmc_shape_3,2038,0.001,0.001,0.1,1 -evmc_shape_3,2039,0.001,0.001,0.1,1 -evmc_shape_3,2040,0.001,0.001,0.1,1 -evmc_shape_3,2041,0.001,0.001,0.1,1 -evmc_shape_3,2042,0.001,0.001,0.1,1 -evmc_shape_3,2043,0.001,0.001,0.1,1 -evmc_shape_3,2044,0.001,0.001,0.1,1 -evmc_shape_3,2045,0.001,0.001,0.1,1 -evmc_shape_3,2046,0.001,0.001,0.1,1 -evmc_shape_3,2047,0.001,0.001,0.1,1 -evmc_shape_3,2048,0.001,0.001,0.1,1 -evmc_shape_3,2049,0.001,0.001,0.1,1 -evmc_shape_3,2050,0.001,0.001,0.1,1 -evmc_shape_4,2010,0.001,0.001,0.1,1 -evmc_shape_4,2011,0.001,0.001,0.1,1 -evmc_shape_4,2012,0.001,0.001,0.1,1 -evmc_shape_4,2013,0.001,0.001,0.1,1 -evmc_shape_4,2014,0.001,0.001,0.1,1 -evmc_shape_4,2015,0.001,0.001,0.1,1 -evmc_shape_4,2016,0.001,0.001,0.1,1 -evmc_shape_4,2017,0.001,0.001,0.1,1 -evmc_shape_4,2018,0.001,0.001,0.1,1 -evmc_shape_4,2019,0.001,0.001,0.1,1 -evmc_shape_4,2020,0.001,0.001,0.1,1 -evmc_shape_4,2021,0.001,0.001,0.1,1 -evmc_shape_4,2022,0.001,0.001,0.1,1 -evmc_shape_4,2023,0.001,0.001,0.1,1 -evmc_shape_4,2024,0.001,0.001,0.1,1 -evmc_shape_4,2025,0.001,0.001,0.1,1 -evmc_shape_4,2026,0.001,0.001,0.1,1 -evmc_shape_4,2027,0.001,0.001,0.1,1 -evmc_shape_4,2028,0.001,0.001,0.1,1 -evmc_shape_4,2029,0.001,0.001,0.1,1 -evmc_shape_4,2030,0.001,0.001,0.1,1 -evmc_shape_4,2031,0.001,0.001,0.1,1 -evmc_shape_4,2032,0.001,0.001,0.1,1 -evmc_shape_4,2033,0.001,0.001,0.1,1 -evmc_shape_4,2034,0.001,0.001,0.1,1 -evmc_shape_4,2035,0.001,0.001,0.1,1 -evmc_shape_4,2036,0.001,0.001,0.1,1 -evmc_shape_4,2037,0.001,0.001,0.1,1 -evmc_shape_4,2038,0.001,0.001,0.1,1 -evmc_shape_4,2039,0.001,0.001,0.1,1 -evmc_shape_4,2040,0.001,0.001,0.1,1 -evmc_shape_4,2041,0.001,0.001,0.1,1 -evmc_shape_4,2042,0.001,0.001,0.1,1 -evmc_shape_4,2043,0.001,0.001,0.1,1 -evmc_shape_4,2044,0.001,0.001,0.1,1 -evmc_shape_4,2045,0.001,0.001,0.1,1 -evmc_shape_4,2046,0.001,0.001,0.1,1 -evmc_shape_4,2047,0.001,0.001,0.1,1 -evmc_shape_4,2048,0.001,0.001,0.1,1 -evmc_shape_4,2049,0.001,0.001,0.1,1 -evmc_shape_4,2050,0.001,0.001,0.1,1 -evmc_shape_5,2010,0.001,0.001,0.1,1 -evmc_shape_5,2011,0.001,0.001,0.1,1 -evmc_shape_5,2012,0.001,0.001,0.1,1 -evmc_shape_5,2013,0.001,0.001,0.1,1 -evmc_shape_5,2014,0.001,0.001,0.1,1 -evmc_shape_5,2015,0.001,0.001,0.1,1 -evmc_shape_5,2016,0.001,0.001,0.1,1 -evmc_shape_5,2017,0.001,0.001,0.1,1 -evmc_shape_5,2018,0.001,0.001,0.1,1 -evmc_shape_5,2019,0.001,0.001,0.1,1 -evmc_shape_5,2020,0.001,0.001,0.1,1 -evmc_shape_5,2021,0.001,0.001,0.1,1 -evmc_shape_5,2022,0.001,0.001,0.1,1 -evmc_shape_5,2023,0.001,0.001,0.1,1 -evmc_shape_5,2024,0.001,0.001,0.1,1 -evmc_shape_5,2025,0.001,0.001,0.1,1 -evmc_shape_5,2026,0.001,0.001,0.1,1 -evmc_shape_5,2027,0.001,0.001,0.1,1 -evmc_shape_5,2028,0.001,0.001,0.1,1 -evmc_shape_5,2029,0.001,0.001,0.1,1 -evmc_shape_5,2030,0.001,0.001,0.1,1 -evmc_shape_5,2031,0.001,0.001,0.1,1 -evmc_shape_5,2032,0.001,0.001,0.1,1 -evmc_shape_5,2033,0.001,0.001,0.1,1 -evmc_shape_5,2034,0.001,0.001,0.1,1 -evmc_shape_5,2035,0.001,0.001,0.1,1 -evmc_shape_5,2036,0.001,0.001,0.1,1 -evmc_shape_5,2037,0.001,0.001,0.1,1 -evmc_shape_5,2038,0.001,0.001,0.1,1 -evmc_shape_5,2039,0.001,0.001,0.1,1 -evmc_shape_5,2040,0.001,0.001,0.1,1 -evmc_shape_5,2041,0.001,0.001,0.1,1 -evmc_shape_5,2042,0.001,0.001,0.1,1 -evmc_shape_5,2043,0.001,0.001,0.1,1 -evmc_shape_5,2044,0.001,0.001,0.1,1 -evmc_shape_5,2045,0.001,0.001,0.1,1 -evmc_shape_5,2046,0.001,0.001,0.1,1 -evmc_shape_5,2047,0.001,0.001,0.1,1 -evmc_shape_5,2048,0.001,0.001,0.1,1 -evmc_shape_5,2049,0.001,0.001,0.1,1 -evmc_shape_5,2050,0.001,0.001,0.1,1 -evmc_shape_6,2010,0.001,0.001,0.1,1 -evmc_shape_6,2011,0.001,0.001,0.1,1 -evmc_shape_6,2012,0.001,0.001,0.1,1 -evmc_shape_6,2013,0.001,0.001,0.1,1 -evmc_shape_6,2014,0.001,0.001,0.1,1 -evmc_shape_6,2015,0.001,0.001,0.1,1 -evmc_shape_6,2016,0.001,0.001,0.1,1 -evmc_shape_6,2017,0.001,0.001,0.1,1 -evmc_shape_6,2018,0.001,0.001,0.1,1 -evmc_shape_6,2019,0.001,0.001,0.1,1 -evmc_shape_6,2020,0.001,0.001,0.1,1 -evmc_shape_6,2021,0.001,0.001,0.1,1 -evmc_shape_6,2022,0.001,0.001,0.1,1 -evmc_shape_6,2023,0.001,0.001,0.1,1 -evmc_shape_6,2024,0.001,0.001,0.1,1 -evmc_shape_6,2025,0.001,0.001,0.1,1 -evmc_shape_6,2026,0.001,0.001,0.1,1 -evmc_shape_6,2027,0.001,0.001,0.1,1 -evmc_shape_6,2028,0.001,0.001,0.1,1 -evmc_shape_6,2029,0.001,0.001,0.1,1 -evmc_shape_6,2030,0.001,0.001,0.1,1 -evmc_shape_6,2031,0.001,0.001,0.1,1 -evmc_shape_6,2032,0.001,0.001,0.1,1 -evmc_shape_6,2033,0.001,0.001,0.1,1 -evmc_shape_6,2034,0.001,0.001,0.1,1 -evmc_shape_6,2035,0.001,0.001,0.1,1 -evmc_shape_6,2036,0.001,0.001,0.1,1 -evmc_shape_6,2037,0.001,0.001,0.1,1 -evmc_shape_6,2038,0.001,0.001,0.1,1 -evmc_shape_6,2039,0.001,0.001,0.1,1 -evmc_shape_6,2040,0.001,0.001,0.1,1 -evmc_shape_6,2041,0.001,0.001,0.1,1 -evmc_shape_6,2042,0.001,0.001,0.1,1 -evmc_shape_6,2043,0.001,0.001,0.1,1 -evmc_shape_6,2044,0.001,0.001,0.1,1 -evmc_shape_6,2045,0.001,0.001,0.1,1 -evmc_shape_6,2046,0.001,0.001,0.1,1 -evmc_shape_6,2047,0.001,0.001,0.1,1 -evmc_shape_6,2048,0.001,0.001,0.1,1 -evmc_shape_6,2049,0.001,0.001,0.1,1 -evmc_shape_6,2050,0.001,0.001,0.1,1 -evmc_shape_7,2010,0.001,0.001,0.1,1 -evmc_shape_7,2011,0.001,0.001,0.1,1 -evmc_shape_7,2012,0.001,0.001,0.1,1 -evmc_shape_7,2013,0.001,0.001,0.1,1 -evmc_shape_7,2014,0.001,0.001,0.1,1 -evmc_shape_7,2015,0.001,0.001,0.1,1 -evmc_shape_7,2016,0.001,0.001,0.1,1 -evmc_shape_7,2017,0.001,0.001,0.1,1 -evmc_shape_7,2018,0.001,0.001,0.1,1 -evmc_shape_7,2019,0.001,0.001,0.1,1 -evmc_shape_7,2020,0.001,0.001,0.1,1 -evmc_shape_7,2021,0.001,0.001,0.1,1 -evmc_shape_7,2022,0.001,0.001,0.1,1 -evmc_shape_7,2023,0.001,0.001,0.1,1 -evmc_shape_7,2024,0.001,0.001,0.1,1 -evmc_shape_7,2025,0.001,0.001,0.1,1 -evmc_shape_7,2026,0.001,0.001,0.1,1 -evmc_shape_7,2027,0.001,0.001,0.1,1 -evmc_shape_7,2028,0.001,0.001,0.1,1 -evmc_shape_7,2029,0.001,0.001,0.1,1 -evmc_shape_7,2030,0.001,0.001,0.1,1 -evmc_shape_7,2031,0.001,0.001,0.1,1 -evmc_shape_7,2032,0.001,0.001,0.1,1 -evmc_shape_7,2033,0.001,0.001,0.1,1 -evmc_shape_7,2034,0.001,0.001,0.1,1 -evmc_shape_7,2035,0.001,0.001,0.1,1 -evmc_shape_7,2036,0.001,0.001,0.1,1 -evmc_shape_7,2037,0.001,0.001,0.1,1 -evmc_shape_7,2038,0.001,0.001,0.1,1 -evmc_shape_7,2039,0.001,0.001,0.1,1 -evmc_shape_7,2040,0.001,0.001,0.1,1 -evmc_shape_7,2041,0.001,0.001,0.1,1 -evmc_shape_7,2042,0.001,0.001,0.1,1 -evmc_shape_7,2043,0.001,0.001,0.1,1 -evmc_shape_7,2044,0.001,0.001,0.1,1 -evmc_shape_7,2045,0.001,0.001,0.1,1 -evmc_shape_7,2046,0.001,0.001,0.1,1 -evmc_shape_7,2047,0.001,0.001,0.1,1 -evmc_shape_7,2048,0.001,0.001,0.1,1 -evmc_shape_7,2049,0.001,0.001,0.1,1 -evmc_shape_7,2050,0.001,0.001,0.1,1 -evmc_shape_8,2010,0.001,0.001,0.1,1 -evmc_shape_8,2011,0.001,0.001,0.1,1 -evmc_shape_8,2012,0.001,0.001,0.1,1 -evmc_shape_8,2013,0.001,0.001,0.1,1 -evmc_shape_8,2014,0.001,0.001,0.1,1 -evmc_shape_8,2015,0.001,0.001,0.1,1 -evmc_shape_8,2016,0.001,0.001,0.1,1 -evmc_shape_8,2017,0.001,0.001,0.1,1 -evmc_shape_8,2018,0.001,0.001,0.1,1 -evmc_shape_8,2019,0.001,0.001,0.1,1 -evmc_shape_8,2020,0.001,0.001,0.1,1 -evmc_shape_8,2021,0.001,0.001,0.1,1 -evmc_shape_8,2022,0.001,0.001,0.1,1 -evmc_shape_8,2023,0.001,0.001,0.1,1 -evmc_shape_8,2024,0.001,0.001,0.1,1 -evmc_shape_8,2025,0.001,0.001,0.1,1 -evmc_shape_8,2026,0.001,0.001,0.1,1 -evmc_shape_8,2027,0.001,0.001,0.1,1 -evmc_shape_8,2028,0.001,0.001,0.1,1 -evmc_shape_8,2029,0.001,0.001,0.1,1 -evmc_shape_8,2030,0.001,0.001,0.1,1 -evmc_shape_8,2031,0.001,0.001,0.1,1 -evmc_shape_8,2032,0.001,0.001,0.1,1 -evmc_shape_8,2033,0.001,0.001,0.1,1 -evmc_shape_8,2034,0.001,0.001,0.1,1 -evmc_shape_8,2035,0.001,0.001,0.1,1 -evmc_shape_8,2036,0.001,0.001,0.1,1 -evmc_shape_8,2037,0.001,0.001,0.1,1 -evmc_shape_8,2038,0.001,0.001,0.1,1 -evmc_shape_8,2039,0.001,0.001,0.1,1 -evmc_shape_8,2040,0.001,0.001,0.1,1 -evmc_shape_8,2041,0.001,0.001,0.1,1 -evmc_shape_8,2042,0.001,0.001,0.1,1 -evmc_shape_8,2043,0.001,0.001,0.1,1 -evmc_shape_8,2044,0.001,0.001,0.1,1 -evmc_shape_8,2045,0.001,0.001,0.1,1 -evmc_shape_8,2046,0.001,0.001,0.1,1 -evmc_shape_8,2047,0.001,0.001,0.1,1 -evmc_shape_8,2048,0.001,0.001,0.1,1 -evmc_shape_8,2049,0.001,0.001,0.1,1 -evmc_shape_8,2050,0.001,0.001,0.1,1 -evmc_shape_9,2010,0.001,0.001,0.1,1 -evmc_shape_9,2011,0.001,0.001,0.1,1 -evmc_shape_9,2012,0.001,0.001,0.1,1 -evmc_shape_9,2013,0.001,0.001,0.1,1 -evmc_shape_9,2014,0.001,0.001,0.1,1 -evmc_shape_9,2015,0.001,0.001,0.1,1 -evmc_shape_9,2016,0.001,0.001,0.1,1 -evmc_shape_9,2017,0.001,0.001,0.1,1 -evmc_shape_9,2018,0.001,0.001,0.1,1 -evmc_shape_9,2019,0.001,0.001,0.1,1 -evmc_shape_9,2020,0.001,0.001,0.1,1 -evmc_shape_9,2021,0.001,0.001,0.1,1 -evmc_shape_9,2022,0.001,0.001,0.1,1 -evmc_shape_9,2023,0.001,0.001,0.1,1 -evmc_shape_9,2024,0.001,0.001,0.1,1 -evmc_shape_9,2025,0.001,0.001,0.1,1 -evmc_shape_9,2026,0.001,0.001,0.1,1 -evmc_shape_9,2027,0.001,0.001,0.1,1 -evmc_shape_9,2028,0.001,0.001,0.1,1 -evmc_shape_9,2029,0.001,0.001,0.1,1 -evmc_shape_9,2030,0.001,0.001,0.1,1 -evmc_shape_9,2031,0.001,0.001,0.1,1 -evmc_shape_9,2032,0.001,0.001,0.1,1 -evmc_shape_9,2033,0.001,0.001,0.1,1 -evmc_shape_9,2034,0.001,0.001,0.1,1 -evmc_shape_9,2035,0.001,0.001,0.1,1 -evmc_shape_9,2036,0.001,0.001,0.1,1 -evmc_shape_9,2037,0.001,0.001,0.1,1 -evmc_shape_9,2038,0.001,0.001,0.1,1 -evmc_shape_9,2039,0.001,0.001,0.1,1 -evmc_shape_9,2040,0.001,0.001,0.1,1 -evmc_shape_9,2041,0.001,0.001,0.1,1 -evmc_shape_9,2042,0.001,0.001,0.1,1 -evmc_shape_9,2043,0.001,0.001,0.1,1 -evmc_shape_9,2044,0.001,0.001,0.1,1 -evmc_shape_9,2045,0.001,0.001,0.1,1 -evmc_shape_9,2046,0.001,0.001,0.1,1 -evmc_shape_9,2047,0.001,0.001,0.1,1 -evmc_shape_9,2048,0.001,0.001,0.1,1 -evmc_shape_9,2049,0.001,0.001,0.1,1 -evmc_shape_9,2050,0.001,0.001,0.1,1 -evmc_shape_10,2010,0.001,0.001,0.1,1 -evmc_shape_10,2011,0.001,0.001,0.1,1 -evmc_shape_10,2012,0.001,0.001,0.1,1 -evmc_shape_10,2013,0.001,0.001,0.1,1 -evmc_shape_10,2014,0.001,0.001,0.1,1 -evmc_shape_10,2015,0.001,0.001,0.1,1 -evmc_shape_10,2016,0.001,0.001,0.1,1 -evmc_shape_10,2017,0.001,0.001,0.1,1 -evmc_shape_10,2018,0.001,0.001,0.1,1 -evmc_shape_10,2019,0.001,0.001,0.1,1 -evmc_shape_10,2020,0.001,0.001,0.1,1 -evmc_shape_10,2021,0.001,0.001,0.1,1 -evmc_shape_10,2022,0.001,0.001,0.1,1 -evmc_shape_10,2023,0.001,0.001,0.1,1 -evmc_shape_10,2024,0.001,0.001,0.1,1 -evmc_shape_10,2025,0.001,0.001,0.1,1 -evmc_shape_10,2026,0.001,0.001,0.1,1 -evmc_shape_10,2027,0.001,0.001,0.1,1 -evmc_shape_10,2028,0.001,0.001,0.1,1 -evmc_shape_10,2029,0.001,0.001,0.1,1 -evmc_shape_10,2030,0.001,0.001,0.1,1 -evmc_shape_10,2031,0.001,0.001,0.1,1 -evmc_shape_10,2032,0.001,0.001,0.1,1 -evmc_shape_10,2033,0.001,0.001,0.1,1 -evmc_shape_10,2034,0.001,0.001,0.1,1 -evmc_shape_10,2035,0.001,0.001,0.1,1 -evmc_shape_10,2036,0.001,0.001,0.1,1 -evmc_shape_10,2037,0.001,0.001,0.1,1 -evmc_shape_10,2038,0.001,0.001,0.1,1 -evmc_shape_10,2039,0.001,0.001,0.1,1 -evmc_shape_10,2040,0.001,0.001,0.1,1 -evmc_shape_10,2041,0.001,0.001,0.1,1 -evmc_shape_10,2042,0.001,0.001,0.1,1 -evmc_shape_10,2043,0.001,0.001,0.1,1 -evmc_shape_10,2044,0.001,0.001,0.1,1 -evmc_shape_10,2045,0.001,0.001,0.1,1 -evmc_shape_10,2046,0.001,0.001,0.1,1 -evmc_shape_10,2047,0.001,0.001,0.1,1 -evmc_shape_10,2048,0.001,0.001,0.1,1 -evmc_shape_10,2049,0.001,0.001,0.1,1 -evmc_shape_10,2050,0.001,0.001,0.1,1 diff --git a/inputs/plant_characteristics/evmc_storage_Baseline.csv b/inputs/plant_characteristics/evmc_storage_Baseline.csv deleted file mode 100644 index 9d2c0f504..000000000 --- a/inputs/plant_characteristics/evmc_storage_Baseline.csv +++ /dev/null @@ -1,411 +0,0 @@ -i,t,capcost,fom,vom,rte -evmc_storage_1,2010,0.001,2,0,1 -evmc_storage_1,2011,0.001,2,0,1 -evmc_storage_1,2012,0.001,2,0,1 -evmc_storage_1,2013,0.001,2,0,1 -evmc_storage_1,2014,0.001,2,0,1 -evmc_storage_1,2015,0.001,2,0,1 -evmc_storage_1,2016,0.001,2,0,1 -evmc_storage_1,2017,0.001,2,0,1 -evmc_storage_1,2018,0.001,2,0,1 -evmc_storage_1,2019,0.001,2,0,1 -evmc_storage_1,2020,0.001,2,0,1 -evmc_storage_1,2021,0.001,2,0,1 -evmc_storage_1,2022,0.001,2,0,1 -evmc_storage_1,2023,0.001,2,0,1 -evmc_storage_1,2024,0.001,2,0,1 -evmc_storage_1,2025,0.001,2,0,1 -evmc_storage_1,2026,0.001,2,0,1 -evmc_storage_1,2027,0.001,2,0,1 -evmc_storage_1,2028,0.001,2,0,1 -evmc_storage_1,2029,0.001,2,0,1 -evmc_storage_1,2030,0.001,2,0,1 -evmc_storage_1,2031,0.001,2,0,1 -evmc_storage_1,2032,0.001,2,0,1 -evmc_storage_1,2033,0.001,2,0,1 -evmc_storage_1,2034,0.001,2,0,1 -evmc_storage_1,2035,0.001,2,0,1 -evmc_storage_1,2036,0.001,2,0,1 -evmc_storage_1,2037,0.001,2,0,1 -evmc_storage_1,2038,0.001,2,0,1 -evmc_storage_1,2039,0.001,2,0,1 -evmc_storage_1,2040,0.001,2,0,1 -evmc_storage_1,2041,0.001,2,0,1 -evmc_storage_1,2042,0.001,2,0,1 -evmc_storage_1,2043,0.001,2,0,1 -evmc_storage_1,2044,0.001,2,0,1 -evmc_storage_1,2045,0.001,2,0,1 -evmc_storage_1,2046,0.001,2,0,1 -evmc_storage_1,2047,0.001,2,0,1 -evmc_storage_1,2048,0.001,2,0,1 -evmc_storage_1,2049,0.001,2,0,1 -evmc_storage_1,2050,0.001,2,0,1 -evmc_storage_2,2010,0.001,2,0,1 -evmc_storage_2,2011,0.001,2,0,1 -evmc_storage_2,2012,0.001,2,0,1 -evmc_storage_2,2013,0.001,2,0,1 -evmc_storage_2,2014,0.001,2,0,1 -evmc_storage_2,2015,0.001,2,0,1 -evmc_storage_2,2016,0.001,2,0,1 -evmc_storage_2,2017,0.001,2,0,1 -evmc_storage_2,2018,0.001,2,0,1 -evmc_storage_2,2019,0.001,2,0,1 -evmc_storage_2,2020,0.001,2,0,1 -evmc_storage_2,2021,0.001,2,0,1 -evmc_storage_2,2022,0.001,2,0,1 -evmc_storage_2,2023,0.001,2,0,1 -evmc_storage_2,2024,0.001,2,0,1 -evmc_storage_2,2025,0.001,2,0,1 -evmc_storage_2,2026,0.001,2,0,1 -evmc_storage_2,2027,0.001,2,0,1 -evmc_storage_2,2028,0.001,2,0,1 -evmc_storage_2,2029,0.001,2,0,1 -evmc_storage_2,2030,0.001,2,0,1 -evmc_storage_2,2031,0.001,2,0,1 -evmc_storage_2,2032,0.001,2,0,1 -evmc_storage_2,2033,0.001,2,0,1 -evmc_storage_2,2034,0.001,2,0,1 -evmc_storage_2,2035,0.001,2,0,1 -evmc_storage_2,2036,0.001,2,0,1 -evmc_storage_2,2037,0.001,2,0,1 -evmc_storage_2,2038,0.001,2,0,1 -evmc_storage_2,2039,0.001,2,0,1 -evmc_storage_2,2040,0.001,2,0,1 -evmc_storage_2,2041,0.001,2,0,1 -evmc_storage_2,2042,0.001,2,0,1 -evmc_storage_2,2043,0.001,2,0,1 -evmc_storage_2,2044,0.001,2,0,1 -evmc_storage_2,2045,0.001,2,0,1 -evmc_storage_2,2046,0.001,2,0,1 -evmc_storage_2,2047,0.001,2,0,1 -evmc_storage_2,2048,0.001,2,0,1 -evmc_storage_2,2049,0.001,2,0,1 -evmc_storage_2,2050,0.001,2,0,1 -evmc_storage_3,2010,0.001,2,0,1 -evmc_storage_3,2011,0.001,2,0,1 -evmc_storage_3,2012,0.001,2,0,1 -evmc_storage_3,2013,0.001,2,0,1 -evmc_storage_3,2014,0.001,2,0,1 -evmc_storage_3,2015,0.001,2,0,1 -evmc_storage_3,2016,0.001,2,0,1 -evmc_storage_3,2017,0.001,2,0,1 -evmc_storage_3,2018,0.001,2,0,1 -evmc_storage_3,2019,0.001,2,0,1 -evmc_storage_3,2020,0.001,2,0,1 -evmc_storage_3,2021,0.001,2,0,1 -evmc_storage_3,2022,0.001,2,0,1 -evmc_storage_3,2023,0.001,2,0,1 -evmc_storage_3,2024,0.001,2,0,1 -evmc_storage_3,2025,0.001,2,0,1 -evmc_storage_3,2026,0.001,2,0,1 -evmc_storage_3,2027,0.001,2,0,1 -evmc_storage_3,2028,0.001,2,0,1 -evmc_storage_3,2029,0.001,2,0,1 -evmc_storage_3,2030,0.001,2,0,1 -evmc_storage_3,2031,0.001,2,0,1 -evmc_storage_3,2032,0.001,2,0,1 -evmc_storage_3,2033,0.001,2,0,1 -evmc_storage_3,2034,0.001,2,0,1 -evmc_storage_3,2035,0.001,2,0,1 -evmc_storage_3,2036,0.001,2,0,1 -evmc_storage_3,2037,0.001,2,0,1 -evmc_storage_3,2038,0.001,2,0,1 -evmc_storage_3,2039,0.001,2,0,1 -evmc_storage_3,2040,0.001,2,0,1 -evmc_storage_3,2041,0.001,2,0,1 -evmc_storage_3,2042,0.001,2,0,1 -evmc_storage_3,2043,0.001,2,0,1 -evmc_storage_3,2044,0.001,2,0,1 -evmc_storage_3,2045,0.001,2,0,1 -evmc_storage_3,2046,0.001,2,0,1 -evmc_storage_3,2047,0.001,2,0,1 -evmc_storage_3,2048,0.001,2,0,1 -evmc_storage_3,2049,0.001,2,0,1 -evmc_storage_3,2050,0.001,2,0,1 -evmc_storage_4,2010,0.001,2,0,1 -evmc_storage_4,2011,0.001,2,0,1 -evmc_storage_4,2012,0.001,2,0,1 -evmc_storage_4,2013,0.001,2,0,1 -evmc_storage_4,2014,0.001,2,0,1 -evmc_storage_4,2015,0.001,2,0,1 -evmc_storage_4,2016,0.001,2,0,1 -evmc_storage_4,2017,0.001,2,0,1 -evmc_storage_4,2018,0.001,2,0,1 -evmc_storage_4,2019,0.001,2,0,1 -evmc_storage_4,2020,0.001,2,0,1 -evmc_storage_4,2021,0.001,2,0,1 -evmc_storage_4,2022,0.001,2,0,1 -evmc_storage_4,2023,0.001,2,0,1 -evmc_storage_4,2024,0.001,2,0,1 -evmc_storage_4,2025,0.001,2,0,1 -evmc_storage_4,2026,0.001,2,0,1 -evmc_storage_4,2027,0.001,2,0,1 -evmc_storage_4,2028,0.001,2,0,1 -evmc_storage_4,2029,0.001,2,0,1 -evmc_storage_4,2030,0.001,2,0,1 -evmc_storage_4,2031,0.001,2,0,1 -evmc_storage_4,2032,0.001,2,0,1 -evmc_storage_4,2033,0.001,2,0,1 -evmc_storage_4,2034,0.001,2,0,1 -evmc_storage_4,2035,0.001,2,0,1 -evmc_storage_4,2036,0.001,2,0,1 -evmc_storage_4,2037,0.001,2,0,1 -evmc_storage_4,2038,0.001,2,0,1 -evmc_storage_4,2039,0.001,2,0,1 -evmc_storage_4,2040,0.001,2,0,1 -evmc_storage_4,2041,0.001,2,0,1 -evmc_storage_4,2042,0.001,2,0,1 -evmc_storage_4,2043,0.001,2,0,1 -evmc_storage_4,2044,0.001,2,0,1 -evmc_storage_4,2045,0.001,2,0,1 -evmc_storage_4,2046,0.001,2,0,1 -evmc_storage_4,2047,0.001,2,0,1 -evmc_storage_4,2048,0.001,2,0,1 -evmc_storage_4,2049,0.001,2,0,1 -evmc_storage_4,2050,0.001,2,0,1 -evmc_storage_5,2010,0.001,2,0,1 -evmc_storage_5,2011,0.001,2,0,1 -evmc_storage_5,2012,0.001,2,0,1 -evmc_storage_5,2013,0.001,2,0,1 -evmc_storage_5,2014,0.001,2,0,1 -evmc_storage_5,2015,0.001,2,0,1 -evmc_storage_5,2016,0.001,2,0,1 -evmc_storage_5,2017,0.001,2,0,1 -evmc_storage_5,2018,0.001,2,0,1 -evmc_storage_5,2019,0.001,2,0,1 -evmc_storage_5,2020,0.001,2,0,1 -evmc_storage_5,2021,0.001,2,0,1 -evmc_storage_5,2022,0.001,2,0,1 -evmc_storage_5,2023,0.001,2,0,1 -evmc_storage_5,2024,0.001,2,0,1 -evmc_storage_5,2025,0.001,2,0,1 -evmc_storage_5,2026,0.001,2,0,1 -evmc_storage_5,2027,0.001,2,0,1 -evmc_storage_5,2028,0.001,2,0,1 -evmc_storage_5,2029,0.001,2,0,1 -evmc_storage_5,2030,0.001,2,0,1 -evmc_storage_5,2031,0.001,2,0,1 -evmc_storage_5,2032,0.001,2,0,1 -evmc_storage_5,2033,0.001,2,0,1 -evmc_storage_5,2034,0.001,2,0,1 -evmc_storage_5,2035,0.001,2,0,1 -evmc_storage_5,2036,0.001,2,0,1 -evmc_storage_5,2037,0.001,2,0,1 -evmc_storage_5,2038,0.001,2,0,1 -evmc_storage_5,2039,0.001,2,0,1 -evmc_storage_5,2040,0.001,2,0,1 -evmc_storage_5,2041,0.001,2,0,1 -evmc_storage_5,2042,0.001,2,0,1 -evmc_storage_5,2043,0.001,2,0,1 -evmc_storage_5,2044,0.001,2,0,1 -evmc_storage_5,2045,0.001,2,0,1 -evmc_storage_5,2046,0.001,2,0,1 -evmc_storage_5,2047,0.001,2,0,1 -evmc_storage_5,2048,0.001,2,0,1 -evmc_storage_5,2049,0.001,2,0,1 -evmc_storage_5,2050,0.001,2,0,1 -evmc_storage_6,2010,0.001,2,0,1 -evmc_storage_6,2011,0.001,2,0,1 -evmc_storage_6,2012,0.001,2,0,1 -evmc_storage_6,2013,0.001,2,0,1 -evmc_storage_6,2014,0.001,2,0,1 -evmc_storage_6,2015,0.001,2,0,1 -evmc_storage_6,2016,0.001,2,0,1 -evmc_storage_6,2017,0.001,2,0,1 -evmc_storage_6,2018,0.001,2,0,1 -evmc_storage_6,2019,0.001,2,0,1 -evmc_storage_6,2020,0.001,2,0,1 -evmc_storage_6,2021,0.001,2,0,1 -evmc_storage_6,2022,0.001,2,0,1 -evmc_storage_6,2023,0.001,2,0,1 -evmc_storage_6,2024,0.001,2,0,1 -evmc_storage_6,2025,0.001,2,0,1 -evmc_storage_6,2026,0.001,2,0,1 -evmc_storage_6,2027,0.001,2,0,1 -evmc_storage_6,2028,0.001,2,0,1 -evmc_storage_6,2029,0.001,2,0,1 -evmc_storage_6,2030,0.001,2,0,1 -evmc_storage_6,2031,0.001,2,0,1 -evmc_storage_6,2032,0.001,2,0,1 -evmc_storage_6,2033,0.001,2,0,1 -evmc_storage_6,2034,0.001,2,0,1 -evmc_storage_6,2035,0.001,2,0,1 -evmc_storage_6,2036,0.001,2,0,1 -evmc_storage_6,2037,0.001,2,0,1 -evmc_storage_6,2038,0.001,2,0,1 -evmc_storage_6,2039,0.001,2,0,1 -evmc_storage_6,2040,0.001,2,0,1 -evmc_storage_6,2041,0.001,2,0,1 -evmc_storage_6,2042,0.001,2,0,1 -evmc_storage_6,2043,0.001,2,0,1 -evmc_storage_6,2044,0.001,2,0,1 -evmc_storage_6,2045,0.001,2,0,1 -evmc_storage_6,2046,0.001,2,0,1 -evmc_storage_6,2047,0.001,2,0,1 -evmc_storage_6,2048,0.001,2,0,1 -evmc_storage_6,2049,0.001,2,0,1 -evmc_storage_6,2050,0.001,2,0,1 -evmc_storage_7,2010,0.001,2,0,1 -evmc_storage_7,2011,0.001,2,0,1 -evmc_storage_7,2012,0.001,2,0,1 -evmc_storage_7,2013,0.001,2,0,1 -evmc_storage_7,2014,0.001,2,0,1 -evmc_storage_7,2015,0.001,2,0,1 -evmc_storage_7,2016,0.001,2,0,1 -evmc_storage_7,2017,0.001,2,0,1 -evmc_storage_7,2018,0.001,2,0,1 -evmc_storage_7,2019,0.001,2,0,1 -evmc_storage_7,2020,0.001,2,0,1 -evmc_storage_7,2021,0.001,2,0,1 -evmc_storage_7,2022,0.001,2,0,1 -evmc_storage_7,2023,0.001,2,0,1 -evmc_storage_7,2024,0.001,2,0,1 -evmc_storage_7,2025,0.001,2,0,1 -evmc_storage_7,2026,0.001,2,0,1 -evmc_storage_7,2027,0.001,2,0,1 -evmc_storage_7,2028,0.001,2,0,1 -evmc_storage_7,2029,0.001,2,0,1 -evmc_storage_7,2030,0.001,2,0,1 -evmc_storage_7,2031,0.001,2,0,1 -evmc_storage_7,2032,0.001,2,0,1 -evmc_storage_7,2033,0.001,2,0,1 -evmc_storage_7,2034,0.001,2,0,1 -evmc_storage_7,2035,0.001,2,0,1 -evmc_storage_7,2036,0.001,2,0,1 -evmc_storage_7,2037,0.001,2,0,1 -evmc_storage_7,2038,0.001,2,0,1 -evmc_storage_7,2039,0.001,2,0,1 -evmc_storage_7,2040,0.001,2,0,1 -evmc_storage_7,2041,0.001,2,0,1 -evmc_storage_7,2042,0.001,2,0,1 -evmc_storage_7,2043,0.001,2,0,1 -evmc_storage_7,2044,0.001,2,0,1 -evmc_storage_7,2045,0.001,2,0,1 -evmc_storage_7,2046,0.001,2,0,1 -evmc_storage_7,2047,0.001,2,0,1 -evmc_storage_7,2048,0.001,2,0,1 -evmc_storage_7,2049,0.001,2,0,1 -evmc_storage_7,2050,0.001,2,0,1 -evmc_storage_8,2010,0.001,2,0,1 -evmc_storage_8,2011,0.001,2,0,1 -evmc_storage_8,2012,0.001,2,0,1 -evmc_storage_8,2013,0.001,2,0,1 -evmc_storage_8,2014,0.001,2,0,1 -evmc_storage_8,2015,0.001,2,0,1 -evmc_storage_8,2016,0.001,2,0,1 -evmc_storage_8,2017,0.001,2,0,1 -evmc_storage_8,2018,0.001,2,0,1 -evmc_storage_8,2019,0.001,2,0,1 -evmc_storage_8,2020,0.001,2,0,1 -evmc_storage_8,2021,0.001,2,0,1 -evmc_storage_8,2022,0.001,2,0,1 -evmc_storage_8,2023,0.001,2,0,1 -evmc_storage_8,2024,0.001,2,0,1 -evmc_storage_8,2025,0.001,2,0,1 -evmc_storage_8,2026,0.001,2,0,1 -evmc_storage_8,2027,0.001,2,0,1 -evmc_storage_8,2028,0.001,2,0,1 -evmc_storage_8,2029,0.001,2,0,1 -evmc_storage_8,2030,0.001,2,0,1 -evmc_storage_8,2031,0.001,2,0,1 -evmc_storage_8,2032,0.001,2,0,1 -evmc_storage_8,2033,0.001,2,0,1 -evmc_storage_8,2034,0.001,2,0,1 -evmc_storage_8,2035,0.001,2,0,1 -evmc_storage_8,2036,0.001,2,0,1 -evmc_storage_8,2037,0.001,2,0,1 -evmc_storage_8,2038,0.001,2,0,1 -evmc_storage_8,2039,0.001,2,0,1 -evmc_storage_8,2040,0.001,2,0,1 -evmc_storage_8,2041,0.001,2,0,1 -evmc_storage_8,2042,0.001,2,0,1 -evmc_storage_8,2043,0.001,2,0,1 -evmc_storage_8,2044,0.001,2,0,1 -evmc_storage_8,2045,0.001,2,0,1 -evmc_storage_8,2046,0.001,2,0,1 -evmc_storage_8,2047,0.001,2,0,1 -evmc_storage_8,2048,0.001,2,0,1 -evmc_storage_8,2049,0.001,2,0,1 -evmc_storage_8,2050,0.001,2,0,1 -evmc_storage_9,2010,0.001,2,0,1 -evmc_storage_9,2011,0.001,2,0,1 -evmc_storage_9,2012,0.001,2,0,1 -evmc_storage_9,2013,0.001,2,0,1 -evmc_storage_9,2014,0.001,2,0,1 -evmc_storage_9,2015,0.001,2,0,1 -evmc_storage_9,2016,0.001,2,0,1 -evmc_storage_9,2017,0.001,2,0,1 -evmc_storage_9,2018,0.001,2,0,1 -evmc_storage_9,2019,0.001,2,0,1 -evmc_storage_9,2020,0.001,2,0,1 -evmc_storage_9,2021,0.001,2,0,1 -evmc_storage_9,2022,0.001,2,0,1 -evmc_storage_9,2023,0.001,2,0,1 -evmc_storage_9,2024,0.001,2,0,1 -evmc_storage_9,2025,0.001,2,0,1 -evmc_storage_9,2026,0.001,2,0,1 -evmc_storage_9,2027,0.001,2,0,1 -evmc_storage_9,2028,0.001,2,0,1 -evmc_storage_9,2029,0.001,2,0,1 -evmc_storage_9,2030,0.001,2,0,1 -evmc_storage_9,2031,0.001,2,0,1 -evmc_storage_9,2032,0.001,2,0,1 -evmc_storage_9,2033,0.001,2,0,1 -evmc_storage_9,2034,0.001,2,0,1 -evmc_storage_9,2035,0.001,2,0,1 -evmc_storage_9,2036,0.001,2,0,1 -evmc_storage_9,2037,0.001,2,0,1 -evmc_storage_9,2038,0.001,2,0,1 -evmc_storage_9,2039,0.001,2,0,1 -evmc_storage_9,2040,0.001,2,0,1 -evmc_storage_9,2041,0.001,2,0,1 -evmc_storage_9,2042,0.001,2,0,1 -evmc_storage_9,2043,0.001,2,0,1 -evmc_storage_9,2044,0.001,2,0,1 -evmc_storage_9,2045,0.001,2,0,1 -evmc_storage_9,2046,0.001,2,0,1 -evmc_storage_9,2047,0.001,2,0,1 -evmc_storage_9,2048,0.001,2,0,1 -evmc_storage_9,2049,0.001,2,0,1 -evmc_storage_9,2050,0.001,2,0,1 -evmc_storage_10,2010,0.001,2,0,1 -evmc_storage_10,2011,0.001,2,0,1 -evmc_storage_10,2012,0.001,2,0,1 -evmc_storage_10,2013,0.001,2,0,1 -evmc_storage_10,2014,0.001,2,0,1 -evmc_storage_10,2015,0.001,2,0,1 -evmc_storage_10,2016,0.001,2,0,1 -evmc_storage_10,2017,0.001,2,0,1 -evmc_storage_10,2018,0.001,2,0,1 -evmc_storage_10,2019,0.001,2,0,1 -evmc_storage_10,2020,0.001,2,0,1 -evmc_storage_10,2021,0.001,2,0,1 -evmc_storage_10,2022,0.001,2,0,1 -evmc_storage_10,2023,0.001,2,0,1 -evmc_storage_10,2024,0.001,2,0,1 -evmc_storage_10,2025,0.001,2,0,1 -evmc_storage_10,2026,0.001,2,0,1 -evmc_storage_10,2027,0.001,2,0,1 -evmc_storage_10,2028,0.001,2,0,1 -evmc_storage_10,2029,0.001,2,0,1 -evmc_storage_10,2030,0.001,2,0,1 -evmc_storage_10,2031,0.001,2,0,1 -evmc_storage_10,2032,0.001,2,0,1 -evmc_storage_10,2033,0.001,2,0,1 -evmc_storage_10,2034,0.001,2,0,1 -evmc_storage_10,2035,0.001,2,0,1 -evmc_storage_10,2036,0.001,2,0,1 -evmc_storage_10,2037,0.001,2,0,1 -evmc_storage_10,2038,0.001,2,0,1 -evmc_storage_10,2039,0.001,2,0,1 -evmc_storage_10,2040,0.001,2,0,1 -evmc_storage_10,2041,0.001,2,0,1 -evmc_storage_10,2042,0.001,2,0,1 -evmc_storage_10,2043,0.001,2,0,1 -evmc_storage_10,2044,0.001,2,0,1 -evmc_storage_10,2045,0.001,2,0,1 -evmc_storage_10,2046,0.001,2,0,1 -evmc_storage_10,2047,0.001,2,0,1 -evmc_storage_10,2048,0.001,2,0,1 -evmc_storage_10,2049,0.001,2,0,1 -evmc_storage_10,2050,0.001,2,0,1 diff --git a/inputs/plant_characteristics/maxage.csv b/inputs/plant_characteristics/maxage.csv index 17d57ece5..7181f5cc4 100644 --- a/inputs/plant_characteristics/maxage.csv +++ b/inputs/plant_characteristics/maxage.csv @@ -59,8 +59,8 @@ csp3_1*csp3_12,30 csp4_1*csp4_12,30 battery_li,15 dr_shed_1*dr_shed_2,8 -evmc_storage_1*evmc_storage_10,1 -evmc_shape_1*evmc_shape_10,1 +dr_shape_1*dr_shape_5,8 +dr_shift_1*dr_shift_5,8 electrolyzer,20 smr,25 smr_ccs,25 \ No newline at end of file diff --git a/inputs/plant_characteristics/ramprate.csv b/inputs/plant_characteristics/ramprate.csv index e1e20a0d1..36aabcd5e 100644 --- a/inputs/plant_characteristics/ramprate.csv +++ b/inputs/plant_characteristics/ramprate.csv @@ -45,5 +45,6 @@ pvb1_1*pvb1_10,1 pvb2_1*pvb2_10,1 pvb3_1*pvb3_10,1 dr_shed_1*dr_shed_2,1 -evmc_storage_1*evmc_storage_10,1 -evmc_shape_1*evmc_shape_10,1 +dr_shape_1*dr_shape_5,1 +dr_shift_1*dr_shift_5,1 + diff --git a/inputs/plant_characteristics/unitsize_atb.csv b/inputs/plant_characteristics/unitsize_atb.csv index 4adc43594..34abb1f37 100644 --- a/inputs/plant_characteristics/unitsize_atb.csv +++ b/inputs/plant_characteristics/unitsize_atb.csv @@ -62,5 +62,6 @@ hydnpnd,94,hydro assumption hyded,94,hydro assumption hydend,94,hydro assumption can-imports,20000,arbitrarily high (not disaggregated so doesn't matter) -evmc,20000,arbitrarily high (not disaggregated so doesn't matter) -dr_shed,20000,arbitrarily high (not disaggregated so doesn't matter) +dr_shed,20000,set as an arbitrarily high number +dr_shift,20000,set as an arbitrarily high number +dr_shape,20000,set as an arbitrarily high number \ No newline at end of file diff --git a/inputs/plant_characteristics/years_until_endogenous.csv b/inputs/plant_characteristics/years_until_endogenous.csv index e6c02d297..94495f9fb 100644 --- a/inputs/plant_characteristics/years_until_endogenous.csv +++ b/inputs/plant_characteristics/years_until_endogenous.csv @@ -18,8 +18,8 @@ csp2_1*csp2_12,3 csp3_1*csp3_12,3 csp4_1*csp4_12,3 dr_shed_1*dr_shed_2,0 -evmc_storage_1*evmc_storage_10,0 -evmc_shape_1*evmc_shape_10,0 +dr_shape_1*dr_shape_5,0 +dr_shift_1*dr_shift_5,0 egs_allkm_1*egs_allkm_10,8 distpv,0 Gas-CC,0 diff --git a/inputs/sets/i.csv b/inputs/sets/i.csv index 8ef1bc179..2cbb7c50d 100644 --- a/inputs/sets/i.csv +++ b/inputs/sets/i.csv @@ -155,26 +155,16 @@ csp4_11 csp4_12 dr_shed_1 dr_shed_2 -evmc_storage_1 -evmc_storage_2 -evmc_storage_3 -evmc_storage_4 -evmc_storage_5 -evmc_storage_6 -evmc_storage_7 -evmc_storage_8 -evmc_storage_9 -evmc_storage_10 -evmc_shape_1 -evmc_shape_2 -evmc_shape_3 -evmc_shape_4 -evmc_shape_5 -evmc_shape_6 -evmc_shape_7 -evmc_shape_8 -evmc_shape_9 -evmc_shape_10 +dr_shape_1 +dr_shape_2 +dr_shape_3 +dr_shape_4 +dr_shape_5 +dr_shift_1 +dr_shift_2 +dr_shift_3 +dr_shift_4 +dr_shift_5 hydD hydND hydSD diff --git a/inputs/sets/i_subtech.csv b/inputs/sets/i_subtech.csv index fabf8237a..51956f1f6 100755 --- a/inputs/sets/i_subtech.csv +++ b/inputs/sets/i_subtech.csv @@ -36,11 +36,10 @@ CSP1 CSP2 CSP3 CSP4 +DR_SHAPE DR_SHED +DR_SHIFT DEMAND_FLEX -EVMC -EVMC_STORAGE -EVMC_SHAPE STORAGE STORAGE_HYBRID STORAGE_STANDALONE diff --git a/inputs/sets/tg.csv b/inputs/sets/tg.csv index 3c5ef951e..3e6c8c57f 100644 --- a/inputs/sets/tg.csv +++ b/inputs/sets/tg.csv @@ -11,4 +11,6 @@ coal geothermal biomass pumped-hydro -dr_shed \ No newline at end of file +dr_shed +dr_shape +dr_shift \ No newline at end of file diff --git a/inputs/storage/storage_duration.csv b/inputs/storage/storage_duration.csv index 12fb2e13f..fc723ae02 100644 --- a/inputs/storage/storage_duration.csv +++ b/inputs/storage/storage_duration.csv @@ -48,13 +48,3 @@ csp4_9,6 csp4_10,6 csp4_11,6 csp4_12,6 -evmc_storage_1,8 -evmc_storage_2,8 -evmc_storage_3,8 -evmc_storage_4,8 -evmc_storage_5,8 -evmc_storage_6,8 -evmc_storage_7,8 -evmc_storage_8,8 -evmc_storage_9,8 -evmc_storage_10,8 diff --git a/inputs/supply_curve/dollaryear.csv b/inputs/supply_curve/dollaryear.csv index 76423bb98..82b4fa6b5 100644 --- a/inputs/supply_curve/dollaryear.csv +++ b/inputs/supply_curve/dollaryear.csv @@ -1,7 +1,8 @@ Scenario,Dollar.Year BioFeedstockPrice,2004 dr_shed,2020 -evmc_rsc_Baseline,2020 +dr_shift,2020 +dr_shape,2020 geo_rsc_ATB_2023,2015 hydcost,2004 PSHcostn,2004 diff --git a/inputs/tech-subset-table.csv b/inputs/tech-subset-table.csv index 2c5507ec3..f55a0dc78 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,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,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,DR_SHAPE,DR_SHIFT +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,, +dr_shift_1*dr_shift_10,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES +dr_shape_1*dr_shape_10,,,,,,,,,,,,,,,,,,,,,,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/inputs/techs/techs_default.csv b/inputs/techs/techs_default.csv index 3142bc236..4d540e750 100644 --- a/inputs/techs/techs_default.csv +++ b/inputs/techs/techs_default.csv @@ -58,8 +58,8 @@ csp2_1*csp2_12,p csp3_1*csp3_12,p csp4_1*csp4_12,p dr_shed_1*dr_shed_2,p -evmc_storage_1*evmc_storage_10,p -evmc_shape_1*evmc_shape_10,p +dr_shape_1*dr_shape_5,p +dr_shift_1*dr_shift_5,p egs_allkm_1*egs_allkm_10,p geohydro_allkm_1*geohydro_allkm_10,p egs_nearfield_1*egs_nearfield_10,p diff --git a/inputs/userinput/futurefiles.csv b/inputs/userinput/futurefiles.csv index defb65b56..2ebfa47dc 100644 --- a/inputs/userinput/futurefiles.csv +++ b/inputs/userinput/futurefiles.csv @@ -115,12 +115,23 @@ dollaryear_sc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, dr_dec.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant dr_hrs.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant dr_inc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant +dr_shape_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new,,,,, +dr_shape_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +dr_shape_cost.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +dr_shape_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, +dr_shape_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, dr_shed_avail_scalar.csv,.csv,0,None,t,None,0,0,constant,None,None,new, dr_shed_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, dr_shed_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, dr_shed_capcostmult.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, dr_shed_cost.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, dr_shed_hourly.h5,.h5,0,None,year,datetime,1,keepindex,constant,None,None,new, +dr_shift_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new,,,,, +dr_shift_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +dr_shift_cost.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +dr_shift_profile_energy.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, +dr_shift_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, +dr_shift_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, dr_types.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant e.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, eall.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, @@ -130,14 +141,6 @@ energy_communities.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, etype.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, ev_baseline_load.csv,.csv,0,None,2,"0,1",0,None,linear_5,None,None,linear or saturate?,linear_5 eval_period_adj_mult.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; handled in calc_financial_inputs.py, -evmc_rsc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create rsc_evmc.csv so no need to forecast, -evmc_shape_generation.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant -evmc_shape_load.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant -evmc_shape_profile_decrease.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant -evmc_shape_profile_increase.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant -evmc_storage_energy.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant -evmc_storage_profile_decrease.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant -evmc_storage_profile_increase.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant exog_cap_geohydro.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, exog_cap_upv.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, exog_cap_wind-ons.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant @@ -319,8 +322,12 @@ plantchar_csp.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to c plantchar_dr_shed_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, plantchar_dr_shed_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, plantchar_dr_shed.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, -plantchar_evmc_shape.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, -plantchar_evmc_storage.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, +plantchar_dr_shape_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, +plantchar_dr_shape_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, +plantchar_dr_shape.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +plantchar_dr_shift_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, +plantchar_dr_shift_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, +plantchar_dr_shift.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, plantchar_fuelcell.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, plantchar_gas_ccs.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, plantchar_gas.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, @@ -401,7 +408,6 @@ rps_fraction.csv,.csv,0,None,t,st,1,0,linear_5,None,1,done,linear_5 RPSCat.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, rsc_combined.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant rsc_combined.txt,.txt,1,None,9999,None,9999,0,constant,None,None,done,constant -rsc_evmc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,"[CHECK] don't know what this input file is supposed to look like, but needs to be forecasted; new", rsc_wsc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, safe_harbor_max.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; handled in calc_financial_inputs.py, safe_harbor.csv,.csv,0,None,t,*i,0,0,constant,None,None,new, diff --git a/inputs/userinput/ivt_default.csv b/inputs/userinput/ivt_default.csv index 5434521f6..475de16ab 100644 --- a/inputs/userinput/ivt_default.csv +++ b/inputs/userinput/ivt_default.csv @@ -52,8 +52,8 @@ csp2_1*csp2_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8 csp3_1*csp3_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9 csp4_1*csp4_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9 dr_shed_1*dr_shed_2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -evmc_storage_1*evmc_storage_10,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 -evmc_shape_1*evmc_shape_10,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 +dr_shape_1*dr_shape_5,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 +dr_shift_1*dr_shift_5,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 hydD,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 hydND,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 hydSD,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 diff --git a/inputs/userinput/ivt_small.csv b/inputs/userinput/ivt_small.csv index c726e6900..a72b5dd49 100644 --- a/inputs/userinput/ivt_small.csv +++ b/inputs/userinput/ivt_small.csv @@ -52,8 +52,8 @@ csp2_1*csp2_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 csp3_1*csp3_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 csp4_1*csp4_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 dr_shed_1*dr_shed_2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -evmc_storage_1*evmc_storage_10,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -evmc_shape_1*evmc_shape_10,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +dr_shape_1*dr_shape_5,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +dr_shift_1*dr_shift_5,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydD,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydND,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydSD,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 diff --git a/inputs/userinput/ivt_step.csv b/inputs/userinput/ivt_step.csv index 6e0fea5f1..73084e58b 100644 --- a/inputs/userinput/ivt_step.csv +++ b/inputs/userinput/ivt_step.csv @@ -52,8 +52,8 @@ csp2_1*csp2_12,5 csp3_1*csp3_12,5 csp4_1*csp4_12,5 dr_shed_1*dr_shed_2,0 -evmc_storage_1*evmc_storage_10,2 -evmc_shape_1*evmc_shape_10,2 +dr_shape_1*dr_shape_5,2 +dr_shift_1*dr_shift_5,2 hydD,5 hydND,5 hydSD,5 diff --git a/postprocessing/bokehpivot/in/reeds2/tech_map.csv b/postprocessing/bokehpivot/in/reeds2/tech_map.csv index c29726bbf..df1958f07 100644 --- a/postprocessing/bokehpivot/in/reeds2/tech_map.csv +++ b/postprocessing/bokehpivot/in/reeds2/tech_map.csv @@ -92,8 +92,8 @@ wind-ons*,Onshore Wind csp*,CSP csp-ns*,CSP dr_shed*,DR Shed -evmc_storage*,EVMC_Storage -evmc_shape*,EVMC_Shape +dr_shape*,DR Shape +dr_shift*,DR Shift hyd*,Hydropower egs_allkm_*,Geothermal geohydro_allkm_*,Geothermal diff --git a/postprocessing/bokehpivot/in/reeds2/tech_style.csv b/postprocessing/bokehpivot/in/reeds2/tech_style.csv index 8306c318d..e3d99db22 100644 --- a/postprocessing/bokehpivot/in/reeds2/tech_style.csv +++ b/postprocessing/bokehpivot/in/reeds2/tech_style.csv @@ -41,8 +41,8 @@ Solar,#FFC903,o CAES,#FF4741,"(6,1,0)" Battery,#FF4A88,"(4,1,0)" DR Shed,#B9CBF5,o -EVMC_Storage,#a55194,o -EVMC_Shape,#ce6dbd,o +DR Shift,#B9CBF5,o +DR Shape,#B9CBF5,o DR,#B9CBF5,o Storage-H2,#FF7FBB,"(6,1,0)" Pumped-Hydro,#CC0079,"(8,1,0)" diff --git a/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py b/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py index be7a14621..cecc1ab62 100644 --- a/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py +++ b/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py @@ -3,7 +3,7 @@ so that the value factors can be compared to market share. See comments in in reeds2.py for a description of each preset. ''' -storage_techs = ['Pumped-Hydro','Pumped-Hydro-Flex','Battery','EVMC_Storage','CAES'] +storage_techs = ['Pumped-Hydro','Pumped-Hydro-Flex','Battery','CAES'] static_presets = [ {'name': 'Full Value New Techs', 'sheet_name':'vf_full', 'result': 'Value New Techs', 'download_full_source': True}, diff --git a/postprocessing/compare_cases.py b/postprocessing/compare_cases.py index 57e21efb5..64e0af31a 100644 --- a/postprocessing/compare_cases.py +++ b/postprocessing/compare_cases.py @@ -162,7 +162,7 @@ 'Battery/PSH': ['Battery', 'Pumped-Hydro', 'Pumped-Hydro-Flex'], 'Biopower': ['Biopower', 'BECCS'], 'Coal': ['Coal'], - 'Demand Response': ['DR Shed','EVMC_Shape','EVMC_Storage'], + 'Demand Response': ['DR Shed'], 'Fossil+CCS': ['Coal-CCS-Flex', 'Coal-CCS', 'Coal-CCS_Upgrade','Gas-CCS', 'Gas-CC-CCS', 'Gas-CC-CCS-Flex', 'Gas-CC-CCS_Upgrade'], 'Geothermal': ['Geothermal'], diff --git a/postprocessing/single_case_plots.py b/postprocessing/single_case_plots.py index 79a310005..90aa21ee4 100644 --- a/postprocessing/single_case_plots.py +++ b/postprocessing/single_case_plots.py @@ -110,7 +110,6 @@ ## If year not provided, use final solve year year = year if year > 0 else max(years) - #%% Transmission line map with disaggregated transmission types ### Plot both total capacity (subtract_baseyear=None) and new (subtract_baseyear=2020) for subtract_baseyear in [None, 2020]: @@ -895,3 +894,15 @@ except Exception: print('map_hybrids failed:') print(traceback.format_exc()) + + +#%% DR Shiftresource plots +try: + if int(sw.GSw_DRShift) == 1: + dr_plots = reedsplots.dr_shift_resource_compare( + case = case, + year = year, + savepath = savepath, + ) +except: + print('dr_shift_resource plots failed') \ No newline at end of file diff --git a/postprocessing/tech_aggregation.csv b/postprocessing/tech_aggregation.csv index 445af35eb..9446f114f 100644 --- a/postprocessing/tech_aggregation.csv +++ b/postprocessing/tech_aggregation.csv @@ -62,8 +62,6 @@ wind-ons,Onshore Wind,Wind,VRE,Onshore Wind csp,CSP,Solar,VRE,CSP csp-ns,CSP,Solar,VRE,CSP dr_shed,DR Shed,DR,DR,DR Shed -evmc_storage,EVMC_Storage,DR,DR,EVMC_Storage -evmc_shape,EVMC_Shape,DR,DR,EVMC_Shape hydro,Hydropower,Hydropower,Hydropower,Hydropower Existing hyde,Hydropower,Hydropower,Hydropower,Hydropower Existing hydd,Hydropower,Hydropower,Hydropower,Hydropower New diff --git a/reeds/reedsplots.py b/reeds/reedsplots.py index da1013b1f..60893dd7e 100644 --- a/reeds/reedsplots.py +++ b/reeds/reedsplots.py @@ -2753,6 +2753,7 @@ def map_capacity_techs( _vmax = dfcap.loc[ dfcap.i.isin(techs) & (dfcap.t.astype(int)==year) ].groupby(['i','r']).MW.sum().max() / 1e3 + _vmax=2 else: _vmax = None ### Arrange the subplots @@ -2791,6 +2792,110 @@ def map_capacity_techs( plots.trim_subplots(ax, nrows, ncols, len(techs)) return f, ax +def map_potential_and_load( + case, year=2050, + cmap=cmocean.cm.rain,data_type='potential',title = '1% Shed Potential',case2 = None,drscen='1pct_24h_transreg', + ): + """ + """ + # title = 'Max Load Difference (No DR - With DR) across all weather years' + ### Get maps + dfmap = reeds.io.get_dfmap(case) + dfba = dfmap['r'] + dfstates = dfmap['st'] + ### Case data + if data_type=='potential': + # get supply curve capacity + dfcap = pd.read_csv(os.path.join(case,'inputs_case','rsc_combined.csv')) + dfcap = dfcap.loc[dfcap.sc_cat=='cap'].copy() + dfcap = dfcap.loc[dfcap['*i'].str.contains('dr_')] + # get supply curve capacity multipliers + dr_types = ['dr_shape','dr_shed'] + dr_cap_mults = {} + for dr_type in dr_types: + if dr_type =='dr_shape': + dr_cap_mults[dr_type] = pd.read_csv(os.path.join(reeds_path,'inputs','demand_response',f'{dr_type}_cap_scalar_{drscen}.csv')) + # combine p28 and p30 into z28 + dr_cap_mults[dr_type]['r'] = dr_cap_mults[dr_type]['r'].replace({'p28': 'z28', 'p30': 'z28'}) + # combine p119 and p122 + dr_cap_mults[dr_type]['r'] = dr_cap_mults[dr_type]['r'].replace({'p122': 'z122', 'p119': 'z122'}) + dr_cap_mults[dr_type] = dr_cap_mults[dr_type].groupby(['tech', 'r'], as_index=False).mean() + else: + dr_cap_mults[dr_type] = pd.read_csv(os.path.join(case,'inputs_case',f'{dr_type}_capacity_scalar.csv')) + dr_cap_mults = pd.concat(dr_cap_mults).reset_index(drop=True) + dr_cap_mults = dr_cap_mults[['tech','r',str(year)]].rename(columns={'tech':'*i'}) + # scale cap by mutliplier + dfcap = dfcap.set_index(['*i','r']).drop(columns =['sc_cat','rscbin']) + dr_cap_mults = dr_cap_mults.set_index(['*i','r']) + dfcap = dfcap.merge(dr_cap_mults, on=['*i','r']) + dfcap['potential_MW'] = dfcap['value'] * dfcap[str(year)] + dfcap = dfcap.reset_index() + _vmax = None + _vmax = 2 + elif data_type=='load': + # get load data + load_noDR = reeds.io.read_file(os.path.join(case,'inputs_case', 'load.h5'), parse_timestamps=True) + #load_noDR = reeds.io.read_file('/projects/last10p/lserpe/reeds_dr/repo1/ReEDS-2.0/inputs/load/EER_Baseline_AEO2023_load_hourly.h5', parse_timestamps=True) + load_noDR = load_noDR.reset_index() + load_noDR['datetime'] = load_noDR['datetime'].astype(str) + load_noDR = load_noDR[load_noDR['year']==year] + + load_DR = reeds.io.read_file(os.path.join(case2,'inputs_case', 'load.h5'), parse_timestamps=True) + #load_DR = reeds.io.read_file('/projects/last10p/lserpe/reeds_dr/repo1/ReEDS-2.0/inputs/load/shed_1_pct_load_hourly.h5', parse_timestamps=True) + load_DR = load_DR.reset_index() + load_DR['datetime'] = load_DR['datetime'].astype(str) + load_DR = load_DR[load_DR['year']==year] + + # difference in each hour across all weather years + regions = [col for col in load_noDR.columns if col not in ['datetime','year']] + load_diff = load_noDR[regions] - load_DR[regions] + # Find max difference for each region + dfcap = pd.DataFrame({ + 'r':regions, + 'potential_MW':load_diff.max().values + }) + # # Find mean difference for each region + # dfcap = pd.DataFrame({ + # 'r':regions, + # 'potential_MW':load_diff.mean().values + # }) + + ### Plot it + plt.close() + f, ax = plt.subplots(figsize=(8, 8), dpi=150) + + dfval = dfcap.groupby('r').potential_MW.sum().round(3) + dfplot = dfba.copy() + dfplot['GW'] = (dfval / 1000).fillna(0) + + dfba.plot( + ax=ax, + facecolor='none', edgecolor='k', lw=0.1, zorder=10000) + dfstates.plot( + ax=ax, + facecolor='none', edgecolor='k', lw=0.2, zorder=10001) + dfplot.plot( + ax=ax, column='GW', cmap=cmap, legend=True, + # vmin=0, vmax=_vmax, + # legend_kwds={ + # 'shrink': 0.75, 'pad': 0, 'orientation': 'horizontal', + # 'label': '[GW]', + # } + vmin=0, vmax=int(_vmax), + legend_kwds={ + 'shrink': 0.75, 'pad': 0, 'orientation': 'horizontal', + 'label': '[GW]', + 'format': '{:.0f}'.format, + 'ticks': [0, 1, 2], # Set 3 ticks: min, mid, max + } + + ) + ax.axis('off') + ax.set_title( + '{} ({})'.format(title, year), + x=0.1, ha='left', va='top') + return f, ax + def map_capacity_markers( case, level='r', year=2050, ms=5, @@ -6632,6 +6737,228 @@ def map_output_byyear( ) return f, ax, dictplot +def evmc_resource_compare(case, year,savepath, region = 'p1'): + + evmc_storage_input_files = {'Charge':'evmc_storage_profile_increase.csv', + 'Discharge':'evmc_storage_profile_decrease.csv', + 'Energy':'evmc_storage_profile_energy.csv',} + + evmc_storage_rep_files = {'Charge':'evmc_storage_charge.csv', + 'Discharge':'evmc_storage_discharge.csv', + 'Energy':'evmc_storage_profile_energy.csv',} + + evmc_storage_displatch_rep_files = {'Charge':'gen_h.csv', + 'Discharge':'gen_h.csv', + 'Energy':'stor_level.csv',} + + output_csv = pd.DataFrame() + + baseline_dfs ={} + for k,v in evmc_storage_input_files.items(): + df = pd.read_csv(fr"{case}\inputs_case\{v}") + df = df.loc[(df.i == 'evmc_storage_ldv') & (df.year == year)] + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + df.set_index('date', inplace=True) + baseline_dfs[k] = df + temp = df.rename(columns = {region:f'baseline_{k}'}) + output_csv = pd.concat((output_csv,temp[[f'baseline_{k}']]),axis = 1) + + rep_dfs = {} + for k,v in evmc_storage_rep_files.items(): + df = pd.read_csv(os.path.join(case,'inputs_case','rep',v)) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['**i'] == 'evmc_storage_ldv')] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + df.set_index('date', inplace=True) + df = df[['Values']] + rep_dfs[k] = df + output_csv = pd.concat((output_csv,df.rename(columns = {'Values':f'rep_{k}'})),axis = 1) + + rep_gen = {} + for k,v in evmc_storage_displatch_rep_files.items(): + df = pd.read_csv(os.path.join(case,'outputs',v)).rename(columns = {'Value':'GEN','allh':'h'}) + cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')).rename(columns = {'Value':'CAP','allh':'h'}) + df = pd.merge(left = df, right = cap) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['i'].str.lower() == 'evmc_storage_ldv')] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + temp = pd.DataFrame({'yearhour':range(1,8761),'date':pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) + df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) + df.set_index('date', inplace=True) + df['Values'] = df.GEN/df.CAP + if k == 'Charge': + df.Values *= -1 + df.Values + df.loc[df.Values <0,'Values'] = 0 + df = df[['Values']] + rep_gen[k] = df + output_csv = pd.concat((output_csv,df.rename(columns = {'Values':f'deploy_{k}'})),axis = 1) + + plots_evmc = {'EVMC Resource': {'Energy':(baseline_dfs['Energy'],'k','line'), + 'Charge':(baseline_dfs['Charge'],'red','fill'), + 'Discharge':(baseline_dfs['Discharge'],'green','fill')}, + 'EVMC Rep-period: Charge': {'Baseline':(baseline_dfs['Charge'],'k','line'), + 'Rep':(rep_dfs['Charge'],'grey','fill'), + 'Deploy':(rep_gen['Charge'],'red','line')}, + 'EVMC Rep-period: Discharge': {'Baseline':(baseline_dfs['Discharge'],'k','line'), + 'Rep':(rep_dfs['Discharge'],'grey','fill'), + 'Deploy':(rep_gen['Discharge'],'red','line')}, + 'EVMC Rep-period: Energy': {'Baseline':(baseline_dfs['Energy'],'k','line'), + 'Rep':(rep_dfs['Energy'],'grey','fill'), + 'Deploy':(rep_gen['Energy'],'red','line')}, + } + + output_csv.to_csv(os.path.join(os.path.split(savepath)[0],f"evmc_storage-{region}-{year}.csv")) + + save_dict = {} + # Plot Charge, Discharge, Energy together through year + for title, plot_dict in plots_evmc.items(): + key = list(plot_dict.keys()) + plot_dict[key[0]][0]['Unit'] = 1 + f,ax = plots.plotyearbymonth( + plot_dict[key[0]][0], + plotcols= ('Unit'), + colors=['grey'], style='line', lwforline=0.5, ls = ':' + ) + for k in key: + plots.plotyearbymonth( + plot_dict[k][0], + plotcols= ([region] if region in plot_dict[k][0].columns else 'Values'), + colors=[plot_dict[k][1]], alpha = 0.5, + style = plot_dict[k][2], + f=f, ax=ax, + ) + ax.flat[0].set_title(f'{title}: {year}, {region}') + + savename = f"evmc_storage-{title.replace(':','').replace(' ','_')}-{region}-{year}.png" + f.savefig(os.path.join(savepath, savename)) + + + +def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = 'dr_shift_1'): + + dr_shift_input_files = {'Charge':'dr_shift_profile_increase.csv', + 'Discharge':'dr_shift_profile_decrease.csv', + 'Energy':'dr_shift_profile_energy.csv',} + + dr_shift_rep_files = {'Charge':'dr_shift_charge.csv', + 'Discharge':'dr_shift_discharge.csv', + 'Energy':'dr_shift_profile_energy.csv',} + + dr_shift_dispatch_rep_files = {'Charge':'gen_h.csv', + 'Discharge':'gen_h.csv', + 'Energy':'stor_level.csv',} + + output_csv = pd.DataFrame() + + baseline_dfs ={} + for k,v in dr_shift_input_files.items(): + df = pd.read_csv(os.path.join(case,'inputs_case',v)) + df = df.loc[(df.i == shift_tech) & (df.year == year)] + # # Determine number of unique DR Shift techs + # shift_techs = df['i'].unique() + # df_tech_combined = pd.DataFrame() + # for tech in shift_techs: + # df_tech = df.loc[df['i'] == tech].copy() + # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) + # df = df_tech_combined.copy() + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + df.set_index('date', inplace=True) + df.reset_index() + baseline_dfs[k] = df + temp = df.rename(columns = {region:f'baseline_{k}'}) + output_csv = pd.concat((output_csv,temp[f'baseline_{k}']),axis = 1) + + + rep_dfs = {} + for k,v in dr_shift_rep_files.items(): + df = pd.read_csv(os.path.join(case,'inputs_case','rep',v)) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['**i']== shift_tech)] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + # # Determine number of unique DR Shift techs + # shift_techs = df['**i'].unique() + # df_tech_combined = pd.DataFrame() + # for tech in shift_techs: + # df_tech = df.loc[df['**i'] == tech].copy() + # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) + # df = df_tech_combined.copy() + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + df.set_index('date', inplace=True) + df = df[['Values']] + rep_dfs[k] = df + output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'rep_{k}'})],axis = 1) + + + rep_gen = {} + for k,v in dr_shift_dispatch_rep_files.items(): + df = pd.read_csv(os.path.join(case,'outputs',v)).rename(columns = {'Value':'GEN','allh':'h'}) + cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')).rename(columns = {'Value':'CAP'}) + df = pd.merge(left = df, right = cap) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['i']== shift_tech)] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + # # Determine number of unique DR Shift techs + # shift_techs = df['i'].unique() + # Duplicate the dataframe for each DR Shift tech + temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) + # temp = pd.concat([temp] * len(shift_techs), ignore_index=True) + df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) + df.set_index('date', inplace=True) + df['Values'] = df.GEN/df.CAP + if k == 'Charge': + df.Values *= -1 + df.Values + df.loc[df.Values <0,'Values'] = 0 + df = df[['Values']].fillna(0) + rep_gen[k] = df + output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'deploy_{k}'})],axis = 1) + + plots_evmc = {'DR Shift Resource': {'Energy':(baseline_dfs['Energy'],'k','line'), + 'Charge':(baseline_dfs['Charge'],'red','fill'), + 'Discharge':(baseline_dfs['Discharge'],'green','fill')}, + 'DR Shift Rep-period: Charge': {'Baseline':(baseline_dfs['Charge'],'k','line'), + 'Rep':(rep_dfs['Charge'],'grey','fill'), + 'Deploy':(rep_gen['Charge'],'red','line')}, + 'DR Shift Rep-period: Discharge': {'Baseline':(baseline_dfs['Discharge'],'k','line'), + 'Rep':(rep_dfs['Discharge'],'grey','fill'), + 'Deploy':(rep_gen['Discharge'],'red','line')}, + 'DR Shift Rep-period: Energy': {'Baseline':(baseline_dfs['Energy'],'k','line'), + 'Rep':(rep_dfs['Energy'],'grey','fill'), + 'Deploy':(rep_gen['Energy'],'red','line')}, + } + + output_csv.to_csv(os.path.join(os.path.split(savepath)[0],f"dr_shift-{region}-{year}.csv")) + + save_dict = {} + # Plot Charge, Discharge, Energy together through year + for title, plot_dict in plots_evmc.items(): + key = list(plot_dict.keys()) + plot_dict[key[0]][0]['Unit'] = 1 + f,ax = plots.plotyearbymonth( + plot_dict[key[0]][0], + plotcols= ('Unit'), + colors=['grey'], style='line', lwforline=0.5, ls = ':' + ) + for k in key: + plots.plotyearbymonth( + plot_dict[k][0], + plotcols= ([region] if region in plot_dict[k][0].columns else 'Values'), + colors=[plot_dict[k][1]], alpha = 0.5, + style = plot_dict[k][2], + f=f, ax=ax, + ) + ax.flat[0].set_title(f'{title}: {year}, {region}') + + savename = f"dr_shift-{title.replace(':','').replace(' ','_')}-{region}-{year}.png" + f.savefig(os.path.join(savepath, savename)) def map_prm(case, tmin=2023, cmap=cmocean.cm.rain, scale=3, fontsize=7, vmax=None): dfmap = reeds.io.get_dfmap(case) diff --git a/runbatch.py b/runbatch.py index 60c2e2fb8..3968528a0 100644 --- a/runbatch.py +++ b/runbatch.py @@ -197,28 +197,6 @@ def get_rev_sc_file_name(caseSwitches, rev_row, use_hpc=False): return revswitches - -def check_cases_format(df_cases): - """Check the integrity of the input cases_{}.csv data""" - dfkeep = df_cases.loc[:, ~df_cases.loc['ignore'].astype(int).astype(bool)] - ## Only allow GSw_FakeData to be used all-or-nothing - unique_fakes = dfkeep.loc['GSw_FakeData'].unique() - if len(unique_fakes) > 1: - err = ( - 'GSw_FakeData can only take a single value in a set of cases but values of "' - + ', '.join(unique_fakes) + '" were provided' - ) - raise ValueError(err) - ## Check for spaces in case names - spaces = [i for i in dfkeep if ' ' in i] - if len(spaces): - err = ( - 'Spaces are not allowed in case names; the following names have spaces:\n' - + '\n'.join(f'"{i}"' for i in spaces) - ) - raise ValueError(err) - - def check_compatibility(sw): if int(sw['startyear']) < 2010: raise ValueError(f"startyear = {sw['startyear']} but must be ≥ 2010") @@ -494,7 +472,7 @@ def check_compatibility(sw): err = ( "Manifest.toml does not exist. " "Please set up julia by following the instructions at " - "https://reeds-model.github.io/ReEDS/setup.html#reeds2pras-julia-and-stress-periods-setup" + "https://natlabrockies.github.io/ReEDS-2.0/setup.html#reeds2pras-julia-and-stress-periods-setup" ) raise Exception(err) @@ -745,7 +723,6 @@ def setup_intertemporal( + str(caseSwitches['GSw_WaterMain']) + " " + str(i) + " " + str(caseSwitches['marg_vre_mw']) + " " + str(caseSwitches['marg_stor_mw']) + " " - + str(caseSwitches['marg_evmc_mw']) + " " + '\n') ## merge all the resulting gdx files ## the output file will be for the next iteration @@ -811,7 +788,6 @@ def setup_window( + str(caseSwitches['GSw_WaterMain']) + " " + str(i) + " " + str(caseSwitches['marg_vre_mw']) + " " + str(caseSwitches['marg_stor_mw']) + " " - + str(caseSwitches['marg_evmc_mw']) + " " + '\n') ## merge all the resulting r2_in gdx files ## the output file will be for the next iteration @@ -945,7 +921,6 @@ def setupEnvironment( ) #%% Stop now if any switches are incompatible - check_cases_format(df_cases) for sw in caseSwitches: check_compatibility(sw) if dryrun: @@ -1216,13 +1191,8 @@ def write_batch_script( repo = git.Repo() try: branch = repo.active_branch.name - tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime) - if len(tags): - tag = tags[-1].name - description = repo.git.describe() - else: - tag = '' - description = '' + tag = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)[-1].name + description = repo.git.describe() except TypeError: branch = 'DETACHED_HEAD' tag = '' @@ -1333,7 +1303,6 @@ def write_batch_script( OPATH.writelines("module load anaconda3 \n") OPATH.writelines("module use /nopt/nrel/apps/software/gams/modulefiles \n") OPATH.writelines("module load gams \n") - OPATH.writelines("module load julia/1.12.1 \n") else: OPATH.writelines("module load conda \n") OPATH.writelines("module load gams \n") diff --git a/runfiles.csv b/runfiles.csv index 1a60f823d..84f10e837 100644 --- a/runfiles.csv +++ b/runfiles.csv @@ -1,4 +1,4 @@ -filename,filepath,required_if,aggfunc,disaggfunc,region_col,fix_cols,i_col,wide,header,key,post_copy,GAMStype,GAMSname,comment,notes +filename,filepath,required_if,aggfunc,disaggfunc,region_col,fix_cols,i_col,wide,header,key,post_copy,GAMStype,GAMSname,comment,notes, #,for input files only,"conditions determinining whether or not the file is required (1 if always required, 0 if always optional)",,,,,,1 if any parameters are in wide format,0 if file has column labels,,files are created after copy_files,for auto-imported files,,, i.csv,inputs/sets/i.csv,1,ignore,ignore,,,,,,,1,set,i,generation technologies, ctt.csv,inputs/sets/ctt.csv,1,ignore,ignore,,,,,,,1,set,ctt,cooling technology type, @@ -118,11 +118,22 @@ dollaryear_consume.csv,inputs/consume/dollaryear.csv,int(sw.GSw_DAC) != 0,ignore dollaryear_plant.csv,inputs/plant_characteristics/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,,Do we really need 3 separate instances of dollaryear? dollaryear_fuel.csv,inputs/fuelprices/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, dollaryear_sc.csv,inputs/supply_curve/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, +dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, +dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done +dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, +dr_shape_profile_decrease.csv,inputs/demand_response/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shape_profile_increase.csv,inputs/demand_response/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, dr_shed_avail_scalar.csv,inputs/demand_response/dr_shed_avail_scalar.csv,1,ignore,ignore,,,,,0,,,,,, dr_shed_cap.csv,inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_cost.csv,inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_capacity_scalar.csv,inputs/demand_response/dr_shed_capacity_scalar_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done dr_shed_hourly.h5,inputs/profiles_dr/dr_shed_hourly_{dr_shedscen}.h5,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,"datetime,year",,1,keepindex,,,,,,Agg/Disagg handled in hourly_load +dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, +dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, +dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalars_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done, +dr_shift_profile_decrease.csv,inputs/demand_response/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_profile_increase.csv,inputs/demand_response/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_profile_energy.csv,inputs/demand_response/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,,e,, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,,eall,, emit_rate.csv,,1,ignore,ignore,,"etype,e,i,v,r",,0,0,,,,,,ReEDS-to-PLEXOS output @@ -309,11 +320,15 @@ plantchar_coal_ccs.csv,inputs/plant_characteristics/{plantchar_coal_ccs}.csv,1,i plantchar_coal.csv,inputs/plant_characteristics/{plantchar_coal}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_battery.csv,inputs/plant_characteristics/{plantchar_battery}.csv,int(sw.GSw_Storage) != 0,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_csp.csv,inputs/plant_characteristics/{plantchar_csp}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape.csv,inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shape_vom.csv,inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shape_fom.csv,inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, plantchar_dr_shed.csv,inputs/plant_characteristics/dr_shed_capcost_scalars_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_vom.csv,inputs/plant_characteristics/dr_shed_vom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_fom.csv,inputs/plant_characteristics/dr_shed_fom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_evmc_shape.csv,inputs/plant_characteristics/evmc_shape_{evmcscen}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv -plantchar_evmc_storage.csv,inputs/plant_characteristics/evmc_storage_{evmcscen}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift.csv,inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shift_vom.csv,inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shift_fom.csv,inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, plantchar_fuelcell.csv,inputs/plant_characteristics/{plantchar_fuelcell}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas_ccs.csv,inputs/plant_characteristics/{plantchar_gas_ccs}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas.csv,inputs/plant_characteristics/{plantchar_gas}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv diff --git a/sources.csv b/sources.csv index 3cbf0c3a8..ec8de1216 100644 --- a/sources.csv +++ b/sources.csv @@ -187,12 +187,6 @@ RelativeFilePath,RelativeFolderPath,FileName_new,FileExtension,Description_new,I /inputs/demand_response/dr_shed_capacity_scalar_demo_data_January_2025.csv,/inputs/demand_response,dr_shed_capacity_scalar_demo_data_January_2025,.csv,,,,,, /inputs/demand_response/dr_shed_hourly.h5,/inputs/demand_response,dr_shed_hourly,.h5,,,,,, /inputs/demand_response/ev_load_Baseline.h5,/inputs/demand_response,ev_load_Baseline,.h5,Baseline electricity load from EV charging by timeslice h and year t,,,,inputs,MW -/inputs/demand_response/evmc_rsc_Baseline.csv,/inputs/demand_response,evmc_rsc_Baseline,.csv,,,,,, -/inputs/demand_response/evmc_shape_decrease_profile_Baseline.h5,/inputs/demand_response,evmc_shape_decrease_profile_Baseline,.h5,,,,,, -/inputs/demand_response/evmc_shape_increase_profile_Baseline.h5,/inputs/demand_response,evmc_shape_increase_profile_Baseline,.h5,,,,,, -/inputs/demand_response/evmc_storage_decrease_profile_Baseline.h5,/inputs/demand_response,evmc_storage_decrease_profile_Baseline,.h5,,,,,, -/inputs/demand_response/evmc_storage_increase_profile_Baseline.h5,/inputs/demand_response,evmc_storage_increase_profile_Baseline,.h5,,,,,, -/inputs/demand_response/evmc_storage_profile_energy_Baseline.h5,/inputs/demand_response,evmc_storage_profile_energy_Baseline,.h5,,,,,, /inputs/dgen_model_inputs/stscen2023_electrification/distpvcap_stscen2023_electrification.csv,/inputs/dgen_model_inputs/stscen2023_electrification,distpvcap_stscen2023_electrification,.csv,,,,,, /inputs/dgen_model_inputs/stscen2023_highng/distpvcap_stscen2023_highng.csv,/inputs/dgen_model_inputs/stscen2023_highng,distpvcap_stscen2023_highng,.csv,Setting for distpv scenario capacity - from standard scenarios 2023 with high NG (including distpv) costs,,,,distribution PV inputs , /inputs/dgen_model_inputs/stscen2023_highre/distpvcap_stscen2023_highre.csv,/inputs/dgen_model_inputs/stscen2023_highre,distpvcap_stscen2023_highre,.csv,Setting for distpv scenario capacity - from standard scenarios 2023 with high RE (including distpv) costs,,,,distribution PV inputs , @@ -347,8 +341,6 @@ RelativeFilePath,RelativeFolderPath,FileName_new,FileExtension,Description_new,I /inputs/plant_characteristics/dr_shed_capcost_demo_data_IEF_January_2025.csv,/inputs/plant_characteristics,dr_shed_capcost_demo_data_IEF_January_2025,.csv,,,,,, /inputs/plant_characteristics/dr_shed_fom.csv,/inputs/plant_characteristics,dr_shed_fom,.csv,,,,,, /inputs/plant_characteristics/dr_shed_vom.csv,/inputs/plant_characteristics,dr_shed_vom,.csv,,,,,, -/inputs/plant_characteristics/evmc_shape_Baseline.csv,/inputs/plant_characteristics,evmc_shape_Baseline,.csv,,,,,, -/inputs/plant_characteristics/evmc_storage_Baseline.csv,/inputs/plant_characteristics,evmc_storage_Baseline,.csv,,,,,, /inputs/plant_characteristics/gas-ccs_ATB_2024_advanced.csv,/inputs/plant_characteristics,gas-ccs_ATB_2024_advanced,.csv,,,,,, /inputs/plant_characteristics/gas-ccs_ATB_2024_conservative.csv,/inputs/plant_characteristics,gas-ccs_ATB_2024_conservative,.csv,,,,,, /inputs/plant_characteristics/gas-ccs_ATB_2024_moderate.csv,/inputs/plant_characteristics,gas-ccs_ATB_2024_moderate,.csv,,,,,, @@ -587,53 +579,53 @@ RelativeFilePath,RelativeFolderPath,FileName_new,FileExtension,Description_new,I /inputs/supply_curve/interconnection_land.h5,/inputs/supply_curve,interconnection_land,.h5,,,,,, /inputs/supply_curve/interconnection_offshore.h5,/inputs/supply_curve,interconnection_offshore,.h5,,,,,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/rev_paths.csv,/inputs/supply_curve,rev_paths,.csv,,,,,, /inputs/supply_curve/sc_point_gid_old2new.csv,/inputs/supply_curve,sc_point_gid_old2new,.csv,,,,,, /inputs/supply_curve/sitemap.h5,/inputs/supply_curve,sitemap,.h5,,,,,, diff --git a/sources_documentation.md b/sources_documentation.md index dd0442180..7468d44f2 100644 --- a/sources_documentation.md +++ b/sources_documentation.md @@ -1211,31 +1211,6 @@ - [dr_shed_hourly.h5](/inputs/demand_response/dr_shed_hourly.h5) --- - - [ev_load_Baseline.h5](/inputs/demand_response/ev_load_Baseline.h5) - - **File Type:** inputs - - **Description:** Baseline electricity load from EV charging by timeslice h and year t - - **Units:** MW - ---- - - - [evmc_rsc_Baseline.csv](/inputs/demand_response/evmc_rsc_Baseline.csv) ---- - - - [evmc_shape_decrease_profile_Baseline.h5](/inputs/demand_response/evmc_shape_decrease_profile_Baseline.h5) ---- - - - [evmc_shape_increase_profile_Baseline.h5](/inputs/demand_response/evmc_shape_increase_profile_Baseline.h5) ---- - - - [evmc_storage_decrease_profile_Baseline.h5](/inputs/demand_response/evmc_storage_decrease_profile_Baseline.h5) ---- - - - [evmc_storage_increase_profile_Baseline.h5](/inputs/demand_response/evmc_storage_increase_profile_Baseline.h5) ---- - - - [evmc_storage_profile_energy_Baseline.h5](/inputs/demand_response/evmc_storage_profile_energy_Baseline.h5) ---- - #### inputs/dgen_model_inputs @@ -2013,12 +1988,6 @@ - [dr_shed_vom.csv](/inputs/plant_characteristics/dr_shed_vom.csv) --- - - [evmc_shape_Baseline.csv](/inputs/plant_characteristics/evmc_shape_Baseline.csv) ---- - - - [evmc_storage_Baseline.csv](/inputs/plant_characteristics/evmc_storage_Baseline.csv) ---- - - [gas-ccs_ATB_2024_advanced.csv](/inputs/plant_characteristics/gas-ccs_ATB_2024_advanced.csv) --- @@ -2972,7 +2941,7 @@ - [PSH_supply_curves_capacity_10hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEph_apr2025.csv) @@ -2980,7 +2949,7 @@ - [PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_apr2025.csv) @@ -2988,7 +2957,7 @@ - [PSH_supply_curves_capacity_10hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv) @@ -2996,7 +2965,7 @@ - [PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_apr2025.csv) @@ -3004,7 +2973,7 @@ - [PSH_supply_curves_capacity_12hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEph_apr2025.csv) @@ -3012,7 +2981,7 @@ - [PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_apr2025.csv) @@ -3020,7 +2989,7 @@ - [PSH_supply_curves_capacity_12hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv) @@ -3028,7 +2997,7 @@ - [PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_apr2025.csv) @@ -3036,7 +3005,7 @@ - [PSH_supply_curves_capacity_8hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEph_apr2025.csv) @@ -3044,7 +3013,7 @@ - [PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_apr2025.csv) @@ -3052,7 +3021,7 @@ - [PSH_supply_curves_capacity_8hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv) @@ -3060,7 +3029,7 @@ - [PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_apr2025.csv) @@ -3069,7 +3038,7 @@ - [PSH_supply_curves_cost_10hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEph_apr2025.csv) @@ -3078,7 +3047,7 @@ - [PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_apr2025.csv) @@ -3087,7 +3056,7 @@ - [PSH_supply_curves_cost_10hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv) @@ -3096,7 +3065,7 @@ - [PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_apr2025.csv) @@ -3105,7 +3074,7 @@ - [PSH_supply_curves_cost_12hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEph_apr2025.csv) @@ -3114,7 +3083,7 @@ - [PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_apr2025.csv) @@ -3123,7 +3092,7 @@ - [PSH_supply_curves_cost_12hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv) @@ -3132,7 +3101,7 @@ - [PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_apr2025.csv) @@ -3141,7 +3110,7 @@ - [PSH_supply_curves_cost_8hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEph_apr2025.csv) @@ -3150,7 +3119,7 @@ - [PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_apr2025.csv) @@ -3159,7 +3128,7 @@ - [PSH_supply_curves_cost_8hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv) @@ -3168,7 +3137,7 @@ - [PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) --- - [rev_paths.csv](/inputs/supply_curve/rev_paths.csv) diff --git a/tests/objective_function_params.yaml b/tests/objective_function_params.yaml index 1764036c7..73e0c7dc8 100644 --- a/tests/objective_function_params.yaml +++ b/tests/objective_function_params.yaml @@ -56,6 +56,8 @@ cost_cap: - hydro - psh - dr_shed + - dr_shift + - dr_shape cost_cap_fin_mult: indexsets: - valinv From 1129ae03246fdcbbe2a413819ec2676b340547e4 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Fri, 24 Apr 2026 11:41:51 -0600 Subject: [PATCH 02/25] Clean up differences from .com main branch --- .github/PULL_REQUEST_TEMPLATE.md | 10 +- b_inputs.gms | 2 +- c_supplymodel.gms | 9 +- cases.csv | 2 +- cases_examples.csv | 4 +- docs/source/model_documentation.md | 21 ++-- docs/source/postprocessing_tools.md | 1 - docs/source/user_guide.md | 9 +- input_processing/aggregate_regions.py | 2 +- input_processing/hourly_writetimeseries.py | 4 +- input_processing/writesupplycurves.py | 30 +++++- inputs/plant_characteristics/ramprate.csv | 3 +- .../templates/reeds2/value_factor_report.py | 2 +- postprocessing/compare_cases.py | 2 +- reeds/reedsplots.py | 101 ------------------ runbatch.py | 33 +++++- runfiles.csv | 2 +- sources.csv | 48 ++++----- sources_documentation.md | 48 ++++----- 19 files changed, 135 insertions(+), 198 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6d60f3d50..1d1284648 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -15,10 +15,6 @@ ### Relevant sources or documentation - -## Charge code for review - - ## Validation, testing, and comparison report(s) -- [ ] Charge code provided for review +- [ ] Charge code provided to reviewers - [ ] Included comparison reports for appropriate test cases - [ ] Documentation updated if necessary +- [ ] Code formatting standardized - [ ] Reusable functions used where possible instead of copy/pasted code ### General information to guide review @@ -90,7 +86,7 @@ Include additional illustrative plots describing input data, methods, testing, a - + diff --git a/b_inputs.gms b/b_inputs.gms index 1cbef7ffe..a9ab838c6 100644 --- a/b_inputs.gms +++ b/b_inputs.gms @@ -1151,7 +1151,7 @@ set dispatchtech(i) "technologies that are dispatchable", noret_upgrade_tech(i)$hyd_add_pump(i) = yes ; noret_upgrade_tech(i)$[(coal_ccs(i) or gas_cc_ccs(i))$upgrade(i)$Sw_CCS_NoRetire] = yes ; dispatchtech(i)$[not(vre(i) or hydro_nd(i) or ban(i))] = yes ; -sccapcosttech(i)$[geo(i) or hydro(i) or psh(i) or dr_shed(i) or dr_shape(i) or dr_shift(i) ] = yes ; +sccapcosttech(i)$[hydro(i) or psh(i) or dr_shed(i) or dr_shape(i) or dr_shift(i) ] = yes ; *initialize sets to "no" retiretech(i,v,r,t) = no ; diff --git a/c_supplymodel.gms b/c_supplymodel.gms index dfc4c2e4a..ee17a1e3d 100644 --- a/c_supplymodel.gms +++ b/c_supplymodel.gms @@ -1065,8 +1065,8 @@ eq_rsc_INVlim(r,i,rscbin,t)$[tmodel(t) *capacity indicated by the resource supply curve (scaled by rsc_capacity_scalar) m_rsc_dat(r,i,rscbin,"cap") * ( - 1$(not rsc_capacity_scalar_i(i)) + rsc_capacity_scalar(i,r,t)$rsc_capacity_scalar_i(i) - ) + 1$(not rsc_capacity_scalar_i(i)) + rsc_capacity_scalar(i,r,t)$rsc_capacity_scalar_i(i) ) + * available hydro upgrade capacity + hyd_add_upg_cap(r,i,rscbin,t)$(Sw_HydroCapEnerUpgradeType=1) @@ -1075,7 +1075,7 @@ eq_rsc_INVlim(r,i,rscbin,t)$[tmodel(t) *must exceed the cumulative invested capacity in that region/class/bin... sum{(ii,v,tt)$[valinv(ii,v,r,tt)$(yeart(tt) <= yeart(t))$rsc_agg(i,ii)], INV_RSC(ii,v,r,rscbin,tt) * resourcescaler(ii) } - + *plus exogenous (pre-start-year) capacity, using its level in the first year (tfirst) + sum{(ii,v,tt)$[tfirst(tt)$rsc_agg(i,ii)$exog_rsc(i)], capacity_exog_rsc(ii,v,r,rscbin,tt) } @@ -1260,7 +1260,6 @@ eq_capacity_limit(i,v,r,h,t) + CCSFLEX_POW(i,v,r,h,t) $[ccsflex(i)$(Sw_CCSFLEX_BYP OR Sw_CCSFLEX_STO OR Sw_CCSFLEX_DAC)] ; - * --------------------------------------------------------------------------- * For hybrid resources, the sum of generation from constituent resources is * limited by the available generation at that site, which is defined in @@ -3085,7 +3084,7 @@ eq_storage_capacity(i,v,r,h,t) ; * --------------------------------------------------------------------------- * demand shifting specific storage constraints to handle 0 avaialbility fractions of charge/disharge. -* constain generation from demand shifting storage to be less than or equal +* constrain generation from demand shifting storage to be less than or equal * to capacity adjusted for availability fraction * DR shift resource can only generate when discharge fraction is non-zero diff --git a/cases.csv b/cases.csv index d6f42b542..760ac9eca 100644 --- a/cases.csv +++ b/cases.csv @@ -30,7 +30,7 @@ plantchar_upv,UPV cost and performance inputs (inputs/plant_characteristics/{pla ccsflexscen,"Flexible CCS scenario (inputs\plant_characteristics\{ccsflexscen}_cost/perf.csv).The options for ccsflexscen start with 'ccsflex_' and the switch should be set to the file name, dropping '_cost' or '_perf' (ex: ccsflex_ATB_2020)",ccsflex_ATB_2020,ccsflex_ATB_2020, ccs_upgrade_cost_case,case in upgrade_cost_ccs_coal and upgrade_cost_ccs_gas to use for ccs retrofit costs,atb22_1p2_moderate; atb22_1p2_advanced,atb22_1p2_moderate, coalscen,"Coal price scenario (inputs\fuelprices\{coalscen}.csv). The options for coalscen start with 'coal_' and the switch should be set to the file name, dropping 'coal' (ex: AEO_2025_reference)",AEO_(2023|2025)_reference,AEO_2025_reference, -demandscen,Demand scenario (see inputs\load),N/A,AEO_2023_reference, +demandscen,Demand scenario (see inputs\load),N/A,AEO_2025_reference, dr_shedscen,DR shed scenario,demo_data_January_2025,demo_data_January_2025, dr_shapescen,DR shed scenario,ex_dr1 ,ex_dr1, dr_shiftscen,DR shed scenario,ex_dr1 ,ex_dr1, diff --git a/cases_examples.csv b/cases_examples.csv index 1365912d9..d30998827 100644 --- a/cases_examples.csv +++ b/cases_examples.csv @@ -1,6 +1,6 @@ ,Default Value,ERCOT_rep_days,ERCOT_rep_wek,ERCOT_full_year,ERCOT_cap_credit,USA_20_rep_days,USA_69_regions,USA_54_regions,USA_FasterSolve,NorthDakota_county,NY_VT_mixed,ERCOT_county -ignore,1,,,,0,,,,,,, -endyear,,2032,2032,2032,2050,,,,,2032,2032,2032 +ignore,1,,,,,,,,,,, +endyear,,2032,2032,2032,2032,,,,,2032,2032,2032 GSw_Region,,interconnect/texas,interconnect/texas,interconnect/texas,interconnect/texas,,,,,st/ND,st/NY.VT,interconnect/texas GSw_ZoneSet,,,,,,,z69,z54,z54,z3109,PJMcounty,z3109 GSw_GasCurve,,2,2,2,2,,,,,2,2,2 diff --git a/docs/source/model_documentation.md b/docs/source/model_documentation.md index 210191291..61a04c612 100644 --- a/docs/source/model_documentation.md +++ b/docs/source/model_documentation.md @@ -9,7 +9,7 @@ We are especially grateful to Walter Short who first envisioned and developed th Finally, we are grateful to all those who helped sponsor ReEDS model development and analysis, particularly supporters from the U.S. Department of Energy (DOE) but also others who have funded our work over the years. ```{admonition} Suggested Citation -National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model documentation — ReEDS 2.0*. https://natlabrockies.github.io/ReEDS-2.0/model_documentation.html +National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model documentation — ReEDS 2.0*. https://reeds-model.github.io/ReEDS/model_documentation.html ``` @@ -154,11 +154,11 @@ National Laboratory of the Rockies. ({{ cite_date_last_updated }}). *Model docum ## Introduction -This documentation describes the structure and key data elements of the [Regional Energy Deployment System](https://www.nrel.gov/analysis/reeds/) (ReEDS) model, which is maintained and operated by the National Laboratory of the Rockies (NLR). +This documentation describes the structure and key data elements of the [Regional Energy Deployment System](https://www.nlr.gov/analysis/reeds/) (ReEDS) model, which is maintained and operated by the National Laboratory of the Rockies (NLR). In this introduction, we provide a high-level overview of ReEDS objectives, capabilities, and applications. We also provide a short discussion of important caveats that apply to any ReEDS analysis. -The ReEDS model code and input data can be accessed at . +The ReEDS model code and input data can be accessed at . ### Overview @@ -200,7 +200,7 @@ ReEDS has been the primary analytical tool in numerous studies, including the Re ReEDS has also been used to examine the impacts of a range of existing and proposed energy policies {cite:p}`lantzImplicationsPTCExtension2014, maiImpactFederalTax2015, gagnonImpactRetailElectricity2017, steinbergEvaluatingImpactsInflation2023, denholmExaminingSupplySideOptions2022`. Transmission and grid integration studies often require scenarios of future power systems, and ReEDS has been used in such studies, e.g., the National Transmission Planning Study {cite}`doeNationalTransmissionPlanning2024`, the Atlantic Offshore Wind Transmission Study {cite}`brinkmanAtlanticOffshoreWind2024a`, and the North American Renewable Integration Study {cite}`brinkmanNorthAmericanRenewable2021a`. Many other studies, conducted by NLR and non-NLR researchers, use ReEDS to evaluate diverse topics relevant to the power sector. -The [ReEDS website](https://www.nrel.gov/analysis/reeds/) includes a list of publications with NLR co-authorship that use ReEDS. +The [ReEDS website](https://www.nlr.gov/analysis/reeds/) includes a list of publications with NLR co-authorship that use ReEDS. ### Summary of Caveats @@ -1197,7 +1197,7 @@ As a result, its capital cost is uprated by the ratio of a 15-year evaluation wi Batteries are assumed to have a round-trip efficiency of 85% and a representative size of 60 MW. Existing PSH capacity is represented in the model according to the input plant database. -New PSH potential is derived from a national PSH resource assessment described in {cite}`rosenliebClosedLoopPumpedStorage2022` and at . +New PSH potential is derived from a national PSH resource assessment described in {cite}`rosenliebClosedLoopPumpedStorage2022` and at . Several PSH supply curves are available in ReEDS, including alternative storage durations (8, 10, or 12 hours) and alternative environmental site exclusions specifying whether new PSH reservoir construction can occur where there are ephemeral streams as defined by the National Hydrography Dataset, or whether to include sites that utilize existing reservoirs. The PSH resource assessment includes site-level capital costs calculated from a detailed bottom-up cost model that incorporates dam, reservoir, and other site characteristics {cite}`cohenComponentLevelBottomUpCost2023`. PSH fixed O&M costs and round-trip efficiency are taken from {cite}`mongird2020GridEnergy2020`, and PSH cost and resource assumptions are taken from the ATB {cite}`nrelAnnualTechnologyBaseline2024`. @@ -1342,7 +1342,7 @@ At least 1% of the region's land area must overlap with the storage availability ReEDS requires any hydrogen storage be sized to hold at least 24 hours' worth of hydrogen to run the H2-CTs in a given region. ReEDS also allows the modeling of interzonal hydrogen transport. -Transport requires the construction of hydrogen pipelines, and the model assumes cost estimates based on the H2 [SERA model](https://www.nrel.gov/hydrogen/sera-model.html). +Transport requires the construction of hydrogen pipelines, and the model assumes cost estimates based on the H2 [SERA model](https://www.nlr.gov/hydrogen/sera-model.html). Modeling hydrogen transport in ReEDS is an experimental feature and, because this feature adds significant runtime, the model includes the option to model zonal balancing with transport disabled or a fixed \$/kg hydrogen transport cost. @@ -1520,7 +1520,6 @@ The limits are applied regionally by technology. To avoid infeasibility, the constraint allows for a technology to be built over the capacity limits with a penalty of $10,000/kW. - ### Regional Parameter Variations and Adjustments For most generation technologies, regional cost multipliers are applied to reflect variations in installation costs across the United States (see {numref}`figure-regional-capital-cost-multipliers`). @@ -1767,15 +1766,13 @@ DR is turned off by default in ReEDS, but the user has the option to enable DR v #### Load Shedding -The demonstration data used to characterize the amount of load shedding avaiable were obtained from a workflow which includes ResStock, DR-Path, and dsgrid. -The data reflect the technical potential for residential load shedding in 11 states (AZ, CA, CO, FL, GA, MN, MT, NM, NY, TX, WA) and were developed using the 2018 weather year. +The demonstration data used to characterize the amount of load shedding avaiable were obtained from a workflow which includes ResStock, DR-Path, and dsgrid. The data reflect the technical potential for residential load shedding in 11 states (AZ, CA, CO, FL, GA, MN, MT, NM, NY, TX, WA) and were developed using the 2018 weather year. Through this implementation the demand response is effectively added as a new supply curve-based resource; however, the DR shed potential is only available during stress periods. If ReEDS chooses to dispatch DR shed, the "generation" from the resource is subtracted from the load considered in the resource adeqaucy calculations. The capital costs for the residential resource are derived from the installation cost for the DR-enabling technology (program implementation or procurement costs are not included). In addition to only allowing the shed resource to be dispatched during stress periods, a max daily capacity factor is defined. For the residential heating and cooling resources the max daily capacity factor is set to 4 hours per day. - ## Transmission ReEDS considers two categories of transmission: "local interconnection" of generation capacity within the model zones and "interzonal" or "long-distance" transmission between the model zones. @@ -3420,7 +3417,7 @@ To enable more detailed study of system operations, NLR has developed a translat expansion solution for any solve year in production cost models (PCMs). R2X supports translations to two PCMs: Sienna and PLEXOS. -[Sienna](https://www.nrel.gov/analysis/sienna) is an open-source NLR modeling tool for scientific energy system analysis. +[Sienna](https://www.nlr.gov/analysis/sienna) is an open-source NLR modeling tool for scientific energy system analysis. As part of its core capabilities, `Sienna\Ops` supports the simulation of system scheduling---including unit commitment and economic dispatch, automatic generation control, and nonlinear optimal power flow---along with sequential problem specifications to enable production cost modeling techniques. NLR has used Sienna in several analyses such as Puerto Rico 100 and the National Transmission Planning Study where it was used as the PCM tool for transmission planning and operational analysis for future scenarios {cite:p}`muralibagguPuertoRicoGrid2024, doeNationalTransmissionPlanning2024`. @@ -3458,7 +3455,7 @@ such as a long-run marginal emission rate.[^ref64] [^ref64]: The long-run marginal emission rate is a metric designed to help estimate the emissions induced (or avoided) by a persistent change in electricity consumption. Unlike the short-run marginal emission rate, the long-run marginal emission rate reflects the structural changes to the grid that can be induced by a persistent change in electricity consumption. -Datasets derived through Cambium can be viewed and downloaded at . +Datasets derived through Cambium can be viewed and downloaded at . The documentation for Cambium contains descriptions of the metrics reported in the databases and the methods for calculating those metrics {cite}`gagnonCambium2022Scenario2023`. diff --git a/docs/source/postprocessing_tools.md b/docs/source/postprocessing_tools.md index 29230e804..0c9367b7a 100644 --- a/docs/source/postprocessing_tools.md +++ b/docs/source/postprocessing_tools.md @@ -145,4 +145,3 @@ For more information on this module, see the [retail_rate_module documentation]( The commercial software Tableau can be used for the analysis and publication of ReEDS results. For more information on how to use Tableau with ReEDS, see the [Tableau documentation](tableau.md). - diff --git a/docs/source/user_guide.md b/docs/source/user_guide.md index 2d8ae186e..eaaa872b5 100644 --- a/docs/source/user_guide.md +++ b/docs/source/user_guide.md @@ -112,7 +112,7 @@ The `GSw_LoadProfiles` switch corresponds to a file saved to `inputs/remote/dema | Switch Name | Description of Profile | Origin | Weather year included | | ------------- | ------------- | ------------- | ------------- | -| historic | Detrended historic demand from 2007-2013 and 2016-2023. This is multiplied by annual growth factors from AEO to forecast load growth. | Produced by the ReEDS team from a compilation of data sources. More detail can be found in the [hourlize readme](https://github.com/NatLabRockies/ReEDS-2.0/tree/main/hourlize). | 2007-2013 & 2016-2023 | +| historic | Detrended historic demand from 2007-2013 and 2016-2023. This is multiplied by annual growth factors from AEO to forecast load growth. | Produced by the ReEDS team from a compilation of data sources. More detail can be found in the [hourlize readme](https://github.com/ReEDS-Model/ReEDS/tree/main/hourlize). | 2007-2013 & 2016-2023 | | EFS_Clean2035_LTS | Net-zero emissions, economy wide, by 2050 based on the White House's Long Term Strategy as shown here: | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | | EFS_Clean2035 | Accelerated Demand Electrification (ADE) profile. This profile was custom made for the 100% Clean Electricity by 2035 study. More information about how it was formed can be found in Appendix C. | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | | EFS_Clean2035clip1pct | Same as Clean2035 but clips off the top 1% of load hours. | Developed for the 100% Clean Electricity by 2035 study: | 2007-2013 | @@ -138,7 +138,7 @@ The `GSw_LoadProfiles` switch corresponds to a file saved to `inputs/remote/dema ### Different weather years -For EER’s load profiles, “weather” includes everything considered by NLR's [ResStock](https://resstock.nrel.gov/) and [ComStock](https://comstock.nrel.gov/) building models (i.e., temperature, humidity, insolation, and wind speed). This information gets translated into variations in load through regressions and benchmarking with historical system load data for the weather year in question. +For EER’s load profiles, “weather” includes everything considered by NLR's [ResStock](https://resstock.nlr.gov/) and [ComStock](https://comstock.nlr.gov/) building models (i.e., temperature, humidity, insolation, and wind speed). This information gets translated into variations in load through regressions and benchmarking with historical system load data for the weather year in question. ### Demand Response @@ -146,8 +146,7 @@ Demand response is turned off by default. To enable it the following switches ar - `GSw_DRShed`: turns on/off the demand response resource - `GSw_MaxDailyCF` : turns on/off daily maximum capacity factor constraint -- `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity - +- `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profile ## Hydrogen inputs @@ -163,7 +162,7 @@ The low cost scenario assumes further declines from 2030 to 2050. Fixed O&M values are assumed to be 5% of CAPEX (source: ) -Electrolyzer performance (efficiency) as well as SMR cost and performance assumptions are derived from assumptions [H2A: Hydrogen Analysis Production Models](https://www.nrel.gov/hydrogen/h2a-production-models.html), with guidance from Paige Jadun. +Electrolyzer performance (efficiency) as well as SMR cost and performance assumptions are derived from assumptions [H2A: Hydrogen Analysis Production Models](https://www.nlr.gov/hydrogen/h2a-production-models.html), with guidance from Paige Jadun. See original input assumptions in the [ReEDS_Input_Processing repo](https://github.com/ReEDS-Model/ReEDS_Input_Processing/blob/main/hydrogen/costs/H2ProductionCosts-20210414.xlsx). Note that SMR costs are currently in 2018$ and electrolyzer costs are in 2022$. diff --git a/input_processing/aggregate_regions.py b/input_processing/aggregate_regions.py index b18880eec..48679a777 100644 --- a/input_processing/aggregate_regions.py +++ b/input_processing/aggregate_regions.py @@ -1136,7 +1136,7 @@ def agg_disagg(filepath, r2aggreg_glob, r_ba_glob, runfiles_row): dfmap_r_agg.r = dfmap_r_agg.r.map(r2aggreg) dfmap_r_agg = dfmap_r_agg.dissolve('r').loc[aggreg2anchorreg.index].copy() - ## Map endpoints to anchor regions + ## Map endpoints to anchor regions for j in ['x','y']: dfmap_r_agg[j] = dfmap['r'][j].loc[dfmap_r_agg[j].index.map(aggreg2anchorreg)].values dfmap_r_agg[f'centroid_{j}'] = dfmap_r_agg.centroid.x if j == 'x' else dfmap_r_agg.centroid.y diff --git a/input_processing/hourly_writetimeseries.py b/input_processing/hourly_writetimeseries.py index be5bf2d42..4a7ad7bc6 100644 --- a/input_processing/hourly_writetimeseries.py +++ b/input_processing/hourly_writetimeseries.py @@ -1213,8 +1213,8 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr # identify year t = int(periodtype[6:10]) - # IEF demonstration data only for 1 weather year - if sw.dr_shedscen == 'demo_data_IEF_January_2025': + # Shed demonstration data only for 1 weather year + if sw.dr_shedscen == 'demo_data_January_2025': # each year (2030-2050) has a different dr shed profile # prior years assume 2030 data t_set = max(t, 2030) diff --git a/input_processing/writesupplycurves.py b/input_processing/writesupplycurves.py index da7edb414..d85d49e23 100644 --- a/input_processing/writesupplycurves.py +++ b/input_processing/writesupplycurves.py @@ -840,7 +840,7 @@ def process_dr_sc_data(file_prefix, deflate_key): state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() if int(sw["GSw_DRShed"]) and write: # DR Shed input data at state-level, need to assign to model resolution - # State cost are uniformaly distributed across model regions within the state + # State cost are uniformly distributed across model regions within the state # State capacity is distributed based on load # Calculate state-to-region aggregation/disaggregation factors @@ -876,6 +876,28 @@ def process_dr_sc_data(file_prefix, deflate_key): dr_shed_cap['class'] = dr_shed_cap['tech'] dr_shed_cost = dr_shed_cost_reg.copy() dr_shed_cost['class'] = dr_shed_cost['tech'] + + dr_shed_cap = (pd.melt(dr_shed_cap, id_vars=['tech','class']) + .set_index(['tech','class','variable']) + .sort_index()) + dr_shed_cap = dr_shed_cap.reset_index() + dr_shed_cost = pd.melt(dr_shed_cost, id_vars=['tech','class']) + + # Convert dollar year + dr_shed_cost[dr_shed_cost.select_dtypes(include=['number']).columns] *= deflate['dr_shed'] + + # Assign rsc cat + dr_shed_cap['var'] = 'cap' + dr_shed_cost['var'] = 'cost' + + # Combined cost and capacity + dr_shed_dat = pd.concat([dr_shed_cap, dr_shed_cost]) + dr_shed_dat['bin'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','bin')) + dr_shed_dat['class'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','')) + + dr_shed_dat.rename(columns={'variable':'r','bin':'variable'}, inplace=True) + dr_shed_dat = dr_shed_dat[['tech','r','value','var','variable']].fillna(0) + allout_list.append(dr_shed_dat) if write: # Update supply curve capacity multiplier from state-level to region-level @@ -895,9 +917,9 @@ def process_dr_sc_data(file_prefix, deflate_key): dr_shed_capacity_scalar_reg = pd.concat(dr_shed_capacity_scalar_reg.values(), ignore_index=True) dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case,'dr_shed_capacity_scalar.csv'), index=False) - if int(sw.GSw_DRShed) == 1: - dr_shed_dat = process_dr_sc_data('dr_shed', 'dr_shed') - allout_list.append(dr_shed_dat) + # if int(sw.GSw_DRShed) == 1: + # dr_shed_dat = process_dr_sc_data('dr_shed', 'dr_shed') + # allout_list.append(dr_shed_dat) if int(sw.GSw_DRShape) == 1: dr_shape_dat = process_dr_sc_data('dr_shape', 'dr_shape') diff --git a/inputs/plant_characteristics/ramprate.csv b/inputs/plant_characteristics/ramprate.csv index 36aabcd5e..4cf988c75 100644 --- a/inputs/plant_characteristics/ramprate.csv +++ b/inputs/plant_characteristics/ramprate.csv @@ -46,5 +46,4 @@ pvb2_1*pvb2_10,1 pvb3_1*pvb3_10,1 dr_shed_1*dr_shed_2,1 dr_shape_1*dr_shape_5,1 -dr_shift_1*dr_shift_5,1 - +dr_shift_1*dr_shift_5,1 \ No newline at end of file diff --git a/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py b/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py index cecc1ab62..f6657e7df 100644 --- a/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py +++ b/postprocessing/bokehpivot/reports/templates/reeds2/value_factor_report.py @@ -3,7 +3,7 @@ so that the value factors can be compared to market share. See comments in in reeds2.py for a description of each preset. ''' -storage_techs = ['Pumped-Hydro','Pumped-Hydro-Flex','Battery','CAES'] +storage_techs = ['Pumped-Hydro','Pumped-Hydro-Flex','Battery','CAES','DR_Shift'] static_presets = [ {'name': 'Full Value New Techs', 'sheet_name':'vf_full', 'result': 'Value New Techs', 'download_full_source': True}, diff --git a/postprocessing/compare_cases.py b/postprocessing/compare_cases.py index 64e0af31a..9c5837835 100644 --- a/postprocessing/compare_cases.py +++ b/postprocessing/compare_cases.py @@ -162,7 +162,7 @@ 'Battery/PSH': ['Battery', 'Pumped-Hydro', 'Pumped-Hydro-Flex'], 'Biopower': ['Biopower', 'BECCS'], 'Coal': ['Coal'], - 'Demand Response': ['DR Shed'], + 'Demand Response': ['DR Shed','DR Shape','DR Shift'], 'Fossil+CCS': ['Coal-CCS-Flex', 'Coal-CCS', 'Coal-CCS_Upgrade','Gas-CCS', 'Gas-CC-CCS', 'Gas-CC-CCS-Flex', 'Gas-CC-CCS_Upgrade'], 'Geothermal': ['Geothermal'], diff --git a/reeds/reedsplots.py b/reeds/reedsplots.py index 60893dd7e..273123a70 100644 --- a/reeds/reedsplots.py +++ b/reeds/reedsplots.py @@ -2753,7 +2753,6 @@ def map_capacity_techs( _vmax = dfcap.loc[ dfcap.i.isin(techs) & (dfcap.t.astype(int)==year) ].groupby(['i','r']).MW.sum().max() / 1e3 - _vmax=2 else: _vmax = None ### Arrange the subplots @@ -6737,106 +6736,6 @@ def map_output_byyear( ) return f, ax, dictplot -def evmc_resource_compare(case, year,savepath, region = 'p1'): - - evmc_storage_input_files = {'Charge':'evmc_storage_profile_increase.csv', - 'Discharge':'evmc_storage_profile_decrease.csv', - 'Energy':'evmc_storage_profile_energy.csv',} - - evmc_storage_rep_files = {'Charge':'evmc_storage_charge.csv', - 'Discharge':'evmc_storage_discharge.csv', - 'Energy':'evmc_storage_profile_energy.csv',} - - evmc_storage_displatch_rep_files = {'Charge':'gen_h.csv', - 'Discharge':'gen_h.csv', - 'Energy':'stor_level.csv',} - - output_csv = pd.DataFrame() - - baseline_dfs ={} - for k,v in evmc_storage_input_files.items(): - df = pd.read_csv(fr"{case}\inputs_case\{v}") - df = df.loc[(df.i == 'evmc_storage_ldv') & (df.year == year)] - df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - df.set_index('date', inplace=True) - baseline_dfs[k] = df - temp = df.rename(columns = {region:f'baseline_{k}'}) - output_csv = pd.concat((output_csv,temp[[f'baseline_{k}']]),axis = 1) - - rep_dfs = {} - for k,v in evmc_storage_rep_files.items(): - df = pd.read_csv(os.path.join(case,'inputs_case','rep',v)) - hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) - df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') - df = df.loc[(df.t == year)& (df['**i'] == 'evmc_storage_ldv')] - df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) - df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - df.set_index('date', inplace=True) - df = df[['Values']] - rep_dfs[k] = df - output_csv = pd.concat((output_csv,df.rename(columns = {'Values':f'rep_{k}'})),axis = 1) - - rep_gen = {} - for k,v in evmc_storage_displatch_rep_files.items(): - df = pd.read_csv(os.path.join(case,'outputs',v)).rename(columns = {'Value':'GEN','allh':'h'}) - cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')).rename(columns = {'Value':'CAP','allh':'h'}) - df = pd.merge(left = df, right = cap) - hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) - df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') - df = df.loc[(df.t == year)& (df['i'].str.lower() == 'evmc_storage_ldv')] - df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) - temp = pd.DataFrame({'yearhour':range(1,8761),'date':pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) - df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) - df.set_index('date', inplace=True) - df['Values'] = df.GEN/df.CAP - if k == 'Charge': - df.Values *= -1 - df.Values - df.loc[df.Values <0,'Values'] = 0 - df = df[['Values']] - rep_gen[k] = df - output_csv = pd.concat((output_csv,df.rename(columns = {'Values':f'deploy_{k}'})),axis = 1) - - plots_evmc = {'EVMC Resource': {'Energy':(baseline_dfs['Energy'],'k','line'), - 'Charge':(baseline_dfs['Charge'],'red','fill'), - 'Discharge':(baseline_dfs['Discharge'],'green','fill')}, - 'EVMC Rep-period: Charge': {'Baseline':(baseline_dfs['Charge'],'k','line'), - 'Rep':(rep_dfs['Charge'],'grey','fill'), - 'Deploy':(rep_gen['Charge'],'red','line')}, - 'EVMC Rep-period: Discharge': {'Baseline':(baseline_dfs['Discharge'],'k','line'), - 'Rep':(rep_dfs['Discharge'],'grey','fill'), - 'Deploy':(rep_gen['Discharge'],'red','line')}, - 'EVMC Rep-period: Energy': {'Baseline':(baseline_dfs['Energy'],'k','line'), - 'Rep':(rep_dfs['Energy'],'grey','fill'), - 'Deploy':(rep_gen['Energy'],'red','line')}, - } - - output_csv.to_csv(os.path.join(os.path.split(savepath)[0],f"evmc_storage-{region}-{year}.csv")) - - save_dict = {} - # Plot Charge, Discharge, Energy together through year - for title, plot_dict in plots_evmc.items(): - key = list(plot_dict.keys()) - plot_dict[key[0]][0]['Unit'] = 1 - f,ax = plots.plotyearbymonth( - plot_dict[key[0]][0], - plotcols= ('Unit'), - colors=['grey'], style='line', lwforline=0.5, ls = ':' - ) - for k in key: - plots.plotyearbymonth( - plot_dict[k][0], - plotcols= ([region] if region in plot_dict[k][0].columns else 'Values'), - colors=[plot_dict[k][1]], alpha = 0.5, - style = plot_dict[k][2], - f=f, ax=ax, - ) - ax.flat[0].set_title(f'{title}: {year}, {region}') - - savename = f"evmc_storage-{title.replace(':','').replace(' ','_')}-{region}-{year}.png" - f.savefig(os.path.join(savepath, savename)) - - def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = 'dr_shift_1'): diff --git a/runbatch.py b/runbatch.py index 3968528a0..fc2db11c6 100644 --- a/runbatch.py +++ b/runbatch.py @@ -197,6 +197,26 @@ def get_rev_sc_file_name(caseSwitches, rev_row, use_hpc=False): return revswitches +def check_cases_format(df_cases): + """Check the integrity of the input cases_{}.csv data""" + dfkeep = df_cases.loc[:, ~df_cases.loc['ignore'].astype(int).astype(bool)] + ## Only allow GSw_FakeData to be used all-or-nothing + unique_fakes = dfkeep.loc['GSw_FakeData'].unique() + if len(unique_fakes) > 1: + err = ( + 'GSw_FakeData can only take a single value in a set of cases but values of "' + + ', '.join(unique_fakes) + '" were provided' + ) + raise ValueError(err) + ## Check for spaces in case names + spaces = [i for i in dfkeep if ' ' in i] + if len(spaces): + err = ( + 'Spaces are not allowed in case names; the following names have spaces:\n' + + '\n'.join(f'"{i}"' for i in spaces) + ) + raise ValueError(err) + def check_compatibility(sw): if int(sw['startyear']) < 2010: raise ValueError(f"startyear = {sw['startyear']} but must be ≥ 2010") @@ -472,7 +492,7 @@ def check_compatibility(sw): err = ( "Manifest.toml does not exist. " "Please set up julia by following the instructions at " - "https://natlabrockies.github.io/ReEDS-2.0/setup.html#reeds2pras-julia-and-stress-periods-setup" + "https://reeds-model.github.io/ReEDS/setup.html#reeds2pras-julia-and-stress-periods-setup" ) raise Exception(err) @@ -921,6 +941,7 @@ def setupEnvironment( ) #%% Stop now if any switches are incompatible + check_cases_format(df_cases) for sw in caseSwitches: check_compatibility(sw) if dryrun: @@ -1191,8 +1212,13 @@ def write_batch_script( repo = git.Repo() try: branch = repo.active_branch.name - tag = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)[-1].name - description = repo.git.describe() + tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime) + if len(tags): + tag = tags[-1].name + description = repo.git.describe() + else: + tag = '' + description = '' except TypeError: branch = 'DETACHED_HEAD' tag = '' @@ -1303,6 +1329,7 @@ def write_batch_script( OPATH.writelines("module load anaconda3 \n") OPATH.writelines("module use /nopt/nrel/apps/software/gams/modulefiles \n") OPATH.writelines("module load gams \n") + OPATH.writelines("module load julia/1.12.1 \n") else: OPATH.writelines("module load conda \n") OPATH.writelines("module load gams \n") diff --git a/runfiles.csv b/runfiles.csv index 84f10e837..3a7e6d219 100644 --- a/runfiles.csv +++ b/runfiles.csv @@ -1,4 +1,4 @@ -filename,filepath,required_if,aggfunc,disaggfunc,region_col,fix_cols,i_col,wide,header,key,post_copy,GAMStype,GAMSname,comment,notes, +filename,filepath,required_if,aggfunc,disaggfunc,region_col,fix_cols,i_col,wide,header,key,post_copy,GAMStype,GAMSname,comment,notes #,for input files only,"conditions determinining whether or not the file is required (1 if always required, 0 if always optional)",,,,,,1 if any parameters are in wide format,0 if file has column labels,,files are created after copy_files,for auto-imported files,,, i.csv,inputs/sets/i.csv,1,ignore,ignore,,,,,,,1,set,i,generation technologies, ctt.csv,inputs/sets/ctt.csv,1,ignore,ignore,,,,,,,1,set,ctt,cooling technology type, diff --git a/sources.csv b/sources.csv index ec8de1216..52699d5f3 100644 --- a/sources.csv +++ b/sources.csv @@ -579,53 +579,53 @@ RelativeFilePath,RelativeFolderPath,FileName_new,FileExtension,Description_new,I /inputs/supply_curve/interconnection_land.h5,/inputs/supply_curve,interconnection_land,.h5,,,,,, /inputs/supply_curve/interconnection_offshore.h5,/inputs/supply_curve,interconnection_offshore,.h5,,,,,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_ref_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_ref_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_ref_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wEphemeral_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024,.csv,PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_ref_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_10hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_ref_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_12hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_ref_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wEphemeral_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_apr2025,.csv,,,,,, -/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nrel.gov/gis/psh-supply-curves.html,, +/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv,/inputs/supply_curve,PSH_supply_curves_cost_8hr_wExist_wEph_mar2024,.csv,PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline,,2004,https://www.nlr.gov/gis/psh-supply-curves.html,, /inputs/supply_curve/rev_paths.csv,/inputs/supply_curve,rev_paths,.csv,,,,,, /inputs/supply_curve/sc_point_gid_old2new.csv,/inputs/supply_curve,sc_point_gid_old2new,.csv,,,,,, /inputs/supply_curve/sitemap.h5,/inputs/supply_curve,sitemap,.h5,,,,,, diff --git a/sources_documentation.md b/sources_documentation.md index 7468d44f2..457dc30e5 100644 --- a/sources_documentation.md +++ b/sources_documentation.md @@ -2941,7 +2941,7 @@ - [PSH_supply_curves_capacity_10hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEph_apr2025.csv) @@ -2949,7 +2949,7 @@ - [PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_apr2025.csv) @@ -2957,7 +2957,7 @@ - [PSH_supply_curves_capacity_10hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_apr2025.csv) @@ -2965,7 +2965,7 @@ - [PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_10hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_apr2025.csv) @@ -2973,7 +2973,7 @@ - [PSH_supply_curves_capacity_12hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEph_apr2025.csv) @@ -2981,7 +2981,7 @@ - [PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_apr2025.csv) @@ -2989,7 +2989,7 @@ - [PSH_supply_curves_capacity_12hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_apr2025.csv) @@ -2997,7 +2997,7 @@ - [PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_12hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_apr2025.csv) @@ -3005,7 +3005,7 @@ - [PSH_supply_curves_capacity_8hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_ref_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEph_apr2025.csv) @@ -3013,7 +3013,7 @@ - [PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_apr2025.csv) @@ -3021,7 +3021,7 @@ - [PSH_supply_curves_capacity_8hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_apr2025.csv) @@ -3029,7 +3029,7 @@ - [PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_capacity_8hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve capacity assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_apr2025.csv) @@ -3038,7 +3038,7 @@ - [PSH_supply_curves_cost_10hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEph_apr2025.csv) @@ -3047,7 +3047,7 @@ - [PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_apr2025.csv) @@ -3056,7 +3056,7 @@ - [PSH_supply_curves_cost_10hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_apr2025.csv) @@ -3065,7 +3065,7 @@ - [PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_10hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 10 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_apr2025.csv) @@ -3074,7 +3074,7 @@ - [PSH_supply_curves_cost_12hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEph_apr2025.csv) @@ -3083,7 +3083,7 @@ - [PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_apr2025.csv) @@ -3092,7 +3092,7 @@ - [PSH_supply_curves_cost_12hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_apr2025.csv) @@ -3101,7 +3101,7 @@ - [PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_12hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 12 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_ref_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_apr2025.csv) @@ -3110,7 +3110,7 @@ - [PSH_supply_curves_cost_8hr_ref_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_ref_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and reference exclusions as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEph_apr2025.csv) @@ -3119,7 +3119,7 @@ - [PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wEphemeral_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wExist_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_apr2025.csv) @@ -3128,7 +3128,7 @@ - [PSH_supply_curves_cost_8hr_wExist_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_apr2025.csv) @@ -3137,7 +3137,7 @@ - [PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv](/inputs/supply_curve/PSH_supply_curves_cost_8hr_wExist_wEph_mar2024.csv) - **Description:** PSH supply curve cost assuming 8 hour duration and allowing sites using existing reservoirs and on ephemeral streams as used in 2024 Annual Technology Baseline - **Dollar year:** 2004 - - **Citation:** [https://www.nrel.gov/gis/psh-supply-curves.html](https://www.nrel.gov/gis/psh-supply-curves.html) + - **Citation:** [https://www.nlr.gov/gis/psh-supply-curves.html](https://www.nlr.gov/gis/psh-supply-curves.html) --- - [rev_paths.csv](/inputs/supply_curve/rev_paths.csv) From 5284749439050d0f58a3a39e8347b682310ccea1 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Fri, 22 May 2026 14:11:11 -0600 Subject: [PATCH 03/25] Add state-level shape and shift cost inputs --- .../dr_shape_cost_scalars_ex_dr1.csv | 49 +++++++++++++++++++ .../dr_shape_fom_ex_dr1.csv | 49 +++++++++++++++++++ .../dr_shape_vom_ex_dr1.csv | 49 +++++++++++++++++++ .../dr_shift_cost_scalars_ex_dr1.csv | 49 +++++++++++++++++++ .../dr_shift_fom_ex_dr1.csv | 49 +++++++++++++++++++ .../dr_shift_vom_ex_dr1.csv | 49 +++++++++++++++++++ inputs/supply_curve/dr_shape_cap_ex_dr1.csv | 2 + inputs/supply_curve/dr_shape_cost_ex_dr1.csv | 2 + 8 files changed, 298 insertions(+) create mode 100644 inputs/plant_characteristics/dr_shape_cost_scalars_ex_dr1.csv create mode 100644 inputs/plant_characteristics/dr_shape_fom_ex_dr1.csv create mode 100644 inputs/plant_characteristics/dr_shape_vom_ex_dr1.csv create mode 100644 inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv create mode 100644 inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv create mode 100644 inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shape_cap_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shape_cost_ex_dr1.csv diff --git a/inputs/plant_characteristics/dr_shape_cost_scalars_ex_dr1.csv b/inputs/plant_characteristics/dr_shape_cost_scalars_ex_dr1.csv new file mode 100644 index 000000000..0f7493592 --- /dev/null +++ b/inputs/plant_characteristics/dr_shape_cost_scalars_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,LA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,KS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,KY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NJ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AZ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,FL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,VT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NM,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,SD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OK,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ID,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,DE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,UT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ND,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,GA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,SC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,RI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ME,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,TX,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 diff --git a/inputs/plant_characteristics/dr_shape_fom_ex_dr1.csv b/inputs/plant_characteristics/dr_shape_fom_ex_dr1.csv new file mode 100644 index 000000000..d109ece40 --- /dev/null +++ b/inputs/plant_characteristics/dr_shape_fom_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/plant_characteristics/dr_shape_vom_ex_dr1.csv b/inputs/plant_characteristics/dr_shape_vom_ex_dr1.csv new file mode 100644 index 000000000..d109ece40 --- /dev/null +++ b/inputs/plant_characteristics/dr_shape_vom_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv new file mode 100644 index 000000000..0f7493592 --- /dev/null +++ b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,LA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,KS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,KY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NJ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AZ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,FL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,VT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NM,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,SD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OK,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ID,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,AL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,DE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,UT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ND,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,GA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,SC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,OH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,RI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,ME,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,MI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,TX,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,CT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,IA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shape_1,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 diff --git a/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv new file mode 100644 index 000000000..d109ece40 --- /dev/null +++ b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv new file mode 100644 index 000000000..d109ece40 --- /dev/null +++ b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/supply_curve/dr_shape_cap_ex_dr1.csv b/inputs/supply_curve/dr_shape_cap_ex_dr1.csv new file mode 100644 index 000000000..b181570d7 --- /dev/null +++ b/inputs/supply_curve/dr_shape_cap_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY +dr_shape_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 diff --git a/inputs/supply_curve/dr_shape_cost_ex_dr1.csv b/inputs/supply_curve/dr_shape_cost_ex_dr1.csv new file mode 100644 index 000000000..32d7a0dad --- /dev/null +++ b/inputs/supply_curve/dr_shape_cost_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,WA,CA,VA,FL,MI,IN,KY,OH,PA,WV,NV,MD,DE,NJ,NY,VT,NH,MA,CT,RI,ME,ID,MT,WY,UT,AZ,NM,SD,CO,ND,NE,MN,IA,WI,TX,OK,OR,KS,MO,AR,LA,IL,MS,AL,TN,GA,SC,NC +dr_shape_1,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 From 14f19f1be2374870f9b4b3200553d393cf46864e Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Fri, 29 May 2026 16:50:39 -0600 Subject: [PATCH 04/25] add state-level dr shape cap scalar --- .../dr_shape_cap_scalar_ex_dr1.csv | 49 +++++++++++++++++++ reeds/input_processing/runfiles.csv | 10 ++-- 2 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 inputs/demand_response/dr_shape_cap_scalar_ex_dr1.csv diff --git a/inputs/demand_response/dr_shape_cap_scalar_ex_dr1.csv b/inputs/demand_response/dr_shape_cap_scalar_ex_dr1.csv new file mode 100644 index 000000000..7ee55ba4f --- /dev/null +++ b/inputs/demand_response/dr_shape_cap_scalar_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shape_1,TN,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shape_1,LA,0.965,0.972,0.979,0.986,0.993,1.0,1.006,1.012,1.019,1.025,1.031,1.037,1.043,1.048,1.054,1.06,1.068,1.076,1.083,1.091,1.099,1.107,1.115,1.124,1.132,1.14 +dr_shape_1,NV,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shape_1,KS,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shape_1,MO,0.974,0.979,0.984,0.99,0.995,1.0,1.007,1.014,1.021,1.028,1.034,1.042,1.049,1.057,1.064,1.072,1.08,1.089,1.097,1.106,1.114,1.125,1.136,1.147,1.158,1.169 +dr_shape_1,AR,0.963,0.97,0.978,0.985,0.993,1.0,1.007,1.013,1.02,1.027,1.034,1.04,1.046,1.052,1.058,1.064,1.072,1.079,1.086,1.093,1.101,1.108,1.116,1.124,1.132,1.139 +dr_shape_1,KY,0.956,0.965,0.974,0.982,0.991,1.0,1.006,1.012,1.018,1.025,1.031,1.036,1.041,1.046,1.051,1.056,1.062,1.067,1.073,1.079,1.084,1.094,1.103,1.112,1.122,1.131 +dr_shape_1,MD,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shape_1,NJ,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shape_1,AZ,0.91,0.928,0.946,0.964,0.982,1.0,1.015,1.03,1.045,1.06,1.075,1.088,1.101,1.114,1.126,1.139,1.153,1.166,1.18,1.196,1.213,1.229,1.245,1.261,1.278,1.294 +dr_shape_1,CO,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shape_1,FL,0.735,0.788,0.841,0.894,0.947,1.0,1.034,1.069,1.103,1.138,1.172,1.198,1.223,1.248,1.274,1.299,1.321,1.343,1.364,1.386,1.408,1.427,1.445,1.464,1.483,1.501 +dr_shape_1,IN,0.982,0.985,0.989,0.993,0.996,1.0,1.004,1.009,1.013,1.018,1.022,1.027,1.032,1.036,1.041,1.046,1.051,1.057,1.062,1.068,1.073,1.08,1.086,1.092,1.098,1.105 +dr_shape_1,VT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,NM,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shape_1,SD,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.142,1.158,1.174,1.191,1.209,1.227,1.244,1.262,1.28 +dr_shape_1,MS,0.953,0.962,0.972,0.981,0.991,1.0,1.009,1.017,1.026,1.034,1.043,1.051,1.059,1.067,1.076,1.084,1.094,1.104,1.113,1.123,1.133,1.142,1.151,1.16,1.169,1.178 +dr_shape_1,NH,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,NE,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.137,1.149,1.16,1.171,1.183,1.195,1.208,1.22,1.232 +dr_shape_1,OK,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shape_1,ID,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shape_1,WA,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shape_1,AL,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shape_1,MA,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,DE,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shape_1,CA,0.946,0.957,0.968,0.978,0.989,1.0,1.011,1.023,1.034,1.045,1.057,1.068,1.078,1.089,1.1,1.111,1.123,1.135,1.147,1.159,1.172,1.185,1.199,1.212,1.226,1.239 +dr_shape_1,UT,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shape_1,ND,0.948,0.959,0.969,0.979,0.99,1.0,1.008,1.017,1.025,1.034,1.042,1.05,1.058,1.065,1.073,1.08,1.089,1.098,1.106,1.115,1.123,1.133,1.142,1.152,1.161,1.171 +dr_shape_1,MN,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shape_1,OR,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shape_1,GA,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shape_1,MT,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shape_1,SC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shape_1,OH,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shape_1,RI,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,ME,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,WY,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shape_1,MI,0.948,0.958,0.969,0.979,0.99,1.0,1.008,1.016,1.024,1.032,1.04,1.046,1.052,1.058,1.064,1.07,1.077,1.087,1.099,1.11,1.122,1.134,1.147,1.159,1.172,1.185 +dr_shape_1,WI,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shape_1,NY,0.971,0.976,0.982,0.988,0.994,1.0,1.006,1.013,1.019,1.026,1.032,1.038,1.043,1.049,1.055,1.061,1.068,1.076,1.084,1.091,1.099,1.108,1.117,1.126,1.135,1.145 +dr_shape_1,TX,0.949,0.959,0.969,0.979,0.99,1.0,1.008,1.015,1.023,1.031,1.039,1.044,1.049,1.06,1.073,1.085,1.098,1.112,1.125,1.138,1.152,1.166,1.181,1.196,1.211,1.226 +dr_shape_1,IL,0.961,0.969,0.976,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.04,1.046,1.051,1.057,1.062,1.069,1.075,1.082,1.089,1.095,1.102,1.114,1.126,1.138,1.151 +dr_shape_1,CT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shape_1,IA,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shape_1,WV,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shape_1,NC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shape_1,VA,0.931,0.945,0.959,0.972,0.986,1.0,1.009,1.018,1.027,1.036,1.046,1.052,1.058,1.064,1.07,1.076,1.083,1.091,1.098,1.105,1.112,1.122,1.133,1.143,1.154,1.164 +dr_shape_1,PA,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index b603e75ca..4e2aebca4 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -120,8 +120,8 @@ dollaryear_sc.csv,inputs/supply_curve/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, -dr_shape_profile_decrease.csv,inputs/demand_response/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, -dr_shape_profile_increase.csv,inputs/demand_response/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,,, +dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,,, dr_shed_avail_scalar.csv,inputs/demand_response/dr_shed_avail_scalar.csv,1,ignore,ignore,,,,,0,,,,,, dr_shed_cap.csv,inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_cost.csv,inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done @@ -130,9 +130,9 @@ dr_shed_hourly.h5,inputs/profiles_dr/dr_shed_hourly_{dr_shedscen}.h5,int(sw.GSw_ dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalars_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done, -dr_shift_profile_decrease.csv,inputs/demand_response/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, -dr_shift_profile_increase.csv,inputs/demand_response/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, -dr_shift_profile_energy.csv,inputs/demand_response/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,set,e,emission categories used in model, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,set,eall,emission categories used in reporting, emit_rate.csv,,1,ignore,ignore,,"etype,e,i,v,r",,0,0,,,,,,ReEDS-to-PLEXOS output From 0c794392429fd6ca6f9e86897ed361dc1c36cd4c Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Mon, 1 Jun 2026 15:05:41 -0600 Subject: [PATCH 05/25] Add missing switch from main --- cases.csv | 1 + 1 file changed, 1 insertion(+) diff --git a/cases.csv b/cases.csv index 50a1b48cd..17c8dc5c3 100644 --- a/cases.csv +++ b/cases.csv @@ -136,6 +136,7 @@ GSw_DRShape, switch to turn on/off demand response shape resource,0;1,0, GSw_DRShift, switch to turn on/off demand response shift resource,0;1,0, GSw_EFS_Flex,Switch for turning EFS load flexibility on or off,0,0, GSw_EFS2_FlexCase,"Case used for electrification flex_type - format is {1}_{2}, where 1 in [EFS_REFERENCE, EFS_MEDIUM, EFS_HIGH, EFS_Clean2035] and 2 in [Baseflex, Currentflex, Enhancedflex, Uberflex1, Uberflex2]",N/A,EFS_MEDIUM_EnhancedflexStretch2046, +GSw_FakeData,Use fake capacity factor profiles (for TESTING ONLY when you do not want to download the real CF data),^[0-1]$,0, GSw_ForcePrescription,Turn on/off forced prescriptions - turning off will allow unlimited but not free builds in historical years,0; 1,1, GSw_FuelCell,Turn on/off fuel cells (natural gas / H2) as a technology option,0; 1,0, GSw_FutureHydCF_RepYears,_-delimited years of historical hydro plant data from which to calculate capacity factors representing future hydro,N/A,2007_2008_2009_2010_2011_2012_2013_2016_2017_2018_2019_2020_2021_2022, From 15acb7354eef7932c86be647fd603f31f61fd7d6 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Thu, 18 Jun 2026 13:17:45 -0600 Subject: [PATCH 06/25] remove empty column in runfiles --- reeds/input_processing/runfiles.csv | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index 59200e5ba..a7eef3ca9 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -68,22 +68,22 @@ dollaryear_consume.csv,inputs/consume/dollaryear.csv,int(sw.GSw_DAC) != 0,ignore dollaryear_plant.csv,inputs/plant_characteristics/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,,Do we really need 3 separate instances of dollaryear? dollaryear_fuel.csv,inputs/fuelprices/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, dollaryear_sc.csv,inputs/supply_curve/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, -dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, +dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done -dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, -dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,,, -dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,,, +dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done +dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,, +dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,, dr_shed_avail_scalar.csv,inputs/demand_response/dr_shed_avail_scalar.csv,1,ignore,ignore,,,,,0,,,,,, dr_shed_cap.csv,inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_cost.csv,inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_capacity_scalar.csv,inputs/demand_response/dr_shed_capacity_scalar_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done dr_shed_hourly.h5,inputs/profiles_dr/dr_shed_hourly_{dr_shedscen}.h5,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,"datetime,year",,1,keepindex,,,,,,Agg/Disagg handled in hourly_load -dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done, -dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done, -dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalars_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done, -dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, -dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, -dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,,, +dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done +dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done +dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalars_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done +dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,set,e,emission categories used in model, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,set,eall,emission categories used in reporting, emitrate.csv,inputs/emission_constraints/emitrate.csv,1,ignore,ignore,,,,,0,,,,,, @@ -191,15 +191,15 @@ plantchar_coal_ccs.csv,inputs/plant_characteristics/{plantchar_coal_ccs}.csv,1,i plantchar_coal.csv,inputs/plant_characteristics/{plantchar_coal}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_battery.csv,inputs/plant_characteristics/{plantchar_battery}.csv,int(sw.GSw_Storage) != 0,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_csp.csv,inputs/plant_characteristics/{plantchar_csp}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv -plantchar_dr_shape.csv,inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, -plantchar_dr_shape_vom.csv,inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, -plantchar_dr_shape_fom.csv,inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shape.csv,inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape_vom.csv,inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape_fom.csv,inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed.csv,inputs/plant_characteristics/dr_shed_capcost_scalars_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_vom.csv,inputs/plant_characteristics/dr_shed_vom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_fom.csv,inputs/plant_characteristics/dr_shed_fom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shift.csv,inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, -plantchar_dr_shift_vom.csv,inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, -plantchar_dr_shift_fom.csv,inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv, +plantchar_dr_shift.csv,inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift_vom.csv,inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift_fom.csv,inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_fuelcell.csv,inputs/plant_characteristics/{plantchar_fuelcell}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas_ccs.csv,inputs/plant_characteristics/{plantchar_gas_ccs}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas.csv,inputs/plant_characteristics/{plantchar_gas}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv From 40f0659b08851221194c09df7999e06bb3853cc6 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Tue, 23 Jun 2026 16:19:19 +0000 Subject: [PATCH 07/25] state to region level for supply curve shape data --- cases_dr.csv | 20 +++ ...shed_cap_scalar_demo_data_January_2025.csv | 23 +++ inputs/tech-subset-table.csv | 150 ++++++++-------- reeds/input_processing/h5_to_gdx.py | 4 +- reeds/input_processing/hourly_load.py | 29 +++ reeds/input_processing/runfiles.csv | 24 +-- reeds/input_processing/writesupplycurves.py | 168 +++++++++--------- reeds/io.py | 19 +- 8 files changed, 258 insertions(+), 179 deletions(-) create mode 100644 cases_dr.csv create mode 100644 inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv diff --git a/cases_dr.csv b/cases_dr.csv new file mode 100644 index 000000000..cb8b01584 --- /dev/null +++ b/cases_dr.csv @@ -0,0 +1,20 @@ +,Default Value,Pacific_DRShed,Pacific_DRShape +ignore,1,0,0 +endyear,,2032,2032 +GSw_Region,,cendiv/Pacific,cendiv/Pacific +GSw_ZoneSet,,, +GSw_GasCurve,,2,2 +GSw_HourlyType,,, +GSw_OpRes,,, +GSw_HourlyNumClusters,,, +GSw_PRM_CapCredit,,, +GSw_StartCost,,, +GSw_LfillGas,,, +GSw_Geothermal,,, +GSw_Biopower,,, +GSw_Nuclear,,, +GSw_HourlyChunkLengthRep,,, +GSw_HourlyChunkLengthStress,,, +yearset,,, +GSw_DRShed,,1, +GSw_DRShape,,,1 diff --git a/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv b/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv new file mode 100644 index 000000000..bd6a9f5aa --- /dev/null +++ b/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv @@ -0,0 +1,23 @@ +tech,r,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shed_1,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.089,1.119,1.149,1.179,1.208,1.238,1.268,1.298,1.33,1.362,1.394,1.426,1.458,1.49,1.522,1.554,1.586,1.618 +dr_shed_1,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.027,1.054,1.081,1.109,1.136,1.163,1.19,1.217,1.244,1.271,1.296,1.32,1.344,1.368,1.393,1.417,1.441,1.466,1.49,1.514 +dr_shed_1,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.035,1.071,1.106,1.142,1.177,1.213,1.248,1.284,1.319,1.355,1.386,1.417,1.448,1.479,1.51,1.542,1.573,1.604,1.635,1.666 +dr_shed_1,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.011,1.021,1.032,1.043,1.053,1.064,1.074,1.085,1.096,1.106,1.124,1.142,1.16,1.178,1.196,1.214,1.232,1.25,1.268,1.286 +dr_shed_1,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.013,1.025,1.038,1.05,1.063,1.075,1.088,1.1,1.113,1.125,1.144,1.162,1.181,1.2,1.219,1.237,1.256,1.275,1.293,1.312 +dr_shed_1,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.026,1.052,1.078,1.104,1.13,1.157,1.183,1.209,1.235,1.261,1.282,1.303,1.325,1.346,1.367,1.388,1.41,1.431,1.452,1.473 +dr_shed_1,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.052,1.103,1.155,1.207,1.258,1.31,1.362,1.414,1.465,1.517,1.562,1.607,1.653,1.698,1.743,1.788,1.833,1.878,1.924,1.969 +dr_shed_1,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.028,1.056,1.085,1.113,1.141,1.169,1.197,1.226,1.254,1.282,1.31,1.338,1.366,1.394,1.422,1.45,1.478,1.506,1.534,1.562 +dr_shed_1,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.02,1.039,1.059,1.078,1.098,1.117,1.137,1.156,1.176,1.195,1.217,1.24,1.262,1.284,1.307,1.329,1.351,1.373,1.396,1.418 +dr_shed_1,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.014,1.027,1.041,1.054,1.068,1.082,1.095,1.109,1.122,1.136,1.153,1.169,1.186,1.203,1.219,1.236,1.252,1.269,1.286,1.302 +dr_shed_1,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.08,1.161,1.241,1.321,1.402,1.482,1.562,1.642,1.723,1.803,1.858,1.913,1.969,2.024,2.079,2.134,2.189,2.244,2.299,2.355 +dr_shed_2,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.018,1.035,1.053,1.07,1.088,1.105,1.123,1.141,1.158,1.176,1.173,1.17,1.167,1.164,1.161,1.158,1.155,1.152,1.149,1.146 +dr_shed_2,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.09,1.119,1.149,1.179,1.209,1.239,1.269,1.299,1.289,1.28,1.27,1.261,1.251,1.242,1.232,1.223,1.213,1.204 +dr_shed_2,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.067,1.133,1.2,1.266,1.333,1.399,1.466,1.532,1.599,1.665,1.694,1.722,1.75,1.778,1.806,1.834,1.862,1.89,1.918,1.946 +dr_shed_2,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.982,0.964,0.947,0.929,0.911,0.893,0.875,0.858,0.84,0.822,0.809,0.795,0.781,0.768,0.754,0.74,0.727,0.713,0.7,0.686 +dr_shed_2,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.001,1.002,1.003,1.004,1.005,1.007,1.008,1.009,1.01,1.011,1.0,0.99,0.979,0.969,0.958,0.948,0.937,0.927,0.916,0.905 +dr_shed_2,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.099,1.197,1.296,1.395,1.494,1.592,1.691,1.79,1.888,1.987,2.033,2.078,2.124,2.169,2.215,2.26,2.306,2.351,2.397,2.443 +dr_shed_2,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.029,1.058,1.087,1.116,1.145,1.174,1.203,1.232,1.262,1.291,1.3,1.309,1.319,1.328,1.338,1.347,1.356,1.366,1.375,1.385 +dr_shed_2,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.038,1.076,1.113,1.151,1.189,1.227,1.266,1.305,1.344,1.383,1.394,1.405,1.415,1.426,1.437,1.447,1.458,1.469,1.479,1.49 +dr_shed_2,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.108,1.216,1.323,1.431,1.539,1.647,1.754,1.862,1.97,2.078,2.106,2.135,2.163,2.192,2.221,2.249,2.278,2.306,2.335,2.364 +dr_shed_2,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.996,0.991,0.987,0.983,0.979,0.974,0.97,0.966,0.961,0.957,0.945,0.933,0.921,0.909,0.897,0.885,0.872,0.86,0.848,0.836 +dr_shed_2,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.978,0.955,0.933,0.91,0.888,0.865,0.843,0.82,0.798,0.775,0.757,0.739,0.722,0.704,0.686,0.668,0.65,0.632,0.615,0.597 diff --git a/inputs/tech-subset-table.csv b/inputs/tech-subset-table.csv index 24fa7afb8..724c0e3de 100644 --- a/inputs/tech-subset-table.csv +++ b/inputs/tech-subset-table.csv @@ -1,76 +1,74 @@ -,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,FUEL_CELL,CONV,TEMP_DERATE,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,DR_SHIFT,DR_SHAPE -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,, -dr_shift_1*dr_shift_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,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,,,,,,, -dr_shape_1*dr_shape_10,,,,,,,,,,,,,,,,,,,,,,,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,TEMP_DERATE,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,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,DR_SHIFT,DR_SHAPE +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,, +dr_shift_1*dr_shift_5,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,YES, +dr_shape_1*dr_shape_5,,,,,,,,,,,,,,,,,,,,,,,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/input_processing/h5_to_gdx.py b/reeds/input_processing/h5_to_gdx.py index bed3e258c..cc7acb799 100644 --- a/reeds/input_processing/h5_to_gdx.py +++ b/reeds/input_processing/h5_to_gdx.py @@ -122,7 +122,9 @@ def write_gdxread( with open(fpath, 'w') as f: for line in writelist: key = line.split('(')[0] - f.write(f'$loadDCR {key} = {key}\n') + # Use $load instead of $loadDCR because sets are already declared in the model + # and cannot be cleared if they are used as domains + f.write(f'$load {key} = {key}\n') print(f'Wrote {fpath}') diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index ce4b8e0a7..e9ad236db 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -731,6 +731,30 @@ def main(reeds_path, inputs_case): regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) + #%%%######################################### + # -- DR Shape Load Modifications -- # + ############################################# + # + if int(sw.GSw_DRShape): + state_dr_shape_profile_inc = pd.read_csv(os.path.join(inputs_case, 'dr_shape_profile_increase.csv')) + state_dr_shape_profile_dec = pd.read_csv(os.path.join(inputs_case, 'dr_shape_profile_decrease.csv')) + + reg_cols = [col for col in state_dr_shape_profile_inc.columns if col not in ['i','year','hour']] + disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) + state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() + + # Assign shape increase and decrease fractions uniformly + for state_col in reg_cols: + if state_col in state2r: + for r in state2r[state_col]: + state_dr_shape_profile_inc[r] = state_dr_shape_profile_inc[state_col] + state_dr_shape_profile_dec[r] = state_dr_shape_profile_dec[state_col] + # Drop state columns + state_dr_shape_profile_inc = state_dr_shape_profile_inc.drop(columns=reg_cols) + state_dr_shape_profile_dec = state_dr_shape_profile_dec.drop(columns=reg_cols) + + + #%%########################### # -- Data Write-Out -- # ############################## @@ -748,6 +772,11 @@ def main(reeds_path, inputs_case): if int(sw.GSw_DRShed): reeds.io.write_profile_to_h5(regional_dr_shed_hourly, 'dr_shed_hourly.h5', inputs_case) + if int(sw.GSw_DRShape): + state_dr_shape_profile_inc.to_csv(os.path.join(inputs_case, 'dr_shape_profile_increase.csv')) + state_dr_shape_profile_dec.to_csv(os.path.join(inputs_case, 'dr_shape_profile_decrease.csv')) + + #%% =========================================================================== ### --- PROCEDURE --- ### =========================================================================== diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index a7eef3ca9..c2d8d6b65 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -68,22 +68,22 @@ dollaryear_consume.csv,inputs/consume/dollaryear.csv,int(sw.GSw_DAC) != 0,ignore dollaryear_plant.csv,inputs/plant_characteristics/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,,Do we really need 3 separate instances of dollaryear? dollaryear_fuel.csv,inputs/fuelprices/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, dollaryear_sc.csv,inputs/supply_curve/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, -dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done -dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done -dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done -dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,, -dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,uniform,uniform,wide,"i,hour,year",,1,0,,,,,, +dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done +dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalar_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done +dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done +dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, dr_shed_avail_scalar.csv,inputs/demand_response/dr_shed_avail_scalar.csv,1,ignore,ignore,,,,,0,,,,,, dr_shed_cap.csv,inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_cost.csv,inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done -dr_shed_capacity_scalar.csv,inputs/demand_response/dr_shed_capacity_scalar_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done +dr_shed_capacity_scalar.csv,inputs/demand_response/dr_shed_cap_scalar_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done dr_shed_hourly.h5,inputs/profiles_dr/dr_shed_hourly_{dr_shedscen}.h5,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,"datetime,year",,1,keepindex,,,,,,Agg/Disagg handled in hourly_load -dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,sum,population,wide,"tech,rscbin",,1,0,,,,,,done -dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,wide,"tech,rscbin",,1,0,,,,,,done -dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalars_{dr_shiftscen}.csv,int(GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,done -dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, -dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, -dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(GSw_DRShift) !=0,mean,population,wide,"i,hour,year",,1,0,,,,,, +dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done +dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done +dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalar_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done +dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,set,e,emission categories used in model, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,set,eall,emission categories used in reporting, emitrate.csv,inputs/emission_constraints/emitrate.csv,1,ignore,ignore,,,,,0,,,,,, diff --git a/reeds/input_processing/writesupplycurves.py b/reeds/input_processing/writesupplycurves.py index 6b38dd177..97b46942b 100644 --- a/reeds/input_processing/writesupplycurves.py +++ b/reeds/input_processing/writesupplycurves.py @@ -803,36 +803,22 @@ def main( ####################################################### ##### DR Shed, Shape, and Shift ##### + # Write region-level supply curve capacity and cost data for DR Shed, Shape, and Shift + # Write region-level supply curve capacity scalars - def process_dr_sc_data(file_prefix, deflate_key): - cap = pd.read_csv(os.path.join(inputs_case, f'{file_prefix}_cap.csv')) - cost = pd.read_csv(os.path.join(inputs_case, f'{file_prefix}_cost.csv')) - # DR Shape supply curve data have a column for tech bin included - if file_prefix == 'dr_shape' or file_prefix == 'dr_shift': - cap = cap.rename(columns = {'rscbin':'class'}) - cost = cost.rename(columns = {'rscbin':'class'}) - # DR Shed supply curve data do not have a column for tech bin included - # Duplicate the tech column to class column to retain correct file format - else: - cap['class'], cost['class'] = cap['tech'], cost['tech'] - cap = pd.melt(cap, id_vars=['tech', 'class']).reset_index() - cost = pd.melt(cost, id_vars=['tech', 'class']) - cost[cost.select_dtypes(include=['number']).columns] *= deflate[deflate_key] - cap['var'], cost['var'] = 'cap', 'cost' - data = pd.concat([cap, cost]) - data['bin'] = data['class'].str.replace(f'{file_prefix}_', 'bin') - data['class'] = data['class'].str.replace(f'{file_prefix}_', '') - data.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) - return data[['tech', 'r', 'value', 'var', 'variable']].fillna(0) - # State-level DR shed data - need to modify this section of code to allow for state-level shape and shift data - # Use capacity and cost to add DR Shed to rsc_combined - disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) - state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() - if int(sw["GSw_DRShed"]) and write: - # DR Shed input data at state-level, need to assign to model resolution - # State cost are uniformly distributed across model regions within the state - # State capacity is distributed based on load - + # State-level DR data processing function + def process_dr_state_level(dr_type, disagg_data, state2r): + """ + Process state-level DR data and disaggregate to region-level. + + Parameters: + - dr_type: 'dr_shed', 'dr_shape', or 'dr_shift' + - disagg_data: disaggregation data with state-to-region mapping + - state2r: dictionary mapping states to regions + + Returns: + - dr_dat: processed dataframe with regional DR data + """ # Calculate state-to-region aggregation/disaggregation factors state_region_factors = ( disagg_data.groupby(['state', 'r'], as_index=False) @@ -842,82 +828,100 @@ def process_dr_sc_data(file_prefix, deflate_key): .rename_axis(None, axis=1) .fillna(0) ) - dr_shed_cap_state = pd.read_csv(os.path.join(inputs_case,'dr_shed_cap.csv')) - dr_shed_cap_reg = dr_shed_cap_state.copy() - state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(dr_shed_cap_reg.columns), :] - - # Multiply the hourly state load profiles by the state-to-region factors - dr_shed_cap_reg = ( - dr_shed_cap_reg[state_region_factors.index] - .dot(state_region_factors) - ) - dr_shed_cap_reg.insert(0, 'tech', dr_shed_cap_state['tech']) - - dr_shed_cost_state = pd.read_csv(os.path.join(inputs_case,'dr_shed_cost.csv')) - dr_shed_cost_reg = dr_shed_cost_state.copy() - for col in dr_shed_cost_state.columns[1:]: - # Copy state columns to each model region + + # Read state-level capacity and cost data + cap_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cap.csv')) + cost_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cost.csv')) + + # Disaggregate capacity from state to region level + cap_reg = cap_state.copy() + state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(cap_reg.columns), :] + cap_reg = cap_reg[state_region_factors.index].dot(state_region_factors) + cap_reg.insert(0, 'tech', cap_state['tech']) + + # Disaggregate cost from state to region level + cost_reg = cost_state.copy() + # for col in cost_state.columns[1:]: + for col in state_region_factors.index: for r in state2r[col]: - dr_shed_cost_reg[r] = dr_shed_cost_state[col] - dr_shed_cost_reg.drop(columns=col, inplace=True) + cost_reg[r] = cost_state[col] + cost_reg.drop(columns=col, inplace=True) # Define rsc class using tech - dr_shed_cap = dr_shed_cap_reg.copy() - dr_shed_cap['class'] = dr_shed_cap['tech'] - dr_shed_cost = dr_shed_cost_reg.copy() - dr_shed_cost['class'] = dr_shed_cost['tech'] - - dr_shed_cap = (pd.melt(dr_shed_cap, id_vars=['tech','class']) - .set_index(['tech','class','variable']) - .sort_index()) - dr_shed_cap = dr_shed_cap.reset_index() - dr_shed_cost = pd.melt(dr_shed_cost, id_vars=['tech','class']) + cap = cap_reg.copy() + cap['class'] = cap['tech'] + cost = cost_reg.copy() + cost['class'] = cost['tech'] + + cap = (pd.melt(cap, id_vars=['tech', 'class']) + .set_index(['tech', 'class', 'variable']) + .sort_index()) + cap = cap.reset_index() + cost = pd.melt(cost, id_vars=['tech', 'class']) # Convert dollar year - dr_shed_cost[dr_shed_cost.select_dtypes(include=['number']).columns] *= deflate['dr_shed'] + cost[cost.select_dtypes(include=['number']).columns] *= deflate[dr_type] # Assign rsc cat - dr_shed_cap['var'] = 'cap' - dr_shed_cost['var'] = 'cost' + cap['var'] = 'cap' + cost['var'] = 'cost' # Combined cost and capacity - dr_shed_dat = pd.concat([dr_shed_cap, dr_shed_cost]) - dr_shed_dat['bin'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','bin')) - dr_shed_dat['class'] = dr_shed_dat['class'].map(lambda x: x.replace('dr_shed_','')) + dr_dat = pd.concat([cap, cost]) + dr_dat['bin'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', 'bin')) + dr_dat['class'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', '')) + + dr_dat.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) + dr_dat = dr_dat[['tech', 'r', 'value', 'var', 'variable']].fillna(0) - dr_shed_dat.rename(columns={'variable':'r','bin':'variable'}, inplace=True) - dr_shed_dat = dr_shed_dat[['tech','r','value','var','variable']].fillna(0) - allout_list.append(dr_shed_dat) - - if write: # Update supply curve capacity multiplier from state-level to region-level - dr_shed_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case,'dr_shed_capacity_scalar.csv')) + dr_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv')) # Could be empty if regions included in run do not have DR data - if dr_shed_capacity_scalar_state.empty: - pass - else: - dr_shed_capacity_scalar_reg ={} - for st in dr_shed_capacity_scalar_state['r'].unique(): + if not dr_capacity_scalar_state.empty: + dr_capacity_scalar_reg = {} + for st in dr_capacity_scalar_state['r'].unique(): scalar_df = {} for r in state2r[st]: - scalar_ba= dr_shed_capacity_scalar_state[dr_shed_capacity_scalar_state['r'] == st].copy() + scalar_ba = dr_capacity_scalar_state[dr_capacity_scalar_state['r'] == st].copy() scalar_ba['r'] = r scalar_df[r] = scalar_ba - dr_shed_capacity_scalar_reg[st] = pd.concat(scalar_df) - dr_shed_capacity_scalar_reg = pd.concat(dr_shed_capacity_scalar_reg.values(), ignore_index=True) - dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case,'dr_shed_capacity_scalar.csv'), index=False) + dr_capacity_scalar_reg[st] = pd.concat(scalar_df) + dr_capacity_scalar_reg = pd.concat(dr_capacity_scalar_reg.values(), ignore_index=True) + + return dr_dat,dr_capacity_scalar_reg - # if int(sw.GSw_DRShed) == 1: - # dr_shed_dat = process_dr_sc_data('dr_shed', 'dr_shed') - # allout_list.append(dr_shed_dat) + # State-level DR data - process state-level shape and shift data + # Use capacity and cost to add DR to rsc_combined + disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) + state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() + + + if int(sw.GSw_DRShed) == 1: + dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) + allout_list.append(dr_shed_dat) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) + + else: + dr_shed_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) if int(sw.GSw_DRShape) == 1: - dr_shape_dat = process_dr_sc_data('dr_shape', 'dr_shape') + dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) allout_list.append(dr_shape_dat) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + + else: + dr_shape_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) if int(sw.GSw_DRShift) == 1: - dr_shift_dat = process_dr_sc_data('dr_shift', 'dr_shift') + dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) allout_list.append(dr_shift_dat) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) + + else: + dr_shift_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) # %%---------------------------------------------------------------------------------- ################################## diff --git a/reeds/io.py b/reeds/io.py index 4c13b5212..34d9095df 100644 --- a/reeds/io.py +++ b/reeds/io.py @@ -675,22 +675,25 @@ def get_switches(case=None, **kwargs): 'reeds', 'resource_adequacy', 'ra_switches.csv', ) asw = pd.read_csv(fpath_asw, index_col='key') - for i, row in asw.iterrows(): + parsed_asw = {} + for key, row in asw.iterrows(): + value = row['value'] if row['dtype'] == 'list': - row.value = row.value.split(',') + value = value.split(',') try: - row.value = [int(i) for i in row.value] + value = [int(item) for item in value] except ValueError: pass elif row['dtype'] == 'boolean': - row.value = False if row.value.lower() == 'false' else True + value = False if value.lower() == 'false' else True elif row['dtype'] == 'str': - row.value = str(row.value) + value = str(value) elif row['dtype'] == 'int': - row.value = int(row.value) + value = int(value) elif row['dtype'] == 'float': - row.value = float(row.value) - sw = pd.concat([sw, asw.value]) + value = float(value) + parsed_asw[key] = value + sw = pd.concat([sw, pd.Series(parsed_asw, name='value')]) except FileNotFoundError: print(f"{fpath_asw} not found so leaving out resource adequacy switches") ### Add derivative switches From 0a61cef650ec8b0dc3dc27fa96e397b40cff7ea8 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Tue, 23 Jun 2026 23:28:41 +0000 Subject: [PATCH 08/25] use h5 files for increase/decrease shape fractions in inputs_case folder --- cases_dr.csv | 2 +- reeds/input_processing/copy_files.py | 7 +++++- reeds/input_processing/hourly_load.py | 8 +++---- .../hourly_writetimeseries.py | 5 ++-- reeds/input_processing/runfiles.csv | 10 ++++---- reeds/input_processing/writesupplycurves.py | 23 ++++++++++--------- 6 files changed, 30 insertions(+), 25 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index cb8b01584..4526d87b3 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape -ignore,1,0,0 +ignore,1,1,0 endyear,,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,, diff --git a/reeds/input_processing/copy_files.py b/reeds/input_processing/copy_files.py index 5a74bdfaf..d2611b6c8 100644 --- a/reeds/input_processing/copy_files.py +++ b/reeds/input_processing/copy_files.py @@ -1103,7 +1103,12 @@ def write_region_indexed_file( #---- Write data to dir_dst (inputs_case) folder ---- if filetype_out == 'h5': - reeds.io.write_profile_to_h5(df, filename, dir_dst) + if filename in ['dr_shape_profile_decrease.h5', 'dr_shape_profile_increase.h5', + 'dr_shift_profile_decrease.h5', 'dr_shift_profile_increase.h5', + 'dr_shift_profile_energy.h5']: + df.to_hdf(os.path.join(dir_dst, filename), key = 'data', complevel=4) + else: + reeds.io.write_profile_to_h5(df, filename, dir_dst) else: # Special cases: These files' values need to be adjusted to copy filepath = region_file_entry['filepath'] diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index e9ad236db..0403e37db 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -736,8 +736,8 @@ def main(reeds_path, inputs_case): ############################################# # if int(sw.GSw_DRShape): - state_dr_shape_profile_inc = pd.read_csv(os.path.join(inputs_case, 'dr_shape_profile_increase.csv')) - state_dr_shape_profile_dec = pd.read_csv(os.path.join(inputs_case, 'dr_shape_profile_decrease.csv')) + state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) + state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) reg_cols = [col for col in state_dr_shape_profile_inc.columns if col not in ['i','year','hour']] disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) @@ -773,8 +773,8 @@ def main(reeds_path, inputs_case): reeds.io.write_profile_to_h5(regional_dr_shed_hourly, 'dr_shed_hourly.h5', inputs_case) if int(sw.GSw_DRShape): - state_dr_shape_profile_inc.to_csv(os.path.join(inputs_case, 'dr_shape_profile_increase.csv')) - state_dr_shape_profile_dec.to_csv(os.path.join(inputs_case, 'dr_shape_profile_decrease.csv')) + state_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) + state_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) #%% =========================================================================== diff --git a/reeds/input_processing/hourly_writetimeseries.py b/reeds/input_processing/hourly_writetimeseries.py index 710646d1c..16d1a2f47 100644 --- a/reeds/input_processing/hourly_writetimeseries.py +++ b/reeds/input_processing/hourly_writetimeseries.py @@ -285,9 +285,8 @@ def get_yearly_flexibility( continue elif drcat.lower() == "dr_shape": - shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"dr_shape_profile_{stype}.csv") - ) + shape[stype] = reeds.io.read_file(os.path.join(inputs_case, f"dr_shape_profile_{stype}.h5")) + elif drcat.lower() == "dr_shift": shape[stype] = pd.read_csv( os.path.join(inputs_case, f"dr_shift_profile_{stype}.csv") diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index c2d8d6b65..07a0e6803 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -71,8 +71,8 @@ dollaryear_sc.csv,inputs/supply_curve/dollaryear.csv,1,ignore,ignore,,,,,0,,,,,, dr_shape_cap.csv,inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done dr_shape_capacity_scalar.csv,inputs/demand_response/dr_shape_cap_scalar_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done dr_shape_cost.csv,inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done -dr_shape_profile_decrease.csv,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, -dr_shape_profile_increase.csv,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shape_profile_decrease.h5,inputs/profiles_dr/dr_shape_decrease_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shape_profile_increase.h5,inputs/profiles_dr/dr_shape_increase_profile_{dr_shapescen}.h5,int(sw.GSw_DRShape) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, dr_shed_avail_scalar.csv,inputs/demand_response/dr_shed_avail_scalar.csv,1,ignore,ignore,,,,,0,,,,,, dr_shed_cap.csv,inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done dr_shed_cost.csv,inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,wide,tech,,1,0,,,,,,done @@ -81,9 +81,9 @@ dr_shed_hourly.h5,inputs/profiles_dr/dr_shed_hourly_{dr_shedscen}.h5,int(sw.GSw_ dr_shift_cap.csv,inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"tech,rscbin",,1,0,,,,,,done dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalar_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done -dr_shift_profile_decrease.csv,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, -dr_shift_profile_increase.csv,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, -dr_shift_profile_energy.csv,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_decrease.h5,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_increase.h5,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_energy.h5,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,set,e,emission categories used in model, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,set,eall,emission categories used in reporting, emitrate.csv,inputs/emission_constraints/emitrate.csv,1,ignore,ignore,,,,,0,,,,,, diff --git a/reeds/input_processing/writesupplycurves.py b/reeds/input_processing/writesupplycurves.py index 97b46942b..460a444a3 100644 --- a/reeds/input_processing/writesupplycurves.py +++ b/reeds/input_processing/writesupplycurves.py @@ -895,33 +895,34 @@ def process_dr_state_level(dr_type, disagg_data, state2r): disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() + dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) + dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) + # dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) + # Add DR data to rsc_combined if turned on, otherwise populate empty files if int(sw.GSw_DRShed) == 1: - dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) allout_list.append(dr_shed_dat) dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) else: - dr_shed_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) + dr_shed_capacity_scalar_reg = pd.DataFrame(columns=dr_shed_capacity_scalar_reg.columns) dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) if int(sw.GSw_DRShape) == 1: - dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) allout_list.append(dr_shape_dat) dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) else: - dr_shape_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) + dr_shape_capacity_scalar_reg = pd.DataFrame(columns=dr_shape_capacity_scalar_reg.columns) dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) - if int(sw.GSw_DRShift) == 1: - dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) - allout_list.append(dr_shift_dat) - dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) + # if int(sw.GSw_DRShift) == 1: + # allout_list.append(dr_shift_dat) + # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - else: - dr_shift_capacity_scalar_reg = pd.DataFrame(columns=['tech', 'r']) - dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) + # else: + # dr_shift_capacity_scalar_reg = pd.DataFrame(columns=dr_shift_capacity_scalar_reg.columns) + # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) # %%---------------------------------------------------------------------------------- ################################## From 6f84536babbdede0c9b32542a81f0fa889a0f3ab Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Thu, 25 Jun 2026 22:29:24 +0000 Subject: [PATCH 09/25] updates for state to region level dr costs --- cases_dr.csv | 2 +- reeds/input_processing/plantcostprep.py | 104 ++++++++++++++++-------- reeds/input_processing/runfiles.csv | 12 +-- 3 files changed, 77 insertions(+), 41 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index 4526d87b3..cb8b01584 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape -ignore,1,1,0 +ignore,1,0,0 endyear,,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,, diff --git a/reeds/input_processing/plantcostprep.py b/reeds/input_processing/plantcostprep.py index 5e879d8c0..a3bc790c7 100644 --- a/reeds/input_processing/plantcostprep.py +++ b/reeds/input_processing/plantcostprep.py @@ -290,35 +290,70 @@ def deflate_func(data,case): # Capital cost multipliers for DR Shed vary by state and year # Input cost data are state-level and are assigned to model region resolution here # We assume all regions within the same state have uniform costs -dr_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed.csv'), index_col=0).round(6) + +def disaggregate_to_regions(data, state2r): + regional_data = {} + for st in data['r'].unique(): + bas_in_st = state2r[st] + data2r = {} + for r in bas_in_st: + copy_state = data.loc[data['r'] == st].copy() + copy_state['r'] = r + data2r[r] = copy_state + regional_data[st] = pd.concat(data2r.values()) + return pd.concat(regional_data.values()).set_index('tech') + +state2r = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv'),usecols=['state','r']) +# Map each unique state to all r values within that state +state2r = state2r.groupby('state')['r'].unique().apply(list).to_dict() + +# Shed DR +dr_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed.csv')) # FOM & VOM inputs are also state-level and need to be disaggregated -fom = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed_fom.csv'), index_col=0).round(6) -vom = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed_vom.csv'), index_col=0).round(6) -# If there are no DR shed data for regions being run, write dr_shed_capcostmult.csv -if dr_shed.empty: - dr_shed_capcost_mult = dr_shed.copy() - dr_shed_fom_regional = fom.copy() - dr_shed_vom_regional = vom.copy() +fom_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed_fom.csv')) +vom_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed_vom.csv')) +if int(sw.GSw_DRShed): + # Write from state-level to region-level + dr_shed_capcost_mult = disaggregate_to_regions(dr_shed, state2r) + dr_shed_fom_regional = disaggregate_to_regions(fom_shed, state2r) + dr_shed_vom_regional = disaggregate_to_regions(vom_shed, state2r) +# Write empty files if DR Shed is OFF else: - state2r = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv'),usecols=['state','r']) - # Map each unique state to all r values within that state - state2r = state2r.groupby('state')['r'].unique().apply(list).to_dict() - - def disaggregate_to_regions(data, state2r): - regional_data = {} - for st in data['r'].unique(): - bas_in_st = state2r[st] - data2r = {} - for r in bas_in_st: - copy_state = data.loc[data['r'] == st].copy() - copy_state['r'] = r - data2r[r] = copy_state - regional_data[st] = pd.concat(data2r.values()) - return pd.concat(regional_data.values()) + dr_shed_capcost_mult = pd.DataFrame(columns=dr_shed.columns).set_index('tech') + dr_shed_fom_regional = pd.DataFrame(columns=fom_shed.columns).set_index('tech') + dr_shed_vom_regional = pd.DataFrame(columns=vom_shed.columns).set_index('tech') + +# Shape DR +dr_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shape.csv')) +# FOM & VOM inputs are also state-level and need to be disaggregated +fom_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shape_fom.csv')) +vom_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shape_vom.csv')) +if int(sw.GSw_DRShape): + dr_shape_capcost_mult = disaggregate_to_regions(dr_shape, state2r) + dr_shape_fom_regional = disaggregate_to_regions(fom_shape, state2r) + dr_shape_vom_regional = disaggregate_to_regions(vom_shape, state2r) +# Write empty files if DR Shape is OFF +else: + dr_shape_capcost_mult = pd.DataFrame(columns=dr_shape.columns).set_index('tech') + dr_shape_fom_regional = pd.DataFrame(columns=fom_shape.columns).set_index('tech') + dr_shape_vom_regional = pd.DataFrame(columns=vom_shape.columns).set_index('tech') + +# Shift DR +dr_shift = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shift.csv')) +# FOM & VOM inputs are also state-level and need to be disaggregated +fom_shift = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shift_fom.csv')) +vom_shift = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shift_vom.csv')) +if int(sw.GSw_DRShift): + dr_shift_capcost_mult = disaggregate_to_regions(dr_shift, state2r) + dr_shift_fom_regional = disaggregate_to_regions(fom_shift, state2r) + dr_shift_vom_regional = disaggregate_to_regions(vom_shift, state2r) +# Write empty files if DR Shift is OFF +else: + dr_shift_capcost_mult = pd.DataFrame(columns=dr_shift.columns).set_index('tech') + dr_shift_fom_regional = pd.DataFrame(columns=fom_shift.columns).set_index('tech') + dr_shift_vom_regional = pd.DataFrame(columns=vom_shift.columns).set_index('tech') + - dr_shed_capcost_mult = disaggregate_to_regions(dr_shed, state2r) - dr_shed_fom_regional = disaggregate_to_regions(fom, state2r) - dr_shed_vom_regional = disaggregate_to_regions(vom, state2r) #%%############################### # -- Other Technologies -- # @@ -326,9 +361,6 @@ def disaggregate_to_regions(data, state2r): ccsflex_perf = pd.read_csv(os.path.join(inputs_case,'plantchar_ccsflex_perf.csv'),index_col=0).round(6) hydro = pd.read_csv(os.path.join(inputs_case,'plantchar_hydro.csv'), index_col=0).round(6) -dr_shed = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shed.csv'), index_col=0).round(6) -dr_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shape.csv'), index_col=0).round(6) -dr_shift = pd.read_csv(os.path.join(inputs_case,'plantchar_dr_shift.csv'), index_col=0).round(6) degrade = pd.read_csv( os.path.join(inputs_case,'degradation_annual.csv'), header=None) @@ -487,11 +519,15 @@ def get_pvb_cost( ccsflex_perf.to_csv(os.path.join(inputs_case,'ccsflex_perf.csv')) consume_char.to_csv(os.path.join(inputs_case,'consume_char.csv'),index=False) hydro.to_csv(os.path.join(inputs_case,'hydrocapcostmult.csv')) -dr_shape.to_csv(os.path.join(inputs_case,'dr_shape_capcostmult.csv')) -dr_shift.to_csv(os.path.join(inputs_case,'dr_shift_capcostmult.csv')) -dr_shed_capcost_mult.to_csv(os.path.join(inputs_case,'dr_shed_capcostmult.csv')) -dr_shed_fom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_fom.csv')) -dr_shed_vom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_vom.csv')) +dr_shape_capcost_mult.to_csv(os.path.join(inputs_case,'dr_shape_capcostmult.csv'), index=True) +dr_shape_fom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shape_fom.csv'), index=True) +dr_shape_vom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shape_vom.csv'), index=True) +dr_shift_capcost_mult.to_csv(os.path.join(inputs_case,'dr_shift_capcostmult.csv'), index=True) +dr_shift_fom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shift_fom.csv'), index=True) +dr_shift_vom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shift_vom.csv'), index=True) +dr_shed_capcost_mult.to_csv(os.path.join(inputs_case,'dr_shed_capcostmult.csv'), index=True) +dr_shed_fom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_fom.csv'), index=True) +dr_shed_vom_regional.to_csv(os.path.join(inputs_case,'plantchar_dr_shed_vom.csv'), index=True) ofswind_rsc_mult.to_csv(os.path.join(inputs_case,'ofswind_rsc_mult.csv')) degrade.to_csv(os.path.join(inputs_case,'degradation_annual.csv'),header=False) pvb.to_csv(os.path.join(inputs_case,'pvbcapcostmult.csv')) diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index 07a0e6803..a9547360b 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -191,15 +191,15 @@ plantchar_coal_ccs.csv,inputs/plant_characteristics/{plantchar_coal_ccs}.csv,1,i plantchar_coal.csv,inputs/plant_characteristics/{plantchar_coal}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_battery.csv,inputs/plant_characteristics/{plantchar_battery}.csv,int(sw.GSw_Storage) != 0,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_csp.csv,inputs/plant_characteristics/{plantchar_csp}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv -plantchar_dr_shape.csv,inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shape_vom.csv,inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shape_fom.csv,inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape.csv,inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape_vom.csv,inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shape_fom.csv,inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv,int(sw.GSw_DRShape) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed.csv,inputs/plant_characteristics/dr_shed_capcost_scalars_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_vom.csv,inputs/plant_characteristics/dr_shed_vom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_dr_shed_fom.csv,inputs/plant_characteristics/dr_shed_fom_{dr_shedscen}.csv,int(sw.GSw_DRShed) != 0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shift.csv,inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shift_vom.csv,inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv -plantchar_dr_shift_fom.csv,inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,mean,uniform,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift.csv,inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift_vom.csv,inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv +plantchar_dr_shift_fom.csv,inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,used to define plantcharout.csv plantchar_fuelcell.csv,inputs/plant_characteristics/{plantchar_fuelcell}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas_ccs.csv,inputs/plant_characteristics/{plantchar_gas_ccs}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv plantchar_gas.csv,inputs/plant_characteristics/{plantchar_gas}.csv,1,ignore,ignore,,,,,0,,,,,,used to define plantcharout.csv From dc2c3d77c18e0c0010dcfba97a5f123b782b7a7b Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Thu, 2 Jul 2026 12:21:26 -0600 Subject: [PATCH 10/25] start fixes to get aggreg resolution to work with dr shape data --- reeds/input_processing/hourly_load.py | 51 ++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index 0403e37db..72e577181 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -729,7 +729,7 @@ def main(reeds_path, inputs_case): # Combined dr shed types regional_dr_shed_hourly = pd.concat(regional_dr_shed_hourly.values(), axis=1) regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) - regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) + regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) #%%%######################################### # -- DR Shape Load Modifications -- # @@ -738,7 +738,56 @@ def main(reeds_path, inputs_case): if int(sw.GSw_DRShape): state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) + + # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] + state_dr_shape_profile_inc = state_dr_shape_profile_inc.set_index(['year','hour']) + state_dr_shape_profile_dec = state_dr_shape_profile_dec.set_index(['year','hour']) + + regional_dr_shape_profile_inc = {} + regional_dr_shape_profile_dec = {} + for dr_type in state_dr_shape_profile_inc['i'].unique(): + reg_shape_inc = state_dr_shape_profile_inc[state_dr_shape_profile_inc['i'] == dr_type].copy().drop(columns='i') + reg_shape_dec = state_dr_shape_profile_dec[state_dr_shape_profile_dec['i'] == dr_type].copy().drop(columns='i') + reg_shape_inc = reaggregate_to_model_regions( + reg_shape_inc, + inputs_case, + 'state_lpf', + dr_data=True + ) + reg_shape_dec = reaggregate_to_model_regions( + reg_shape_dec, + inputs_case, + 'state_lpf', + dr_data=True + ) + #Add back dr type to column header as first column + reg_shape_inc.insert(0, 'i', dr_type) + reg_shape_dec.insert(0, 'i', dr_type) + + # # and so columns are in the format of 'dr_shape_i|state' + # state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index() + # state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index() + # state_dr_shape_profile_inc = state_dr_shape_profile_inc.pivot_table( + # index=['year', 'hour'], + # columns=['i'], + # values=[col for col in state_dr_shape_profile_inc.columns if col not in ['year', 'hour', 'i']], + # aggfunc='first' + # ) + # state_dr_shape_profile_dec = state_dr_shape_profile_dec.pivot_table( + # index=['year', 'hour'], + # columns=['i'], + # values=[col for col in state_dr_shape_profile_dec.columns if col not in ['year', 'hour', 'i']], + # aggfunc='first' + # ) + + # # Flatten multi-level columns and format as 'i|state' + # state_dr_shape_profile_inc.columns = [f"{col[1]}|{col[0]}" if col[0] else col[1] for col in state_dr_shape_profile_inc.columns] + # state_dr_shape_profile_dec.columns = [f"{col[1]}|{col[0]}" if col[0] else col[1] for col in state_dr_shape_profile_dec.columns] + + + + reg_cols = [col for col in state_dr_shape_profile_inc.columns if col not in ['i','year','hour']] disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() From 418fcc944d301f93c64cecefd8765d072e95f9dd Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Sat, 15 Aug 2026 20:09:28 +0000 Subject: [PATCH 11/25] fix dr shed and shape for aggreg --- cases_dr.csv | 41 +++++++-------- docs/source/plotting_scripts/maps.py | 46 ++++++++--------- reeds/input_processing/hourly_load.py | 73 ++++++++++++++++++++------- runreeds.py | 21 +------- 4 files changed, 102 insertions(+), 79 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index cb8b01584..f60d8c916 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,20 +1,21 @@ -,Default Value,Pacific_DRShed,Pacific_DRShape -ignore,1,0,0 -endyear,,2032,2032 -GSw_Region,,cendiv/Pacific,cendiv/Pacific -GSw_ZoneSet,,, -GSw_GasCurve,,2,2 -GSw_HourlyType,,, -GSw_OpRes,,, -GSw_HourlyNumClusters,,, -GSw_PRM_CapCredit,,, -GSw_StartCost,,, -GSw_LfillGas,,, -GSw_Geothermal,,, -GSw_Biopower,,, -GSw_Nuclear,,, -GSw_HourlyChunkLengthRep,,, -GSw_HourlyChunkLengthStress,,, -yearset,,, -GSw_DRShed,,1, -GSw_DRShape,,,1 +,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape +ignore,1,,,,,0 +endyear,,2032,2032,2032,2032,2032 +GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific +GSw_ZoneSet,,,,,z54,z54 +GSw_GasCurve,,2,2,2,2,2 +GSw_HourlyType,,,,,, +GSw_OpRes,,,,,, +GSw_HourlyNumClusters,,,,,, +GSw_PRM_CapCredit,,,,,, +GSw_StartCost,,,,,, +GSw_LfillGas,,,,,, +GSw_Geothermal,,,,,, +GSw_Biopower,,,,,, +GSw_Nuclear,,,,,, +GSw_HourlyChunkLengthRep,,,,,, +GSw_HourlyChunkLengthStress,,,,,, +yearset,,,,,, +GSw_DRShed,,1,,,1, +GSw_DRShape,,,1,,,1 +GSw_DRShift,,,,1,, diff --git a/docs/source/plotting_scripts/maps.py b/docs/source/plotting_scripts/maps.py index ec6d4f5fc..a824ccfff 100644 --- a/docs/source/plotting_scripts/maps.py +++ b/docs/source/plotting_scripts/maps.py @@ -184,28 +184,28 @@ greatlakes.plot(ax=ax, edgecolor='#2CA8E7', facecolor='#D3EFFA', lw=0.2, zorder=-1) for r, row in dfregion.iterrows(): dfregion.loc[[r]].plot(ax=ax, color=colors[r], alpha=alpha_region, lw=0, zorder=1) - if label_regions.get(level, True): - x, y = ( - np.array([row.geometry.centroid.x, row.geometry.centroid.y]) - + np.array(offset.get(level, {}).get(r, (0,0))) - ) - ax.annotate( - r.replace('_','\n'), - (x, y), - ha='center', va='center', weight='bold', - size={'r':7, 'hurdlereg':7, 'st':10}.get(level,11), - color='k', zorder=1e11, - path_effects=[pe.withStroke(linewidth=1.5, foreground='w', alpha=1)] - ) - if label_zones.get(level, True): - for r, row in dfmap['r'].iterrows(): - ax.annotate( - r, - (row.geometry.centroid.x, row.geometry.centroid.y), - ha='center', va='center', size=6, weight='normal', - color='C7', zorder=1e10, - path_effects=[pe.withStroke(linewidth=0.7, foreground='w', alpha=1)] - ) + # if label_regions.get(level, True): + # x, y = ( + # np.array([row.geometry.centroid.x, row.geometry.centroid.y]) + # + np.array(offset.get(level, {}).get(r, (0,0))) + # ) + # ax.annotate( + # r.replace('_','\n'), + # (x, y), + # ha='center', va='center', weight='bold', + # size={'r':7, 'hurdlereg':7, 'st':10}.get(level,11), + # color='k', zorder=1e11, + # path_effects=[pe.withStroke(linewidth=1.5, foreground='w', alpha=1)] + # ) + # if label_zones.get(level, True): + # for r, row in dfmap['r'].iterrows(): + # ax.annotate( + # r, + # (row.geometry.centroid.x, row.geometry.centroid.y), + # ha='center', va='center', size=6, weight='normal', + # color='C7', zorder=1e10, + # path_effects=[pe.withStroke(linewidth=0.7, foreground='w', alpha=1)] + # ) ax.axis('off') savename = ( @@ -219,7 +219,7 @@ ) plt.savefig( os.path.join(savepath, savename+'.png'), - transparent=True, + transparent=False, bbox_inches='tight', ) plt.show() diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index 0403e37db..c66b3682a 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -541,7 +541,8 @@ def reaggregate_to_model_regions( state_load_hourly: pd.DataFrame, inputs_case: str, GSw_LoadAllocationMethod: str, - dr_data: bool = False + dr_data: bool = False, + dr_type: str = None, ) -> pd.DataFrame: """ Allocate hourly state load to model regions according to the provided @@ -562,6 +563,7 @@ def reaggregate_to_model_regions( os.path.dirname(inputs_case), disagg_variable=GSw_LoadAllocationMethod ) + # Calculate state-to-region aggregation/disaggregation factors state_region_factors = ( disagg_data.groupby(['state', 'r'], as_index=False) @@ -588,6 +590,18 @@ def reaggregate_to_model_regions( if dr_data: state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(state_load_hourly.columns), :] + # Demand response shape and shift data are fractions which should be distributed uniformly across all regions within a state + # Currently only compaitble with z48 as coarest resolution + if dr_data and dr_type == 'fraction': + # Determine the number of regions within each state + unique_state = disagg_data['state'].unique() + state_map = {} + for st in unique_state: + state_map[st] = disagg_data.loc[disagg_data['state'] == st]['r'].unique().tolist() + + + + # Multiply the hourly state load profiles by the state-to-region factors regional_load_hourly = ( state_load_hourly[state_region_factors.index] @@ -729,7 +743,7 @@ def main(reeds_path, inputs_case): # Combined dr shed types regional_dr_shed_hourly = pd.concat(regional_dr_shed_hourly.values(), axis=1) regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) - regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) + regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) #%%%######################################### # -- DR Shape Load Modifications -- # @@ -738,20 +752,45 @@ def main(reeds_path, inputs_case): if int(sw.GSw_DRShape): state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) - - reg_cols = [col for col in state_dr_shape_profile_inc.columns if col not in ['i','year','hour']] - disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) - state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() - # Assign shape increase and decrease fractions uniformly - for state_col in reg_cols: - if state_col in state2r: - for r in state2r[state_col]: - state_dr_shape_profile_inc[r] = state_dr_shape_profile_inc[state_col] - state_dr_shape_profile_dec[r] = state_dr_shape_profile_dec[state_col] - # Drop state columns - state_dr_shape_profile_inc = state_dr_shape_profile_inc.drop(columns=reg_cols) - state_dr_shape_profile_dec = state_dr_shape_profile_dec.drop(columns=reg_cols) + # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] + state_dr_shape_profile_inc = state_dr_shape_profile_inc.set_index(['year','hour']) + state_dr_shape_profile_dec = state_dr_shape_profile_dec.set_index(['year','hour']) + + regional_dr_shape_profile_inc = {} + regional_dr_shape_profile_dec = {} + for dr_type in state_dr_shape_profile_inc['i'].unique(): + reg_shape_inc = state_dr_shape_profile_inc[state_dr_shape_profile_inc['i'] == dr_type].copy().drop(columns='i') + reg_shape_dec = state_dr_shape_profile_dec[state_dr_shape_profile_dec['i'] == dr_type].copy().drop(columns='i') + reg_shape_inc = reaggregate_to_model_regions( + reg_shape_inc, + inputs_case, + 'state_lpf', + dr_data=True, + dr_type='fraction', + ) + reg_shape_dec = reaggregate_to_model_regions( + reg_shape_dec, + inputs_case, + 'state_lpf', + dr_data=True, + dr_type='fraction', + ) + #Add back dr type to column header as first column + reg_shape_inc.insert(0, 'i', dr_type) + reg_shape_dec.insert(0, 'i', dr_type) + + reg_shape_inc[reg_shape_inc.columns.difference(['i'])] = reg_shape_inc[reg_shape_inc.columns.difference(['i'])].round(3) + reg_shape_dec[reg_shape_dec.columns.difference(['i'])] = reg_shape_dec[reg_shape_dec.columns.difference(['i'])].round(3) + + regional_dr_shape_profile_inc[dr_type] = reg_shape_inc.reset_index() + regional_dr_shape_profile_dec[dr_type] = reg_shape_dec.reset_index() + + # Combine dr shape types + regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) + regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) + + @@ -773,8 +812,8 @@ def main(reeds_path, inputs_case): reeds.io.write_profile_to_h5(regional_dr_shed_hourly, 'dr_shed_hourly.h5', inputs_case) if int(sw.GSw_DRShape): - state_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) - state_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) + regional_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) + regional_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) #%% =========================================================================== diff --git a/runreeds.py b/runreeds.py index 99692e946..f760afef0 100644 --- a/runreeds.py +++ b/runreeds.py @@ -291,6 +291,7 @@ def check_compatibility(sw): if sw['GSw_RegionResolution'] in ['county','mixed']: err_switch_configs = [] + if sw['GSw_LoadAllocationMethod'] == 'state_lpf': err_switch_configs.append('GSw_LoadAllocationMethod=state_lpf') @@ -382,16 +383,6 @@ 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") @@ -492,15 +483,6 @@ def check_compatibility(sw): err = f"GSw_LoadProfiles={sw['GSw_LoadProfiles']} but the specified file does not exist" raise FileNotFoundError(err) - if sw['GSw_LoadProfiles'].startswith('EER2023'): - allowed_ra_years = range(2007,2014) - if not all([y in allowed_ra_years for y in resource_adequacy_years]): - err = ( - f"GSw_LoadProfiles={sw['GSw_LoadProfiles']} only supports resource_adequacy_years=" - f"{list(allowed_ra_years)} but {resource_adequacy_years} was supplied" - ) - raise ValueError(err) - ### Dependent model availability if ( ((int(sw['pras']) == 2) or int(sw['GSw_PRM_StressIterateMax'])) @@ -1300,6 +1282,7 @@ def write_batch_script( for s in [ 'copy_files', 'mcs_sampler', + # 'aggregate_regions', 'hydcf', 'h2_storage', 'calc_financial_inputs', From 273ecc64c9ec9ce621c2cc213c7c6676e0a48f80 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Wed, 19 Aug 2026 18:38:34 +0000 Subject: [PATCH 12/25] DR fixes for aggreg resolutions --- cases_dr.csv | 2 +- .../dr_shift_cap_scalar_ex_dr1.csv | 49 ++++ inputs/supply_curve/dr_shift_cap_ex_dr1.csv | 2 + inputs/supply_curve/dr_shift_cost_ex_dr1.csv | 2 + reeds/input_processing/writesupplycurves.py | 239 +++++++++--------- 5 files changed, 180 insertions(+), 114 deletions(-) create mode 100644 inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shift_cap_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shift_cost_ex_dr1.csv diff --git a/cases_dr.csv b/cases_dr.csv index f60d8c916..73ca501d9 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,,,,,0 +ignore,1,0,0,,0,0 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,,,z54,z54 diff --git a/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv new file mode 100644 index 000000000..0b71889a5 --- /dev/null +++ b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shift_1,TN,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,LA,0.965,0.972,0.979,0.986,0.993,1.0,1.006,1.012,1.019,1.025,1.031,1.037,1.043,1.048,1.054,1.06,1.068,1.076,1.083,1.091,1.099,1.107,1.115,1.124,1.132,1.14 +dr_shift_1,NV,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_1,KS,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,MO,0.974,0.979,0.984,0.99,0.995,1.0,1.007,1.014,1.021,1.028,1.034,1.042,1.049,1.057,1.064,1.072,1.08,1.089,1.097,1.106,1.114,1.125,1.136,1.147,1.158,1.169 +dr_shift_1,AR,0.963,0.97,0.978,0.985,0.993,1.0,1.007,1.013,1.02,1.027,1.034,1.04,1.046,1.052,1.058,1.064,1.072,1.079,1.086,1.093,1.101,1.108,1.116,1.124,1.132,1.139 +dr_shift_1,KY,0.956,0.965,0.974,0.982,0.991,1.0,1.006,1.012,1.018,1.025,1.031,1.036,1.041,1.046,1.051,1.056,1.062,1.067,1.073,1.079,1.084,1.094,1.103,1.112,1.122,1.131 +dr_shift_1,MD,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,NJ,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,AZ,0.91,0.928,0.946,0.964,0.982,1.0,1.015,1.03,1.045,1.06,1.075,1.088,1.101,1.114,1.126,1.139,1.153,1.166,1.18,1.196,1.213,1.229,1.245,1.261,1.278,1.294 +dr_shift_1,CO,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_1,FL,0.735,0.788,0.841,0.894,0.947,1.0,1.034,1.069,1.103,1.138,1.172,1.198,1.223,1.248,1.274,1.299,1.321,1.343,1.364,1.386,1.408,1.427,1.445,1.464,1.483,1.501 +dr_shift_1,IN,0.982,0.985,0.989,0.993,0.996,1.0,1.004,1.009,1.013,1.018,1.022,1.027,1.032,1.036,1.041,1.046,1.051,1.057,1.062,1.068,1.073,1.08,1.086,1.092,1.098,1.105 +dr_shift_1,VT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,NM,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,SD,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.142,1.158,1.174,1.191,1.209,1.227,1.244,1.262,1.28 +dr_shift_1,MS,0.953,0.962,0.972,0.981,0.991,1.0,1.009,1.017,1.026,1.034,1.043,1.051,1.059,1.067,1.076,1.084,1.094,1.104,1.113,1.123,1.133,1.142,1.151,1.16,1.169,1.178 +dr_shift_1,NH,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,NE,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.137,1.149,1.16,1.171,1.183,1.195,1.208,1.22,1.232 +dr_shift_1,OK,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,ID,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_1,WA,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_1,AL,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,MA,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,DE,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,CA,0.946,0.957,0.968,0.978,0.989,1.0,1.011,1.023,1.034,1.045,1.057,1.068,1.078,1.089,1.1,1.111,1.123,1.135,1.147,1.159,1.172,1.185,1.199,1.212,1.226,1.239 +dr_shift_1,UT,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_1,ND,0.948,0.959,0.969,0.979,0.99,1.0,1.008,1.017,1.025,1.034,1.042,1.05,1.058,1.065,1.073,1.08,1.089,1.098,1.106,1.115,1.123,1.133,1.142,1.152,1.161,1.171 +dr_shift_1,MN,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,OR,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_1,GA,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,MT,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_1,SC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,OH,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,RI,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,ME,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,WY,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_1,MI,0.948,0.958,0.969,0.979,0.99,1.0,1.008,1.016,1.024,1.032,1.04,1.046,1.052,1.058,1.064,1.07,1.077,1.087,1.099,1.11,1.122,1.134,1.147,1.159,1.172,1.185 +dr_shift_1,WI,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,NY,0.971,0.976,0.982,0.988,0.994,1.0,1.006,1.013,1.019,1.026,1.032,1.038,1.043,1.049,1.055,1.061,1.068,1.076,1.084,1.091,1.099,1.108,1.117,1.126,1.135,1.145 +dr_shift_1,TX,0.949,0.959,0.969,0.979,0.99,1.0,1.008,1.015,1.023,1.031,1.039,1.044,1.049,1.06,1.073,1.085,1.098,1.112,1.125,1.138,1.152,1.166,1.181,1.196,1.211,1.226 +dr_shift_1,IL,0.961,0.969,0.976,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.04,1.046,1.051,1.057,1.062,1.069,1.075,1.082,1.089,1.095,1.102,1.114,1.126,1.138,1.151 +dr_shift_1,CT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,IA,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,WV,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,NC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,VA,0.931,0.945,0.959,0.972,0.986,1.0,1.009,1.018,1.027,1.036,1.046,1.052,1.058,1.064,1.07,1.076,1.083,1.091,1.098,1.105,1.112,1.122,1.133,1.143,1.154,1.164 +dr_shift_1,PA,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 diff --git a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv new file mode 100644 index 000000000..b181570d7 --- /dev/null +++ b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY +dr_shape_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 diff --git a/inputs/supply_curve/dr_shift_cost_ex_dr1.csv b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv new file mode 100644 index 000000000..32d7a0dad --- /dev/null +++ b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,WA,CA,VA,FL,MI,IN,KY,OH,PA,WV,NV,MD,DE,NJ,NY,VT,NH,MA,CT,RI,ME,ID,MT,WY,UT,AZ,NM,SD,CO,ND,NE,MN,IA,WI,TX,OK,OR,KS,MO,AR,LA,IL,MS,AL,TN,GA,SC,NC +dr_shape_1,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 diff --git a/reeds/input_processing/writesupplycurves.py b/reeds/input_processing/writesupplycurves.py index 460a444a3..07f10b166 100644 --- a/reeds/input_processing/writesupplycurves.py +++ b/reeds/input_processing/writesupplycurves.py @@ -805,125 +805,138 @@ def main( ##### DR Shed, Shape, and Shift ##### # Write region-level supply curve capacity and cost data for DR Shed, Shape, and Shift # Write region-level supply curve capacity scalars + if int(sw.GSw_DRShed) == 1 or int(sw.GSw_DRShape) == 1 or int(sw.GSw_DRShift) == 1: + # State-level DR data processing function + def process_dr_state_level(dr_type, disagg_data, state2r): + """ + Process state-level DR data and disaggregate to region-level. + + Parameters: + - dr_type: 'dr_shed', 'dr_shape', or 'dr_shift' + - disagg_data: disaggregation data with state-to-region mapping + - state2r: dictionary mapping states to regions + + Returns: + - dr_dat: processed dataframe with regional DR data + """ + # Calculate state-to-region aggregation/disaggregation factors + state_region_factors = ( + disagg_data.groupby(['state', 'r'], as_index=False) + ['state_frac'] + .sum() + .pivot(index='state', columns='r', values='state_frac') + .rename_axis(None, axis=1) + .fillna(0) + ) + + # Read state-level capacity and cost data + cap_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cap.csv')) + cost_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cost.csv')) + + # Disaggregate capacity from state to region level + cap_reg = cap_state.copy() + state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(cap_reg.columns), :] + cap_reg = cap_reg[state_region_factors.index].dot(state_region_factors) + cap_reg.insert(0, 'tech', cap_state['tech']) + if dr_type == 'dr_shift' or dr_type == 'dr_shape': + # cap_reg.insert(0, 'rscbin', cap_state['rscbin']) + cap_reg.insert(0, 'class', cap_state['rscbin']) + # Disaggregate cost from state to region level + cost_reg = pd.DataFrame() + for col in [x for x in cost_state.columns if x not in ['tech', 'rscbin']]: + for r in state2r[col]: + cost_reg[r] = cost_state[col] + cost_reg.insert(0, 'tech', cost_state['tech']) + if dr_type == 'dr_shift' or dr_type == 'dr_shape': + # cost_reg.insert(0, 'rscbin', cost_state['rscbin']) + cost_reg.insert(0, 'class', cost_state['rscbin']) + + cap = cap_reg.copy() + cost = cost_reg.copy() + # Define rsc class using tech for dr_shed + if dr_type == 'dr_shed': + cap['class'] = cap['tech'] + cost['class'] = cost['tech'] + + cap = (pd.melt(cap, id_vars=['tech', 'class']) + .set_index(['tech', 'class', 'variable']) + .sort_index()) + cap = cap.reset_index() + cost = pd.melt(cost, id_vars=['tech', 'class']) - # State-level DR data processing function - def process_dr_state_level(dr_type, disagg_data, state2r): - """ - Process state-level DR data and disaggregate to region-level. - - Parameters: - - dr_type: 'dr_shed', 'dr_shape', or 'dr_shift' - - disagg_data: disaggregation data with state-to-region mapping - - state2r: dictionary mapping states to regions - - Returns: - - dr_dat: processed dataframe with regional DR data - """ - # Calculate state-to-region aggregation/disaggregation factors - state_region_factors = ( - disagg_data.groupby(['state', 'r'], as_index=False) - ['state_frac'] - .sum() - .pivot(index='state', columns='r', values='state_frac') - .rename_axis(None, axis=1) - .fillna(0) - ) - - # Read state-level capacity and cost data - cap_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cap.csv')) - cost_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cost.csv')) - - # Disaggregate capacity from state to region level - cap_reg = cap_state.copy() - state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(cap_reg.columns), :] - cap_reg = cap_reg[state_region_factors.index].dot(state_region_factors) - cap_reg.insert(0, 'tech', cap_state['tech']) - - # Disaggregate cost from state to region level - cost_reg = cost_state.copy() - # for col in cost_state.columns[1:]: - for col in state_region_factors.index: - for r in state2r[col]: - cost_reg[r] = cost_state[col] - cost_reg.drop(columns=col, inplace=True) - - # Define rsc class using tech - cap = cap_reg.copy() - cap['class'] = cap['tech'] - cost = cost_reg.copy() - cost['class'] = cost['tech'] - - cap = (pd.melt(cap, id_vars=['tech', 'class']) - .set_index(['tech', 'class', 'variable']) - .sort_index()) - cap = cap.reset_index() - cost = pd.melt(cost, id_vars=['tech', 'class']) - - # Convert dollar year - cost[cost.select_dtypes(include=['number']).columns] *= deflate[dr_type] - - # Assign rsc cat - cap['var'] = 'cap' - cost['var'] = 'cost' - - # Combined cost and capacity - dr_dat = pd.concat([cap, cost]) - dr_dat['bin'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', 'bin')) - dr_dat['class'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', '')) - - dr_dat.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) - dr_dat = dr_dat[['tech', 'r', 'value', 'var', 'variable']].fillna(0) - - # Update supply curve capacity multiplier from state-level to region-level - dr_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv')) - # Could be empty if regions included in run do not have DR data - if not dr_capacity_scalar_state.empty: - dr_capacity_scalar_reg = {} - for st in dr_capacity_scalar_state['r'].unique(): - scalar_df = {} - for r in state2r[st]: - scalar_ba = dr_capacity_scalar_state[dr_capacity_scalar_state['r'] == st].copy() - scalar_ba['r'] = r - scalar_df[r] = scalar_ba - dr_capacity_scalar_reg[st] = pd.concat(scalar_df) - dr_capacity_scalar_reg = pd.concat(dr_capacity_scalar_reg.values(), ignore_index=True) + # Convert dollar year + cost[cost.select_dtypes(include=['number']).columns] *= deflate[dr_type] + + # Assign rsc cat + cap['var'] = 'cap' + cost['var'] = 'cost' + + # Combined cost and capacity + dr_dat = pd.concat([cap, cost]) + dr_dat['bin'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', 'bin')) + dr_dat['class'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', '')) + + dr_dat.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) + dr_dat = dr_dat[['tech', 'r', 'value','var','variable']].fillna(0) + + # Update supply curve capacity multiplier from state-level to region-level + dr_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv')) + # Could be empty if regions included in run do not have DR data + if not dr_capacity_scalar_state.empty: + dr_capacity_scalar_reg = {} + for st in dr_capacity_scalar_state['r'].unique(): + scalar_df = {} + for r in state2r[st]: + scalar_ba = dr_capacity_scalar_state[dr_capacity_scalar_state['r'] == st].copy() + scalar_ba['r'] = r + scalar_df[r] = scalar_ba + dr_capacity_scalar_reg[st] = pd.concat(scalar_df) + dr_capacity_scalar_reg = pd.concat(dr_capacity_scalar_reg.values(), ignore_index=True) + + return dr_dat,dr_capacity_scalar_reg + + # State-level DR data - process state-level shape and shift data + # Use capacity and cost to add DR to rsc_combined + disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) + state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() - return dr_dat,dr_capacity_scalar_reg - - # State-level DR data - process state-level shape and shift data - # Use capacity and cost to add DR to rsc_combined - disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) - state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() + dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) + dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) + dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) + + # Add DR data to rsc_combined if turned on, otherwise populate empty files + if int(sw.GSw_DRShed) == 1: + allout_list.append(dr_shed_dat) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) + + else: + dr_shed_capacity_scalar_reg = pd.DataFrame(columns=dr_shed_capacity_scalar_reg.columns) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) + + if int(sw.GSw_DRShape) == 1: + allout_list.append(dr_shape_dat) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + + else: + dr_shape_capacity_scalar_reg = pd.DataFrame(columns=dr_shape_capacity_scalar_reg.columns) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + + if int(sw.GSw_DRShift) == 1: + allout_list.append(dr_shift_dat) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) + + else: + dr_shift_capacity_scalar_reg = pd.DataFrame(columns=dr_shift_capacity_scalar_reg.columns) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) - dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) - # dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) - - # Add DR data to rsc_combined if turned on, otherwise populate empty files - if int(sw.GSw_DRShed) == 1: - allout_list.append(dr_shed_dat) - dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) - - else: - dr_shed_capacity_scalar_reg = pd.DataFrame(columns=dr_shed_capacity_scalar_reg.columns) - dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) - - if int(sw.GSw_DRShape) == 1: - allout_list.append(dr_shape_dat) - dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) - + # write out empty files if DR is turned off else: - dr_shape_capacity_scalar_reg = pd.DataFrame(columns=dr_shape_capacity_scalar_reg.columns) - dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + for dr_type in ['dr_shed','dr_shape','dr_shift']: + dr_capacity_scalar_reg = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv'), header=0) + dr_capacity_scalar_reg = pd.DataFrame(columns=dr_capacity_scalar_reg.columns) + dr_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv'), index=False) - # if int(sw.GSw_DRShift) == 1: - # allout_list.append(dr_shift_dat) - # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - # else: - # dr_shift_capacity_scalar_reg = pd.DataFrame(columns=dr_shift_capacity_scalar_reg.columns) - # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - # %%---------------------------------------------------------------------------------- ################################## # -- Combine everything -- # From 59c8d4fd4c6a12292b723e7c7330ef1cfb07e96c Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Wed, 19 Aug 2026 13:31:42 -0600 Subject: [PATCH 13/25] fixes for dr data compatibility with aggreg resolutions --- .../dr_shift_cap_scalar_ex_dr1.csv | 49 ++++ inputs/supply_curve/dr_shift_cap_ex_dr1.csv | 2 + inputs/supply_curve/dr_shift_cost_ex_dr1.csv | 2 + reeds/input_processing/hourly_load.py | 66 ++--- reeds/input_processing/writesupplycurves.py | 239 +++++++++--------- 5 files changed, 207 insertions(+), 151 deletions(-) create mode 100644 inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shift_cap_ex_dr1.csv create mode 100644 inputs/supply_curve/dr_shift_cost_ex_dr1.csv diff --git a/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv new file mode 100644 index 000000000..0b71889a5 --- /dev/null +++ b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv @@ -0,0 +1,49 @@ +tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 +dr_shift_1,TN,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,LA,0.965,0.972,0.979,0.986,0.993,1.0,1.006,1.012,1.019,1.025,1.031,1.037,1.043,1.048,1.054,1.06,1.068,1.076,1.083,1.091,1.099,1.107,1.115,1.124,1.132,1.14 +dr_shift_1,NV,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_1,KS,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,MO,0.974,0.979,0.984,0.99,0.995,1.0,1.007,1.014,1.021,1.028,1.034,1.042,1.049,1.057,1.064,1.072,1.08,1.089,1.097,1.106,1.114,1.125,1.136,1.147,1.158,1.169 +dr_shift_1,AR,0.963,0.97,0.978,0.985,0.993,1.0,1.007,1.013,1.02,1.027,1.034,1.04,1.046,1.052,1.058,1.064,1.072,1.079,1.086,1.093,1.101,1.108,1.116,1.124,1.132,1.139 +dr_shift_1,KY,0.956,0.965,0.974,0.982,0.991,1.0,1.006,1.012,1.018,1.025,1.031,1.036,1.041,1.046,1.051,1.056,1.062,1.067,1.073,1.079,1.084,1.094,1.103,1.112,1.122,1.131 +dr_shift_1,MD,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,NJ,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,AZ,0.91,0.928,0.946,0.964,0.982,1.0,1.015,1.03,1.045,1.06,1.075,1.088,1.101,1.114,1.126,1.139,1.153,1.166,1.18,1.196,1.213,1.229,1.245,1.261,1.278,1.294 +dr_shift_1,CO,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_1,FL,0.735,0.788,0.841,0.894,0.947,1.0,1.034,1.069,1.103,1.138,1.172,1.198,1.223,1.248,1.274,1.299,1.321,1.343,1.364,1.386,1.408,1.427,1.445,1.464,1.483,1.501 +dr_shift_1,IN,0.982,0.985,0.989,0.993,0.996,1.0,1.004,1.009,1.013,1.018,1.022,1.027,1.032,1.036,1.041,1.046,1.051,1.057,1.062,1.068,1.073,1.08,1.086,1.092,1.098,1.105 +dr_shift_1,VT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,NM,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,SD,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.142,1.158,1.174,1.191,1.209,1.227,1.244,1.262,1.28 +dr_shift_1,MS,0.953,0.962,0.972,0.981,0.991,1.0,1.009,1.017,1.026,1.034,1.043,1.051,1.059,1.067,1.076,1.084,1.094,1.104,1.113,1.123,1.133,1.142,1.151,1.16,1.169,1.178 +dr_shift_1,NH,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,NE,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.137,1.149,1.16,1.171,1.183,1.195,1.208,1.22,1.232 +dr_shift_1,OK,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_1,ID,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_1,WA,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_1,AL,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,MA,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,DE,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,CA,0.946,0.957,0.968,0.978,0.989,1.0,1.011,1.023,1.034,1.045,1.057,1.068,1.078,1.089,1.1,1.111,1.123,1.135,1.147,1.159,1.172,1.185,1.199,1.212,1.226,1.239 +dr_shift_1,UT,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_1,ND,0.948,0.959,0.969,0.979,0.99,1.0,1.008,1.017,1.025,1.034,1.042,1.05,1.058,1.065,1.073,1.08,1.089,1.098,1.106,1.115,1.123,1.133,1.142,1.152,1.161,1.171 +dr_shift_1,MN,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,OR,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_1,GA,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,MT,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_1,SC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,OH,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,RI,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,ME,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,WY,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_1,MI,0.948,0.958,0.969,0.979,0.99,1.0,1.008,1.016,1.024,1.032,1.04,1.046,1.052,1.058,1.064,1.07,1.077,1.087,1.099,1.11,1.122,1.134,1.147,1.159,1.172,1.185 +dr_shift_1,WI,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,NY,0.971,0.976,0.982,0.988,0.994,1.0,1.006,1.013,1.019,1.026,1.032,1.038,1.043,1.049,1.055,1.061,1.068,1.076,1.084,1.091,1.099,1.108,1.117,1.126,1.135,1.145 +dr_shift_1,TX,0.949,0.959,0.969,0.979,0.99,1.0,1.008,1.015,1.023,1.031,1.039,1.044,1.049,1.06,1.073,1.085,1.098,1.112,1.125,1.138,1.152,1.166,1.181,1.196,1.211,1.226 +dr_shift_1,IL,0.961,0.969,0.976,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.04,1.046,1.051,1.057,1.062,1.069,1.075,1.082,1.089,1.095,1.102,1.114,1.126,1.138,1.151 +dr_shift_1,CT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_1,IA,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_1,WV,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_1,NC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_1,VA,0.931,0.945,0.959,0.972,0.986,1.0,1.009,1.018,1.027,1.036,1.046,1.052,1.058,1.064,1.07,1.076,1.083,1.091,1.098,1.105,1.112,1.122,1.133,1.143,1.154,1.164 +dr_shift_1,PA,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 diff --git a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv new file mode 100644 index 000000000..b181570d7 --- /dev/null +++ b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY +dr_shape_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 diff --git a/inputs/supply_curve/dr_shift_cost_ex_dr1.csv b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv new file mode 100644 index 000000000..32d7a0dad --- /dev/null +++ b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv @@ -0,0 +1,2 @@ +tech,rscbin,WA,CA,VA,FL,MI,IN,KY,OH,PA,WV,NV,MD,DE,NJ,NY,VT,NH,MA,CT,RI,ME,ID,MT,WY,UT,AZ,NM,SD,CO,ND,NE,MN,IA,WI,TX,OK,OR,KS,MO,AR,LA,IL,MS,AL,TN,GA,SC,NC +dr_shape_1,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index 72e577181..c66b3682a 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -541,7 +541,8 @@ def reaggregate_to_model_regions( state_load_hourly: pd.DataFrame, inputs_case: str, GSw_LoadAllocationMethod: str, - dr_data: bool = False + dr_data: bool = False, + dr_type: str = None, ) -> pd.DataFrame: """ Allocate hourly state load to model regions according to the provided @@ -562,6 +563,7 @@ def reaggregate_to_model_regions( os.path.dirname(inputs_case), disagg_variable=GSw_LoadAllocationMethod ) + # Calculate state-to-region aggregation/disaggregation factors state_region_factors = ( disagg_data.groupby(['state', 'r'], as_index=False) @@ -588,6 +590,18 @@ def reaggregate_to_model_regions( if dr_data: state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(state_load_hourly.columns), :] + # Demand response shape and shift data are fractions which should be distributed uniformly across all regions within a state + # Currently only compaitble with z48 as coarest resolution + if dr_data and dr_type == 'fraction': + # Determine the number of regions within each state + unique_state = disagg_data['state'].unique() + state_map = {} + for st in unique_state: + state_map[st] = disagg_data.loc[disagg_data['state'] == st]['r'].unique().tolist() + + + + # Multiply the hourly state load profiles by the state-to-region factors regional_load_hourly = ( state_load_hourly[state_region_factors.index] @@ -752,55 +766,31 @@ def main(reeds_path, inputs_case): reg_shape_inc, inputs_case, 'state_lpf', - dr_data=True + dr_data=True, + dr_type='fraction', ) reg_shape_dec = reaggregate_to_model_regions( reg_shape_dec, inputs_case, 'state_lpf', - dr_data=True + dr_data=True, + dr_type='fraction', ) #Add back dr type to column header as first column reg_shape_inc.insert(0, 'i', dr_type) reg_shape_dec.insert(0, 'i', dr_type) - # # and so columns are in the format of 'dr_shape_i|state' - # state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index() - # state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index() - - # state_dr_shape_profile_inc = state_dr_shape_profile_inc.pivot_table( - # index=['year', 'hour'], - # columns=['i'], - # values=[col for col in state_dr_shape_profile_inc.columns if col not in ['year', 'hour', 'i']], - # aggfunc='first' - # ) - # state_dr_shape_profile_dec = state_dr_shape_profile_dec.pivot_table( - # index=['year', 'hour'], - # columns=['i'], - # values=[col for col in state_dr_shape_profile_dec.columns if col not in ['year', 'hour', 'i']], - # aggfunc='first' - # ) - - # # Flatten multi-level columns and format as 'i|state' - # state_dr_shape_profile_inc.columns = [f"{col[1]}|{col[0]}" if col[0] else col[1] for col in state_dr_shape_profile_inc.columns] - # state_dr_shape_profile_dec.columns = [f"{col[1]}|{col[0]}" if col[0] else col[1] for col in state_dr_shape_profile_dec.columns] - + reg_shape_inc[reg_shape_inc.columns.difference(['i'])] = reg_shape_inc[reg_shape_inc.columns.difference(['i'])].round(3) + reg_shape_dec[reg_shape_dec.columns.difference(['i'])] = reg_shape_dec[reg_shape_dec.columns.difference(['i'])].round(3) + regional_dr_shape_profile_inc[dr_type] = reg_shape_inc.reset_index() + regional_dr_shape_profile_dec[dr_type] = reg_shape_dec.reset_index() + # Combine dr shape types + regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) + regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) - reg_cols = [col for col in state_dr_shape_profile_inc.columns if col not in ['i','year','hour']] - disagg_data = pd.read_csv(os.path.join(inputs_case,'disagg_state_lpf.csv')) - state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() - # Assign shape increase and decrease fractions uniformly - for state_col in reg_cols: - if state_col in state2r: - for r in state2r[state_col]: - state_dr_shape_profile_inc[r] = state_dr_shape_profile_inc[state_col] - state_dr_shape_profile_dec[r] = state_dr_shape_profile_dec[state_col] - # Drop state columns - state_dr_shape_profile_inc = state_dr_shape_profile_inc.drop(columns=reg_cols) - state_dr_shape_profile_dec = state_dr_shape_profile_dec.drop(columns=reg_cols) @@ -822,8 +812,8 @@ def main(reeds_path, inputs_case): reeds.io.write_profile_to_h5(regional_dr_shed_hourly, 'dr_shed_hourly.h5', inputs_case) if int(sw.GSw_DRShape): - state_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) - state_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) + regional_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) + regional_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) #%% =========================================================================== diff --git a/reeds/input_processing/writesupplycurves.py b/reeds/input_processing/writesupplycurves.py index 460a444a3..07f10b166 100644 --- a/reeds/input_processing/writesupplycurves.py +++ b/reeds/input_processing/writesupplycurves.py @@ -805,125 +805,138 @@ def main( ##### DR Shed, Shape, and Shift ##### # Write region-level supply curve capacity and cost data for DR Shed, Shape, and Shift # Write region-level supply curve capacity scalars + if int(sw.GSw_DRShed) == 1 or int(sw.GSw_DRShape) == 1 or int(sw.GSw_DRShift) == 1: + # State-level DR data processing function + def process_dr_state_level(dr_type, disagg_data, state2r): + """ + Process state-level DR data and disaggregate to region-level. + + Parameters: + - dr_type: 'dr_shed', 'dr_shape', or 'dr_shift' + - disagg_data: disaggregation data with state-to-region mapping + - state2r: dictionary mapping states to regions + + Returns: + - dr_dat: processed dataframe with regional DR data + """ + # Calculate state-to-region aggregation/disaggregation factors + state_region_factors = ( + disagg_data.groupby(['state', 'r'], as_index=False) + ['state_frac'] + .sum() + .pivot(index='state', columns='r', values='state_frac') + .rename_axis(None, axis=1) + .fillna(0) + ) + + # Read state-level capacity and cost data + cap_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cap.csv')) + cost_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cost.csv')) + + # Disaggregate capacity from state to region level + cap_reg = cap_state.copy() + state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(cap_reg.columns), :] + cap_reg = cap_reg[state_region_factors.index].dot(state_region_factors) + cap_reg.insert(0, 'tech', cap_state['tech']) + if dr_type == 'dr_shift' or dr_type == 'dr_shape': + # cap_reg.insert(0, 'rscbin', cap_state['rscbin']) + cap_reg.insert(0, 'class', cap_state['rscbin']) + # Disaggregate cost from state to region level + cost_reg = pd.DataFrame() + for col in [x for x in cost_state.columns if x not in ['tech', 'rscbin']]: + for r in state2r[col]: + cost_reg[r] = cost_state[col] + cost_reg.insert(0, 'tech', cost_state['tech']) + if dr_type == 'dr_shift' or dr_type == 'dr_shape': + # cost_reg.insert(0, 'rscbin', cost_state['rscbin']) + cost_reg.insert(0, 'class', cost_state['rscbin']) + + cap = cap_reg.copy() + cost = cost_reg.copy() + # Define rsc class using tech for dr_shed + if dr_type == 'dr_shed': + cap['class'] = cap['tech'] + cost['class'] = cost['tech'] + + cap = (pd.melt(cap, id_vars=['tech', 'class']) + .set_index(['tech', 'class', 'variable']) + .sort_index()) + cap = cap.reset_index() + cost = pd.melt(cost, id_vars=['tech', 'class']) - # State-level DR data processing function - def process_dr_state_level(dr_type, disagg_data, state2r): - """ - Process state-level DR data and disaggregate to region-level. - - Parameters: - - dr_type: 'dr_shed', 'dr_shape', or 'dr_shift' - - disagg_data: disaggregation data with state-to-region mapping - - state2r: dictionary mapping states to regions - - Returns: - - dr_dat: processed dataframe with regional DR data - """ - # Calculate state-to-region aggregation/disaggregation factors - state_region_factors = ( - disagg_data.groupby(['state', 'r'], as_index=False) - ['state_frac'] - .sum() - .pivot(index='state', columns='r', values='state_frac') - .rename_axis(None, axis=1) - .fillna(0) - ) - - # Read state-level capacity and cost data - cap_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cap.csv')) - cost_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_cost.csv')) - - # Disaggregate capacity from state to region level - cap_reg = cap_state.copy() - state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(cap_reg.columns), :] - cap_reg = cap_reg[state_region_factors.index].dot(state_region_factors) - cap_reg.insert(0, 'tech', cap_state['tech']) - - # Disaggregate cost from state to region level - cost_reg = cost_state.copy() - # for col in cost_state.columns[1:]: - for col in state_region_factors.index: - for r in state2r[col]: - cost_reg[r] = cost_state[col] - cost_reg.drop(columns=col, inplace=True) - - # Define rsc class using tech - cap = cap_reg.copy() - cap['class'] = cap['tech'] - cost = cost_reg.copy() - cost['class'] = cost['tech'] - - cap = (pd.melt(cap, id_vars=['tech', 'class']) - .set_index(['tech', 'class', 'variable']) - .sort_index()) - cap = cap.reset_index() - cost = pd.melt(cost, id_vars=['tech', 'class']) - - # Convert dollar year - cost[cost.select_dtypes(include=['number']).columns] *= deflate[dr_type] - - # Assign rsc cat - cap['var'] = 'cap' - cost['var'] = 'cost' - - # Combined cost and capacity - dr_dat = pd.concat([cap, cost]) - dr_dat['bin'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', 'bin')) - dr_dat['class'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', '')) - - dr_dat.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) - dr_dat = dr_dat[['tech', 'r', 'value', 'var', 'variable']].fillna(0) - - # Update supply curve capacity multiplier from state-level to region-level - dr_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv')) - # Could be empty if regions included in run do not have DR data - if not dr_capacity_scalar_state.empty: - dr_capacity_scalar_reg = {} - for st in dr_capacity_scalar_state['r'].unique(): - scalar_df = {} - for r in state2r[st]: - scalar_ba = dr_capacity_scalar_state[dr_capacity_scalar_state['r'] == st].copy() - scalar_ba['r'] = r - scalar_df[r] = scalar_ba - dr_capacity_scalar_reg[st] = pd.concat(scalar_df) - dr_capacity_scalar_reg = pd.concat(dr_capacity_scalar_reg.values(), ignore_index=True) + # Convert dollar year + cost[cost.select_dtypes(include=['number']).columns] *= deflate[dr_type] + + # Assign rsc cat + cap['var'] = 'cap' + cost['var'] = 'cost' + + # Combined cost and capacity + dr_dat = pd.concat([cap, cost]) + dr_dat['bin'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', 'bin')) + dr_dat['class'] = dr_dat['class'].map(lambda x: x.replace(f'{dr_type}_', '')) + + dr_dat.rename(columns={'variable': 'r', 'bin': 'variable'}, inplace=True) + dr_dat = dr_dat[['tech', 'r', 'value','var','variable']].fillna(0) + + # Update supply curve capacity multiplier from state-level to region-level + dr_capacity_scalar_state = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv')) + # Could be empty if regions included in run do not have DR data + if not dr_capacity_scalar_state.empty: + dr_capacity_scalar_reg = {} + for st in dr_capacity_scalar_state['r'].unique(): + scalar_df = {} + for r in state2r[st]: + scalar_ba = dr_capacity_scalar_state[dr_capacity_scalar_state['r'] == st].copy() + scalar_ba['r'] = r + scalar_df[r] = scalar_ba + dr_capacity_scalar_reg[st] = pd.concat(scalar_df) + dr_capacity_scalar_reg = pd.concat(dr_capacity_scalar_reg.values(), ignore_index=True) + + return dr_dat,dr_capacity_scalar_reg + + # State-level DR data - process state-level shape and shift data + # Use capacity and cost to add DR to rsc_combined + disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) + state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() - return dr_dat,dr_capacity_scalar_reg - - # State-level DR data - process state-level shape and shift data - # Use capacity and cost to add DR to rsc_combined - disagg_data = pd.read_csv(os.path.join(inputs_case, 'disagg_state_lpf.csv')) - state2r = disagg_data.groupby('state')['r'].unique().apply(list).to_dict() + dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) + dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) + dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) + + # Add DR data to rsc_combined if turned on, otherwise populate empty files + if int(sw.GSw_DRShed) == 1: + allout_list.append(dr_shed_dat) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) + + else: + dr_shed_capacity_scalar_reg = pd.DataFrame(columns=dr_shed_capacity_scalar_reg.columns) + dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) + + if int(sw.GSw_DRShape) == 1: + allout_list.append(dr_shape_dat) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + + else: + dr_shape_capacity_scalar_reg = pd.DataFrame(columns=dr_shape_capacity_scalar_reg.columns) + dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + + if int(sw.GSw_DRShift) == 1: + allout_list.append(dr_shift_dat) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) + + else: + dr_shift_capacity_scalar_reg = pd.DataFrame(columns=dr_shift_capacity_scalar_reg.columns) + dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - dr_shed_dat, dr_shed_capacity_scalar_reg = process_dr_state_level('dr_shed', disagg_data, state2r) - dr_shape_dat, dr_shape_capacity_scalar_reg = process_dr_state_level('dr_shape', disagg_data, state2r) - # dr_shift_dat, dr_shift_capacity_scalar_reg = process_dr_state_level('dr_shift', disagg_data, state2r) - - # Add DR data to rsc_combined if turned on, otherwise populate empty files - if int(sw.GSw_DRShed) == 1: - allout_list.append(dr_shed_dat) - dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) - - else: - dr_shed_capacity_scalar_reg = pd.DataFrame(columns=dr_shed_capacity_scalar_reg.columns) - dr_shed_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shed_capacity_scalar.csv'), index=False) - - if int(sw.GSw_DRShape) == 1: - allout_list.append(dr_shape_dat) - dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) - + # write out empty files if DR is turned off else: - dr_shape_capacity_scalar_reg = pd.DataFrame(columns=dr_shape_capacity_scalar_reg.columns) - dr_shape_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shape_capacity_scalar.csv'), index=False) + for dr_type in ['dr_shed','dr_shape','dr_shift']: + dr_capacity_scalar_reg = pd.read_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv'), header=0) + dr_capacity_scalar_reg = pd.DataFrame(columns=dr_capacity_scalar_reg.columns) + dr_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'{dr_type}_capacity_scalar.csv'), index=False) - # if int(sw.GSw_DRShift) == 1: - # allout_list.append(dr_shift_dat) - # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - # else: - # dr_shift_capacity_scalar_reg = pd.DataFrame(columns=dr_shift_capacity_scalar_reg.columns) - # dr_shift_capacity_scalar_reg.to_csv(os.path.join(inputs_case, f'dr_shift_capacity_scalar.csv'), index=False) - # %%---------------------------------------------------------------------------------- ################################## # -- Combine everything -- # From 27085efe85db9ae3521c162186457dee63d65963 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Wed, 19 Aug 2026 22:34:09 +0000 Subject: [PATCH 14/25] fix distribution of state level dr hourly availability to region level --- cases_dr.csv | 2 +- reeds/input_processing/hourly_load.py | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index 73ca501d9..65b660efc 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,0,0,,0,0 +ignore,1,1,0,,1,1 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,,,z54,z54 diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index c66b3682a..49bcd925b 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -591,16 +591,19 @@ def reaggregate_to_model_regions( state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(state_load_hourly.columns), :] # Demand response shape and shift data are fractions which should be distributed uniformly across all regions within a state - # Currently only compaitble with z48 as coarest resolution if dr_data and dr_type == 'fraction': # Determine the number of regions within each state unique_state = disagg_data['state'].unique() state_map = {} for st in unique_state: - state_map[st] = disagg_data.loc[disagg_data['state'] == st]['r'].unique().tolist() + regs_in_state = disagg_data.loc[disagg_data['state'] == st]['r'].unique().tolist() + for reg in regs_in_state: + state_map[reg] = state_load_hourly[st] - - + regional_load_hourly = pd.DataFrame(state_map) + + return regional_load_hourly + # Multiply the hourly state load profiles by the state-to-region factors regional_load_hourly = ( @@ -792,8 +795,6 @@ def main(reeds_path, inputs_case): - - #%%########################### # -- Data Write-Out -- # ############################## From 3b8d906c00460b9e1641376aed76ec4f6076656e Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Thu, 20 Aug 2026 22:56:04 +0000 Subject: [PATCH 15/25] add example dr shift input data --- cases_dr.csv | 2 +- .../dr_shift_cost_scalars_ex_dr1.csv | 96 +++++++++---------- .../dr_shift_fom_ex_dr1.csv | 96 +++++++++---------- .../dr_shift_vom_ex_dr1.csv | 96 +++++++++---------- reeds/input_processing/runfiles.csv | 2 +- 5 files changed, 146 insertions(+), 146 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index 65b660efc..b74a659d5 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,1,0,,1,1 +ignore,1,1,1,0,1,1 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,,,z54,z54 diff --git a/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv index 0f7493592..fe8134452 100644 --- a/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv @@ -1,49 +1,49 @@ tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 -dr_shape_1,TN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,LA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,KS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,AR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,KY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NJ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,AZ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,CO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,FL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,IN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,VT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NM,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,SD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,OK,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,ID,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,WA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,AL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,DE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,CA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,UT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,ND,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,OR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,GA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,SC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,OH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,RI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,ME,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,WY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,MI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,WI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,TX,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,IL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,CT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,IA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 -dr_shape_1,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,TN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,LA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,KS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,AR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,KY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NJ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,AZ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,CO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,FL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,IN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,VT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NM,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,SD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,OK,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,ID,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,WA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,AL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,DE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,CA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,UT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,ND,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,OR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,GA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,SC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,OH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,RI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,ME,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,WY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,MI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,WI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,TX,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,IL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,CT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,IA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_1,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 diff --git a/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv index d109ece40..6f0cfd9e3 100644 --- a/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv @@ -1,49 +1,49 @@ tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 -dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv index d109ece40..6f0cfd9e3 100644 --- a/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv @@ -1,49 +1,49 @@ tech,r,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 -dr_shape_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 -dr_shape_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index a9547360b..d6790ec00 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -83,7 +83,7 @@ dr_shift_cost.csv,inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv,int(sw.GS dr_shift_capacity_scalar.csv,inputs/demand_response/dr_shift_cap_scalar_{dr_shiftscen}.csv,int(sw.GSw_DRShift) !=0,ignore,ignore,r,"tech,wide",,1,0,,,,,,done dr_shift_profile_decrease.h5,inputs/profiles_dr/dr_shift_decrease_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, dr_shift_profile_increase.h5,inputs/profiles_dr/dr_shift_increase_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, -dr_shift_profile_energy.h5,inputs/profiles_dr/dr_shift_profile_energy_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, +dr_shift_profile_energy.h5,inputs/profiles_dr/dr_shift_energy_profile_{dr_shiftscen}.h5,int(sw.GSw_DRShift) !=0,ignore,ignore,wide,"i,hour,year",,1,0,,,,,, e.csv,inputs/sets/e.csv,1,ignore,ignore,,,,,0,,,set,e,emission categories used in model, eall.csv,inputs/sets/eall.csv,1,ignore,ignore,,,,,,,,set,eall,emission categories used in reporting, emitrate.csv,inputs/emission_constraints/emitrate.csv,1,ignore,ignore,,,,,0,,,,,, From 4d8f045eed6b9d5a667ec51e1a1f0fb7eb2cfdfc Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Thu, 20 Aug 2026 17:32:26 -0600 Subject: [PATCH 16/25] add dr shape and shift back to tech subset table --- inputs/tech-subset-table.csv | 152 ++++++++++++++++++----------------- 1 file changed, 77 insertions(+), 75 deletions(-) diff --git a/inputs/tech-subset-table.csv b/inputs/tech-subset-table.csv index 088285f9c..b126fb4c3 100644 --- a/inputs/tech-subset-table.csv +++ b/inputs/tech-subset-table.csv @@ -1,75 +1,77 @@ -,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,NG_FUEL_CELL,CONV,TEMP_DERATE,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,H2_FUEL_CELL,H2_GEN,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED,GENTECH -can-imports,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,, -coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -coal-CCS_max,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -Coal-IGCC,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -coal-new,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -CoalOldScr,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -CoalOldUns,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -CofireNew,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -CofireOld,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES -Gas-CC,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CC-CCS-F1,,,,YES,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,,,,YES -Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CT,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -Gas-CT_aero,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -ng-fuel-cell,,,,YES,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES -h2-fuel-cell,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,YES -o-g-s,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,YES,,,YES -Nuclear,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES -Nuclear-SMR,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES -H2-CT,,,,,,,,,YES,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,,,,,,,YES -H2-CC,,,,,,,,YES,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,,,,,,,YES -biopower,YES,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES -geothermal,,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES -beccs_mod,YES,,,,,,,,,,YES,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES -beccs_max,YES,,,,,,,,,,YES,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES -Hydro,,,,,,,,,,,YES,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES -lfill-gas,,,,,,,,,,,YES,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,,YES -upv_1*upv_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES -pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES -pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES -pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES -wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES -wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES -csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES -hydSD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydSND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES -hydUD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydUND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES -hydNPD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydNPND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES -hydED,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES -hydEND,,,,,,,,,,,,,,,,,,,,,YES,,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,,,,,,,,,,,,,,,,,,,,,,,YES -geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES -egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,YES +,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,NG_FUEL_CELL,CONV,TEMP_DERATE,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,H2_FUEL_CELL,H2_GEN,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED,GENTECH,DR_SHAPE,DR_SHIFT +can-imports,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,, +coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS_max,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +Coal-IGCC,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-new,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CoalOldScr,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CoalOldUns,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CofireNew,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CofireOld,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +Gas-CC,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS-F1,,,,YES,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,,,,YES,, +Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CT,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CT_aero,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +ng-fuel-cell,,,,YES,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +h2-fuel-cell,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,YES,, +o-g-s,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,YES,,,YES,, +Nuclear,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, +Nuclear-SMR,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, +H2-CT,,,,,,,,,YES,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,,,,,,,YES,, +H2-CC,,,,,,,,YES,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,,,,,,,YES,, +biopower,YES,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +geothermal,,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +beccs_mod,YES,,,,,,,,,,YES,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +beccs_max,YES,,,,,,,,,,YES,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +Hydro,,,,,,,,,,,YES,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +lfill-gas,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,YES,, +battery_li,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +dr_shed_1*dr_shed_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,,, +dr_shift_1*dr_shift_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,YES +dr_shape_1*dr_shape_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,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,,YES,, +upv_1*upv_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydSD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydSND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydUD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydUND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydNPD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydNPND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydED,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydEND,,,,,,,,,,,,,,,,,,,,,YES,,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,,,,,,,,,,,,,,,,,,,,,,,YES,, +geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, +egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, From 471c260cb6e872e69637801c68fadac239b2acfa Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Tue, 8 Sep 2026 22:42:54 +0000 Subject: [PATCH 17/25] fixes after main merge --- cases_dr.csv | 2 +- .../degradation_annual_default.csv | 4 +- inputs/financials/financials_tech_ATB2023.csv | 205 +++++--- .../financials_tech_ATB2023_CRP20.csv | 82 --- inputs/financials/financials_tech_ATB2024.csv | 492 +++++------------- inputs/plant_characteristics/maxage.csv | 4 +- inputs/plant_characteristics/ramprate.csv | 4 +- inputs/sets/i.csv | 6 - inputs/tech-subset-table.csv | 152 +++--- inputs/techs/techs_default.csv | 4 +- inputs/userinput/ivt_default.csv | 4 +- inputs/userinput/ivt_small.csv | 4 +- inputs/userinput/ivt_step.csv | 4 +- .../input_processing/calc_financial_inputs.py | 3 +- .../hourly_writetimeseries.py | 5 +- reeds/input_processing/plantcostprep.py | 6 +- runreeds.py | 4 +- 17 files changed, 342 insertions(+), 643 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index b74a659d5..74edcef97 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,1,1,0,1,1 +ignore,1,0,0,1,0,0 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,,,z54,z54 diff --git a/inputs/degradation/degradation_annual_default.csv b/inputs/degradation/degradation_annual_default.csv index 605e84538..a92d57ea4 100644 --- a/inputs/degradation/degradation_annual_default.csv +++ b/inputs/degradation/degradation_annual_default.csv @@ -56,5 +56,5 @@ egs_allkm_1*egs_allkm_10,0 geohydro_allkm_1*geohydro_allkm_10,0 egs_nearfield_1*egs_nearfield_10,0 dr_shed_1*dr_shed_2,0 -dr_shape_1*dr_shape_5,0 -dr_shift_1*dr_shift_5,0 +dr_shape_1*dr_shape_2,0 +dr_shift_1*dr_shift_2,0 diff --git a/inputs/financials/financials_tech_ATB2023.csv b/inputs/financials/financials_tech_ATB2023.csv index 603d05898..3bf22608b 100644 --- a/inputs/financials/financials_tech_ATB2023.csv +++ b/inputs/financials/financials_tech_ATB2023.csv @@ -696,88 +696,6 @@ CSP,2047,5,30,1,-0.0129 CSP,2048,5,30,1,-0.0129 CSP,2049,5,30,1,-0.0129 CSP,2050,5,30,1,-0.0129 -EVMC_STORAGE,2010,7,15,1,0 -EVMC_STORAGE,2011,7,15,1,0 -EVMC_STORAGE,2012,7,15,1,0 -EVMC_STORAGE,2013,7,15,1,0 -EVMC_STORAGE,2014,7,15,1,0 -EVMC_STORAGE,2015,7,15,1,0 -EVMC_STORAGE,2016,7,15,1,0 -EVMC_STORAGE,2017,7,15,1,0 -EVMC_STORAGE,2018,7,15,1,0 -EVMC_STORAGE,2019,7,15,1,0 -EVMC_STORAGE,2020,7,15,1,0 -EVMC_STORAGE,2021,7,15,1,0 -EVMC_STORAGE,2022,7,15,1,0 -EVMC_STORAGE,2023,7,15,1,0 -EVMC_STORAGE,2024,7,15,1,0 -EVMC_STORAGE,2025,7,15,1,0 -EVMC_STORAGE,2026,7,15,1,0 -EVMC_STORAGE,2027,7,15,1,0 -EVMC_STORAGE,2028,7,15,1,0 -EVMC_STORAGE,2029,7,15,1,0 -EVMC_STORAGE,2030,7,15,1,0 -EVMC_STORAGE,2031,7,15,1,0 -EVMC_STORAGE,2032,7,15,1,0 -EVMC_STORAGE,2033,7,15,1,0 -EVMC_STORAGE,2034,7,15,1,0 -EVMC_STORAGE,2035,7,15,1,0 -EVMC_STORAGE,2036,7,15,1,0 -EVMC_STORAGE,2037,7,15,1,0 -EVMC_STORAGE,2038,7,15,1,0 -EVMC_STORAGE,2039,7,15,1,0 -EVMC_STORAGE,2040,7,15,1,0 -EVMC_STORAGE,2041,7,15,1,0 -EVMC_STORAGE,2042,7,15,1,0 -EVMC_STORAGE,2043,7,15,1,0 -EVMC_STORAGE,2044,7,15,1,0 -EVMC_STORAGE,2045,7,15,1,0 -EVMC_STORAGE,2046,7,15,1,0 -EVMC_STORAGE,2047,7,15,1,0 -EVMC_STORAGE,2048,7,15,1,0 -EVMC_STORAGE,2049,7,15,1,0 -EVMC_STORAGE,2050,7,15,1,0 -EVMC_SHAPE,2010,7,15,1,0 -EVMC_SHAPE,2011,7,15,1,0 -EVMC_SHAPE,2012,7,15,1,0 -EVMC_SHAPE,2013,7,15,1,0 -EVMC_SHAPE,2014,7,15,1,0 -EVMC_SHAPE,2015,7,15,1,0 -EVMC_SHAPE,2016,7,15,1,0 -EVMC_SHAPE,2017,7,15,1,0 -EVMC_SHAPE,2018,7,15,1,0 -EVMC_SHAPE,2019,7,15,1,0 -EVMC_SHAPE,2020,7,15,1,0 -EVMC_SHAPE,2021,7,15,1,0 -EVMC_SHAPE,2022,7,15,1,0 -EVMC_SHAPE,2023,7,15,1,0 -EVMC_SHAPE,2024,7,15,1,0 -EVMC_SHAPE,2025,7,15,1,0 -EVMC_SHAPE,2026,7,15,1,0 -EVMC_SHAPE,2027,7,15,1,0 -EVMC_SHAPE,2028,7,15,1,0 -EVMC_SHAPE,2029,7,15,1,0 -EVMC_SHAPE,2030,7,15,1,0 -EVMC_SHAPE,2031,7,15,1,0 -EVMC_SHAPE,2032,7,15,1,0 -EVMC_SHAPE,2033,7,15,1,0 -EVMC_SHAPE,2034,7,15,1,0 -EVMC_SHAPE,2035,7,15,1,0 -EVMC_SHAPE,2036,7,15,1,0 -EVMC_SHAPE,2037,7,15,1,0 -EVMC_SHAPE,2038,7,15,1,0 -EVMC_SHAPE,2039,7,15,1,0 -EVMC_SHAPE,2040,7,15,1,0 -EVMC_SHAPE,2041,7,15,1,0 -EVMC_SHAPE,2042,7,15,1,0 -EVMC_SHAPE,2043,7,15,1,0 -EVMC_SHAPE,2044,7,15,1,0 -EVMC_SHAPE,2045,7,15,1,0 -EVMC_SHAPE,2046,7,15,1,0 -EVMC_SHAPE,2047,7,15,1,0 -EVMC_SHAPE,2048,7,15,1,0 -EVMC_SHAPE,2049,7,15,1,0 -EVMC_SHAPE,2050,7,15,1,0 Gas-CC,2010,20,30,3B,0 Gas-CC,2011,20,30,3B,0 Gas-CC,2012,20,30,3B,0 @@ -2090,3 +2008,126 @@ dac_gas,2047,7,30,1,0 dac_gas,2048,7,30,1,0 dac_gas,2049,7,30,1,0 dac_gas,2050,7,30,1,0 +DR_SHED,2010,7,8,1,0 +DR_SHED,2011,7,8,1,0 +DR_SHED,2012,7,8,1,0 +DR_SHED,2013,7,8,1,0 +DR_SHED,2014,7,8,1,0 +DR_SHED,2015,7,8,1,0 +DR_SHED,2016,7,8,1,0 +DR_SHED,2017,7,8,1,0 +DR_SHED,2018,7,8,1,0 +DR_SHED,2019,7,8,1,0 +DR_SHED,2020,7,8,1,0 +DR_SHED,2021,7,8,1,0 +DR_SHED,2022,7,8,1,0 +DR_SHED,2023,7,8,1,0 +DR_SHED,2024,7,8,1,0 +DR_SHED,2025,7,8,1,0 +DR_SHED,2026,7,8,1,0 +DR_SHED,2027,7,8,1,0 +DR_SHED,2028,7,8,1,0 +DR_SHED,2029,7,8,1,0 +DR_SHED,2030,7,8,1,0 +DR_SHED,2031,7,8,1,0 +DR_SHED,2032,7,8,1,0 +DR_SHED,2033,7,8,1,0 +DR_SHED,2034,7,8,1,0 +DR_SHED,2035,7,8,1,0 +DR_SHED,2036,7,8,1,0 +DR_SHED,2037,7,8,1,0 +DR_SHED,2038,7,8,1,0 +DR_SHED,2039,7,8,1,0 +DR_SHED,2040,7,8,1,0 +DR_SHED,2041,7,8,1,0 +DR_SHED,2042,7,8,1,0 +DR_SHED,2043,7,8,1,0 +DR_SHED,2044,7,8,1,0 +DR_SHED,2045,7,8,1,0 +DR_SHED,2046,7,8,1,0 +DR_SHED,2047,7,8,1,0 +DR_SHED,2048,7,8,1,0 +DR_SHED,2049,7,8,1,0 +DR_SHED,2050,7,8,1,0 +DR_SHAPE,2010,7,15,1,0 +DR_SHAPE,2011,7,15,1,0 +DR_SHAPE,2012,7,15,1,0 +DR_SHAPE,2013,7,15,1,0 +DR_SHAPE,2014,7,15,1,0 +DR_SHAPE,2015,7,15,1,0 +DR_SHAPE,2016,7,15,1,0 +DR_SHAPE,2017,7,15,1,0 +DR_SHAPE,2018,7,15,1,0 +DR_SHAPE,2019,7,15,1,0 +DR_SHAPE,2020,7,15,1,0 +DR_SHAPE,2021,7,15,1,0 +DR_SHAPE,2022,7,15,1,0 +DR_SHAPE,2023,7,15,1,0 +DR_SHAPE,2024,7,15,1,0 +DR_SHAPE,2025,7,15,1,0 +DR_SHAPE,2026,7,15,1,0 +DR_SHAPE,2027,7,15,1,0 +DR_SHAPE,2028,7,15,1,0 +DR_SHAPE,2029,7,15,1,0 +DR_SHAPE,2030,7,15,1,0 +DR_SHAPE,2031,7,15,1,0 +DR_SHAPE,2032,7,15,1,0 +DR_SHAPE,2033,7,15,1,0 +DR_SHAPE,2034,7,15,1,0 +DR_SHAPE,2035,7,15,1,0 +DR_SHAPE,2036,7,15,1,0 +DR_SHAPE,2037,7,15,1,0 +DR_SHAPE,2038,7,15,1,0 +DR_SHAPE,2039,7,15,1,0 +DR_SHAPE,2040,7,15,1,0 +DR_SHAPE,2041,7,15,1,0 +DR_SHAPE,2042,7,15,1,0 +DR_SHAPE,2043,7,15,1,0 +DR_SHAPE,2044,7,15,1,0 +DR_SHAPE,2045,7,15,1,0 +DR_SHAPE,2046,7,15,1,0 +DR_SHAPE,2047,7,15,1,0 +DR_SHAPE,2048,7,15,1,0 +DR_SHAPE,2049,7,15,1,0 +DR_SHAPE,2050,7,15,1,0 +DR_SHIFT,2010,7,15,1,0 +DR_SHIFT,2011,7,15,1,0 +DR_SHIFT,2012,7,15,1,0 +DR_SHIFT,2013,7,15,1,0 +DR_SHIFT,2014,7,15,1,0 +DR_SHIFT,2015,7,15,1,0 +DR_SHIFT,2016,7,15,1,0 +DR_SHIFT,2017,7,15,1,0 +DR_SHIFT,2018,7,15,1,0 +DR_SHIFT,2019,7,15,1,0 +DR_SHIFT,2020,7,15,1,0 +DR_SHIFT,2021,7,15,1,0 +DR_SHIFT,2022,7,15,1,0 +DR_SHIFT,2023,7,15,1,0 +DR_SHIFT,2024,7,15,1,0 +DR_SHIFT,2025,7,15,1,0 +DR_SHIFT,2026,7,15,1,0 +DR_SHIFT,2027,7,15,1,0 +DR_SHIFT,2028,7,15,1,0 +DR_SHIFT,2029,7,15,1,0 +DR_SHIFT,2030,7,15,1,0 +DR_SHIFT,2031,7,15,1,0 +DR_SHIFT,2032,7,15,1,0 +DR_SHIFT,2033,7,15,1,0 +DR_SHIFT,2034,7,15,1,0 +DR_SHIFT,2035,7,15,1,0 +DR_SHIFT,2036,7,15,1,0 +DR_SHIFT,2037,7,15,1,0 +DR_SHIFT,2038,7,15,1,0 +DR_SHIFT,2039,7,15,1,0 +DR_SHIFT,2040,7,15,1,0 +DR_SHIFT,2041,7,15,1,0 +DR_SHIFT,2042,7,15,1,0 +DR_SHIFT,2043,7,15,1,0 +DR_SHIFT,2044,7,15,1,0 +DR_SHIFT,2045,7,15,1,0 +DR_SHIFT,2046,7,15,1,0 +DR_SHIFT,2047,7,15,1,0 +DR_SHIFT,2048,7,15,1,0 +DR_SHIFT,2049,7,15,1,0 +DR_SHIFT,2050,7,15,1,0 diff --git a/inputs/financials/financials_tech_ATB2023_CRP20.csv b/inputs/financials/financials_tech_ATB2023_CRP20.csv index dd2d761dd..991d6baaa 100644 --- a/inputs/financials/financials_tech_ATB2023_CRP20.csv +++ b/inputs/financials/financials_tech_ATB2023_CRP20.csv @@ -696,88 +696,6 @@ CSP,2047,5,20,1,-0.0129 CSP,2048,5,20,1,-0.0129 CSP,2049,5,20,1,-0.0129 CSP,2050,5,20,1,-0.0129 -EVMC_STORAGE,2010,7,15,1,0 -EVMC_STORAGE,2011,7,15,1,0 -EVMC_STORAGE,2012,7,15,1,0 -EVMC_STORAGE,2013,7,15,1,0 -EVMC_STORAGE,2014,7,15,1,0 -EVMC_STORAGE,2015,7,15,1,0 -EVMC_STORAGE,2016,7,15,1,0 -EVMC_STORAGE,2017,7,15,1,0 -EVMC_STORAGE,2018,7,15,1,0 -EVMC_STORAGE,2019,7,15,1,0 -EVMC_STORAGE,2020,7,15,1,0 -EVMC_STORAGE,2021,7,15,1,0 -EVMC_STORAGE,2022,7,15,1,0 -EVMC_STORAGE,2023,7,15,1,0 -EVMC_STORAGE,2024,7,15,1,0 -EVMC_STORAGE,2025,7,15,1,0 -EVMC_STORAGE,2026,7,15,1,0 -EVMC_STORAGE,2027,7,15,1,0 -EVMC_STORAGE,2028,7,15,1,0 -EVMC_STORAGE,2029,7,15,1,0 -EVMC_STORAGE,2030,7,15,1,0 -EVMC_STORAGE,2031,7,15,1,0 -EVMC_STORAGE,2032,7,15,1,0 -EVMC_STORAGE,2033,7,15,1,0 -EVMC_STORAGE,2034,7,15,1,0 -EVMC_STORAGE,2035,7,15,1,0 -EVMC_STORAGE,2036,7,15,1,0 -EVMC_STORAGE,2037,7,15,1,0 -EVMC_STORAGE,2038,7,15,1,0 -EVMC_STORAGE,2039,7,15,1,0 -EVMC_STORAGE,2040,7,15,1,0 -EVMC_STORAGE,2041,7,15,1,0 -EVMC_STORAGE,2042,7,15,1,0 -EVMC_STORAGE,2043,7,15,1,0 -EVMC_STORAGE,2044,7,15,1,0 -EVMC_STORAGE,2045,7,15,1,0 -EVMC_STORAGE,2046,7,15,1,0 -EVMC_STORAGE,2047,7,15,1,0 -EVMC_STORAGE,2048,7,15,1,0 -EVMC_STORAGE,2049,7,15,1,0 -EVMC_STORAGE,2050,7,15,1,0 -EVMC_SHAPE,2010,7,15,1,0 -EVMC_SHAPE,2011,7,15,1,0 -EVMC_SHAPE,2012,7,15,1,0 -EVMC_SHAPE,2013,7,15,1,0 -EVMC_SHAPE,2014,7,15,1,0 -EVMC_SHAPE,2015,7,15,1,0 -EVMC_SHAPE,2016,7,15,1,0 -EVMC_SHAPE,2017,7,15,1,0 -EVMC_SHAPE,2018,7,15,1,0 -EVMC_SHAPE,2019,7,15,1,0 -EVMC_SHAPE,2020,7,15,1,0 -EVMC_SHAPE,2021,7,15,1,0 -EVMC_SHAPE,2022,7,15,1,0 -EVMC_SHAPE,2023,7,15,1,0 -EVMC_SHAPE,2024,7,15,1,0 -EVMC_SHAPE,2025,7,15,1,0 -EVMC_SHAPE,2026,7,15,1,0 -EVMC_SHAPE,2027,7,15,1,0 -EVMC_SHAPE,2028,7,15,1,0 -EVMC_SHAPE,2029,7,15,1,0 -EVMC_SHAPE,2030,7,15,1,0 -EVMC_SHAPE,2031,7,15,1,0 -EVMC_SHAPE,2032,7,15,1,0 -EVMC_SHAPE,2033,7,15,1,0 -EVMC_SHAPE,2034,7,15,1,0 -EVMC_SHAPE,2035,7,15,1,0 -EVMC_SHAPE,2036,7,15,1,0 -EVMC_SHAPE,2037,7,15,1,0 -EVMC_SHAPE,2038,7,15,1,0 -EVMC_SHAPE,2039,7,15,1,0 -EVMC_SHAPE,2040,7,15,1,0 -EVMC_SHAPE,2041,7,15,1,0 -EVMC_SHAPE,2042,7,15,1,0 -EVMC_SHAPE,2043,7,15,1,0 -EVMC_SHAPE,2044,7,15,1,0 -EVMC_SHAPE,2045,7,15,1,0 -EVMC_SHAPE,2046,7,15,1,0 -EVMC_SHAPE,2047,7,15,1,0 -EVMC_SHAPE,2048,7,15,1,0 -EVMC_SHAPE,2049,7,15,1,0 -EVMC_SHAPE,2050,7,15,1,0 Gas-CC,2010,20,20,3B,0 Gas-CC,2011,20,20,3B,0 Gas-CC,2012,20,20,3B,0 diff --git a/inputs/financials/financials_tech_ATB2024.csv b/inputs/financials/financials_tech_ATB2024.csv index d3ee46d65..7b172f0d2 100644 --- a/inputs/financials/financials_tech_ATB2024.csv +++ b/inputs/financials/financials_tech_ATB2024.csv @@ -778,375 +778,129 @@ dac_gas,2047,7,30,1,0 dac_gas,2048,7,30,1,0 dac_gas,2049,7,30,1,0 dac_gas,2050,7,30,1,0 -DR_SHED,2010,can,7,8,1,0 -DR_SHED,2011,can,7,8,1,0 -DR_SHED,2012,can,7,8,1,0 -DR_SHED,2013,can,7,8,1,0 -DR_SHED,2014,can,7,8,1,0 -DR_SHED,2015,can,7,8,1,0 -DR_SHED,2016,can,7,8,1,0 -DR_SHED,2017,can,7,8,1,0 -DR_SHED,2018,can,7,8,1,0 -DR_SHED,2019,can,7,8,1,0 -DR_SHED,2020,can,7,8,1,0 -DR_SHED,2021,can,7,8,1,0 -DR_SHED,2022,can,7,8,1,0 -DR_SHED,2023,can,7,8,1,0 -DR_SHED,2024,can,7,8,1,0 -DR_SHED,2025,can,7,8,1,0 -DR_SHED,2026,can,7,8,1,0 -DR_SHED,2027,can,7,8,1,0 -DR_SHED,2028,can,7,8,1,0 -DR_SHED,2029,can,7,8,1,0 -DR_SHED,2030,can,7,8,1,0 -DR_SHED,2031,can,7,8,1,0 -DR_SHED,2032,can,7,8,1,0 -DR_SHED,2033,can,7,8,1,0 -DR_SHED,2034,can,7,8,1,0 -DR_SHED,2035,can,7,8,1,0 -DR_SHED,2036,can,7,8,1,0 -DR_SHED,2037,can,7,8,1,0 -DR_SHED,2038,can,7,8,1,0 -DR_SHED,2039,can,7,8,1,0 -DR_SHED,2040,can,7,8,1,0 -DR_SHED,2041,can,7,8,1,0 -DR_SHED,2042,can,7,8,1,0 -DR_SHED,2043,can,7,8,1,0 -DR_SHED,2044,can,7,8,1,0 -DR_SHED,2045,can,7,8,1,0 -DR_SHED,2046,can,7,8,1,0 -DR_SHED,2047,can,7,8,1,0 -DR_SHED,2048,can,7,8,1,0 -DR_SHED,2049,can,7,8,1,0 -DR_SHED,2050,can,7,8,1,0 -DR_SHED,2010,mex,7,8,1,0 -DR_SHED,2011,mex,7,8,1,0 -DR_SHED,2012,mex,7,8,1,0 -DR_SHED,2013,mex,7,8,1,0 -DR_SHED,2014,mex,7,8,1,0 -DR_SHED,2015,mex,7,8,1,0 -DR_SHED,2016,mex,7,8,1,0 -DR_SHED,2017,mex,7,8,1,0 -DR_SHED,2018,mex,7,8,1,0 -DR_SHED,2019,mex,7,8,1,0 -DR_SHED,2020,mex,7,8,1,0 -DR_SHED,2021,mex,7,8,1,0 -DR_SHED,2022,mex,7,8,1,0 -DR_SHED,2023,mex,7,8,1,0 -DR_SHED,2024,mex,7,8,1,0 -DR_SHED,2025,mex,7,8,1,0 -DR_SHED,2026,mex,7,8,1,0 -DR_SHED,2027,mex,7,8,1,0 -DR_SHED,2028,mex,7,8,1,0 -DR_SHED,2029,mex,7,8,1,0 -DR_SHED,2030,mex,7,8,1,0 -DR_SHED,2031,mex,7,8,1,0 -DR_SHED,2032,mex,7,8,1,0 -DR_SHED,2033,mex,7,8,1,0 -DR_SHED,2034,mex,7,8,1,0 -DR_SHED,2035,mex,7,8,1,0 -DR_SHED,2036,mex,7,8,1,0 -DR_SHED,2037,mex,7,8,1,0 -DR_SHED,2038,mex,7,8,1,0 -DR_SHED,2039,mex,7,8,1,0 -DR_SHED,2040,mex,7,8,1,0 -DR_SHED,2041,mex,7,8,1,0 -DR_SHED,2042,mex,7,8,1,0 -DR_SHED,2043,mex,7,8,1,0 -DR_SHED,2044,mex,7,8,1,0 -DR_SHED,2045,mex,7,8,1,0 -DR_SHED,2046,mex,7,8,1,0 -DR_SHED,2047,mex,7,8,1,0 -DR_SHED,2048,mex,7,8,1,0 -DR_SHED,2049,mex,7,8,1,0 -DR_SHED,2050,mex,7,8,1,0 -DR_SHED,2010,usa,7,8,1,0 -DR_SHED,2011,usa,7,8,1,0 -DR_SHED,2012,usa,7,8,1,0 -DR_SHED,2013,usa,7,8,1,0 -DR_SHED,2014,usa,7,8,1,0 -DR_SHED,2015,usa,7,8,1,0 -DR_SHED,2016,usa,7,8,1,0 -DR_SHED,2017,usa,7,8,1,0 -DR_SHED,2018,usa,7,8,1,0 -DR_SHED,2019,usa,7,8,1,0 -DR_SHED,2020,usa,7,8,1,0 -DR_SHED,2021,usa,7,8,1,0 -DR_SHED,2022,usa,7,8,1,0 -DR_SHED,2023,usa,7,8,1,0 -DR_SHED,2024,usa,7,8,1,0 -DR_SHED,2025,usa,7,8,1,0 -DR_SHED,2026,usa,7,8,1,0 -DR_SHED,2027,usa,7,8,1,0 -DR_SHED,2028,usa,7,8,1,0 -DR_SHED,2029,usa,7,8,1,0 -DR_SHED,2030,usa,7,8,1,0 -DR_SHED,2031,usa,7,8,1,0 -DR_SHED,2032,usa,7,8,1,0 -DR_SHED,2033,usa,7,8,1,0 -DR_SHED,2034,usa,7,8,1,0 -DR_SHED,2035,usa,7,8,1,0 -DR_SHED,2036,usa,7,8,1,0 -DR_SHED,2037,usa,7,8,1,0 -DR_SHED,2038,usa,7,8,1,0 -DR_SHED,2039,usa,7,8,1,0 -DR_SHED,2040,usa,7,8,1,0 -DR_SHED,2041,usa,7,8,1,0 -DR_SHED,2042,usa,7,8,1,0 -DR_SHED,2043,usa,7,8,1,0 -DR_SHED,2044,usa,7,8,1,0 -DR_SHED,2045,usa,7,8,1,0 -DR_SHED,2046,usa,7,8,1,0 -DR_SHED,2047,usa,7,8,1,0 -DR_SHED,2048,usa,7,8,1,0 -DR_SHED,2049,usa,7,8,1,0 -DR_SHED,2050,usa,7,8,1,0 -DR_SHAPE,2010,can,7,15,1,0 -DR_SHAPE,2011,can,7,15,1,0 -DR_SHAPE,2012,can,7,15,1,0 -DR_SHAPE,2013,can,7,15,1,0 -DR_SHAPE,2014,can,7,15,1,0 -DR_SHAPE,2015,can,7,15,1,0 -DR_SHAPE,2016,can,7,15,1,0 -DR_SHAPE,2017,can,7,15,1,0 -DR_SHAPE,2018,can,7,15,1,0 -DR_SHAPE,2019,can,7,15,1,0 -DR_SHAPE,2020,can,7,15,1,0 -DR_SHAPE,2021,can,7,15,1,0 -DR_SHAPE,2022,can,7,15,1,0 -DR_SHAPE,2023,can,7,15,1,0 -DR_SHAPE,2024,can,7,15,1,0 -DR_SHAPE,2025,can,7,15,1,0 -DR_SHAPE,2026,can,7,15,1,0 -DR_SHAPE,2027,can,7,15,1,0 -DR_SHAPE,2028,can,7,15,1,0 -DR_SHAPE,2029,can,7,15,1,0 -DR_SHAPE,2030,can,7,15,1,0 -DR_SHAPE,2031,can,7,15,1,0 -DR_SHAPE,2032,can,7,15,1,0 -DR_SHAPE,2033,can,7,15,1,0 -DR_SHAPE,2034,can,7,15,1,0 -DR_SHAPE,2035,can,7,15,1,0 -DR_SHAPE,2036,can,7,15,1,0 -DR_SHAPE,2037,can,7,15,1,0 -DR_SHAPE,2038,can,7,15,1,0 -DR_SHAPE,2039,can,7,15,1,0 -DR_SHAPE,2040,can,7,15,1,0 -DR_SHAPE,2041,can,7,15,1,0 -DR_SHAPE,2042,can,7,15,1,0 -DR_SHAPE,2043,can,7,15,1,0 -DR_SHAPE,2044,can,7,15,1,0 -DR_SHAPE,2045,can,7,15,1,0 -DR_SHAPE,2046,can,7,15,1,0 -DR_SHAPE,2047,can,7,15,1,0 -DR_SHAPE,2048,can,7,15,1,0 -DR_SHAPE,2049,can,7,15,1,0 -DR_SHAPE,2050,can,7,15,1,0 -DR_SHAPE,2010,mex,7,15,1,0 -DR_SHAPE,2011,mex,7,15,1,0 -DR_SHAPE,2012,mex,7,15,1,0 -DR_SHAPE,2013,mex,7,15,1,0 -DR_SHAPE,2014,mex,7,15,1,0 -DR_SHAPE,2015,mex,7,15,1,0 -DR_SHAPE,2016,mex,7,15,1,0 -DR_SHAPE,2017,mex,7,15,1,0 -DR_SHAPE,2018,mex,7,15,1,0 -DR_SHAPE,2019,mex,7,15,1,0 -DR_SHAPE,2020,mex,7,15,1,0 -DR_SHAPE,2021,mex,7,15,1,0 -DR_SHAPE,2022,mex,7,15,1,0 -DR_SHAPE,2023,mex,7,15,1,0 -DR_SHAPE,2024,mex,7,15,1,0 -DR_SHAPE,2025,mex,7,15,1,0 -DR_SHAPE,2026,mex,7,15,1,0 -DR_SHAPE,2027,mex,7,15,1,0 -DR_SHAPE,2028,mex,7,15,1,0 -DR_SHAPE,2029,mex,7,15,1,0 -DR_SHAPE,2030,mex,7,15,1,0 -DR_SHAPE,2031,mex,7,15,1,0 -DR_SHAPE,2032,mex,7,15,1,0 -DR_SHAPE,2033,mex,7,15,1,0 -DR_SHAPE,2034,mex,7,15,1,0 -DR_SHAPE,2035,mex,7,15,1,0 -DR_SHAPE,2036,mex,7,15,1,0 -DR_SHAPE,2037,mex,7,15,1,0 -DR_SHAPE,2038,mex,7,15,1,0 -DR_SHAPE,2039,mex,7,15,1,0 -DR_SHAPE,2040,mex,7,15,1,0 -DR_SHAPE,2041,mex,7,15,1,0 -DR_SHAPE,2042,mex,7,15,1,0 -DR_SHAPE,2043,mex,7,15,1,0 -DR_SHAPE,2044,mex,7,15,1,0 -DR_SHAPE,2045,mex,7,15,1,0 -DR_SHAPE,2046,mex,7,15,1,0 -DR_SHAPE,2047,mex,7,15,1,0 -DR_SHAPE,2048,mex,7,15,1,0 -DR_SHAPE,2049,mex,7,15,1,0 -DR_SHAPE,2050,mex,7,15,1,0 -DR_SHAPE,2010,usa,7,15,1,0 -DR_SHAPE,2011,usa,7,15,1,0 -DR_SHAPE,2012,usa,7,15,1,0 -DR_SHAPE,2013,usa,7,15,1,0 -DR_SHAPE,2014,usa,7,15,1,0 -DR_SHAPE,2015,usa,7,15,1,0 -DR_SHAPE,2016,usa,7,15,1,0 -DR_SHAPE,2017,usa,7,15,1,0 -DR_SHAPE,2018,usa,7,15,1,0 -DR_SHAPE,2019,usa,7,15,1,0 -DR_SHAPE,2020,usa,7,15,1,0 -DR_SHAPE,2021,usa,7,15,1,0 -DR_SHAPE,2022,usa,7,15,1,0 -DR_SHAPE,2023,usa,7,15,1,0 -DR_SHAPE,2024,usa,7,15,1,0 -DR_SHAPE,2025,usa,7,15,1,0 -DR_SHAPE,2026,usa,7,15,1,0 -DR_SHAPE,2027,usa,7,15,1,0 -DR_SHAPE,2028,usa,7,15,1,0 -DR_SHAPE,2029,usa,7,15,1,0 -DR_SHAPE,2030,usa,7,15,1,0 -DR_SHAPE,2031,usa,7,15,1,0 -DR_SHAPE,2032,usa,7,15,1,0 -DR_SHAPE,2033,usa,7,15,1,0 -DR_SHAPE,2034,usa,7,15,1,0 -DR_SHAPE,2035,usa,7,15,1,0 -DR_SHAPE,2036,usa,7,15,1,0 -DR_SHAPE,2037,usa,7,15,1,0 -DR_SHAPE,2038,usa,7,15,1,0 -DR_SHAPE,2039,usa,7,15,1,0 -DR_SHAPE,2040,usa,7,15,1,0 -DR_SHAPE,2041,usa,7,15,1,0 -DR_SHAPE,2042,usa,7,15,1,0 -DR_SHAPE,2043,usa,7,15,1,0 -DR_SHAPE,2044,usa,7,15,1,0 -DR_SHAPE,2045,usa,7,15,1,0 -DR_SHAPE,2046,usa,7,15,1,0 -DR_SHAPE,2047,usa,7,15,1,0 -DR_SHAPE,2048,usa,7,15,1,0 -DR_SHAPE,2049,usa,7,15,1,0 -DR_SHAPE,2050,usa,7,15,1,0 -DR_SHIFT,2010,can,7,15,1,0 -DR_SHIFT,2011,can,7,15,1,0 -DR_SHIFT,2012,can,7,15,1,0 -DR_SHIFT,2013,can,7,15,1,0 -DR_SHIFT,2014,can,7,15,1,0 -DR_SHIFT,2015,can,7,15,1,0 -DR_SHIFT,2016,can,7,15,1,0 -DR_SHIFT,2017,can,7,15,1,0 -DR_SHIFT,2018,can,7,15,1,0 -DR_SHIFT,2019,can,7,15,1,0 -DR_SHIFT,2020,can,7,15,1,0 -DR_SHIFT,2021,can,7,15,1,0 -DR_SHIFT,2022,can,7,15,1,0 -DR_SHIFT,2023,can,7,15,1,0 -DR_SHIFT,2024,can,7,15,1,0 -DR_SHIFT,2025,can,7,15,1,0 -DR_SHIFT,2026,can,7,15,1,0 -DR_SHIFT,2027,can,7,15,1,0 -DR_SHIFT,2028,can,7,15,1,0 -DR_SHIFT,2029,can,7,15,1,0 -DR_SHIFT,2030,can,7,15,1,0 -DR_SHIFT,2031,can,7,15,1,0 -DR_SHIFT,2032,can,7,15,1,0 -DR_SHIFT,2033,can,7,15,1,0 -DR_SHIFT,2034,can,7,15,1,0 -DR_SHIFT,2035,can,7,15,1,0 -DR_SHIFT,2036,can,7,15,1,0 -DR_SHIFT,2037,can,7,15,1,0 -DR_SHIFT,2038,can,7,15,1,0 -DR_SHIFT,2039,can,7,15,1,0 -DR_SHIFT,2040,can,7,15,1,0 -DR_SHIFT,2041,can,7,15,1,0 -DR_SHIFT,2042,can,7,15,1,0 -DR_SHIFT,2043,can,7,15,1,0 -DR_SHIFT,2044,can,7,15,1,0 -DR_SHIFT,2045,can,7,15,1,0 -DR_SHIFT,2046,can,7,15,1,0 -DR_SHIFT,2047,can,7,15,1,0 -DR_SHIFT,2048,can,7,15,1,0 -DR_SHIFT,2049,can,7,15,1,0 -DR_SHIFT,2050,can,7,15,1,0 -DR_SHIFT,2010,mex,7,15,1,0 -DR_SHIFT,2011,mex,7,15,1,0 -DR_SHIFT,2012,mex,7,15,1,0 -DR_SHIFT,2013,mex,7,15,1,0 -DR_SHIFT,2014,mex,7,15,1,0 -DR_SHIFT,2015,mex,7,15,1,0 -DR_SHIFT,2016,mex,7,15,1,0 -DR_SHIFT,2017,mex,7,15,1,0 -DR_SHIFT,2018,mex,7,15,1,0 -DR_SHIFT,2019,mex,7,15,1,0 -DR_SHIFT,2020,mex,7,15,1,0 -DR_SHIFT,2021,mex,7,15,1,0 -DR_SHIFT,2022,mex,7,15,1,0 -DR_SHIFT,2023,mex,7,15,1,0 -DR_SHIFT,2024,mex,7,15,1,0 -DR_SHIFT,2025,mex,7,15,1,0 -DR_SHIFT,2026,mex,7,15,1,0 -DR_SHIFT,2027,mex,7,15,1,0 -DR_SHIFT,2028,mex,7,15,1,0 -DR_SHIFT,2029,mex,7,15,1,0 -DR_SHIFT,2030,mex,7,15,1,0 -DR_SHIFT,2031,mex,7,15,1,0 -DR_SHIFT,2032,mex,7,15,1,0 -DR_SHIFT,2033,mex,7,15,1,0 -DR_SHIFT,2034,mex,7,15,1,0 -DR_SHIFT,2035,mex,7,15,1,0 -DR_SHIFT,2036,mex,7,15,1,0 -DR_SHIFT,2037,mex,7,15,1,0 -DR_SHIFT,2038,mex,7,15,1,0 -DR_SHIFT,2039,mex,7,15,1,0 -DR_SHIFT,2040,mex,7,15,1,0 -DR_SHIFT,2041,mex,7,15,1,0 -DR_SHIFT,2042,mex,7,15,1,0 -DR_SHIFT,2043,mex,7,15,1,0 -DR_SHIFT,2044,mex,7,15,1,0 -DR_SHIFT,2045,mex,7,15,1,0 -DR_SHIFT,2046,mex,7,15,1,0 -DR_SHIFT,2047,mex,7,15,1,0 -DR_SHIFT,2048,mex,7,15,1,0 -DR_SHIFT,2049,mex,7,15,1,0 -DR_SHIFT,2050,mex,7,15,1,0 -DR_SHIFT,2010,usa,7,15,1,0 -DR_SHIFT,2011,usa,7,15,1,0 -DR_SHIFT,2012,usa,7,15,1,0 -DR_SHIFT,2013,usa,7,15,1,0 -DR_SHIFT,2014,usa,7,15,1,0 -DR_SHIFT,2015,usa,7,15,1,0 -DR_SHIFT,2016,usa,7,15,1,0 -DR_SHIFT,2017,usa,7,15,1,0 -DR_SHIFT,2018,usa,7,15,1,0 -DR_SHIFT,2019,usa,7,15,1,0 -DR_SHIFT,2020,usa,7,15,1,0 -DR_SHIFT,2021,usa,7,15,1,0 -DR_SHIFT,2022,usa,7,15,1,0 -DR_SHIFT,2023,usa,7,15,1,0 -DR_SHIFT,2024,usa,7,15,1,0 -DR_SHIFT,2025,usa,7,15,1,0 -DR_SHIFT,2026,usa,7,15,1,0 -DR_SHIFT,2027,usa,7,15,1,0 -DR_SHIFT,2028,usa,7,15,1,0 -DR_SHIFT,2029,usa,7,15,1,0 -DR_SHIFT,2030,usa,7,15,1,0 -DR_SHIFT,2031,usa,7,15,1,0 -DR_SHIFT,2032,usa,7,15,1,0 -DR_SHIFT,2033,usa,7,15,1,0 -DR_SHIFT,2034,usa,7,15,1,0 -DR_SHIFT,2035,usa,7,15,1,0 -DR_SHIFT,2036,usa,7,15,1,0 -DR_SHIFT,2037,usa,7,15,1,0 -DR_SHIFT,2038,usa,7,15,1,0 -DR_SHIFT,2039,usa,7,15,1,0 -DR_SHIFT,2040,usa,7,15,1,0 -DR_SHIFT,2041,usa,7,15,1,0 -DR_SHIFT,2042,usa,7,15,1,0 -DR_SHIFT,2043,usa,7,15,1,0 -DR_SHIFT,2044,usa,7,15,1,0 -DR_SHIFT,2045,usa,7,15,1,0 -DR_SHIFT,2046,usa,7,15,1,0 -DR_SHIFT,2047,usa,7,15,1,0 -DR_SHIFT,2048,usa,7,15,1,0 -DR_SHIFT,2049,usa,7,15,1,0 -DR_SHIFT,2050,usa,7,15,1,0 +DR_SHED,2010,7,8,1,0 +DR_SHED,2011,7,8,1,0 +DR_SHED,2012,7,8,1,0 +DR_SHED,2013,7,8,1,0 +DR_SHED,2014,7,8,1,0 +DR_SHED,2015,7,8,1,0 +DR_SHED,2016,7,8,1,0 +DR_SHED,2017,7,8,1,0 +DR_SHED,2018,7,8,1,0 +DR_SHED,2019,7,8,1,0 +DR_SHED,2020,7,8,1,0 +DR_SHED,2021,7,8,1,0 +DR_SHED,2022,7,8,1,0 +DR_SHED,2023,7,8,1,0 +DR_SHED,2024,7,8,1,0 +DR_SHED,2025,7,8,1,0 +DR_SHED,2026,7,8,1,0 +DR_SHED,2027,7,8,1,0 +DR_SHED,2028,7,8,1,0 +DR_SHED,2029,7,8,1,0 +DR_SHED,2030,7,8,1,0 +DR_SHED,2031,7,8,1,0 +DR_SHED,2032,7,8,1,0 +DR_SHED,2033,7,8,1,0 +DR_SHED,2034,7,8,1,0 +DR_SHED,2035,7,8,1,0 +DR_SHED,2036,7,8,1,0 +DR_SHED,2037,7,8,1,0 +DR_SHED,2038,7,8,1,0 +DR_SHED,2039,7,8,1,0 +DR_SHED,2040,7,8,1,0 +DR_SHED,2041,7,8,1,0 +DR_SHED,2042,7,8,1,0 +DR_SHED,2043,7,8,1,0 +DR_SHED,2044,7,8,1,0 +DR_SHED,2045,7,8,1,0 +DR_SHED,2046,7,8,1,0 +DR_SHED,2047,7,8,1,0 +DR_SHED,2048,7,8,1,0 +DR_SHED,2049,7,8,1,0 +DR_SHED,2050,7,8,1,0 +DR_SHAPE,2010,7,15,1,0 +DR_SHAPE,2011,7,15,1,0 +DR_SHAPE,2012,7,15,1,0 +DR_SHAPE,2013,7,15,1,0 +DR_SHAPE,2014,7,15,1,0 +DR_SHAPE,2015,7,15,1,0 +DR_SHAPE,2016,7,15,1,0 +DR_SHAPE,2017,7,15,1,0 +DR_SHAPE,2018,7,15,1,0 +DR_SHAPE,2019,7,15,1,0 +DR_SHAPE,2020,7,15,1,0 +DR_SHAPE,2021,7,15,1,0 +DR_SHAPE,2022,7,15,1,0 +DR_SHAPE,2023,7,15,1,0 +DR_SHAPE,2024,7,15,1,0 +DR_SHAPE,2025,7,15,1,0 +DR_SHAPE,2026,7,15,1,0 +DR_SHAPE,2027,7,15,1,0 +DR_SHAPE,2028,7,15,1,0 +DR_SHAPE,2029,7,15,1,0 +DR_SHAPE,2030,7,15,1,0 +DR_SHAPE,2031,7,15,1,0 +DR_SHAPE,2032,7,15,1,0 +DR_SHAPE,2033,7,15,1,0 +DR_SHAPE,2034,7,15,1,0 +DR_SHAPE,2035,7,15,1,0 +DR_SHAPE,2036,7,15,1,0 +DR_SHAPE,2037,7,15,1,0 +DR_SHAPE,2038,7,15,1,0 +DR_SHAPE,2039,7,15,1,0 +DR_SHAPE,2040,7,15,1,0 +DR_SHAPE,2041,7,15,1,0 +DR_SHAPE,2042,7,15,1,0 +DR_SHAPE,2043,7,15,1,0 +DR_SHAPE,2044,7,15,1,0 +DR_SHAPE,2045,7,15,1,0 +DR_SHAPE,2046,7,15,1,0 +DR_SHAPE,2047,7,15,1,0 +DR_SHAPE,2048,7,15,1,0 +DR_SHAPE,2049,7,15,1,0 +DR_SHAPE,2050,7,15,1,0 +DR_SHIFT,2010,7,15,1,0 +DR_SHIFT,2011,7,15,1,0 +DR_SHIFT,2012,7,15,1,0 +DR_SHIFT,2013,7,15,1,0 +DR_SHIFT,2014,7,15,1,0 +DR_SHIFT,2015,7,15,1,0 +DR_SHIFT,2016,7,15,1,0 +DR_SHIFT,2017,7,15,1,0 +DR_SHIFT,2018,7,15,1,0 +DR_SHIFT,2019,7,15,1,0 +DR_SHIFT,2020,7,15,1,0 +DR_SHIFT,2021,7,15,1,0 +DR_SHIFT,2022,7,15,1,0 +DR_SHIFT,2023,7,15,1,0 +DR_SHIFT,2024,7,15,1,0 +DR_SHIFT,2025,7,15,1,0 +DR_SHIFT,2026,7,15,1,0 +DR_SHIFT,2027,7,15,1,0 +DR_SHIFT,2028,7,15,1,0 +DR_SHIFT,2029,7,15,1,0 +DR_SHIFT,2030,7,15,1,0 +DR_SHIFT,2031,7,15,1,0 +DR_SHIFT,2032,7,15,1,0 +DR_SHIFT,2033,7,15,1,0 +DR_SHIFT,2034,7,15,1,0 +DR_SHIFT,2035,7,15,1,0 +DR_SHIFT,2036,7,15,1,0 +DR_SHIFT,2037,7,15,1,0 +DR_SHIFT,2038,7,15,1,0 +DR_SHIFT,2039,7,15,1,0 +DR_SHIFT,2040,7,15,1,0 +DR_SHIFT,2041,7,15,1,0 +DR_SHIFT,2042,7,15,1,0 +DR_SHIFT,2043,7,15,1,0 +DR_SHIFT,2044,7,15,1,0 +DR_SHIFT,2045,7,15,1,0 +DR_SHIFT,2046,7,15,1,0 +DR_SHIFT,2047,7,15,1,0 +DR_SHIFT,2048,7,15,1,0 +DR_SHIFT,2049,7,15,1,0 +DR_SHIFT,2050,7,15,1,0 electrolyzer,2010,7,15,1,0 electrolyzer,2011,7,15,1,0 electrolyzer,2012,7,15,1,0 diff --git a/inputs/plant_characteristics/maxage.csv b/inputs/plant_characteristics/maxage.csv index 4d1311c44..5594fd2a8 100644 --- a/inputs/plant_characteristics/maxage.csv +++ b/inputs/plant_characteristics/maxage.csv @@ -60,8 +60,8 @@ csp3_1*csp3_12,30 csp4_1*csp4_12,30 battery_li,30 dr_shed_1*dr_shed_2,8 -dr_shape_1*dr_shape_5,8 -dr_shift_1*dr_shift_5,8 +dr_shape_1*dr_shape_2,8 +dr_shift_1*dr_shift_2,8 electrolyzer,20 smr,25 smr_ccs,25 diff --git a/inputs/plant_characteristics/ramprate.csv b/inputs/plant_characteristics/ramprate.csv index 0da8e4146..763ee0031 100644 --- a/inputs/plant_characteristics/ramprate.csv +++ b/inputs/plant_characteristics/ramprate.csv @@ -46,5 +46,5 @@ pvb1_1*pvb1_10,1 pvb2_1*pvb2_10,1 pvb3_1*pvb3_10,1 dr_shed_1*dr_shed_2,1 -dr_shape_1*dr_shape_5,1 -dr_shift_1*dr_shift_5,1 +dr_shape_1*dr_shape_2,1 +dr_shift_1*dr_shift_2,1 diff --git a/inputs/sets/i.csv b/inputs/sets/i.csv index a843acc3b..3e2105707 100644 --- a/inputs/sets/i.csv +++ b/inputs/sets/i.csv @@ -156,14 +156,8 @@ dr_shed_1 dr_shed_2 dr_shape_1 dr_shape_2 -dr_shape_3 -dr_shape_4 -dr_shape_5 dr_shift_1 dr_shift_2 -dr_shift_3 -dr_shift_4 -dr_shift_5 hydD hydND hydSD diff --git a/inputs/tech-subset-table.csv b/inputs/tech-subset-table.csv index b126fb4c3..34cf065c7 100644 --- a/inputs/tech-subset-table.csv +++ b/inputs/tech-subset-table.csv @@ -1,77 +1,75 @@ -,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,NG_FUEL_CELL,CONV,TEMP_DERATE,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,H2_FUEL_CELL,H2_GEN,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED,GENTECH,DR_SHAPE,DR_SHIFT -can-imports,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,, -coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -coal-CCS_max,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -Coal-IGCC,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -coal-new,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -CoalOldScr,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -CoalOldUns,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -CofireNew,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -CofireOld,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, -Gas-CC,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CC-CCS-F1,,,,YES,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,,,,YES,, -Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CT,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -Gas-CT_aero,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -ng-fuel-cell,,,,YES,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, -h2-fuel-cell,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,YES,, -o-g-s,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,YES,,,YES,, -Nuclear,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, -Nuclear-SMR,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, -H2-CT,,,,,,,,,YES,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,,,,,,,YES,, -H2-CC,,,,,,,,YES,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,,,,,,,YES,, -biopower,YES,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, -geothermal,,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, -beccs_mod,YES,,,,,,,,,,YES,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, -beccs_max,YES,,,,,,,,,,YES,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, -Hydro,,,,,,,,,,,YES,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, -lfill-gas,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,YES,, -battery_li,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -dr_shed_1*dr_shed_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,,, -dr_shift_1*dr_shift_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,YES -dr_shape_1*dr_shape_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,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,,YES,, -upv_1*upv_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, -pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, -pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, -pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, -wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, -wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, -csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, -hydSD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydSND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, -hydUD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydUND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, -hydNPD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydNPND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, -hydED,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, -hydEND,,,,,,,,,,,,,,,,,,,,,YES,,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,,,,,,,,,,,,,,,,,,,,,,,YES,, -geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, -egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, +,BIO,COAL,COAL_CCS,GAS,GAS_CC,GAS_CC_CCS,GAS_CT,COMBINED_CYCLE,COMBUSTION_TURBINE,NG_FUEL_CELL,CONV,TEMP_DERATE,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,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,H2_FUEL_CELL,H2_GEN,REFURBTECH,cf_tech,FOSSIL,BOILER,NONDISPATCH,DR_SHED,GENTECH,DR_SHAPE,DR_SHIFT +can-imports,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,, +coal-CCS_mod,,YES,YES,,,,,,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS_max,,YES,YES,,,,,,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F1,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F2,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-CCS-F3,,YES,YES,,,,,,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +Coal-IGCC,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +coal-new,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CoalOldScr,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CoalOldUns,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CofireNew,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +CofireOld,,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,, +Gas-CC,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1,,,,YES,YES,,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_1x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1-CCS_mod,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC_H_2x1-CCS_max,,,,YES,YES,YES,,YES,,,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CC-CCS-F1,,,,YES,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,,,,YES,, +Gas-CC-CCS-F3,,,,YES,YES,YES,,YES,,,YES,YES,YES,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CT,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +Gas-CT_aero,,,,YES,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +ng-fuel-cell,,,,YES,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,YES,, +h2-fuel-cell,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,YES,, +o-g-s,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,YES,YES,,,YES,, +Nuclear,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, +Nuclear-SMR,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,YES,,,YES,, +H2-CT,,,,,,,,,YES,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,,,,,,,YES,, +H2-CC,,,,,,,,YES,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,YES,,,,,,,YES,, +biopower,YES,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +geothermal,,,,,,,,,,,YES,YES,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +beccs_mod,YES,,,,,,,,,,YES,YES,YES,YES,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +beccs_max,YES,,,,,,,,,,YES,YES,YES,,YES,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,, +Hydro,,,,,,,,,,,YES,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,, +lfill-gas,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,YES,, +battery_li,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +dr_shed_1*dr_shed_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,,, +dr_shift_1*dr_shift_2,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,,,,,,,,,,YES,,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,,YES +dr_shape_1*dr_shape_2,,,,,,,,,,,,,,,,,,,,,,,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,,YES,, +upv_1*upv_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb1_1*pvb1_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,YES,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb2_1*pvb2_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,YES,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +pvb3_1*pvb3_10,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,,,YES,,,YES,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,YES,, +wind-ofs_1*wind-ofs_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +wind-ons_1*wind-ons_10,,,,,,,,,,,,,,,,,,,,,YES,YES,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,YES,YES,,,,,YES,, +csp1_1*csp1_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,YES,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp2_1*csp2_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,YES,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp3_1*csp3_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +csp4_1*csp4_12,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,YES,YES,,,,YES,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydSD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydSND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydUD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydUND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydNPD,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydNPND,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,YES,,YES,, +hydED,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,,,,YES,, +hydEND,,,,,,,,,,,,,,,,,,,,,YES,,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,,,,,,,,,,,,,,,,,,,,,,,YES,, +geohydro_allkm_1*geohydro_allkm_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,YES,,,,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, +egs_nearfield_1*egs_nearfield_10,,,,,,,,,,,,,,,,,,,,,YES,,YES,,,,,,,,,,,,,,,,,,,,,,,,,,,,,YES,,YES,,YES,YES,,,,,,,,,,,,,,,,,,,,,,,,YES,, diff --git a/inputs/techs/techs_default.csv b/inputs/techs/techs_default.csv index bfdf9b890..8d8cca5db 100644 --- a/inputs/techs/techs_default.csv +++ b/inputs/techs/techs_default.csv @@ -59,8 +59,8 @@ csp2_1*csp2_12,p csp3_1*csp3_12,p csp4_1*csp4_12,p dr_shed_1*dr_shed_2,p -dr_shape_1*dr_shape_5,p -dr_shift_1*dr_shift_5,p +dr_shape_1*dr_shape_2,p +dr_shift_1*dr_shift_2,p egs_allkm_1*egs_allkm_10,p geohydro_allkm_1*geohydro_allkm_10,p egs_nearfield_1*egs_nearfield_10,p diff --git a/inputs/userinput/ivt_default.csv b/inputs/userinput/ivt_default.csv index adc85ee54..0882e1ea5 100644 --- a/inputs/userinput/ivt_default.csv +++ b/inputs/userinput/ivt_default.csv @@ -53,8 +53,8 @@ csp2_1*csp2_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8 csp3_1*csp3_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9 csp4_1*csp4_12,1,1,1,1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9 dr_shed_1*dr_shed_2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -dr_shape_1*dr_shape_5,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 -dr_shift_1*dr_shift_5,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 +dr_shape_1*dr_shape_2,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 +dr_shift_1*dr_shift_2,1,1,1,1,1,1,1,1,1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16 hydD,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 hydND,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 hydSD,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6,7,7,7,7,7 diff --git a/inputs/userinput/ivt_small.csv b/inputs/userinput/ivt_small.csv index 8ffd6111f..d7d91494f 100644 --- a/inputs/userinput/ivt_small.csv +++ b/inputs/userinput/ivt_small.csv @@ -53,8 +53,8 @@ csp2_1*csp2_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 csp3_1*csp3_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 csp4_1*csp4_12,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 dr_shed_1*dr_shed_2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 -dr_shape_1*dr_shape_5,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 -dr_shift_1*dr_shift_5,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +dr_shape_1*dr_shape_2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 +dr_shift_1*dr_shift_2,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydD,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydND,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 hydSD,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 diff --git a/inputs/userinput/ivt_step.csv b/inputs/userinput/ivt_step.csv index 1009c670d..97f1917ee 100644 --- a/inputs/userinput/ivt_step.csv +++ b/inputs/userinput/ivt_step.csv @@ -53,8 +53,8 @@ csp2_1*csp2_12,5 csp3_1*csp3_12,5 csp4_1*csp4_12,5 dr_shed_1*dr_shed_2,0 -dr_shape_1*dr_shape_5,2 -dr_shift_1*dr_shift_5,2 +dr_shape_1*dr_shape_2,2 +dr_shift_1*dr_shift_2,2 hydD,5 hydND,5 hydSD,5 diff --git a/reeds/input_processing/calc_financial_inputs.py b/reeds/input_processing/calc_financial_inputs.py index 656c79144..d8701c2f1 100644 --- a/reeds/input_processing/calc_financial_inputs.py +++ b/reeds/input_processing/calc_financial_inputs.py @@ -231,8 +231,7 @@ def calc_financial_inputs(inputs_case): ptc_values_df = ptc_values_df.drop_duplicates(['i', 'v', 't']) ptc_values_df['v'] = ['new%s' % v for v in ptc_values_df['v']] ptc_values_df['allt'] = ptc_values_df['t'].astype(int) - - + #%% # Import schedules for financial calculations diff --git a/reeds/input_processing/hourly_writetimeseries.py b/reeds/input_processing/hourly_writetimeseries.py index e01f34f45..83822f2ed 100644 --- a/reeds/input_processing/hourly_writetimeseries.py +++ b/reeds/input_processing/hourly_writetimeseries.py @@ -326,9 +326,8 @@ def get_yearly_flexibility( for stype in ["increase", "decrease", "energy"]: if stype == "energy": if drcat.lower() == "dr_shift": - shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"dr_shift_profile_{stype}.csv") - ) + shape[stype] = reeds.io.read_file(os.path.join(inputs_case, f"dr_shift_profile_{stype}.h5")) + else: continue diff --git a/reeds/input_processing/plantcostprep.py b/reeds/input_processing/plantcostprep.py index 44a4556bf..64944022f 100644 --- a/reeds/input_processing/plantcostprep.py +++ b/reeds/input_processing/plantcostprep.py @@ -257,10 +257,6 @@ def deflate_func(data,case): ) battery = battery.reset_index() -evmc_storage = pd.read_csv(os.path.join(inputs_case,'plantchar_evmc_storage.csv')) -evmc_storage = deflate_func(evmc_storage, 'evmc_storage_' + sw.evmcscen) -evmc_shape = pd.read_csv(os.path.join(inputs_case,'plantchar_evmc_shape.csv'), dtype = {'fom':float,'vom':float,'rte':float}) -evmc_shape = deflate_func(evmc_shape, 'evmc_shape_' + sw.evmcscen) #%%############################ # -- Concat all data -- # @@ -327,7 +323,7 @@ def deflate_func(data,case): consume_char.loc[mask, 'value'] = consume_char[mask]['value'] + round( (elec_cost_future * scalars['h2_elec_stack_replace_perc'])/(discount_rate**scalars['h2_elec_stack_replace_year']) ,3) #%%############################### -# -- DR Shed -- # +# -- DR -- # ################################## # Capital cost multipliers for DR Shed vary by state and year # Input cost data are state-level and are assigned to model region resolution here diff --git a/runreeds.py b/runreeds.py index 6a7fa4141..c47a24a8c 100644 --- a/runreeds.py +++ b/runreeds.py @@ -817,7 +817,7 @@ def setupEnvironment( #%% Check whether the ReEDS conda environment is activated if (not skip_checks) and ( - ('reeds' not in os.environ['CONDA_DEFAULT_ENV'].lower()) + ('reeds5' not in os.environ['CONDA_DEFAULT_ENV'].lower()) or (not pd.__version__.startswith('3')) ): err = ( @@ -1257,7 +1257,7 @@ def write_batch_script( OPATH.writelines("module load conda \n") OPATH.writelines("module load gams \n") - OPATH.writelines("conda activate reeds \n") + OPATH.writelines("conda activate reeds5 \n") OPATH.writelines('export R_LIBS_USER="$HOME/rlib" \n\n\n') #%% Write the input_processing script calls From 3f64886cc82de15d567ff9d21b38db616a7fa9d7 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Wed, 9 Sep 2026 23:18:57 +0000 Subject: [PATCH 18/25] add hourly load changes for dr shift --- cases_dr.csv | 2 +- reeds/input_processing/hourly_load.py | 115 +++++++++++++++--- .../hourly_writetimeseries.py | 47 +++---- reeds/io.py | 9 +- 4 files changed, 131 insertions(+), 42 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index 74edcef97..b74a659d5 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,0,0,1,0,0 +ignore,1,1,1,0,1,1 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,,,z54,z54 diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index fd911c8bb..9193e9727 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -757,14 +757,20 @@ def main(reeds_path, inputs_case): state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] - state_dr_shape_profile_inc = state_dr_shape_profile_inc.set_index(['year','hour']) - state_dr_shape_profile_dec = state_dr_shape_profile_dec.set_index(['year','hour']) + state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index().set_index(['year','datetime']) + state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index().set_index(['year','datetime']) + dr_types = list({x.split('|')[0] for x in state_dr_shape_profile_inc.columns[1:]}) regional_dr_shape_profile_inc = {} regional_dr_shape_profile_dec = {} - for dr_type in state_dr_shape_profile_inc['i'].unique(): - reg_shape_inc = state_dr_shape_profile_inc[state_dr_shape_profile_inc['i'] == dr_type].copy().drop(columns='i') - reg_shape_dec = state_dr_shape_profile_dec[state_dr_shape_profile_dec['i'] == dr_type].copy().drop(columns='i') + for dr_type in dr_types: + type_cols_inc = [col for col in state_dr_shape_profile_inc.columns if col.startswith(dr_type)] + type_cols_dec = [col for col in state_dr_shape_profile_dec.columns if col.startswith(dr_type)] + reg_shape_inc = state_dr_shape_profile_inc[type_cols_inc].copy() + reg_shape_dec = state_dr_shape_profile_dec[type_cols_dec].copy() + reg_shape_inc.columns = [col.split('|')[1] for col in reg_shape_inc.columns] + reg_shape_dec.columns = [col.split('|')[1] for col in reg_shape_dec.columns] + reg_shape_inc = reaggregate_to_model_regions( reg_shape_inc, inputs_case, @@ -779,20 +785,97 @@ def main(reeds_path, inputs_case): dr_data=True, dr_type='fraction', ) - #Add back dr type to column header as first column - reg_shape_inc.insert(0, 'i', dr_type) - reg_shape_dec.insert(0, 'i', dr_type) - reg_shape_inc[reg_shape_inc.columns.difference(['i'])] = reg_shape_inc[reg_shape_inc.columns.difference(['i'])].round(3) - reg_shape_dec[reg_shape_dec.columns.difference(['i'])] = reg_shape_dec[reg_shape_dec.columns.difference(['i'])].round(3) + reg_shape_inc = reg_shape_inc.reset_index().set_index(['datetime']) + reg_shape_dec = reg_shape_dec.reset_index().set_index(['datetime']) + # Add back dr type to column header + reg_shape_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_inc.columns] + reg_shape_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_dec.columns] - regional_dr_shape_profile_inc[dr_type] = reg_shape_inc.reset_index() - regional_dr_shape_profile_dec[dr_type] = reg_shape_dec.reset_index() + regional_dr_shape_profile_inc[dr_type] = reg_shape_inc + regional_dr_shape_profile_dec[dr_type] = reg_shape_dec - # Combine dr shape types + # Combined dr shape types regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) + # Remove duplucate year columns + regional_dr_shape_profile_inc = regional_dr_shape_profile_inc.loc[:,~regional_dr_shape_profile_inc.columns.duplicated()] + regional_dr_shape_profile_dec = regional_dr_shape_profile_dec.loc[:,~regional_dr_shape_profile_dec.columns.duplicated()] + + #%%%######################################### + # -- DR Shape or Shift Load Modifications -- # + ############################################# + # + if int(sw.GSw_DRShift): + + state_dr_shift_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_increase.h5')) + state_dr_shift_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5')) + state_dr_shift_profile_energy = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_energy.h5')) + + # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] + state_dr_shift_profile_inc = state_dr_shift_profile_inc.reset_index().set_index(['year','datetime']) + state_dr_shift_profile_dec = state_dr_shift_profile_dec.reset_index().set_index(['year','datetime']) + state_dr_shift_profile_energy = state_dr_shift_profile_energy.reset_index().set_index(['year','datetime']) + + dr_types = list({x.split('|')[0] for x in state_dr_shift_profile_inc.columns[1:]}) + regional_dr_shift_profile_inc = {} + regional_dr_shift_profile_dec = {} + regional_dr_shift_profile_energy = {} + for dr_type in dr_types: + type_cols_inc = [col for col in state_dr_shift_profile_inc.columns if col.startswith(dr_type)] + type_cols_dec = [col for col in state_dr_shift_profile_dec.columns if col.startswith(dr_type)] + type_cols_energy = [col for col in state_dr_shift_profile_energy.columns if col.startswith(dr_type)] + reg_shift_inc = state_dr_shift_profile_inc[type_cols_inc].copy() + reg_shift_dec = state_dr_shift_profile_dec[type_cols_dec].copy() + reg_shift_energy = state_dr_shift_profile_energy[type_cols_energy].copy() + reg_shift_inc.columns = [col.split('|')[1] for col in reg_shift_inc.columns] + reg_shift_dec.columns = [col.split('|')[1] for col in reg_shift_dec.columns] + reg_shift_energy.columns = [col.split('|')[1] for col in reg_shift_energy.columns] + + reg_shift_inc = reaggregate_to_model_regions( + reg_shift_inc, + inputs_case, + 'state_lpf', + dr_data=True, + dr_type='fraction', + ) + reg_shift_dec = reaggregate_to_model_regions( + reg_shift_dec, + inputs_case, + 'state_lpf', + dr_data=True, + dr_type='fraction', + ) + reg_shift_energy = reaggregate_to_model_regions( + reg_shift_energy, + inputs_case, + 'state_lpf', + dr_data=True, + dr_type='energy', + ) + + reg_shift_inc = reg_shift_inc.reset_index().set_index(['datetime']) + reg_shift_dec = reg_shift_dec.reset_index().set_index(['datetime']) + reg_shift_energy = reg_shift_energy.reset_index().set_index(['datetime']) + # Add back dr type to column header + reg_shift_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_inc.columns] + reg_shift_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_dec.columns] + reg_shift_energy.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_energy.columns] + + regional_dr_shift_profile_inc[dr_type] = reg_shift_inc + regional_dr_shift_profile_dec[dr_type] = reg_shift_dec + regional_dr_shift_profile_energy[dr_type] = reg_shift_energy + + # Combined dr shape types + regional_dr_shift_profile_inc = pd.concat(regional_dr_shift_profile_inc.values(), axis=1) + regional_dr_shift_profile_dec = pd.concat(regional_dr_shift_profile_dec.values(), axis=1) + regional_dr_shift_profile_energy = pd.concat(regional_dr_shift_profile_energy.values(), axis=1) + + # Remove duplucate year columns + regional_dr_shift_profile_inc = regional_dr_shift_profile_inc.loc[:,~regional_dr_shift_profile_inc.columns.duplicated()] + regional_dr_shift_profile_dec = regional_dr_shift_profile_dec.loc[:,~regional_dr_shift_profile_dec.columns.duplicated()] + regional_dr_shift_profile_energy = regional_dr_shift_profile_energy.loc[:,~regional_dr_shift_profile_energy.columns.duplicated()] #%%########################### @@ -819,7 +902,11 @@ def main(reeds_path, inputs_case): regional_dr_shape_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_increase.h5'), key='data', complevel=4) regional_dr_shape_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5'), key='data', complevel=4) - + if int(sw.GSw_DRShift): + regional_dr_shift_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_increase.h5'), key='data', complevel=4) + regional_dr_shift_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5'), key='data', complevel=4) + regional_dr_shift_profile_energy.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_energy.h5'), key='data', complevel=4) + #%% =========================================================================== ### --- PROCEDURE --- ### =========================================================================== diff --git a/reeds/input_processing/hourly_writetimeseries.py b/reeds/input_processing/hourly_writetimeseries.py index 83822f2ed..1879f78bd 100644 --- a/reeds/input_processing/hourly_writetimeseries.py +++ b/reeds/input_processing/hourly_writetimeseries.py @@ -335,38 +335,36 @@ def get_yearly_flexibility( shape[stype] = reeds.io.read_file(os.path.join(inputs_case, f"dr_shape_profile_{stype}.h5")) elif drcat.lower() == "dr_shift": - shape[stype] = pd.read_csv( - os.path.join(inputs_case, f"dr_shift_profile_{stype}.csv") - ) + shape[stype] = reeds.io.read_file(os.path.join(inputs_case, f"dr_shift_profile_{stype}.h5")) else: raise ValueError( f"drcat must be in ['dr','dr_shape','dr_shift'] but is '{drcat}'" ) modeledyears_int = [int(y) for y in modeledyears] - shape[stype] = shape[stype].loc[shape[stype].year.isin(modeledyears_int)].reset_index(drop = True) + shape[stype] = shape[stype].loc[shape[stype].year.isin(modeledyears_int)] - unique_techs = len(shape[stype].i.unique()) if 'i' in shape[stype].columns else 1 + unique_techs = list({x.split('|')[0] for x in shape[stype].columns[1:]}) # EER derived shape data is populated for multiple weather years # The hour column is populated as a timestamp - if len(str(shape[stype].hour[0])) > 4: + # if len(str(shape[stype].hour[0])) > 4: + if len(str(shape[stype].index[0])) > 4: # Define timezone to UTC-6 - shape[stype].set_index(pd.to_datetime(shape[stype]['hour']), inplace=True) + shape[stype].set_index(pd.to_datetime(shape[stype].index), inplace=True) shape[stype].index = shape[stype].index.tz_localize('Etc/GMT+6') - shape[stype].drop('hour', axis=1, inplace=True) shape[stype].reset_index(inplace=True) # create dictionary from hmap hour2h = hmap_1yr.set_index('timestamp')['h'].to_dict() # Map timestamps to h values - shape[stype]['h'] = shape[stype]['hour'].map(hour2h) + shape[stype]['h'] = shape[stype]['datetime'].map(hour2h) # Filter out hours not in hmap shape[stype] = shape[stype].loc[~shape[stype]['h'].isnull()] # Remove timestamp col - shape[stype] = shape[stype].drop(columns = 'hour') + shape[stype] = shape[stype].drop(columns = 'datetime') # Flip region columns to single column - region_cols = [col for col in shape[stype].columns if col not in ['i','year','h']] + region_cols = [col for col in shape[stype].columns if col not in ['year','h']] if region_cols: shape[stype] = shape[stype].melt( id_vars=[col for col in shape[stype].columns if col not in region_cols], @@ -374,10 +372,13 @@ def get_yearly_flexibility( var_name='r', value_name='Values' ) - + # Split the region column into dr type and region + shape[stype]['i'] = shape[stype]['r'].apply(lambda x: x.split('|')[0]) + shape[stype]['r'] = shape[stype]['r'].apply(lambda x: x.split('|')[1]) + shape[stype]['year'] = shape[stype]['year'].astype(int) # Reorder columns shape_out[stype] = shape[stype][['i','r','h','year','Values']].copy() - shape_out[stype] = shape_out[stype].rename(columns={'year':'t','i':'*i'}) + shape_out[stype] = shape_out[stype].rename(columns={'year':'t'}) # End use shape data populated for single weather year @@ -1342,8 +1343,8 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr else: # populate empty dataframe - dr_shape_dec = pd.DataFrame(columns=["*i", "r", "h","t"]) - dr_shape_inc = pd.DataFrame(columns=["*i", "r", "h","t"]) + dr_shape_dec = pd.DataFrame(columns=["i", "r", "h","t"]) + dr_shape_inc = pd.DataFrame(columns=["i", "r", "h","t"]) if int(sw.GSw_DRShift): dr_shift_dec, dr_shift_inc, dr_shift_profile_energy = ( @@ -1360,9 +1361,9 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr ) else: # Populate empty dataframe - dr_shift_dec = pd.DataFrame(columns=["*i", "r", "h", "t"]) - dr_shift_inc = pd.DataFrame(columns=["*i", "r", "h", "t"]) - dr_shift_profile_energy = pd.DataFrame(columns=["*i", "r", "h", "t"]) + dr_shift_dec = pd.DataFrame(columns=["i", "r", "h", "t"]) + dr_shift_inc = pd.DataFrame(columns=["i", "r", "h", "t"]) + dr_shift_profile_energy = pd.DataFrame(columns=["i", "r", "h", "t"]) @@ -1571,7 +1572,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr "dr_shape_generation": [ ( dr_shape_dec.assign(h=dr_shape_dec.h.map(chunkmap)) - .groupby(["*i", "r", "h","t"]) + .groupby(["i", "r", "h","t"]) .mean() .round(decimals) .reset_index() @@ -1582,7 +1583,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr "dr_shape_load": [ ( dr_shape_inc.assign(h=dr_shape_inc.h.map(chunkmap)) - .groupby(["*i", "r", "h","t"]) + .groupby(["i", "r", "h","t"]) .mean() .round(decimals) .reset_index() @@ -1593,7 +1594,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr "dr_shift_discharge": [ ( dr_shift_dec.assign(h=dr_shift_dec.h.map(chunkmap)) - .groupby(["*i", "r", "h", "t"]) + .groupby(["i", "r", "h", "t"]) .max() .round(decimals) .reset_index() @@ -1604,7 +1605,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr "dr_shift_charge": [ ( dr_shift_inc.assign(h=dr_shift_inc.h.map(chunkmap)) - .groupby(["*i", "r", "h", "t"]) + .groupby(["i", "r", "h", "t"]) .max() .round(decimals) .reset_index() @@ -1615,7 +1616,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr "dr_shift_profile_energy": [ ( dr_shift_profile_energy.assign(h=dr_shift_profile_energy.h.map(chunkmap)) - .groupby(["*i", "r", "h", "t"]) + .groupby(["i", "r", "h", "t"]) .max() .round(decimals) .reset_index() diff --git a/reeds/io.py b/reeds/io.py index e71872a9b..032e7343c 100644 --- a/reeds/io.py +++ b/reeds/io.py @@ -908,15 +908,16 @@ def read_file(filename, parse_timestamps=True): # All values being NaN indicates that the region filtering in copy_files.py removed all # data, leaving an empty dataframe. - # Return an empty dataframe with the original file's index if all values are NaN - if all(df.isnull().all()): + # Return an empty dataframe with the original file's index if all values are NaN. + if df.isna().to_numpy().all(): df = df.drop(columns=df.columns) return df # NOTE: Some files are saved as float16, so we cast to float32 to prevent issues with # large/small numbers - numeric_cols = [c for c in df if is_float_dtype(df[c].dtype)] - df = df.astype({column: np.float32 for column in numeric_cols}) + numeric_cols = list(df.select_dtypes(include=[np.floating]).columns) + if numeric_cols: + df = df.astype({column: np.float32 for column in numeric_cols}) return df From 473508f5e6a1795a6a192968c6cb9042b924ab34 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Thu, 10 Sep 2026 21:45:34 +0000 Subject: [PATCH 19/25] fix rsc_capacity_scalar for shape and shift --- cases_dr.csv | 4 +- .../dr_shift_cap_scalar_ex_dr1.csv | 48 +++ .../dr_shift_cost_scalars_ex_dr1.csv | 48 +++ .../dr_shift_fom_ex_dr1.csv | 48 +++ .../dr_shift_vom_ex_dr1.csv | 48 +++ inputs/supply_curve/dr_shift_cap_ex_dr1.csv | 3 +- inputs/supply_curve/dr_shift_cost_ex_dr1.csv | 3 +- reeds/core/setup/b_inputs.gms | 6 +- reeds/input_processing/hourly_load.py | 354 ++++++++++-------- 9 files changed, 397 insertions(+), 165 deletions(-) diff --git a/cases_dr.csv b/cases_dr.csv index b74a659d5..602b44aaa 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,8 +1,8 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,1,1,0,1,1 +ignore,1,1,0,0,1,1 endyear,,2032,2032,2032,2032,2032 GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific -GSw_ZoneSet,,,,,z54,z54 +GSw_ZoneSet,,,z132,z132,z54,z54 GSw_GasCurve,,2,2,2,2,2 GSw_HourlyType,,,,,, GSw_OpRes,,,,,, diff --git a/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv index 0b71889a5..d409ee019 100644 --- a/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv +++ b/inputs/demand_response/dr_shift_cap_scalar_ex_dr1.csv @@ -47,3 +47,51 @@ dr_shift_1,WV,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1. dr_shift_1,NC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 dr_shift_1,VA,0.931,0.945,0.959,0.972,0.986,1.0,1.009,1.018,1.027,1.036,1.046,1.052,1.058,1.064,1.07,1.076,1.083,1.091,1.098,1.105,1.112,1.122,1.133,1.143,1.154,1.164 dr_shift_1,PA,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,TN,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_2,LA,0.965,0.972,0.979,0.986,0.993,1.0,1.006,1.012,1.019,1.025,1.031,1.037,1.043,1.048,1.054,1.06,1.068,1.076,1.083,1.091,1.099,1.107,1.115,1.124,1.132,1.14 +dr_shift_2,NV,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_2,KS,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_2,MO,0.974,0.979,0.984,0.99,0.995,1.0,1.007,1.014,1.021,1.028,1.034,1.042,1.049,1.057,1.064,1.072,1.08,1.089,1.097,1.106,1.114,1.125,1.136,1.147,1.158,1.169 +dr_shift_2,AR,0.963,0.97,0.978,0.985,0.993,1.0,1.007,1.013,1.02,1.027,1.034,1.04,1.046,1.052,1.058,1.064,1.072,1.079,1.086,1.093,1.101,1.108,1.116,1.124,1.132,1.139 +dr_shift_2,KY,0.956,0.965,0.974,0.982,0.991,1.0,1.006,1.012,1.018,1.025,1.031,1.036,1.041,1.046,1.051,1.056,1.062,1.067,1.073,1.079,1.084,1.094,1.103,1.112,1.122,1.131 +dr_shift_2,MD,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,NJ,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,AZ,0.91,0.928,0.946,0.964,0.982,1.0,1.015,1.03,1.045,1.06,1.075,1.088,1.101,1.114,1.126,1.139,1.153,1.166,1.18,1.196,1.213,1.229,1.245,1.261,1.278,1.294 +dr_shift_2,CO,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_2,FL,0.735,0.788,0.841,0.894,0.947,1.0,1.034,1.069,1.103,1.138,1.172,1.198,1.223,1.248,1.274,1.299,1.321,1.343,1.364,1.386,1.408,1.427,1.445,1.464,1.483,1.501 +dr_shift_2,IN,0.982,0.985,0.989,0.993,0.996,1.0,1.004,1.009,1.013,1.018,1.022,1.027,1.032,1.036,1.041,1.046,1.051,1.057,1.062,1.068,1.073,1.08,1.086,1.092,1.098,1.105 +dr_shift_2,VT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,NM,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_2,SD,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.142,1.158,1.174,1.191,1.209,1.227,1.244,1.262,1.28 +dr_shift_2,MS,0.953,0.962,0.972,0.981,0.991,1.0,1.009,1.017,1.026,1.034,1.043,1.051,1.059,1.067,1.076,1.084,1.094,1.104,1.113,1.123,1.133,1.142,1.151,1.16,1.169,1.178 +dr_shift_2,NH,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,NE,0.912,0.93,0.947,0.965,0.982,1.0,1.013,1.025,1.038,1.051,1.064,1.074,1.084,1.095,1.105,1.115,1.126,1.137,1.149,1.16,1.171,1.183,1.195,1.208,1.22,1.232 +dr_shift_2,OK,0.962,0.97,0.977,0.985,0.992,1.0,1.007,1.014,1.021,1.028,1.034,1.041,1.048,1.054,1.061,1.067,1.076,1.084,1.093,1.101,1.109,1.119,1.128,1.137,1.146,1.155 +dr_shift_2,ID,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_2,WA,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_2,AL,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_2,MA,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,DE,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,CA,0.946,0.957,0.968,0.978,0.989,1.0,1.011,1.023,1.034,1.045,1.057,1.068,1.078,1.089,1.1,1.111,1.123,1.135,1.147,1.159,1.172,1.185,1.199,1.212,1.226,1.239 +dr_shift_2,UT,0.895,0.916,0.937,0.958,0.979,1.0,1.018,1.036,1.054,1.072,1.091,1.107,1.123,1.14,1.156,1.173,1.189,1.206,1.222,1.239,1.26,1.28,1.299,1.319,1.339,1.358 +dr_shift_2,ND,0.948,0.959,0.969,0.979,0.99,1.0,1.008,1.017,1.025,1.034,1.042,1.05,1.058,1.065,1.073,1.08,1.089,1.098,1.106,1.115,1.123,1.133,1.142,1.152,1.161,1.171 +dr_shift_2,MN,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_2,OR,0.894,0.915,0.936,0.958,0.979,1.0,1.017,1.034,1.051,1.067,1.084,1.097,1.11,1.122,1.135,1.148,1.161,1.173,1.186,1.199,1.211,1.227,1.242,1.257,1.272,1.287 +dr_shift_2,GA,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_2,MT,0.942,0.954,0.965,0.977,0.988,1.0,1.008,1.016,1.025,1.04,1.054,1.064,1.074,1.084,1.094,1.104,1.116,1.128,1.14,1.152,1.164,1.177,1.189,1.202,1.215,1.227 +dr_shift_2,SC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_2,OH,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,RI,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,ME,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,WY,0.915,0.932,0.949,0.966,0.983,1.0,1.016,1.033,1.049,1.065,1.082,1.097,1.113,1.128,1.144,1.159,1.176,1.194,1.211,1.228,1.245,1.263,1.282,1.301,1.32,1.338 +dr_shift_2,MI,0.948,0.958,0.969,0.979,0.99,1.0,1.008,1.016,1.024,1.032,1.04,1.046,1.052,1.058,1.064,1.07,1.077,1.087,1.099,1.11,1.122,1.134,1.147,1.159,1.172,1.185 +dr_shift_2,WI,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_2,NY,0.971,0.976,0.982,0.988,0.994,1.0,1.006,1.013,1.019,1.026,1.032,1.038,1.043,1.049,1.055,1.061,1.068,1.076,1.084,1.091,1.099,1.108,1.117,1.126,1.135,1.145 +dr_shift_2,TX,0.949,0.959,0.969,0.979,0.99,1.0,1.008,1.015,1.023,1.031,1.039,1.044,1.049,1.06,1.073,1.085,1.098,1.112,1.125,1.138,1.152,1.166,1.181,1.196,1.211,1.226 +dr_shift_2,IL,0.961,0.969,0.976,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.04,1.046,1.051,1.057,1.062,1.069,1.075,1.082,1.089,1.095,1.102,1.114,1.126,1.138,1.151 +dr_shift_2,CT,0.97,0.976,0.982,0.988,0.994,1.0,1.007,1.013,1.02,1.026,1.033,1.04,1.047,1.053,1.06,1.067,1.075,1.082,1.09,1.098,1.106,1.114,1.123,1.132,1.141,1.15 +dr_shift_2,IA,0.961,0.969,0.977,0.984,0.992,1.0,1.007,1.014,1.021,1.028,1.035,1.042,1.048,1.055,1.062,1.069,1.076,1.084,1.092,1.099,1.107,1.116,1.124,1.133,1.141,1.15 +dr_shift_2,WV,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 +dr_shift_2,NC,0.954,0.963,0.972,0.982,0.991,1.0,1.009,1.017,1.026,1.035,1.043,1.051,1.06,1.068,1.076,1.084,1.093,1.103,1.112,1.122,1.131,1.14,1.149,1.161,1.173,1.185 +dr_shift_2,VA,0.931,0.945,0.959,0.972,0.986,1.0,1.009,1.018,1.027,1.036,1.046,1.052,1.058,1.064,1.07,1.076,1.083,1.091,1.098,1.105,1.112,1.122,1.133,1.143,1.154,1.164 +dr_shift_2,PA,0.968,0.975,0.981,0.987,0.994,1.0,1.006,1.013,1.019,1.025,1.032,1.037,1.043,1.049,1.054,1.06,1.067,1.075,1.082,1.089,1.096,1.105,1.113,1.121,1.129,1.137 diff --git a/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv index fe8134452..944b59baf 100644 --- a/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_cost_scalars_ex_dr1.csv @@ -47,3 +47,51 @@ dr_shift_1,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1. dr_shift_1,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 dr_shift_1,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 dr_shift_1,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,TN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,LA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,KS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,AR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,KY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NJ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,AZ,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,CO,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,FL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,IN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,VT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NM,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,SD,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MS,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,OK,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,ID,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,WA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,AL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,DE,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,CA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,UT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,ND,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MN,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,OR,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,GA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,SC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,OH,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,RI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,ME,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,WY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,MI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,WI,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NY,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,TX,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,IL,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,CT,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,IA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,WV,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,NC,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,VA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 +dr_shift_2,PA,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0 diff --git a/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv index 6f0cfd9e3..465260d43 100644 --- a/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_fom_ex_dr1.csv @@ -47,3 +47,51 @@ dr_shift_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0. dr_shift_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 dr_shift_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 dr_shift_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv index 6f0cfd9e3..465260d43 100644 --- a/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv +++ b/inputs/plant_characteristics/dr_shift_vom_ex_dr1.csv @@ -47,3 +47,51 @@ dr_shift_1,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0. dr_shift_1,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 dr_shift_1,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 dr_shift_1,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,TN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,LA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,KS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,KY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NJ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AZ,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CO,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,FL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,VT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NM,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,SD,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MS,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OK,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ID,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,AL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,DE,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,UT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ND,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MN,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OR,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,GA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,SC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,OH,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,RI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,ME,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,MI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WI,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NY,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,TX,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IL,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,CT,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,IA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,WV,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,NC,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,VA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 +dr_shift_2,PA,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1 diff --git a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv index b181570d7..38910dd00 100644 --- a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv +++ b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv @@ -1,2 +1,3 @@ tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY -dr_shape_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 +dr_shift_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 +dr_shift_2,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 diff --git a/inputs/supply_curve/dr_shift_cost_ex_dr1.csv b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv index 32d7a0dad..a06e1a2e6 100644 --- a/inputs/supply_curve/dr_shift_cost_ex_dr1.csv +++ b/inputs/supply_curve/dr_shift_cost_ex_dr1.csv @@ -1,2 +1,3 @@ tech,rscbin,WA,CA,VA,FL,MI,IN,KY,OH,PA,WV,NV,MD,DE,NJ,NY,VT,NH,MA,CT,RI,ME,ID,MT,WY,UT,AZ,NM,SD,CO,ND,NE,MN,IA,WI,TX,OK,OR,KS,MO,AR,LA,IL,MS,AL,TN,GA,SC,NC -dr_shape_1,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 +dr_shift_1,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 +dr_shift_2,bin1,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01 \ No newline at end of file diff --git a/reeds/core/setup/b_inputs.gms b/reeds/core/setup/b_inputs.gms index 6e757a5c8..916dfe19f 100644 --- a/reeds/core/setup/b_inputs.gms +++ b/reeds/core/setup/b_inputs.gms @@ -5238,10 +5238,6 @@ if (Sw_ReducedResource = 1, m_rsc_dat(r,i,rscbin,"cap") * (1 - rsc_reduct_frac(i,r)) ; ) ; -* Only geothermal and dr_shed/shape/shift have supply curve capacities that change over time irrespective of bins -rsc_capacity_scalar(i,r,t) = geo_discovery(i,r,t)+ dr_shed_capacity_scalar(i,r,t) +dr_shape_capacity_scalar(i,r,t) + dr_shift_capacity_scalar(i,r,t) ; -rsc_capacity_scalar_i(i)$[sum{(r,t), rsc_capacity_scalar(i,r,t) }] = yes ; - *convert UPV and PVB interconnection costs from $/MW-AC to $/MW-DC using ILR m_rsc_dat(r,i,rscbin,"cost")$[m_rsc_dat(r,i,rscbin,"cap")$(upv(i) or pvb(i))] = m_rsc_dat(r,i,rscbin,"cost") / ilr(i) ; @@ -5344,7 +5340,7 @@ geo_bin1_add(i,r)$[geo_hydro(i)$(geo_bin1_add(i,r) < 0)] = 0 ; m_rsc_dat(r,i,"bin1","cap")$[geo_hydro(i)$geo_bin1_add(i,r)] = m_rsc_dat(r,i,"bin1","cap") + geo_bin1_add(i,r) ; -rsc_capacity_scalar(i,r,t) = ceil(1000 *geo_discovery(i,r,t) + dr_shed_capacity_scalar(i,r,t) ) / 1000 ; +rsc_capacity_scalar(i,r,t) = ceil(1000 *geo_discovery(i,r,t) + 1000*dr_shed_capacity_scalar(i,r,t) + 1000*dr_shape_capacity_scalar(i,r,t) + 1000*dr_shift_capacity_scalar(i,r,t)) / 1000 ; rsc_capacity_scalar_i(i)$[sum{(r,t), rsc_capacity_scalar(i,r,t) }] = yes ; * * Apply spur-line cost multiplier for relevant technologies diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index 9193e9727..6193f9c87 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -542,7 +542,7 @@ def reaggregate_to_model_regions( inputs_case: str, GSw_LoadAllocationMethod: str, dr_data: bool = False, - dr_type: str = None, + dr_agg_type: str = None, ) -> pd.DataFrame: """ Allocate hourly state load to model regions according to the provided @@ -591,7 +591,7 @@ def reaggregate_to_model_regions( state_region_factors = state_region_factors.loc[state_region_factors.index.intersection(state_load_hourly.columns), :] # Demand response shape and shift data are fractions which should be distributed uniformly across all regions within a state - if dr_data and dr_type == 'fraction': + if dr_data and dr_agg_type == 'fraction': # Determine the number of regions within each state unique_state = disagg_data['state'].unique() state_map = {} @@ -713,169 +713,211 @@ def main(reeds_path, inputs_case): peakload = calculate_peak_load(regional_load_hourly, hierarchy) - #%%%######################################### - # -- DR Shed Load Modifications -- # - ############################################# - - if int(sw.GSw_DRShed): - state_dr_shed_hourly = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5')) - dr_types = list({x.split('|')[0] for x in state_dr_shed_hourly.columns[1:]}) + # #%%%######################################### + # # -- DR Shed Load Modifications -- # + # ############################################# + + # if int(sw.GSw_DRShed): + # state_dr_shed_hourly = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5')) + # dr_types = list({x.split('|')[0] for x in state_dr_shed_hourly.columns[1:]}) + + # # Reformat to match state load profiles + # state_dr_shed_hourly = state_dr_shed_hourly.reset_index().set_index(['year','datetime']) + # regional_dr_shed_hourly = {} + # for dr_type in dr_types: + # type_cols = [col for col in state_dr_shed_hourly.columns if col.startswith(dr_type)] + # reg_shed = state_dr_shed_hourly[type_cols].copy() + # reg_shed.columns = [col.split('|')[1] for col in reg_shed.columns] + # reg_shed = reaggregate_to_model_regions( + # reg_shed, + # inputs_case, + # 'state_lpf', + # dr_data=True + # ) + # # Add back dr type to column header + # reg_shed.columns = [f"{dr_type}|{col}" for col in reg_shed.columns] + # reg_shed = reg_shed.reset_index() + # if isinstance(reg_shed['datetime'].iloc[0], bytes): + # reg_shed['datetime'] = reg_shed['datetime'].str.decode('utf-8') + # reg_shed['datetime'] = pd.to_datetime(reg_shed['datetime']) + # reg_shed = reg_shed.set_index(['year','datetime']) + # regional_dr_shed_hourly[dr_type] = reg_shed + + # # Combined dr shed types + # regional_dr_shed_hourly = pd.concat(regional_dr_shed_hourly.values(), axis=1) + # regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) + # regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) + + # #%%%######################################### + # # -- DR Shape Load Modifications -- # + # ############################################# + # # + # if int(sw.GSw_DRShape): + # state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) + # state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) + + # # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] + # state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index().set_index(['year','datetime']) + # state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index().set_index(['year','datetime']) + + # dr_types = list({x.split('|')[0] for x in state_dr_shape_profile_inc.columns[1:]}) + # regional_dr_shape_profile_inc = {} + # regional_dr_shape_profile_dec = {} + # for dr_type in dr_types: + # type_cols_inc = [col for col in state_dr_shape_profile_inc.columns if col.startswith(dr_type)] + # type_cols_dec = [col for col in state_dr_shape_profile_dec.columns if col.startswith(dr_type)] + # reg_shape_inc = state_dr_shape_profile_inc[type_cols_inc].copy() + # reg_shape_dec = state_dr_shape_profile_dec[type_cols_dec].copy() + # reg_shape_inc.columns = [col.split('|')[1] for col in reg_shape_inc.columns] + # reg_shape_dec.columns = [col.split('|')[1] for col in reg_shape_dec.columns] + + # reg_shape_inc = reaggregate_to_model_regions( + # reg_shape_inc, + # inputs_case, + # 'state_lpf', + # dr_data=True, + # dr_type='fraction', + # ) + # reg_shape_dec = reaggregate_to_model_regions( + # reg_shape_dec, + # inputs_case, + # 'state_lpf', + # dr_data=True, + # dr_type='fraction', + # ) + + # reg_shape_inc = reg_shape_inc.reset_index().set_index(['datetime']) + # reg_shape_dec = reg_shape_dec.reset_index().set_index(['datetime']) + # # Add back dr type to column header + # reg_shape_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_inc.columns] + # reg_shape_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_dec.columns] + + # regional_dr_shape_profile_inc[dr_type] = reg_shape_inc + # regional_dr_shape_profile_dec[dr_type] = reg_shape_dec + + # # Combined dr shape types + # regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) + # regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) + + # # Remove duplucate year columns + # regional_dr_shape_profile_inc = regional_dr_shape_profile_inc.loc[:,~regional_dr_shape_profile_inc.columns.duplicated()] + # regional_dr_shape_profile_dec = regional_dr_shape_profile_dec.loc[:,~regional_dr_shape_profile_dec.columns.duplicated()] + + # #%%%######################################### + # # -- DR Shape or Shift Load Modifications -- # + # ############################################# + # # + # if int(sw.GSw_DRShift): + + # state_dr_shift_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_increase.h5')) + # state_dr_shift_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5')) + # state_dr_shift_profile_energy = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_energy.h5')) + + # # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] + # state_dr_shift_profile_inc = state_dr_shift_profile_inc.reset_index().set_index(['year','datetime']) + # state_dr_shift_profile_dec = state_dr_shift_profile_dec.reset_index().set_index(['year','datetime']) + # state_dr_shift_profile_energy = state_dr_shift_profile_energy.reset_index().set_index(['year','datetime']) + + # dr_types = list({x.split('|')[0] for x in state_dr_shift_profile_inc.columns[1:]}) + # regional_dr_shift_profile_inc = {} + # regional_dr_shift_profile_dec = {} + # regional_dr_shift_profile_energy = {} + # for dr_type in dr_types: + # type_cols_inc = [col for col in state_dr_shift_profile_inc.columns if col.startswith(dr_type)] + # type_cols_dec = [col for col in state_dr_shift_profile_dec.columns if col.startswith(dr_type)] + # type_cols_energy = [col for col in state_dr_shift_profile_energy.columns if col.startswith(dr_type)] + # reg_shift_inc = state_dr_shift_profile_inc[type_cols_inc].copy() + # reg_shift_dec = state_dr_shift_profile_dec[type_cols_dec].copy() + # reg_shift_energy = state_dr_shift_profile_energy[type_cols_energy].copy() + # reg_shift_inc.columns = [col.split('|')[1] for col in reg_shift_inc.columns] + # reg_shift_dec.columns = [col.split('|')[1] for col in reg_shift_dec.columns] + # reg_shift_energy.columns = [col.split('|')[1] for col in reg_shift_energy.columns] + + # reg_shift_inc = reaggregate_to_model_regions( + # reg_shift_inc, + # inputs_case, + # 'state_lpf', + # dr_data=True, + # dr_type='fraction', + # ) + # reg_shift_dec = reaggregate_to_model_regions( + # reg_shift_dec, + # inputs_case, + # 'state_lpf', + # dr_data=True, + # dr_type='fraction', + # ) + # reg_shift_energy = reaggregate_to_model_regions( + # reg_shift_energy, + # inputs_case, + # 'state_lpf', + # dr_data=True, + # dr_type='fraction', + # ) + + # reg_shift_inc = reg_shift_inc.reset_index().set_index(['datetime']) + # reg_shift_dec = reg_shift_dec.reset_index().set_index(['datetime']) + # reg_shift_energy = reg_shift_energy.reset_index().set_index(['datetime']) + # # Add back dr type to column header + # reg_shift_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_inc.columns] + # reg_shift_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_dec.columns] + # reg_shift_energy.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_energy.columns] + + # regional_dr_shift_profile_inc[dr_type] = reg_shift_inc + # regional_dr_shift_profile_dec[dr_type] = reg_shift_dec + # regional_dr_shift_profile_energy[dr_type] = reg_shift_energy + + # # Combined dr shape types + # regional_dr_shift_profile_inc = pd.concat(regional_dr_shift_profile_inc.values(), axis=1) + # regional_dr_shift_profile_dec = pd.concat(regional_dr_shift_profile_dec.values(), axis=1) + # regional_dr_shift_profile_energy = pd.concat(regional_dr_shift_profile_energy.values(), axis=1) + + # # Remove duplucate year columns + # regional_dr_shift_profile_inc = regional_dr_shift_profile_inc.loc[:,~regional_dr_shift_profile_inc.columns.duplicated()] + # regional_dr_shift_profile_dec = regional_dr_shift_profile_dec.loc[:,~regional_dr_shift_profile_dec.columns.duplicated()] + # regional_dr_shift_profile_energy = regional_dr_shift_profile_energy.loc[:,~regional_dr_shift_profile_energy.columns.duplicated()] + +#%% + # #%%%############################################ + # # -- DR Shed, Shape, Shift Load Modifications -- # + # ################################################ + def process_dr_profiles(profile_type, file_suffix, dr_data=False, dr_agg_type=None): + state_profiles = reeds.io.read_file(os.path.join(inputs_case, f'dr_{profile_type}_profile_{file_suffix}.h5')) + state_profiles = state_profiles.reset_index().set_index(['year', 'datetime']) + dr_types = list({x.split('|')[0] for x in state_profiles.columns[1:]}) + regional_profiles = {} - # Reformat to match state load profiles - state_dr_shed_hourly = state_dr_shed_hourly.reset_index().set_index(['year','datetime']) - regional_dr_shed_hourly = {} for dr_type in dr_types: - type_cols = [col for col in state_dr_shed_hourly.columns if col.startswith(dr_type)] - reg_shed = state_dr_shed_hourly[type_cols].copy() - reg_shed.columns = [col.split('|')[1] for col in reg_shed.columns] - reg_shed = reaggregate_to_model_regions( - reg_shed, + type_cols = [col for col in state_profiles.columns if col.startswith(dr_type)] + reg_profile = state_profiles[type_cols].copy() + reg_profile.columns = [col.split('|')[1] for col in reg_profile.columns] + reg_profile = reaggregate_to_model_regions( + reg_profile, inputs_case, 'state_lpf', - dr_data=True + dr_data=dr_data, + dr_agg_type=dr_agg_type ) - # Add back dr type to column header - reg_shed.columns = [f"{dr_type}|{col}" for col in reg_shed.columns] - reg_shed = reg_shed.reset_index() - if isinstance(reg_shed['datetime'].iloc[0], bytes): - reg_shed['datetime'] = reg_shed['datetime'].str.decode('utf-8') - reg_shed['datetime'] = pd.to_datetime(reg_shed['datetime']) - reg_shed = reg_shed.set_index(['year','datetime']) - regional_dr_shed_hourly[dr_type] = reg_shed - - # Combined dr shed types - regional_dr_shed_hourly = pd.concat(regional_dr_shed_hourly.values(), axis=1) - regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) - regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) - - #%%%######################################### - # -- DR Shape Load Modifications -- # - ############################################# - # - if int(sw.GSw_DRShape): - state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) - state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) - - # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] - state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index().set_index(['year','datetime']) - state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index().set_index(['year','datetime']) - - dr_types = list({x.split('|')[0] for x in state_dr_shape_profile_inc.columns[1:]}) - regional_dr_shape_profile_inc = {} - regional_dr_shape_profile_dec = {} - for dr_type in dr_types: - type_cols_inc = [col for col in state_dr_shape_profile_inc.columns if col.startswith(dr_type)] - type_cols_dec = [col for col in state_dr_shape_profile_dec.columns if col.startswith(dr_type)] - reg_shape_inc = state_dr_shape_profile_inc[type_cols_inc].copy() - reg_shape_dec = state_dr_shape_profile_dec[type_cols_dec].copy() - reg_shape_inc.columns = [col.split('|')[1] for col in reg_shape_inc.columns] - reg_shape_dec.columns = [col.split('|')[1] for col in reg_shape_dec.columns] - - reg_shape_inc = reaggregate_to_model_regions( - reg_shape_inc, - inputs_case, - 'state_lpf', - dr_data=True, - dr_type='fraction', - ) - reg_shape_dec = reaggregate_to_model_regions( - reg_shape_dec, - inputs_case, - 'state_lpf', - dr_data=True, - dr_type='fraction', - ) - - reg_shape_inc = reg_shape_inc.reset_index().set_index(['datetime']) - reg_shape_dec = reg_shape_dec.reset_index().set_index(['datetime']) - # Add back dr type to column header - reg_shape_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_inc.columns] - reg_shape_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_dec.columns] - - regional_dr_shape_profile_inc[dr_type] = reg_shape_inc - regional_dr_shape_profile_dec[dr_type] = reg_shape_dec - - # Combined dr shape types - regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) - regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) - - # Remove duplucate year columns - regional_dr_shape_profile_inc = regional_dr_shape_profile_inc.loc[:,~regional_dr_shape_profile_inc.columns.duplicated()] - regional_dr_shape_profile_dec = regional_dr_shape_profile_dec.loc[:,~regional_dr_shape_profile_dec.columns.duplicated()] + reg_profile = reg_profile.reset_index().set_index(['datetime']) + reg_profile.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_profile.columns] + regional_profiles[dr_type] = reg_profile - #%%%######################################### - # -- DR Shape or Shift Load Modifications -- # - ############################################# - # - if int(sw.GSw_DRShift): - - state_dr_shift_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_increase.h5')) - state_dr_shift_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5')) - state_dr_shift_profile_energy = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_energy.h5')) - - # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] - state_dr_shift_profile_inc = state_dr_shift_profile_inc.reset_index().set_index(['year','datetime']) - state_dr_shift_profile_dec = state_dr_shift_profile_dec.reset_index().set_index(['year','datetime']) - state_dr_shift_profile_energy = state_dr_shift_profile_energy.reset_index().set_index(['year','datetime']) - - dr_types = list({x.split('|')[0] for x in state_dr_shift_profile_inc.columns[1:]}) - regional_dr_shift_profile_inc = {} - regional_dr_shift_profile_dec = {} - regional_dr_shift_profile_energy = {} - for dr_type in dr_types: - type_cols_inc = [col for col in state_dr_shift_profile_inc.columns if col.startswith(dr_type)] - type_cols_dec = [col for col in state_dr_shift_profile_dec.columns if col.startswith(dr_type)] - type_cols_energy = [col for col in state_dr_shift_profile_energy.columns if col.startswith(dr_type)] - reg_shift_inc = state_dr_shift_profile_inc[type_cols_inc].copy() - reg_shift_dec = state_dr_shift_profile_dec[type_cols_dec].copy() - reg_shift_energy = state_dr_shift_profile_energy[type_cols_energy].copy() - reg_shift_inc.columns = [col.split('|')[1] for col in reg_shift_inc.columns] - reg_shift_dec.columns = [col.split('|')[1] for col in reg_shift_dec.columns] - reg_shift_energy.columns = [col.split('|')[1] for col in reg_shift_energy.columns] - - reg_shift_inc = reaggregate_to_model_regions( - reg_shift_inc, - inputs_case, - 'state_lpf', - dr_data=True, - dr_type='fraction', - ) - reg_shift_dec = reaggregate_to_model_regions( - reg_shift_dec, - inputs_case, - 'state_lpf', - dr_data=True, - dr_type='fraction', - ) - reg_shift_energy = reaggregate_to_model_regions( - reg_shift_energy, - inputs_case, - 'state_lpf', - dr_data=True, - dr_type='energy', - ) + combined_profiles = pd.concat(regional_profiles.values(), axis=1) + combined_profiles = combined_profiles.loc[:, ~combined_profiles.columns.duplicated()] + return combined_profiles - reg_shift_inc = reg_shift_inc.reset_index().set_index(['datetime']) - reg_shift_dec = reg_shift_dec.reset_index().set_index(['datetime']) - reg_shift_energy = reg_shift_energy.reset_index().set_index(['datetime']) - # Add back dr type to column header - reg_shift_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_inc.columns] - reg_shift_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_dec.columns] - reg_shift_energy.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_energy.columns] + if int(sw.GSw_DRShed): + regional_dr_shed_hourly = process_dr_profiles('shed', 'hourly', dr_data=True) - regional_dr_shift_profile_inc[dr_type] = reg_shift_inc - regional_dr_shift_profile_dec[dr_type] = reg_shift_dec - regional_dr_shift_profile_energy[dr_type] = reg_shift_energy + if int(sw.GSw_DRShape): + regional_dr_shape_profile_inc = process_dr_profiles('shape', 'increase', dr_data=True, dr_agg_type='fraction') + regional_dr_shape_profile_dec = process_dr_profiles('shape', 'decrease', dr_data=True, dr_agg_type='fraction') - # Combined dr shape types - regional_dr_shift_profile_inc = pd.concat(regional_dr_shift_profile_inc.values(), axis=1) - regional_dr_shift_profile_dec = pd.concat(regional_dr_shift_profile_dec.values(), axis=1) - regional_dr_shift_profile_energy = pd.concat(regional_dr_shift_profile_energy.values(), axis=1) + if int(sw.GSw_DRShift): + regional_dr_shift_profile_inc = process_dr_profiles('shift', 'increase', dr_data=True, dr_agg_type='fraction') + regional_dr_shift_profile_dec = process_dr_profiles('shift', 'decrease', dr_data=True, dr_agg_type='fraction') + regional_dr_shift_profile_energy = process_dr_profiles('shift', 'energy', dr_data=True, dr_agg_type='fraction') - # Remove duplucate year columns - regional_dr_shift_profile_inc = regional_dr_shift_profile_inc.loc[:,~regional_dr_shift_profile_inc.columns.duplicated()] - regional_dr_shift_profile_dec = regional_dr_shift_profile_dec.loc[:,~regional_dr_shift_profile_dec.columns.duplicated()] - regional_dr_shift_profile_energy = regional_dr_shift_profile_energy.loc[:,~regional_dr_shift_profile_energy.columns.duplicated()] #%%########################### @@ -906,7 +948,7 @@ def main(reeds_path, inputs_case): regional_dr_shift_profile_inc.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_increase.h5'), key='data', complevel=4) regional_dr_shift_profile_dec.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5'), key='data', complevel=4) regional_dr_shift_profile_energy.to_hdf(os.path.join(inputs_case, 'dr_shift_profile_energy.h5'), key='data', complevel=4) - + #%% =========================================================================== ### --- PROCEDURE --- ### =========================================================================== From 9510c2712adcdfe9156ec789702d7aa9ae201e08 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Fri, 11 Sep 2026 19:15:39 +0000 Subject: [PATCH 20/25] add shape and shift to tech agg for plots --- cases_dr.csv | 4 +- .../supply_curve/dr_shift_cap_ex_dr1 copy.csv | 3 + inputs/supply_curve/dr_shift_cap_ex_dr1.csv | 4 +- postprocessing/tech_aggregation.csv | 2 + reeds/input_processing/hourly_load.py | 171 +----------------- 5 files changed, 15 insertions(+), 169 deletions(-) create mode 100644 inputs/supply_curve/dr_shift_cap_ex_dr1 copy.csv diff --git a/cases_dr.csv b/cases_dr.csv index 602b44aaa..2465dcaf5 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,6 +1,7 @@ ,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,1,0,0,1,1 +ignore,1,0,1,1,0,1 endyear,,2032,2032,2032,2032,2032 +yearset,2010_2015_2020..2050..3,,,,, GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific GSw_ZoneSet,,,z132,z132,z54,z54 GSw_GasCurve,,2,2,2,2,2 @@ -15,7 +16,6 @@ GSw_Biopower,,,,,, GSw_Nuclear,,,,,, GSw_HourlyChunkLengthRep,,,,,, GSw_HourlyChunkLengthStress,,,,,, -yearset,,,,,, GSw_DRShed,,1,,,1, GSw_DRShape,,,1,,,1 GSw_DRShift,,,,1,, diff --git a/inputs/supply_curve/dr_shift_cap_ex_dr1 copy.csv b/inputs/supply_curve/dr_shift_cap_ex_dr1 copy.csv new file mode 100644 index 000000000..38910dd00 --- /dev/null +++ b/inputs/supply_curve/dr_shift_cap_ex_dr1 copy.csv @@ -0,0 +1,3 @@ +tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY +dr_shift_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 +dr_shift_2,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 diff --git a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv index 38910dd00..62d181a4a 100644 --- a/inputs/supply_curve/dr_shift_cap_ex_dr1.csv +++ b/inputs/supply_curve/dr_shift_cap_ex_dr1.csv @@ -1,3 +1,3 @@ tech,rscbin,AL,AR,AZ,CA,CO,CT,DE,FL,GA,IA,ID,IL,IN,KS,KY,LA,MA,MD,ME,MI,MN,MO,MS,MT,NC,ND,NE,NH,NJ,NM,NV,NY,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VA,VT,WA,WI,WV,WY -dr_shift_1,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 -dr_shift_2,bin1,828.855,469.828,1058.451,2881.34,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,611.593,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,824.207,631.026,234.371,168.126 +dr_shift_1,bin1,828.855,469.828,1058.451,5000,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,5000,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,5000,631.026,234.371,168.126 +dr_shift_2,bin1,828.855,469.828,1058.451,5000,564.132,292.425,95.719,3025.879,1528.56,615.945,229.611,2943.118,982.596,401.506,664.301,872.38,593.547,131.561,111.719,1022.778,652.412,781.962,461.213,142.599,1415.284,312.802,369.041,110.391,671.773,281.89,448.869,1463.55,1241.755,681.488,5000,1118.318,76.103,811.415,114.233,1029.448,5282.858,386.824,945.596,55.066,5000,631.026,234.371,168.126 diff --git a/postprocessing/tech_aggregation.csv b/postprocessing/tech_aggregation.csv index ac001ff18..afa6a6188 100644 --- a/postprocessing/tech_aggregation.csv +++ b/postprocessing/tech_aggregation.csv @@ -63,6 +63,8 @@ wind-ons,Onshore Wind,Wind,VRE,Onshore Wind csp,CSP,Solar,VRE,CSP csp-ns,CSP,Solar,VRE,CSP dr_shed,DR Shed,DR,DR,DR Shed +dr_shape,DR Shape,DR,DR,DR Shape +dr_shift,DR Shift,DR,DR,DR Shift hydro,Hydropower,Hydropower,Hydropower,Hydropower Existing hyde,Hydropower,Hydropower,Hydropower,Hydropower Existing hydd,Hydropower,Hydropower,Hydropower,Hydropower New diff --git a/reeds/input_processing/hourly_load.py b/reeds/input_processing/hourly_load.py index 6193f9c87..ee30babd8 100644 --- a/reeds/input_processing/hourly_load.py +++ b/reeds/input_processing/hourly_load.py @@ -713,176 +713,15 @@ def main(reeds_path, inputs_case): peakload = calculate_peak_load(regional_load_hourly, hierarchy) - # #%%%######################################### - # # -- DR Shed Load Modifications -- # - # ############################################# - - # if int(sw.GSw_DRShed): - # state_dr_shed_hourly = reeds.io.read_file(os.path.join(inputs_case, 'dr_shed_hourly.h5')) - # dr_types = list({x.split('|')[0] for x in state_dr_shed_hourly.columns[1:]}) - - # # Reformat to match state load profiles - # state_dr_shed_hourly = state_dr_shed_hourly.reset_index().set_index(['year','datetime']) - # regional_dr_shed_hourly = {} - # for dr_type in dr_types: - # type_cols = [col for col in state_dr_shed_hourly.columns if col.startswith(dr_type)] - # reg_shed = state_dr_shed_hourly[type_cols].copy() - # reg_shed.columns = [col.split('|')[1] for col in reg_shed.columns] - # reg_shed = reaggregate_to_model_regions( - # reg_shed, - # inputs_case, - # 'state_lpf', - # dr_data=True - # ) - # # Add back dr type to column header - # reg_shed.columns = [f"{dr_type}|{col}" for col in reg_shed.columns] - # reg_shed = reg_shed.reset_index() - # if isinstance(reg_shed['datetime'].iloc[0], bytes): - # reg_shed['datetime'] = reg_shed['datetime'].str.decode('utf-8') - # reg_shed['datetime'] = pd.to_datetime(reg_shed['datetime']) - # reg_shed = reg_shed.set_index(['year','datetime']) - # regional_dr_shed_hourly[dr_type] = reg_shed - - # # Combined dr shed types - # regional_dr_shed_hourly = pd.concat(regional_dr_shed_hourly.values(), axis=1) - # regional_dr_shed_hourly = regional_dr_shed_hourly.astype(np.float32) - # regional_dr_shed_hourly = regional_dr_shed_hourly.reset_index().set_index(['datetime']) - - # #%%%######################################### - # # -- DR Shape Load Modifications -- # - # ############################################# - # # - # if int(sw.GSw_DRShape): - # state_dr_shape_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_increase.h5')) - # state_dr_shape_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shape_profile_decrease.h5')) - - # # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] - # state_dr_shape_profile_inc = state_dr_shape_profile_inc.reset_index().set_index(['year','datetime']) - # state_dr_shape_profile_dec = state_dr_shape_profile_dec.reset_index().set_index(['year','datetime']) - - # dr_types = list({x.split('|')[0] for x in state_dr_shape_profile_inc.columns[1:]}) - # regional_dr_shape_profile_inc = {} - # regional_dr_shape_profile_dec = {} - # for dr_type in dr_types: - # type_cols_inc = [col for col in state_dr_shape_profile_inc.columns if col.startswith(dr_type)] - # type_cols_dec = [col for col in state_dr_shape_profile_dec.columns if col.startswith(dr_type)] - # reg_shape_inc = state_dr_shape_profile_inc[type_cols_inc].copy() - # reg_shape_dec = state_dr_shape_profile_dec[type_cols_dec].copy() - # reg_shape_inc.columns = [col.split('|')[1] for col in reg_shape_inc.columns] - # reg_shape_dec.columns = [col.split('|')[1] for col in reg_shape_dec.columns] - - # reg_shape_inc = reaggregate_to_model_regions( - # reg_shape_inc, - # inputs_case, - # 'state_lpf', - # dr_data=True, - # dr_type='fraction', - # ) - # reg_shape_dec = reaggregate_to_model_regions( - # reg_shape_dec, - # inputs_case, - # 'state_lpf', - # dr_data=True, - # dr_type='fraction', - # ) - - # reg_shape_inc = reg_shape_inc.reset_index().set_index(['datetime']) - # reg_shape_dec = reg_shape_dec.reset_index().set_index(['datetime']) - # # Add back dr type to column header - # reg_shape_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_inc.columns] - # reg_shape_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shape_dec.columns] - - # regional_dr_shape_profile_inc[dr_type] = reg_shape_inc - # regional_dr_shape_profile_dec[dr_type] = reg_shape_dec - - # # Combined dr shape types - # regional_dr_shape_profile_inc = pd.concat(regional_dr_shape_profile_inc.values(), axis=1) - # regional_dr_shape_profile_dec = pd.concat(regional_dr_shape_profile_dec.values(), axis=1) - - # # Remove duplucate year columns - # regional_dr_shape_profile_inc = regional_dr_shape_profile_inc.loc[:,~regional_dr_shape_profile_inc.columns.duplicated()] - # regional_dr_shape_profile_dec = regional_dr_shape_profile_dec.loc[:,~regional_dr_shape_profile_dec.columns.duplicated()] - - # #%%%######################################### - # # -- DR Shape or Shift Load Modifications -- # - # ############################################# - # # - # if int(sw.GSw_DRShift): - - # state_dr_shift_profile_inc = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_increase.h5')) - # state_dr_shift_profile_dec = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_decrease.h5')) - # state_dr_shift_profile_energy = reeds.io.read_file(os.path.join(inputs_case, 'dr_shift_profile_energy.h5')) - - # # To use reaggreagte_to_model_regions function, need to reformat inc/dec df so index = ['year','hour'] - # state_dr_shift_profile_inc = state_dr_shift_profile_inc.reset_index().set_index(['year','datetime']) - # state_dr_shift_profile_dec = state_dr_shift_profile_dec.reset_index().set_index(['year','datetime']) - # state_dr_shift_profile_energy = state_dr_shift_profile_energy.reset_index().set_index(['year','datetime']) - - # dr_types = list({x.split('|')[0] for x in state_dr_shift_profile_inc.columns[1:]}) - # regional_dr_shift_profile_inc = {} - # regional_dr_shift_profile_dec = {} - # regional_dr_shift_profile_energy = {} - # for dr_type in dr_types: - # type_cols_inc = [col for col in state_dr_shift_profile_inc.columns if col.startswith(dr_type)] - # type_cols_dec = [col for col in state_dr_shift_profile_dec.columns if col.startswith(dr_type)] - # type_cols_energy = [col for col in state_dr_shift_profile_energy.columns if col.startswith(dr_type)] - # reg_shift_inc = state_dr_shift_profile_inc[type_cols_inc].copy() - # reg_shift_dec = state_dr_shift_profile_dec[type_cols_dec].copy() - # reg_shift_energy = state_dr_shift_profile_energy[type_cols_energy].copy() - # reg_shift_inc.columns = [col.split('|')[1] for col in reg_shift_inc.columns] - # reg_shift_dec.columns = [col.split('|')[1] for col in reg_shift_dec.columns] - # reg_shift_energy.columns = [col.split('|')[1] for col in reg_shift_energy.columns] - - # reg_shift_inc = reaggregate_to_model_regions( - # reg_shift_inc, - # inputs_case, - # 'state_lpf', - # dr_data=True, - # dr_type='fraction', - # ) - # reg_shift_dec = reaggregate_to_model_regions( - # reg_shift_dec, - # inputs_case, - # 'state_lpf', - # dr_data=True, - # dr_type='fraction', - # ) - # reg_shift_energy = reaggregate_to_model_regions( - # reg_shift_energy, - # inputs_case, - # 'state_lpf', - # dr_data=True, - # dr_type='fraction', - # ) - - # reg_shift_inc = reg_shift_inc.reset_index().set_index(['datetime']) - # reg_shift_dec = reg_shift_dec.reset_index().set_index(['datetime']) - # reg_shift_energy = reg_shift_energy.reset_index().set_index(['datetime']) - # # Add back dr type to column header - # reg_shift_inc.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_inc.columns] - # reg_shift_dec.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_dec.columns] - # reg_shift_energy.columns = [f"{dr_type}|{col}" if col not in ['year'] else col for col in reg_shift_energy.columns] - - # regional_dr_shift_profile_inc[dr_type] = reg_shift_inc - # regional_dr_shift_profile_dec[dr_type] = reg_shift_dec - # regional_dr_shift_profile_energy[dr_type] = reg_shift_energy - - # # Combined dr shape types - # regional_dr_shift_profile_inc = pd.concat(regional_dr_shift_profile_inc.values(), axis=1) - # regional_dr_shift_profile_dec = pd.concat(regional_dr_shift_profile_dec.values(), axis=1) - # regional_dr_shift_profile_energy = pd.concat(regional_dr_shift_profile_energy.values(), axis=1) - - # # Remove duplucate year columns - # regional_dr_shift_profile_inc = regional_dr_shift_profile_inc.loc[:,~regional_dr_shift_profile_inc.columns.duplicated()] - # regional_dr_shift_profile_dec = regional_dr_shift_profile_dec.loc[:,~regional_dr_shift_profile_dec.columns.duplicated()] - # regional_dr_shift_profile_energy = regional_dr_shift_profile_energy.loc[:,~regional_dr_shift_profile_energy.columns.duplicated()] - #%% # #%%%############################################ # # -- DR Shed, Shape, Shift Load Modifications -- # # ################################################ def process_dr_profiles(profile_type, file_suffix, dr_data=False, dr_agg_type=None): - state_profiles = reeds.io.read_file(os.path.join(inputs_case, f'dr_{profile_type}_profile_{file_suffix}.h5')) + if profile_type == 'shed': + state_profiles = reeds.io.read_file(os.path.join(inputs_case, f'dr_{profile_type}_hourly.h5')) + else: + state_profiles = reeds.io.read_file(os.path.join(inputs_case, f'dr_{profile_type}_profile_{file_suffix}.h5')) state_profiles = state_profiles.reset_index().set_index(['year', 'datetime']) dr_types = list({x.split('|')[0] for x in state_profiles.columns[1:]}) regional_profiles = {} @@ -904,6 +743,8 @@ def process_dr_profiles(profile_type, file_suffix, dr_data=False, dr_agg_type=No combined_profiles = pd.concat(regional_profiles.values(), axis=1) combined_profiles = combined_profiles.loc[:, ~combined_profiles.columns.duplicated()] + combined_profiles['year'] = combined_profiles['year'].astype('float64') + return combined_profiles if int(sw.GSw_DRShed): From 93ada4972a5ac4fa478a40ce94f50bfd07d77b19 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Fri, 11 Sep 2026 14:40:09 -0600 Subject: [PATCH 21/25] Add documentation --- docs/source/model_documentation.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/source/model_documentation.md b/docs/source/model_documentation.md index 4d467277d..d11b56bcb 100644 --- a/docs/source/model_documentation.md +++ b/docs/source/model_documentation.md @@ -1819,7 +1819,7 @@ For example, price-responsive dispatch mechanisms like time-of-use rates or real On the other hand, direct load control programs often involve two-way communications between a utility or an aggregator and devices (e.g., thermostat, electric vehicle charger, industrial equipment) whose consumption patterns are modified to shed or shift load away from peak or reliability event times. ReEDS represents price-responsive DR as a resource that modifies load based on exogenous shapes and represents direct load control programs as dispatchable shed or shift resources. -DR is turned off by default in ReEDS, but the user has the option to enable DR via load shedding. +DR is turned off by default in ReEDS, but the user has the option to enable DR via three types of demand response resources. #### Load Shedding @@ -1830,6 +1830,14 @@ The capital costs for the residential resource are derived from the installation In addition to only allowing the shed resource to be dispatched during stress periods, a max daily capacity factor is defined. For the residential heating and cooling resources the max daily capacity factor is set to 4 hours per day. +#### Adoptable Load Shape Modification + +This load management method reflects price-responsive demand response resources and is classified as a DR Shape technology in the model. DR-Shape is implemented in ReEDS as an endogenous flexibility resource rooted in pre-computed shape profiles that characterize the potential for deferred demand. The resource is represented as hourly time series of fractions describing two quantities: the share of load that can be delayed away from its baseline hour ("generation," in the sense of load reduction), and the corresponding additional load that appears in a later hour when the deferred energy is consumed. These fractional profiles are coupled with the adopted DR Shape capaicty the model chooses to invest in, with the upper bound on adoptable capacity informed by the MW quantity of load eligible to participate in demand response. In the model, the DR-Shape "generation" fraction is subtracted from the load in the hours when deferral occurs, while the "load" fraction is added back in the hours when deferred energy is recovered, such that net energy consumption is conserved. These adjusted load profiles — reflecting both the reduction and the payback — are also carried through to the Probabilistic Resource Adequacy Suite (PRAS), so that the reliability assessment accounts for the modified load shape produced by DR-Shape adoption. + +#### Load Shifting + +DR-Shift is implemented in ReEDS as an endogenous flexibility resource that represents load-shifting potential through a storage-like formulation with time-dependent charge and discharge bounds. Rather than pre-computing fixed shape profiles, DR-Shift is characterized by three inputs: a discharge profile defining the baseline load available to be deferred in each hour (equivalent to immediate consumption if the resource is not participating in demand response), a charge profile defining the outer bound on when deferred energy can be recovered (the latest possible payback window), and an energy profile defining the maximum cumulative quantity of load that could have been deferred from previous hours. Within the ReEDS optimization, DR-Shift is dispatched endogenously subject to three constraints: a capacity constraint ensuring that resource use does not exceed time-varying availability, a storage level constraint that tracks the state of charge of the DR-Shift device, and a duration constraint ensuring that the storage level does not exceed the time-varying energy capacity at any hour. This formulation is intended to reflect direct load control programs in which a utility or aggregator can shift flexible end-use loads — such as water heating, space conditioning, or electric vehicle charging — within bounded windows, conserving net energy consumption while allowing the optimization to determine the least-cost dispatch timing across the planning horizon. + ## Transmission ReEDS considers two categories of transmission: "local interconnection" of generation capacity within the model zones and "interzonal" or "long-distance" transmission between the model zones. From 50ed6303ec628afee7a821fd4cca3b679cb94698 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Tue, 15 Sep 2026 14:11:40 -0600 Subject: [PATCH 22/25] Add shape and shift data to remote_files.csv --- docs/source/model_documentation.md | 4 +- docs/source/user_guide.md | 6 ++- inputs/demand_response/README.md | 35 ++++++++++++++- ...shed_cap_scalar_demo_data_January_2025.csv | 44 +++++++++---------- inputs/remote_files.csv | 5 +++ 5 files changed, 67 insertions(+), 27 deletions(-) diff --git a/docs/source/model_documentation.md b/docs/source/model_documentation.md index d11b56bcb..cb222c81c 100644 --- a/docs/source/model_documentation.md +++ b/docs/source/model_documentation.md @@ -1562,7 +1562,7 @@ The 2026 limits are based on plants with a signed interconnection agreement, and Values between years are interpolated based on the 2026 and 2030 points. The limits are applied regionally by technology. -To avoid infeasibility, the constraint allows for a technology to be built over the capacity limits with a penalty of $10,000/kW. +To avoid infeasibility, the constraint allows a technology to be built over the capacity limits with a penalty of $10,000/kW. ### Regional Parameter Variations and Adjustments @@ -1832,7 +1832,7 @@ For the residential heating and cooling resources the max daily capacity factor #### Adoptable Load Shape Modification -This load management method reflects price-responsive demand response resources and is classified as a DR Shape technology in the model. DR-Shape is implemented in ReEDS as an endogenous flexibility resource rooted in pre-computed shape profiles that characterize the potential for deferred demand. The resource is represented as hourly time series of fractions describing two quantities: the share of load that can be delayed away from its baseline hour ("generation," in the sense of load reduction), and the corresponding additional load that appears in a later hour when the deferred energy is consumed. These fractional profiles are coupled with the adopted DR Shape capaicty the model chooses to invest in, with the upper bound on adoptable capacity informed by the MW quantity of load eligible to participate in demand response. In the model, the DR-Shape "generation" fraction is subtracted from the load in the hours when deferral occurs, while the "load" fraction is added back in the hours when deferred energy is recovered, such that net energy consumption is conserved. These adjusted load profiles — reflecting both the reduction and the payback — are also carried through to the Probabilistic Resource Adequacy Suite (PRAS), so that the reliability assessment accounts for the modified load shape produced by DR-Shape adoption. +This load management method reflects price-responsive demand response resources and is classified as a DR Shape technology in the model. DR-Shape is implemented in ReEDS as an endogenous flexibility resource rooted in pre-computed shape profiles that characterize the potential for deferred demand. The resource is represented as hourly time series of fractions describing two quantities: the share of load that can be delayed away from its baseline hour ("generation," in the sense of load reduction), and the corresponding additional load that appears in a later hour when the deferred energy is consumed. These fractional profiles are coupled with the adopted DR Shape capaicty the model chooses to invest in, with the upper bound on adoptable capacity informed by the MW quantity of load eligible to participate in demand response. In the model, the DR-Shape "generation" fraction is subtracted from the load in the hours when deferral occurs, while the "load" fraction is added back in the hours when deferred energy is recovered, such that net energy consumption is conserved. These adjusted load profiles — reflecting both the reduction and the payback — are also carried through to the Probabilistic Resource Adequacy Suite (PRAS), so that the reliability assessment accounts for the modified load shape produced by DR-Shape adoption. #### Load Shifting diff --git a/docs/source/user_guide.md b/docs/source/user_guide.md index 4a041a9e0..49bd99557 100644 --- a/docs/source/user_guide.md +++ b/docs/source/user_guide.md @@ -141,9 +141,13 @@ For EER’s load profiles, “weather” includes everything considered by NLR's Demand response is turned off by default. To enable it the following switches are needed: -- `GSw_DRShed`: turns on/off the demand response resource +- `GSw_DRShed`: turns on/off the demand response shed resource - `GSw_MaxDailyCF` : turns on/off daily maximum capacity factor constraint - `dr_shedscen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profile +- `GSw_DRShape`: turns on/off the demand response shape resource +- `dr_shapescen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profiles +- `GSw_DRShift`: turns on/off the demand response shift resource +- `dr_shiftscen`: scenario to define which scalars will be used for the supply curve cost and capacity, VOM, FOM, and hourly profiles ## Hydrogen inputs diff --git a/inputs/demand_response/README.md b/inputs/demand_response/README.md index 577d08a86..574f5c3c8 100644 --- a/inputs/demand_response/README.md +++ b/inputs/demand_response/README.md @@ -1,5 +1,36 @@ ## Demand Response Input Files -- `dr_shed_avail_scalar.csv`: +### DR Shed Input Files -- `dr_shed_capacity_scalar_demo_data_January_2025.csv`: +- **`dr_shed_hourly_{dr_shedscen}.h5`**: Hourly DR shed resource availability. +- **`inputs/supply_curve/dr_shed_cost_{dr_shedscen}.csv`**: Supply curve cost [$/MW]. Represents the installation cost for the DR-enabling technology (program implementation or procurement costs are not included) in 2020 dollars. +- **`inputs/plant_characteristics/dr_shed_capcost_scalars_{dr_shedscen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050. +- **`inputs/supply_curve/dr_shed_cap_{dr_shedscen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each ReEDS zone from the hourly shed data. +- **`inputs/demand_response/dr_shed_capacity_scalar_{dr_shedscen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050. +- **`inputs/plant_characteristics/dr_shed_vom_{dr_shedscen}.csv`**: Variable operation and maintenance costs for the DR Shed resource [$/MWh]. +- **`inputs/plant_characteristics/dr_shed_fom_{dr_shedscen}.csv`**: Fixed operation and maintenance costs for the DR Shed resource [$/MWh]. +- **`inputs/demand_response/dr_shed_avail_scalar.csv`**: Scalar representing the response rate of the resource by decrementing availability. Set to 1 by default. +- **`inputs/plant_characteristics/maxdailycf.csv`**: Defines the maximum daily capacity factor for any technology. Default is 4 hours per day for DR shed (0.167 = 4/24). + +### DR Shape Input Files + +- **`dr_shape_decrease_profile_{dr_shapescen}.h5`**: Hourly time series of fractions representing the amount of “generation” (load that can be delayed). +- **`dr_shape_increase_profile_{dr_shapescen}.h5`**: Hourly time series of fractions representing the amount of added load in a later hour (deferred). +- **`inputs/supply_curve/dr_shape_cost_{dr_shapescen}.csv`**: Supply curve cost [$/MW]. Assumed to be 0 in the demonstration data. +- **`inputs/supply_curve/dr_shape_cap_{dr_shapescen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each state from the hourly shape data. +- **`inputs/plant_characteristics/dr_shape_cost_scalars_{dr_shapescen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050. +- **`inputs/demand_response/dr_shape_capacity_scalar_{dr_shapescen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050. +- **`inputs/plant_characteristics/dr_shape_vom_{dr_shapescen}.csv`**: Variable operation and maintenance costs for the DR Shape resource [$/MWh]. +- **`inputs/plant_characteristics/dr_shape_fom_{dr_shapescen}.csv`**: Fixed operation and maintenance costs for the DR Shape resource [$/MWh]. + +### DR Shift Input Files + +- **`dr_shift_decrease_profile_{dr_shiftscen}.h5`**: Baseline/discharge profile of DR resource available to be deferred (or immediate charging/use if not participating in DR). +- **`dr_shift_increase_profile_{dr_shiftscen}.h5`**: Outer bound on when DR resource can be shifted (or latest possible charging/payback). +- **`dr_shift_energy_profile_{dr_shiftscen}.h5`**: Deferment/flexibility potential. +- **`inputs/supply_curve/dr_shift_cost_{dr_shiftscen}.csv`**: Supply curve cost [$/MW]. Assumed to be 0 in the demonstration data. +- **`inputs/supply_curve/dr_shift_cap_{dr_shiftscen}.csv`**: Supply curve capacity [MW], populated with maximum technical potential in 2030 for each state from the hourly shift data. +- **`inputs/plant_characteristics/dr_shift_cost_scalars_{dr_shiftscen}.csv`**: Supply curve populated with 2030 cost data, scaled in the model to reflect additional years through 2050. +- **`inputs/demand_response/dr_shift_capacity_scalar_{dr_shiftscen}.csv`**: Supply curve populated with 2030 capacity data, scaled in the model to reflect additional years through 2050. +- **`inputs/plant_characteristics/dr_shift_vom_{dr_shiftscen}.csv`**: Variable operation and maintenance costs for the DR Shift resource [$/MWh]. +- **`inputs/plant_characteristics/dr_shift_fom_{dr_shiftscen}.csv`**: Fixed operation and maintenance costs for the DR Shift resource [$/MWh]. \ No newline at end of file diff --git a/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv b/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv index bd6a9f5aa..c97486a21 100644 --- a/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv +++ b/inputs/demand_response/dr_shed_cap_scalar_demo_data_January_2025.csv @@ -1,23 +1,23 @@ tech,r,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2033,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2045,2046,2047,2048,2049,2050 -dr_shed_1,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.089,1.119,1.149,1.179,1.208,1.238,1.268,1.298,1.33,1.362,1.394,1.426,1.458,1.49,1.522,1.554,1.586,1.618 -dr_shed_1,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.027,1.054,1.081,1.109,1.136,1.163,1.19,1.217,1.244,1.271,1.296,1.32,1.344,1.368,1.393,1.417,1.441,1.466,1.49,1.514 -dr_shed_1,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.035,1.071,1.106,1.142,1.177,1.213,1.248,1.284,1.319,1.355,1.386,1.417,1.448,1.479,1.51,1.542,1.573,1.604,1.635,1.666 -dr_shed_1,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.011,1.021,1.032,1.043,1.053,1.064,1.074,1.085,1.096,1.106,1.124,1.142,1.16,1.178,1.196,1.214,1.232,1.25,1.268,1.286 -dr_shed_1,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.013,1.025,1.038,1.05,1.063,1.075,1.088,1.1,1.113,1.125,1.144,1.162,1.181,1.2,1.219,1.237,1.256,1.275,1.293,1.312 -dr_shed_1,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.026,1.052,1.078,1.104,1.13,1.157,1.183,1.209,1.235,1.261,1.282,1.303,1.325,1.346,1.367,1.388,1.41,1.431,1.452,1.473 -dr_shed_1,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.052,1.103,1.155,1.207,1.258,1.31,1.362,1.414,1.465,1.517,1.562,1.607,1.653,1.698,1.743,1.788,1.833,1.878,1.924,1.969 -dr_shed_1,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.028,1.056,1.085,1.113,1.141,1.169,1.197,1.226,1.254,1.282,1.31,1.338,1.366,1.394,1.422,1.45,1.478,1.506,1.534,1.562 -dr_shed_1,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.02,1.039,1.059,1.078,1.098,1.117,1.137,1.156,1.176,1.195,1.217,1.24,1.262,1.284,1.307,1.329,1.351,1.373,1.396,1.418 -dr_shed_1,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.014,1.027,1.041,1.054,1.068,1.082,1.095,1.109,1.122,1.136,1.153,1.169,1.186,1.203,1.219,1.236,1.252,1.269,1.286,1.302 -dr_shed_1,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.08,1.161,1.241,1.321,1.402,1.482,1.562,1.642,1.723,1.803,1.858,1.913,1.969,2.024,2.079,2.134,2.189,2.244,2.299,2.355 -dr_shed_2,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.018,1.035,1.053,1.07,1.088,1.105,1.123,1.141,1.158,1.176,1.173,1.17,1.167,1.164,1.161,1.158,1.155,1.152,1.149,1.146 -dr_shed_2,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.03,1.06,1.09,1.119,1.149,1.179,1.209,1.239,1.269,1.299,1.289,1.28,1.27,1.261,1.251,1.242,1.232,1.223,1.213,1.204 -dr_shed_2,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.067,1.133,1.2,1.266,1.333,1.399,1.466,1.532,1.599,1.665,1.694,1.722,1.75,1.778,1.806,1.834,1.862,1.89,1.918,1.946 -dr_shed_2,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.982,0.964,0.947,0.929,0.911,0.893,0.875,0.858,0.84,0.822,0.809,0.795,0.781,0.768,0.754,0.74,0.727,0.713,0.7,0.686 -dr_shed_2,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.001,1.002,1.003,1.004,1.005,1.007,1.008,1.009,1.01,1.011,1.0,0.99,0.979,0.969,0.958,0.948,0.937,0.927,0.916,0.905 -dr_shed_2,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.099,1.197,1.296,1.395,1.494,1.592,1.691,1.79,1.888,1.987,2.033,2.078,2.124,2.169,2.215,2.26,2.306,2.351,2.397,2.443 -dr_shed_2,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.029,1.058,1.087,1.116,1.145,1.174,1.203,1.232,1.262,1.291,1.3,1.309,1.319,1.328,1.338,1.347,1.356,1.366,1.375,1.385 -dr_shed_2,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.038,1.076,1.113,1.151,1.189,1.227,1.266,1.305,1.344,1.383,1.394,1.405,1.415,1.426,1.437,1.447,1.458,1.469,1.479,1.49 -dr_shed_2,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.108,1.216,1.323,1.431,1.539,1.647,1.754,1.862,1.97,2.078,2.106,2.135,2.163,2.192,2.221,2.249,2.278,2.306,2.335,2.364 -dr_shed_2,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.996,0.991,0.987,0.983,0.979,0.974,0.97,0.966,0.961,0.957,0.945,0.933,0.921,0.909,0.897,0.885,0.872,0.86,0.848,0.836 -dr_shed_2,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,0.978,0.955,0.933,0.91,0.888,0.865,0.843,0.82,0.798,0.775,0.757,0.739,0.722,0.704,0.686,0.668,0.65,0.632,0.615,0.597 +dr_shed_1,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.029781637493813,1.059563339268611,1.089345041043409,1.1191266785372218,1.148908444593005,1.1786900820868178,1.208471719580631,1.2382534856364138,1.268035123130227,1.2978167606240398,1.3297857514768556,1.3617547423296714,1.3937237331824872,1.4256927240353032,1.457661714888119,1.4896307057409348,1.5215996965937506,1.5535686874465664,1.5855376782993822,1.617506669152198 +dr_shed_1,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0271377988127648,1.0542755976255294,1.0814134590126245,1.1085513203997197,1.1356890566381541,1.1628269180252493,1.1899647794123445,1.2171025156507786,1.2442403770378738,1.271378113276308,1.2956475673540706,1.3199170214318334,1.344186350360935,1.3684558044386976,1.3927251333677992,1.4169945874455618,1.4412639163746634,1.4655333704524263,1.4898026993815279,1.5140721534592905 +dr_shed_1,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0354641110127885,1.0709281569304032,1.1063923330383654,1.1418563138608064,1.177320424873595,1.2127845358863834,1.2482486468991718,1.2837127579119603,1.3191768689247487,1.3546409799375372,1.385788890362933,1.4169368007883285,1.4480847112137243,1.4792326216391198,1.5103805320645156,1.5415284424899112,1.572676352915307,1.6038242633407025,1.6349721737660983,1.6661200841914938 +dr_shed_1,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0106363884731782,1.0212727769463565,1.0319090659275607,1.0425454544007389,1.0531818428739173,1.0638181318551214,1.0744545203282996,1.085090908801478,1.0957272972746561,1.1063635862558603,1.1242791060287958,1.142194526309757,1.1601100460826925,1.178025466363654,1.1959409861365893,1.2138564064175508,1.231771926190486,1.2496873464714475,1.267602866244383,1.2855182865253443 +dr_shed_1,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.012507570790693,1.0250152521240496,1.0375229334574063,1.0500306147907632,1.062538185581456,1.0750458669148129,1.0875535482481695,1.1000612295815264,1.1125688003722192,1.125076481705576,1.1437681407420353,1.1624596892358308,1.18115134827229,1.1998430073087494,1.2185346663452086,1.237226214839004,1.2559178738754633,1.2746095329119227,1.293301191948382,1.3119927404421774 +dr_shed_1,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0260907319354116,1.0521814638708231,1.0782721958062347,1.1043629277416462,1.1304536596770578,1.1565443916124694,1.182635123547881,1.2087257798698179,1.2348165118052294,1.260907243740641,1.282139583079398,1.30337199803163,1.3246042617569123,1.3458366767091443,1.3670689404344267,1.3883013553866586,1.409533619111941,1.4307660340641728,1.4519982977894552,1.473230712741687 +dr_shed_1,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0516956545870797,1.1033913091741594,1.155086892052152,1.2067824749301446,1.2584781295172243,1.310173784104304,1.3618694386913837,1.4135650932784634,1.4652606044473688,1.5169562590344485,1.562141015346175,1.6073257716579012,1.6525105279696275,1.6976952842813537,1.74288004059308,1.7880647969048062,1.8332495532165327,1.878434309528259,1.9236190658399852,1.9688038221517115 +dr_shed_1,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0281940513744825,1.056388219545784,1.0845822709202666,1.1127764390915684,1.14097060726287,1.1691646586373525,1.1973588268086541,1.2255528781831366,1.2537470463544385,1.281941097728921,1.309898051560423,1.3378550053919251,1.3658119592234272,1.3937689130549293,1.4217258668864317,1.4496828207179338,1.4776397745494358,1.505596728380938,1.533553565415621,1.561510519247123 +dr_shed_1,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0195213233984808,1.0390426467969616,1.0585640888271581,1.078085412225639,1.0976067356241197,1.1171280590226005,1.136649382421081,1.1561708244512778,1.1756921478497586,1.1952134712482394,1.2174989136300605,1.2397843560118817,1.2620697983937028,1.284355240775524,1.3066405645256292,1.3289260069074502,1.3512114492892715,1.3734968916710926,1.3957823340529139,1.418067776434735 +dr_shed_1,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0135915169119243,1.0271831122565067,1.0407747076010894,1.0543662245130137,1.067957819857596,1.0815494152021785,1.0951409321141028,1.1087325274586854,1.1223241228032679,1.1359156397151922,1.1525632851550272,1.169210852162204,1.1858584191693808,1.202506064609216,1.2191536316163927,1.2358011986235695,1.2524488440634047,1.2690964110705816,1.2857439780777582,1.3023916235175934 +dr_shed_1,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0803115350848023,1.1606230701696048,1.240934605254407,1.3212461403392095,1.401557788722681,1.4818693238074834,1.5621808588922856,1.6424923939770881,1.7228039290618904,1.8031154641466929,1.8582566801745117,1.9133978962023306,1.9685392255288188,2.0236805548553067,2.078821884181795,2.133963213508283,2.1891043162374326,2.244245645563921,2.299386974890409,2.354528304216897 +dr_shed_2,AZ,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0175805727475837,1.0351610674550178,1.0527416402026015,1.0703222129501853,1.087902785697769,1.1054833584453527,1.1230639311929365,1.1406445039405202,1.158225076688104,1.1758055713955382,1.1728595557470833,1.1699135400986287,1.166967524450174,1.1640214307615697,1.1610754151131149,1.1581293994646602,1.1551833057760559,1.152237290127601,1.1492912744791464,1.1463452588306917 +dr_shed_2,CA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.02987250395966,1.0597450079193198,1.0896175118789797,1.1194901112234001,1.14936261518306,1.17923511914272,1.2091076231023798,1.2389801270620397,1.2688527264064602,1.29872523036612,1.2892230958936384,1.2797210568059172,1.2702189223334355,1.2607168832457145,1.2512147487732328,1.2417127096855116,1.23221057521303,1.222708536125309,1.2132064016528272,1.203704362565106 +dr_shed_2,CO,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0665477205620852,1.1330955518816084,1.1996433832011315,1.2661911037632165,1.3327389350827397,1.399286655644825,1.465834486964348,1.5323823182838712,1.5989300388459562,1.6654778701654793,1.6935270805812417,1.7215764017544422,1.7496256121702045,1.777674933343405,1.8057241437591673,1.8337734649323676,1.861822786105568,1.8898718857638923,1.9179212069370928,1.9459705281102933 +dr_shed_2,FL,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0290610934344695,1.0581221868689388,1.0871832803034083,1.1162444833982432,1.1453055768327125,1.174366670267182,1.2034278733620167,1.2324889667964862,1.2615500602309557,1.2906111536654252,1.3000026866789522,1.3093942196924795,1.3187857527060065,1.3281771760591683,1.3375687090726955,1.3469602420862226,1.3563517750997498,1.3657431984529116,1.3751347314664386,1.3845262644799659 +dr_shed_2,GA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0010975908980781,1.002195117598291,1.0032927084963692,1.0043902993944471,1.0054878260946603,1.0065854169927384,1.0076830078908163,1.0087805345910295,1.0098781254891074,1.0109757163871855,1.0004226787432267,0.9898696410992678,0.9793166676531738,0.968763630009215,0.9582105923652561,0.9476575547212972,0.9371045812752032,0.9265515436312444,0.9159985059872855,0.9054455325411916 +dr_shed_2,MN,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0987126737621122,1.1974253475242242,1.2961380212863365,1.3948506950484485,1.4935632232430547,1.592275897005167,1.6909885707672792,1.7897012445293912,1.8884139182915034,1.9871265920536154,2.032670734308005,2.0782148765623942,2.1237591643842895,2.169303306638679,2.2148474488930683,2.2603917367149635,2.305935878969353,2.3514801667912484,2.3970243090456376,2.442568596867533 +dr_shed_2,MT,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0290610934344695,1.0581221868689388,1.0871832803034083,1.1162444833982432,1.1453055768327125,1.174366670267182,1.2034278733620167,1.2324889667964862,1.2615500602309557,1.2906111536654252,1.3000026866789522,1.3093942196924795,1.3187857527060065,1.3281771760591683,1.3375687090726955,1.3469602420862226,1.3563517750997498,1.3657431984529116,1.3751347314664386,1.3845262644799659 +dr_shed_2,NM,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0377874408637087,1.0755747872793575,1.1133622281430662,1.151149574558715,1.1889370154224237,1.2271209492407793,1.2661438651735057,1.305166875554292,1.3441897914870187,1.3832127074197451,1.3938924217710333,1.4045721361223216,1.4152518504736098,1.425931564824898,1.4366112791761863,1.4472909935274745,1.4579707078787627,1.468650422230051,1.4793301365813392,1.4900098509326274 +dr_shed_2,NY,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.1077699382552884,1.2155398765105765,1.3233098147658648,1.4310797530211532,1.5388496912764413,1.6466196295317297,1.754389567787018,1.8621595060423064,1.9699294442975945,2.0776993825528827,2.106280203059447,2.1348610235660113,2.1634418440725756,2.192022890501978,2.220603711008542,2.2491845315151062,2.2777653520216705,2.306346172528235,2.334926993034799,2.363507813541363 +dr_shed_2,TX,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0290610934344695,1.0581221868689388,1.0871832803034083,1.1162444833982432,1.1453055768327125,1.174366670267182,1.2034278733620167,1.2324889667964862,1.2615500602309557,1.2906111536654252,1.3000026866789522,1.3093942196924795,1.3187857527060065,1.3281771760591683,1.3375687090726955,1.3469602420862226,1.3563517750997498,1.3657431984529116,1.3751347314664386,1.3845262644799659 +dr_shed_2,WA,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.0,1.0290610934344695,1.0581221868689388,1.0871832803034083,1.1162444833982432,1.1453055768327125,1.174366670267182,1.2034278733620167,1.2324889667964862,1.2615500602309557,1.2906111536654252,1.3000026866789522,1.3093942196924795,1.3187857527060065,1.3281771760591683,1.3375687090726955,1.3469602420862226,1.3563517750997498,1.3657431984529116,1.3751347314664386,1.3845262644799659 diff --git a/inputs/remote_files.csv b/inputs/remote_files.csv index 7f8b9277e..0d16311e1 100644 --- a/inputs/remote_files.csv +++ b/inputs/remote_files.csv @@ -28,3 +28,8 @@ demand_EFS_REFERENCE.h5,profiles_demand,https://zenodo.org/records/{record_id}/f demand_historic.h5,profiles_demand,https://zenodo.org/records/{record_id}/files/{filename},18462671,06ca6b65088a870afafc25191dcfd6f3 dr_shed_hourly_demo_data_January_2025.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},18761062,f1f688e3a3167bffb7cc1e2486fdda32 temperature_state.h5,profiles_temperature,https://zenodo.org/records/{record_id}/files/{filename},19390491,43f69d6216f209082417b558e74bd349 +dr_shape_decrease_profile_ex_dr1.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},20821467,859ace7ca4016a19100d1143928be3a5 +dr_shape_increase_profile_ex_dr1.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},20821467,659a69cae5f31202065a92f6c9a9ebbe +dr_shift_decrease_profile_ex_dr1.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},20821467,fb3ef11a8f04b1a146f43f5b56277b6b +dr_shift_increase_profile_ex_dr1.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},20821467,08795e21156107f2e6d3ec67fb316906 +dr_shift_energy_profile_ex_dr1.h5,profiles_dr,https://zenodo.org/records/{record_id}/files/{filename},20821467,1700595f3d2e8ed1faab5b4dd2aab232 \ No newline at end of file From a9bfb785393d7ea108ca6f8d9e8a13b2218f2fed Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Wed, 16 Sep 2026 14:53:08 -0600 Subject: [PATCH 23/25] remove testing slack variables and forced deployment equations --- reeds/core/setup/b_inputs.gms | 32 ++++++------- reeds/core/setup/c_model.gms | 37 -------------- reeds/core/setup/d_objective.gms | 3 -- reeds/core/solve/2_temporal_params.gms | 5 +- .../input_processing/calc_financial_inputs.py | 3 +- reeds/input_processing/h5_to_gdx.py | 4 +- .../hourly_writetimeseries.py | 9 ++-- reeds/io.py | 9 ++-- reeds/reedsplots.py | 48 +++++++++---------- runreeds.py | 16 ++++++- 10 files changed, 64 insertions(+), 102 deletions(-) diff --git a/reeds/core/setup/b_inputs.gms b/reeds/core/setup/b_inputs.gms index 96ec2c584..d608068cc 100644 --- a/reeds/core/setup/b_inputs.gms +++ b/reeds/core/setup/b_inputs.gms @@ -3480,7 +3480,7 @@ $onlisting ; $offempty -* Written in input processing repo under Demand_Response +* Written by writesupplycurves.py $onempty table dr_shed_capacity_scalar(i,r,allt) "--unitless-- dr_shed capacity multipliers over time" $offlisting @@ -3491,7 +3491,7 @@ $onlisting ; $offempty -* Written in input processing repo under Demand_Response +* Written by writesupplycurves.py $onempty table dr_shape_capacity_scalar(i,r,allt) "--unitless-- dr_shape capacity multipliers over time" $offlisting @@ -3502,7 +3502,7 @@ $onlisting ; $offempty -* Written in input processing repo under Demand_Response +* Written by writesupplycurves.py $onempty table dr_shift_capacity_scalar(i,r,allt) "--unitless-- dr_shift capacity multipliers over time" $offlisting @@ -3513,7 +3513,7 @@ $onlisting ; $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty table vom_dr_shed(i,r,allt) "--$/MWh-- dr_shed vom costs over time" $offlisting @@ -3525,7 +3525,7 @@ $onlisting $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty table fom_dr_shed(i,r,allt) "--$/MWh-- dr_shed vom costs over time" $offlisting @@ -3537,9 +3537,9 @@ $onlisting $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty -table vom_dr_shape(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +table vom_dr_shape(i,r,allt) "--$/MWh-- dr_shape vom costs over time" $offlisting $ondelim $include inputs_case%ds%plantchar_dr_shape_vom.csv @@ -3549,9 +3549,9 @@ $onlisting $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty -table fom_dr_shape(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +table fom_dr_shape(i,r,allt) "--$/MWh-- dr_shape vom costs over time" $offlisting $ondelim $include inputs_case%ds%plantchar_dr_shape_fom.csv @@ -3560,9 +3560,9 @@ $onlisting ; $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty -table vom_dr_shift(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +table vom_dr_shift(i,r,allt) "--$/MWh-- dr_shift vom costs over time" $offlisting $ondelim $include inputs_case%ds%plantchar_dr_shift_vom.csv @@ -3572,9 +3572,9 @@ $onlisting $offempty -*Written in copy_files.py +* Written by plantcostprep.py $onempty -table fom_dr_shift(i,r,allt) "--$/MWh-- dr_shed vom costs over time" +table fom_dr_shift(i,r,allt) "--$/MWh-- dr_shift vom costs over time" $offlisting $ondelim $include inputs_case%ds%plantchar_dr_shift_fom.csv @@ -5639,9 +5639,9 @@ Parameter dr_shed_out(i,r,allh) "--fraction-- dr shed capacity availability" dr_shape_load(i,r,allh,allt) "--fraction-- fraction of adopted price-responsive DR shape load added by timeslice" dr_shape_gen(i,r,allh,allt) "--fraction-- fraction of adopted price-responsive DR shape load subtracted by timeslice" - dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be discharged in each timeslice h" - dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift charge capacity that can be charged in each timeslice h" - dr_shift_energy_hours(i,r,allh,allt) "--hours-- Allowable DR shift SOC (quantity deferred DR charge) [MWh] divided by nameplate DR shift discharge capacity [MW]" + dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift capacity that can be discharged (deferred charging) in each timeslice h" + dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift capacity that can be charged (add back deferred charging) in each timeslice h" + dr_shift_energy_hours(i,r,allh,allt) "--hours-- Allowable DR shift device storage SOC (quantity deferred charge) [MWh] divided by nameplate discharge capacity [MW]" * Flexible Canadian imports/exports [Sw_Canada=1] can_imports_szn(r,allszn,t) "--MWh-- [Sw_Canada=1] seasonal imports from Canada by year" can_imports_szn_frac(allszn) "--fraction-- [Sw_Canada=1] fraction of annual imports that occur in each season" diff --git a/reeds/core/setup/c_model.gms b/reeds/core/setup/c_model.gms index 24462bd64..f05ec619b 100644 --- a/reeds/core/setup/c_model.gms +++ b/reeds/core/setup/c_model.gms @@ -112,7 +112,6 @@ positive variables H2_STOR_LEVEL_SZN(h2_stor,r,actualszn,t) "--metric tons-- total storage level of H2 in a period by storage type" CREDIT_H2PTC(i,v,r,allh,t) "--MW-- generation by resources which qualify for the hydrogen production tax credit, in hour h" - RHS_DRSHAPE_SLACK(r,allh,t) "--slack variable for DR shape in eq_loadcon" * water climate variables WATCAP(i,v,r,t) "--million gallons/year; Mgal/yr-- total water access capacity available in terms of withdraw/consumption per year" @@ -340,40 +339,6 @@ eq_interconnection_queues(tg,r,t) "--MW-- capacity deployment limit base eq_ccsflex_sto_storage_level(i,v,r,allh,t) "--varies-- Track the level of the CCS storage balance for each time-slice" eq_ccsflex_sto_storage_level_max(i,v,r,allh,t) "--varies-- Limit the level of the CCS storage system" - -* eq_force_drshift_gen(t) -* eq_force_drshape_cap(t) -; - - -* eq_force_drshift_gen(t) -* $[tmodel(t) -* $(Sw_DRShift=1) -* $(yeart(t)>model_builds_start_yr) -* ].. - -* sum{(i,v,r,h)$[valgen(i,v,r,t)$dr_shift(i)], -* hours(h) * GEN(i,v,r,h,t) -* } -* =g= - -* 1000 -* ; - -* eq_force_drshape_cap(t) -* $[tmodel(t) -* $(Sw_DRShape=1) -* $(yeart(t)>model_builds_start_yr) -* ].. - -* sum{(i,v,r)$[valcap(i,v,r,t)$dr_shape(i)], -* CAP(i,v,r,t) -* } -* =g= - -* 10 -* ; - *========================== * --- LOAD CONSTRAINTS --- *========================== @@ -403,8 +368,6 @@ eq_loadcon(r,h,t)$tmodel(t).. + sum{(i,v)$[dr_shape(i)$valcap(i,v,r,t)], dr_shape_load(i,r,h,t) * CAP(i,v,r,t)} - sum{(i,v)$[dr_shape(i)$valcap(i,v,r,t)], dr_shape_gen(i,r,h,t) * CAP(i,v,r,t)} -* add slack variable to avoid infeasibilities - + RHS_DRSHAPE_SLACK(r,h,t) *[plus] load shifted from other timeslices + sum{flex_type, FLEX(flex_type,r,h,t) }$Sw_EFS_flex diff --git a/reeds/core/setup/d_objective.gms b/reeds/core/setup/d_objective.gms index b9b83f6d5..d5df2bc2a 100644 --- a/reeds/core/setup/d_objective.gms +++ b/reeds/core/setup/d_objective.gms @@ -86,9 +86,6 @@ eq_ObjFn_inv(t)$tmodel(t).. *Note that existing wst data is not consistent with availability of water source in the region + sum{(wst,r), 1E6 * WATER_CAPACITY_LIMIT_SLACK(wst,r,t) }$[Sw_WaterMain$Sw_WaterCapacity] -*slack variable for DR infeasibilites - + sum{(r,h), 1E6 * RHS_DRSHAPE_SLACK(r,h,t) } - * --- cost of refurbishments of RSC tech--- + sum{(i,v,r)$[Sw_Refurb$valinv(i,v,r,t)$refurbtech(i)], cost_cap_fin_mult(i,r,t) * cost_cap(i,t) * INV_REFURB(i,v,r,t) diff --git a/reeds/core/solve/2_temporal_params.gms b/reeds/core/solve/2_temporal_params.gms index d64c4f45b..9c37397b4 100644 --- a/reeds/core/solve/2_temporal_params.gms +++ b/reeds/core/solve/2_temporal_params.gms @@ -718,7 +718,7 @@ $offempty $onempty * DR shift adoption -parameter dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be discharged (deferred charging) in each timeslice h" +parameter dr_shift_discharge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift capacity that can be discharged (deferred charging) in each timeslice h" / $offlisting $ondelim @@ -729,7 +729,7 @@ $onlisting $offempty $onempty -parameter dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift discharge capacity that can be charged (add back deferred charging) in each timeslice h" +parameter dr_shift_charge_frac(i,r,allh,allt) "--fraction-- fraction of adopted DR shift capacity that can be charged (add back deferred charging) in each timeslice h" / $offlisting $ondelim @@ -750,7 +750,6 @@ $onlisting / ; $offempty - * Written by hourly_writetimeseries.py parameter load_allyear(r,allh,allt) "--MW-- busbar load by region, timeslice, and year" / diff --git a/reeds/input_processing/calc_financial_inputs.py b/reeds/input_processing/calc_financial_inputs.py index d8701c2f1..f7a42ec07 100644 --- a/reeds/input_processing/calc_financial_inputs.py +++ b/reeds/input_processing/calc_financial_inputs.py @@ -230,8 +230,7 @@ def calc_financial_inputs(inputs_case): 'ptc_value_monetized_posttax', 'ptc_grossup_value', 'ptc_value_scaled']].iloc[0:5,:] # this is just a hack because pjg didn't know how to have gams handle empty files ptc_values_df = ptc_values_df.drop_duplicates(['i', 'v', 't']) ptc_values_df['v'] = ['new%s' % v for v in ptc_values_df['v']] - ptc_values_df['allt'] = ptc_values_df['t'].astype(int) - + ptc_values_df['allt'] = ptc_values_df['t'].astype(int) #%% # Import schedules for financial calculations diff --git a/reeds/input_processing/h5_to_gdx.py b/reeds/input_processing/h5_to_gdx.py index 36a3d3a39..9227b3eb3 100644 --- a/reeds/input_processing/h5_to_gdx.py +++ b/reeds/input_processing/h5_to_gdx.py @@ -104,9 +104,7 @@ def write_declare_and_load( f.write(f'alias({name},{alias}) ;\n') ## Load key = line.split('(')[0] - # Use $load instead of $loadDCR because sets are already declared in the model - # and cannot be cleared if they are used as domains - f.write(f'$load {key} = {key}\n') + f.write(f'$loadDCR {key} = {key}\n') print(f'Wrote {fpath}') diff --git a/reeds/input_processing/hourly_writetimeseries.py b/reeds/input_processing/hourly_writetimeseries.py index d6630bffc..7d62d825f 100644 --- a/reeds/input_processing/hourly_writetimeseries.py +++ b/reeds/input_processing/hourly_writetimeseries.py @@ -344,8 +344,7 @@ def get_yearly_flexibility( unique_techs = list({x.split('|')[0] for x in shape[stype].columns[1:]}) # EER derived shape data is populated for multiple weather years - # The hour column is populated as a timestamp - # if len(str(shape[stype].hour[0])) > 4: + # The index is populated as a timestamp if len(str(shape[stype].index[0])) > 4: # Define timezone to UTC-6 shape[stype].set_index(pd.to_datetime(shape[stype].index), inplace=True) @@ -1597,7 +1596,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr ( dr_shift_dec.assign(h=dr_shift_dec.h.map(chunkmap)) .groupby(["i", "r", "h", "t"]) - .max() + .mean() .round(decimals) .reset_index() ), @@ -1608,7 +1607,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr ( dr_shift_inc.assign(h=dr_shift_inc.h.map(chunkmap)) .groupby(["i", "r", "h", "t"]) - .max() + .mean() .round(decimals) .reset_index() ), @@ -1619,7 +1618,7 @@ def main(sw, reeds_path, inputs_case, periodtype='rep', make_plots=1, logging=Tr ( dr_shift_profile_energy.assign(h=dr_shift_profile_energy.h.map(chunkmap)) .groupby(["i", "r", "h", "t"]) - .max() + .mean() .round(decimals) .reset_index() ), diff --git a/reeds/io.py b/reeds/io.py index 42abb5301..70ae5c611 100644 --- a/reeds/io.py +++ b/reeds/io.py @@ -912,16 +912,15 @@ def read_file(filename, parse_timestamps=True): # All values being NaN indicates that the region filtering in copy_files.py removed all # data, leaving an empty dataframe. - # Return an empty dataframe with the original file's index if all values are NaN. - if df.isna().to_numpy().all(): + # Return an empty dataframe with the original file's index if all values are NaN + if all(df.isnull().all()): df = df.drop(columns=df.columns) return df # NOTE: Some files are saved as float16, so we cast to float32 to prevent issues with # large/small numbers - numeric_cols = list(df.select_dtypes(include=[np.floating]).columns) - if numeric_cols: - df = df.astype({column: np.float32 for column in numeric_cols}) + numeric_cols = [c for c in df if is_float_dtype(df[c].dtype)] + df = df.astype({column: np.float32 for column in numeric_cols}) return df diff --git a/reeds/reedsplots.py b/reeds/reedsplots.py index 855ae7152..b89b7db97 100644 --- a/reeds/reedsplots.py +++ b/reeds/reedsplots.py @@ -6954,11 +6954,11 @@ def map_output_byyear( return f, ax, dictplot -def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = 'dr_shift_1'): +def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = 'dr_shift_1',weather_year=2018): - dr_shift_input_files = {'Charge':'dr_shift_profile_increase.csv', - 'Discharge':'dr_shift_profile_decrease.csv', - 'Energy':'dr_shift_profile_energy.csv',} + dr_shift_input_files = {'Charge':'dr_shift_profile_increase.h5', + 'Discharge':'dr_shift_profile_decrease.h5', + 'Energy':'dr_shift_profile_energy.h5',} dr_shift_rep_files = {'Charge':'dr_shift_charge.csv', 'Discharge':'dr_shift_discharge.csv', @@ -6967,26 +6967,22 @@ def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = ' dr_shift_dispatch_rep_files = {'Charge':'gen_h.csv', 'Discharge':'gen_h.csv', 'Energy':'stor_level.csv',} + if region =='ex': + cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')) + cap = cap.loc[cap.i == shift_tech] + region = cap.loc[cap['Value'].idxmax(), 'r'] output_csv = pd.DataFrame() baseline_dfs ={} for k,v in dr_shift_input_files.items(): - df = pd.read_csv(os.path.join(case,'inputs_case',v)) - df = df.loc[(df.i == shift_tech) & (df.year == year)] - # # Determine number of unique DR Shift techs - # shift_techs = df['i'].unique() - # df_tech_combined = pd.DataFrame() - # for tech in shift_techs: - # df_tech = df.loc[df['i'] == tech].copy() - # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) - # df = df_tech_combined.copy() - df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - df.set_index('date', inplace=True) - df.reset_index() + df = reeds.io.read_file(os.path.join(case,'inputs_case',v)) + df = df.loc[df.year == year] + cols_tech = [x for x in df.columns if x.startswith(shift_tech) and x.endswith(region)] + df = df[['year'] + cols_tech] + df = df.loc[df.index.year == weather_year] baseline_dfs[k] = df - temp = df.rename(columns = {region:f'baseline_{k}'}) + temp = df.rename(columns = {cols_tech[0]:f'baseline_{k}'}) output_csv = pd.concat((output_csv,temp[f'baseline_{k}']),axis = 1) @@ -6995,7 +6991,7 @@ def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = ' df = pd.read_csv(os.path.join(case,'inputs_case','rep',v)) hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') - df = df.loc[(df.t == year)& (df['**i']== shift_tech)] + df = df.loc[(df.t == year)& (df['*i']== shift_tech)] df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) # # Determine number of unique DR Shift techs # shift_techs = df['**i'].unique() @@ -7005,8 +7001,8 @@ def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = ' # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) # df = df_tech_combined.copy() - df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - df.set_index('date', inplace=True) + # df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + # df.set_index('date', inplace=True) df = df[['Values']] rep_dfs[k] = df output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'rep_{k}'})],axis = 1) @@ -7024,10 +7020,10 @@ def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = ' # # Determine number of unique DR Shift techs # shift_techs = df['i'].unique() # Duplicate the dataframe for each DR Shift tech - temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) - # temp = pd.concat([temp] * len(shift_techs), ignore_index=True) - df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) - df.set_index('date', inplace=True) + # temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) + # # temp = pd.concat([temp] * len(shift_techs), ignore_index=True) + # df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) + # df.set_index('date', inplace=True) df['Values'] = df.GEN/df.CAP if k == 'Charge': df.Values *= -1 @@ -7066,7 +7062,7 @@ def dr_shift_resource_compare(case, year,savepath, region = 'p1', shift_tech = ' for k in key: plots.plotyearbymonth( plot_dict[k][0], - plotcols= ([region] if region in plot_dict[k][0].columns else 'Values'), + plotcols= ([shift_tech + '|' +region] if shift_tech + '|' +region in plot_dict[k][0].columns else 'Values'), colors=[plot_dict[k][1]], alpha = 0.5, style = plot_dict[k][2], f=f, ax=ax, diff --git a/runreeds.py b/runreeds.py index 7b06bad48..2af6d82a4 100644 --- a/runreeds.py +++ b/runreeds.py @@ -193,6 +193,7 @@ def get_rev_sc_file_name(rev_row, use_hpc=False): return revswitches + def check_cases_format(df_cases): """Check the integrity of the input cases_{}.csv data""" dfkeep = df_cases.loc[:, ~df_cases.loc['ignore'].astype(int).astype(bool)] @@ -213,6 +214,7 @@ def check_cases_format(df_cases): ) raise ValueError(err) + def check_compatibility(sw): if int(sw['startyear']) != 2010: raise ValueError(f"startyear = {sw['startyear']} but must be = 2010") @@ -375,6 +377,16 @@ def check_compatibility(sw): float(limit) 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): @@ -837,7 +849,7 @@ def setupEnvironment( #%% Check whether the ReEDS conda environment is activated if (not skip_checks) and ( - ('reeds5' not in os.environ['CONDA_DEFAULT_ENV'].lower()) + ('reeds' not in os.environ['CONDA_DEFAULT_ENV'].lower()) or (not pd.__version__.startswith('3')) ): err = ( @@ -1277,7 +1289,7 @@ def write_batch_script( OPATH.writelines("module load conda \n") OPATH.writelines("module load gams \n") - OPATH.writelines("conda activate reeds5 \n") + OPATH.writelines("conda activate reeds \n") OPATH.writelines('export R_LIBS_USER="$HOME/rlib" \n\n\n') #%% Write the input_processing script calls From 49f0aaf38baae2b03660794b99e8a5f980893603 Mon Sep 17 00:00:00 2001 From: "Serpe, Louisa" Date: Thu, 17 Sep 2026 15:25:40 -0600 Subject: [PATCH 24/25] add back missing ; --- reeds/core/setup/c_model.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reeds/core/setup/c_model.gms b/reeds/core/setup/c_model.gms index f05ec619b..4eba3ab71 100644 --- a/reeds/core/setup/c_model.gms +++ b/reeds/core/setup/c_model.gms @@ -338,7 +338,7 @@ eq_interconnection_queues(tg,r,t) "--MW-- capacity deployment limit base eq_ccsflex_sto_ccsenergy_balance(i,v,r,allszn,t) "--MWh-- Total CCS energy requirement can be distributed across a characteristic day" eq_ccsflex_sto_storage_level(i,v,r,allh,t) "--varies-- Track the level of the CCS storage balance for each time-slice" eq_ccsflex_sto_storage_level_max(i,v,r,allh,t) "--varies-- Limit the level of the CCS storage system" - +; *========================== * --- LOAD CONSTRAINTS --- *========================== From 76363d7388573ef5e9b2fdeae68d050aea246695 Mon Sep 17 00:00:00 2001 From: Louisa Serpe Date: Fri, 18 Sep 2026 22:16:41 +0000 Subject: [PATCH 25/25] clean up for github tests --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- cases_dr.csv | 42 +++--- cases_test.csv | 2 +- inputs/plant_characteristics/README.md | 12 +- inputs/plant_characteristics/dollaryear.csv | 2 - inputs/userinput/futurefiles.csv | 45 +++---- reeds/core/setup/c_model.gms | 1 + reeds/plots.py | 3 +- reeds/reedsplots.py | 137 ++++++++++++++++++-- reeds/resource_adequacy/capacity_credit.py | 10 -- 10 files changed, 187 insertions(+), 69 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index a8de87f0c..d55bb09d0 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -110,7 +110,7 @@ Include additional illustrative plots describing input data, methods, testing, a - + diff --git a/cases_dr.csv b/cases_dr.csv index 2465dcaf5..e784979fc 100644 --- a/cases_dr.csv +++ b/cases_dr.csv @@ -1,21 +1,21 @@ -,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape -ignore,1,0,1,1,0,1 -endyear,,2032,2032,2032,2032,2032 -yearset,2010_2015_2020..2050..3,,,,, -GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific -GSw_ZoneSet,,,z132,z132,z54,z54 -GSw_GasCurve,,2,2,2,2,2 -GSw_HourlyType,,,,,, -GSw_OpRes,,,,,, -GSw_HourlyNumClusters,,,,,, -GSw_PRM_CapCredit,,,,,, -GSw_StartCost,,,,,, -GSw_LfillGas,,,,,, -GSw_Geothermal,,,,,, -GSw_Biopower,,,,,, -GSw_Nuclear,,,,,, -GSw_HourlyChunkLengthRep,,,,,, -GSw_HourlyChunkLengthStress,,,,,, -GSw_DRShed,,1,,,1, -GSw_DRShape,,,1,,,1 -GSw_DRShift,,,,1,, +,Default Value,Pacific_DRShed,Pacific_DRShape,Pacific_DRShift,Pacific_st_DRShed,Pacific_st_DRShape,USA_st_DRShed,USA_st_DRShape,USA_st_DRShift,WI_st_DRShed,WI_st_DRShape,WI_st_DRShift +ignore,1,1,1,1,1,1,1,0,1,1,1,1 +endyear,,2032,2032,2032,2032,2032,2040,2035,2040,2040,2040,2040 +yearset,2010_2015_2020..2050..3,,,,,,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5,2010_2015_2020..2050..5 +GSw_Region,,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,cendiv/Pacific,country/USA,country/USA,country/USA,interconnect/western,interconnect/western,interconnect/western +GSw_ZoneSet,,,z132,z132,z54,z54,z54,z54,z54,z54,z54,z54 +GSw_GasCurve,,2,2,2,2,2,2,2,2,2,2,2 +GSw_HourlyType,,,,,,,,,,,, +GSw_OpRes,,,,,,,,,,,, +GSw_HourlyNumClusters,,,,,,,,,,,, +GSw_PRM_CapCredit,,,,,,,,,,,, +GSw_StartCost,,,,,,,,,,,, +GSw_LfillGas,,,,,,,,,,,, +GSw_Geothermal,,,,,,,,,,,, +GSw_Biopower,,,,,,,,,,,, +GSw_Nuclear,,,,,,,,,,,, +GSw_HourlyChunkLengthRep,,,,,,,,,,,, +GSw_HourlyChunkLengthStress,,,,,,,,,,,, +GSw_DRShed,,1,,,1,,1,,,1,, +GSw_DRShape,,,1,,,1,,1,,,1, +GSw_DRShift,,,,1,,,,,1,,,1 diff --git a/cases_test.csv b/cases_test.csv index 805d5829d..68310c82b 100644 --- a/cases_test.csv +++ b/cases_test.csv @@ -1,5 +1,5 @@ ,Default Value,Pacific,USA_defaults,Mid_Case,USA_decarb,github_Pacific,github_Everything,github_MA_county_CC,Pacific_CC,Pacific_weks,Pacific_full_year,Interday_storage,Pacific_2020,Pacific_rep15,WY_county,WECC_county,PJM_county_CC,NYVT_mixed,OR_water,MonteCarlo_Random,MonteCarlo_LHS,Everything,Simple,USA_fast,USA_faster,MultiMetricRA,Pacific_DR,Pacific_MGA,Pacific_MGA_RV,Pacific_LoadSite95,MARICTNYNJPAOH_Offshore,R2P -ignore,1,0,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +ignore,1,1,,,,1,0,1,,,,,,,,,,,,,,,,,,,,,,,, GSw_Region,cendiv/Pacific,,country/USA,country/USA,country/USA,,st/ID.WY.NE.IA.IL,st/MA,,,,,,,st/WY,interconnect/western,transreg/PJM,st/NY.VT,st/OR,st/NE.NY.PA,st/NE.NY.PA,st/ID.WY.NE.IA.IL,st/KS,country/USA,country/USA,st/NY.NJ,,,,,st/MA.RI.CT.NY.NJ.PA.OH, endyear,2035,,2050,2050,2050,2030,2060,2030,,,,,,,,,,,2035,2030,2030,2060,2035,2050,2050,2050,,,,,, yearset,,,,,,,2010..2060..10,,,,,,,,,,,,,,,2010..2060..10,2010_2015_2020..2050..3,,2010_2025_2050,,,,,,, diff --git a/inputs/plant_characteristics/README.md b/inputs/plant_characteristics/README.md index 4c7a3c3ee..c6ccf118f 100644 --- a/inputs/plant_characteristics/README.md +++ b/inputs/plant_characteristics/README.md @@ -50,9 +50,15 @@ - `dr_shed_fom_demo_data_January_2025.csv`: - `dr_shed_vom_demo_data_January_2025.csv`: -- `evmc_*_Baseline.csv`: - - `evmc_shape_Baseline.csv`: - - `evmc_storage_Baseline.csv`: +- `dr_shape_*_ex_dr1.csv`: + - `dr_shape_cost_scalars_ex_dr1.csv`: + - `dr_shape_fom_ex_dr1.csv`: + - `dr_shape_vom_ex_dr1.csv`: + +- `dr_shift_*_ex_dr1.csv`: + - `dr_shift_cost_scalars_ex_dr1.csv`: + - `dr_shift_fom_ex_dr1.csv`: + - `dr_shift_vom_ex_dr1.csv`: - `fuelcell_ATB_2024_*.csv`: - `fuelcell_ATB_2024_advanced.csv`: diff --git a/inputs/plant_characteristics/dollaryear.csv b/inputs/plant_characteristics/dollaryear.csv index a7f7d8b53..7cbfb41b1 100644 --- a/inputs/plant_characteristics/dollaryear.csv +++ b/inputs/plant_characteristics/dollaryear.csv @@ -23,8 +23,6 @@ csp_ATB_2024_advanced,2022 csp_ATB_2024_conservative,2022 csp_ATB_2024_moderate,2022 csp_SunShot2030,2017 -evmc_shape_Baseline,2020 -evmc_storage_Baseline,2020 h2fuelcell_advanced,2022 h2fuelcell_moderate,2022 h2fuelcell_conservative,2022 diff --git a/inputs/userinput/futurefiles.csv b/inputs/userinput/futurefiles.csv index a0d168f43..7b114ce47 100644 --- a/inputs/userinput/futurefiles.csv +++ b/inputs/userinput/futurefiles.csv @@ -116,23 +116,25 @@ dollaryear_sc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, dr_dec.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant dr_hrs.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant dr_inc.csv,.csv,1,None,9999,None,9999,0,constant,None,None,,constant -dr_shape_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new,,,,, -dr_shape_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, -dr_shape_cost.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, -dr_shape_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, -dr_shape_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, -dr_shed_avail_scalar.csv,.csv,0,None,t,None,0,0,constant,None,None,new, +dr_shape_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, +dr_shape_capacity_scalar.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shape_capcostmult.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shape_cost.csv,.csv,1,None,wide,"None",1,0,constant,None,None,new; check constant, +dr_shape_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant +dr_shape_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant +dr_shed_avail_scalar.csv,.csv,1,None,t,None,0,0,constant,None,None,new, dr_shed_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, -dr_shed_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, -dr_shed_capcostmult.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shed_capacity_scalar.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shed_capcostmult.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, dr_shed_cost.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, -dr_shed_hourly.h5,.h5,0,None,year,datetime,1,keepindex,constant,None,None,new, -dr_shift_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new,,,,, -dr_shift_capacity_scalar.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, -dr_shift_cost.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, -dr_shift_profile_energy.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, -dr_shift_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, -dr_shift_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant,,,, +dr_shed_hourly.h5,.h5,1,None,year,datetime,1,keepindex,constant,None,None,new, +dr_shift_cap.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, +dr_shift_capacity_scalar.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shift_capcostmult.csv,.csv,1,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +dr_shift_cost.csv,.csv,1,None,wide,"None",1,0,constant,None,None,new; check constant, +dr_shift_profile_energy.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant +dr_shift_profile_decrease.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant +dr_shift_profile_increase.csv,.csv,1,None,year,"i,hour",9999,0,constant,None,None,,constant dr_types.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant e.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, eall.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, @@ -329,12 +331,12 @@ plantchar_csp.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to c plantchar_dr_shed_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, plantchar_dr_shed_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, plantchar_dr_shed.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, -plantchar_dr_shape_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, -plantchar_dr_shape_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, -plantchar_dr_shape.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, -plantchar_dr_shift_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, -plantchar_dr_shift_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new,,,,, -plantchar_dr_shift.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant,,,,, +plantchar_dr_shape_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, +plantchar_dr_shape_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, +plantchar_dr_shape.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, +plantchar_dr_shift_fom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, +plantchar_dr_shift_vom.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new, +plantchar_dr_shift.csv,.csv,0,None,wide,"tech,r",1,0,constant,None,None,new; check constant, plantchar_fuelcell.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, plantchar_h2fuelcell.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, plantchar_gas_ccs.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new; used to create plantcharout.csv so no need to forecast, @@ -523,7 +525,6 @@ ctt_cc_mult,inputs.h5,1,,,,9999,,,,,, ctt_cost_vom_mult,inputs.h5,1,,,,9999,,,,,, ctt_hr_mult,inputs.h5,1,,,,9999,,,,,, distance,inputs.h5,1,,,,9999,,,,,, -evmc_storage_energy_h17,inputs.h5,1,,,,9999,,,,,has a t index so revisit if using, firm_import_limit,inputs.h5,1,,,,9999,,,,,handled in transmission.py, gasreg,inputs.h5,1,,,,9999,,,,,, h2_ptc_in,inputs.h5,1,,,,9999,,,,,, diff --git a/reeds/core/setup/c_model.gms b/reeds/core/setup/c_model.gms index f05ec619b..c99d8cad8 100644 --- a/reeds/core/setup/c_model.gms +++ b/reeds/core/setup/c_model.gms @@ -338,6 +338,7 @@ eq_interconnection_queues(tg,r,t) "--MW-- capacity deployment limit base eq_ccsflex_sto_ccsenergy_balance(i,v,r,allszn,t) "--MWh-- Total CCS energy requirement can be distributed across a characteristic day" eq_ccsflex_sto_storage_level(i,v,r,allh,t) "--varies-- Track the level of the CCS storage balance for each time-slice" eq_ccsflex_sto_storage_level_max(i,v,r,allh,t) "--varies-- Limit the level of the CCS storage system" +; *========================== * --- LOAD CONSTRAINTS --- diff --git a/reeds/plots.py b/reeds/plots.py index 37b9654e3..b985c486a 100644 --- a/reeds/plots.py +++ b/reeds/plots.py @@ -1422,7 +1422,8 @@ def monthifier(x): ax[0].set_ylim(0, 1) else: pass - # ax[0].set_ylim(0,dfs[plotcols].max()) + # ax[0].set_ylim(0,dfs[plotcols].max()) + return f, ax diff --git a/reeds/reedsplots.py b/reeds/reedsplots.py index b89b7db97..dae0bd81e 100644 --- a/reeds/reedsplots.py +++ b/reeds/reedsplots.py @@ -5358,7 +5358,7 @@ def get_tech_colors_order(order='fuel_storage_vre'): ### For this particular plot we put storage below VRE if order == 'fuel_storage_vre': vre_keywords = ['wind', 'pv', 'solar', 'csp'] - storage_keywords = ['battery', 'pump', 'evmc', 'storage'] + storage_keywords = ['battery', 'pump', 'storage','dr'] vre_stor_can = vre_keywords + storage_keywords + ['canada'] plotorder = [ k for k in bokehcolors.keys() @@ -7001,8 +7001,8 @@ def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = ' # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) # df = df_tech_combined.copy() - # df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') - # df.set_index('date', inplace=True) + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='h') + df.set_index('date', inplace=True) df = df[['Values']] rep_dfs[k] = df output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'rep_{k}'})],axis = 1) @@ -7020,10 +7020,10 @@ def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = ' # # Determine number of unique DR Shift techs # shift_techs = df['i'].unique() # Duplicate the dataframe for each DR Shift tech - # temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='H')}) + temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='h')}) # # temp = pd.concat([temp] * len(shift_techs), ignore_index=True) - # df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) - # df.set_index('date', inplace=True) + df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) + df.set_index('date', inplace=True) df['Values'] = df.GEN/df.CAP if k == 'Charge': df.Values *= -1 @@ -7033,7 +7033,7 @@ def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = ' rep_gen[k] = df output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'deploy_{k}'})],axis = 1) - plots_evmc = {'DR Shift Resource': {'Energy':(baseline_dfs['Energy'],'k','line'), + plots_dr = {'DR Shift Resource': {'Energy':(baseline_dfs['Energy'],'k','line'), 'Charge':(baseline_dfs['Charge'],'red','fill'), 'Discharge':(baseline_dfs['Discharge'],'green','fill')}, 'DR Shift Rep-period: Charge': {'Baseline':(baseline_dfs['Charge'],'k','line'), @@ -7051,7 +7051,7 @@ def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = ' save_dict = {} # Plot Charge, Discharge, Energy together through year - for title, plot_dict in plots_evmc.items(): + for title, plot_dict in plots_dr.items(): key = list(plot_dict.keys()) plot_dict[key[0]][0]['Unit'] = 1 f,ax = plots.plotyearbymonth( @@ -7072,6 +7072,127 @@ def dr_shift_resource_compare(case, year,savepath, region = 'ex', shift_tech = ' savename = f"dr_shift-{title.replace(':','').replace(' ','_')}-{region}-{year}.png" f.savefig(os.path.join(savepath, savename)) +def dr_shift_plots(case, year,savepath, region = 'ex', shift_tech = 'dr_shift_1',weather_year=2018): + + dr_shift_input_files = {'Charge':'dr_shift_profile_increase.h5', + 'Discharge':'dr_shift_profile_decrease.h5', + 'Energy':'dr_shift_profile_energy.h5',} + + dr_shift_rep_files = {'Charge':'dr_shift_charge.csv', + 'Discharge':'dr_shift_discharge.csv', + 'Energy':'dr_shift_profile_energy.csv',} + + dr_shift_dispatch_rep_files = {'Charge':'gen_h.csv', + 'Discharge':'gen_h.csv', + 'Energy':'stor_level.csv',} + if region =='ex': + cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')) + cap = cap.loc[cap.i == shift_tech] + region = cap.loc[cap['Value'].idxmax(), 'r'] + + output_csv = pd.DataFrame() + + baseline_dfs ={} + for k,v in dr_shift_input_files.items(): + df = reeds.io.read_file(os.path.join(case,'inputs_case',v)) + df = df.loc[df.year == year] + cols_tech = [x for x in df.columns if x.startswith(shift_tech) and x.endswith(region)] + df = df[['year'] + cols_tech] + df = df.loc[df.index.year == weather_year] + baseline_dfs[k] = df + temp = df.rename(columns = {cols_tech[0]:f'baseline_{k}'}) + output_csv = pd.concat((output_csv,temp[f'baseline_{k}']),axis = 1) + + + rep_dfs = {} + for k,v in dr_shift_rep_files.items(): + df = pd.read_csv(os.path.join(case,'inputs_case','rep',v)) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['*i']== shift_tech)] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + # # Determine number of unique DR Shift techs + # shift_techs = df['**i'].unique() + # df_tech_combined = pd.DataFrame() + # for tech in shift_techs: + # df_tech = df.loc[df['**i'] == tech].copy() + # df_tech.loc[:, 'date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='H') + # df_tech_combined = pd.concat((df_tech_combined, df_tech), axis=0) + # df = df_tech_combined.copy() + df['date'] = pd.date_range(start=f'1/1/{year}', periods=8760, freq='h') + df.set_index('date', inplace=True) + df = df[['Values']] + rep_dfs[k] = df + output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'rep_{k}'})],axis = 1) + + + rep_gen = {} + for k,v in dr_shift_dispatch_rep_files.items(): + df = pd.read_csv(os.path.join(case,'outputs',v)).rename(columns = {'Value':'GEN','allh':'h'}) + cap = pd.read_csv(os.path.join(case,'outputs','cap.csv')).rename(columns = {'Value':'CAP'}) + df = pd.merge(left = df, right = cap) + hr_map = pd.read_csv(os.path.join(case,'inputs_case','rep','hmap_myr.csv')) + df = pd.merge(left = df,right = hr_map, on = 'h', how = 'outer') + df = df.loc[(df.t == year)& (df['i']== shift_tech)] + df = df.loc[df.r == region].sort_values('yearhour').rename(columns = {'t':'year'}) + # # Determine number of unique DR Shift techs + # shift_techs = df['i'].unique() + # Duplicate the dataframe for each DR Shift tech + temp = pd.DataFrame({'yearhour': range(1, 8761), 'date': pd.date_range(start=f'1/1/{year}', periods=8760, freq='h')}) + # # temp = pd.concat([temp] * len(shift_techs), ignore_index=True) + df = pd.merge(left = temp, right = df, how = 'outer').fillna(0) + df.set_index('date', inplace=True) + df['Values'] = df.GEN/df.CAP + if k == 'Charge': + df.Values *= -1 + df.Values + df.loc[df.Values <0,'Values'] = 0 + df = df[['Values']].fillna(0) + rep_gen[k] = df + output_csv = pd.concat([output_csv,df.rename(columns = {'Values':f'deploy_{k}'})],axis = 1) + + plots_dr = {'DR Shift Resource Availability': {'Energy':(baseline_dfs['Energy'],'k','line'), + 'Deferred Charging':(baseline_dfs['Charge'],'red','fill'), + 'Baseline':(baseline_dfs['Discharge'],'green','fill')}, + 'DR Shift Rep-period: Charge': {'Baseline':(baseline_dfs['Charge'],'k','line'), + 'Rep':(rep_dfs['Charge'],'grey','fill'), + 'Deploy':(rep_gen['Charge'],'red','line')}, + 'DR Shift Rep-period: Discharge': {'Baseline':(baseline_dfs['Discharge'],'k','line'), + 'Rep':(rep_dfs['Discharge'],'grey','fill'), + 'Deploy':(rep_gen['Discharge'],'red','line')}, + 'DR Shift Rep-period: Energy': {'Baseline':(baseline_dfs['Energy'],'k','line'), + 'Rep':(rep_dfs['Energy'],'grey','fill'), + 'Deploy':(rep_gen['Energy'],'red','line')}, + } + + output_csv.to_csv(os.path.join(os.path.split(savepath)[0],f"dr_shift-{region}-{year}.csv")) + + save_dict = {} + # Plot Charge, Discharge, Energy together through year + for title, plot_dict in plots_dr.items(): + key = list(plot_dict.keys()) + plot_dict[key[0]][0]['Unit'] = 1 + f,ax = plots.plotyearbymonth( + plot_dict[key[0]][0], + plotcols= ('Unit'), + colors=['grey'], style='line', lwforline=0.5, ls = ':' + ) + for k in key: + plots.plotyearbymonth( + plot_dict[k][0], + plotcols= ([shift_tech + '|' +region] if shift_tech + '|' +region in plot_dict[k][0].columns else 'Values'), + colors=[plot_dict[k][1]], alpha = 0.5, + style = plot_dict[k][2], + f=f, ax=ax, + ) + ax.flat[0].set_title(f'{title}: {year}, {region}') + handles = [plt.Line2D([0], [0], color=plot_dict[k][1], lw=2) for k in key] + ax.flat[0].legend(handles, [f'{k}' for k in key], loc='upper left', bbox_to_anchor=(1, 1)) + + savename = f"dr_shift-{title.replace(':','').replace(' ','_')}-{region}-{year}.png" + f.savefig(os.path.join(savepath, savename)) + + def map_prm(case, tmin=2023, cmap=cmocean.cm.rain, scale=3, fontsize=7, vmax=None): dfmap = reeds.io.get_dfmap(case) sw = reeds.io.get_switches(case) diff --git a/reeds/resource_adequacy/capacity_credit.py b/reeds/resource_adequacy/capacity_credit.py index e3196afd6..8bc3047aa 100644 --- a/reeds/resource_adequacy/capacity_credit.py +++ b/reeds/resource_adequacy/capacity_credit.py @@ -434,16 +434,6 @@ def pivot_melt_data(df): .reindex(['i','r','ccseason','t','value'], axis=1) ) - if int(sw['GSw_EVMC']): - cc_evmc = ( - pd.concat(dict_cc_evmc, axis=0) - .reset_index().drop(['level_2', 'level_0'], axis=1) - .rename(columns={'level_1':'ccseason'}) - .assign(t=str(tnext)) - .reindex(['i','r','ccseason','t','value'], axis=1) - ) - else: - cc_evmc = pd.DataFrame(columns=['i', 'r', 'ccseason', 't', 'value']) # ---------------- RETURN A DICTIONARY WITH THE OUTPUTS FOR REEDS --------