diff --git a/cases.csv b/cases.csv index fa0dc507..c856b1a3 100644 --- a/cases.csv +++ b/cases.csv @@ -46,8 +46,8 @@ upgradescen,Exogenous upgrade capital cost specification (see inputs\upgrades). retscen,Retirement Scenario,Nuke60RetireYear; Nuke80RetireYear; NukeEarlyRetireYear; NukeRefRetireYear,Nuke80RetireYear, supplycurve,Wind and Solar Supply Curves,default; 0; naris; 2018,default, uraniumscen,Uranium price scenario,AEO_2025_reference; AEO_2026_baseline,AEO_2026_baseline, -GSw_Region,Specify column from inputs/userinput/modeled_regions.csv or from {column of hierarchy.csv}/{period-delimited entries to keep from that column},N/A,country/USA, -GSw_ZoneSet,Set of geospatial zones to use as balancing areas (described in inputs/zones/README.md),^(z48|z54|z69|z132|z134|z3109|UTcounty|PJMcounty)$,z132, +GSw_Region,Specify {column of hierarchy.csv}/{period-delimited entries to keep from that column},N/A,country/USA, +GSw_ZoneSet,Set of geospatial zones to use as balancing areas (described in inputs/zones/README.md),^(z48|z54|z69|z90|z132|z134|z3109|UTcounty|PJMcounty)$,z132, capcredit_hierarchy_level,Select level at which to aggregate net load for capacity-credit calculation,r; nercr; transreg; transgrp; cendiv; st; interconnect; country; usda_region,transreg, construction_schedules_suffix,File suffix for construction schedules,default,default, construction_times_suffix,File suffix for construction times by technology,default,default, diff --git a/docs/source/faq.md b/docs/source/faq.md index 584a9a4a..df6dc837 100644 --- a/docs/source/faq.md +++ b/docs/source/faq.md @@ -59,9 +59,9 @@ Yes, you can configure ReEDS as a single interconnect. Limiting the spatial exte The ReEDS model is capable of capturing several spatial resolutions. This aspect of the model is controlled by the `GSw_Region` and `GSw_ZoneSet` switches. -- Balancing areas (BAs) and aggregated groups of BAs: Aggregation level is controlled by the 'aggreg' column of the `inputs/zones/GSw_ZoneSet/hierarchy_from134.csv` file. +- Aggregated groups of counties: Model zone is specified by the 'r' column of the `inputs/zones/GSw_ZoneSet/hierarchy.csv` file. - 134 zones: `GSw_ZoneSet = z134` - - 132 zones (**default**): `GSw_ZoneSet = z132`. Merges p119 into p122 and p30 into p28. + - 132 zones (**default**): `GSw_ZoneSet = z132`. Identical to z134 except merges p119 into p122 and p30 into p28. - 69 zones: `GSw_ZoneSet = z69`. Obeys state, interconnect, NERC, and FERC region boundaries; most other zones below these levels are aggregated together. - 54 zones: `GSw_ZoneSet = z54`. Obeys state boundaries but nudges the edges of interconnect, NERC, and FERC region boundaries to align with states. Keeps CA, IL, and NY split into 2 zones and TX split into 4 zones. - 48 zones: `GSw_ZoneSet = z48`. Obeys state boundaries but nudges the edges of interconnect, NERC, and FERC region boundaries to align with states (highly simplified). diff --git a/docs/sources.csv b/docs/sources.csv index e0ca5e3c..b7a953f3 100644 --- a/docs/sources.csv +++ b/docs/sources.csv @@ -685,7 +685,6 @@ RelativeFilePath,RelativeFolderPath,FileName_new,FileExtension,Description_new,I /inputs/userinput/ivt_default.csv,/inputs/userinput,ivt_default,.csv,,,,,, /inputs/userinput/ivt_small.csv,/inputs/userinput,ivt_small,.csv,,,,,, /inputs/userinput/ivt_step.csv,/inputs/userinput,ivt_step,.csv,ivt steps for endyears beyond 2050,,,,, -/inputs/userinput/modeled_regions.csv,/inputs/userinput,modeled_regions,.csv,Sets of BA regions that a user can model in a run. Each column is a different region option and can be specified in cases using GSw_Region.,,,,, /inputs/userinput/windows_2100.csv,/inputs/userinput,windows_2100,.csv,Window size for using window solve method to 2100,,,,, /inputs/userinput/windows_default.csv,/inputs/userinput,windows_default,.csv,Window size for using window solve method,,,,, /inputs/userinput/windows_step10.csv,/inputs/userinput,windows_step10,.csv,Window size for beyond2050step10,,,,, diff --git a/docs/sources_documentation.md b/docs/sources_documentation.md index 21237a2e..08c91a21 100644 --- a/docs/sources_documentation.md +++ b/docs/sources_documentation.md @@ -3434,10 +3434,6 @@ - **Description:** ivt steps for endyears beyond 2050 --- - - [modeled_regions.csv](/inputs/userinput/modeled_regions.csv) - - **Description:** Sets of BA regions that a user can model in a run. Each column is a different region option and can be specified in cases using GSw_Region. ---- - - [windows_2100.csv](/inputs/userinput/windows_2100.csv) - **Description:** Window size for using window solve method to 2100 --- diff --git a/hourlize/qaqc/summarize_supply_curves.py b/hourlize/qaqc/summarize_supply_curves.py index 4522abcf..e1f864b6 100644 --- a/hourlize/qaqc/summarize_supply_curves.py +++ b/hourlize/qaqc/summarize_supply_curves.py @@ -83,8 +83,6 @@ def load_raw_supply_curves(rev_paths): args = parser.parse_args() rev_paths_files = args.rev_paths techs = args.techs - # only summarize ba supply curves for now - resolution = {'GSw_RegionResolution': 'ba'} ## set paths hourlize_path = os.path.dirname(os.path.realpath(__file__)) @@ -105,7 +103,7 @@ def load_raw_supply_curves(rev_paths): sys.exit(1) else: rev_path = pd.read_csv(rp) - rev_path = runreeds.get_rev_paths(rev_path, resolution) + rev_path = runreeds.get_rev_paths(rev_path) # subset to base name for sc_path rev_path['sc_folder'] = rev_path['sc_path'].apply(lambda row: os.path.basename(row)) # subset to relevant columns and techs diff --git a/hourlize/reeds_to_rev.py b/hourlize/reeds_to_rev.py index 38be1570..196b3d71 100644 --- a/hourlize/reeds_to_rev.py +++ b/hourlize/reeds_to_rev.py @@ -217,22 +217,13 @@ def reaggregate_supply_curve_regions(df_sc_in, run_folder): ``df_sc_in`` where values of "region" are remapped to aggregated regions. If not, returns ``df_sc_in`` unchanged. """ - sw = reeds.io.get_switches(run_folder) - if sw["GSw_RegionResolution"] == "county": - ### Map original sc regions to county - # pylint: disable-next=consider-using-f-string - df_sc_in["region"] = "p" + df_sc_in.FIPS.astype(str).map("{:>05}".format) - - elif sw["GSw_RegionResolution"] == "aggreg": - ### Load hierarchy file - hierarchy = pd.read_csv( - os.path.join(run_folder, "inputs_case", "hierarchy_original.csv"), - index_col="ba", - ) - if "aggreg" in hierarchy.columns: - r2aggreg = hierarchy.aggreg.copy() - ### Map original regions to new aggreg's - df_sc_in["region"] = df_sc_in["region"].map(r2aggreg) + county2zone = reeds.io.get_county2zone(run_folder) + df_sc_in["region"] = ( + df_sc_in.FIPS + .astype(str) + .map("{:>05}".format) + .map(county2zone) + ) return df_sc_in diff --git a/inputs/disaggregation/disagg_hydroexist.csv b/inputs/disaggregation/disagg_hydroexist.csv index 7d604669..01fe031a 100644 --- a/inputs/disaggregation/disagg_hydroexist.csv +++ b/inputs/disaggregation/disagg_hydroexist.csv @@ -1,4 +1,4 @@ -PCA_REG,FIPS,i,fracdata +legacy_ba,FIPS,i,fracdata p1,p53007,hydUD,0.16290661070304302 p1,p53033,hydUD,0.03384050367261281 p1,p53057,hydUD,0.2759706190975865 diff --git a/inputs/userinput/futurefiles.csv b/inputs/userinput/futurefiles.csv index 5ce71c1b..4baf6300 100644 --- a/inputs/userinput/futurefiles.csv +++ b/inputs/userinput/futurefiles.csv @@ -2,7 +2,6 @@ filename,filetype,ignore,key,year_col,fix_cols,wide,header,forecast_fit,clip_min aclike.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, acp_disallowed.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, acp_prices.csv,.csv,0,None,wide,st,1,0,constant,None,None,done,constant -agglevels.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, allout_RSC.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant allt.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, alpha.csv,.csv,0,None,t,None,1,0,constant,None,None,done,linear_10 @@ -198,7 +197,6 @@ heat_rate_penalty_spin.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done, heat_rate.csv,.csv,0,None,t,"i,v,r",0,0,constant,0,None,done,constant hierarchy_itlgrp.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, hierarchy_original.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, -hierarchy_with_res.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, hierarchy.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant hintage_char.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, hintage_data.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant @@ -256,7 +254,6 @@ min_retire_age.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant minCF.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant mingen_fixed.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, minloadfrac0.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant -modeled_regions.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, modeledyears.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant month.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, month2quarter.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, @@ -364,7 +361,6 @@ pvbcapcostmult.csv,.csv,0,None,t,None,0,0,constant,None,None,done,constant pvf_cap.csv,.csv,1,None,*t,None,0,0,linear_5,0,None,done (but double-check that it is written correctly by calc_financial_inputs.py),linear_5 pvf_onm_int.csv,.csv,1,None,*t,None,0,0,linear_10,0,None,done (but double-check that it is written correctly by calc_financial_inputs.py),linear_10 quarter.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, -r_ba.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, r_cendiv.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, r_county.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, r_cs_distance_mi.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, @@ -479,8 +475,6 @@ upgrade_mult_mid.csv,.csv,0,None,wide,dummy,1,0,linear_5,0,None,new, upgradelink_water.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant uranium_price.csv,.csv,0,None,year,None,0,0,linear_5,0,None,new, va_ng_crf_penalty.csv,.csv,0,None,0,None,0,None,constant,None,None,done,constant -val_ba.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, -county.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, val_cs.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, val_r_all.csv,.csv,1,None,9999,None,9999,0,constant,None,None,new, var_map.csv,.csv,1,None,9999,None,9999,0,constant,None,None,done,constant diff --git a/inputs/userinput/modeled_regions.csv b/inputs/userinput/modeled_regions.csv deleted file mode 100644 index 137a6662..00000000 --- a/inputs/userinput/modeled_regions.csv +++ /dev/null @@ -1,135 +0,0 @@ -r,PJMcounty,UTcounty -p1,ba,aggreg -p2,ba,aggreg -p3,ba,aggreg -p4,ba,aggreg -p5,ba,aggreg -p6,ba,aggreg -p7,ba,aggreg -p8,ba,aggreg -p9,ba,aggreg -p10,ba,aggreg -p11,ba,aggreg -p12,ba,aggreg -p13,ba,aggreg -p14,ba,aggreg -p15,ba,aggreg -p16,ba,aggreg -p17,ba,aggreg -p18,ba,aggreg -p19,ba,aggreg -p20,ba,aggreg -p21,ba,aggreg -p22,ba,aggreg -p23,ba,aggreg -p24,ba,aggreg -p25,ba,county -p26,ba,county -p27,ba,aggreg -p28,ba,aggreg -p29,ba,aggreg -p30,ba,aggreg -p31,ba,aggreg -p32,ba,aggreg -p33,ba,aggreg -p34,ba,aggreg -p35,ba,aggreg -p36,ba,aggreg -p37,ba,aggreg -p38,ba,aggreg -p39,ba,aggreg -p40,ba,aggreg -p41,ba,aggreg -p42,ba,aggreg -p43,ba,aggreg -p44,ba,aggreg -p45,county,aggreg -p46,county,aggreg -p47,ba,aggreg -p48,ba,aggreg -p49,ba,aggreg -p50,ba,aggreg -p51,ba,aggreg -p52,ba,aggreg -p53,ba,aggreg -p54,ba,aggreg -p55,ba,aggreg -p56,ba,aggreg -p57,ba,aggreg -p58,ba,aggreg -p59,ba,aggreg -p60,ba,aggreg -p61,ba,aggreg -p62,ba,aggreg -p63,ba,aggreg -p64,ba,aggreg -p65,ba,aggreg -p66,ba,aggreg -p67,ba,aggreg -p68,ba,aggreg -p69,county,aggreg -p70,county,aggreg -p71,ba,aggreg -p72,ba,aggreg -p73,ba,aggreg -p74,county,aggreg -p75,county,aggreg -p76,county,aggreg -p77,county,aggreg -p78,county,aggreg -p79,county,aggreg -p80,county,aggreg -p81,county,aggreg -p82,county,aggreg -p83,county,aggreg -p84,ba,aggreg -p85,ba,aggreg -p86,ba,aggreg -p87,ba,aggreg -p88,ba,aggreg -p89,ba,aggreg -p90,ba,aggreg -p91,ba,aggreg -p92,county,aggreg -p93,county,aggreg -p94,ba,aggreg -p95,ba,aggreg -p96,ba,aggreg -p97,county,aggreg -p98,county,aggreg -p99,county,aggreg -p100,county,aggreg -p101,ba,aggreg -p102,ba,aggreg -p103,county,aggreg -p104,county,aggreg -p105,county,aggreg -p106,county,aggreg -p107,county,aggreg -p108,county,aggreg -p109,county,aggreg -p110,county,aggreg -p111,county,aggreg -p112,county,aggreg -p113,county,aggreg -p114,county,aggreg -p115,county,aggreg -p116,county,aggreg -p117,county,aggreg -p118,county,aggreg -p119,county,aggreg -p120,county,aggreg -p121,county,aggreg -p122,county,aggreg -p123,county,aggreg -p124,county,aggreg -p125,county,aggreg -p126,county,aggreg -p127,county,aggreg -p128,county,aggreg -p129,ba,aggreg -p130,ba,aggreg -p131,ba,aggreg -p132,ba,aggreg -p133,ba,aggreg -p134,ba,aggreg diff --git a/inputs/zones/PJMcounty/hierarchy_from134.csv b/inputs/zones/PJMcounty/hierarchy_from134.csv deleted file mode 100644 index c1b5a1a7..00000000 --- a/inputs/zones/PJMcounty/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,p35 -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,p36 -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,p37 -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,p38 -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p39 -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p40 -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p41 -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p42 -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p43 -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p44 -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p45 -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p46 -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,p47 -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p48 -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p49 -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p50 -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p51 -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p52 -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p53 -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p54 -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p55 -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,p56 -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p57 -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p68 -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p69 -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p70 -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p71 -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p72 -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p73 -p74,MISO,MISO,MISO_North,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p74 -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p75 -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p76 -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p77 -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p78 -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p79 -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,p80 -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p81 -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p82 -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p83 -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p84 -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,p85 -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p86 -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,p87 -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p99 -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p100 -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p103 -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,p104 -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p105 -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p106 -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p107 -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,p108 -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p109 -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p110 -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p111 -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p112 -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p113 -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p114 -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p115 -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p116 -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p117 -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p118 -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p120 -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p121 -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p123 -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p124 -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,p125 -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,p134 diff --git a/inputs/zones/README.md b/inputs/zones/README.md index 00fc6295..1a8ea76d 100644 --- a/inputs/zones/README.md +++ b/inputs/zones/README.md @@ -6,7 +6,6 @@ Model zones are defined by the following user-generated files: - `hierarchy.csv`: Maps from ReEDS zones (`r` column) to the larger region hierarchy levels - `b2b.csv`: Back-to-back converter (B2B) capacity [MW] between model zones - `newlinks_offshore_radial.csv`: Candiate connections between offshore and coastal land-based zones -- TEMPORARY 20260402: `hierarchy_from134.csv`: The legacy-formatted `hierarchy.csv` file from the 134-zone version of ReEDS (will be removed once the rest of the spatial input processing is updated) And the following automatically generated files: @@ -21,6 +20,13 @@ The lat/lon is used for plotting, representative least-cost paths and greenfield - If the centroid is NOT within the zone polygon, the node location is the "most interior" point in the polygon (determined by iteratively inward-buffering the polygon until it disappears, then keeping the centroid of the penultimate iteration). + +## Notes on zone options + +- `z3109`: 1:1 mapping from counties to zones + - Not all counties have high-voltage load buses, so if `GSw_LoadAllocationMethod = state_lpf`, some counties may have zero load. + + ## Creating a new set of model zones Start by copying the `county2zone.csv` and `hierarchy.csv` file for an existing set of zones to a new folder (named with a memorable name for your new set of zones) in the [ReEDS_Input_Processing/zones](https://github.com/ReEDS-Model/ReEDS_Input_Processing/tree/main/zones) directory. @@ -61,6 +67,7 @@ Once you're happy with your zone and hierarchy level definitions, run the follow - Creates the `zonehash.csv` file - Rewrites the `itl_NARIS.csv`, `transmission_cost_distance.csv`, and `transmission_cost_distance_lines.csv` files (existing data in the file are preserved, so you should only see new rows added, typically at the bottom of the file) +1. If the new zone set requires special processing in ReEDS, add it to the appropriate sections of `inputs/zones/zoneset_config.yaml` (see below) 1. Add the new zone definition to the choices for the `GSw_ZoneSet` switch in `cases.csv` 1. To make sure it worked (or just to read the ITLs in general), you can run `import reeds` and then `reeds.inputs.get_itls(GSw_ZoneSet='your new zoneset name')` in Python with the `reeds2` conda environment activated. 1. Try a ReEDS run. @@ -82,3 +89,11 @@ The offshore zones are not user-adjustable. - `cendiv`: [Census divisions](https://www2.census.gov/geo/pdfs/maps-data/maps/reference/us_regdiv.pdf) - `usda_region`: [USDA Farm Production Regions](https://www.ers.usda.gov/data-products/arms-farm-financial-and-crop-production-practices/documentation) - `h2ptcreg`: Hydrogen tax credit regions ([DOE 2023, Figure 2](https://www.energy.gov/sites/default/files/2023-12/greet-manual_2023-12-20.pdf)) + +- `zoneset_config.yaml`: Settings for zoneset-specific processing. +If `GSw_ZoneSet` is listed beneath one of the following switch names, the described behavior is applied during input processing at the beginning of each ReEDS run using that `GSw_ZoneSet`. + - `drop_single_county_reinforcement_cost`: Drop the network reinforcement cost (a component of the interconnection cost) for new wind/solar capacity in single-county zones + - `drop_interfaces_missing_cost`: If an AC transmission interface has existing capacity but no expansion cost or representative distance, remove its existing capacity and do not allow it to be expanded. + (Turned off for most zone sets because we'd rather stop the run and add the missing data. + Turned on for some zone sets with single-county zones that have no high-voltage transmission lines crossing the single-county zone boundaries.) + - `reeds2pras_unitsize_unconstrain_counties`: Do not specify max unit sizes using the planning reserve margin (PRM) for single-county zones during ReEDS2PRAS unit disaggregation diff --git a/inputs/zones/UTcounty/hierarchy_from134.csv b/inputs/zones/UTcounty/hierarchy_from134.csv deleted file mode 100644 index c1b5a1a7..00000000 --- a/inputs/zones/UTcounty/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,p35 -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,p36 -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,p37 -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,p38 -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p39 -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p40 -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p41 -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p42 -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p43 -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p44 -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p45 -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p46 -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,p47 -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p48 -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p49 -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p50 -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p51 -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p52 -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p53 -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p54 -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p55 -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,p56 -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p57 -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p68 -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p69 -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p70 -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p71 -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p72 -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p73 -p74,MISO,MISO,MISO_North,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p74 -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p75 -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p76 -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p77 -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p78 -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p79 -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,p80 -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p81 -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p82 -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p83 -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p84 -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,p85 -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p86 -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,p87 -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p99 -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p100 -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p103 -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,p104 -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p105 -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p106 -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p107 -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,p108 -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p109 -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p110 -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p111 -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p112 -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p113 -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p114 -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p115 -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p116 -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p117 -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p118 -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p120 -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p121 -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p123 -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p124 -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,p125 -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,p134 diff --git a/inputs/zones/hierarchy_offshore.csv b/inputs/zones/hierarchy_offshore.csv index 4cf66ee4..ba7688e6 100644 --- a/inputs/zones/hierarchy_offshore.csv +++ b/inputs/zones/hierarchy_offshore.csv @@ -1,28 +1,28 @@ -ba,nercr,transreg,transgrp,st,interconnect,hurdlereg,aggreg -oWA,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Bonneville_Power_Administration,oWA -oOR_N,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West,oOR_N -oOR_S,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West,oOR_S -oCA_NNN,WECC_CA,CAISO,CAISO,CA,western,CAISO,oCA_NNN -oCA_NN,WECC_CA,CAISO,CAISO,CA,western,CAISO,oCA_NN -oCA_N,WECC_CA,CAISO,CAISO,CA,western,CAISO,oCA_N -oCA_S,WECC_CA,CAISO,CAISO,CA,western,CAISO,oCA_S -oTX,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,oTX -oLA,MISO,MISO,MISO_South,LA,eastern,MISO,oLA -oFL_W,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc,oFL_W -oFL_E,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc,oFL_E -oSC,SERC_E,SERTP,SERTP,SC,eastern,South_Carolina_Electric_Gas_Co,oSC -oNC_S,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East,oNC_S -oNC_N,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East,oNC_N -oVA,PJM,PJM,PJM_East,VA,eastern,PJM,oVA -oNJ,PJM,PJM,PJM_East,NJ,eastern,PJM,oNJ -oNY,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO,oNY -oRI,NPCC_NE,ISONE,ISONE,RI,eastern,ISONE,oRI -oNH,NPCC_NE,ISONE,ISONE,NH,eastern,ISONE,oNH -oME,NPCC_NE,ISONE,ISONE,ME,eastern,ISONE,oME -oMS,MISO,MISO,MISO_South,MS,eastern,MISO,oMS -oAL,SERC_SE,SERTP,SERTP,AL,eastern,PowerSouth_Energy_Coop,oAL -oGA,SERC_SE,SERTP,SERTP,GA,eastern,Southern_Co_Services_Inc,oGA -oMD,PJM,PJM,PJM_East,MD,eastern,PJM,oMD -oDE,PJM,PJM,PJM_East,DE,eastern,PJM,oDE -oCT,NPCC_NE,ISONE,ISONE,CT,eastern,ISONE,oCT -oMA,NPCC_NE,ISONE,ISONE,MA,eastern,ISONE,oMA +ba,nercr,transreg,transgrp,st,interconnect,hurdlereg +oWA,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Bonneville_Power_Administration +oOR_N,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West +oOR_S,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West +oCA_NNN,WECC_CA,CAISO,CAISO,CA,western,CAISO +oCA_NN,WECC_CA,CAISO,CAISO,CA,western,CAISO +oCA_N,WECC_CA,CAISO,CAISO,CA,western,CAISO +oCA_S,WECC_CA,CAISO,CAISO,CA,western,CAISO +oTX,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +oLA,MISO,MISO,MISO_South,LA,eastern,MISO +oFL_W,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc +oFL_E,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc +oSC,SERC_E,SERTP,SERTP,SC,eastern,South_Carolina_Electric_Gas_Co +oNC_S,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East +oNC_N,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East +oVA,PJM,PJM,PJM_East,VA,eastern,PJM +oNJ,PJM,PJM,PJM_East,NJ,eastern,PJM +oNY,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO +oRI,NPCC_NE,ISONE,ISONE,RI,eastern,ISONE +oNH,NPCC_NE,ISONE,ISONE,NH,eastern,ISONE +oME,NPCC_NE,ISONE,ISONE,ME,eastern,ISONE +oMS,MISO,MISO,MISO_South,MS,eastern,MISO +oAL,SERC_SE,SERTP,SERTP,AL,eastern,PowerSouth_Energy_Coop +oGA,SERC_SE,SERTP,SERTP,GA,eastern,Southern_Co_Services_Inc +oMD,PJM,PJM,PJM_East,MD,eastern,PJM +oDE,PJM,PJM,PJM_East,DE,eastern,PJM +oCT,NPCC_NE,ISONE,ISONE,CT,eastern,ISONE +oMA,NPCC_NE,ISONE,ISONE,MA,eastern,ISONE diff --git a/inputs/zones/z132/hierarchy_from134.csv b/inputs/zones/z132/hierarchy_from134.csv deleted file mode 100644 index c1b5a1a7..00000000 --- a/inputs/zones/z132/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,p35 -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,p36 -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,p37 -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,p38 -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p39 -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p40 -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p41 -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p42 -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p43 -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p44 -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p45 -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p46 -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,p47 -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p48 -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p49 -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p50 -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p51 -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p52 -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p53 -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p54 -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p55 -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,p56 -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p57 -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p68 -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p69 -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p70 -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p71 -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p72 -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p73 -p74,MISO,MISO,MISO_North,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p74 -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p75 -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p76 -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p77 -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p78 -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p79 -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,p80 -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p81 -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p82 -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p83 -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p84 -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,p85 -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p86 -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,p87 -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p99 -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p100 -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p103 -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,p104 -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p105 -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p106 -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p107 -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,p108 -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p109 -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p110 -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p111 -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p112 -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p113 -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p114 -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p115 -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p116 -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p117 -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p118 -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p120 -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p121 -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p123 -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p124 -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,p125 -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,p134 diff --git a/inputs/zones/z134/hierarchy.csv b/inputs/zones/z134/hierarchy.csv index 3cc8ecd3..f68801de 100644 --- a/inputs/zones/z134/hierarchy.csv +++ b/inputs/zones/z134/hierarchy.csv @@ -1,135 +1,135 @@ -r,nercr,transreg,transgrp,st,interconnect,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,CA,western,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,CA,western,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,CA,western,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,CA,western,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,NV,western,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,NV,western,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,WY,western,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,WY,western,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,WY,western,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,WY,western,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,UT,western,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,UT,western,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,AZ,western,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,NM,western,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,SD,western,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,CO,western,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,CO,western,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,MT,eastern,SPP,p35 -p36,SPP,SPP,SPP_North,ND,eastern,SPP,p36 -p37,MISO,MISO,MISO_North,ND,eastern,MISO,p37 -p38,SPP,SPP,SPP_North,SD,eastern,SPP,p38 -p39,SPP,SPP,SPP_North,NE,eastern,SPP,p39 -p40,SPP,SPP,SPP_North,NE,eastern,SPP,p40 -p41,SPP,SPP,SPP_North,NE,eastern,SPP,p41 -p42,MISO,MISO,MISO_North,MN,eastern,MISO,p42 -p43,MISO,MISO,MISO_North,MN,eastern,MISO,p43 -p44,MISO,MISO,MISO_North,MN,eastern,MISO,p44 -p45,MISO,MISO,MISO_North,IA,eastern,MISO,p45 -p46,MISO,MISO,MISO_North,WI,eastern,MISO,p46 -p47,SPP,SPP,SPP_South,NM,eastern,SPP,p47 -p48,SPP,SPP,SPP_South,TX,eastern,SPP,p48 -p49,SPP,SPP,SPP_South,OK,eastern,SPP,p49 -p50,SPP,SPP,SPP_South,OK,eastern,SPP,p50 -p51,SPP,SPP,SPP_South,OK,eastern,SPP,p51 -p52,SPP,SPP,SPP_South,KS,eastern,SPP,p52 -p53,SPP,SPP,SPP_South,KS,eastern,SPP,p53 -p54,SPP,SPP,SPP_South,MO,eastern,SPP,p54 -p55,SPP,SPP,SPP_South,MO,eastern,SPP,p55 -p56,SPP,SPP,SPP_South,AR,eastern,SPP,p56 -p57,SPP,SPP,SPP_South,TX,eastern,SPP,p57 -p58,MISO,MISO,MISO_South,LA,eastern,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,TX,western,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,TX,eastern,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,MN,eastern,MISO,p68 -p69,MISO,MISO,MISO_North,IA,eastern,MISO,p69 -p70,MISO,MISO,MISO_North,IA,eastern,MISO,p70 -p71,MISO,MISO,MISO_Central,MO,eastern,MISO,p71 -p72,MISO,MISO,MISO_Central,MO,eastern,MISO,p72 -p73,MISO,MISO,MISO_Central,MO,eastern,MISO,p73 -p74,MISO,MISO,MISO_North,MI,eastern,MISO,p74 -p75,MISO,MISO,MISO_North,WI,eastern,MISO,p75 -p76,MISO,MISO,MISO_North,WI,eastern,MISO,p76 -p77,MISO,MISO,MISO_North,WI,eastern,MISO,p77 -p78,MISO,MISO,MISO_North,WI,eastern,MISO,p78 -p79,MISO,MISO,MISO_North,WI,eastern,MISO,p79 -p80,PJM,PJM,PJM_West,IL,eastern,PJM,p80 -p81,MISO,MISO,MISO_Central,IL,eastern,MISO,p81 -p82,MISO,MISO,MISO_Central,IL,eastern,MISO,p82 -p83,MISO,MISO,MISO_Central,IL,eastern,MISO,p83 -p84,MISO,MISO,MISO_Central,MO,eastern,MISO,p84 -p85,MISO,MISO,MISO_South,AR,eastern,MISO,p85 -p86,MISO,MISO,MISO_South,LA,eastern,MISO,p86 -p87,MISO,MISO,MISO_South,MS,eastern,MISO,p87 -p88,SERC_C,SERTP,SERTP,MS,eastern,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,AL,eastern,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,AL,eastern,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,FL,eastern,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,TN,eastern,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,KY,eastern,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,GA,eastern,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,SC,eastern,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,SC,eastern,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,VA,eastern,PJM,p99 -p100,PJM,PJM,PJM_East,VA,eastern,PJM,p100 -p101,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,FL,eastern,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,MI,eastern,MISO,p103 -p104,PJM,PJM,PJM_West,MI,eastern,PJM,p104 -p105,MISO,MISO,MISO_Central,IN,eastern,MISO,p105 -p106,MISO,MISO,MISO_Central,IN,eastern,MISO,p106 -p107,MISO,MISO,MISO_Central,IN,eastern,MISO,p107 -p108,MISO,MISO,MISO_Central,KY,eastern,MISO,p108 -p109,PJM,PJM,PJM_East,KY,eastern,PJM,p109 -p110,PJM,PJM,PJM_East,KY,eastern,PJM,p110 -p111,PJM,PJM,PJM_East,OH,eastern,PJM,p111 -p112,PJM,PJM,PJM_East,OH,eastern,PJM,p112 -p113,PJM,PJM,PJM_East,OH,eastern,PJM,p113 -p114,PJM,PJM,PJM_East,OH,eastern,PJM,p114 -p115,PJM,PJM,PJM_East,PA,eastern,PJM,p115 -p116,PJM,PJM,PJM_East,WV,eastern,PJM,p116 -p117,PJM,PJM,PJM_East,WV,eastern,PJM,p117 -p118,PJM,PJM,PJM_East,VA,eastern,PJM,p118 -p119,PJM,PJM,PJM_East,PA,eastern,PJM,z122 -p120,PJM,PJM,PJM_East,PA,eastern,PJM,p120 -p121,PJM,PJM,PJM_East,MD,eastern,PJM,p121 -p122,PJM,PJM,PJM_East,PA,eastern,PJM,z122 -p123,PJM,PJM,PJM_East,MD,eastern,PJM,p123 -p124,PJM,PJM,PJM_East,VA,eastern,PJM,p124 -p125,PJM,PJM,PJM_East,DE,eastern,PJM,p125 -p126,PJM,PJM,PJM_East,NJ,eastern,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,VT,eastern,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,NH,eastern,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,MA,eastern,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,CT,eastern,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,RI,eastern,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,ME,eastern,ISONE,p134 +r,nercr,transreg,transgrp,st,interconnect,hurdlereg +p1,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Puget_Sound_Energy_Inc +p2,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Bonneville_Power_Administration +p3,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,Avista_Corp +p4,WECC_NW,NorthernGrid,NorthernGrid_West,WA,western,PUD_No2_of_Grant_County +p5,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,Bonneville_Power_Administration +p6,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,PacifiCorp_West +p7,WECC_NW,NorthernGrid,NorthernGrid_West,OR,western,Bonneville_Power_Administration +p8,WECC_NW,NorthernGrid,NorthernGrid_South,CA,western,PacifiCorp_West +p9,WECC_CA,CAISO,CAISO,CA,western,CAISO +p10,WECC_CA,CAISO,CAISO,CA,western,CAISO +p11,WECC_CA,CAISO,CAISO,CA,western,CAISO +p12,WECC_NW,NorthernGrid,NorthernGrid_South,NV,western,Nevada_Power_Co +p13,WECC_NW,NorthernGrid,NorthernGrid_South,NV,western,Nevada_Power_Co +p14,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Avista_Corp +p15,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Idaho_Power_Co +p16,WECC_NW,NorthernGrid,NorthernGrid_East,ID,western,Idaho_Power_Co +p17,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy +p18,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy +p19,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,WAPA_Upper_Great_Plains_West +p20,WECC_NW,NorthernGrid,NorthernGrid_East,MT,western,Northwestern_Energy +p21,WECC_NW,NorthernGrid,NorthernGrid_East,WY,western,PacifiCorp_East +p22,WECC_NW,NorthernGrid,NorthernGrid_East,WY,western,PacifiCorp_East +p23,WECC_NW,WestConnect,WestConnect_North,WY,western,WAPA_Rocky_Mountain_Region +p24,WECC_NW,WestConnect,WestConnect_North,WY,western,WAPA_Rocky_Mountain_Region +p25,WECC_NW,NorthernGrid,NorthernGrid_South,UT,western,PacifiCorp_East +p26,WECC_NW,NorthernGrid,NorthernGrid_South,UT,western,PacifiCorp_East +p27,WECC_SW,WestConnect,WestConnect_South,AZ,western,WAPA_Desert_Southwest_Region +p28,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co +p29,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co +p30,WECC_SW,WestConnect,WestConnect_South,AZ,western,Arizona_Public_Service_Co +p31,WECC_SW,WestConnect,WestConnect_South,NM,western,Public_Service_Co_of_New_Mexico +p32,WECC_NW,WestConnect,WestConnect_North,SD,western,WAPA_Rocky_Mountain_Region +p33,WECC_NW,WestConnect,WestConnect_North,CO,western,Public_Service_Co_of_Colorado +p34,WECC_NW,WestConnect,WestConnect_North,CO,western,Public_Service_Co_of_Colorado +p35,SPP,SPP,SPP_North,MT,eastern,SPP +p36,SPP,SPP,SPP_North,ND,eastern,SPP +p37,MISO,MISO,MISO_North,ND,eastern,MISO +p38,SPP,SPP,SPP_North,SD,eastern,SPP +p39,SPP,SPP,SPP_North,NE,eastern,SPP +p40,SPP,SPP,SPP_North,NE,eastern,SPP +p41,SPP,SPP,SPP_North,NE,eastern,SPP +p42,MISO,MISO,MISO_North,MN,eastern,MISO +p43,MISO,MISO,MISO_North,MN,eastern,MISO +p44,MISO,MISO,MISO_North,MN,eastern,MISO +p45,MISO,MISO,MISO_North,IA,eastern,MISO +p46,MISO,MISO,MISO_North,WI,eastern,MISO +p47,SPP,SPP,SPP_South,NM,eastern,SPP +p48,SPP,SPP,SPP_South,TX,eastern,SPP +p49,SPP,SPP,SPP_South,OK,eastern,SPP +p50,SPP,SPP,SPP_South,OK,eastern,SPP +p51,SPP,SPP,SPP_South,OK,eastern,SPP +p52,SPP,SPP,SPP_South,KS,eastern,SPP +p53,SPP,SPP,SPP_South,KS,eastern,SPP +p54,SPP,SPP,SPP_South,MO,eastern,SPP +p55,SPP,SPP,SPP_South,MO,eastern,SPP +p56,SPP,SPP,SPP_South,AR,eastern,SPP +p57,SPP,SPP,SPP_South,TX,eastern,SPP +p58,MISO,MISO,MISO_South,LA,eastern,MISO +p59,WECC_SW,WestConnect,WestConnect_South,TX,western,El_Paso_Electric +p60,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p61,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p62,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p63,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p64,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p65,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p66,MISO,MISO,MISO_South,TX,eastern,MISO +p67,ERCOT,ERCOT,ERCOT,TX,texas,ERCOT +p68,MISO,MISO,MISO_North,MN,eastern,MISO +p69,MISO,MISO,MISO_North,IA,eastern,MISO +p70,MISO,MISO,MISO_North,IA,eastern,MISO +p71,MISO,MISO,MISO_Central,MO,eastern,MISO +p72,MISO,MISO,MISO_Central,MO,eastern,MISO +p73,MISO,MISO,MISO_Central,MO,eastern,MISO +p74,MISO,MISO,MISO_North,MI,eastern,MISO +p75,MISO,MISO,MISO_North,WI,eastern,MISO +p76,MISO,MISO,MISO_North,WI,eastern,MISO +p77,MISO,MISO,MISO_North,WI,eastern,MISO +p78,MISO,MISO,MISO_North,WI,eastern,MISO +p79,MISO,MISO,MISO_North,WI,eastern,MISO +p80,PJM,PJM,PJM_West,IL,eastern,PJM +p81,MISO,MISO,MISO_Central,IL,eastern,MISO +p82,MISO,MISO,MISO_Central,IL,eastern,MISO +p83,MISO,MISO,MISO_Central,IL,eastern,MISO +p84,MISO,MISO,MISO_Central,MO,eastern,MISO +p85,MISO,MISO,MISO_South,AR,eastern,MISO +p86,MISO,MISO,MISO_South,LA,eastern,MISO +p87,MISO,MISO,MISO_South,MS,eastern,MISO +p88,SERC_C,SERTP,SERTP,MS,eastern,Tennessee_Valley_Authority +p89,SERC_SE,SERTP,SERTP,AL,eastern,Southern_Co_Services_Inc +p90,SERC_SE,SERTP,SERTP,AL,eastern,PowerSouth_Energy_Coop +p91,SERC_SE,SERTP,SERTP,FL,eastern,Southern_Co_Services_Inc +p92,SERC_C,SERTP,SERTP,TN,eastern,Tennessee_Valley_Authority +p93,SERC_C,SERTP,SERTP,KY,eastern,Tennessee_Valley_Authority +p94,SERC_SE,SERTP,SERTP,GA,eastern,Southern_Co_Services_Inc +p95,SERC_E,SERTP,SERTP,SC,eastern,Duke_Energy_Carolinas_LLC +p96,SERC_E,SERTP,SERTP,SC,eastern,South_Carolina_Electric_Gas_Co +p97,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Carolinas_LLC +p98,SERC_E,SERTP,SERTP,NC,eastern,Duke_Energy_Progress_East +p99,PJM,PJM,PJM_East,VA,eastern,PJM +p100,PJM,PJM,PJM_East,VA,eastern,PJM +p101,SERC_F,FRCC,FRCC,FL,eastern,Seminole_Electric_Coop_Inc +p102,SERC_F,FRCC,FRCC,FL,eastern,Florida_Power_and_Light +p103,MISO,MISO,MISO_Central,MI,eastern,MISO +p104,PJM,PJM,PJM_West,MI,eastern,PJM +p105,MISO,MISO,MISO_Central,IN,eastern,MISO +p106,MISO,MISO,MISO_Central,IN,eastern,MISO +p107,MISO,MISO,MISO_Central,IN,eastern,MISO +p108,MISO,MISO,MISO_Central,KY,eastern,MISO +p109,PJM,PJM,PJM_East,KY,eastern,PJM +p110,PJM,PJM,PJM_East,KY,eastern,PJM +p111,PJM,PJM,PJM_East,OH,eastern,PJM +p112,PJM,PJM,PJM_East,OH,eastern,PJM +p113,PJM,PJM,PJM_East,OH,eastern,PJM +p114,PJM,PJM,PJM_East,OH,eastern,PJM +p115,PJM,PJM,PJM_East,PA,eastern,PJM +p116,PJM,PJM,PJM_East,WV,eastern,PJM +p117,PJM,PJM,PJM_East,WV,eastern,PJM +p118,PJM,PJM,PJM_East,VA,eastern,PJM +p119,PJM,PJM,PJM_East,PA,eastern,PJM +p120,PJM,PJM,PJM_East,PA,eastern,PJM +p121,PJM,PJM,PJM_East,MD,eastern,PJM +p122,PJM,PJM,PJM_East,PA,eastern,PJM +p123,PJM,PJM,PJM_East,MD,eastern,PJM +p124,PJM,PJM,PJM_East,VA,eastern,PJM +p125,PJM,PJM,PJM_East,DE,eastern,PJM +p126,PJM,PJM,PJM_East,NJ,eastern,PJM +p127,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO +p128,NPCC_NY,NYISO,NYISO,NY,eastern,NYISO +p129,NPCC_NE,ISONE,ISONE,VT,eastern,ISONE +p130,NPCC_NE,ISONE,ISONE,NH,eastern,ISONE +p131,NPCC_NE,ISONE,ISONE,MA,eastern,ISONE +p132,NPCC_NE,ISONE,ISONE,CT,eastern,ISONE +p133,NPCC_NE,ISONE,ISONE,RI,eastern,ISONE +p134,NPCC_NE,ISONE,ISONE,ME,eastern,ISONE diff --git a/inputs/zones/z134/hierarchy_from134.csv b/inputs/zones/z134/hierarchy_from134.csv deleted file mode 100644 index c1b5a1a7..00000000 --- a/inputs/zones/z134/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,p35 -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,p36 -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,p37 -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,p38 -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p39 -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p40 -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p41 -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p42 -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p43 -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p44 -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p45 -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p46 -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,p47 -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p48 -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p49 -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p50 -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p51 -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p52 -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p53 -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p54 -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p55 -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,p56 -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p57 -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p68 -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p69 -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p70 -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p71 -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p72 -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p73 -p74,MISO,MISO,MISO_North,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p74 -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p75 -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p76 -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p77 -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p78 -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p79 -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,p80 -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p81 -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p82 -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p83 -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p84 -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,p85 -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p86 -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,p87 -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p99 -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p100 -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p103 -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,p104 -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p105 -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p106 -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p107 -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,p108 -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p109 -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p110 -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p111 -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p112 -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p113 -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p114 -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p115 -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p116 -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p117 -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p118 -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p120 -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p121 -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p123 -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p124 -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,p125 -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,p134 diff --git a/inputs/zones/z3109/hierarchy_from134.csv b/inputs/zones/z3109/hierarchy_from134.csv deleted file mode 100644 index c1b5a1a7..00000000 --- a/inputs/zones/z3109/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Puget_Sound_Energy_Inc,p1 -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,p2 -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Avista_Corp,p3 -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,PUD_No2_of_Grant_County,p4 -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p5 -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,PacifiCorp_West,p6 -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,p7 -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,p8 -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p9 -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p10 -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,p11 -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p12 -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,p13 -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Avista_Corp,p14 -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p15 -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,p16 -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p17 -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p18 -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,WAPA_Upper_Great_Plains_West,p19 -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,p20 -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p21 -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,p22 -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p23 -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,p24 -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p25 -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,p26 -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,WAPA_Desert_Southwest_Region,p27 -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,p29 -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,z28 -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,p31 -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,p32 -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p33 -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,p34 -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,p35 -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,p36 -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,p37 -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,p38 -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p39 -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p40 -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,p41 -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p42 -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p43 -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p44 -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p45 -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p46 -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,p47 -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p48 -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p49 -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p50 -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,p51 -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p52 -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,p53 -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p54 -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,p55 -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,p56 -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,p57 -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p58 -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,p59 -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p60 -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p61 -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p62 -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p63 -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p64 -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p65 -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,p66 -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,p67 -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,p68 -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p69 -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,p70 -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p71 -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p72 -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p73 -p74,MISO,MISO,MISO_North,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p74 -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p75 -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p76 -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p77 -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p78 -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,p79 -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,p80 -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p81 -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p82 -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,p83 -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,p84 -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,p85 -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,p86 -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,p87 -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,p88 -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p89 -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,p90 -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,p91 -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,p92 -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,p93 -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,p94 -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,p95 -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,p96 -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,p97 -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Progress_East,p98 -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p99 -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p100 -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,p101 -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Florida_Power_and_Light,p102 -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,p103 -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,p104 -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p105 -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p106 -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,p107 -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,p108 -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p109 -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,p110 -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p111 -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p112 -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p113 -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,p114 -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p115 -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p116 -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,p117 -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p118 -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,p120 -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p121 -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,z122 -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,p123 -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,p124 -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,p125 -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,p126 -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p127 -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,p128 -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,p129 -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,p130 -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,p131 -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,p132 -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,p133 -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,p134 diff --git a/inputs/zones/z48/hierarchy_from134.csv b/inputs/zones/z48/hierarchy_from134.csv deleted file mode 100644 index c0275442..00000000 --- a/inputs/zones/z48/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p8,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p23,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p24,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,NM -p32,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,SD -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p35,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,ND -p37,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,ND -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,SD -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p47,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,NM -p48,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p54,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p55,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p56,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,AR -p57,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p59,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p66,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p74,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p80,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,AR -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,MS -p88,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,MS -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p91,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,TN -p93,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,GA -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,SC -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,SC -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p104,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p108,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,DE -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,NJ -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,VT -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,NH -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,MA -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,CT -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,RI -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,ME diff --git a/inputs/zones/z54/hierarchy_from134.csv b/inputs/zones/z54/hierarchy_from134.csv deleted file mode 100644 index 59b418b3..00000000 --- a/inputs/zones/z54/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p8,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_N -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_N -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_S -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_S -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p23,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p24,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,NM -p32,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,SD -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p35,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,ND -p37,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,ND -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,SD -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p47,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,NM -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,TX_SPP -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p54,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p55,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p56,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,AR -p57,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,TX_MISO -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p59,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_W -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_W -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_W -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_W -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_E -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_E -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_E -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,TX_MISO -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_ERCOT_E -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p74,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,IL_PJM -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,AR -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,MS -p88,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,MS -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p91,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,TN -p93,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,GA -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,SC -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,Duke_Energy_Carolinas_LLC,SC -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p104,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p108,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,DE -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,NJ -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY_UP -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY_NYCLI -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,VT -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,NH -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,MA -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,CT -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,RI -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,ME diff --git a/inputs/zones/z69/hierarchy_from134.csv b/inputs/zones/z69/hierarchy_from134.csv deleted file mode 100644 index 8a2d12aa..00000000 --- a/inputs/zones/z69/hierarchy_from134.csv +++ /dev/null @@ -1,135 +0,0 @@ -ba,nercr,transreg,transgrp,cendiv,st,interconnect,country,usda_region,h2ptcreg,hurdlereg,aggreg -p1,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p2,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p3,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p4,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,WA,western,USA,pacific,Northwest,Bonneville_Power_Administration,WA -p5,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p6,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p7,WECC_NW,NorthernGrid,NorthernGrid_West,Pacific,OR,western,USA,pacific,Northwest,Bonneville_Power_Administration,OR -p8,WECC_NW,NorthernGrid,NorthernGrid_South,Pacific,CA,western,USA,pacific,California,PacifiCorp_West,CA_NorthernGrid -p9,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_N_CAISO -p10,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_S_CAISO -p11,WECC_CA,CAISO,CAISO,Pacific,CA,western,USA,pacific,California,CAISO,CA_S_CAISO -p12,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p13,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,NV,western,USA,mountain,Mountain,Nevada_Power_Co,NV -p14,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p15,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p16,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,ID,western,USA,mountain,Northwest,Idaho_Power_Co,ID -p17,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT_NorthernGrid -p18,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT_NorthernGrid -p19,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT_NorthernGrid -p20,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,MT,western,USA,mountain,Mountain,Northwestern_Energy,MT_NorthernGrid -p21,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY_NorthernGrid -p22,WECC_NW,NorthernGrid,NorthernGrid_East,Mountain,WY,western,USA,mountain,Mountain,PacifiCorp_East,WY_NorthernGrid -p23,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,WY_WestConnect -p24,WECC_NW,WestConnect,WestConnect_North,Mountain,WY,western,USA,mountain,Mountain,WAPA_Rocky_Mountain_Region,WY_WestConnect -p25,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p26,WECC_NW,NorthernGrid,NorthernGrid_South,Mountain,UT,western,USA,mountain,Mountain,PacifiCorp_East,UT -p27,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p28,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p29,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p30,WECC_SW,WestConnect,WestConnect_South,Mountain,AZ,western,USA,mountain,Southwest,Arizona_Public_Service_Co,AZ -p31,WECC_SW,WestConnect,WestConnect_South,Mountain,NM,western,USA,mountain,Southwest,Public_Service_Co_of_New_Mexico,NM_WestConnect -p32,WECC_NW,WestConnect,WestConnect_North,Mountain,SD,western,USA,northern-plains,Plains,WAPA_Rocky_Mountain_Region,SD_WestConnect -p33,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p34,WECC_NW,WestConnect,WestConnect_North,Mountain,CO,western,USA,mountain,Mountain,Public_Service_Co_of_Colorado,CO -p35,SPP,SPP,SPP_North,West_North_Central,MT,eastern,USA,mountain,Mountain,SPP,MT_SPP -p36,SPP,SPP,SPP_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,SPP,ND_SPP -p37,MISO,MISO,MISO_North,West_North_Central,ND,eastern,USA,northern-plains,Plains,MISO,ND_MISO -p38,SPP,SPP,SPP_North,West_North_Central,SD,eastern,USA,northern-plains,Plains,SPP,SD_SPP -p39,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p40,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p41,SPP,SPP,SPP_North,West_North_Central,NE,eastern,USA,northern-plains,Plains,SPP,NE -p42,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p43,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p44,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p45,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p46,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p47,SPP,SPP,SPP_South,West_South_Central,NM,eastern,USA,mountain,Southwest,SPP,NM_SPP -p48,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,TX_SPP_N -p49,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p50,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p51,SPP,SPP,SPP_South,West_South_Central,OK,eastern,USA,southern-plains,Plains,SPP,OK -p52,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p53,SPP,SPP,SPP_South,West_North_Central,KS,eastern,USA,northern-plains,Plains,SPP,KS -p54,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,MO_SPP -p55,SPP,SPP,SPP_South,West_North_Central,MO,eastern,USA,corn-belt,Midwest,SPP,MO_SPP -p56,SPP,SPP,SPP_South,West_South_Central,AR,eastern,USA,delta-states,Delta,SPP,AR_SPP -p57,SPP,SPP,SPP_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,SPP,TX_SPP_E -p58,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p59,WECC_SW,WestConnect,WestConnect_South,Mountain,TX,western,USA,southern-plains,Texas,El_Paso_Electric,TX_WestConnect -p60,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_W_ERCOT -p61,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_W_ERCOT -p62,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_W_ERCOT -p63,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_E_ERCOT -p64,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_E_ERCOT -p65,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_E_ERCOT -p66,MISO,MISO,MISO_South,West_South_Central,TX,eastern,USA,southern-plains,Texas,MISO,TX_MISO -p67,ERCOT,ERCOT,ERCOT,West_South_Central,TX,texas,USA,southern-plains,Texas,ERCOT,TX_E_ERCOT -p68,MISO,MISO,MISO_North,West_North_Central,MN,eastern,USA,lake-states,Midwest,MISO,MN -p69,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p70,MISO,MISO,MISO_North,West_North_Central,IA,eastern,USA,corn-belt,Midwest,MISO,IA -p71,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO_MISO -p72,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO_MISO -p73,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO_MISO -p74,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI_MISO -p75,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p76,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p77,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p78,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p79,MISO,MISO,MISO_North,East_North_Central,WI,eastern,USA,lake-states,Midwest,MISO,WI -p80,PJM,PJM,PJM_West,East_North_Central,IL,eastern,USA,corn-belt,Midwest,PJM,IL_PJM -p81,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p82,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p83,MISO,MISO,MISO_Central,East_North_Central,IL,eastern,USA,corn-belt,Midwest,MISO,IL_MISO -p84,MISO,MISO,MISO_Central,West_North_Central,MO,eastern,USA,corn-belt,Midwest,MISO,MO_MISO -p85,MISO,MISO,MISO_South,West_South_Central,AR,eastern,USA,delta-states,Delta,MISO,AR_MISO -p86,MISO,MISO,MISO_South,West_South_Central,LA,eastern,USA,delta-states,Delta,MISO,LA -p87,MISO,MISO,MISO_South,East_South_Central,MS,eastern,USA,delta-states,Delta,MISO,MS_MISO -p88,SERC_C,SERTP,SERTP,East_South_Central,MS,eastern,USA,delta-states,Delta,Tennessee_Valley_Authority,MS_SERTP -p89,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p90,SERC_SE,SERTP,SERTP,East_South_Central,AL,eastern,USA,southeast,Southeast,PowerSouth_Energy_Coop,AL -p91,SERC_SE,SERTP,SERTP,South_Atlantic,FL,eastern,USA,southeast,Florida,Southern_Co_Services_Inc,FL_SERTP -p92,SERC_C,SERTP,SERTP,East_South_Central,TN,eastern,USA,appalachia,Southeast,Tennessee_Valley_Authority,TN -p93,SERC_C,SERTP,SERTP,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,Tennessee_Valley_Authority,KY_SERTP -p94,SERC_SE,SERTP,SERTP,South_Atlantic,GA,eastern,USA,southeast,Southeast,Southern_Co_Services_Inc,GA -p95,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,SC -p96,SERC_E,SERTP,SERTP,South_Atlantic,SC,eastern,USA,southeast,Southeast,South_Carolina_Electric_Gas_Co,SC -p97,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p98,SERC_E,SERTP,SERTP,South_Atlantic,NC,eastern,USA,appalachia,Southeast,Duke_Energy_Carolinas_LLC,NC -p99,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p100,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p101,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL_FRCC -p102,SERC_F,FRCC,FRCC,South_Atlantic,FL,eastern,USA,southeast,Florida,Seminole_Electric_Coop_Inc,FL_FRCC -p103,MISO,MISO,MISO_Central,East_North_Central,MI,eastern,USA,lake-states,Midwest,MISO,MI_MISO -p104,PJM,PJM,PJM_West,East_North_Central,MI,eastern,USA,lake-states,Midwest,PJM,MI_PJM -p105,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p106,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p107,MISO,MISO,MISO_Central,East_North_Central,IN,eastern,USA,corn-belt,Midwest,MISO,IN -p108,MISO,MISO,MISO_Central,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,MISO,KY_MISO -p109,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY_PJM -p110,PJM,PJM,PJM_East,East_South_Central,KY,eastern,USA,appalachia,MidAtlantic,PJM,KY_PJM -p111,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p112,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p113,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p114,PJM,PJM,PJM_East,East_North_Central,OH,eastern,USA,corn-belt,MidAtlantic,PJM,OH -p115,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p116,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p117,PJM,PJM,PJM_East,South_Atlantic,WV,eastern,USA,appalachia,MidAtlantic,PJM,WV -p118,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p119,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p120,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p121,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p122,PJM,PJM,PJM_East,Mid_Atlantic,PA,eastern,USA,northeast,MidAtlantic,PJM,PA -p123,PJM,PJM,PJM_East,South_Atlantic,MD,eastern,USA,northeast,MidAtlantic,PJM,MD -p124,PJM,PJM,PJM_East,South_Atlantic,VA,eastern,USA,appalachia,MidAtlantic,PJM,VA -p125,PJM,PJM,PJM_East,South_Atlantic,DE,eastern,USA,northeast,MidAtlantic,PJM,DE -p126,PJM,PJM,PJM_East,Mid_Atlantic,NJ,eastern,USA,northeast,MidAtlantic,PJM,NJ -p127,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY_UP -p128,NPCC_NY,NYISO,NYISO,Mid_Atlantic,NY,eastern,USA,northeast,NewYork,NYISO,NY_NYCLI -p129,NPCC_NE,ISONE,ISONE,New_England,VT,eastern,USA,northeast,NewEngland,ISONE,VT -p130,NPCC_NE,ISONE,ISONE,New_England,NH,eastern,USA,northeast,NewEngland,ISONE,NH -p131,NPCC_NE,ISONE,ISONE,New_England,MA,eastern,USA,northeast,NewEngland,ISONE,MA -p132,NPCC_NE,ISONE,ISONE,New_England,CT,eastern,USA,northeast,NewEngland,ISONE,CT -p133,NPCC_NE,ISONE,ISONE,New_England,RI,eastern,USA,northeast,NewEngland,ISONE,RI -p134,NPCC_NE,ISONE,ISONE,New_England,ME,eastern,USA,northeast,NewEngland,ISONE,ME diff --git a/inputs/zones/z90/hierarchy.csv b/inputs/zones/z90/hierarchy.csv index 6930a59f..75d65f7a 100644 --- a/inputs/zones/z90/hierarchy.csv +++ b/inputs/zones/z90/hierarchy.csv @@ -1,91 +1,91 @@ -r,st,transreg,transgrp,nercr,interconnect -WA_W,WA,NorthernGrid,NorthernGrid_West,WECC_NW,western -WA_E,WA,NorthernGrid,NorthernGrid_West,WECC_NW,western -OR_W,OR,NorthernGrid,NorthernGrid_West,WECC_NW,western -OR_E,OR,NorthernGrid,NorthernGrid_West,WECC_NW,western -CA_N,CA,CAISO,CAISO,WECC_CA,western -CA_S,CA,CAISO,CAISO,WECC_CA,western -CA_LA,CA,CAISO,CAISO,WECC_CA,western -CA_SE,CA,CAISO,CAISO,WECC_CA,western -ID_N,ID,NorthernGrid,NorthernGrid_East,WECC_NW,western -ID_S,ID,NorthernGrid,NorthernGrid_East,WECC_NW,western -MT_W,MT,NorthernGrid,NorthernGrid_East,WECC_NW,western -MT_C,MT,NorthernGrid,NorthernGrid_East,WECC_NW,western -MT_E,MT,SPP,SPP_North,SPP,eastern -NV_N,NV,NorthernGrid,NorthernGrid_South,WECC_NW,western -NV_LV,NV,NorthernGrid,NorthernGrid_South,WECC_NW,western -UT,UT,NorthernGrid,NorthernGrid_South,WECC_NW,western -WY_W,WY,NorthernGrid,NorthernGrid_East,WECC_NW,western -WY_E,WY,WestConnect,WestConnect_North,WECC_NW,western -CO_W,CO,WestConnect,WestConnect_North,WECC_NW,western -CO_E,CO,WestConnect,WestConnect_North,WECC_NW,western -AZ_N,AZ,WestConnect,WestConnect_South,WECC_SW,western -AZ_S,AZ,WestConnect,WestConnect_South,WECC_SW,western -NM_W,NM,WestConnect,WestConnect_South,WECC_SW,western -NM_E,NM,SPP,SPP_South,SPP,eastern -TX_EP,TX,WestConnect,WestConnect_South,WestConnect,western -TX_N,TX,ERCOT,ERCOT,ERCOT,texas -TX_W,TX,ERCOT,ERCOT,ERCOT,texas -TX_S,TX,ERCOT,ERCOT,ERCOT,texas -TX_PAN,TX,SPP,SPP_South,SPP,eastern -TX_SPP,TX,SPP,SPP_South,SPP,eastern -TX_HOU,TX,ERCOT,ERCOT,ERCOT,texas -TX_MISO,TX,MISO,MISO_South,MISO,eastern -ND_SPP,ND,SPP,SPP_North,SPP,eastern -ND_MISO,ND,MISO,MISO_North,MISO,eastern -SD,SD,SPP,SPP_North,SPP,eastern -NE,NE,SPP,SPP_North,SPP,eastern -KS,KS,SPP,SPP_South,SPP,eastern -OK,OK,SPP,SPP_South,SPP,eastern -MN_N,MN,MISO,MISO_North,MISO,eastern -MN_S,MN,MISO,MISO_North,MISO,eastern -WI_W,WI,MISO,MISO_North,MISO,eastern -WI_E,WI,MISO,MISO_North,MISO,eastern -IA,IA,MISO,MISO_Central,MISO,eastern -MO_SPP,MO,SPP,SPP_South,SPP,eastern -MO_MISO,MO,MISO,MISO_Central,MISO,eastern -MO_SE,MO,SERTP,SERTP,SERC_C,eastern -AR_SPP,AR,SPP,SPP_South,SPP,eastern -AR_MISO,AR,MISO,MISO_South,MISO,eastern -LA,LA,MISO,MISO_South,MISO,eastern -MI_UP,MI,MISO,MISO_North,MISO,eastern -MI_LP,MI,MISO,MISO_North,MISO,eastern -MI_PJM,MI,PJM,PJM_West,PJM,eastern -IL_PJM,IL,PJM,PJM_West,PJM,eastern -IL_MISO,IL,MISO,MISO_Central,MISO,eastern -IN_PJM,IN,PJM,PJM_West,PJM,eastern -IN_MISO,IN,MISO,MISO_Central,MISO,eastern -KY_PJM,KY,PJM,PJM_East,PJM,eastern -KY_MISO,KY,MISO,MISO_Central,MISO,eastern -MS_MISO,MS,MISO,MISO_South,MISO,eastern -MS_SE,MS,SERTP,SERTP,SERC_C,eastern -TN,TN,SERTP,SERTP,SERC_C,eastern -AL,AL,SERTP,SERTP,SERC_SE,eastern -GA_N,GA,SERTP,SERTP,SERC_SE,eastern -GA_S,GA,SERTP,SERTP,SERC_SE,eastern -SC,SC,SERTP,SERTP,SERC_E,eastern -NC_SE,NC,SERTP,SERTP,SERC_E,eastern -NC_PJM,NC,PJM,PJM_East,SERC_E,eastern -FL_N,FL,FRCC,FRCC,SERC_F,eastern -FL_S,FL,FRCC,FRCC,SERC_F,eastern -FL_SE,FL,FRCC,FRCC,SERC_F,eastern -OH_N,OH,PJM,PJM_East,PJM,eastern -OH_S,OH,PJM,PJM_East,PJM,eastern -WV,WV,PJM,PJM_East,PJM,eastern -VA_W,VA,PJM,PJM_East,PJM,eastern -VA_E,VA,PJM,PJM_East,PJM,eastern -PA_W,PA,PJM,PJM_East,PJM,eastern -PA_E,PA,PJM,PJM_East,PJM,eastern -MD,MD,PJM,PJM_East,PJM,eastern -DE,DE,PJM,PJM_East,PJM,eastern -NJ,NJ,PJM,PJM_East,PJM,eastern -NY_W,NY,NYISO,NYISO,NPCC_NY,eastern -NY_E,NY,NYISO,NYISO,NPCC_NY,eastern -NY_NYC,NY,NYISO,NYISO,NPCC_NY,eastern -NY_LI,NY,NYISO,NYISO,NPCC_NY,eastern -VT,VT,ISONE,ISONE,NPCC_NE,eastern -NH,NH,ISONE,ISONE,NPCC_NE,eastern -MA,MA,ISONE,ISONE,NPCC_NE,eastern -CT,CT,ISONE,ISONE,NPCC_NE,eastern -RI,RI,ISONE,ISONE,NPCC_NE,eastern -ME,ME,ISONE,ISONE,NPCC_NE,eastern +r,st,transreg,transgrp,nercr,interconnect,hurdlereg +WA_W,WA,NorthernGrid,NorthernGrid_West,WECC_NW,western,Bonneville_Power_Administration +WA_E,WA,NorthernGrid,NorthernGrid_West,WECC_NW,western,Avista_Corp +OR_W,OR,NorthernGrid,NorthernGrid_West,WECC_NW,western,Bonneville_Power_Administration +OR_E,OR,NorthernGrid,NorthernGrid_West,WECC_NW,western,Bonneville_Power_Administration +CA_N,CA,CAISO,CAISO,WECC_CA,western,CAISO +CA_S,CA,CAISO,CAISO,WECC_CA,western,CAISO +CA_LA,CA,CAISO,CAISO,WECC_CA,western,CAISO +CA_SE,CA,CAISO,CAISO,WECC_CA,western,CAISO +ID_N,ID,NorthernGrid,NorthernGrid_East,WECC_NW,western,Bonneville_Power_Administration +ID_S,ID,NorthernGrid,NorthernGrid_East,WECC_NW,western,Idaho_Power_Co +MT_W,MT,NorthernGrid,NorthernGrid_East,WECC_NW,western,Northwestern_Energy +MT_C,MT,NorthernGrid,NorthernGrid_East,WECC_NW,western,Northwestern_Energy +MT_E,MT,SPP,SPP_North,SPP,eastern,MISO +NV_N,NV,NorthernGrid,NorthernGrid_South,WECC_NW,western,Nevada_Power_Co +NV_LV,NV,NorthernGrid,NorthernGrid_South,WECC_NW,western,Nevada_Power_Co +UT,UT,NorthernGrid,NorthernGrid_South,WECC_NW,western,PacifiCorp_East +WY_W,WY,NorthernGrid,NorthernGrid_East,WECC_NW,western,PacifiCorp_East +WY_E,WY,WestConnect,WestConnect_North,WECC_NW,western,WAPA_Rocky_Mountain_Region +CO_W,CO,WestConnect,WestConnect_North,WECC_NW,western,WAPA_Rocky_Mountain_Region +CO_E,CO,WestConnect,WestConnect_North,WECC_NW,western,WAPA_Rocky_Mountain_Region +AZ_N,AZ,WestConnect,WestConnect_South,WECC_SW,western,Arizona_Public_Service_Co +AZ_S,AZ,WestConnect,WestConnect_South,WECC_SW,western,Arizona_Public_Service_Co +NM_W,NM,WestConnect,WestConnect_South,WECC_SW,western,Public_Service_Co_of_New_Mexico +NM_E,NM,SPP,SPP_South,SPP,eastern,SPP +TX_EP,TX,WestConnect,WestConnect_South,WECC_SW,western,ERCOT +TX_N,TX,ERCOT,ERCOT,ERCOT,texas,ERCOT +TX_W,TX,ERCOT,ERCOT,ERCOT,texas,ERCOT +TX_S,TX,ERCOT,ERCOT,ERCOT,texas,ERCOT +TX_PAN,TX,SPP,SPP_South,SPP,eastern,SPP +TX_SPP,TX,SPP,SPP_South,SPP,eastern,SPP +TX_HOU,TX,ERCOT,ERCOT,ERCOT,texas,ERCOT +TX_MISO,TX,MISO,MISO_South,MISO,eastern,MISO +ND_SPP,ND,SPP,SPP_North,SPP,eastern,SPP +ND_MISO,ND,MISO,MISO_North,MISO,eastern,MISO +SD,SD,SPP,SPP_North,SPP,eastern,SPP +NE,NE,SPP,SPP_North,SPP,eastern,SPP +KS,KS,SPP,SPP_South,SPP,eastern,SPP +OK,OK,SPP,SPP_South,SPP,eastern,SPP +MN_N,MN,MISO,MISO_North,MISO,eastern,MISO +MN_S,MN,MISO,MISO_North,MISO,eastern,MISO +WI_W,WI,MISO,MISO_North,MISO,eastern,MISO +WI_E,WI,MISO,MISO_North,MISO,eastern,MISO +IA,IA,MISO,MISO_Central,MISO,eastern,MISO +MO_SPP,MO,SPP,SPP_South,SPP,eastern,SPP +MO_MISO,MO,MISO,MISO_Central,MISO,eastern,MISO +MO_SE,MO,SERTP,SERTP,SERC_C,eastern,Associated_Electric_Coop_Inc +AR_SPP,AR,SPP,SPP_South,SPP,eastern,SPP +AR_MISO,AR,MISO,MISO_South,MISO,eastern,MISO +LA,LA,MISO,MISO_South,MISO,eastern,MISO +MI_UP,MI,MISO,MISO_North,MISO,eastern,MISO +MI_LP,MI,MISO,MISO_North,MISO,eastern,MISO +MI_PJM,MI,PJM,PJM_West,PJM,eastern,PJM +IL_PJM,IL,PJM,PJM_West,PJM,eastern,PJM +IL_MISO,IL,MISO,MISO_Central,MISO,eastern,MISO +IN_PJM,IN,PJM,PJM_West,PJM,eastern,PJM +IN_MISO,IN,MISO,MISO_Central,MISO,eastern,MISO +KY_PJM,KY,PJM,PJM_East,PJM,eastern,PJM +KY_MISO,KY,MISO,MISO_Central,MISO,eastern,Tennessee_Valley_Authority +MS_MISO,MS,MISO,MISO_South,MISO,eastern,MISO +MS_SE,MS,SERTP,SERTP,SERC_C,eastern,Tennessee_Valley_Authority +TN,TN,SERTP,SERTP,SERC_C,eastern,Tennessee_Valley_Authority +AL,AL,SERTP,SERTP,SERC_SE,eastern,Southern_Co_Services_Inc +GA_N,GA,SERTP,SERTP,SERC_SE,eastern,Southern_Co_Services_Inc +GA_S,GA,SERTP,SERTP,SERC_SE,eastern,Southern_Co_Services_Inc +SC,SC,SERTP,SERTP,SERC_E,eastern,South_Carolina_Electric_and_Gas_Co +NC_SE,NC,SERTP,SERTP,SERC_E,eastern,Duke_Energy_Progress_East +NC_PJM,NC,PJM,PJM_East,SERC_E,eastern,PJM +FL_N,FL,FRCC,FRCC,SERC_F,eastern,Seminole_Electric_Coop_Inc +FL_S,FL,FRCC,FRCC,SERC_F,eastern,Seminole_Electric_Coop_Inc +FL_SE,FL,FRCC,FRCC,SERC_F,eastern,Florida_Power_and_Light +OH_N,OH,PJM,PJM_East,PJM,eastern,PJM +OH_S,OH,PJM,PJM_East,PJM,eastern,PJM +WV,WV,PJM,PJM_East,PJM,eastern,PJM +VA_W,VA,PJM,PJM_East,PJM,eastern,PJM +VA_E,VA,PJM,PJM_East,PJM,eastern,PJM +PA_W,PA,PJM,PJM_East,PJM,eastern,PJM +PA_E,PA,PJM,PJM_East,PJM,eastern,PJM +MD,MD,PJM,PJM_East,PJM,eastern,PJM +DE,DE,PJM,PJM_East,PJM,eastern,PJM +NJ,NJ,PJM,PJM_East,PJM,eastern,PJM +NY_W,NY,NYISO,NYISO,NPCC_NY,eastern,NYISO +NY_E,NY,NYISO,NYISO,NPCC_NY,eastern,NYISO +NY_NYC,NY,NYISO,NYISO,NPCC_NY,eastern,NYISO +NY_LI,NY,NYISO,NYISO,NPCC_NY,eastern,NYISO +VT,VT,ISONE,ISONE,NPCC_NE,eastern,ISONE +NH,NH,ISONE,ISONE,NPCC_NE,eastern,ISONE +MA,MA,ISONE,ISONE,NPCC_NE,eastern,ISONE +CT,CT,ISONE,ISONE,NPCC_NE,eastern,ISONE +RI,RI,ISONE,ISONE,NPCC_NE,eastern,ISONE +ME,ME,ISONE,ISONE,NPCC_NE,eastern,ISONE diff --git a/inputs/zones/zoneset_config.yaml b/inputs/zones/zoneset_config.yaml new file mode 100644 index 00000000..520bb5c3 --- /dev/null +++ b/inputs/zones/zoneset_config.yaml @@ -0,0 +1,14 @@ +drop_single_county_reinforcement_cost: +- z3109 +- PJMcounty +- UTcounty +- z2972 +drop_interfaces_missing_cost: +- z3109 +- PJMcounty +- UTcounty +reeds2pras_unitsize_unconstrain_counties: +- z3109 +- PJMcounty +- UTcounty +- z2972 \ No newline at end of file diff --git a/postprocessing/input_plots.py b/postprocessing/input_plots.py index e5b32f10..3005b9f1 100644 --- a/postprocessing/input_plots.py +++ b/postprocessing/input_plots.py @@ -556,7 +556,7 @@ def plot_existing_unitsize( 'ReEDS_generator_database_final_EIA-NEMS.csv', ) ) - dfunits['reeds_ba'] = dfunits.FIPS.str.strip('p').map(county2zone) + dfunits['r'] = dfunits.FIPS.str.strip('p').map(county2zone) else: dfunits = pd.read_csv(os.path.join(case, 'inputs_case', 'unitdata.csv')) @@ -566,7 +566,7 @@ def plot_existing_unitsize( & (dfunits.RetireYear > year) & (dfunits.tech.isin(techs)) ].copy() - dfplot['region'] = dfplot.reeds_ba.map(hierarchy[level]) + dfplot['region'] = dfplot.r.map(hierarchy[level]) ### Set up plot regions = hierarchy[level].unique() diff --git a/postprocessing/plots/level_map.csv b/postprocessing/plots/level_map.csv index bab54797..84d6eb9d 100644 --- a/postprocessing/plots/level_map.csv +++ b/postprocessing/plots/level_map.csv @@ -1,6 +1,5 @@ raw,display -county,County -ba,Balancing Area +r,Model Zones nercr,NERC regions transreg,Transmission Planning Region transgrp,Transmission Planning Subregion @@ -13,4 +12,3 @@ usda_region,USDA (Biomass Supply Curve) Region h2ptcreg,Hydrogen Production Tax Credit Regions hurdlereg,Hurdle Regions ccreg,Capacity Credit Regions -aggreg,Aggregated Regions diff --git a/postprocessing/reValue/reValue.py b/postprocessing/reValue/reValue.py index 064376b2..be6ef046 100644 --- a/postprocessing/reValue/reValue.py +++ b/postprocessing/reValue/reValue.py @@ -193,25 +193,12 @@ def get_prices(): #Roll prices from CST to UTC (this will bring prices from end of year to beginning of year) for col in df_p_h_serv[s]: df_p_h_serv[s][col] = np.roll(df_p_h_serv[s][col], 6) - if sw_reg != 'ba': - #In this case, we need to map prices to bas - df_hier_red = df_hier[df_hier[sw_reg].isin(df_p_h_serv[s].columns)] - df_p_h_serv[s] = df_p_h_serv[s][df_hier_red[sw_reg].tolist()] - df_p_h_serv[s].columns = df_hier_red['ba'].tolist() return df_pq, df_q_load, df_p_h_serv def calculate_benchmarks(): print('Calculating benchmark annual average prices and system-wide price profile') #Calculate annual load by region and total load load_ba = df_q_load.drop(columns=['h']).sum() - if sw_reg != 'ba': - #In this case, we need to map load_ba from aggreg to ba, incorrectly assuming equal load for all bas in the same aggreg - df_load_ba = df_hier[df_hier['aggreg'].isin(load_ba.index)].copy() - df_load_ba['load'] = df_load_ba['aggreg'].map(load_ba.to_dict()) - df_load_ba['ba_count'] = df_load_ba.groupby('aggreg')['ba'].transform('count') - df_load_ba['load'] = df_load_ba['load'] / df_load_ba['ba_count'] - df_load_ba = df_load_ba.set_index('ba') - load_ba = df_load_ba['load'] load_nat = load_ba.sum() #Calculate benchmark prices, assuming flat-block benchmark providing energy and firm capacity only, #so averages across time are simply time-weighted. But when averaging across space, we weight by load. @@ -282,7 +269,7 @@ def calculate_metrics(): print('Reducing profiles to only those that can be mapped to prices') #First find list of BAs associated with ReEDS run reg_set = df_pq['reeds_ba'].unique().tolist() - bas = reg_set if sw_reg == 'ba' else df_hier[df_hier[sw_reg].isin(reg_set)]['ba'].tolist() + bas = reg_set df_p_h_s = df_p_h_serv.copy() #Shallow copy so we don't duplicate so much data if r['meta_path'] != 'none': df_meta = df_meta_full[df_meta_full['reeds_ba'].isin(bas)].copy() @@ -367,12 +354,12 @@ def calculate_metrics(): reeds_run_path = r['reeds_run_path'].replace('"', '') year = r['year'] switches = reeds.io.get_switches(reeds_run_path) - sw_reg = switches['GSw_RegionResolution'] - hier_file = f'{this_dir_path}/../../inputs/zones/{switches.GSw_ZoneSet}/hierarchy_from134.csv' - df_hier = pd.read_csv(hier_file, usecols=['ba',sw_reg]).drop_duplicates() df_hier_run = pd.read_csv(f'{reeds_run_path}/inputs_case/hierarchy.csv') - df_county_map = pd.read_csv(hier_file, usecols=['county','ba']) - df_county_map.columns = ['reeds_county', 'reeds_ba'] + df_county_map = ( + reeds.io.get_county2zone(reeds_run_path, as_map=False) + .rename(columns={'county': 'reeds_county', 'r': 'reeds_ba'}) + [['reeds_county', 'reeds_ba']] + ) df_hmap = pd.read_csv(f'{reeds_run_path}/inputs_case/rep/hmap_myr.csv') #Only fetch prices if we haven't already for this reeds run and year #TODO: Include tech here in the dct_prices tuple key? For now I disallow multiple techs diff --git a/postprocessing/retail_rate_module/calculate_historical_capex.py b/postprocessing/retail_rate_module/calculate_historical_capex.py index 9b8e4df7..dc1ac09a 100644 --- a/postprocessing/retail_rate_module/calculate_historical_capex.py +++ b/postprocessing/retail_rate_module/calculate_historical_capex.py @@ -13,10 +13,8 @@ import reeds def get_historical_units(inputs_case): - # Read generator database and map units to the model regions for this run - r_county = pd.read_csv(os.path.join(inputs_case, 'r_county.csv')) + # Read generator database gendb = pd.read_csv(os.path.join(inputs_case, 'unitdata.csv'), low_memory=False) - gendb = gendb.merge(r_county, left_on='FIPS', right_on='county', how='left') # Select units existing before or during the model start year sw = reeds.io.get_switches(inputs_case) diff --git a/postprocessing/tableau/tableau_viz_suite.py b/postprocessing/tableau/tableau_viz_suite.py index 36ce1b86..b469b83c 100644 --- a/postprocessing/tableau/tableau_viz_suite.py +++ b/postprocessing/tableau/tableau_viz_suite.py @@ -8,6 +8,7 @@ import datetime from lxml import etree as ET import shutil +from pathlib import Path pd.options.display.max_rows = 20 pd.options.display.max_columns = 200 @@ -90,7 +91,6 @@ def create_scenarios_csv(output_dir,cases): def produce_hierarchy_file(output_dir,basecase): hierarchy = reeds.io.get_hierarchy(cases[basecase]) - sw = reeds.io.get_switches(cases[basecase]) # hierarchy.csv has machine readable names - convert them to values from level_map for col in hierarchy.columns: @@ -100,28 +100,15 @@ def produce_hierarchy_file(output_dir,basecase): # clean up region names, ex. turn 'NorthernGrid_West' to 'NorthernGrid West', replace all instances of '_' with ' ' in the entire dataframe hierarchy = hierarchy.replace('_',' ',regex=True) - if sw.GSw_RegionResolution == "county" or sw.GSw_RegionResolution == "mixed": - # county2zone has the county FIPS to ReEDS BA mapping - county2zone = pd.read_csv(os.path.join(reeds_path, 'inputs', 'county2zone.csv'), dtype={'FIPS':str},) - county2zone['Region'] = 'p' + county2zone.FIPS - # Add BA info to hierarchy - hierarchy = hierarchy.merge(county2zone.drop(columns=['state']), left_on='r', right_on='Region') - # move the FIPS column to be the first column in the df - hierarchy = hierarchy[['Region'] + [col for col in hierarchy.columns if col != 'Region']] - # export - hierarchy.to_csv(os.path.join(output_dir,'shapefiles','hierarchy.csv'),index=False) - elif sw.GSw_RegionResolution == 'aggreg' or sw.GSw_RegionResolution == 'ba': - # add columns to match the county-level hierarchy.csv format - hierarchy = hierarchy.reset_index() - hierarchy['ba'] = hierarchy['r'] - hierarchy = hierarchy.rename(columns={'r':'Region'}) - hierarchy['FIPS'] = '' # add a blank FIPS column so that the hierarchy.csv has the same columns as when using county-level runs - hierarchy['county_name'] = '' # add a blank county_name column so that the hierarchy.csv has the same columns as when using county-level runs - # then hierarchy.csv is already ready to export - hierarchy.to_csv(os.path.join(output_dir,'shapefiles','hierarchy.csv'),index=False) - else: - print('All levels must be either county or ba now, all aggregation will be done via a hierarchy mapping.') - pass + # add columns to match the county-level hierarchy.csv format + # (required due to legacy downstream handling of counties) + hierarchy = hierarchy.reset_index() + hierarchy['ba'] = hierarchy['r'] + hierarchy = hierarchy.rename(columns={'r':'Region'}) + hierarchy['FIPS'] = '' # add a blank FIPS column so that the hierarchy.csv has the same columns as when using county-level runs + hierarchy['county_name'] = '' # add a blank county_name column so that the hierarchy.csv has the same columns as when using county-level runs + # then hierarchy.csv is already ready to export + hierarchy.to_csv(os.path.join(output_dir,'shapefiles','hierarchy.csv'),index=False) return @@ -155,51 +142,27 @@ def produce_transmission_endpoints(): os.mkdir(os.path.join(output_dir,'shapefiles','transmission_endpoints')) try: - if dictin_sw[basecase].GSw_RegionResolution == "county" or dictin_sw[basecase].GSw_RegionResolution == "mixed": - - src_file = os.path.join(reeds_path,'inputs','shapefiles','US_COUNTY_2022','US_COUNTY_2022.shp') - dst_file = os.path.join(output_dir,'shapefiles','transmission_endpoints','transmission_endpoints.shp') - - # Read the shapefile - gdf = gpd.read_file(src_file) - - # Compute centroids - gdf['geometry'] = gdf.geometry.centroid - - # add 'BA' column to this shapefile, needed for the Tableau join - # county2zone has the county FIPS to ReEDS BA mapping, must be the mapping from the ReEDS repo not inputs_case (which does not have all regions if not running nationally) - county2zone = pd.read_csv(os.path.join(reeds_path,'inputs','county2zone.csv'), dtype={'FIPS':str},index_col='FIPS').squeeze(1) - - gdf['BA'] = gdf['FIPS'].map(lambda x: county2zone['ba'][x]) - - # rename for join in Tableau - gdf = gdf.rename(columns={'rb':'Region'}) - - # Export to shapefile - gdf.to_file(dst_file) - else: - src_file = os.path.join(reeds_path,'inputs','shapefiles','transmission_endpoints','transmission_endpoints.shp') - dst_file = os.path.join(output_dir,'shapefiles','transmission_endpoints','transmission_endpoints.shp') - - gdf = reeds.io.get_zonemap(cases[basecase]).reset_index().rename(columns={'index':'Region', - 'country':'COUNTRY', - 'st':'STATE',}) - # columns we have: ['geometry', 'node_longitude', 'node_latitude', 'x', 'y', 'offshore', 'centroid_x', 'centroid_y', 'km2', 'aggreg', 'nercr', 'transreg', 'transgrp', 'cendiv', 'st', 'interconnect', 'country', 'usda_region', 'h2ptcreg', 'hurdlereg'], - # columns we need: ['Region', 'FIPS', 'NAME', 'NAMELSAD', 'COUNTYFP', 'STATE', 'STCODE', 'STATEFP', 'COUNTRY', 'BA', 'geometry'] - gdf['geometry'] = gpd.points_from_xy(gdf['x'], gdf['y']) - gdf['BA'] = gdf['Region'] - - # only keep columns needed for Tableau join - keep_cols = ['Region','STATE','COUNTRY','BA','geometry'] - gdf = gdf[keep_cols] - - # add blank columns (ideally these would be populated correctly or removed but they are not used in the merge) - for col in ['FIPS', 'NAME', 'NAMELSAD', 'COUNTYFP', 'STATE', 'STCODE', 'STATEFP', 'COUNTRY']: - # if that column is not in the gdf, add it as a blank column - if col not in gdf.columns: - gdf[col] = '' - - gdf.to_file(dst_file) + dst_file = os.path.join(output_dir,'shapefiles','transmission_endpoints','transmission_endpoints.shp') + + gdf = reeds.io.get_zonemap(cases[basecase]).reset_index().rename(columns={'index':'Region', + 'country':'COUNTRY', + 'st':'STATE',}) + # columns we have: ['geometry', 'node_longitude', 'node_latitude', 'x', 'y', 'offshore', 'centroid_x', 'centroid_y', 'km2', 'aggreg', 'nercr', 'transreg', 'transgrp', 'cendiv', 'st', 'interconnect', 'country', 'usda_region', 'h2ptcreg', 'hurdlereg'], + # columns we need: ['Region', 'FIPS', 'NAME', 'NAMELSAD', 'COUNTYFP', 'STATE', 'STCODE', 'STATEFP', 'COUNTRY', 'BA', 'geometry'] + gdf['geometry'] = gpd.points_from_xy(gdf['x'], gdf['y']) + gdf['BA'] = gdf['Region'] + + # only keep columns needed for Tableau join + keep_cols = ['Region','STATE','COUNTRY','BA','geometry'] + gdf = gdf[keep_cols] + + # add blank columns (ideally these would be populated correctly or removed but they are not used in the merge) + for col in ['FIPS', 'NAME', 'NAMELSAD', 'COUNTYFP', 'STATE', 'STCODE', 'STATEFP', 'COUNTRY']: + # if that column is not in the gdf, add it as a blank column + if col not in gdf.columns: + gdf[col] = '' + + gdf.to_file(dst_file) except Exception as error: print(error) @@ -295,26 +258,11 @@ def reformat(df,case,metric,years): df['Transmission Planning Subregion End'] = df['Transmission Planning Subregion End'].str.replace("_"," ") # turn NorthernGrid_West to 'NorthernGrid West' df['Transmission Planning Subregion Begin'] = df['Transmission Planning Subregion Begin'].str.replace("_"," ") - if sw.GSw_RegionResolution == "county": - # the 'r' column already has the 'p41003' format - df = df.rename(columns={'r':'County'}) - # add a column with the FIPS code (remove the 'p' prefix and turn the value into a integer from the CountyName column) - df['FIPS'] = df['County'].str.replace('p','').astype(int) - - # now need to aggregate up to BA level, county2zone has the county FIPS to ReEDS BA mapping - county2zone = pd.read_csv(os.path.join(cases[case], 'inputs_case', 'county2zone.csv'), dtype={'FIPS':int},index_col='FIPS').squeeze(1) - - # aggregate up to BA level using the hierarchy mapping - df['BA'] = df['FIPS'].map(lambda x: county2zone['ba'][x]) - del df['FIPS'] - elif sw.GSw_RegionResolution == 'aggreg' or sw.GSw_RegionResolution == 'ba': - # the 'r' column already has the 'p4' BA format - df = df.rename(columns={'r':'BA'}) - # make the county column blank as it will not be used when we are using BA-level runs - df['County']='' - else: - print('All levels must be either county or ba now, all aggregation will be done via a hierarchy mapping.') - pass + # the 'r' column already has the 'p4' BA format + df = df.rename(columns={'r':'BA'}) + # make the county column blank as it will not be used when we are using BA-level runs + # (required due to legacy downstream handling of counties) + df['County']='' # add a column named 'Metric' which helps in the Tableau union df.loc[:,'Metric'] = metric @@ -417,7 +365,7 @@ def calc_peakload( ).rename(columns=int) dictout = {} - level_map = reeds.results.get_level_map(case) + level_map = reeds.results.get_level_map() for level in levels: df_level = df.loc[level,years].stack().rename_axis(['r','t']).rename('Value').reset_index().astype({'t':int}).set_index(['r','t']).squeeze().reset_index() df_level['Spatial Resolution'] = level_map[level] @@ -531,7 +479,7 @@ def export(dictin,output_dir): parser.add_argument( '--levels', nargs="+", # '+' means one or more arguments - default=['r'], # this can be 'ba','county','aggreg', depending on the run + default=['r'], help="Spatial resolution for results") parser.add_argument( '--trans_level', type=str, default='transgrp', @@ -602,7 +550,7 @@ def export(dictin,output_dir): create_scenarios_csv(output_dir,cases) # Grab clean display names for the levels - level_map = reeds.results.get_level_map(cases[basecase]) + level_map = reeds.results.get_level_map() # import some key inputs from ReEDS dictin_sw = {case: reeds.io.get_switches(cases[case]) for case in cases} diff --git a/reeds/input_processing/WriteHintage.py b/reeds/input_processing/WriteHintage.py index 755993d1..6d8cb071 100644 --- a/reeds/input_processing/WriteHintage.py +++ b/reeds/input_processing/WriteHintage.py @@ -327,18 +327,11 @@ def main(reeds_path, inputs_case): ] } - # Import mapping files - r_county = pd.read_csv( - os.path.join(inputs_case,'r_county.csv'), index_col='county').squeeze(1) - # Import generator database indat = pd.read_csv(os.path.join(inputs_case,'unitdata.csv'), low_memory=False ) - # Map counties to modeled regions - indat['r'] = indat.FIPS.map(r_county) - # Apply inflation to VOM costs indat['T_VOM'] *= inflator indat['T_CCSV'] = indat.T_VOM + inflator * indat.T_CCSV diff --git a/reeds/input_processing/copy_files.py b/reeds/input_processing/copy_files.py index 5a74bdfa..efcf21b1 100644 --- a/reeds/input_processing/copy_files.py +++ b/reeds/input_processing/copy_files.py @@ -41,7 +41,7 @@ def is_required_file(runfiles_row, sw): return is_required -def read_runfiles(reeds_path, inputs_case, sw, agglevel_variables): +def read_runfiles(reeds_path, sw): """ Read runfiles.csv and return the runfiles dataframe Identify files that have a region index versus those that do not. @@ -64,50 +64,20 @@ def read_runfiles(reeds_path, inputs_case, sw, agglevel_variables): args=(sw,), ) - # If a filepath isn't specified, that means it is already in the - # inputs_case folder, otherwise use the filepath - # We leave the 'lvl' portion of 'full_filepath' unformatted because - # we may need to read multiple 'lvl' variants of the file at once later - runfiles['full_filepath'] = runfiles.apply( - axis=1, - func=lambda row: os.path.join(inputs_case, row['filename']) - if pd.isna(row['filepath']) - else os.path.join(reeds_path, row['filepath'].format(**{**sw, **{'lvl': '{lvl}'}})) - ) - - # Create a copy of runfiles that specifies the 'lvl' that applies to each file - # (only used to determine missing files, the original runfiles is used later). - # In general, the 'lvl' corresponds to GSw_RegionResolution. - # For mixed resolution, each 'lvl'-indexed file is split into two rows - - # one for the BA-level file and the other for the county-level file. - runfiles_with_lvls = runfiles.assign(lvl='') - lvl_indexed_file_mask = ( - (runfiles_with_lvls.filepath.notna()) - & (runfiles_with_lvls.filepath.str.contains('{lvl}')) - ) - if agglevel_variables['lvl'] == 'mult': - runfiles_with_lvls.loc[lvl_indexed_file_mask, 'lvl'] = 'ba,county' - runfiles_with_lvls['lvl'] = runfiles_with_lvls['lvl'].str.split(',') - runfiles_with_lvls = runfiles_with_lvls.explode('lvl') - else: - runfiles_with_lvls.loc[lvl_indexed_file_mask, 'lvl'] = agglevel_variables['lvl'] - # Determine existence of each file - runfiles_with_lvls['full_filepath'] = runfiles_with_lvls.apply( + runfiles['full_filepath'] = runfiles.apply( axis=1, - func=lambda x: x['full_filepath'].format(**{'lvl': x['lvl']}) + func=lambda row: os.path.join(reeds_path, row['filepath'].format(**sw)) ) - runfiles_with_lvls['file_exists'] = ( - runfiles_with_lvls['full_filepath'].apply(lambda x: os.path.exists(x)) + runfiles['file_exists'] = ( + runfiles['full_filepath'].apply(lambda x: os.path.exists(x)) ) - # Raise an error if any of the required files with specified filepaths are missing - missing_required_files = list( - runfiles_with_lvls.loc[( - runfiles_with_lvls['file_is_required'] - & ~runfiles_with_lvls['file_exists'] - & ~runfiles_with_lvls['filepath'].isna() - )]['filepath'] + # Raise an error if any of the required files are missing + missing_required_files = ( + runfiles.loc[runfiles['file_is_required'] & ~runfiles['file_exists']] + ['filepath'] + .tolist() ) if len(missing_required_files) > 0: raise FileNotFoundError( @@ -116,15 +86,6 @@ def read_runfiles(reeds_path, inputs_case, sw, agglevel_variables): .format('\n'.join(missing_required_files)) ) - # Add file existence information to runfiles (for lvl-indexed files, the file must exist - # at all resolutions required for the run). - # We have to add this to runfiles rather than using runfiles_with_lvls because later - # sections require the 'lvl' placeholder in the filename to be unformatted and the file - # to be represented by one row rather than the multiple split up rows in runfiles_with_lvls. - runfiles['file_exists'] = ( - runfiles['filename'].map(runfiles_with_lvls.groupby('filename')['file_exists'].min()) - ) - # Non-region files that need copied either do not have an entry in region_col # or have 'ignore' as the entry. They also have a filepath specified. non_region_files = ( @@ -193,20 +154,24 @@ def get_regions_and_agglevel( """ sw = reeds.io.get_switches(inputs_case) - ## TEMPORARY 20260402: Load the full regions list - ## Use the line below once we make the switch - # hierarchy = reeds.io.assemble_hierarchy(inputs_case) - hierarchy = pd.read_csv( - Path(reeds.io.reeds_path, 'inputs', 'zones', sw.GSw_ZoneSet, 'hierarchy_from134.csv') - ) + hierarchy = reeds.io.assemble_hierarchy(inputs_case, extra=False) hierarchy['offshore'] = 0 - # Append offshore zones if using + # Label offshore zones if using if int(sw.GSw_OffshoreZones): - hierarchy_offshore = reeds.io.assemble_hierarchy( - fpath=os.path.join(reeds_path, 'inputs', 'zones', 'hierarchy_offshore.csv'), - extra=False, - ).assign(offshore=1) - hierarchy = pd.concat([hierarchy, hierarchy_offshore], ignore_index=True) + offshore_zones = ( + reeds.io.assemble_hierarchy( + fpath=os.path.join( + reeds_path, + 'inputs', + 'zones', + 'hierarchy_offshore.csv' + ), + extra=False, + ) + ['ba'] + .tolist() + ) + hierarchy.loc[hierarchy.r.isin(offshore_zones), 'offshore'] = 1 # Save the original hierarchy file: used in recf.py and hourly_*.py scripts if save_regions_and_agglevel: @@ -216,9 +181,8 @@ def get_regions_and_agglevel( ) # Add a row for each county - ## TEMPORARY 20260402: Use the old 134-zone county2zone until the aggregation approach is updated county2zone = ( - reeds.io.get_county2zone(GSw_ZoneSet='z134', as_map=False) + reeds.io.get_county2zone(GSw_ZoneSet=sw['GSw_ZoneSet'], as_map=False) .rename(columns={'r':'ba'}) ) county2zone['county'] = 'p' + county2zone.FIPS @@ -228,7 +192,19 @@ def get_regions_and_agglevel( ) # Add county info to hierarchy - hierarchy = hierarchy.merge(county2zone.drop(columns=['FIPS','state']), on='ba', how='outer') + hierarchy = hierarchy.merge( + county2zone.drop(columns=['FIPS','state']), + left_on='r', + right_on='ba', + how='outer' + ) + + # Add legacy zone (z134) info to hierarchy + # This is needed because some inputs still have data at z134 resolution, + # so we need to capture these legacy zones when subsetting to valid regions + county2zone_z134 = reeds.io.get_county2zone(GSw_ZoneSet='z134', as_map=True) + county2zone_z134.index = 'p' + county2zone_z134.index + hierarchy['legacy_ba'] = hierarchy['county'].map(county2zone_z134) # Subset hierarchy for the region of interest (based on the GSw_Region switch) # Parse the GSw_Region switch. If it includes a '/' character, it has the format @@ -247,43 +223,8 @@ def get_regions_and_agglevel( hier_sub = pd.concat([hier_sub, hier_sub_partial]) - # Read region resolution switch to determine agglevel - agglevel = sw['GSw_RegionResolution'].lower() - - # Check if desired spatial resolution is mixed - if agglevel == 'mixed': - #Set value in resolution column of hier_sub to match value assigned in modeled_regions.csv - region_def = pd.read_csv( - os.path.join(reeds_path,'inputs','userinput','modeled_regions.csv') - )[['r', sw.GSw_ZoneSet]] - - res_map = region_def.set_index('r').squeeze(1).to_dict() - hier_sub['resolution'] = hier_sub['ba'].map(res_map) - else: - hier_sub['resolution'] = agglevel - - - # Write out all unique aggregation levels present in the hierarchy resolution column - agglevels = hier_sub['resolution'].unique() - - # Write agglevel - if save_regions_and_agglevel: - pd.DataFrame(agglevels, columns=['agglevels']).to_csv( - os.path.join(inputs_case, 'agglevels.csv'), index=False) - - - # Create an r column at the front of the dataframe and populate it with the - # county-level regions (overwritten if needed) - hier_sub.insert(0,'r',hier_sub['county']) - - # Overwrite the regions with the ba, state, or aggreg values as specififed - for level in ['ba','aggreg']: - hier_sub.loc[hier_sub['resolution'] == level, 'r'] = ( - hier_sub.loc[hier_sub['resolution'] == level, level]) - # Write out mappings of r and ba to all counties r_county = hier_sub[['r','county']].dropna(subset='county') - ba_county = hier_sub[['ba','county']] # Rewrite county2zone for this case county2zone_agg = county2zone.merge(r_county, on='county') @@ -296,23 +237,10 @@ def get_regions_and_agglevel( r_county.to_csv( os.path.join(inputs_case, 'r_county.csv'), index=False) - # Write out a mapping of r to ba regions - hier_sub[['r','ba']].drop_duplicates().to_csv( - os.path.join(inputs_case, 'r_ba.csv'), index=False) # Write out mapping of r to census divisions hier_sub[['r','cendiv']].drop_duplicates().to_csv( os.path.join(inputs_case, 'r_cendiv.csv'), index=False) - # Write out mapping of rb to aggreg (for writesupplycurves.py) - hier_sub[['ba','aggreg']].drop_duplicates().to_csv( - os.path.join(inputs_case, 'rb_aggreg.csv'), index=False) - - # Write out val_county and val_ba before collapsing to unique regions - hier_sub['county'].dropna().to_csv( - os.path.join(inputs_case, 'county.csv'), header=False, index=False) - hier_sub['ba'].drop_duplicates().to_csv( - os.path.join(inputs_case, 'val_ba.csv'), header=False, index=False) - # Find all the unique elements that might define a region val_r_all = [] for column in hier_sub.columns.drop('offshore', errors='ignore'): @@ -325,12 +253,8 @@ def get_regions_and_agglevel( pd.Series(val_r_all).to_csv( os.path.join(inputs_case, 'val_r_all.csv'), header=False, index=False) - # Rename columns and save as hierarchy_with_res.csv for use in agglevel_variables function - hier_sub.drop(columns='offshore', errors='ignore').rename(columns={'r':'*r'}).to_csv( - os.path.join(inputs_case, 'hierarchy_with_res.csv'), index=False) - # Drop county name and resolution columns - hier_sub = hier_sub.drop(['county_name','resolution'],axis=1) + hier_sub = hier_sub.drop(['county_name'],axis=1) # Collapse to only unique regions @@ -341,18 +265,8 @@ def get_regions_and_agglevel( hier_sub['numeric_value'] = hier_sub['r'].str.extract('(\d+)').astype(float) hier_sub = hier_sub.sort_values(by='numeric_value').drop('numeric_value', axis=1) - # Output the itlgrp files for mixed and county resolution - - if sw.GSw_RegionResolution == 'aggreg': - hier_sub['itlgrp'] = hier_sub['aggreg'] - else: - hier_sub['itlgrp'] = hier_sub['ba'] - - if sw.GSw_RegionResolution == 'mixed': - mod_reg = pd.read_csv( - os.path.join(reeds_path,'inputs','userinput','modeled_regions.csv')) - if 'aggreg' in mod_reg[sw.GSw_ZoneSet].tolist(): - hier_sub['itlgrp'] = hier_sub['aggreg'] + ### TEMPORARY 20260402: For now just assign 'itlgrp' hierarchy level to 'r' + hier_sub['itlgrp'] = hier_sub['r'] hier_sub[['r','itlgrp']].rename(columns={'r':'*r'}).to_csv( os.path.join(inputs_case, 'hierarchy_itlgrp.csv'), index=False) @@ -374,7 +288,6 @@ def get_regions_and_agglevel( # Note the conversion to a pd Series is necessary to leverage the to_csv function if save_regions_and_agglevel: comments = { - 'aggreg': 'aggregated region', 'cendiv': 'census division', 'country': 'nation', 'h2ptcreg': 'H2 production tax credit region', @@ -403,7 +316,7 @@ def get_regions_and_agglevel( ( hier_sub .rename(columns={'r':'*r'}) - .drop(columns=['aggreg','offshore'], errors='ignore') + .drop(columns=['legacy_ba', 'offshore'], errors='ignore') ).to_csv(os.path.join(inputs_case, 'hierarchy.csv'), index=False) # Write offshore zones @@ -430,7 +343,6 @@ def get_regions_and_agglevel( "val_r_all": val_r_all, "val_st": val_st, "r_county": r_county, - "ba_county": ba_county, "levels": levels } @@ -507,7 +419,6 @@ def read_banned_tech_file(full_path, filepath, inputs_case, r_county): def subset_to_valid_regions( sw, region_file_entry, - agglevel_variables, regions_and_agglevel, inputs_case=None, agg=True, @@ -531,145 +442,55 @@ def subset_to_valid_regions( region_col = region_file_entry['region_col'] fix_cols = [i for i in region_file_entry['fix_cols'].split(',') if i != ''] - sc_point_gid_index = False - if ( - filename.startswith('supplycurve') - or filename.startswith('exog_cap') - or filename.startswith('prescribed_builds') - ): - sc_point_gid_index = True - - # When running at mixed resolution we need to copy both ba and county resolution data - if (agglevel_variables['lvl'] == 'mult') and ('lvl' in filepath) and (not sc_point_gid_index): - full_path_ba = full_path.replace('{lvl}', 'ba') - full_path_county = full_path.replace('{lvl}', 'county') - match filetype_in: - case 'h5': - df_ba = reeds.io.read_file(full_path_ba, parse_timestamps=True) - df_county = reeds.io.read_file(full_path_county, parse_timestamps=True) - case 'csv': - df_ba = pd.read_csv( - full_path_ba, - dtype={'FIPS':str, 'fips':str, 'cnty_fips':str}, comment='#', - ) - df_county = pd.read_csv( - full_path_county, - dtype={'FIPS':str, 'fips':str, 'cnty_fips':str}, comment='#', - ) - case _: - raise TypeError(f'filetype for {full_path} is not .csv or .h5') - - # Single resolution procedure - else: - # Replace '{switchnames}' in full_path with corresponding switch values - full_path = full_path.format(**{**sw, **{'lvl':agglevel_variables['lvl']}}) - ## Filename conditions - if filename.startswith('supplycurve'): - df = reeds.io.assemble_supplycurve( - full_path, - case=os.path.dirname(os.path.normpath(inputs_case)), - agg=agg, - ).reset_index() - elif filename.startswith('exog_cap'): - df = reeds.io.assemble_exog_cap( - full_path, - case=os.path.dirname(os.path.normpath(inputs_case)), - ) - elif filename.startswith('prescribed_builds'): - df = reeds.io.assemble_prescribed_builds( - full_path, - case=os.path.dirname(os.path.normpath(inputs_case)), - ) - elif filename == 'techs_banned.csv': - df, nuclear_ban_regions = read_banned_tech_file( - full_path, - filepath, - inputs_case, - r_county=regions_and_agglevel['r_county'] - ) - nuclear_ban_regions.to_csv( - os.path.join(inputs_case,'nuclear_ba_ban_list.csv'), - index=False - ) - ## Filetype conditions - elif filetype_in == 'h5': - df = reeds.io.read_file(full_path, parse_timestamps=True) - elif filetype_in == 'csv': - df = pd.read_csv(full_path, dtype={'FIPS':str, 'fips':str, 'cnty_fips':str}, comment='#') - else: - raise ValueError(f'Unmatched filename ({filename}) or filetype ({filetype_in})') - - # ---- Filter data to valid regions ---- - # If running at mixed resolution we need to remove BA level data for regions that are being solved at county resolution - if (agglevel_variables['lvl'] == 'mult') and ('lvl' in filepath) and (not sc_point_gid_index): - hier = pd.read_csv(os.path.join(inputs_case,'hierarchy_with_res.csv')).rename(columns = {'*r':'r'}) - # Filter function parameters to only include BA resolution regions - valid_regions_ba = {level: list(hier[hier['r'] - .isin(agglevel_variables['ba_regions'])][level].unique()) for level in levels} - val_st_ba = valid_regions_ba['st'] - val_r_all_ba = [] - for value in valid_regions_ba.values(): - val_r_all_ba.extend(value) - val_r_all_ba = list(set(val_r_all_ba)) - # Add BA regions associated with states and aggregs being run at BA resolution - val_r_all_ba.extend(x for x in agglevel_variables['ba_regions']if x not in val_r_all_ba) - df_ba = filter_data( - df_ba, - region_col, - fix_cols,levels, - val_r_all=val_r_all_ba, - valid_regions=valid_regions_ba, - val_st=val_st_ba, - filename=filename + # Replace '{switchnames}' in full_path with corresponding switch values + full_path = full_path.format(**sw) + ## Filename conditions + if filename.startswith('supplycurve'): + df = reeds.io.assemble_supplycurve( + full_path, + case=os.path.dirname(os.path.normpath(inputs_case)), + agg=agg, + ).reset_index() + elif filename.startswith('exog_cap'): + df = reeds.io.assemble_exog_cap( + full_path, + case=os.path.dirname(os.path.normpath(inputs_case)), ) - # Filter function parameters to only include county resolution regions - valid_regions_county = {level: (hier[hier['r'] - .isin(agglevel_variables['county_regions'])][level].unique()) for level in levels} - val_st_county = valid_regions_county['st'] - val_r_all_county = [] - for value in valid_regions_county.values(): - val_r_all_county.extend(value) - val_r_all_county = list(dict.fromkeys(val_r_all_county)) - - df_county = filter_data( - df_county, - region_col, - fix_cols, - levels, - val_r_all=val_r_all_county, - valid_regions=valid_regions_county, - val_st=val_st_county, - filename=filename + elif filename.startswith('prescribed_builds'): + df = reeds.io.assemble_prescribed_builds( + full_path, + case=os.path.dirname(os.path.normpath(inputs_case)), ) - - # Combine BA and county data - # The filter data function returns a dataframe with NAN values to prevent empty H5 files - # If either the BA data or county data are populated we can drop the nan data - if df_county.isna().all().all() and not df_ba.isna().all().all(): - df = df_ba - elif not df_county.isna().all().all() and df_ba.isna().all().all(): - df = df_county - else: - # Combine BA and county data - if region_file_entry['wide'] == 1 : - df = pd.concat([df_ba,df_county],axis =1) - else: - df = pd.concat([df_ba,df_county]) - - # Single resolution procedure - # Or procedure for input data that exist at single resolution and - # are aggregated/disaggregated later - else: - df = filter_data( - df, - region_col, - fix_cols, - levels, - val_r_all, - valid_regions, - val_st, - filename=filename + elif filename == 'techs_banned.csv': + df, nuclear_ban_regions = read_banned_tech_file( + full_path, + filepath, + inputs_case, + r_county=regions_and_agglevel['r_county'] + ) + nuclear_ban_regions.to_csv( + os.path.join(inputs_case,'nuclear_ba_ban_list.csv'), + index=False ) + ## Filetype conditions + elif filetype_in == 'h5': + df = reeds.io.read_file(full_path, parse_timestamps=True) + elif filetype_in == 'csv': + df = pd.read_csv(full_path, dtype={'FIPS':str, 'fips':str, 'cnty_fips':str}, comment='#') + else: + raise ValueError(f'Unmatched filename ({filename}) or filetype ({filetype_in})') + + # Filter data to valid regions + df = filter_data( + df, + region_col, + fix_cols, + levels, + val_r_all, + valid_regions, + val_st, + filename=filename + ) return df @@ -947,31 +768,28 @@ def write_non_region_files(non_region_files, sw, inputs_case, regions_and_agglev ) -def calculate_county_fractions(df, county2zone): +def calculate_county_fractions(df, county2zone_with_legacy_bas): """ Calculates the values associated with each county as a percentage - of the total values for the county's state, BA, and model region - (where "BA" means a zone from the set of default 134 zones and - "model region" means a zone from the set of zones specific to this run). - Note the calculation of the county-to-BA fractions will eventually + of the total values for the county's state, zone, and legacy BA + (where "zone" means a region from the zone set corresponding to + the current run and "legacy BA" means a region from the z134 zone set). + Note the calculation of the county-to-legacy BA fractions will eventually be deprecated once the 134-zone structure is removed from all spatial inputs (see https://github.com/ReEDS-Model/ReEDS/issues/16). - The provided dataframe must have columns 'FIPS' and 'value'. + + The provided dataframe "df" must have columns 'FIPS' and 'value'. + The provided dataframe "county2zone_with_legacy_bas" must have columns + 'FIPS', 'state', 'r', and 'legacy_ba'. """ required_columns = ['FIPS', 'value'] missing_columns = [col for col in required_columns if col not in df.columns] if len(missing_columns) > 0: raise KeyError(f"Provided dataframe is missing required columns {missing_columns}") - df = ( - df.merge( - county2zone.drop(columns='FIPS') - .rename(columns={'county': 'FIPS'}) - ) - .rename(columns={'ba': 'PCA_REG'}) - ) + df = df.merge(county2zone_with_legacy_bas) df['fracdata'] = ( - df.groupby('PCA_REG') + df.groupby('legacy_ba') ['value'] .transform(lambda x: x / x.sum()) ) @@ -984,7 +802,7 @@ def calculate_county_fractions(df, county2zone): df = ( df.dropna(subset='r') - [['PCA_REG', 'FIPS', 'fracdata', 'r', 'state', 'r_frac', 'state_frac']] + [['legacy_ba', 'FIPS', 'fracdata', 'r', 'state', 'r_frac', 'state_frac']] ) return df @@ -993,19 +811,22 @@ def write_disagg_data_files(runfiles, inputs_case): """ Write files that will be used for disaggregation. """ - # Get the county2zone file specific to this run (a mapping from counties - # to model regions) and the original county2zone file (including all - # counties) and combine them. The former is needed to calculate model - # region-to-county fractions, and the latter is needed to calculate - # state-to-county and BA-to-county fractions. - county_r_map = reeds.io.get_county2zone(os.path.dirname(inputs_case)) - ## TEMPORARY 20260402: Use the old 134-zone county2zone until the aggregation approach is updated - county2zone = ( + # Get the county2zone file for the z134 zone set and append the zones + # corresponding to this run. The z134 file is needed to calculate + # state-to-county fractions (since it includes all counties in the CONUS) + # and legacy BA-to-county fractions (which are needed to disaggregate + # inputs that are still at the z134 resolution). + county2zone_with_legacy_bas = ( reeds.io.get_county2zone(GSw_ZoneSet='z134', as_map=False) - .rename(columns={'r':'ba'}) + .rename(columns={'r': 'legacy_ba'}) + ) + county_r_map = reeds.io.get_county2zone(os.path.dirname(inputs_case)) + county2zone_with_legacy_bas['r'] = ( + county2zone_with_legacy_bas['FIPS'].map(county_r_map) + ) + county2zone_with_legacy_bas['FIPS'] = ( + 'p' + county2zone_with_legacy_bas['FIPS'] ) - county2zone['county'] = 'p' + county2zone['FIPS'].astype(str).str.zfill(5) - county2zone['r'] = county2zone['FIPS'].map(county_r_map) filename_filepath_map = runfiles.set_index('filename')['full_filepath'] for filename in [ @@ -1031,47 +852,18 @@ def write_disagg_data_files(runfiles, inputs_case): # Calculate state/region/BA-to-county fractions for the # disagg variable and write to inputs_case - df = calculate_county_fractions(df, county2zone) + df = calculate_county_fractions(df, county2zone_with_legacy_bas) df.to_csv(os.path.join(inputs_case, filename), index=False) return -def map_and_aggregate( - df, - regions_and_agglevel, - region_file_entry, - region_col, - aggfunc=None -): - ''' - Maps counties to BAs and aggregates according to aggfunc if provided. - ''' - merged = ( - df.set_index(region_col) - .merge(regions_and_agglevel['ba_county'], left_index=True, right_on='county') - .drop('county', axis=1) - .rename(columns={'ba': region_col}) - ) - - if aggfunc: - fix_cols = region_file_entry['fix_cols'].split(',') - if all([fix_col in merged.columns for fix_col in fix_cols]): - groupby_cols = list(set(fix_cols + [region_col])) - df = merged.groupby(groupby_cols, as_index=False).agg(aggfunc) - else: - df = merged.groupby(region_col, as_index=False).agg(aggfunc) - - - return df - def write_region_indexed_file( df, dir_dst, source_deflator_map, sw, - region_file_entry, - regions_and_agglevel + region_file_entry ): """ Write a single region-indexed file to the dir_dst directory @@ -1112,15 +904,17 @@ def write_region_indexed_file( # Adjust for inflation df['price'] = df['price'].astype(float) * source_deflator_map[filepath] case 'unitdata.csv': - fips_ba_map = regions_and_agglevel['ba_county'].dropna().set_index('county')['ba'] - df['reeds_ba'] = df['FIPS'].map(fips_ba_map) + # Map counties to zones + county2zone = reeds.io.get_county2zone(case=os.path.dirname(inputs_case)) + county2zone.index = 'p' + county2zone.index + df['r'] = df['FIPS'].map(county2zone) ## If using offshore zones, map offshore wind units from land to offshore zones if int(sw.GSw_OffshoreZones): df = reeds.spatial.assign_to_offshore_zones(df) - num_units_missing_bas = len(df.loc[df.reeds_ba.isna()]) - if num_units_missing_bas > 0: + num_units_missing_zones = len(df.loc[df.r.isna()]) + if num_units_missing_zones > 0: raise ValueError( - f"{num_units_missing_bas} units were not mapped to any BAs." + f"{num_units_missing_zones} units were not mapped to any zones." ) case _: pass @@ -1133,7 +927,6 @@ def write_region_indexed_files( sw, region_files, regions_and_agglevel, - agglevel_variables, source_deflator_map ): """ @@ -1155,7 +948,6 @@ def write_region_indexed_files( df = subset_to_valid_regions( sw, region_file_entry, - agglevel_variables, regions_and_agglevel, inputs_case ) @@ -1164,15 +956,12 @@ def write_region_indexed_files( inputs_case, source_deflator_map, sw, - region_file_entry, - regions_and_agglevel + region_file_entry ) def write_miscellaneous_files( sw, - regions_and_agglevel, - agglevel_variables, inputs_case, reeds_path ): @@ -1199,6 +988,10 @@ def write_miscellaneous_files( ][0:len(sw['GSw_PVB_Types'].split('_'))]} ).to_csv(os.path.join(inputs_case, 'pvb_bir.csv'), index=False) + ### County-to-zone mapping + county2zone = reeds.io.get_county2zone(case=os.path.dirname(inputs_case)) + county2zone.index = 'p' + county2zone.index + # Constant value if input is float, otherwise named profile # Methane leakage rate: try: @@ -1274,12 +1067,13 @@ def write_miscellaneous_files( reeds_path,'inputs','emission_constraints','county_co2_share_egrid_2022.csv'), index_col=0) - # Filter the counties that are in chosen GSw_Region - val_county = pd.read_csv(os.path.join(inputs_case,'county.csv'),names=['r']) - # Merge emission share by county with the counties in GSw_Region and calculate emission share of GSw_Region - region_em_share = val_county.merge(em_share, on='r', how='left').fillna(0) - region_em_share = region_em_share['share'].sum() + region_em_share = ( + em_share.reindex(county2zone.index) + .fillna(0) + ['share'] + .sum() + ) # Apply the emission share to national cap to get the emission cap trajectory of GSw_Region co2_cap *= region_em_share @@ -1403,31 +1197,9 @@ def write_miscellaneous_files( # Add capacity deployment limits based on interconnection queue data cap_queue = pd.read_csv( os.path.join(reeds_path,'inputs','capacity_exogenous','interconnection_queues.csv')) - # Filter the counties that are in chosen GSw_Region - cap_queue = cap_queue[cap_queue['r'].isin(val_county['r'])] - - # Single resolution procedure - if (agglevel_variables["lvl"] != 'county') and ('county' not in agglevel_variables['agglevel']): - cap_queue = cap_queue.rename(columns={'r':'county'}) - cap_queue = pd.merge(cap_queue, regions_and_agglevel["r_county"], on='county', how='left').dropna() - cap_queue = cap_queue.drop('county', axis=1) - - # Mixed resolution procedure - elif agglevel_variables['lvl'] == 'mult': - # Filter out BA regions and aggregate - cap_queue_ba = cap_queue[cap_queue['r'].isin(agglevel_variables['BA_county_list'])].copy() - if 'aggreg' in agglevel_variables['agglevel'] : - r_county_dict = regions_and_agglevel["r_county"].set_index('county')['r'].to_dict() - cap_queue_ba['r'] = cap_queue_ba['r'].map(r_county_dict) - - else: - cap_queue_ba['r'] = cap_queue_ba['r'].map(agglevel_variables['BA_2_county']) - - # Filter out county regions - cap_queue_county = cap_queue[cap_queue['r'].isin(agglevel_variables['county_regions'])] - - #combine BA and county - cap_queue = pd.concat([cap_queue_ba,cap_queue_county]) + # Map counties to zones + cap_queue['r'] = cap_queue['r'].map(county2zone) + cap_queue = cap_queue.dropna(subset='r') cap_queue = cap_queue.groupby(['tg','r'],as_index=False).sum() cap_queue.to_csv(os.path.join(inputs_case,'cap_limit.csv'), index=False) @@ -1506,8 +1278,6 @@ def main(reeds_path, inputs_case): ### =========================================================================== # Obtain data necessary to filter and aggregate regions regions_and_agglevel = get_regions_and_agglevel(reeds_path, inputs_case) - # Use agglevel_variables function to obtain spatial resolution variables - agglevel_variables = reeds.spatial.get_agglevel_variables(reeds_path, inputs_case) #%% =========================================================================== ### --- Copying files --- @@ -1515,12 +1285,7 @@ def main(reeds_path, inputs_case): sw = reeds.io.get_switches(inputs_case) - runfiles, non_region_files, region_files = read_runfiles( - reeds_path, - inputs_case, - sw, - agglevel_variables - ) + runfiles, non_region_files, region_files = read_runfiles(reeds_path, sw) # Rewrite the switches tables as GAMS-readable definition # (gswitches.csv is first written at runreeds.py) @@ -1540,17 +1305,9 @@ def main(reeds_path, inputs_case): sw, region_files, regions_and_agglevel, - agglevel_variables, source_deflator_map ) - # Create a maps.gpkg for this run - # Skip if using region dis/aggregation, maps will be written in aggregation_regions.py. - # Run if using mixed resolution aggreg-county combination - if agglevel_variables['lvl'] == 'ba' or ( - agglevel_variables['lvl'] == 'mult' and 'aggreg' in agglevel_variables['agglevel']): - generate_maps_gpkg(inputs_case) - #%% =========================================================================== ### --- Exceptions --- ### =========================================================================== @@ -1558,12 +1315,13 @@ def main(reeds_path, inputs_case): # Needs to run after copy of non-region files write_miscellaneous_files( sw, - regions_and_agglevel, - agglevel_variables, inputs_case, reeds_path ) + # Create a maps.gpkg for this run + generate_maps_gpkg(inputs_case) + #%% Procedure if __name__ == '__main__' and not hasattr(sys, 'ps1'): diff --git a/reeds/input_processing/hourly_repperiods.py b/reeds/input_processing/hourly_repperiods.py index d45142b8..e1ceedaa 100644 --- a/reeds/input_processing/hourly_repperiods.py +++ b/reeds/input_processing/hourly_repperiods.py @@ -258,27 +258,15 @@ def main( os.path.join(inputs_case, 'val_r_all.csv'), header=None).squeeze(1).tolist() modelyears = pd.read_csv( os.path.join(inputs_case, 'modeledyears.csv')).columns.astype(int) - # Use agglevel_variables function to obtain spatial resolution variables - agglevel_variables = reeds.spatial.get_agglevel_variables(reeds_path, inputs_case) #%% Get map from yperiod, hour, and h_of_period to timestamp timestamps = reeds.timeseries.make_timestamps(sw) timestamps_myr = timestamps.loc[timestamps.year.isin(sw['GSw_HourlyWeatherYears'])].copy() - ### Get region hierarchy for use with GSw_HourlyClusterRegionLevel + ### Get region hierarchy and rmap hierarchy = pd.read_csv( os.path.join(inputs_case,'hierarchy.csv')).rename(columns={'*r':'r'}).set_index('r') - hierarchy_orig = pd.read_csv( - os.path.join(inputs_case,'hierarchy_original.csv')) - - if sw.GSw_HourlyClusterRegionLevel == 'r': - rmap = pd.Series(hierarchy_orig.index, index=hierarchy_orig.index) - elif agglevel_variables['agglevel'] == 'county' or 'county' in agglevel_variables['agglevel']: - rmap = hierarchy[sw['GSw_HourlyClusterRegionLevel']] - elif agglevel_variables['agglevel'] in ['ba','aggreg']: - rmap = (hierarchy_orig.loc[hierarchy_orig['ba'].isin(val_r_all)] - [['aggreg',sw['GSw_HourlyClusterRegionLevel']]] - .drop_duplicates().set_index('aggreg')).squeeze(1) + rmap = reeds.io.get_rmap(inputs_case, sw['GSw_HourlyClusterRegionLevel']) #%% Load supply curves to use for available capacity weighting sc = { diff --git a/reeds/input_processing/hydcf.py b/reeds/input_processing/hydcf.py index c62e3b20..aa967383 100644 --- a/reeds/input_processing/hydcf.py +++ b/reeds/input_processing/hydcf.py @@ -321,22 +321,16 @@ def get_hydro_plants(inputs_case: str) -> pd.DataFrame: Returns: pd.DataFrame """ - # Get county-to-region mapping - county2zone = reeds.io.get_county2zone(os.path.dirname(inputs_case)) - county2zone.index = 'p' + county2zone.index # Get plant database and filter down to hydro plants gendb = pd.read_csv( os.path.join(inputs_case, 'unitdata.csv'), - usecols=['T_PID', 'tech', 'FIPS'] + usecols=['T_PID', 'tech', 'r'] ) hydro_plants = ( gendb.loc[gendb.tech.str.startswith('hyd')] .drop_duplicates('T_PID') .set_index('T_PID') ) - # Assign each plant to a model region and reformat - hydro_plants['r'] = hydro_plants['FIPS'].map(county2zone) - hydro_plants = hydro_plants.drop(columns='FIPS') hydro_plants.index = hydro_plants.index.astype(str) return hydro_plants diff --git a/reeds/input_processing/mcs_sampler.py b/reeds/input_processing/mcs_sampler.py index 605b2bfc..626eb624 100644 --- a/reeds/input_processing/mcs_sampler.py +++ b/reeds/input_processing/mcs_sampler.py @@ -166,7 +166,6 @@ def read_csv_h5_file(sw_runfiles_csv, aux_files, reeds_path, inputs_case) -> pd. df = copy_files.subset_to_valid_regions( aux_files['sw'], sw_runfiles_csv, - aux_files['agglevel_variables'], aux_files['regions_and_agglevel'], inputs_case, agg=False, @@ -204,36 +203,6 @@ def read_csv_h5_file(sw_runfiles_csv, aux_files, reeds_path, inputs_case) -> pd. return df - -def get_hierarchy_file(inputs_case: str, ReEDS_resolution: str) -> pd.DataFrame: - """ - The hierarchy file in `{inputs_case}/hierarchy.csv` does not contain a - differentiation between "ba" and "aggreg" resolution. This function - reconstructs the hierarchy file with all possible combinations relevant - to the MCS. - - Args: - inputs_case (str): Path to the inputs case directory. - ReEDS_resolution (str): The spatial resolution used in ReEDS (e.g., 'ba', 'aggreg'). - - Returns: - pd.DataFrame: A DataFrame with the hierarchy information relevant to the regions - considered in the inputs_casse run. - """ - original_hierarchy_file = pd.read_csv( - os.path.join(inputs_case, "hierarchy_original.csv") - ) - - valid_regions = pd.read_csv( - os.path.join(inputs_case, "hierarchy.csv") - )['*r'].values - - filtered_hierarchy = original_hierarchy_file[ - original_hierarchy_file[ReEDS_resolution].isin(valid_regions) - ].reset_index(drop=True) - - return filtered_hierarchy - def check_lhs_param_order(lower, upper): """Ensure lower bounds are less than upper bounds, swapping where necessary. @@ -569,20 +538,12 @@ def get_dist_instructions(reeds_path: str, inputs_case: str) -> Tuple[pd.DataFra df_input_dist_ex['reeds_path'] = reeds_path df_input_dist_ex['inputs_case'] = inputs_case - agglevel_variables = reeds.spatial.get_agglevel_variables(reeds_path, inputs_case) # Read runfiles.csv to get instructions on how files must be copied. - runfiles, nonregion_files, region_files = copy_files.read_runfiles( - reeds_path, inputs_case, sw, agglevel_variables) + runfiles, nonregion_files, region_files = copy_files.read_runfiles(reeds_path, sw) - ReEDS_resolution = sw['GSw_RegionResolution'] # Process each distribution instruction. for i, input_dist_row in df_input_dist.iterrows(): - # If ReEDS_resolution is aggreg but weight_r is 'ba' change it to aggreg - if ReEDS_resolution == 'aggreg' and input_dist_row['weight_r'] == 'ba': - df_input_dist_ex.at[i, 'weight_r'] = 'aggreg' - print(f"[Warning]: The weight_r for {input_dist_row['name']} was changed to 'aggreg'") - # Iterate over each switch in the instruction. for sw_i, assignments_list in enumerate(input_dist_row['assignments_list']): @@ -613,7 +574,7 @@ def get_dist_instructions(reeds_path: str, inputs_case: str) -> Tuple[pd.DataFra source_deflator_map = copy_files.get_source_deflator_map(reeds_path) - hierarchy_file = get_hierarchy_file(inputs_case, sw['GSw_RegionResolution']) + hierarchy_file = reeds.io.get_hierarchy(inputs_case).reset_index() # Save the auxiliary info in a dictionary. aux_files = { @@ -622,7 +583,6 @@ def get_dist_instructions(reeds_path: str, inputs_case: str) -> Tuple[pd.DataFra 'region_files': region_files, 'source_deflator_map': source_deflator_map, 'regions_and_agglevel': regions_and_agglevel, - 'agglevel_variables': agglevel_variables, 'hierarchy_file': hierarchy_file, } @@ -679,7 +639,8 @@ def get_all_region_weights( Args: distribution (str): The distribution to use for sampling. dist_params (list): The parameters for the distribution. - hierarchy_file (pd.DataFrame): DataFrame with the hierarchy information from get_hierarchy_file (.) + hierarchy_file (pd.DataFrame): DataFrame with the hierarchy information from + reeds.io.get_hierarchy() sample_hierarchy_lvl (str): The hierarchy level which will be assigned unique weights. Returns: @@ -696,7 +657,7 @@ def get_all_region_weights( r_weights = get_region_weights(distribution, dist_params) # Retrieve all BAs linked to the current region - bas = hierarchy_file.loc[hierarchy_file[sample_hierarchy_lvl] == region, "ba"].values + bas = hierarchy_file.loc[hierarchy_file[sample_hierarchy_lvl] == region, "r"].values # Assign weights to each BA, cendiv, and aggreg for ba in bas: @@ -741,15 +702,6 @@ def __init__( # Get all general region weights self.r_weights = get_all_region_weights( self.distribution, self.dist_params, self.hierarchy_file, self.sample_hierarchy_lvl) - ## Include aggregated region weights - if aux_files['sw']['GSw_RegionResolution'] == 'aggreg': - self.r_weights = { - **self.r_weights, - **{ - aux_files['hierarchy_file'].set_index('ba').aggreg.get(k,k): v - for k,v in self.r_weights.items() - }, - } # Store the weights for the recf files (CF files) # Those are computed during the the supply curve file sampling @@ -1145,14 +1097,10 @@ def __init__(self, sample_group, aux_files, n_samples, mcs_run_number, lhs_sampl self.inputs_case = sample_group['inputs_case'] self.distribution = sample_group['dist'] self.dist_params = sample_group['dist_params'] - self.ReEDS_resolution = aux_files['sw']['GSw_RegionResolution'] - if self.ReEDS_resolution=='aggreg' and sample_group['weight_r']=='ba': - self.sample_hierarchy_lvl = 'aggreg' - else: - self.sample_hierarchy_lvl = sample_group['weight_r'] + self.sample_hierarchy_lvl = sample_group['weight_r'] # Inputs that require special treatment - self.hierarchy_file = get_hierarchy_file(self.inputs_case, self.ReEDS_resolution) + self.hierarchy_file = reeds.io.get_hierarchy(self.inputs_case).reset_index() # Store the samples for each switch (a single sw may have multiple files that is # why we refer to the switch by its adjusted name) @@ -1829,8 +1777,7 @@ def write_samples( # Get the row of the region-indexed file region_files_row = aux_files['region_files'].query('filename == @file_name').iloc[0] copy_files.write_region_indexed_file(sample_values, dir_dst, aux_files['source_deflator_map'], - aux_files['sw'], region_files_row, - aux_files['regions_and_agglevel']) + aux_files['sw'], region_files_row) # ...if we have a csv file that isn't region-indexed (including switches.csv) elif file_termination == '.csv': if file_name == 'switches.csv': diff --git a/reeds/input_processing/outage_rates.py b/reeds/input_processing/outage_rates.py index 7ccadf22..5d2a6dac 100644 --- a/reeds/input_processing/outage_rates.py +++ b/reeds/input_processing/outage_rates.py @@ -218,10 +218,7 @@ def calc_outage_forced( ### Derived inputs sw = reeds.io.get_switches(inputs_case) hierarchy = reeds.io.get_hierarchy(reeds.io.standardize_case(inputs_case)) - val_ba = ( - pd.read_csv(os.path.join(inputs_case, 'val_ba.csv'), header=None) - .squeeze(1).values - ) + val_r = reeds.io.read_input(inputs_case, 'r').squeeze(1).values ## Static forced outage rates (for filling empties) outage_forced_static = pd.read_csv( os.path.join(inputs_case, 'outage_forced_static.csv'), @@ -243,7 +240,7 @@ def calc_outage_forced( if sw.GSw_OutageScen.lower() == 'static': ### Fill static data for all techs and modeled regions df = pd.concat( - {r: outage_forced_static for r in val_ba}, + {r: outage_forced_static for r in val_r}, axis=0, names=('r','i'), ).reorder_levels(['i','r']).sort_index() diff --git a/reeds/input_processing/recf.py b/reeds/input_processing/recf.py index 40204f8d..0f5d6c13 100644 --- a/reeds/input_processing/recf.py +++ b/reeds/input_processing/recf.py @@ -520,8 +520,23 @@ def main(reeds_path, inputs_case): cspcf = cspcf.rename(columns=dict(zip(cspcf.columns, [f'csp_{i}' for i in cspcf.columns]))) reeds.io.write_profile_to_h5(cspcf.astype(np.float32), 'csp.h5', inputs_case) ### Overwrite the original hierarchy.csv based on capcredit_hierarchy_level - hierarchy.rename_axis('*r').to_csv( - os.path.join(inputs_case, 'hierarchy.csv'), index=True, header=True) + ( + hierarchy.rename_axis('*r') + [[ + 'nercr', + 'transreg', + 'transgrp', + 'cendiv', + 'st', + 'interconnect', + 'country', + 'usda_region', + 'h2ptcreg', + 'hurdlereg', + 'ccreg' + ]] + .to_csv(os.path.join(inputs_case, 'hierarchy.csv'), index=True, header=True) + ) ccreg = pd.Series(hierarchy.ccreg.unique()) reeds.io.write_to_inputs_h5( ccreg, 'ccreg', inputs_case, gamstype='set', comment='capacity credit region', diff --git a/reeds/input_processing/runfiles.csv b/reeds/input_processing/runfiles.csv index 6ca5b199..bfd30029 100644 --- a/reeds/input_processing/runfiles.csv +++ b/reeds/input_processing/runfiles.csv @@ -142,7 +142,6 @@ minCF.csv,inputs/plant_characteristics/minCF.csv,int(sw.GSw_MinCF) != 0,ignore,i min_retire_age.csv,inputs/plant_characteristics/min_retire_age.csv,1,ignore,ignore,,,,,0,,,,,, mingen_fixed.csv,inputs/plant_characteristics/mingen_fixed.csv,int(sw.GSw_MingenFixed) != 0,ignore,ignore,,,*i,,0,,,,,, minloadfrac0.csv,inputs/plant_characteristics/minloadfrac0.csv,(int(sw.GSw_Mingen) != 0) or (int(sw.GSw_MinLoading) != 0),ignore,ignore,,,,,0,,,,,, -modeled_regions.csv,inputs/userinput/modeled_regions.csv,1,ignore,ignore,,,,,,,,,,, month2quarter.csv,inputs/temporal/month2quarter.csv,1,ignore,ignore,,,,,0,,,,,, mttr.csv,inputs/plant_characteristics/mttr.csv,1,ignore,ignore,,,tech,,0,,,,,, natgas_price_cendiv.csv,inputs/fuelprices/ng_{ngscen}.csv,1,ignore,ignore,wide_cendiv,year,,1,0,,,,,, diff --git a/reeds/input_processing/transmission.py b/reeds/input_processing/transmission.py index 02d4d9e3..7de08db3 100644 --- a/reeds/input_processing/transmission.py +++ b/reeds/input_processing/transmission.py @@ -358,8 +358,11 @@ def get_trancap_init(case, interface_params, level='r'): & dfout['rr'].isin(valid_regions[level]) ].copy() - ### TEMPORARY 20260402: Drop county interfaces with no distance/cost - if (level == 'r') and (sw.GSw_RegionResolution in ['county', 'mixed']): + ### Drop county interfaces with no distance/cost if applicable + drop_interfaces = sw.GSw_ZoneSet in reeds.inputs.get_applicable_zonesets( + 'drop_interfaces_missing_cost' + ) + if (level == 'r') and drop_interfaces: transmission_line_fom = get_transmission_fom(case, interface_params) indices = ['r', 'rr', 'trtype'] drop = ( diff --git a/reeds/input_processing/writecapdat.py b/reeds/input_processing/writecapdat.py index fd49d594..0e3d3b4b 100644 --- a/reeds/input_processing/writecapdat.py +++ b/reeds/input_processing/writecapdat.py @@ -120,7 +120,7 @@ def create_rsc_wsc(gendb,TECH,scalars,startyear): ### --- MAIN FUNCTION --- ### =========================================================================== -def main(reeds_path, inputs_case, agglevel, regions): +def main(reeds_path, inputs_case): # #%% Settings for testing #reeds_path = "/Users/apham/Documents/GitHub/ReEDS/ReEDS/" @@ -150,6 +150,8 @@ def main(reeds_path, inputs_case, agglevel, regions): os.path.join(inputs_case,'modeledyears.csv') ).columns.astype(int).values.tolist() + regions = reeds.io.read_input(inputs_case, 'r').squeeze(1).values + #################### ### DICTIONARIES ### @@ -217,20 +219,6 @@ def main(reeds_path, inputs_case, agglevel, regions): print('Importing generator database:') gdb_use = pd.read_csv(os.path.join(inputs_case,'unitdata.csv'), low_memory=False) - - rcol_dict = {'county':'FIPS', 'ba':'reeds_ba'} - # Create the 'r_col' column - if agglevel in ['county','ba']: - r_col = rcol_dict[agglevel] - gdb_use['r'] = gdb_use[r_col].copy() - # Filter generator database to regions that match the spatial resolution of the run - gdb_use = gdb_use[gdb_use['r'].isin(regions)] - elif agglevel == 'aggreg': - rb_aggreg = pd.read_csv(os.path.join(inputs_case,'rb_aggreg.csv'), index_col='ba').squeeze(1) - gdb_use = gdb_use.assign(r=gdb_use.reeds_ba.map(rb_aggreg)) - # Filter generator database to regions that match the spatial resolution of the run - gdb_use = gdb_use[gdb_use['r'].isin(regions)] - # If PVB is turned off, consider all PVB as UPV and battery_li for existing and prescribed builds # If PVB is turned on, consider all PVB as 'pvb' if GSw_PVB == 0: @@ -830,62 +818,7 @@ def main(reeds_path, inputs_case, agglevel, regions): ) print('Starting writecapdat.py') - - # Use agglevel_variables function to obtain spatial resolution variables - agglevel_variables = reeds.spatial.get_agglevel_variables(reeds_path, inputs_case) - - # For mixed resolution runs the main function of writecapdat needs to be executed separately for each desired resolution - # Then the data from each resolution are combined and written to the inputs_case folder - comments = {} - if agglevel_variables['lvl'] == 'mult': - for resolution in agglevel_variables['agglevel']: - if resolution == 'aggreg': - aggreg_data, _comments = main( - reeds_path, inputs_case, agglevel=resolution, - regions=agglevel_variables['ba_regions'], - ) - comments = {**comments, **_comments} - if resolution == 'ba': - ba_data, _comments = main( - reeds_path, inputs_case, agglevel=resolution, - regions=agglevel_variables['ba_regions'], - ) - comments = {**comments, **_comments} - if resolution == 'county': - county_data, _comments = main( - reeds_path, inputs_case, agglevel=resolution, - regions=agglevel_variables['county_regions'], - ) - comments = {**comments, **_comments} - - # Combine and write mixed resolution data - # ReEDS only supports county-BA, county-aggreg combinations - combined_data = {} - if 'ba' in agglevel_variables['agglevel']: - for key in ba_data.keys() : - if county_data[key].empty: - combined_data[key] = ba_data[key] - elif ba_data[key].empty: - combined_data[key] = county_data[key] - else: - combined_data[key] = pd.concat([ba_data[key], county_data[key]]) - - if 'aggreg' in agglevel_variables['agglevel']: - for key in aggreg_data.keys() : - if county_data[key].empty: - combined_data[key] = aggreg_data[key] - elif aggreg_data[key].empty: - combined_data[key] = county_data[key] - else: - combined_data[key] = pd.concat([aggreg_data[key], county_data[key]]) - - data = combined_data - - # Single Resolution Procedure - else: - agglevel = agglevel_variables['agglevel'] - regions = reeds.io.read_input(inputs_case, agglevel).squeeze(1).values - data, comments = main(reeds_path, inputs_case,agglevel, regions) + data, comments = main(reeds_path, inputs_case) # Write it print('Writing out capacity data') diff --git a/reeds/input_processing/writesupplycurves.py b/reeds/input_processing/writesupplycurves.py index 610d6fbc..449b08b8 100644 --- a/reeds/input_processing/writesupplycurves.py +++ b/reeds/input_processing/writesupplycurves.py @@ -71,14 +71,10 @@ def agg_supplycurve( scpath, inputs_case, numbins_tech, - agglevel, bin_method='equal_cap_cut', bin_col='supply_curve_cost_per_mw', - spur_cutoff=1e7, - agglevel_variables=None, + spur_cutoff=1e7, deflate=None, - sw=None, - write=False, ): """ """ @@ -142,8 +138,6 @@ def main( ### Overwrite switches with keyword arguments for kw, arg in kwargs.items(): sw[kw] = arg - endyear = int(sw.endyear) - startyear = int(sw.startyear) geohydrosupplycurve = sw.geohydrosupplycurve egssupplycurve = sw.egssupplycurve egsnearfieldsupplycurve = sw.egsnearfieldsupplycurve @@ -157,10 +151,6 @@ def main( "egs": int(sw.numbins_egs_allkm), } - # Use agglevel_variables function to obtain spatial resolution variables - agglevel_variables = reeds.spatial.get_agglevel_variables(reeds_path, inputs_case) - agglevel = agglevel_variables['agglevel'] - val_r_all = pd.read_csv( os.path.join(inputs_case,'val_r_all.csv'), header=None).squeeze(1).tolist() # Read in tech-subset-table.csv to determine number of csp configurations @@ -222,12 +212,11 @@ def main( for s in wind_types: windin[s], wind[s] = agg_supplycurve( scpath=os.path.join(inputs_case,f'supplycurve_wind-{s}.csv'), - inputs_case=inputs_case, - agglevel=agglevel, - numbins_tech=numbins[f'wind-{s}'], spur_cutoff=spur_cutoff, - agglevel_variables=agglevel_variables, deflate=deflate, - sw=sw, write=write - ) + inputs_case=inputs_case, + numbins_tech=numbins[f'wind-{s}'], + spur_cutoff=spur_cutoff, + deflate=deflate, + ) cost_components = ( wind[s][["cost_total_trans_usd_per_mw", "capital_adder_per_mw"]] @@ -320,11 +309,10 @@ def main( upvin, upv = agg_supplycurve( scpath=os.path.join(inputs_case, 'supplycurve_upv.csv'), inputs_case=inputs_case, - agglevel=agglevel, - numbins_tech=numbins['upv'], spur_cutoff=spur_cutoff, - agglevel_variables=agglevel_variables, deflate=deflate, - sw=sw, write=write - ) + numbins_tech=numbins['upv'], + spur_cutoff=spur_cutoff, + deflate=deflate, + ) # Similar to wind, save the trans vs cap components and then concatenate them below just # before outputting rsc_combined.csv @@ -398,13 +386,12 @@ def main( ################### if int(sw["GSw_CSP"]): - cspin, csp = agg_supplycurve( + _, csp = agg_supplycurve( scpath=os.path.join(inputs_case, 'supplycurve_csp.csv'), inputs_case=inputs_case, - agglevel=agglevel, - numbins_tech=numbins['csp'], spur_cutoff=spur_cutoff, - agglevel_variables=agglevel_variables, deflate=deflate, - sw=sw, write=False + numbins_tech=numbins['csp'], + spur_cutoff=spur_cutoff, + deflate=deflate, ) ### Normalize formatting @@ -480,11 +467,12 @@ def main( geoin[s], geo[s] = agg_supplycurve( scpath=os.path.join( inputs_case, - f'supplycurve_{s}.csv'), - numbins_tech=numbins[s], inputs_case=inputs_case, - agglevel=agglevel, - spur_cutoff=spur_cutoff,agglevel_variables=agglevel_variables, deflate=deflate, - sw=sw, write=False + f'supplycurve_{s}.csv' + ), + numbins_tech=numbins[s], + inputs_case=inputs_case, + spur_cutoff=spur_cutoff, + deflate=deflate ) spurout_list.append( geo[s] diff --git a/reeds/inputs.py b/reeds/inputs.py index e598dc26..29bd8023 100644 --- a/reeds/inputs.py +++ b/reeds/inputs.py @@ -106,22 +106,7 @@ def add_intermediate_switches(dfcases:pd.DataFrame) -> pd.DataFrame: for case in cases: sw = dfcases[case] new_switches[case] = {} - ### TEMPORARY 20260402: The GSw_RegionResolution switch is deprecated; - ### for now, hardcode its value for the region resolutions that use it - match sw['GSw_ZoneSet']: - case 'z134': - GSw_RegionResolution = 'ba' - case 'z3109': - GSw_RegionResolution = 'county' - case 'PJMcounty' | 'UTcounty': - GSw_RegionResolution = 'mixed' - case _: - GSw_RegionResolution = 'aggreg' - new_switches[case]['GSw_RegionResolution'] = GSw_RegionResolution ### TEMPORARY 20260402: Turn off itlgrp constraint until it's fixed - # new_switches[case]['GSw_itlgrpConstraint'] = str(int( - # sw['GSw_RegionResolution'] in ['county', 'mixed'] - # )) new_switches[case]['GSw_itlgrpConstraint'] = '0' ## 'meshed' offshore files are only used when offshore zones are turned on new_switches[case]['GSw_OffshoreFiles'] = ( @@ -789,25 +774,25 @@ def get_b2b(case=None, **kwargs) -> pd.DataFrame: return b2b -def check_aggreg_unique(hierarchy): +def get_zoneset_config() -> dict: + configpath = Path(reeds.io.reeds_path, 'inputs', 'zones', 'zoneset_config.yaml') + with open(configpath, 'r') as f: + config = yaml.safe_load(f) + return config + + +def get_applicable_zonesets(setting: str) -> list[str]: """ - Make sure each aggreg is only assigned to a single transreg / transgrp / st / etc. + Get the list of zonesets that a setting should apply to. The provided + setting should be a field in 'inputs/zones/zoneset_config.yaml'. """ - testcols = [i for i in hierarchy.columns if i != 'aggreg'] - aggreg_errors = {} - for col in testcols: - unique_aggregs = ( - hierarchy[[col,'aggreg']] - .drop_duplicates() - .groupby('aggreg')[col].count() + zoneset_config = get_zoneset_config() + if setting not in zoneset_config: + raise NotImplementedError( + f"The provided setting '{setting}' is invalid. " + "Update inputs/zones/zoneset_config.yaml to include it." ) - duplicated = unique_aggregs.loc[unique_aggregs>1] - if len(duplicated): - aggreg_errors[col] = hierarchy.loc[ - hierarchy.aggreg.isin(duplicated.index), - [col,'aggreg'] - ] - return aggreg_errors + return zoneset_config[setting] def validate_zoneset(GSw_ZoneSet): @@ -896,19 +881,3 @@ def validate_zoneset(GSw_ZoneSet): hierarchypath = Path(zonepath, 'hierarchy.csv') err = f'The following columns are missing from {hierarchypath}: ' + ' '.join(missing) raise KeyError(err) - ## TEMPORARY 20260402: Is each aggreg only assigned to a single hierarchy level? - fpath_134 = Path(zonepath, 'hierarchy_from134.csv') - if fpath_134.is_file(): - hierarchy_134 = pd.read_csv(fpath_134, index_col='ba') - errors = check_aggreg_unique(hierarchy_134) - if len(errors): - for v in errors.values(): - print(v) - print() - err = ( - "There are aggreg values spanning multiple hierarchy levels for:\n > " - + '\n > '.join(errors.keys()) - + f"\nPlease modify {fpath_134}\n" - "to ensure each aggreg is only assigned to a single hierarchy level." - ) - raise ValueError(err) diff --git a/reeds/io.py b/reeds/io.py index 4c13b521..0aa9f1ad 100644 --- a/reeds/io.py +++ b/reeds/io.py @@ -127,15 +127,9 @@ def get_hierarchy(case=None, original=False, **kwargs): filepath = Path(standardize_case(case), 'inputs_case', 'hierarchy_original.csv') else: filepath = Path(standardize_case(case), 'inputs_case', 'hierarchy.csv') + hierarchy = pd.read_csv(filepath).rename(columns={'*r':'r', 'ba':'r'}).set_index('r') else: - ## TEMPORARY 20260402: Use deprecated hierarchy inputs. - ## Use the line below once we make the switch: - # hierarchy = assemble_hierarchy(case=case, **kwargs).set_index('r') - sw = reeds.io.get_switches(**kwargs) - filepath = Path( - reeds.io.reeds_path, 'inputs', 'zones', sw.GSw_ZoneSet, 'hierarchy_from134.csv', - ) - hierarchy = pd.read_csv(filepath).rename(columns={'*r':'r', 'ba':'r'}).set_index('r') + hierarchy = assemble_hierarchy(case=case, **kwargs).set_index('r') return hierarchy @@ -178,14 +172,43 @@ def get_county2zone( if as_map: dfout = dfin.set_index('FIPS')['r'] - else: + elif case is None: fpath_countystate = Path(reeds.io.reeds_path, 'inputs', 'zones', 'county_state.csv') county_state = pd.read_csv(fpath_countystate, dtype=str) dfout = dfin.merge(county_state, on='FIPS', how='left') + else: + dfout = dfin return dfout +def get_county_zones( + case: str | Path | None = None, + **kwargs +) -> list[str]: + """ + Get the set of county-level zones corresponding to a given zone set. + Reads from the inputs_case folder if {case} is provided or from the + default set of inputs (with key word arguments overriding case + switches, e.g., "GSw_ZoneSet") otherwise. + + Args: + case: Path to a ReEDS case. + + Returns: + list[str] + """ + county2zone = get_county2zone(case, as_map=True, **kwargs) + county_zones = county2zone.loc[ + county2zone.isin( + county2zone.value_counts() + .loc[county2zone.value_counts() == 1] + .index + ) + ].tolist() + + return county_zones + def get_zone_nodes(case=None, crs='ESRI:102008', **kwargs): """Get the transmission node for each model zone""" @@ -302,7 +325,10 @@ def get_dfmap(case=None, levels=None, exclude_water_areas=True): """Get dictionary of maps at different hierarchy levels""" hierarchy = ( get_hierarchy(case, original=True) - .drop(columns=['aggreg', 'st_interconnect'], errors='ignore') + .drop( + columns=['aggreg', 'st_interconnect', 'md5', 'node_lat', 'node_lon'], + errors='ignore' + ) ) hierarchy_levels = list(hierarchy.columns) if levels: @@ -1508,15 +1534,10 @@ def assemble_supplycurve( else: dfout['ba'] = dfout['region'].copy() - ## Drop reinforcement cost for counties - if case is not None: - agglevel_variables = reeds.spatial.get_agglevel_variables( - reeds_path, os.path.join(case, 'inputs_case') - ) - counties = agglevel_variables['county_regions'] - else: - counties = [] - if len(counties): + if sw.GSw_ZoneSet in reeds.inputs.get_applicable_zonesets( + 'drop_single_county_reinforcement_cost' + ): + counties = get_county_zones(GSw_ZoneSet=sw.GSw_ZoneSet) zerocols = ['cost_reinforcement_usd_per_mw', 'dist_reinforcement_km'] dfout.loc[dfout.region.isin(counties), zerocols] = 0 dfout.loc[dfout.region.isin(counties), 'cost_total_trans_usd_per_mw'] = dfout.loc[ diff --git a/reeds/reedsplots.py b/reeds/reedsplots.py index 45c58518..99764d4e 100644 --- a/reeds/reedsplots.py +++ b/reeds/reedsplots.py @@ -1718,13 +1718,12 @@ def plot_prmtrade( val_r = reeds.io.read_input(case, 'r').squeeze(1).tolist() dfba = dfba.loc[val_r].copy() - if sw.get('GSw_RegionResolution', 'ba') != 'county': - endpoints = reeds.plots.df2gdf( - reeds.io.assemble_hierarchy(case).set_index('r'), - lat='node_lat', lon='node_lon', - ) - dfba['x'] = dfba.index.map(endpoints.centroid.x) - dfba['y'] = dfba.index.map(endpoints.centroid.y) + endpoints = reeds.plots.df2gdf( + reeds.io.assemble_hierarchy(case).set_index('r'), + lat='node_lat', lon='node_lon', + ) + dfba['x'] = dfba.index.map(endpoints.centroid.x) + dfba['y'] = dfba.index.map(endpoints.centroid.y) ### Get scaling and layout _vmax = dfplot.MW.abs().max() if vmax in [None, 0, 0.] else vmax @@ -5773,15 +5772,9 @@ def plot_capacity_offline( ### Get temperatures temperatures = reeds.io.get_temperatures(case) - ## Aggregate if necessary + ### Get switches sw = reeds.io.get_switches(case) - if sw['GSw_RegionResolution'] == 'aggreg': - r2aggreg = pd.read_csv( - os.path.join(case, 'inputs_case', 'hierarchy_original.csv') - ).rename(columns={'ba':'r'}).set_index('r').aggreg - temperatures = temperatures.rename(columns=r2aggreg) - hierarchy = reeds.io.get_hierarchy(case) r2level = hierarchy[level] diff --git a/reeds/resource_adequacy/prep_data.py b/reeds/resource_adequacy/prep_data.py index c27637ad..2579f441 100644 --- a/reeds/resource_adequacy/prep_data.py +++ b/reeds/resource_adequacy/prep_data.py @@ -510,11 +510,13 @@ def intify(v): ).round().astype(int).rename_axis('r').rename('mw') ## Turn off for counties by setting to zero (zeros in this file mean the max unit ## size is not enforced for that region in ReEDS2PRAS) - agglevel_variables = reeds.spatial.get_agglevel_variables( - reeds.io.reeds_path, os.path.join(casedir, 'inputs_case') + counties = reeds.io.get_county_zones(casedir) + unconstrain_counties = sw.GSw_ZoneSet in ( + reeds.inputs.get_applicable_zonesets( + 'reeds2pras_unitsize_unconstrain_counties' + ) ) - counties = agglevel_variables['county_regions'] - if len(counties): + if len(counties) and unconstrain_counties: csvout['max_unitsize'].loc[counties] = 0 #%% Strip water tech suffixes from water-dependent technologies diff --git a/reeds/resource_adequacy/reeds2pras/src/utils/reeds_data_parsing.jl b/reeds/resource_adequacy/reeds2pras/src/utils/reeds_data_parsing.jl index 23597d12..47d596dd 100644 --- a/reeds/resource_adequacy/reeds2pras/src/utils/reeds_data_parsing.jl +++ b/reeds/resource_adequacy/reeds2pras/src/utils/reeds_data_parsing.jl @@ -876,7 +876,7 @@ function disagg_existing_capacity( tech_ba_year_existing = DataFrames.subset( unitdata, :tech => DataFrames.ByRow(==(tech)), - :reeds_ba => DataFrames.ByRow(==(pca)), + :r => DataFrames.ByRow(==(pca)), :RetireYear => DataFrames.ByRow(>(year)), :StartYear => DataFrames.ByRow(<=(year)), ) diff --git a/reeds/results.py b/reeds/results.py index a475cfe5..5b9a0d91 100644 --- a/reeds/results.py +++ b/reeds/results.py @@ -583,25 +583,15 @@ def calc_reinforcement_spur_capacity_miles(case): .sort_values(by=['r', 'trtype', 'year']) ) - if sw['GSw_RegionResolution'] in ['county', 'mixed']: - """ - Due to some old ReEDS outputs runs we need to zero out - the reinforcement line for county level regions - (This can be removed in the future if countly level - supply curves get reinforcement distance zeroed out) - """ - # Get county level regions - county_regions = pd.read_csv( - os.path.join(inputs_case, 'county2zone.csv'), - dtype={'FIPS':str}, - ) - - county_regions['county'] = 'p' + county_regions.FIPS - - # Set reinforcement distance to zero for county level regions + sw = reeds.io.get_switches(case) + if sw.GSw_ZoneSet in reeds.inputs.get_applicable_zonesets( + 'drop_single_county_reinforcement_cost' + ): + # Set reinforcement distance to zero for county level regions + county_regions = reeds.io.get_county_zones(case) tech_trans_out = tech_trans_out.loc[ ~( - tech_trans_out.r.isin(county_regions['county']) + tech_trans_out.r.isin(county_regions) & (tech_trans_out.trtype == 'reinforcement') ) ] @@ -653,8 +643,9 @@ def calc_transmission_capacity(case,levels): # pull intra and interregional transmission data into dictionaries for processing dict_inter = {} - level_map = get_level_map(case) + level_map = get_level_map() hierarchy = reeds.io.get_hierarchy(case) + hierarchy['r'] = hierarchy.index for level in levels: # Translate the level to a cleaner spatial resolution for publishing csvs. Ex. st --> State, transgrp --> Transmission Planning Subregion. @@ -711,15 +702,11 @@ def calc_transmission_capacity(case,levels): return intraregional, interregional -def get_level_map(case): +def get_level_map(): # for all regions available in ReEDS/inputs/hierarchy.csv, map them to a clean display name level_map = pd.read_csv( os.path.join(reeds_path, 'postprocessing', 'plots', 'level_map.csv'), index_col='raw').squeeze(1) - - # add a value to level map for 'r' based on the spatial resolution of the run - sw = reeds.io.get_switches(case) - level_map['r'] = level_map.get(sw.GSw_RegionResolution) return level_map diff --git a/reeds/spatial.py b/reeds/spatial.py index cbaa0a9b..cb256289 100644 --- a/reeds/spatial.py +++ b/reeds/spatial.py @@ -8,128 +8,6 @@ import reeds -def get_agglevel_variables(reeds_path, inputs_case): - ''' - This function produces a dictionary with an assortment of variables that are necessary for - mixed resolution runs. - - ReEDS supports multiple agglevels - The 'lvl' variable is set to 'mult' for instances where county is included as a desired resolution. - This ensures that both BA and county data are copied to the inputs_case folder - The 'lvl' variable also ensures that BA and larger spatial aggregations use BA data and procedure - - ###### variables output by function: ####### - lvl - indicator if one of the desired resolutions in a mixed resolution run is county or not - agglevel - single or multiple values to indicate resolution(s) - ba_regions - list of regions in a mixed resolution run that use BA resolution data - county_regions - list of regions in a mixed resolution run that use county resolution data - county_regions2ba - map county resolution regions to their BA - BA_county_list - list of counties that belong to regions being solved at BA - BA_2_county - map counties that belong to BA resolution regions back to their BA - ba_transgrp - list of transgroups associated with regions being solved at ba resolution - county_transgrp - list of transgroups associated with regions being solved at ba resolution - - ''' - - agglevel = pd.read_csv(os.path.join(inputs_case, 'agglevels.csv')) - - if len(agglevel) > 1: - agglevel = agglevel.squeeze().tolist() - else: - agglevel = agglevel.squeeze().split() - - # Compile lists of regions in the run to be considered at ba level - hierarchy = pd.read_csv( - os.path.join(inputs_case, 'hierarchy_with_res.csv'), usecols=['*r', 'resolution'] - ) - hierarchy_org = pd.read_csv(os.path.join(inputs_case, 'hierarchy_original.csv')) - rb_aggreg = pd.read_csv(os.path.join(inputs_case, 'rb_aggreg.csv')) - ba_regions = hierarchy[hierarchy['resolution'] == 'ba']['*r'].to_list() - aggreg_regions = hierarchy[hierarchy['resolution'] == 'aggreg']['*r'].to_list() - aggreg_regions2ba = hierarchy_org[hierarchy_org['aggreg'].isin(aggreg_regions)]['ba'].to_list() - ba_regions = list(set(ba_regions + aggreg_regions + aggreg_regions2ba)) - transgrp_regions_ba = list(set(hierarchy_org[hierarchy_org['ba'].isin(ba_regions)]['transgrp'])) - - ### Procedure for handling mixed-resolution ReEDS runs - if len(agglevel) > 1: - if 'county' in agglevel: - lvl = 'mult' - else: - lvl = 'ba' - - # Create dictionaries which map county resolution regions to their BAs and which map - # the counties of BA resolution regions to their BA - # These lists/dictionaries are necessary to filter county and BA resolution data correctly - - if 'county' in agglevel: - county_regions = hierarchy[hierarchy['resolution'] == 'county']['*r'].to_list() - r_ba = pd.read_csv(os.path.join(inputs_case, 'r_ba.csv')) - r_ba_dict = r_ba.set_index('r')['ba'].to_dict() - # List of BAs associated with county resolution regions - county_regions2ba = pd.DataFrame(county_regions)[0].map(r_ba_dict).unique().tolist() - # Need list of transgrps associated with regions being solved at county resolution - transgrp_regions_county = list( - set(hierarchy_org[hierarchy_org['ba'].isin(county_regions2ba)]['transgrp']) - ) - # Need county2zone - ## TEMPORARY 20260402 - county2zone = reeds.io.get_county2zone(GSw_ZoneSet='z134', as_map=False) - # Need to create mapping between aggreg and county - if 'aggreg' in agglevel: - county2zone = county2zone[county2zone['r'].isin(rb_aggreg['ba'])] - county2zone['ba'] = county2zone['r'].map( - rb_aggreg.set_index('ba')['aggreg'].to_dict() - ) - # Add BAs associated with aggreg regions to ba_regions list - aggreg_regions_2_ba = [ - x - for x in rb_aggreg['ba'] - if x not in aggreg_regions and x not in county_regions2ba - ] - ba_regions = list(set(ba_regions + aggreg_regions_2_ba)) - # Create list of counties that belong to regions being solved at BA - BA_county_list = county2zone[county2zone['r'].isin(ba_regions)].copy() - BA_county_list.loc[:,'FIPS'] = 'p' + BA_county_list['FIPS'].astype(str) - # Map these counties to their BA - BA_2_county = BA_county_list.set_index('FIPS')['r'].to_dict() - BA_county_list = BA_county_list['FIPS'].tolist() - - ### Procedure for handling single-resolution ReEDS runs - else: - agglevel = agglevel[0] - lvl = 'ba' if agglevel in ['ba', 'aggreg'] else 'county' - - if lvl == 'county': - county_regions = hierarchy[hierarchy['resolution'] == 'county']['*r'].to_list() - r_ba = pd.read_csv(os.path.join(inputs_case, 'r_ba.csv')) - r_ba_dict = r_ba.set_index('r')['ba'].to_dict() - # List of BAs associated with county resolution regions - county_regions2ba = pd.DataFrame(county_regions)[0].map(r_ba_dict).unique().tolist() - transgrp_regions_county = list( - set(hierarchy_org[hierarchy_org['ba'].isin(county_regions2ba)]['transgrp']) - ) - - else: - county_regions = [] - county_regions2ba = [] - transgrp_regions_county = [] - - BA_county_list = [] - BA_2_county = [] - - return { - 'lvl': lvl, - 'agglevel': agglevel, - 'ba_regions': ba_regions, - 'county_regions': county_regions, - 'county_regions2ba': county_regions2ba, - 'BA_county_list': BA_county_list, - 'BA_2_county': BA_2_county, - 'ba_transgrp': transgrp_regions_ba, - 'county_transgrp': transgrp_regions_county, - } - - def assign_to_offshore_zones(unitdata): """Map offshore wind units to offshore zones based on lat/lon and zone outlines""" ### Get offshore zones @@ -146,7 +24,7 @@ def assign_to_offshore_zones(unitdata): index2offshorezone = dfwind.sjoin_nearest(dfzones, max_distance=1e5)['index_right'] dfout = unitdata.copy() - dfout.loc[index2offshorezone.index, 'reeds_ba'] = index2offshorezone.values + dfout.loc[index2offshorezone.index, 'r'] = index2offshorezone.values return dfout @@ -272,18 +150,18 @@ def apply_variable_disaggregation( df = df.merge( disagg_data, left_on=[region_col, 'i'], - right_on=['PCA_REG', 'i'] + right_on=['legacy_ba', 'i'] ) else: df = df.merge( - disagg_data[['PCA_REG', 'FIPS', 'fracdata']], + disagg_data[['legacy_ba', 'FIPS', 'fracdata']], left_on=region_col, - right_on='PCA_REG' + right_on='legacy_ba' ) # Replace legacy zones in region_col with the county FIPS codes df = ( - df.drop(columns=[region_col, 'PCA_REG']) + df.drop(columns=[region_col, 'legacy_ba']) .rename(columns={'FIPS': region_col}) ) diff --git a/runreeds.py b/runreeds.py index e0628622..d76a6149 100644 --- a/runreeds.py +++ b/runreeds.py @@ -144,7 +144,7 @@ def get_ivt_numclass(reeds_path, casedir, caseSwitches): return numclass -def get_rev_paths(revswitches, caseSwitches): +def get_rev_paths(revswitches): # Expand on reV path based on where this run is happening # when running on the HPC this links to the shared-projects folder hpc = True if (int(os.environ.get('REEDS_USE_SLURM',0))) else False @@ -169,15 +169,10 @@ def get_rev_paths(revswitches, caseSwitches): revswitches['rev_path'] = revswitches.apply(lambda row: os.path.join(row.sc_path, "reV", row.rev_case), axis=1) # link to the pre-processed reV supply curves from hourlize - def get_rev_sc_file_name(caseSwitches, rev_row, use_hpc=False): + def get_rev_sc_file_name(rev_row, use_hpc=False): if pd.isnull(rev_row.original_sc_file): return "" else: - if caseSwitches['GSw_RegionResolution'] == "county": - sc_folder_suffix = "_county" - else: - sc_folder_suffix = "_ba" - # link to HPC or other sc_path if use_hpc: sc_path = rev_row.hpc_sc_path @@ -186,14 +181,15 @@ def get_rev_sc_file_name(caseSwitches, rev_row, use_hpc=False): # supply curve name should be in format of {tech}_rev_supply_curves_raw.csv # in the hourlize results folder (must match format in 'save_sc_outputs' function of hourlize/resource.py) - sc_file = os.path.join(sc_path, - rev_row.tech + "_" + rev_row.access_case + sc_folder_suffix, - "results", - rev_row.tech + "_supply_curve_raw.csv" - ) + sc_file = os.path.join( + sc_path, + f"{rev_row.tech}_{rev_row.access_case}_county", + "results", + f"{rev_row.tech}_supply_curve_raw.csv" + ) return sc_file - revswitches['sc_file'] = revswitches.apply(lambda row: get_rev_sc_file_name(caseSwitches, row), axis=1) - revswitches['hpc_sc_file'] = revswitches.apply(lambda row: get_rev_sc_file_name(caseSwitches, row, use_hpc=True), axis=1) + revswitches['sc_file'] = revswitches.apply(lambda row: get_rev_sc_file_name(row), axis=1) + revswitches['hpc_sc_file'] = revswitches.apply(lambda row: get_rev_sc_file_name(row, use_hpc=True), axis=1) return revswitches @@ -291,27 +287,8 @@ def check_compatibility(sw): f"GSw_Region={sw['GSw_Region']}, GSw_GasCurve={sw['GSw_GasCurve']}" ) - if sw['GSw_RegionResolution'] in ['county','mixed']: - err_switch_configs = [] - if sw['GSw_LoadAllocationMethod'] == 'state_lpf': - err_switch_configs.append('GSw_LoadAllocationMethod=state_lpf') - - if len(err_switch_configs) > 0: - raise NotImplementedError( - 'The following switch configurations are not implemented for ' - 'county/mixed resolution:\n{}\n' - .format('\n'.join(err_switch_configs)) - ) - reeds.inputs.validate_zoneset(sw['GSw_ZoneSet']) - ### Aggregation - if (sw['GSw_RegionResolution'] != 'aggreg') and (int(sw['GSw_NumCSPclasses']) != 12): - raise NotImplementedError( - 'Aggregated CSP classes only work with aggregated regions. ' - 'GSw_NumCSPclasses is incompatible with ' - 'GSw_RegionResolution != aggreg') - ### Parsed string switches ## Automatic inputs reeds_path = os.path.dirname(__file__) @@ -458,8 +435,7 @@ def check_compatibility(sw): raise ValueError(err) # Add a row for each county - ## TEMPORARY 20260402 until the aggregation procedure is updated - county2zone = reeds.io.get_county2zone(GSw_ZoneSet='z134', as_map=False) + county2zone = reeds.io.get_county2zone(GSw_ZoneSet=sw['GSw_ZoneSet'], as_map=False) county2zone['county'] = 'p' + county2zone.FIPS # Add county info to hierarchy hierarchy = hierarchy.merge(county2zone.drop(columns=['FIPS','state']), on='r') @@ -1158,7 +1134,7 @@ def write_batch_script( revswitches = revswitches.merge(binSwitches, on=['tech'], how='left') # format rev paths - revswitches = get_rev_paths(revswitches, caseSwitches) + revswitches = get_rev_paths(revswitches) # save rev paths file for run revswitches[['tech','access_switch','access_case','rev_case','bins','sc_path',