Releases: NatLabRockies/H2Integrate
v0.6
What's Changed
- Backmerge main into develop by @johnjasa in #419
- Remove unnecessary init files by @kbrunik in #420
- Ex14 and prefix matching patch by @jaredthomas68 in #421
- NumPy Version Update by @kbrunik in #422
- WOMBAT Version Update by @kbrunik in #425
- Rename capacity input and output of PV model to not include units by @elenya-grant in #427
- Iron: Standalone Iron Reduction and EAF Models by @elenya-grant in #409
- Bug fix: units in H2 storage cost models by @elenya-grant in #429
- Iron: Updated Ore Transport Model by @elenya-grant in #408
- GeoH2: Surface Processing by @jmartin4u in #405
- Preprocessing Tool for Turbine Model Files by @elenya-grant in #379
- Baseclass for Caching Functionality by @elenya-grant in #424
- WANT FEEDBACK: Move base config classes in utilities.py to model_baseclasses.py by @elenya-grant in #431
- Added FLORIS wind plant model by @elenya-grant in #372
- Remove duplicate files by @elenya-grant in #446
- Replace HOPP with FLORIS Wrapper in Example 17 and Example 9 by @elenya-grant in #448
- Added start time, end time, and dt to resource data outputs by @elenya-grant in #438
- Minor refactor to profast tools org by @johnjasa in #450
- Start example 05 feasible by @johnjasa in #452
- Typo fix in solar doc page by @elenya-grant in #455
- Removing defunct tank class by @johnjasa in #457
- Add missing doc figure by @johnjasa in #458
- Replace HOPP Examples that use PVWatts and PySAM Windpower with H2I Wrappers by @elenya-grant in #449
- Replace battery in HOPP with battery in H2I (5 examples) by @elenya-grant in #451
- Replace HOPP with H2I models in 5 examples by @elenya-grant in #461
- Add csv post process for time series variables by @genevievestarke in #440
- Minor: Updated postprocess test to set the demand profile if running example 2 by @elenya-grant in #466
- OpenMETEO Historical Solar Resource Model by @elenya-grant in #459
- Enable multiple site functionality by @elenya-grant in #434
- Updating docs with pre-commit info by @genevievestarke in #472
- Enhancement: Update
pyproject.tomlby @RHammond2 in #471 - Recreate iron mapping functionality by @dakotaramos in #413
- Docs: Convert notebooks to scripts and executable markdown by @RHammond2 in #464
- Load resource data from a folder without subdirectories of the resource type by @elenya-grant in #462
- Fix: MIssing dependencies for local test runners by @RHammond2 in #478
- Fix: Update pytest version pinning for archival of
pytest-subtestsby @RHammond2 in #483 - Simplify debugging of configuration errors during setup by @RHammond2 in #479
- Make verification of openmeteo resource download a configurable parameter by @elenya-grant in #482
- Standardize performance model outputs by @elenya-grant in #463
- Enhancement: Convert
supported_modelsto enforce actual class names by @RHammond2 in #468 - added
libraryfolder to .gitignore file by @elenya-grant in #495 - Fix/floris by @jaredthomas68 in #499
- Ard integration for wind farm combined performance and cost model by @jaredthomas68 in #312
- Expose more generic storage inputs to OpenMDAO for easier parameter sweeps by @johnjasa in #503
- Minor fixes and added cost inputs to custom electrolyzer cost model by @elenya-grant in #511
- allow None type unit specification in driver config and switch design… by @jaredthomas68 in #514
- Make Ard an optional dependency by @elenya-grant in #515
- Maintenance: Update CI Workflows by @RHammond2 in #500
- Update changelog ahead of release by @johnjasa in #516
- Release v0.6 by @RHammond2 in #517
New Contributors
- @genevievestarke made their first contribution in #440
Full Changelog: v0.5.1...v0.6
v0.5.1
v0.5.0
This release greatly expands the modeling capabilities of H2I by building upon the dispatch framework, introducing grid connections, adding additional supported resources, expanding the financial calculations, and many other improvements.
New Features and Technology Models
- Added PySAM Windpower performance model to simulate wind PR 306
- Added
simple_grid_layout.pyfor wind plant layout modeling, can model square or rectangular layouts PR 306 - Added ability to visualize the wind plant layout for PySAM Windpower model using
post_process(show_plots=True)PR 306 - Added Wind Annual Technology Baseline cost model
atb_wind_cost.pyPR 306 - Added resource models to make solar resource API calls to the NREL Developer GOES dataset PR 279
- Added solar resource models for Meteosat Prime Meridian and Himawari datasets available through NSRDB PR 377
- Added wind resource model for API calls to Open-Meteo archive PR 332
- Added PySAM battery model as a storage technology performance model PR 211
- Added framework to run heuristic load following dispatch for storage technologies PR 211
- Added storage auto-sizing performance model based on storage sizing calculations that existed in the coupled hydrogen storage performance and cost model PR 324
- Added grid converter performance and cost model which can be used to buy, sell, or buy and sell electricity to/from the grid PR 340
- Add feature for natural gas plant converter to take electricity demand as an input and added system capacity as an input PR 334
- Added standalone iron mine performance and cost model PR 364
- Add open-loop load demand controllers:
DemandOpenLoopConverterControllerandFlexibleDemandOpenLoopConverterControllerPR 328
Improvements and Refactoring
- Updated inputs for the
ATBBatteryCostModelandDemandOpenLoopControllerso storage capacity and charge rate can be design variables PR 290 - Split out cost models from coupled hydrogen storage performance and cost model PR 324
- Created
ProFastBase, a base class for theProFastLCOandProFastNPVmodels PR 310 - Added
ProFastNPV, a finance model using ProFAST to calculate NPV of the commodity PR 310 - Moved
compute()fromProFastBasetoProFastLCOPR 310 - Added
NumpyFinancialNPV, a finance model that uses NumPy Financial npv to calculate the npv from the cash flows PR 310 - Added capability for user-defined finance models in the H2Integrate framework PR 247
- Enabled dynamic plant component sizing modes through the resizeable model class
ResizeablePerformanceModelBaseClassPR 198 - Move geologic hydrogen models into specific geoh2 subsurface converters PR 367
- Updated generic combiner to accept any number of inflow streams instead of just 2 PR 406
- Allow multiple instances of the same electricity producing technologies using prefix-based matching PR 397
- Allow multiple instances of custom models in the same hybrid system PR 397
- Removed a large portion of the old GreenHEART code that was no longer being used PR 384
- Moved high-level tests to the appropriate directory and removed defunct tests PR 412
Configuration and Optimization
- Added
tools/run_cases.pywith tools to run differenttech_configcases from a spreadsheet, with new docs page to describe: docs/user_guide/how_to_run_several_cases_in_sequence.md PR 242 - Updated setting up recorder in
PoseOptimizationPR 291 - Added
create_om_reportsoption to driver config to enable/disable OpenMDAO reports (N2 diagrams, etc.) PR 308 - Added design of experiment functionality PR 314
- Added "csvgen" as generator type for design of experiments PR 314
- Added
load_yaml()function and flexibility to input a config dictionary to H2IntegrateModel rather than a filepath PR 313 - Removed
boundariesfrom the necessary keys inplant_configvalidation PR 361 - Added ability for latitude and longitude to be design variables in design sweep PR 336
Documentation, Examples, and Miscellaneous
- Added an optimized offshore methanol production case to examples/03_methanol/co2_hydrogenation_doc PR 137
- Improved the readability of the postprocessing printout PR 361
- Improved readability of the postprocessing printout by simplifying numerical representation, especially for years PR 378
- Fixed stoichiometry mistake in ammonia synloop PR 363
v0.4.0
This release introduces significant new technology models and framework capabilities for system design and optimization, alongside major refactoring and user experience improvements.
New Features and Technology Models
- Added capability for user-defined technologies in the H2Integrate framework, allowing for custom models to be integrated into the system PR 128.
- Added a check for if a custom model's name clashes with an existing model name in the H2Integrate framework, raising an error if it does PR 128.
- Added geologic hydrogen (GeoH2) converter and examples PR 135.
- Added methanol production base class PR 137.
- Added steam methane reforming methanol production technology PR 137.
- Added CO2 hydrogenation methanol production technology PR 137.
- Added run of river hydro plant model, an example, and a documentation page PR 145.
- Added marine carbon capture base class PR 165.
- Added direct ocean capture technology PR 165.
- Added ammonia synloop, partially addressing Issue 169 PR 177.
- Added simple air separation unit (ASU) converter to model nitrogen production PR 179.
- Added rule-based storage system control capability (e.g., for battery, H2, CO2) PR 195.
- Added ocean alkalinity enhancement technology model PR 212.
- Added
natural_gas_performanceandnatural_gas_costmodels, allowing for natural gas power plant modeling PR 221. - Added wind resource model, API baseclasses, updated examples, and documentation PR 245.
- Added generic storage model, useful for battery, hydrogen, CO2, or other resource storage PR 248.
Improvements and Refactoring
- Removed the
to_organizedirectory PR 138. - Updated the naming scheme throughout the framework so resources produced always have
_outand resources consumed always have_inin their names PR 148. - Added ability to export ProFAST object to yaml file in
ProFastCompPR 207. - Refactored
ProFastCompand put in a new file (h2integrate/core/profast_financial.py). Added flexibility to allow users to specify different financial models PR 218. - Revamped the feedstocks technology group to allow for more precise modeling of feedstock supply chains, including capacity constraints and feedstock amount consumed PR 221.
- Made
pipeandcablesubstance-agnostic rather than hard-coded forhydrogenandelectricityPR 241. - Updated option to pass variables in technology interconnections to allow for different variable names from source to destination in the format
[source_tech, dest_tech, (source_tech_variable, dest_tech_variable)]PR 236. - Split out the electrolyzer cost models
basicandsingliticofor clarity PR 147. - Refactored the ammonia production model to use the new H2Integrate framework natively and removed the prior performance and cost functions PR 163.
- Added a new ammonia production model which has nitrogen, hydrogen, and electricity inputs and ammonia output, with performance and cost functions PR 163.
- Added WOMBAT electrolyzer O&M model PR 168.
- Changed electrolyzer capacity to be specified as
n_clustersrather thanratingin electrolyzer performance model config PR 194. - Changed electrolyzer capacity to be an input to the electrolyzer cost models rather than pulled from the cost model config PR 194.
- Added cost model base class and removed
plant_config['finance_parameters']['discount_years']['tech']. Cost year is now an optional input (tech_config[tech]['model_inputs']['cost_parameters']['cost_year']) and a discrete output PR 199. - Added two ATB-compatible solar-PV cost models PR 193.
- Update PySAM solar performance model to allow for more user-configurability PR 187.
- Added
"custom_electrolyzer_cost"model, an electrolyzer cost model that allows for user-defined CapEx and OpEx values PR 227. - Added variable O&M to
CostModelBaseClassand integrated into finance-related models PR 235. - Improved
h2integrate/transporters/power_combiner.pyand enabled usage of multiple electricity producing technologies PR 232.
Configuration and Optimization
- Updated finance parameter organization naming in
plant_configPR 218. - Changed finance handling to use
finance_subgroupsandfinance_groupsdefined in theplant_configrather than previousfinancial_groupsin thetech_configandtechnologies_to_include_in_metricsinplant_configPR 240. - Allow users to specify the technologies to include in the metrics calculations in the plant configuration file PR 240.
- Added option for user to provide ProFAST parameters in finance parameters PR 240.
- Changed
plant_configatb_yearentry tofinancial_analysis_start_yearPR 190. - Added
simulationsection underplant_config['plant']that has information such as number of timesteps in the simulation, time step interval in seconds, simulation start time, and time zone PR 219. - Moved
overwrite_fin_valuesto HOPP PR 164. - Enable optimization with HOPP technology ratings using
recreate_hopp_config_for_optimizationPR 164. - Made caching in the HOPP wrapper optional PR 164.
- Added more available constraints from the HOPP wrapper useful for design optimizations PR 164.
Documentation, Examples, and Miscellaneous
- Added an example of a user-defined technology in the
examplesdirectory, demonstrating an extremely simple paper mill model PR 128. - Added example for running with HOPP as the only technology in the H2Integrate system PR 164.
- Added an optimization example with a wind plant and electrolyzer to showcase how to define design variables, constraints, and objective functions PR 126.
- Expanded docs to include a new section on modifying config dicts after model instantiation PR 151.
- Added
*_out/to.gitignoreto avoid clutter PR 191. - Bump min Python version and removed unnecessary packages from
pyproject.tomlPR 150. - Bugfix: only run
pyxdsmwhen there are connections in the system PR 201.
v0.3.0
What's changed
This release features a large-scale framework overhaul as we increase H2Integrate's modularity and capabilities.
We introduce a new core framework that uses OpenMDAO to handle the data-passing, model debugging, and optimization capabilities used in H2Integrate.
This release is missing some features previously available in H2Integrate; please use v0.2.0 for the prior framework with additional features.
Future efforts and releases will expand the capabilities of H2Integrate.
v0.2 Release
What's Changed
- Save output by @jaredthomas68 in #81
- Figure label naming by @jaredthomas68 in #85
- Expanding GreenHEART docs to include how to add a new tech by @johnjasa in #89
- Remove reference plants from examples by @kbrunik in #87
- Plots by @jaredthomas68 in #84
- Plots update h2 dispatch by @jaredthomas68 in #95
- LCOH Update and Custom Electrolyzer Costs by @elenya-grant in #79
- Update PEM efficiency to 51.0 kWh/kg from 54.6 kWh/kg by @bayc in #102
- Updates for HOPP v3.2.0, update PySAM version to 6.0+ by @johnjasa in #104
- CRF/WACC/ProFAST Solution by @jaredthomas68 in #105
- Rename legacy GreenHEART to H2Integrate by @bayc in #106
- Pinned orbit version to v1.1 by @johnjasa in #108
- Adding iron capabilities to GreenHEART by @johnjasa in #90
- v0.2 H2Integrate Release by @RHammond2 in #113
- v0.2 Release Take 2 by @RHammond2 in #114
New Contributors
- @elenya-grant made their first contribution in #79
Full Changelog: v0.1.4...v0.2
v0.1.4
What's Changed
- Added
CoolProptopyproject.toml - Changed units of
lcoe_realinHOPPComponentfrom "MWh" to "kWh" - Added
pre-commit,ruff, andisortchecks, and CI workflow to ensure these steps aren't
skipped. - Updates steel and ammonia cost years to 2022
- Requires HOPP 3.1.1 or higher and removed support for python 3.9
- Add steel feedstock transport costs (lime, carbon, and iron ore pellets)
- Allow individual debt rate, equity rate, and debt/equity ratio/split for each subsystem
- Add initial docs focused on new GreenHEART development
- New documentation CI pipeline to publish documentation here
that the documentation site will build on each pull request
Full Changelog: v0.1.3...v0.1.4
v0.1.3
What's Changed
- Enhancement: Log CI build environment settings by @RHammond2 in #34
- Remove electrolyzer component by @jaredthomas68 in #33
- Patch: Update ProFAST requirement to PyPI listing by @RHammond2 in #36
- remove unsupported optimization approaches and leftover wisdem refere… by @jaredthomas68 in #37
Full Changelog: v0.1.1...v0.1.3
v0.1.1
v0.1 Release
First public release with GreenHEART as its own package.