Add h2 fuel cell technology to ReEDS main#111
Conversation
louisaserpe
left a comment
There was a problem hiding this comment.
Thanks Yijin! Let me know if you have any questions or need help with any of these changes.
| @@ -0,0 +1,42 @@ | |||
| i,t,capcost,fom,vom,heatrate | |||
| h2-fuel-cell,2010,1342.191177,30.81961856,1.7054,8.461 | |||
| @@ -0,0 +1,42 @@ | |||
| i,t,capcost,fom,vom,heatrate | |||
| @@ -0,0 +1,42 @@ | |||
| i,t,capcost,fom,vom,heatrate | |||
| h2-fuel-cell,2010,1352.084006,30.97866356,1.7054,8.461 | |||
There was a problem hiding this comment.
Can you point me to where these fom and vom numbers are coming from? The paper says we assume the same vom and fom as NG CTs but these values don't match the ATB/gas_ATB_2024_moderate
| @@ -0,0 +1,42 @@ | |||
| i,t,capcost,fom,vom,heatrate | |||
| h2-fuel-cell,2010,1342.191177,30.81961856,1.7054,8.461 | |||
| h2-fuel-cell,2011,1342.191177,30.81961856,1.7054,8.461 | |||
There was a problem hiding this comment.
Just documenting that I checked that this is HHV
| H2-CT_Upgrade,#66C238,> | ||
| H2-CT,#A8C839,> | ||
| NG-Fuel-Cell,#AD50E2,< | ||
| H2-Fuel-Cell,#87A21D,< |
| canada,Canadian Imports,Remove,Remove,Canadian Imports | ||
| h2-ct,H2-CT,Hydrogen Combustion,Thermal,H2-CT | ||
| h2-cc,H2-CC,Hydrogen Combustion,Thermal,H2-CC | ||
| h2-fuel-cell,H2-Fuel-Cell,H2 Fuel Cell,Thermal,H2-Fuel-Cell |
There was a problem hiding this comment.
| h2-fuel-cell,H2-Fuel-Cell,H2 Fuel Cell,Thermal,H2-Fuel-Cell | |
| h2-fuel-cell,H2-Fuel-Cell,Hydrogen Combustion,Remove,H2-Fuel-Cell |
| GSw_H2_Transport,Indicate whether to allow interregional H2 transport via pipelines (only has an effect if GSw_H2=2),0; 1,0, | ||
| GSw_H2_TransportLevel,hierarchy level within which to allow H2 pipelines,r; nercr; transreg; transgrp; cendiv; st; interconnect; country; usda_region,cendiv, | ||
| GSw_H2_TransportUniform,"Option to override H2 storage/transport costs. Value of 0 (default) defers to default tech-specific, time-varying cost settings specified via H2 inputs when GSw_H2=1 or the H2 nework costs when GSw_H2=2. Specify in $2004 per metric ton.",N/A,0, | ||
| GSw_H2Combustion,Switch to turn on/off H2CT and H2CC techs,0; 1,1, |
There was a problem hiding this comment.
| GSw_H2Combustion,Switch to turn on/off H2CT , H2CC, H2 FUEL CELL techs,0; 1,1, |
| GSw_H2,Turn on/off the representation of hydrogen supply/demand balance at a national level without storage (1) or at a regional level with storage (2),0; 1; 2,2, | ||
| GSw_H2_CompressorLoad,Turn on/off the accounting of electric loads from compressors used to operate the hydrogen transport network, 0; 1,0, | ||
| GSw_H2_Demand_Case,H2 demand case as indicated by the column headers in inputs/consume/h2_exogenous_demand.csv,none; BAU; Aggressive; Decarb; Decarb_with_BAU; LTS,none, | ||
| GSw_H2FuelCell,Turn on/off H2 fuel cell (h2-fuel-cell) as a technology option,0; 1,0, |
There was a problem hiding this comment.
Since h2-fuel-cell is marked as YES under H2_COMBUSTION in tech-subset-table, fuel cells will be listed as a banned technology if GSw_H2Combustion is not also turned on. I would add a check in the runreeds.py check_compatibility function to ensure a user has both turned on when trying to include H2 fuel cells as an option
| @@ -0,0 +1,67 @@ | |||
| ,Default Value,USA_defaults_fc_pr,USA_defaults_fc_mid,USA_defaults_fc_low,USA_defaults_fc_high,USA_defaults_fc_mid_w_ng_fc | |||
There was a problem hiding this comment.
Let's delete this file before merging into main. I'd suggest adding a small fuel cell case to either the cases_example.csv or cases_test.csv
Summary
Adds
h2-fuel-cell(hydrogen-powered fuel cell) as a new technology option in ReEDS, complementing the existingng-fuel-cell(natural gas fuel cell) already in the model. The H2 fuel cell consumes hydrogen (h2fuel, the same fuel asH2-CT/H2-CC), is gated by a new dedicated switchGSw_H2FuelCell, and offers three cost scenarios (conservative/moderate/advanced) based on Reznicek et al. (2026).Technical details
Implementation notes
h2-fuel-cellis added to a newH2_FUEL_CELLsubset ini_subtech.csvand flagged under bothH2_COMBUSTIONandH2_FUEL_CELLintech-subset-table.csv. It is not merged intong-fuel-cell'sFUEL_CELLsubset — the two fuel cells are toggled separately.b_inputs.gms): adds a newh2_fuel_cell(i)set; theng-fuel-cellban was refactored from a subset ban to an explicitban('ng-fuel-cell')(under the existingSw_FuelCell=0block, behavior preserved), and a new block bansh2-fuel-cellwhenSw_H2FuelCell=0. Theh2_combustionset comment was updated to include fuel cells.h2-fuel-cellusesh2fuel(fuel2tech.csv), is added toi.csvandtechs_default.csv(region typep).plantcostprep.pyby addingh2fuelcellto the existingconv_techsloader loop, using switchplantchar_h2fuelcell. Dollar year 2022$ (dollaryear.csv), converted to 2004$ via the standard deflator.h2-fuel-cellrows were added across the plant-characteristic and financial input files (emitrate,cost_opres_default/_market,minCF,mttr,outage_forced_static,outage_scheduled_static,ramprate,startcost,unitsize_atb,heat_rate_adj,heat_rate_penalty_spin,degradation_annual_default,years_until_endogenous,construction_times_default,financials_tech_ATB2023/_CRP20/ATB2024,reg_cap_cost_diff_default,nat_gen_tech_frac,ivt_default/_small/_step,futurefiles,runfiles).Additional changes
postprocessing/tech_aggregation.csv,tech_map.csv,tech_style.csvupdated forh2-fuel-celldisplay: mapped toH2-Fuel-Cell, aggregated as "H2 Fuel Cell", color#87A21D. (A matchingH2 Fuel Cellstyle key was added so the aggregated bar renders incompare_cases.pyPPTs.)cases_h2-fuelcell.csvadded with 5 test scenarios:USA_defaults_fc_pr(runs without fc switch turning on),USA_defaults_fc_mid(moderate cost/deployment cost case),USA_defaults_fc_low(advanced/high deployment cost case),USA_defaults_fc_high(conservative/low deployment cost case),USA_defaults_fc_mid_w_ng_fc(moderate level + NG fuel cell switch turned on).docs/source/model_documentation.md, file entries insources.md, and a Reznicek 2026 entry inreferences.bib.Switches added/removed/changed
GSw_H2FuelCell0,10h2-fuel-cellas a technology optionplantchar_h2fuelcellh2fuelcell_conservative,h2fuelcell_moderate,h2fuelcell_advancedh2fuelcell_moderate(
GSw_FuelCellis unchanged by this PR and continues to govern onlyng-fuel-cell.)Relevant sources or documentation
Validation, testing, and comparison report(s)
Ran 1/6 cases under main ReEDS branch, also ran the 5/6 cases under
cases_h2-fuelcell.csvto test scenarios (fc_pr,fc_low,fc_mid,fc_high,fc_mid_w_ng_fc) and compared capacity, location, and dispatch withcompare_cases.py. The newh2-fuel-celltechnology builds, is selected overH2-CTas costs decline, and dispatches as expected.Location & technology selection (2030)
In 2030 the H2 capacity lands in exactly two BAs : p10 (692 MW) and p31 (210 MW) = 902 MW total in every scenario. The location does not change; only the technology filling those two slots swaps between scenarios as the fuel-cell cost case improves:
fc_prfc_lowfc_midfc_mid_w_ng_fcfc_highThis 902 MW is prescribed build from
inputs/capacity_exogenous/interconnection_queues.csv. It appears as a step in 2030 in p10 + p31, holds flat through 2035, then declines. The model fills that prescribed requirement with the cheapest available H2 technology, which is why fuel cell displaces H2-CT in the cheaper cost cases (low/mid), partially inhigh(p10 only), and not at all inpr(H2-CT baseline).H2 fuel cell capacity build (MW)
prlowmidhighDispatch / capacity factor
Annual CF is a flat 6.0% across every scenario and year. The 6% is the annual minimum CF requirement imposed in
inputs/plant_characteristics/minCF.csv; peak hourly utilization reaches ~16% max when looking at the gen_h.csv file.Checklist for author
Details to double-check
dollaryear.csvupdated forh2fuelcell_*scenarios, 2022$)runreeds.py,solve.py)General information to guide review
GSw_H2FuelCell=0by default — no change when switch is off)Did you use LLM tools (chatbot or copilot) in the preparation of this PR? If so, describe how
Yes — Claude Code (Anthropic) assisted with documentation modification and writing this PR language.
Tag points of contact
@yijinli22