Skip to content

[ClimateHydro] Apply Climate Adjustment Factors to Hydropower CF in Input Processing#129

Draft
jvcarag wants to merge 3 commits into
mainfrom
vc/ClimateHydroAdj
Draft

[ClimateHydro] Apply Climate Adjustment Factors to Hydropower CF in Input Processing#129
jvcarag wants to merge 3 commits into
mainfrom
vc/ClimateHydroAdj

Conversation

@jvcarag

@jvcarag jvcarag commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR moves the procedure for applying climate adjustment factors to hydropower capacity factors (CF) up to the hydcf.py input processing script instead of doing so in 2_temporal_params.gms.

Technical details

Climate adjustment factors are not being read in or applied to stress-period-indexed hydropower CF data, causing certain non-dispatchable hydro techs to have CFs of 0 for these timeslices (details are outlined in Issue #116).

Additionally, hydropower CF data used by PRAS do not include these climate adjustments, because the adjustments are not applied to the hydropower CF file ingested by the resource adequacy tool (details outlined in Issue #131).

To resolve both issues, this PR applies the climate adjustment factors to hydropower CFs when the latter are first being processed in reeds/input_processing/hydcf.py - this works because the adjustment factors and hydropower CFs are both at monthly resolution in hydcf.py, and the resulting hydcf.csv input file (used by PRAS) is the precursor to the cf_hyd.csv data that the adjustment factors are originally applied to.

Implementation notes

  • In runreeds.py, climateprep.py is moved up in the input processing script order to occur right before hydcf.py: this is necessary to have the adjustment factors processed by the time they are applied in hydcf.py
  • hydcf.py has new procedures for applying annual/seasonal climate adjustment factors to the corresponding dispatchable/non-dispatchable hydropower techs
  • climateprep.py no longer creates the temp_hydadjsea.csv file, as it is no longer necessary to process seasonal adjustment factors in hourly_writetimeseries.py – as a result, the latter script no longer has procedures for processing the data from monthly to rep/stress-period resolution
  • b_inputs.gms and 2_temporal_params.gms no longer read in or apply climate adjustment factors for hydropower CF, as they have already been applied to the CF data in hydcf.py

Additional changes

  • runfiles.csv: added entries for the annual/seasonal hydropower CF climate adjustment factors, hydadjann.csv and hydadjsea.csv.

Switches added/removed/changed

Issues resolved

#116: Resolves issue where climate adjustments were not being applied to stress-period data, causing hydropower CFs to equal 0 for some hydro techs during stress-periods.

#131: Resolves issue where climate adjustments were not reflected in the hydropower CF data used by PRAS.

Known incompatibilities

  • Climate adjustments to hydropower CF functionality (controlled by GSw_ClimateHydro) does not work out-of-the-box, as the required hydadjann.csv/hydadjsea.csv files are not currently stored in the ReEDS repo: users will need to provide their own data until updated adjustment factors are available.
  • Additional work is required to apply climate adjustment factors to cooling water availability and seasonal distribution factors (details are outlined in an upcoming Issue).

Relevant sources or documentation

Validation, testing, and comparison report(s)

Checklist for author

Details to double-check

  • Charge code provided to reviewers
  • Included comparison reports for appropriate test cases
  • Documentation updated if necessary
  • If input data added/modified:
    • Dollar year recorded and converted to 2004$ for GAMS
    • Timeseries are in Central Time
    • Units are specified
    • Preprocessing steps have been documented and committed to ReEDS_Input_Processing
    • New large data files handled with .h5 instead of .csv
    • If spatially resolved inputs are modified, the following visualizations for each file are included in the PR description (time-averaged if the inputs are time-resolved):
      • Map of absolute values before
      • Map of absolute values after
      • Map of differences: (after - before) or (after / before)
    • If entries are added/removed/changed in the EIA-NEMS unit database:
      • Changes have been committed to ReEDS_Input_Processing
      • hourlize/resource.py was rerun to regenerate the existing/prescribed VRE capacity data
  • Code formatting standardized
  • Reusable functions used where possible instead of copy/pasted code

General information to guide review

  • Zero impact on results of default case
  • No large data file(s) added/modified
  • No substantive impact on runtime for full-US reference case
  • No substantive impact on folder size for full-US reference case
  • No change to process flow (runreeds.py, reeds/core/solve/solve.py)
  • No change to code organization
  • No change to package requirements (environment.yml or Project.toml)

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

jvcarag added 3 commits June 23, 2026 13:56
 - Add procedure for applying climate adjustments in hydcf.py

 - Modify climateprep.py to output hydadjsea.csv as climate_hydadjsea.csv in long format (deletes temp_hydadjsea.csv)

 - Remove procedures for temp_hydadjsea.csv from hourly_writetimeseries.py

- Remove instances of climate_hydadjsea.csv and climate_hydro_* parameters from b_inputs.gms and 2_temporal_params.gms

- Add entries for hydadjann.csv and hydadjsea.csv back into runfiles.csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant