Skip to content

Conversation

@johnjasa
Copy link
Collaborator

v0.5.0 release

New Features and Technology Models

  • Added PySAM Windpower performance model to simulate wind PR 306
  • Added simple_grid_layout.py for 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.py PR 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: DemandOpenLoopConverterController and FlexibleDemandOpenLoopConverterController PR 328

Improvements and Refactoring

  • Updated inputs for the ATBBatteryCostModel and DemandOpenLoopController so 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 the ProFastLCO and ProFastNPV models PR 310
  • Added ProFastNPV, a finance model using ProFAST to calculate NPV of the commodity PR 310
  • Moved compute() from ProFastBase to ProFastLCO PR 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 ResizeablePerformanceModelBaseClass PR 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.py with tools to run different tech_config cases 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 PoseOptimization PR 291
  • Added create_om_reports option 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 boundaries from the necessary keys in plant_config validation 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

kbrunik and others added 28 commits November 11, 2025 16:34
* pull update ng files

* updated natural gas example, tests and model

* update ng test

* update documentation

* Correctin NG test values

* updated system_capacity to system_capacity_mw

---------

Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
Co-authored-by: John Jasa <johnjasa11@gmail.com>
* Removing the need for boundaries

* WIP: checkpointing potential print changes

* Using rich instead, looks nice

* Using rich instead, looks nice

* Cleaned up printing a bit

* Moved method to function

* Removed extra lines from plant_configs

* Apply suggestions from code review

Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com>

* Fixes based on input

* Added back solar resource after merge

* Added back solar resource after merge

---------

Co-authored-by: Rob Hammond <13874373+RHammond2@users.noreply.github.com>
* Fixing ammonia stoichiometry

* Updating changelog

* Removing size_mode

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* minor fix to profast output naming

* actually fixed output naming and added subtest to check
* split out h2 storage cost models

* updated cost models and made h2 storage auto sizing model

* updated h2 storage cost tests

* updated example 12 and remaining models using old h2 storage

* updated failing tests and removed old h2 storage model from supported models

* moved and updated mch tests

* added tests for mch wrapper but failing

* intermediate change

* updated and added tests for mch storage

* added doc strings for MCH model

* changed h2 storage autosizing and updated example input files

* generalized h2 storage auto sizing

* moved autosizing storage model

* removed h2sam as model option

* added docstrings and minor cleanups to h2_storage_cost

* added docstrings and updated docs

* fixed test_framework failing test

* update h2 storage model names

* added sizing_mode input to h2 cost models

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com>
* added methods to summarize data from sql file

* added recorder_path as attribute to h2i and added sql summarizing to post_process

* updated convert_sql_to_csv_summary to work if run in parallel

* added sbutests to example 20 to check csv summarizing

* minor fixes

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* added library folder for pysam option files

* renamed pysam input files

* updated filenames in examples
* update performance and cost models

* small mods

* 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

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* Switching HB cases

* Getting through to plot

* Fixing hydrogen ratio

* Running plots

* Changing TX site back to default

* Fix plot

* Removing methanol

* Made iron example files, no code to run them

* Creating wrapper

* It runs!

* Fixes to lca

* run_iron reproducing number from old setup

* added more inputs to iron wrapper, changed lcoe to be in USD per MWh

* minor cleanups to tech config and iron wrapper

* added test for baseline case

* added more iron tests and added docstring to IronConfig

* connected taconite pellet input

* added iron ore cost and performance model

* iron ore tests are passing

* cleaned up iron ore tests

* Renaming iron config inputs

* added init file

* added test init file

* added iron electrowinning model

* All iron cases being tested

* rename files

* Added iron to CI

* added iron transport model

* Updated ammonia synloop example

* Reverting changes to 12 example

* Fixes for some examples

* Reverting some HOPP wrapper changes

* updated test value for chicago iron ore transport

* added geopy to dependencies

* eaf wip

* finish testing

* Running iron_mine as example

* Old and new closely matching

* Getting ready to merge

* Reverting example

* Run all cases in example

* Fixing tests

* Fixing om test assertions

* added performance model for martin ore

* added cost model for martin ore

* added test for martin ore cost model

* added the start of some doc strings and comments

* added comments to test

* removed duplicate iron example

* fixed bug that was introduced in output_txt of profast_base

* added standalone iron mine performance models

* another profast bugfix to fix failing tests

* removed added ammonia example files

* removed commented out code and added docstrings

* Comparing old and new mine

* Adding cpi back in to cost_model

* updated handling cost year in martin mine cost model

* updated cost model to handle target dollar years outside of cpi range

* removed duplicate coefficient files

---------

Co-authored-by: jmartin4 <jonathan.martin@nrel.gov>
Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
Co-authored-by: Jonathan Martin <94018654+jmartin4nrel@users.noreply.github.com>
Co-authored-by: kbrunik <kbrunik@gmail.com>
* attempted adding latitude and longitude as inputs

* made example for lat lon sweep

* got sweeping sites to work in example 22

* added test for new example

* added solar resource file for example 22

* added lat and lon to river resource to prevent errors

* added subtest for example 15 on resource filepaths

* added logic on whether or not to change resource location

* added new approach for resolving complex logic to handle edge-cases

* minor updates

* updated openmeteo wind api wrapper to take lat/lon as inputs

* updated doc page and changelog [skip ci]

* Minor changes

* minor changes based on feedback

* updated resource variable to determine whether to update resource data

* updated example 22 run script to write csv summary of sql file

* minor comments added to resource_base

* updated docstring in resource base

* edgecase bugfix in resource_base

* actually fixed edgecase bug

---------

Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com>
Co-authored-by: John Jasa <johnjasa11@gmail.com>
…377)

* added meteosat prime meridian models

* added himawari solar api models

* added himawari tmy dataset

* added tests and new resource files for added new solar resource models

* added pvwatts integration tests with resource

* added new solar resource models to supported_models.py

* added doc pages for new models

* updated changelog

* finished updating doc pages

* renamed file and class for solar api baseclass and updated imports

* Corrected 'himwari' -> 'himawari' throughout

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* added flexible load demand component

* Update h2integrate/core/load_demand.py

clean up ramping constraint flexibility

Co-authored-by: John Jasa <john.jasa@nrel.gov>

* change upper bound on some demand inputs

* Minor changes to flexible demand

* minor change from feedback

* added flexibility constraints as inputs to load demand

* updated recorder

* cherry-pick smash; fix bad merging

* updated load demand inputs and outputs to align with controllers

* removed lines in pose_optimization that arent relevant to this PR

* aligned demand input naming

* updated ex 19 to define demand w load_demand component

* minor change to validator in demand openloop controller

* moved and renamed controllers

* reverted changes to example 19

* added some docstrings to converter openloop controllers

* added some more minor docstrings

* inheritance reorg

* rename files

* move tests

* converter test

* homogenize naming

* docstrings

* docs

* example

* remove unused files

* flexible example

* added unit tests for flexible demand

* minor updates to docs for flexible load

* Fix desc for ramp up

* added rated_commodity_demand as input to flexible demand controller

* docs reorg

* typo

* minor updates to comments and docstrings [skip ci]

* Modifications based on PR feedback

---------

Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
Co-authored-by: John Jasa <john.jasa@nrel.gov>
Co-authored-by: John Jasa <johnjasa11@gmail.com>
* grid models

* Added grid as feedstock

* update examples

* add grid buying converter

* clarify units with parentheses

* Adding singular grid component

* Cleaning up grid files

* Removed unnecessary tests

* add grid to elec producing techs list

* Updated tests due to changes from develop

* added coproduct test and bugfix in profast base

* Minor updates based on PR feedback

* Iterations based on PR feedback

* Updated names in test

* docs wip

* Updated example path

* Added readme for example 23

* docs

* fix tests

* Updates to grid doc

* Updated grid example

* Updating grid example number

* Grid updates based on PR feedback

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
Co-authored-by: Jared Thomas <jaredthomas68@gmail.com>
Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
* geo h2 doc page

* Updated geoh2 docs minorly

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* update PR template

* update based on PR feedback

* PR feedback
* Removing unneeded files and tests

* WIP working through steel

* Removed offshore

* Deleting more old files

* Removed simple unused files

* Moving basic H2 cost

* Removed defunct pressure vessel and pem_control_type

* Removed old tests

* Updated test values

* moved singlitico model

* Removing unused electrolyzer files

* Added back pem master

* Moving PEM model

* Big refactor and removal of hydrogen storage from simulation/technologies

* Shifting more electrolyzer files

* Fixed and noted behavior

* Fixed bug in steel calc config for o2 heat integration

* Moving iron files and adding back singlitico test

* Fixed iron transport

* Reverted steel example test values

* Reverted hydrogen storage test values

* fixing iron paths

* Updates for PR

* Updating based on PR comments

* removed h2 pipe code and tests

* Added back many more docstrings and comments for the hydrogen storage

* fix tests

* Removing defunct code per PR review

* Minor refactoring based on PR feedback

* Added note on primary commodity electricity tech

---------

Co-authored-by: kbrunik <kbrunik@gmail.com>
…oducing techs (#397)

* allow starts with matching and not just exact matching in electricity_producing_techs

* add tests for is_electricity_producer

* add error check that custom models are not created with the same name and different class definitions

* update doc

* Added note on primary commodity electricity tech

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
Removed note about ProFAST model license agreement.
#397 (#411)

Updated changelog to include new features and improvements relevant to PR #397 that were accidentally not push prior to merging.
)

* make generic combiner able to handle as many inflows as desired

* update changelog, docstrings, and combiner test for multiple inflow streams >2

* update docs

* update docs

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
* Attempting standalone pem

* feedstock_size mode working with profiles

* Working all 3 modes

* Added demo notebook

* Typographical changes in ex 14 doc

* Restoring electrolyzer_size_mw_cost name

* Updating example post-merge

* Renaming for smaller PR

* Removing feedstock and product profiles to simplify PR

* Defining sizing modes in electrolyzer

* Getting modes properly named

* Need access to full tech_config

* Example working

* Solving all the way to pf.solve_price in iterative mode

* Notebook updated

* Added iterative mode

* WIP: working on iterative grouping

* Updating tech_configs

* Updated to work in H2I 0.4

* Attempting to get all tests passing

* Tests be passin

* Fixing notebook

* Iterative mode 'working'

* Updates to make iterative mode work

* Minor changes based on chat with Jonathan

* Removing whole tech config

* Updating new example

* Renaming electrolyzer size variable

* COBYLA working with one converter...

* Removing resize_by_tech

* Optimizer running with multiple converters

* Co-optimizing successfully

* Adding capacity factors

* Clarify capacity factors, fix wombat test

* Docs, changelog, docstrings

* Example number change

* Added tests for sizing modes

* PR cleanup

* Attempting JSONDecodeError fix

* Again attempting to fix JSONDecodeError

* Fix JSONDecodeError for real this time

* Fine I'll make separate config files

* Try moving the tests to test_all_examples?

* Revert "Try moving the tests to test_all_examples?"

This reverts commit bf1d7e3.

* Revert "Fine I'll make separate config files"

This reverts commit c032aca.

* Adding solar and wind resource filepaths

* Changes for elenya

* Added require_connection to profast total commodity inputs

* Minor typographical changes to sizing modes docs

* Minor changes to the sizing mode setup()

* Minor changes to the sizing mode setup()

* updated example 22 python script

* Changes for John's review

* Renaming resize_by_flow to flow_used_for_sizing

* Fixed failing finance tests by connecting total commodity produced

* Cleaning up example files

* Accidentally deleted a "t"

* Added IVC for total produced electricity

* Updated example number

* Resolving example name change

* Added back missing files from merge

* Moving size_mode to attr

* Updated size_modes throughout

* Updated ci to run

* Made all config classes kw_only

* Updated tests after kw_only change

* Fixed EAF test

* reverted CI branch change

* Added docstrings to hydrogen utilities

---------

Co-authored-by: John Jasa <johnjasa11@gmail.com>
Co-authored-by: kbrunik <102193481+kbrunik@users.noreply.github.com>
Co-authored-by: elenya-grant <116225007+elenya-grant@users.noreply.github.com>
* Move h2 compressor test

* Moved iron tests

* Removed defunct files in tests

* Moved test all examples

* Removed last test folder at high level

* Reverted rosner cost coeffs

* Updated changelog

* Added back conftest

* Fixed test folder naming

* Added back init file

* Moved test
* Updating changelog for v0.5.0

* Minor changelog modification
@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@johnjasa johnjasa merged commit 8c040e2 into main Dec 18, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants