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 23 hours ago
JSON representation

Repository metadata

README.md

H2Integrate: Holistic Hybrids Optimization and Design Tool

PyPI version
CI Tests
image
License
DOI 10.5281/zenodo.17903150

H2Integrate (H2I) is an open-source Python package for hybrid energy systems engineering design and technoeconomic analysis.
It models hybrid systems, especially hybrid energy plants that produce electricity, hydrogen, ammonia, steel, and other products, to perform optimization and scenario analysis.

Installation

The recommended installation method is via pip from PyPI, which will install the latest stable release of H2Integrate and its dependencies:

pip install h2integrate

For installing from source, development setup, and additional installation options, see the full installation instructions.

What H2Integrate Does

H2Integrate is both a hybrid systems engineering design tool and a technoeconomic analysis (TEA) tool. It significantly expands beyond generalized tools by offering:

  • Detailed equipment-level modeling with a wide range of subsystem variation options
  • High-resolution, location-specific resource data for site-dependent performance modeling
  • Cost inputs settable by the user with examples based on the Annual Technology Baseline (ATB)
  • Optimization and scenario analysis to explore design trade-offs across hybrid plant configurations

Available Technologies

H2I includes models for a broad set of energy generation, conversion, and storage technologies.
This is a non-exhaustive list, and the library of available technologies is actively expanding:

  • Electricity generation: solar PV, wind, wave, tidal, natural gas combined cycle (NGCC), natural gas combustion turbines (NGCT), nuclear, grid
  • Hydrogen production: PEM electrolysis, NG-SMR
  • Energy storage: Li-ion batteries, long-duration energy storage (LDES), pumped storage hydropower (PSH)
  • Fuel cells: H2 PEM fuel cells
  • Industrial processes: ammonia synthesis, iron ore reduction, steel production, and more

Getting Started

See the Getting Started guide for an introduction to H2Integrate.
The Examples folder contain Jupyter notebooks, Python scripts, and sample YAML files for common usage scenarios.

Publications

For a full list of publications, see the Publications section in the documentation.
Note: H2Integrate was previously known as GreenHEART, and some publications may refer to it by that name.

Software Citation

If you use H2I or any of its components in your work, please cite this in your publications using the following BibTeX:

@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},
}

Contributing

Interested in improving H2Integrate? Please see the Contributor's Guide 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


GitHub Events

Total
Last Year

Committers metadata

Last synced: 4 days ago

Total Commits: 1,975
Total Committers: 33
Avg Commits per committer: 59.848
Development Distribution Score (DDS): 0.822

Commits in past year: 374
Committers in past year: 9
Avg Commits per committer in past year: 41.556
Development Distribution Score (DDS) in past year: 0.663

Name Email Commits
Jared Thomas j****8@g****m 351
kbrunik k****k@g****m 266
elenya-grant 1****t 204
John Jasa j****1@g****m 157
dguittet d****t@n****v 148
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 100
Cameron Irmas c****s@p****m 51
Masha m****a@n****v 45
Genevieve Starke G****e@n****v 32
nriccobo N****o@n****v 32
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
Jonathan Martin 9****u 2
Caitlyn E. Clark, PhD c****k@n****v 1
Charles Kiefer 1****4 1
Jamie j****e@g****m 1
and 3 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 4 days ago

Total issues: 49
Total pull requests: 55
Average time to close issues: 2 months
Average time to close pull requests: 9 days
Total issue authors: 8
Total pull request authors: 8
Average comments per issue: 0.71
Average comments per pull request: 0.65
Merged pull request: 21
Bot issues: 0
Bot pull requests: 0

Past year issues: 49
Past year pull requests: 55
Past year average time to close issues: 2 months
Past year average time to close pull requests: 9 days
Past year issue authors: 8
Past year pull request authors: 8
Past year average comments per issue: 0.71
Past year average comments per pull request: 0.65
Past year merged pull request: 21
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/natlabrockies/h2integrate

Top Issue Authors

  • johnjasa (14)
  • genevievestarke (12)
  • elenya-grant (10)
  • jaredthomas68 (6)
  • vijay092 (3)
  • kbrunik (2)
  • jmartin4u (1)
  • bayc (1)

Top Pull Request Authors

  • elenya-grant (23)
  • RHammond2 (8)
  • johnjasa (7)
  • kbrunik (6)
  • jaredthomas68 (5)
  • jmartin4u (2)
  • vijay092 (2)
  • genevievestarke (2)

Top Issue Labels

  • enhancement (6)
  • framework (3)
  • in progress (2)
  • iron (2)
  • dispatch (2)
  • finance (1)
  • geoh2 (1)

Top Pull Request Labels

  • ready for review (31)
  • dispatch (8)
  • code cleanup (6)
  • enhancement (6)
  • framework (3)
  • in progress (2)
  • on hold (2)
  • finance (2)
  • geoh2 (2)
  • nationwide sweeps (1)
  • ammonia (1)
  • infrastructure (1)
  • needs modifications (1)
  • documentation (1)

Package metadata

pypi.org: h2integrate

Holistic Hybrids Optimization and Design Tool

  • Homepage:
  • Documentation: https://h2integrate.readthedocs.io/
  • Licenses: BSD 3-Clause License Copyright (c) 2024, Alliance for Sustainable Energy, LLC All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Latest release: 0.8.0 (published about 1 month ago)
  • Last Synced: 2026-05-17T05:00:55.456Z (4 days ago)
  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 444 Last month
  • Rankings:
    • Dependent packages count: 9.338%
    • Average: 30.969%
    • Dependent repos count: 52.6%
  • Maintainers (3)

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/publish_to_pypi.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pypa/gh-action-pypi-publish release/v1 composite
.github/workflows/publish_to_test_pypi.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pypa/gh-action-pypi-publish release/v1 composite
pyproject.toml pypi
  • 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 *
environment.yml conda
  • glpk
  • pip
  • python 3.11
.github/workflows/pre-commit.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pre-commit/action v3.0.1 composite

Score: 14.955652430752062