Skip to content

Commit fbb92ef

Browse files
RHammond2elenya-grantkbrunikjohnjasajaredthomas68
authored
Release v0.6 (#517)
* added wind turbine export tools * added docstrings * updated for bugfix in turbine models library * pesky inits * correct location comments * allow electrolyzer refurb schedule to work with prefix matching in tech name for electrolyzer instead or requiring an exact match * NumPy Version Update (#422) * numpy fix wip * Updating for numpy release * Updates for numpy * numpy fixes * changelog * revert ci change --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * renamed write_readable_yaml and minor update to dict_to_yaml formatting to handle NoneTypes * added doc page for turbine model library preprocessing * WOMBAT Version Update (#425) * update test values for wombat version bump * update unit test * Rename capacity input and output of PV model to not include units (#427) * renamed solar capacity inputs and outputs to not have units in name * change to name to system_capacity_X --------- Co-authored-by: kbrunik <kbrunik@gmail.com> * Iron: Standalone Iron Reduction and EAF Models (#409) * added in-progress refactored iron winning models * updated natural gas dri performance model * updated docs in ng iron performance model * updated iron cost model * updated coefficient paths for rosner iron plant models * updated example 21 and fixed bugs that were found * minor updates to dri cost and perf models * added basic tests for new dri models * removed notes from rosner dri test * double checked water costs and unit conversions and cleaned up some small things * renamed ng iron reduction models and configs * renamed ng iron dri files * updated iron example tech config * added h2 dri cost and performance models * added h2 dri models to supported models * update test values for wombat version bump * update unit test * update docstrings * update feedstocks to be per ton pig iron * refactored DRI performance and cost models to share baseclass * updated electricity to not double count * added test for performance with limited feedstock availability * eaf wip * steel tests wip * undo align * minor update on handling negative exponents in steel eaf cost model * added carbon and lime to pipe * update rosner eaf test * draft update to iron example * updated iron example to include steel eaf * updated doc page and changelog * added small test for example 21 * Fix run_iron.py to actually compare old and new * Fixing unit conversion issues * Fixing water-related test values * propagate unit fixes to EAF models * fix integration test * fix comment --------- Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> * fixed units in h2 storage cost model and updated test values (#429) * Iron: Updated Ore Transport Model (#408) * updated iron transport to be compatible with updated iron mine * updated iron transport tests * updated h2i to handle new transport method * new transport pathways. HUZZAH * fix old workflow * updated mine feedstock units in iron example tech config * Fixing run script to compare old and new * minor cleanups to plant config and updated changelog * docstring clean up --------- Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> * moved base config classes to model baseclasses file * GeoH2: Surface Processing (#405) * update performance and cost models * small mods * fix spelling * modify outputs to fit h2i framework * integrated finance * remove old test value * add cost tests * change from well_lifetime to plant_life * use cepci and cpi in mathur model * documentation * Simple surface fit * Fitting h2 out flow * doe running * Generating decision view * Using log fits * Some processing curves working, some not * Surface model complete, not debugged * Removing old csv * Surface model integrated * Sensitivity analysis * Small plot changes * PR Cleanup * Fixing notebook and adding tests * Adding wellhead gas to stimulated model * Fixing ipynb * Writing more documentation * Apply suggestions from code review Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Refactoring the ASPEN surface modeling files * Minor refactoring to curve fit setup * pr feedback * minor updates to load_coeffs and refit_coeffs * big refactor on refit_coeffs function * minor refactoring in AspenGeoH2 models * moved geoh2 integration tests and added initial geoh2 unit tests * fixed unit tets and fixed bug in refit coeff * removed some commented out code * reformatted accessing values in geoh2 tests * fix precommit * Fixing surface plotting * small changes * Fixing test --------- Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> * Minor docs typo * Baseclass for Caching Functionality (#424) * added cache baseclass and implemented in hopp wrapper --------- Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Docstring cleanup * updated import error in geoh2 baseclass * Added FLORIS wind plant model (#372) * added floris wind model * added in wind resource tools * added test for preprocessing turbine tools with floris --------- Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Remove duplicate files (#446) * removed example 13 and updated test_framework test to use example 7 * removed unused floris files from example 2 and 12 * removed unused floris turbine file from Example 25 * removed ex 13 test from test_all_examples * removed duplicated floris files for osw 15 MW * removed duplicated floris_input_lbw_6MW and updated filepaths in example 2 and 12 * removed duplicate default_fin_config for examples 9 and 17 * removed duplicate default_fin_config files in example 3 and updated paths * updated example 3, 12, and 25 to use resource files in example 2 * Replace HOPP with FLORIS Wrapper in Example 17 and Example 9 (#448) * updated example 17 to use floris wrapper instead of hopp * updated example 9 with oae finance * turned on caching for the updated examples * Added start time, end time, and dt to resource data outputs (#438) * added method to add string representations of start and end time of resource data to resource data output dictionary --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Minor refactor to profast tools org (#450) * Start example 05 feasible (#452) * Updated example to be simpler * Updated test values * Fixed updated test * fixed typo in solar resource doc page (#455) * Removing defunct tank class (#457) * Removing defunct tank baseclass * Removing defunct tank baseclass * Add missing doc figure (#458) * Added missing image for docs * Updated image * Replace HOPP Examples that use PVWatts and PySAM Windpower with H2I Wrappers (#449) * updated example 03 hydrogenation doc to use PySAM wind model * added wind resource file for example 3 hydrogenation doc * updated example 3 hydrogenation to use h2i models * removed commented out hopp in example file --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Replace battery in HOPP with battery in H2I (5 examples) (#451) * updated example 1, tests still failing * updated example 1 and example 2 to use h2i battery * updated example 09_co2/direct_ocean_capture * updated example 12 * removed commented out code from hopp configs * fixed failing test --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Replace HOPP with H2I models in 5 examples (#461) * removed commented out code from ex 17 * updated example 1 to use pvwatts and floris * fixed wind costs in example 1 * updated example 2 * added subtests to example 1 and changed turbine file for example 1 * added more subtests for example 1 * updated test values for example 2 * updated test values for example 2 * added 6 MW turbine * updated example 12 and its tests * removed unused srw wind resource files * removed old floris turbine model file and updated example 1 tests * updated example 9 * other cleanups and updated other tests that used example 1 * updated to prevent failing tests * Add csv post process for time series variables (#440) * Add csv post process for time series variables * Rename and move to postprocesss folder * Clean up function file * Fis ruff formatting * added alternative approach to saving timeseries data * added docstrings and comments to new methods * Add column renaming ability * Add alternative varibale name capability * bugfix in set_recorders * added timeseries saving to example 2 and removed post_process * Fix ruff issue, delete old code * Sort import statements * Unsort import statements * Add line * added basic tests for saving timeseries results * Add test for alternative column names and adjust alternative column name logic * fix formatting * update test name * Add unit and alternative name test * updated CHANGELOG * renamed new files and updated import statements * Minor comment updates * minor updates based on feedback * Add to docs * Update Ex 2 and docs * minor updates to doc page for formatting * updated test since merged in develop * Added doc content to address review feedback --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Minor: Updated postprocess test to set the demand profile if running example 2 (#466) * updated postprocess test to set the demand profile if running example 2 * replaced hopp with combiner in example 2 runfile * OpenMETEO Historical Solar Resource Model (#459) * replaced empty compute method in openmeteo_wind * added openmeteo solar model * added integration test of openmeteo solar with pvwatts * added openmeteo solar to supported models * added handling if resource data is downloaded from web * added check if albedo is NaNs * added doc pages for openmeteo solar * fixed failing test * Enable multiple site functionality (#434) * first pass at enabling multisites * added site models * integrate usage of site models * minor update to resource to tech connection logic * minor update to resource to tech connection logic fixed * updated plant schema and load_plant_yaml * updated example input files with unused site inputs * updated example 15 and bugfix for site_groups in connect_technolgoies * added example for new functionality * fixed failing test * removed site boundary component * added wind resource file for new example * updated new example and added integration test * minor refactoring and reorganizing * renamed site_groups to sites * updated example 1 and 2 plant configs * updated example plant configs * removed compatibility with previous site definition * added doc strings to new methods in H2IntegrateModel * added doc pages and fixed failing tests * updated starting wind site to prevent API download error in new example * bugfix in sitebasecomponent and updated setup for test_iron_transport * expanded example 26 and added subtests * updated wind turbine preprocessing tool tests for changes to ex 26 * updated example name * Minor edits to doc file * updated doc page and added more comments to new and updated examples * Minor doc formatting changes --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> * Updating docs with pre-commit info (#472) * Updating docs with pre-commit info * Apply suggestions from code review * Make entry uniform --------- Co-authored-by: John Jasa <john.jasa@nrel.gov> * Enhancement: Update `pyproject.toml` (#471) * remove ignore rules for nonexistent files * upgrade linting/formatting settings and unused packages * update changelog * rerun linting * remove floris restriction * Recreate iron mapping functionality (#413) * refactor of iron mapping functionality, need to update docs * correcting references to local file paths, updated save file logic and supplemented in code comments * Correcting default argument behavior and adding utilities.find_file() use * refactored code with GeospatialMapConfig class, added doc strings, functionalized repeat code" * running pre-commit hooks * updating bool values for default behavior * Adding examples/26_iron_map * correcting doc strings for GeospatialMapConfig * updating README.md and environment.yml with necessary conda install commands for geopandas and contextily * Updating ore and shipping prices to $/kg * update examples/26_iron_map/run_iron.py with correct units and explicit call out of colorbar_limits * add colorbar_limits attribute to GeospatialMapConfig, added helper function to auto set the colorbar and colormap limits if None provided, passing plt.Normalize object to both the colormap and colorbar objects so both are normalized to the same range * correcting example_ore_prices.csv * Updating doc strings, refactored some logic to make it more readable in mapping.py * added test_26_iron_map_example() in test_all_examples.py * updated pyproject.toml with geopandas and contextily in [.examples], corrected environment.yaml and readme.md accordingly * Adding docs/user_guide docs page for iron mapping functionality * updating docs/_toc.yml to include new docs page * resolving conflicts for merge * updated CHANGELOG.md * Update docs/_toc.yml correcting typo Co-authored-by: John Jasa <john.jasa@nrel.gov> * resolving merge on CHANGELOG.md * Updating files paths to use ROOT_DIR and EXAMPLE_DIR, removed extra shipping_coords.csv, renamed from 26_iron to 27_iron to avoid conflict * correcting type in filepaths * updating pyproject.toml and ci.yml for failing test * force git tracking of cases.csv for use in pytest to avoid having to run iron_map model to produce cases.sql * removing commented code from test_27_iron_map_example() * updating map_preferences default value = None, removing excess inline code documentation * simplifying extra step to convert results geodataframes to web marcator projection * simplified setting of vmin and vmax * removed unnecessary check for save_plot_fpath as Path object * removing uncessary tuple brackets around string checks * updating multiline string comments for traceback legibility * simplifying fig,ax,base_layer_gdf object check * simplifying validate_gdfs_are_same_crs() * simplifying auto_detect_lat_long_columns() logic * updating colorbar_limits definition and attrs validation * attempt to resolve failed CI test * updating example driver_config.yaml run_parallel = False * Update examples/27_iron_map/run_iron.py committing Jonathans updates Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> * Update examples/27_iron_map/run_iron.py Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> * Update examples/27_iron_map/run_iron.py Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> * Update examples/27_iron_map/run_iron.py Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> * correcting pre-commit errors * updating colorbar_limits typing and validators to accept integers * correcting GeospatialMapconfig instantiation * updating docs md * adding install guidance to docs md * adding install guidance to docs md * adding try except block for geopandas and contextily imports * updating run_iron.py comments and adding dpi argument for saving plots * correcting failed test * adding save_plot_dpi argument to run_iron.py * minor updates to mapping.py, added unit tests for mapping helper functions * minor updates to mapping.py, added unit tests for mapping helper functions * updating to examples 28 * adding example 28 output cases.csv for tests * Minor linting updates * Minor doc update --------- Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: John Jasa <john.jasa@nrel.gov> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> * Docs: Convert notebooks to scripts and executable markdown (#464) * replace docs notebooks with executable markdown for simple diffs * add notebook conversion commentary * update changelog * update gitignore for notebook output * add _autosummary to gitignore * replace the example notebook with basic script and move the demo to the docs * update changelog * update markdown formatting * near complete revamp of run_csv_doe.ipynb * get doe example working * replace notebook with Python script * update bad import * update gitignore for DOE driver configs * run example from top * replace sizing notebook with executable markdown, and get it running * add sphinx flag to ensure failed executable cells cause a build error * remove cases.sql parent directory output data * convert notebook to script, stripping much of the narrative * update changelog * add \ in front of $ to avoid latex in markdown * update docs example for updated example * Updated literal lincludes for yamls in docs --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Load resource data from a folder without subdirectories of the resource type (#462) * added functionality so resource files dont have to be loaded from a folder with a subdir named as the resource type * added warning to resource baseclass and updated warning filters in electrolyzer models * Simplified resource error handling --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Fix: MIssing dependencies for local test runners (#478) * fix missing deps for gis packages in tests * update changelog * Fix: Update pytest version pinning for archival of `pytest-subtests` (#483) * remove now deprecated pytest-subtests * update changelog * update indentation * Simplify debugging of configuration errors during setup (#479) * add additional class name input to for enhanced logging * update calling of all config classes to include calling clas name * add tests for BaseConfig.from_dict * update changelog --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Make verification of openmeteo resource download a configurable parameter (#482) * added verify_download bool to openmeteo resource config classes * typo fix --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Standardize performance model outputs (#463) * added draft of performance model baseclass to set outputs * updated wind models for standardized outputs * minor cleanup to wind pysam * minor cleanup to floris outputs * updated outputs of hydroplant * updated solar pv models for standardized outputs * updated solar resource integration tests with updated solar model outputs * added fraction_of_year_simulated attribute to performance baseclass * updated tests for turbine preprocessing tools * fixed variable naming in test_all_examples for wind and solar * started updating electrolyzer model outputs * minor bugfix to test_sql_timeseries_to_csv for example 2 * fixed save_case_timeseries_as_csv * update to sql_to_csv function just in case * added attribute check in PerformanceModelBaseClass * typo bugfix in refurb period calc in electrolyzer model * added test for solar performance baseclass * added solar test to check that all outputs are set in parent class * commented out unused variables in new solar test * generalized solar unit test so it can be easily used for other components * updated natural gas plant * started updating co2 models * updated grid model * updated asu model * updated grid tests * updated desal model * updated co2 models and tests * updated newest steel models * started updating methanol models but not tested * made it so ResizablePerformanceModelBaseClass inherits PerformanceModelBaseClass * updated electrolyzer model and ammonia synloop model * updated simple ammonia model * updated hopp wrapper * updated steel.py * updated iron mine and dri models * updated geoh2 models * updated battery * added todo comments to storage models * added unit tests to check that outputs are populated * working on updating combiners and h2imodel * updated electrolyzer so test values dont change and other bugfixes so examples run * updated how_to_set_up_an_analysis.md * removed init file from new hydro power test folder * updated remaining failing tests * updated example 28 and iron_wrapper * updated capacity factor strings in run_size_modes files * removed commented out outputs * updated changelog * removed duplicate inheritance of PerformanceModelBaseClass in electrolyzer performance baseclass * updated pysam battery outputs * updated annual outputs to properly account for fraction of year simulated * moved commodity defn to initialize * updates based on reviewer feedback --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Enhancement: Convert `supported_models` to enforce actual class names (#468) * replace resource model naming conventions and first third of converter models * fix broken import * replce hopp shorthand with class name * iron -> IronComponent * update iron mine models * update iron plant * update martin iron model * replace rosner models * convert ng/h2 EAF models * convert reverse osmosis desal * convert ammonia syn loop models * convert steel converter models * update smr methonal models * update co2 methanol converters * update direct ocean capture converters * update OAE converters * update geoh2 models * update ng converters * cable -> CablePerformanceModel * Revert "cable -> CablePerformanceModel" This reverts commit 522a2e3. * replace summers * update pysam battery storage model * update storage auto sizing * update cavern storage * update mchtol and pipe storage * update atb battery * update generic storage models * fix import * update controller model references * convert dispatch model names * convert grid model names * replace ProFastComp naming * fix misapplied hopp name change * convert combiner, splitter and transport performance model names * update iron transport cost component model naming * replce feedstock naming, and update feedstock model check * reinstate subsystem naming conventions * update changelog * update gitignore for more examples outputs * fix bad merge conflict resolutions for mult-site examples * fix new examples * update new iron example and remove duplicate key * update supported models docs about naming conventions * add test for supported models matching name enforcement * update ammonia model names * update changelog --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * updated gitignore (#495) * Fix/floris (#499) * add timezone to floris example * Ard integration for wind farm combined performance and cost model (#312) * working on ard integration * wip ard integration * fix syntax * wip: ard integration needs full year wind data * add wind resource with api capability * update type for resource_config option * move ard tests into a new subfolder * wip ard integration stuck at needing time-series * add test for ard * wip debuggin ard integration * update ard example for some refactor * add resource request * inputs for example * remove jared's attempt at wind resource integration * wip: add ard example * get ard example working * wip: debugging tests * update docs and changelog * include ard in pyproject.toml dependencies * include ard in tech overview * install ard from PyPI * remove duplicate test. update docs * update naming in ard example * Minor docstring and Ard edits * wip: converting to use h2i resource management for wind * working through pre-commit * apple silicon install instructions wip * update ard barnch to work with new develop branch * cleaning up * clean up example and test values for Ard * more cleanup * set verify back to False for OpenMeteo solar api call * update documentation * include solar file for ard example * add ard unit tests * adjust test value units to reduce the number of relevant significant figures * add visualizations to ard example * update test tolerances * correct NREL ref to NLR * move ard example solar file to resource_files/solar * add ard dummy cost model tests and specify n2 filenames in ard example * update example with a number * update paths * update supported model naming and work on performance model base class compatibility * wip updating ard performance model compatibility * update ard integration to be compatible with new required performance model oututs * doc update and small reorg * update finance and control model names * include OpenMeteo solar api in supported models and minor test updates * move commodity and units in ard to initialize method * correct aep calculation --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> * Expose cost numbers for generic storage model (#503) * Minor fixes and added cost inputs to custom electrolyzer cost model (#511) * updated limiting_input shape for ammonia synloop * added cost inputs for custom electrolyzer cost model * fixed and added units to generic storage cost model cost inputs * allow None type unit specification in driver config and switch design… (#514) * allow None type unit specification in driver config and switch design variable units to None in Ard example 29 * update changelog * Make Ard an optional dependency (#515) * added ability to run H2I if ard isnt installed * update dependency stack for optional ard * update error messages for Ard imports * update changelog to reflect optional Ard * update environment.yml --------- Co-authored-by: Hammond, Rob <13874373+RHammond2@users.noreply.github.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> * Maintenance: Update CI Workflows (#500) * update actions and python versions for testing and remove gis * update pre-commit for PRs and pushes to main/dev and use python 3.13 * use latest actions/checkout * update python for pypi publishing runners * update python in docs * remove docs testing now that we have RTD builds * remove flake8 in place of pre-commit on PRs * remove gh pages since RTD exists * update for python 3.13 max--not 3.14 * reenable pytest settings * add sort of working file cleanup fixture * convert feedstock to pytest * spacing * Revert "update for python 3.13 max--not 3.14" This reverts commit af923a0. * xRevert "reenable pytest settings" This reverts commit ea87275. * update for python 3.13 max--not 3.14 * remove erroneously committed changes * remove hopp develop branch installation * update installation instructions and markdown formatting --------- Co-authored-by: John Jasa <johnjasa11@gmail.com> * Update changelog ahead of release (#516) * Updating changelog * Grouped changelog entries * bump version for release --------- Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com> Co-authored-by: kbrunik <kbrunik@gmail.com> Co-authored-by: John Jasa <johnjasa11@gmail.com> Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com> Co-authored-by: jmartin4 <jonathan.martin@nrel.gov> Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Genevieve Starke <genevieve.starke@nrel.gov> Co-authored-by: genevievestarke <103534902+genevievestarke@users.noreply.github.com> Co-authored-by: John Jasa <john.jasa@nrel.gov> Co-authored-by: Dakota Sky Ramos <85905407+dakotaramos@users.noreply.github.com> Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com>
2 parents d51a3cd + 4dd6e81 commit fbb92ef

420 files changed

Lines changed: 142428 additions & 211659 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ jobs:
1313
runs-on: ubuntu-latest
1414
strategy:
1515
matrix:
16-
python-version: ["3.11", "3.12"]
16+
python-version: ["3.11", "3.13"]
1717
optional: [false]
1818
include:
1919
- python-version: "3.11"
2020
optional: true
2121

2222
steps:
23-
- uses: actions/checkout@v3
23+
- uses: actions/checkout@v6
2424
- name: Set up Python ${{ matrix.python-version }}
25-
uses: actions/setup-python@v3
25+
uses: actions/setup-python@v6
2626
with:
2727
python-version: ${{ matrix.python-version }}
2828
- name: Install dependencies
@@ -31,7 +31,6 @@ jobs:
3131
run: |
3232
sudo apt-get update && sudo apt-get install -y libglpk-dev glpk-utils coinor-cbc
3333
python -m pip install --upgrade pip
34-
pip install git+https://github.com/NREL/HOPP@develop
3534
if [ "${{ matrix.optional }}" = "true" ]; then
3635
pip install ".[develop]"
3736
pip install git+https://github.com/NREL/MarineCarbonManagement.git
@@ -44,8 +43,3 @@ jobs:
4443
- name: Run tests
4544
run: |
4645
pytest .
47-
- name: Lint with flake8
48-
run: |
49-
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
50-
pip install flake8
51-
flake8 . --count --exit-zero --statistics --ignore=E501

.github/workflows/ci_docs.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.github/workflows/gh_pages.yml

Lines changed: 0 additions & 52 deletions
This file was deleted.

.github/workflows/pre-commit.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
name: pre-commit
22

33
on:
4-
pull_request:
54
push:
6-
branches: [main]
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main, develop]
78

89
jobs:
910
pre-commit:
1011
runs-on: ubuntu-latest
1112
steps:
12-
- uses: actions/checkout@v4
13+
- uses: actions/checkout@v6
1314
- name: Set up Python
14-
uses: actions/setup-python@v5
15+
uses: actions/setup-python@v6
1516
with:
16-
python-version: 3.9
17+
python-version: 3.13
1718
- name: Run pre-commit
1819
uses: pre-commit/action@v3.0.1

.github/workflows/publish_to_pypi.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ jobs:
1414
permissions:
1515
id-token: write
1616
steps:
17-
- uses: actions/checkout@v4
17+
- uses: actions/checkout@v6
1818
- name: Set up Python
19-
uses: actions/setup-python@v5
19+
uses: actions/setup-python@v6
2020
with:
21-
python-version: 3.9
21+
python-version: 3.13
2222
- name: Build package
2323
run: |
2424
python -m pip install --upgrade pip

.github/workflows/publish_to_test_pypi.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ jobs:
1515
permissions:
1616
id-token: write
1717
steps:
18-
- uses: actions/checkout@v4
18+
- uses: actions/checkout@v6
1919
- name: Set up Python
20-
uses: actions/setup-python@v5
20+
uses: actions/setup-python@v6
2121
with:
22-
python-version: 3.9
22+
python-version: 3.13
2323
- name: Build package
2424
run: |
2525
python -m pip install --upgrade pip

.gitignore

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,19 +117,29 @@ ENV/
117117
*.db-wal
118118
*n2.html
119119

120-
# H2Integrate structure specific
120+
# H2Integrate test, documentation, and examples outputs
121121
tests/h2integrate/data/*
122122
tests/h2integrate/output.txt
123123
tests/h2integrate/test_hydrogen/data/*
124124
tests/h2integrate/test_hydrogen/output.txt
125125
*speed_dir_data.csv
126126
examples/h2integrate/*/data
127+
examples/**/*data/
127128
examples/h2integrate/*/figures
129+
examples/*/*_output_dir/
130+
examples/*/*.sqlite
131+
examples/*/*_new.*
132+
examples/*/*[0-9].*
133+
*wind_electrolyzer/
128134
tests/h2integrate/reports/
129135
tests/h2integrate/test_hydrogen/output/
130136
**/run_*_out/
137+
**/*_run/
131138
*_out/
132139
**/test_*_out/
140+
**/wind_electrolyzer/*
141+
docs/misc_resources/wind_electrolyzer/
142+
docs/_autosummary
133143

134144
output*
135145
snopt_history.txt
@@ -147,3 +157,6 @@ reports/*
147157
# Ignore wind and solar resource data files
148158
resource_files/wind/*
149159
resource_files/solar/*
160+
161+
# Ignore library files
162+
library/*

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,52 @@
11
# Changelog
22

3+
## 0.6 [February 10, 2026]
4+
5+
### New Features and Technology Models
6+
7+
- Added standalone iron DRI and steel EAF performance and cost models [PR 409](https://github.com/NatLabRockies/H2Integrate/pull/409)
8+
- Add geologic hydrogen surface processing converter [PR 405](https://github.com/NatLabRockies/H2Integrate/pull/405)
9+
- Added [Ard](https://github.com/NLRWindSystems/Ard) as an optional combined performance and cost model [PR 481](https://github.com/NatLabRockies/H2Integrate/pull/481)
10+
- Added ability to plot multi-layer geospatial point heat map and simple straight line transport routes with GeoPandas and Contextily [PR 413](https://github.com/NatLabRockies/H2Integrate/pull/413)
11+
12+
### Improvements and Refactoring
13+
14+
- Added `PerformanceModelBaseClass` and standardized outputs of converter performance models [PR 463](https://github.com/NatLabRockies/H2Integrate/pull/463)
15+
- Updates all models in `supported_models` to map between a string version of the class name and
16+
the class itself. As such, all examples and documentation have been updated to properly instruct
17+
users to the change in model configuration naming conventions. The naming convention is also
18+
enforced by a newly added test to ensure adherence. [PR 468](https://github.com/NatLabRockies/H2Integrate/pull/468)
19+
- Adds `additional_cls_name` kwarg to `BaseConfig.from_dict()` to allow for configuration errors buried in parent or child classes to provide which model had the offending misconfiguration for simpler user debugging. [PR 479](https://github.com/NatLabRockies/H2Integrate/pull/479)
20+
- Added capability to have transport models that require user input parameters [PR 408](https://github.com/NatLabRockies/H2Integrate/pull/408)
21+
- Add baseclass for caching functionality [PR 422](https://github.com/NatLabRockies/H2Integrate/pull/422)
22+
- Minor reorg for profast tools [PR 450](https://github.com/NatLabRockies/H2Integrate/pull/450)
23+
- Added postprocessing function to save timeseries [PR 440](https://github.com/NatLabRockies/H2Integrate/pull/440)
24+
- Removed hydrogen tank cost and performance models that were unused [PR 457](https://github.com/NatLabRockies/H2Integrate/pull/457)
25+
- Allow design variables to be specified with None type units [PR 514](https://github.com/NatLabRockies/H2Integrate/pull/514)
26+
27+
### Documentation, Examples, and Miscellaneous
28+
29+
- Updates models for NumPy version 2.4.0 [PR 422](https://github.com/NatLabRockies/H2Integrate/pull/422)
30+
- Update test values for WOMBAT update to 0.13.0 [PR 425](https://github.com/NatLabRockies/H2Integrate/pull/425)
31+
- Converted the documentation Jupyter notebooks to markdown files to simplify output diffs [PR 464](https://github.com/NatLabRockies/H2Integrate/pull/464)
32+
- Updated the contributing documentation to clarify what developers should expect for including
33+
executable content in the documentation. [PR 464](https://github.com/NatLabRockies/H2Integrate/pull/464)
34+
- Converted the example notebooks to documentation examples, and maintain a basic working example
35+
in the examples folder [PR 464](https://github.com/NatLabRockies/H2Integrate/pull/464):
36+
- `examples/14_wind_hydrogen_dispatch/hydrogren_dispatch.ipynb` -> `docs/control/controller_demonstrations.md`
37+
- `examples/20_solar_electrolyzer_doe/run_csv_doe.ipynb` content added to `docs/user_guide/design_of_experiments_in_h2i.md`
38+
- `examples/25_sizing_modes/run_size_modes.ipynb` -> `docs/user_guide/run_size_modes.md`
39+
- `.gitignore` is updated to be more inclusive of example output data.
40+
- Documentation builds will now fail if a demonstration errors during execution that is not marked as an allowed error, ensuring previously silent errors get caught. [PR 464](https://github.com/NatLabRockies/H2Integrate/pull/464)
41+
- `pyproject.toml` is tidied up after moving past Python 3.9 and early H2I limitations. [PR 471](https://github.com/NatLabRockies/H2Integrate/pull/471)
42+
- Cleans up unnecessary ignore rules in the ruff settings.
43+
- Removes duplicate dependency listings, and alphabetizes for legibility with NLR packages
44+
listed at the bottom.
45+
- Remove unused dependencies.
46+
- Fixes typos for skipped folders.
47+
- Fixes missing dependencies for `gis` modifier used in new iron mapping tests.
48+
- Remove `pytest-subtests` as it's incorporated into pytest as of v9, and is an archived project.
49+
350
## 0.5.1 [December 18, 2025]
451

552
- Fixed tagged version number for release

README.md

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ For more context about H2Integrate and to see analyses that have been performed
5656
PDFs are available in the linked titles.
5757

5858
### Nationwide techno-economic analysis of clean hydrogen production powered by a hybrid renewable energy plant for over 50,000 locations in the United States.
59+
5960
The levelized cost of hydrogen is calculated for varying technology costs, and tax credits to
6061
explore cost sensitivities independent of plant design, performance, and site selection. Our
6162
findings suggest that strategies for cost reduction include selecting sites with abundant wind
@@ -65,6 +66,7 @@ assets to maximize the hybrid plant capacity factor.
6566
Grant, E., et al. "[Hybrid power plant design for low-carbon hydrogen in the United States.](https://iopscience.iop.org/article/10.1088/1742-6596/2767/8/082019/pdf)" Journal of Physics: Conference Series. Vol. 2767. No. 8. IOP Publishing, 2024.
6667

6768
### 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.
69+
6870
Conducting a regional techno-economic analysis at four U.S. coastal sites, the study evaluates two
6971
energy transmission configurations and examines associated costs for the years 2025, 2030, and 2035.
7072
The results highlight that locations using fixed-bottom technology may achieve cost-competitive
@@ -74,6 +76,7 @@ federal policy incentives.
7476
Brunik, K., et al. "[Potential for large-scale deployment of offshore wind-to-hydrogen systems in the United States.](https://iopscience.iop.org/article/10.1088/1742-6596/2767/6/062017/pdf)" Journal of Physics: Conference Series. Vol. 2767. No. 6. IOP Publishing, 2024.
7577

7678
### 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.
79+
7780
Modeling results suggest that the levelized cost of storage is highly spatially heterogeneous, with
7881
minor impact on the cost of H2 in the Midwest, and potentially significant impact in areas with
7982
emerging H2 economies such as Central California and the Southeast. While TOL/MCH may be the
@@ -84,6 +87,7 @@ concerns.
8487
Breunig, Hanna, et al. "[Hydrogen Storage Materials Could Meet Requirements for GW-Scale Seasonal Storage and Green Steel.](https://assets-eu.researchsquare.com/files/rs-4326648/v1_covered_338a5071-b74b-4ecd-9d2a-859e8d988b5c.pdf?c=1716199726)" (2024).
8588

8689
### DOE Hydrogen Program review presentation of H2Integrate
90+
8791
King, J. and Hammond, S. "[Integrated Modeling, TEA, and Reference Design for Renewable Hydrogen to Green Steel and Ammonia - GreenHEART](https://www.hydrogen.energy.gov/docs/hydrogenprogramlibraries/pdfs/review24/sdi001_king_2024_o.pdf?sfvrsn=a800ca84_3)" (2024).
8892

8993
## Software requirements
@@ -97,6 +101,11 @@ King, J. and Hammond, S. "[Integrated Modeling, TEA, and Reference Design for Re
97101
pip install h2integrate
98102
```
99103

104+
> [!NOTE]
105+
> If using the Ard models `h2integrate[ard]`, see the source installation instructions (item 3) for
106+
> creating a conda environment with WISDEM installed through conda, not pip as it can cause issues
107+
> on some machines.
108+
100109
## Installing from Source
101110

102111
### Easiest approach (recommended)
@@ -113,29 +122,28 @@ pip install h2integrate
113122
cd H2Integrate
114123
```
115124

116-
3. Create a conda environment and install H2Integrate and all its dependencies
125+
3. Create a conda environment and install H2Integrate and all its dependencies. Please read the
126+
following two notes about modified installation steps.
127+
128+
1. If on a Unix machine, uncomment line 8 in `environment.yml` to install Cbc. Windows
129+
users will need to manually install from <https://github.com/coin-or/Cbc>.
130+
2. If you plan to use Ard, please uncomment line 9 in `environment.yml` to ensure WISDEM (an Ard
131+
dependency) is installed from conda to avoid installation issues with some systems.
117132

118133
```bash
119134
conda env create -f environment.yml
120135
```
121136

122-
4. Install Cbc.
123-
1. If using a Unix machine (not Windows), install a final dependency
124-
125-
```bash
126-
conda install -y -c conda-forge coin-or-cbc=2.10.8
127-
```
128-
129-
2. Windows users will have to manually install Cbc: https://github.com/coin-or/Cbc
130-
131137
An additional step can be added if additional dependencies are required, or you plan to use this
132138
environment for development work.
133139

134140
- Pass `-e` for an editable developer install
135141
- Use one of the extra flags as needed:
136-
- `examples`: allows you to use the Jupyter Notebooks
137-
- `develop`: adds developer and documentation tools
138-
- `all` simplifies adding all the dependencies
142+
- `gis`: adds the iron mapping tools.
143+
- `ard`: adds the Ard-based wind models.
144+
- `develop`: adds developer and documentation tools, plus optional analysis modifiers `gis` and `ard`.
145+
- `examples`: allows you to use the Jupyter Notebooks and all examples (includes `ard` and `gis`).
146+
- `all` simplifies adding all the dependencies.
139147

140148
This looks like the following for a developer installation:
141149

docs/CONTRIBUTING.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ GitHub repo. Feel free to tackle any existing bugs or enhancement ideas by submi
2222
[Google style](https://www.sphinx-doc.org/en/master/usage/extensions/example_google.html).
2323
* When you start working on a pull request, start by creating a new branch pointing at the latest
2424
commit on [main](https://github.com/NREL/H2Integrate).
25+
* Code formatting is enforced using pre-commit hooks and is required for any code pushed up to the repository. The pre-commit package is included in the developer install of the repository. The pre-commit hooks can be installed by running
26+
```bash
27+
pre-commit install
28+
```
29+
in the repository directory. This will automatically run the pre-commit formatting hooks when code changes are committed. If you are having difficulty committing code after it has been reformatted by these hooks, try using the commit command
30+
```bash
31+
git commit -am "<Your commit message here>"
32+
```
33+
which will re-add the reformatted files to the commit.
2534
* The H2Integrate copyright policy is detailed in the [`LICENSE`](https://github.com/NREL/H2Integrate/blob/main/LICENSE).
2635

2736
## Documentation
@@ -46,6 +55,25 @@ If the browser appears to be out of date from what you expected to be built, ple
4655
3. Delete the `_build` folder and rebuild the docs
4756
```
4857

58+
### Writing Executable Content
59+
60+
All executable content, such as Jupyter notebooks, should be converted to the executable markdown
61+
format used by Jupyter Book. For users that prefer to develop examples in Jupyter notebooks, then
62+
Jupytext (separate installation required) can be used to convert their work using the following
63+
command. For more details, please see their documentation:
64+
https://jupytext.readthedocs.io/en/latest/using-cli.html.
65+
66+
```bash
67+
jupytext notebook.ipynb --to myst
68+
```
69+
70+
Similarly, any documentation example that users wish to interact with can be converted to a notebook
71+
using the following command.
72+
73+
```bash
74+
jupytext notebook.md --to .ipynb
75+
```
76+
4977
## Tests
5078

5179
The test suite can be run using `pytest tests/h2integrate`. Individual test files can be run by specifying them:

0 commit comments

Comments
 (0)