Repository navigation
Conversation
* Add new open-siting 10-hr supply curve at lat/lon resolution * Update writesupplycurves.py to process new SC data using same procedures as wind/solar * reeds/io.py: add nearest-point mapping for PSH to assemble_supplycurve() function * Add regional tech class assignment procedures to hourlize/resource.py * runfiles.csv: add PSH supply curve entry and remove old PSH supply curve capacity/cost entries * cases.csv: temporarily remove `pshsupplycurve` switch options * inputs/supply_curve/dollaryear.csv: add PSH supply curve entry
Future PSH supply curves will be stored at $/MW, consistent with all other tech supply curve costs processed by the agg_supplycurve function in writesupplycurves.py
…ly_curves_durations.csv
- clipping procedure occurs after supply curve assembly and conversion to 2004$ but before binning
- open8hr to be added later (fixing error)
jvcarag
commented
Sep 30, 2026
| mask = mask & (df_sc[col] == val) | ||
| #Finally, apply the mask that has been built for this class. | ||
| df_sc.loc[mask, 'class'] = int(cname) | ||
| # Add dynamic, region-specific class bins based on class_bin_method |
Collaborator
Author
There was a problem hiding this comment.
@mmowers I mentioned before that I may have inadvertently added procedure to hourlize/resource.py that looked to be missing (based on this comment mentioning "region-specific" class bins). Let me know if you think this is a welcome adjustment to the script, or if you think this change is not necessary!
- remove old PSH supply curve entries from inputs/storage/PSH_supply_curves_durations.csv and inputs/supply_curve/dollaryear.csv
- fix descriptions of options for numbins_{upv|windons} in cases.csv
- remove lines appending ReEDS root path to PATH variable in reeds/io.py (added for this PR but no longer needed)
- add new bokeh result for calculating cumulative new capacity by model year
… vc/UnitLevelPSHSC
stuartcohen8
requested changes
Oct 1, 2026
stuartcohen8
left a comment
There was a problem hiding this comment.
It'd be good to have someone else take a look at the input processing scripts in case there are any code improvements there. Otherwise just some minor comments to help improve clarity.
|
Per our conversation, it could also be good to include a before/after results comparison for a scenario setup with at least a few GW of new PSH deployment. |
…ore exclusion scenario
24 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR updates the pumped-storage hydropower (PSH) supply curve input files with the latest (5th-generation) PSH resource and cost data as described at https://www.nlr.gov/gis/psh-supply-curves.
PSH input files are now stored at site-level spatial resolution, and input processing procedures are modified to aggregate the site-level data up to the spatial resolution of each corresponding ReEDS run. In effect, PSH supply curves are now processed using the same procedures as those used for other RSC technologies such as upv, wind-ons, and wind-ofs. The old PSH supply curves (pre-binned at the old 134-zone model resolution) are removed due to their incompatibility with the new input processing procedures which require the data at site-level resolution.
The new PSH supply curve input files also reflect new site exclusion scenarios labeled "Reference", "Open", and "Limited" that are more consistent with wind and solar resource availability scenarios. "Open" is most similar to earlier PSH scenarios including existing reservoir sites (wExist) and sites overlapping with ephemeral streams (wEph). "Limited" is a new case with more stringent PSH siting restrictions from the "Reference" case. Below is a comparison of the new binned supply curves for 8-hr storage duration PSH vs the old binned supply curves - the old default
12hr_refscenario is also included for comparison between old and new defaults:Technical details
Site-Level PSH Supply Curve Input Files:
PSH supply curve capacity and capital cost input files are now stored in a single, site-level spatial resolution input file (previously separated and at z132-resolution), using the latitude/longitude coordinates of the lower reservoir as the location of the powerhouse and its corresponding generating capacity potential. The coordinates of each site's paired upper reservoir are also provided in the input files, available only for the purpose of post-ReEDS mapping. Interconnection and transmission costs are appended to the PSH supply curve using each site's lower reservoir latitude/longitude coordinates to map to the nearest (Euclidean distance) reV site in
inputs/supply_curve/interconnection_land.h5. Mapping with latitude/longitude coordinates instead ofsc_point_gidmapping ensures PSH supply curves stay compatible with any future updates to the reV sites in the model.PSH Supply Curve Scenarios:
To align more closely with siting scenarios for other resources (solar and wind), PSH site exclusion scenarios are now consolidated into 3 distinct scenarios:
limited,reference, andopen. Below are the exclusion layers included in each of the 3 scenarios:open: urbanized/developed areas, existing waterbodies, 100yr flood plains, various federal, state, and local protected areas and conservations, glaciers, snow/ice, and wetland ecosystems, and airports/airpads/helipadsreference: all "open" exclusions [plus] ephemeral streams, critical habitats for endangered species, railways/pipelines/roads (incl. 30m buffer), and national wetlandslimited: all "reference" exclusions [plus] agricultural lands, mature forests on federal lands, building footprints, and tribal areas (reservation and off reservation trust land)This change also simplifies the combinations of PSH supply curves and reduces file count in
inputs/supply_curve,Below are the new unbinned

open,reference, andlimitedPSH supply curves for 8-, 10-, and 12-hr PSH storage durations:Implementation notes
Input Files:
inputs/storage/PSH_supply_curves_durations.csvwith entries for new PSH supply curve filescases.csv: update options forpshsupplycurveswitch, addnumbins_pshswitch for controlling PSH supply curve bin number, and set 8-hr Reference case as default forpshsupplycurveinputs/supply_curve/dollaryear.csvwith entry for new PSH supply curve filesInput Processing
runfiles.csv: remove oldpsh_supply_curves_{capacity|cost}.csventries and add newsupplycurve_psh.csventrywritesupplycurves.py: update procedures inagg_supplycurve()function for assembling/aggregating supply curves for use with site-level PSH supply curves.$4000/kW [2004$]to improve binning resolution at the low-cost endio.py: add nearest-point mapping of interconnection costs to PSH supply curve toassemble_supplycurve()functionAdditional changes
b_inputs.gms: remove unit adjustment for pumped-hydro supply curve costs, as new input files are already stored at$/MWrecf.csv: remove deprecatedcopyargument frompd.concat()callsreeds2.py: add new ReEDS result and associated preset function to calculate and display cumulative capacity additions by technology and model yearSwitches added/removed/changed
pshsupplycurve: updated Choices to reflect new exclusion scenariosnumbins_psh: added new switch to control number of PSH supply curve binsnumbins_{upv|windons}: updated Description to reflect current default settingIssues resolved
Issue #174
Known incompatibilities
Note that while available generating capacity for PSH in ReEDS does account for frictional head losses in the conveyance system, the round-trip efficiency for PSH still uses a generic value that does not account for these losses, which are site-specific. Future work will explore ways to better account for efficiency reductions from frictional losses, either by incorporating site-level efficiencies into supply curve data or calculating a reasonable standard efficiency adjustment.
Relevant sources or documentation
Validation, testing, and comparison report(s)
Old vs New Default PSH Supply Curve Comparison
A comparison of the USA_Defaults case using the old 12-hr Reference PSH supply curve on the main branch vs this PR branch which uses the new default 8-hr Reference PSH supply curve was conducted. Below are the capacity, generation, and system cost results comparison:
comparisons_default_mainvsbranch.zip
The difference between these runs stem from a 68 MW reduction of PSH deployment by 2050 (23.041 -> 22.972 GW) resulting from the change to the less resource-available, lower-duration 8-hr Reference PSH supply curve.
High PSH Deployment Scenario
The new reference case only deploys an additional 3.5 GW PSH from 2025-2050 for a national total of ~23GW PSH storage capacity by 2050. To better understand the effects of the new supply curve and updated exclusion layer scenarios on PSH deployment, provided below are the PSH capacity deployment results [GW] of a "high PSH deployment" ReEDS scenario:







New PSH Capacity deployed from 2025-2050 [GW]:
New PSH Capacity deployed from 2025-2050 [GW]:
This scenario assumes favorable cost and performance metrics for solar and unfavorable metrics for li-ion battery technologies, as well as a linear reduction of PSH capital cost to 50% by 2050 to simulate a case that encourages high deployment of PSH capacity across CONUS. The 8-hr reference case deploys up to 83 GW PSH by 2050, with 47 GW deploying in CA, 10 GW in AZ, and 7 GW in NV.
Checklist for author
Details to double-check
General information to guide review
Tag points of contact here if you would like additional review of the relevant parts of the model