Science Score: 59.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 19 DOI reference(s) in README
  • Academic publication links
    Links to: iop.org
  • Committers with academic emails
    1 of 32 committers (3.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.7%) to scientific vocabulary

Keywords from Contributors

openmdao systems-engineering wind wisdem
Last synced: 6 months ago · JSON representation

Repository

Basic Info
Statistics
  • Stars: 12
  • Watchers: 6
  • Forks: 23
  • Open Issues: 95
  • Releases: 6
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License

README.md

H2Integrate: Holistic Hybrids Optimization and Design Tool

PyPI version CI Tests image License

DOI 10.1088/1742-6596/2767/8/082019 DOI 10.1088/1742-6596/2767/6/062017 DOI 10.21203/rs.3.rs-4326648/v1

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.

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

bash pip install h2integrate

Installing from Source

Easiest approach (recommended)

  1. Using Git, navigate to a local target directory and clone repository:

    bash git clone https://github.com/NREL/H2Integrate.git

  2. Navigate to H2Integrate

    bash cd H2Integrate

  3. Create a conda environment and install H2Integrate and all its dependencies

    bash conda env create -f environment.yml

  4. Install Cbc.

    1. If using a Unix machine (not Windows), install a final dependency

      bash conda install -y -c conda-forge coin-or-cbc=2.10.8

    2. Windows users will have to manually install Cbc: https://github.com/coin-or/Cbc

An additional step can be added if additional dependencies are required, or you plan to use this environment for development work.

  • Pass -e for an editable developer install
  • Use one of the extra flags as needed:
    • examples: allows you to use the Jupyter Notebooks
    • develop: adds developer and documentation tools
    • all simplifies adding all the dependencies

This looks like the following for a developer installation:

bash pip install -e ".[all]"

Customizable

  1. Using Git, navigate to a local target directory and clone repository:

    bash git clone https://github.com/NREL/H2Integrate.git

  2. Navigate to H2Integrate

    bash cd H2Integrate

  3. 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):

    bash conda create --name h2integrate python=3.11 -y conda activate h2integrate

  4. Install H2Integrate and its dependencies:

    bash conda install -y -c conda-forge glpk

    Note: Unix users should install Cbc via:

    bash conda install -y -c conda-forge coin-or-cbc=2.10.8

    Windows users will have to manually install Cbc: https://github.com/coin-or/Cbc.

- If you want to just use H2Integrate:

   ```bash
   pip install .
   ```

- If you want to work with the examples:

   ```bash
   pip install ".[examples]"
   ```

- If you also want development dependencies for running tests and building docs:

   ```bash
   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.

   ```bash
   pre-commit install
   ```

   If 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](https://pre-commit.com/),
   [ruff](https://docs.astral.sh/ruff/), or [isort](https://pycqa.github.io/isort/) for more
   information.

- In one step, all dependencies can be installed as:

  ```bash
  pip install -e ".[all]"
  ```
  1. The functions which download resource data require an NREL API key. Obtain a key from:

    https://developer.nrel.gov/signup/

  2. To set up the NREL_API_KEY and NREL_API_EMAIL required for resource downloads, you can create Environment Variables called NREL_API_KEY and NREL_API_EMAIL. Otherwise, you can keep the key in a new file called ".env" in the root directory of this project.

    Create a file ".env" that contains the single line:

    bash NREL_API_KEY=key NREL_API_EMAIL=your.name@email.com

  3. Verify setup by running tests:

    bash pytest

  4. To set up NREL_API_KEY for resource downloads, first refer to section 7 and 8 above. But for the .env file method, the file should go in the working directory of your Python project, e.g. directory from where you run python.

Parallel processing for H2Integrate finite differences and design of experiments

H2Integrate is set up to run in parallel using MPI and PETSc for finite differencing and for design of experiments runs through OpenMDAO. To use this capability you will need to follow the additional installation instruction below:

bash conda install -c conda-forge mpi4py petsc4py

For more details on implementation and installation, reference the documentation for OpenMDAO.

To check that your installation is working, do the following:

bash cd tests/h2integrate/ mpirun -n 2 pytest test_openmdao_mpi.py

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.

Owner

  • Name: National Renewable Energy Laboratory
  • Login: NREL
  • Kind: organization
  • Location: Golden, CO

GitHub Events

Total
  • Create event: 3
  • Issues event: 50
  • Release event: 2
  • Watch event: 5
  • Delete event: 2
  • Issue comment event: 61
  • Push event: 57
  • Pull request review comment event: 220
  • Pull request review event: 216
  • Pull request event: 90
  • Fork event: 2
Last Year
  • Create event: 3
  • Issues event: 50
  • Release event: 2
  • Watch event: 5
  • Delete event: 2
  • Issue comment event: 61
  • Push event: 57
  • Pull request review comment event: 220
  • Pull request review event: 216
  • Pull request event: 90
  • Fork event: 2

Committers

Last synced: 10 months ago

All Time
  • Total Commits: 1,529
  • Total Committers: 32
  • Avg Commits per committer: 47.781
  • Development Distribution Score (DDS): 0.785
Past Year
  • Commits: 273
  • Committers: 9
  • Avg Commits per committer: 30.333
  • Development Distribution Score (DDS): 0.736
Top Committers
Name Email Commits
Jared Thomas j****8@g****m 328
kbrunik k****k@g****m 217
dguittet d****t@n****v 148
Evan E****k@n****v 129
bayc c****y@g****m 108
Aaron Barker b****9@g****m 103
elenya-grant 1****t 78
RHammond2 1****2 72
Cameron Irmas c****s@p****m 51
Masha m****a@n****v 45
John Jasa j****1@g****m 36
nriccobo N****o@n****v 32
Cory Frontin c****n@n****v 28
Genevieve Starke G****e@n****v 26
WHamilt2 w****n@n****v 24
King j****g@n****v 18
Matthew Boyd m****d@g****m 17
jmartin4nrel j****n@n****v 16
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
Kiefer c****r@n****v 3
jlcox119 j****x@m****u 3
Dakota Sky Ramos 8****s 2
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 (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 51
  • Total pull requests: 137
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 7 days
  • Total issue authors: 8
  • Total pull request authors: 8
  • Average comments per issue: 0.35
  • Average comments per pull request: 0.67
  • Merged pull requests: 94
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 51
  • Pull requests: 137
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 7 days
  • Issue authors: 8
  • Pull request authors: 8
  • Average comments per issue: 0.35
  • Average comments per pull request: 0.67
  • Merged pull requests: 94
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • johnjasa (31)
  • elenya-grant (10)
  • kbrunik (3)
  • bayc (2)
  • jmartin4nrel (2)
  • jaredthomas68 (1)
  • ZackTully (1)
  • genevievestarke (1)
Pull Request Authors
  • johnjasa (52)
  • elenya-grant (21)
  • RHammond2 (20)
  • jaredthomas68 (19)
  • jmartin4nrel (16)
  • kbrunik (6)
  • bayc (2)
  • dakotaramos (1)
Top Labels
Issue Labels
h2integrate (4) enhancement (3) ammobia (3) question (2) framework (2) ammonia (2) documentation (2) marine carbon (1) nationwide sweeps (1) high priority (1)
Pull Request Labels
documentation (10) enhancement (7) code cleanup (5) release (5) high priority (4) h2integrate (1) low priority (1) medium priority (1) ammonia (1)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 40 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 0
    (may contain duplicates)
  • Total versions: 14
  • Total maintainers: 3
proxy.golang.org: github.com/nrel/h2integrate
  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
proxy.golang.org: github.com/NREL/H2Integrate
  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago
pypi.org: h2integrate

Holistic Hybrids Optimization and Design Tool

  • Documentation: https://h2integrate.readthedocs.io/
  • License: **Note: The ProFAST model is distributed with H2Integrate but operates under a separate license agreement. Users must agree to the license terms of ProFAST located at `ProFAST/InternalUseTermsForDownloadableSoftware-ProFAST.docx`.** 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.3.0
    published 10 months ago
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 40 Last month
Rankings
Dependent packages count: 9.3%
Average: 31.0%
Dependent repos count: 52.6%
Maintainers (3)
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
.github/workflows/conda_build.yml actions
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 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 pypi