Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
763c530
Removing unneeded files and tests
johnjasa Oct 17, 2025
7b2a6fc
WIP working through steel
johnjasa Oct 17, 2025
7d4f41d
Merging
johnjasa Oct 27, 2025
cb5b04c
Removed offshore
johnjasa Oct 27, 2025
70320f8
Deleting more old files
johnjasa Oct 27, 2025
7fbab4a
Removed extra file from merge
johnjasa Nov 26, 2025
6cb074c
Removed simple unused files
johnjasa Nov 26, 2025
2af6cda
Moving basic H2 cost
johnjasa Nov 26, 2025
88affb7
Removed defunct pressure vessel and pem_control_type
johnjasa Nov 27, 2025
71ba00f
Removed old tests
johnjasa Nov 27, 2025
14785ef
Updated test values
johnjasa Nov 27, 2025
35e88fe
moved singlitico model
johnjasa Nov 27, 2025
55666aa
Removing unused electrolyzer files
johnjasa Nov 27, 2025
df38966
Added back pem master
johnjasa Nov 27, 2025
ac8573b
Moving PEM model
johnjasa Nov 27, 2025
562df9e
Big refactor and removal of hydrogen storage from simulation/technolo…
johnjasa Nov 27, 2025
227126a
Shifting more electrolyzer files
johnjasa Nov 28, 2025
ee7f21f
Fixed and noted behavior
johnjasa Nov 28, 2025
531726d
Fixed bug in steel calc config for o2 heat integration
johnjasa Dec 2, 2025
dc67bb4
Moving iron files and adding back singlitico test
johnjasa Dec 2, 2025
cea8ac8
Fixed iron transport
johnjasa Dec 2, 2025
4552e91
Reverted steel example test values
johnjasa Dec 2, 2025
6dc6b1c
Reverted hydrogen storage test values
johnjasa Dec 2, 2025
d9167a8
fixing iron paths
johnjasa Dec 2, 2025
e7475f4
Merge branch 'develop' into remove_more_of_old_greenheart
johnjasa Dec 2, 2025
e39035f
Updates for PR
johnjasa Dec 3, 2025
056c77b
Merge branch 'develop' of https://github.com/NREL/H2Integrate into re…
johnjasa Dec 4, 2025
c0eaf18
Updating based on PR comments
johnjasa Dec 4, 2025
1908b0d
removed h2 pipe code and tests
johnjasa Dec 4, 2025
ecc0e55
Added back many more docstrings and comments for the hydrogen storage
johnjasa Dec 5, 2025
04cef5a
fix tests
kbrunik Dec 5, 2025
b0d7440
Merge branch 'develop' of https://github.com/NREL/H2Integrate into re…
johnjasa Dec 9, 2025
febbf5b
Removing defunct code per PR review
johnjasa Dec 9, 2025
2cbb07c
Minor refactoring based on PR feedback
johnjasa Dec 10, 2025
1e49cbf
Added note on primary commodity electricity tech
johnjasa Dec 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
- Improved readability of the postprocessing printout by simplifying numerical representation, especially for years
- Added grid converter performance and cost model which can be used to buy, sell, or buy and sell electricity to/from the grid
- Add open-loop load demand controllers: `DemandOpenLoopConverterController` and `FlexibleDemandOpenLoopConverterController`
- Removed a large portion of the old GreenHEART code that was no longer being used

## 0.4.0 [October 1, 2025]

Expand Down
1 change: 1 addition & 0 deletions docs/_toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ parts:
- file: technology_models/pysam_battery.md
- file: technology_models/geologic_hydrogen.md
- file: technology_models/grid
- file: technology_models/hydrogen_storage.md

- caption: Resource Models
chapters:
Expand Down
15 changes: 8 additions & 7 deletions docs/developer_guide/adding_a_new_technology.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,13 +165,14 @@ Here's what the updated `supported_models.py` file looks like with our new solar
from h2integrate.converters.solar.solar_pysam import PYSAMSolarPlantPerformanceComponent

supported_models = {
'pysam_solar_plant_performance' : PYSAMSolarPlantPerformanceComponent,

'pem_electrolyzer_performance': ElectrolyzerPerformanceModel,
'pem_electrolyzer_cost': ElectrolyzerCostModel,

'eco_pem_electrolyzer_performance': ECOElectrolyzerPerformanceModel,
'eco_pem_electrolyzer_cost': ECOElectrolyzerCostModel,
"pysam_solar_plant_performance" : PYSAMSolarPlantPerformanceComponent,

"run_of_river_hydro_performance": RunOfRiverHydroPerformanceModel,
"run_of_river_hydro_cost": RunOfRiverHydroCostModel,
"eco_pem_electrolyzer_performance": ECOElectrolyzerPerformanceModel,
"singlitico_electrolyzer_cost": SingliticoCostModel,
"basic_electrolyzer_cost": BasicElectrolyzerCostModel,
"custom_electrolyzer_cost": CustomElectrolyzerCostModel,

...
}
Expand Down
49 changes: 49 additions & 0 deletions docs/technology_models/hydrogen_storage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Bulk Hydrogen Storage Cost Model

## Storage Types

H2Integrate models at least three types of bulk hydrogen storage technologies:

- **Underground Pipe Storage**: Hydrogen stored in underground pipeline networks
- **Lined Rock Caverns (LRC)**: Hydrogen stored in rock caverns with engineered linings
- **Salt Caverns**: Hydrogen stored in solution-mined salt caverns

These storage options provide different cost-capacity relationships suitable for various scales of hydrogen production and distribution.

## Cost Correlations

The bulk hydrogen storage costs are modeled as functions of storage capacity using exponential correlations:

$$Cost = \exp(a(\ln(m))^2 - b\ln(m) + c)$$

where $m$ is the useable amount of H₂ stored in tonnes.

## Installed Capital Cost and Lifetime Storage Cost

The figures below show how storage costs scale with capacity for different storage technologies:

![Installed capital cost scaling](images/installed_capital_cost_h2.png)

*Figure 1a: Installed capital cost (\$/kg-H₂) as a function of usable hydrogen storage capacity*

![Lifetime storage cost scaling](images/lifetime_storage_cost_h2.png)

*Figure 1b: Lifetime storage cost (\$/kg-H₂-stored) as a function of usable hydrogen storage capacity*

## Cost Correlation Coefficients

### Capital Cost Coefficients (Figure 1a)

| Storage | a | b | c |
|--------------------------------|----------|---------|--------|
| Underground pipe storage | 0.004161 | 0.06036 | 6.4581 |
| Underground lined rock caverns | 0.095803 | 1.5868 | 10.332 |
| Underground salt caverns | 0.092548 | 1.6432 | 10.161 |

### Annual Cost Coefficients (Figure 1b)

| Storage | a | b | c |
|--------------------------------|----------|---------|--------|
| Underground pipe storage | 0.001559 | 0.03531 | 4.5183 |
| Underground lined rock caverns | 0.092286 | 1.5565 | 8.4658 |
| Underground salt caverns | 0.085863 | 1.5574 | 8.1606 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion docs/user_guide/how_to_set_up_an_analysis.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@
" hydrogen_dmd:\n",
" n_clusters: 13\n",
" cluster_rating_MW: 40\n",
" pem_control_type: basic\n",
" eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol\n",
" uptime_hours_until_eol: 77600 #number of 'on' hours until electrolyzer reaches eol\n",
" include_degradation_penalty: True #include degradation\n",
Expand Down
6 changes: 4 additions & 2 deletions docs/user_guide/model_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,10 @@ The inputs, outputs, and corresponding technology that are currently available i
| `desal` | water | electricity |
| `natural_gas` | electricity | natural gas |

```{note}
When the Primary Commodity is electricity, those converters are considered electricity producing technologies and their electricity production is summed for financial calculations.
```

(transport)=
## Transport
`Transport` models are used to either:
Expand Down Expand Up @@ -149,10 +153,8 @@ Below summarizes the available performance, cost, and financial models for each
- combined performance and cost:
+ `'wombat'`
- performance models:
+ `'pem_electrolyzer_performance'`
+ `'eco_pem_electrolyzer_performance'`
- cost models:
+ `'pem_electrolyzer_cost'`
+ `'singlitico_electrolyzer_cost'`
+ `'basic_electrolyzer_cost'`
- `geoh2_well_subsurface`: geologic hydrogen well subsurface
Expand Down
187 changes: 92 additions & 95 deletions examples/01_onshore_steel_mn/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ technologies:
hydrogen_dmd:
n_clusters: 18
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down Expand Up @@ -68,102 +67,100 @@ technologies:
shared_parameters:
capacity_factor: 0.9
plant_capacity_mtpy: 1000000.

cost_parameters:
operational_year: 2035
o2_heat_integration: false
o2_heat_integration: True
lcoh: 7.37
inflation_rate:
installation_time: 36 # months
inflation_rate: 0.0 # 0 for nominal analysis
feedstocks:
oxygen_market_price: 0.0 # 0.03 $/kgO2 if `o2_heat_integration` == 1
unused_oxygen: 395
lime_unitcost: 122.1
carbon_unitcost: 236.97
electricity_cost: 48.92
iron_ore_pellet_unitcost: 207.35
oxygen_market_price: 0.03
raw_water_unitcost: 0.59289
iron_ore_consumption: 1.62927
raw_water_consumption: 0.80367
lime_consumption: 0.01812
carbon_consumption: 0.0538
hydrogen_consumption: 0.06596
natural_gas_consumption: 0.71657
electricity_consumption: 0.5502
slag_disposal_unitcost: 37.63
slag_production: 0.17433
maintenance_materials_unitcost: 7.72
natural_gas_prices:
"2035": 3.76232
"2036": 3.776032
"2037": 3.812906
"2038": 3.9107960000000004
"2039": 3.865776
"2040": 3.9617400000000003
"2041": 4.027136
"2042": 4.017166
"2043": 3.9715339999999997
"2044": 3.924314
"2045": 3.903287
"2046": 3.878192
"2047": 3.845413
"2048": 3.813366
"2049": 3.77735
"2050": 3.766164
"2051": 3.766164
"2052": 3.766164
"2053": 3.766164
"2054": 3.766164
"2055": 3.766164
"2056": 3.766164
"2057": 3.766164
"2058": 3.766164
"2059": 3.766164
"2060": 3.766164
"2061": 3.766164
"2062": 3.766164
"2063": 3.766164
"2064": 3.766164
finances:
# plant_life: 30
grid_prices:
"2035": 89.42320514456621
"2036": 89.97947569251141
"2037": 90.53574624045662
"2038": 91.09201678840184
"2039": 91.64828733634704
"2040": 92.20455788429224
"2041": 89.87291235917809
"2042": 87.54126683406393
"2043": 85.20962130894978
"2044": 82.87797578383562
"2045": 80.54633025872147
"2046": 81.38632144593608
"2047": 82.22631263315068
"2048": 83.0663038203653
"2049": 83.90629500757991
"2050": 84.74628619479452
"2051": 84.74628619479452
"2052": 84.74628619479452
"2053": 84.74628619479452
"2054": 84.74628619479452
"2055": 84.74628619479452
"2056": 84.74628619479452
"2057": 84.74628619479452
"2058": 84.74628619479452
"2059": 84.74628619479452
"2060": 84.74628619479452
"2061": 84.74628619479452
"2062": 84.74628619479452
"2063": 84.74628619479452
"2064": 84.74628619479452

# Additional parameters passed to ProFAST
financial_assumptions:
"total income tax rate": 0.2574
"capital gains tax rate": 0.15
"leverage after tax nominal discount rate": 0.10893
"debt equity ratio of initial financing": 0.624788
"debt interest rate": 0.050049
# Feedstock parameters (flattened)
excess_oxygen: 395
lime_unitcost: 122.1
lime_transport_cost: 0.0
carbon_unitcost: 236.97
carbon_transport_cost: 0.0
electricity_cost: 48.92
iron_ore_pellet_unitcost: 207.35
iron_ore_pellet_transport_cost: 0.0
oxygen_market_price: 0.03
raw_water_unitcost: 0.59289
iron_ore_consumption: 1.62927
raw_water_consumption: 0.80367
lime_consumption: 0.01812
carbon_consumption: 0.0538
hydrogen_consumption: 0.06596
natural_gas_consumption: 0.71657
electricity_consumption: 0.5502
slag_disposal_unitcost: 37.63
slag_production: 0.17433
maintenance_materials_unitcost: 7.72
natural_gas_prices:
"2035": 3.76232
"2036": 3.776032
"2037": 3.812906
"2038": 3.9107960000000004
"2039": 3.865776
"2040": 3.9617400000000003
"2041": 4.027136
"2042": 4.017166
"2043": 3.9715339999999997
"2044": 3.924314
"2045": 3.903287
"2046": 3.878192
"2047": 3.845413
"2048": 3.813366
"2049": 3.77735
"2050": 3.766164
"2051": 3.766164
"2052": 3.766164
"2053": 3.766164
"2054": 3.766164
"2055": 3.766164
"2056": 3.766164
"2057": 3.766164
"2058": 3.766164
"2059": 3.766164
"2060": 3.766164
"2061": 3.766164
"2062": 3.766164
"2063": 3.766164
"2064": 3.766164
# Financial parameters (flattened)
grid_prices:
"2035": 89.42320514456621
"2036": 89.97947569251141
"2037": 90.53574624045662
"2038": 91.09201678840184
"2039": 91.64828733634704
"2040": 92.20455788429224
"2041": 89.87291235917809
"2042": 87.54126683406393
"2043": 85.20962130894978
"2044": 82.87797578383562
"2045": 80.54633025872147
"2046": 81.38632144593608
"2047": 82.22631263315068
"2048": 83.0663038203653
"2049": 83.90629500757991
"2050": 84.74628619479452
"2051": 84.74628619479452
"2052": 84.74628619479452
"2053": 84.74628619479452
"2054": 84.74628619479452
"2055": 84.74628619479452
"2056": 84.74628619479452
"2057": 84.74628619479452
"2058": 84.74628619479452
"2059": 84.74628619479452
"2060": 84.74628619479452
"2061": 84.74628619479452
"2062": 84.74628619479452
"2063": 84.74628619479452
"2064": 84.74628619479452
# Financial assumptions
financial_assumptions:
"total income tax rate": 0.2574
"capital gains tax rate": 0.15
"leverage after tax nominal discount rate": 0.10893
"debt equity ratio of initial financing": 0.624788
"debt interest rate": 0.050049
1 change: 0 additions & 1 deletion examples/02_texas_ammonia/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ technologies:
hydrogen_dmd:
n_clusters: 16
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 10 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000 #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ technologies:
hydrogen_dmd:
n_clusters: 4
cluster_rating_MW: 39
pem_control_type: 'basic'
eol_eff_percent_loss: 10 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000 #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ technologies:
hydrogen_dmd:
n_clusters: 4
cluster_rating_MW: 40
pem_control_type: 'basic'
Copy link
Collaborator

Choose a reason for hiding this comment

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

It seems like the control type is pretty important. @elenya-grant has this been handled satisfactorily?

eol_eff_percent_loss: 10 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000 #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/05_wind_h2_opt/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ technologies:
hydrogen_dmd:
cluster_rating_MW: 20
n_clusters: 25
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/08_wind_electrolyzer/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ technologies:
hydrogen_dmd:
n_clusters: 13 #should be 12.5 to get 500 MW
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/10_electrolyzer_om/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ technologies:
hydrogen_dmd:
n_clusters: 1
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/12_ammonia_synloop/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ technologies:
hydrogen_dmd:
n_clusters: 16
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 10 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000 #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/14_wind_hydrogen_dispatch/inputs/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ technologies:
hydrogen_dmd:
n_clusters: 18
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
1 change: 0 additions & 1 deletion examples/15_wind_solar_electrolyzer/tech_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ technologies:
hydrogen_dmd:
n_clusters: 18
cluster_rating_MW: 40
pem_control_type: 'basic'
eol_eff_percent_loss: 13 #eol defined as x% change in efficiency from bol
uptime_hours_until_eol: 80000. #number of 'on' hours until electrolyzer reaches eol
include_degradation_penalty: True #include degradation
Expand Down
Loading