[PSH] Update and Use Unit-Level Data for Existing Pumped Storage Hydropower#90
[PSH] Update and Use Unit-Level Data for Existing Pumped Storage Hydropower#90jvcarag wants to merge 7 commits into
Conversation
- Add PSH data from ORNL (to replace data in repo) - Change relevant instances of `storage_duration(i)` with `storage_duration_m(i,v,r)`
|
The formulation looks fine to me. @patrickbrown4 or @pesap or @kodiobika any issues with the storage duration parameter expansion? Other than that, it'd be good to add legends to the plots, add a comparison between old defaults and the run with interday+ORNL data, and add some state of charge plots to show the difference in operation between interday and default representation for PSH. |
|
Updated PR to include plot legends, compare plots between the "diurnal (default) 12-hr" run vs "Interday ORNL-data" run, and state-of-charge (SoC) plots |
we just need to change something on R2X to be able to read it! |
No concerns on my end, thanks for checking! |
Summary
This pull request updates the existing pumped-storage hydropower (PSH) fleet capacity/energy data in
inputs/storage/cap_existing_psh.csvto use data sourced from the 2021 U.S. Hydropower Market Report and fixes a bug that prevented use of PSH storage durations derived from said data.Technical details
DATA UPDATE:
Various parameters of the existing (initial) PSH fleet – such as storage duration and charge:discharge ratio – are calculated endogenously in ReEDS using county-level PSH operational/pump capacities [MW] and max energy values [MWh] stored in
inputs/storage/cap_existing_psh.csv. Sourced from the International Hydropower Association, this data currently overestimates the total capacity and max energy of the existing fleet, as it includes data from non-operational units (including proposed, under-construction, and/or paused/cancelled builds).The replacement
cap_existing_psh.csvdataset was acquired by contacting the Oak Ridge National Laboratory (ORNL) HydroSource team and crossed-referenced against the IHA dataset - the ORNL dataset contains only units confirmed operational, with changes to the data resulting in an overall 8% reduction in total existing PSH operational capacity [MW] and 84% reduction in total energy capacity [MW]. The large reduction in total energy capacity is attributed to large differences in a small subset of PSH units between the IHA- and ORNL-sourced data.BUG FIX:
The GAMS parameter that stores the storage duration of the existing fleet (
storage_duration_m) is defined but never applied to any model constraints. This means that regardless of theGSw_HydroPSHDurDataswitch setting, ReEDS will currently only ever use the default PSH storage duration defined by the selected PSH supply curve. This PR addresses this issue by assigning the parameter storing existing PSH storage duration data to the appropriate model constraints.Implementation notes
inputs/storage/cap_existing_psh.csvwith data sourced from ORNLstorage_duration(i)parameter withstorage_duration_m(i,r,t)for all instances in the model constraints.GSw_HydroPSHDurData == 0Issues resolved
ReEDS now properly uses initial fleet storage durations based on operational and energy capacities of said initial fleet.
Relevant sources or documentation
2021 U.S. Hydropower Market Report:
https://www.energy.gov/sites/prod/files/2021/01/f82/us-hydropower-market-report-full-2021.pdf
Validation, testing, and comparison report(s)
DATA UPDATE
Comparing Diurnal IHA vs Diurnal ORNL:
Negligible changes to the default ReEDS case are seen as a result of the switch from IHA- to ORNL-sourced data and the use of the



storage_duration_mparameter in model constraint equations. Below are generation (TWh, left) and capacity (GW, right) difference plots comparing the use of ORNL data vs IHA (base) using diurnal (default) storage representation:Main changes to results are seen in the total energy capacity [TWh] of the system caused by large differences in energy capacity of certain existing PSH units between data sources.


Effects of this large energy capacity difference are not reflected in capacity or generation results because the diurnal (default) ReEDS seasonal storage representation does not chronologically link storage levels of technologies like pumped-storage, effectively capping energy arbitrage at diurnal frequency and preventing use of the full potential of existing pumped-storage energy capacity.
Comparing Interday IHA vs Interday ORNL
Running ReEDS using the interday representation of seasonal storage technologies show slightly different changes to generation (TWh, left) and capacity (GW, right) when comparing a run using ORNL-sourced data vs IHA (base):



Differences are still relatively negligible in the context of the entire system, though the reduction in pumped-hydro capacity when using ORNL-sourced data is expected.
Comparing Diurnal 12-hr vs Interday ORNL
The final comparison shows the difference in generation (TWh, left) and capacity (GW, right) when running ReEDS with Interday storage using ORNL data vs the diurnal 12-hr case:



Effects of ORNL Data with Interday Representation
Changes from this PR mainly affect the operating characteristics of PSH, particularly in the amount of energy that PSH capacity can arbitrage over the course of a model year. Below are various hourly state-of-charge (SoC) plots. The first plot (top) shows the effect of both interday storage representation and the old IHA data on PSH capacity SoC. The second plot (middle) is the same plot as the first, but using the new ORNL data. The third plot (bottom) isolates the effects of using the ORNL data compared to the default 12-hr PSH duration.
Compare report showing effects of {default|interday} storage representation and use of existing site {IHA|ORNL}-sourced data for storage duration calculation:
report.html
Bokeh report comparing use of ORNL-sourced existing site data vs IHA in ReEDS run using default storage representation:
report.html
Bokeh report comparing use of ORNL-sourced existing site data vs IHA in ReEDS run using interday storage representation:
report.html
BUG FIX
Negligible changes to ReEDS default results now that ReEDS properly uses existing PSH storage duration data. Below are generation (TWh, left) and capacity (GW, right) difference plots comparing a US default run before/after bug fix:



Checklist for author
Details to double-check
hourlize/resource.pywas rerun to regenerate the existing/prescribed VRE capacity dataGeneral information to guide review
Did you use LLM tools (chatbot or copilot) in the preparation of this PR? If so, describe how
Tag points of contact here if you would like additional review of the relevant parts of the model