Adding technology classes - #12
Conversation
Co-authored-by: Wesley Cole <49044852+wesleyjcole@users.noreply.github.com>
patrickbrown4
left a comment
There was a problem hiding this comment.
I haven't gone through the whole thing yet and will take a closer look next week, but some initial thoughts in the meantime. Happy to discuss if helpful (including whether to try some of the suggested changes here or in a followup PR). Thanks!
…eEDS into ap_flex-start-year
patrickbrown4
left a comment
There was a problem hiding this comment.
Thanks for all your work on this one An. A few suggested cleanups but nothing requiring a new set of full-US comparisons, so all set from my end.
(The one caveat is that I didn't go through the geothermal changes in b_inputs.gms super closely, so I'll defer to you on those.)
There was a problem hiding this comment.
Can the changes to this file be reverted? It doesn't look like any functionality has changed.
There was a problem hiding this comment.
What do you think about cleaning up/reverting this file in the follow up PR? I don't want to mess anything up now. I added this as an item to address in the follow up PR #158
|
Also, I think we discussed earlier, but just as a quick reminder - since the EIA-NEMS database and supply curve files went through a few iterations earlier on that ended up being reverted, and they're some of the biggest git-tracked files, please select "Squash and merge" when merging to avoid keeping those big changes in the history. Thanks! |
Thanks Patrick. the geothermal changes here are only a partial fix to the geothermal prescribed build issue we have been seeing, so after this PR is merged in, we will revisit it in the follow up PR along with Yunzhi's PR #94 for a full fix. |
Co-authored-by: Patrick Brown <25125211+patrickbrown4@users.noreply.github.com>
Summary
This PR:
startyearswitch and instead establishesstartyearbased onyearsetTechnical details
These changes are made in this PR:
process_unitdata.py: Readunitdata.csvfrominputs_caseand process it to assign sc_point_pids, capacity factors/mean temps to pv, wind, and geothermal units. This file is run immediately aftercopy_files.py. This allows us to remove all the mapping of NEMS units tosc_point_gidsin the ReEDS_input_processing repo.WriteHintage.py: Allow start year to be flexible instead of 2010.writecapdat.py: Add mappings to solar, wind, geothermal resource class are based on the resource quality (capacity factors for wind and solar and temperature for geothermal) of the technology as it comes from reV.c_supplymodel.gmspcatset is removed from the model: The equationseq_force_prescription_powerandeq_force_prescription_energy, along with the variablesEXTRA_PRESCRIPandEXTRA_PRESCRIP_ENERGY, are currently indexed bypcat. Since the prescribed generator classes and vintages are now defined inwritecap.py, thepcatindex is no longer needed in these equations or variables. Accordingly, the equations are revised so that the investment (INV) of prescribed generators—indexed by (i, newv, r, t)—is equal to the sum of the prescribed build values and the additional prescribed investments (EXTRA_PRESCRIP) for those same (i, newv, r, t) combinations.eq_cap_new_noretandeq_cap_energy_new_noret. Although this implementation follows the same logic asm_capacity_exog, it explicitly captures prescribed generator builds in the INV variables in the current version of the model.hourlize:exog_cap_{tech}.csvand those are associated withexisting_sitesfiles as they are no longer needed.geothermal_classification.csvis not generated inhourlizebut taken from https://pages.github.nrel.gov/ReEDS/ReEDS-2.0/model_documentation.html#technical-resource-potential.Issues resolved
prescribed_buildto capture all capacity in unitdata.csv. Currently some prescribed coal capacities are missing due tocoaloldunsis missing fromprescribed_buildcategories https://github.com/ReEDS-Model/ReEDS/blob/main/reeds/input_processing/writecapdat.py#L79capnonrsc. This is due to due to thecomment='#'option when read in unitdata.csv, which ignores all the data after unit ID of the rows where unit ID has # character. So whencapnonrscis calculated by group summing from unitdata.csv, some of the categories to sum over are nan and those rows are omitted from the sum.Validation, testing, and comparison report(s)
Total prescribed builds and exogenous caps are generally the same with main, but spatial distribution is slightly different:

Comparison of prescribed builds (
prescribed_build) vs. main (noncumulative_prescriptions) in 2010 for UPV - Total UPV capacity matches and matches with the ReEDS-NEMS plant database but there's some difference in spatial distribution.Comparison of prescribed builds (

prescribed_build) vs. main (noncumulative_prescriptions) in 2015 for UPV: Total UPV capacity in this branch is slightly lower but it matches exactly with NEMS.Comparison of prescribed builds (

prescribed_build) vs. main (noncumulative_prescriptions) in 2020 for UPV: Total UPV capacity in this branch matches with main and matches exactly with NEMS. Spatial distribution varies again as expected.Comparison of prescribed builds (

prescribed_build) vs. main (noncumulative_prescriptions) in 2023 for UPV: Total UPV capacity in this branch matches with main and matches exactly with NEMS. Spatial distribution varies again.Comparison of prescribed builds (

prescribed_build) vs. main in 2010 for wind-ons - Wind-ons capacity matches exactly:Comparison of existing cap (

exog_upv) vs. main for UPV - Existing UPV capacity is slightly higher in this branch but matches exactly with NEMS:Comparison of existing cap (

exog_wind-ons) vs. main for wind-ons - Existing wind-ons capacity matches exactly:Comparison report (full here
Inputs comparison is here
coaloldunsprescribed capacity not captured in mainChecklist 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
No
Tag points of contact here if you would like additional review of the relevant parts of the model