H2Integrate
An open-source Python package for modeling and designing hybrid energy systems producing electricity, hydrogen, ammonia, steel, and other products.
https://github.com/natlabrockies/h2integrate
Category: Energy Systems
Sub Category: Energy System Modeling Frameworks
Keywords from Contributors
wind openmdao systems-engineering wisdem wind-energy
Last synced: about 7 hours ago
JSON representation
Repository metadata
- Host: GitHub
- URL: https://github.com/natlabrockies/h2integrate
- Owner: NatLabRockies
- License: bsd-3-clause
- Created: 2024-10-07T15:12:46.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-03-05T04:44:23.000Z (7 days ago)
- Last Synced: 2026-03-05T09:53:42.882Z (7 days ago)
- Language: Python
- Homepage: https://h2integrate.readthedocs.io/
- Size: 560 MB
- Stars: 18
- Watchers: 5
- Forks: 27
- Open Issues: 140
- Releases: 11
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Citation: CITATION.cff
README.md
H2Integrate: Holistic Hybrids Optimization and Design Tool
H2Integrate is an open-source Python package for modeling and designing hybrid energy systems producing electricity, hydrogen, ammonia, steel, and other products.
Note: The current version of H2Integrate is under active development and may be missing features that existed previously. H2Integrate v0.2.0 is the last version that uses the prior framework.
Software Citation
@software{brunik_2025_17903150,
author = {Brunik, Kaitlin and
Grant, Elenya and
Thomas, Jared and
Starke, Genevieve M and
Martin, Jonathan and
Ramos, Dakota and
Koleva, Mariya and
Reznicek, Evan and
Hammond, Rob and
Stanislawski, Brooke and
Kiefer, Charlie and
Irmas, Cameron and
Vijayshankar, Sanjana and
Riccobono, Nicholas and
Frontin, Cory and
Clark, Caitlyn and
Barker, Aaron and
Gupta, Abhineet and
Kee, Benjamin (Jamie) and
King, Jennifer and
Jasa, John and
Bay, Christopher},
title = {H2Integrate: Holistic Hybrids Optimization and Design Tool},
month = dec,
year = 2025,
publisher = {Zenodo},
version = {0.4.0},
doi = {10.5281/zenodo.17903150},
url = {https://doi.org/10.5281/zenodo.17903150},
}
Publications where H2Integrate has been used
For more context about H2Integrate and to see analyses that have been performed using the tool, please see some of these publications.
PDFs are available in the linked titles.
Nationwide techno-economic analysis of clean hydrogen production powered by a hybrid renewable energy plant for over 50,000 locations in the United States.
The levelized cost of hydrogen is calculated for varying technology costs, and tax credits to
explore cost sensitivities independent of plant design, performance, and site selection. Our
findings suggest that strategies for cost reduction include selecting sites with abundant wind
resources, complementary wind and solar resources, and optimizing the sizing of wind and solar
assets to maximize the hybrid plant capacity factor.
Grant, E., et al. "Hybrid power plant design for low-carbon hydrogen in the United States." Journal of Physics: Conference Series. Vol. 2767. No. 8. IOP Publishing, 2024.
Exploring the role of producing low-carbon hydrogen using water electrolysis powered by offshore wind in facilitating the United States’ transition to a net-zero emissions economy by 2050.
Conducting a regional techno-economic analysis at four U.S. coastal sites, the study evaluates two
energy transmission configurations and examines associated costs for the years 2025, 2030, and 2035.
The results highlight that locations using fixed-bottom technology may achieve cost-competitive
water electrolysis hydrogen production by 2030 through leveraging geologic hydrogen storage and
federal policy incentives.
Brunik, K., et al. "Potential for large-scale deployment of offshore wind-to-hydrogen systems in the United States." Journal of Physics: Conference Series. Vol. 2767. No. 6. IOP Publishing, 2024.
Examining how tightly-coupled gigawatt-scale wind- and solar-sourced H2 depends on the ability to store and deliver otherwise-curtailed H2 during times of shortages.
Modeling results suggest that the levelized cost of storage is highly spatially heterogeneous, with
minor impact on the cost of H2 in the Midwest, and potentially significant impact in areas with
emerging H2 economies such as Central California and the Southeast. While TOL/MCH may be the
cheapest aboveground bulk storage solution evaluated, upfront capital costs, modest energy
efficiency, reliance on critical materials, and greenhouse gas emissions from heating remain
concerns.
Breunig, Hanna, et al. "Hydrogen Storage Materials Could Meet Requirements for GW-Scale Seasonal Storage and Green Steel." (2024).
DOE Hydrogen Program review presentation of H2Integrate
King, J. and Hammond, S. "Integrated Modeling, TEA, and Reference Design for Renewable Hydrogen to Green Steel and Ammonia - GreenHEART" (2024).
Software requirements
- Python version 3.11, 3.12 64-bit
- Other versions may still work, but have not been extensively tested at this time
Installing from Package Repositories
pip install h2integrate
[!NOTE]
If using the Ard modelsh2integrate[ard], see the source installation instructions (item 3) for
creating a conda environment with WISDEM installed through conda, not pip as it can cause issues
on some machines.
Installing from Source
Easiest approach (recommended)
-
Using Git, navigate to a local target directory and clone repository:
git clone https://github.com/NREL/H2Integrate.git -
Navigate to
H2Integratecd H2Integrate -
Create a conda environment and install H2Integrate and all its dependencies. Please read the
following two notes about modified installation steps.- If on a Unix machine, uncomment line 8 in
environment.ymlto install Cbc. Windows
users will need to manually install from https://github.com/coin-or/Cbc. - If you plan to use Ard, please uncomment line 9 in
environment.ymlto ensure WISDEM (an Ard
dependency) is installed from conda to avoid installation issues with some systems.
conda env create -f environment.yml - If on a Unix machine, uncomment line 8 in
An additional step can be added if additional dependencies are required, or you plan to use this
environment for development work.
- Pass
-efor an editable developer install - Use one of the extra flags as needed:
gis: adds the iron mapping tools.ard: adds the Ard-based wind models.develop: adds developer and documentation tools, plus optional analysis modifiersgisandard.examples: allows you to use the Jupyter Notebooks and all examples (includesardandgis).allsimplifies adding all the dependencies.
This looks like the following for a developer installation:
pip install -e ".[all]"
Customizable
-
Using Git, navigate to a local target directory and clone repository:
git clone https://github.com/NREL/H2Integrate.git -
Navigate to
H2Integratecd H2Integrate -
Create a new virtual environment and change to it. Using Conda Python 3.11 (choose your favorite
supported version) and naming it 'h2integrate' (choose your desired name):conda create --name h2integrate python=3.11 -y conda activate h2integrate -
Install H2Integrate and its dependencies:
conda install -y -c conda-forge glpkNote: Unix users should install Cbc via:
conda install -y -c conda-forge coin-or-cbc=2.10.8Windows users will have to manually install Cbc: https://github.com/coin-or/Cbc.
-
If you want to just use H2Integrate:
pip install . -
If you want to work with the examples:
pip install ".[examples]" -
If you also want development dependencies for running tests and building docs:
pip install -e ".[develop]"Please be sure to also install the pre-commit hooks if contributing code back to the main
repository via the following. This enables a series of automated formatting and code linting
(style and correctness checking) to ensure the code is stylistically consistent.pre-commit installIf a check (or multiple) fails (commit is blocked), and reformatting was done, then restage
(git add) your files and commit them again to see if all issues were resolved without user
intervention. If changes are required follow the suggested fix, or resolve the stated
issue(s). Restaging and committing may take multiple attempts steps if errors are unaddressed
or insufficiently addressed. Please see pre-commit,
ruff, or isort for more
information. -
In one step, all dependencies can be installed as:
pip install -e ".[all]"
-
-
The functions which download resource data require an NREL API key. Obtain a key from:
-
To set up the
NREL_API_KEYandNREL_API_EMAILrequired for resource downloads, follow the steps
outlined in this doc page. -
Verify setup by running tests:
pytest
Getting Started
The Examples contain Jupyter notebooks and sample YAML files for common usage
scenarios in H2Integrate. These are actively maintained and updated to demonstrate H2Integrate's
capabilities. For full details on simulation options and other features, documentation is
forthcoming.
Contributing
Interested in improving H2Integrate? Please see the Contributor's Guide
section for more information.
Citation (CITATION.cff)
abstract: <p>H2Integrate is an open-source Python package for modeling and designing hybrid energy systems producing electricity, hydrogen, ammonia, steel, and other products.</p> authors: - family-names: Brunik given-names: Kaitlin orcid: 0009-0006-8764-2672 - affiliation: National Renewable Energy Laboratory family-names: Grant given-names: Elenya orcid: 0000-0003-1939-011X - affiliation: National Renewable Energy Laboratory family-names: Thomas given-names: Jared orcid: 0000-0001-6668-2276 - affiliation: National Renewable Energy Laboratory family-names: Starke given-names: Genevieve M orcid: 0000-0001-9554-8455 - affiliation: National Renewable Energy Laboratory family-names: Martin given-names: Jonathan orcid: 0000-0002-1239-6300 - affiliation: National Renewable Energy Laboratory family-names: Ramos given-names: Dakota orcid: 0000-0003-1258-7681 - affiliation: National Renewable Energy Laboratory family-names: Koleva given-names: Mariya orcid: 0000-0003-1387-6477 - affiliation: National Renewable Energy Laboratory family-names: Reznicek given-names: Evan orcid: 0000-0002-7456-1199 - affiliation: National Renewable Energy Laboratory family-names: Hammond given-names: Rob orcid: 0000-0003-4476-6406 - affiliation: National Renewable Energy Laboratory family-names: Stanislawski given-names: Brooke orcid: 0000-0003-3146-0053 - family-names: Kiefer given-names: Charlie - family-names: Irmas given-names: Cameron - affiliation: National Renewable Energy Laboratory family-names: Vijayshankar given-names: Sanjana orcid: 0009-0009-6867-5075 - affiliation: National Renewable Energy Laboratory family-names: Riccobono given-names: Nicholas - affiliation: National Renewable Energy Laboratory family-names: Frontin given-names: Cory orcid: 0000-0002-9375-7488 - family-names: Clark given-names: Caitlyn orcid: 0000-0002-5203-7329 - family-names: Barker given-names: Aaron orcid: 0000-0003-3570-1424 - affiliation: National Renewable Energy Laboratory family-names: Gupta given-names: Abhineet orcid: 0000-0003-3383-3490 - affiliation: National Renewable Energy Laboratory family-names: Kee given-names: Benjamin (Jamie) orcid: 0000-0003-0852-8582 - affiliation: National Renewable Energy Laboratory family-names: King given-names: Jennifer orcid: 0000-0001-6219-0098 - affiliation: National Renewable Energy Laboratory family-names: Jasa given-names: John orcid: 0000-0001-5442-2792 - affiliation: National Renewable Energy Laboratory family-names: Bay given-names: Christopher orcid: 0000-0002-2658-5559 - affiliation: National Renewable Energy Laboratory family-names: Jasa given-names: John orcid: 0000-0001-5442-2792 - affiliation: National Renewable Energy Laboratory family-names: King given-names: Jennifer orcid: 0000-0001-6219-0098 - affiliation: National Renewable Energy Laboratory family-names: Bay given-names: Christopher orcid: 0000-0002-2658-5559 - affiliation: National Renewable Energy Laboratory family-names: Brunik given-names: Kaitlin orcid: 0009-0006-8764-2672 - affiliation: National Renewable Energy Laboratory family-names: Grant given-names: Elenya orcid: 0000-0003-1939-011X - affiliation: National Renewable Energy Laboratory family-names: Starke given-names: Genevieve M orcid: 0000-0001-9554-8455 - affiliation: National Renewable Energy Laboratory family-names: Martin given-names: Jonathan orcid: 0000-0002-1239-6300 - affiliation: National Renewable Energy Laboratory family-names: Ramos given-names: Dakota orcid: 0000-0003-1258-7681 - affiliation: National Renewable Energy Laboratory family-names: Thomas given-names: Jared orcid: 0000-0001-6668-2276 - affiliation: National Renewable Energy Laboratory family-names: Reznicek given-names: Evan orcid: 0000-0002-7456-1199 - affiliation: National Renewable Energy Laboratory family-names: Hammond given-names: Rob orcid: 0000-0003-4476-6406 - affiliation: National Renewable Energy Laboratory family-names: Stanislawski given-names: Brooke orcid: 0000-0003-3146-0053 - affiliation: National Renewable Energy Laboratory family-names: Kiefer given-names: Charlie - family-names: Irmas given-names: Cameron - affiliation: National Renewable Energy Laboratory family-names: Vijayshankar given-names: Sanjana orcid: 0009-0009-6867-5075 - affiliation: National Renewable Energy Laboratory family-names: Riccobono given-names: Nicholas - affiliation: National Renewable Energy Laboratory family-names: Frontin given-names: Cory orcid: 0000-0002-9375-7488 - affiliation: National Renewable Energy Laboratory family-names: Clark given-names: Caitlyn orcid: 0000-0002-5203-7329 - family-names: Barker given-names: Aaron orcid: 0000-0003-3570-1424 - affiliation: National Renewable Energy Laboratory family-names: Gupta given-names: Abhineet orcid: 0000-0003-3383-3490 - affiliation: National Renewable Energy Laboratory family-names: Kee given-names: Benjamin (Jamie) orcid: 0000-0003-0852-8582 - affiliation: National Renewable Energy Laboratory family-names: Koleva given-names: Mariya orcid: 0000-0003-1387-6477 cff-version: 1.2.0 date-released: '2025-12-11' doi: 10.5281/zenodo.17903150 keywords: - euroscivoc:1169 - Renewable energy - euroscivoc:1691 - Hydrogen energy - gemet:concept/7842 - Software - gemet:concept/14894 - Software development - euroscivoc:1687 - Hybrid energy - gemet:concept/9335 - Wind power - euroscivoc:1695 - Wind power - gemet:concept/7906 - Solar energy - energy generation - gemet:concept/2744 - Energy storage - euroscivoc:1171 - Energy conversion - energy dispatch - design optimization license: - bsd-3-clause message: If you use this software, please cite it using the metadata from this file. title: 'H2Integrate: Holistic Hybrids Optimization and Design Tool' type: software version: 0.4.0
Owner metadata
- Name: National Laboratory of the Rockies
- Login: NatLabRockies
- Email:
- Kind: organization
- Description:
- Website: http://www.nrel.gov
- Location: Golden, CO
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/1906800?v=4
- Repositories: 599
- Last ynced at: 2026-01-22T09:57:55.744Z
- Profile URL: https://github.com/NatLabRockies
GitHub Events
Total
- Release event: 1
- Delete event: 1
- Pull request event: 42
- Issues event: 36
- Issue comment event: 18
- Push event: 34
- Pull request review event: 99
- Pull request review comment event: 140
- Create event: 1
Last Year
- Release event: 1
- Delete event: 1
- Pull request event: 42
- Issues event: 36
- Issue comment event: 18
- Push event: 34
- Pull request review event: 99
- Pull request review comment event: 140
- Create event: 1
Committers metadata
Last synced: 10 days ago
Total Commits: 1,878
Total Committers: 32
Avg Commits per committer: 58.688
Development Distribution Score (DDS): 0.817
Commits in past year: 376
Committers in past year: 9
Avg Commits per committer in past year: 41.778
Development Distribution Score (DDS) in past year: 0.707
| Name | Commits | |
|---|---|---|
| Jared Thomas | j****8@g****m | 344 |
| kbrunik | k****k@g****m | 255 |
| elenya-grant | 1****t | 170 |
| dguittet | d****t@n****v | 148 |
| John Jasa | j****1@g****m | 132 |
| Evan | E****k@n****v | 129 |
| bayc | c****y@g****m | 108 |
| jmartin4 | j****n@n****v | 106 |
| Aaron Barker | b****9@g****m | 103 |
| RHammond2 | 1****2 | 85 |
| Cameron Irmas | c****s@p****m | 51 |
| Masha | m****a@n****v | 45 |
| nriccobo | N****o@n****v | 32 |
| Genevieve Starke | G****e@n****v | 29 |
| Cory Frontin | c****n@n****v | 28 |
| WHamilt2 | w****n@n****v | 24 |
| King | j****g@n****v | 18 |
| Matthew Boyd | m****d@g****m | 17 |
| PJ Stanley | a****y@n****v | 13 |
| Bhaskar | p****r@n****v | 9 |
| svijaysh | s****h@n****v | 6 |
| Jamie | J****e@n****v | 6 |
| AbhineetGupta | a****a@n****v | 5 |
| Dakota Sky Ramos | 8****s | 3 |
| jlcox119 | j****x@m****u | 3 |
| Kiefer | c****r@n****v | 3 |
| Caitlyn E. Clark, PhD | c****k@n****v | 1 |
| Charles Kiefer | 1****4 | 1 |
| Jamie | j****e@g****m | 1 |
| King | j****i@j****v | 1 |
| and 2 more... | ||
Committer domains:
- nrel.gov: 16
- .nrel.gov: 1
- jannoni-31697s.nrel.gov: 1
- mines.edu: 1
Issue and Pull Request metadata
Last synced: 5 days ago
Total issues: 3
Total pull requests: 17
Average time to close issues: N/A
Average time to close pull requests: 15 days
Total issue authors: 2
Total pull request authors: 6
Average comments per issue: 0.33
Average comments per pull request: 0.24
Merged pull request: 4
Bot issues: 0
Bot pull requests: 0
Past year issues: 3
Past year pull requests: 17
Past year average time to close issues: N/A
Past year average time to close pull requests: 15 days
Past year issue authors: 2
Past year pull request authors: 6
Past year average comments per issue: 0.33
Past year average comments per pull request: 0.24
Past year merged pull request: 4
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- jaredthomas68 (2)
- elenya-grant (1)
Top Pull Request Authors
- elenya-grant (8)
- RHammond2 (5)
- johnjasa (1)
- jmartin4u (1)
- jaredthomas68 (1)
- kbrunik (1)
Top Issue Labels
- enhancement (1)
Top Pull Request Labels
- ready for review (13)
- code cleanup (5)
- enhancement (4)
- framework (3)
- finance (2)
- geoh2 (2)
- in progress (1)
- ammonia (1)
- dispatch (1)
Dependencies
- actions/checkout v3 composite
- actions/setup-python v3 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- pypa/gh-action-pypi-publish release/v1 composite
- actions/checkout v4 composite
- actions/setup-python v5 composite
- pypa/gh-action-pypi-publish release/v1 composite
- CoolProp *
- Cython *
- HOPP >=3.0
- NREL-PySAM ==4.2.0
- Pillow *
- Plotly *
- Pyomo >=6.1.2
- attrs *
- diskcache *
- fastkml *
- floris *
- future *
- global_land_mask *
- humpday *
- hybridbosse *
- lcoe *
- lxml *
- matplotlib *
- multiprocessing-on-dill *
- nevergrad *
- numpy *
- numpy-financial *
- openmdao [all]
- openpyxl *
- optuna *
- orbit-nrel >=1.1
- pandas >=2.0.3
- pint *
- plotly *
- pvmismatch *
- pyDOE2 *
- pymoo *
- pyproj *
- pysolar *
- pysot *
- python-dotenv *
- python-rapidjson *
- pytz *
- rainflow *
- requests *
- scikit-learn *
- scikit-optimize *
- scipy *
- setuptools *
- shapely *
- timezonefinder *
- urllib3 *
- utm *
- glpk
- pip
- python 3.11
- actions/checkout v4 composite
- actions/setup-python v5 composite
- pre-commit/action v3.0.1 composite
Score: 8.528330935826693