Skip to content

Enforce minimum generation level for biopower plants#141

Open
shashwatsharma24 wants to merge 4 commits into
mainfrom
ss/bio-mingen-update
Open

Enforce minimum generation level for biopower plants#141
shashwatsharma24 wants to merge 4 commits into
mainfrom
ss/bio-mingen-update

Conversation

@shashwatsharma24

@shashwatsharma24 shashwatsharma24 commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR applies a minimum generation level for biopower available capacity in ReEDS. Currently this constraint applies only to nuclear and nuclear SMR plants when GSw_MingenFixed = 1.

Technical details

Comparing technology-level annual generation values from ReEDS default case against reported Form EIA-930 reveals significant differences for historical years. ReEDS under-generates from biopower plants in the default case.

image

This is at least partly attributable to a mistmatch in biopower fleet capacity between ReEDS and EIA (Form 860):

image

To close this gap, we enforce a minimum generation level of 50% for biopower plants. This value is consistent with annual capacity factor values ~55-60% for biopower plants reported by EIA.

Implementation notes

We apply a default minimum generation value of 0.5 for biopower to inputs/plant_characteristics/mingen_fixed.csv. In c_model.gms, eq_mingen_fixed(i,v,r,h,t) enforces minimum generation for the available capacity of technologies listed in mingen_fixed.csv.

Relevant sources or documentation

Validation, testing, and comparison report(s)

Below are plots comparing capacity stack [GW] and generation (TWh) mix for ReEDS default case and differences before and after applying minimum generation values of 0.5 (Bio_MinGen_p5) for biopower plants. Annual biopower generation marginally increases by 3-5 TWh post-2026, with slight increase in Gas-CC generation during 2040-45, mostly replacing onshore wind + upv generation from the mix. Negligible changes in capacity stack are noticed for this period, and overall system cost NPV increases by ~$2B.

No changes to capacity stack / generation in historical years (2010-2025) since eq_mingen_fixed includes a conditional for GSw_StartMarkets (= 2026, year starting which operational constraints are applied).

image image

Comparison report:
results-Main,Bio_MinGen_p5.pptx

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
    • Units are specified
  • Code formatting standardized

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

@wesleyjcole wesleyjcole left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you include a run comparison of USA_defaults that shows the impact of this change in future years?

Comment thread reeds/core/setup/c_model.gms Outdated
Comment on lines +1292 to +1293
eq_mingen_fixed(i,v,r,h,t)
$[Sw_MingenFixed$tmodel(t)$mingen_fixed(i)$valgen(i,v,r,t)
$(yeart(t)>=Sw_StartMarkets)]..
$[Sw_MingenFixed$tmodel(t)$mingen_fixed(i)$valgen(i,v,r,t)]..

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know we did this to get better historical generation outcomes, but I'm thinking it might be best to leave this change out so that we don't unintentionally hit infeasibilities in historical years.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated the plots with a comparison against USA_defaults and reinstating the Sw_StartMarkets constraint.

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.

2 participants