Skip to content

Replace HOPP with H2I models in 5 examples#461

Merged
johnjasa merged 15 commits intoNatLabRockies:developfrom
elenya-grant:replace_hopp_gen
Jan 21, 2026
Merged

Replace HOPP with H2I models in 5 examples#461
johnjasa merged 15 commits intoNatLabRockies:developfrom
elenya-grant:replace_hopp_gen

Conversation

@elenya-grant
Copy link
Collaborator

@elenya-grant elenya-grant commented Jan 16, 2026

Replace HOPP with H2I models in 5 examples

Replaced HOPP used for wind and/or solar generation with H2I models in 5 examples (same examples that had the battery replaced in PR #451). These examples include:

  • 01_onshore_steel_mn: replaced HOPP for wind and solar
  • 02_texas_ammonia: replaced HOPP for wind and solar
  • 09_co2/direct_ocean_capture: still using HOPP for wave, using H2I to run Floris
  • 09_co2/ocean_alkalinity_enhancement: replaced HOPP for wind
  • 12_ammonia_synloop: replaced HOPP for wind and solar

Also removed unused wind resource files!

Section 1: Type of Contribution

  • Feature Enhancement
    • Framework
    • New Model
    • Updated Model
    • Tools/Utilities
    • Other (please describe): example clean up
  • Bug Fix
  • Documentation Update
  • CI Changes
  • Other (please describe):

Section 2: Draft PR Checklist

  • Open draft PR
  • Describe the feature that will be added
  • Fill out TODO list steps
  • Describe requested feedback from reviewers on draft PR
  • Complete Section 7: New Model Checklist (if applicable)

TODO:

  • Step 1
  • Step 2

Type of Reviewer Feedback Requested (on Draft PR)

Structural feedback:

Implementation feedback:

Other feedback:

Section 3: General PR Checklist

  • PR description thoroughly describes the new feature, bug fix, etc.
  • [-] Added tests for new functionality or bug fixes
  • Tests pass (If not, and this is expected, please elaborate in the Section 6: Test Results)
  • Documentation
    • Docstrings are up-to-date
    • Related docs/ files are up-to-date, or added when necessary
    • Documentation has been rebuilt successfully
    • Examples have been updated (if applicable)
  • [-] CHANGELOG.md has been updated to describe the changes made in this PR

Section 3: Related Issues

#447

Section 4: Impacted Areas of the Software

Section 4.1: New Files

  • resource_files/wind/47.5233_-92.5366_2013_wtk_v2_60min_local_tz.csv: wind resource file for Example 1
  • library/floris_turbine_NREL_6MW_170.yaml: floris turbine file for Example 1, 2, and 12
  • resource_files/solar/47.5_-93.0_psmv3_60_2013.csv: solar resource file for Example 1

Section 4.2: Modified Files

All examples had similar modifications. The summary of the changes per example are summarized as follows:

  • tech_config.yaml: removed HOPP, added in wind (and solar for Examples 1, 2 and 12), added in combiner (except examples/09_co2/ocean_alkalinity_enhancement)
  • plant_config.yaml: added resource_to_tech_connections, added resources under site, added in necessary technology_interconnections, updated tech_to_dispatch_connections as necessary, replaced hopp with relevant techs in finance_subgroups.

Other modifications:

  • h2integrate/core/test/test_utilities.py::test_get_path and h2integrate/core/test/test_utilities.py::test_find_file updated to use example 09_co2/direct_ocean_capture instead of 01_onshore_steel_mn
  • h2integrate/finances/test/test_finances.py::TestProFastComp::test_lcoe_with_selected_technologies: replaced hopp with wind
  • h2integrate/finances/test/test_finances.py::TestProFastComp::test_modified_lcoe_calc: replaced hopp with wind
  • moved: examples/09_co2/tech_inputs/default_fin_config.yaml
    to examples/09_co2/direct_ocean_capture/tech_inputs/default_fin_config.yaml
  • examples/test/test_all_examples.py: Please refer to Section 6 for details on why test values were changed
  • examples/25_sizing_modes/tech_inputs/hopp_config_tx.yaml: updated to use resource data in Example 11

Section 4.3: Removed Files

  • examples/01_onshore_steel_mn
    • examples/01_onshore_steel_mn/weather/solar/47.5_-93.0_psmv3_60_2013.csv
    • examples/01_onshore_steel_mn/weather/wind/47.5_-93.0_windtoolkit_2013_60min_100m_120m.srw
    • examples/01_onshore_steel_mn/tech_inputs/floris_input_lbw_6MW.yaml
    • examples/01_onshore_steel_mn/tech_inputs/default_fin_config.yaml
    • examples/01_onshore_steel_mn/tech_inputs/hopp_config.yaml
  • examples/02_texas_ammonia
    • examples/02_texas_ammonia/tech_inputs/weather/solar/32.31714_-100.18_psmv3_60_2013.csv
    • examples/02_texas_ammonia/tech_inputs/weather/wind/32.31714_-100.18_windtoolkit_2013_60min_100m_120m.srw
    • examples/02_texas_ammonia/tech_inputs/hopp_config_tx.yaml
  • examples/09_co2/direct_ocean_capture
    • examples/09_co2/direct_ocean_capture/weather_data/43.807_-124.816_windtoolkit_2010_60min_140m_160m.srw
  • examples/09_co2/ocean_alkalinity_enhancement
    • examples/09_co2/ocean_alkalinity_enhancement/tech_inputs/hopp_config.yaml
    • examples/09_co2/ocean_alkalinity_enhancement/weather_data/43.807_-124.816_windtoolkit_2010_60min_140m_160m.srw
  • examples/09_co2:
    • examples/09_co2/tech_inputs/floris/floris_input_osw_15MW.yaml
    • examples/09_co2/tech_inputs/floris/osw_15MW.yaml
  • examples/12_ammonia_synloop
    • examples/12_ammonia_synloop/tech_inputs/hopp_config_tx.yaml
  • resource_files/wind/27.18624_-96.9516_windtoolkit_2013_60min_160m_200m.srw
  • resource_files/wind/34.22_-102.75_windtoolkit_2013_60min_100m_120m.srw
  • resource_files/wind/35.2018863_-101.945027_windtoolkit_2012_60min_80m_100m.srw

Section 5: Additional Supporting Information

Section 6: Test Results, if applicable

  • examples/test/test_all_examples.py::test_steel_example: test for 01_onshore_steel_mn
    • Added subtests for LCOE, total energy production, and electricity finance subgroup CapEx and OpEx, and hydrogen storage capacity and charge rate. The total CapEx and OpEx of the electricity finance subgroup did not change. There were subtest failures for total adjusted CapEx and OpEx of the hydrogen finance subgroup, LCOS, and LCOH. These subtests likely failed for 2 reasons:
      • increase in LCOE (from 78.5 USD/MWh to 90.8 USD/MWh) which is due to a reduced annual energy production (6827 GWh/year to 5901 GWh/year). The reduction in annual energy production could be due to changes in wind layout, resource data, etc.
      • increased hydrogen storage capacity and reduce hydrogen storage charge rate. The increased hydrogen storage capacity will increase hydrogen storage costs, which will increase LCOH and therefore also increase LCOS
  • examples/test/test_all_examples.py::test_simple_ammonia_example: test for 02_texas_ammonia
    • subfails on H2 Storage CapEx and OpEx (both decreased), LCOH and price of hydrogen (both increased). The hydrogen storage capacity decreased while the annual hydrogen production likely decreased (or stack life decreased, increasing replacement costs), resulting in a net increase in LCOH. These would likely be due to changes in electricity generation profiles (due to changes in wind layout or resource data).
  • examples/test/test_all_examples.py::test_wind_wave_doc_example: test for 09_co2/direct_ocean_capture:
    • Subfails on LCOE and LCOC, both decreased. Likely due to changes in electricity generation profiles (due to changes in wind layout or resource data).
  • examples/test/test_all_examples.py::test_wind_wave_oae_example: test for 09_co2/ocean_alkalinity_enhancement
    • Subfails on LCOE and LCOC, both decreased. Likely due to changes in electricity generation profiles (due to changes in wind layout or resource data).
  • examples/test/test_all_examples.py::test_ammonia_synloop_example: test for 12_ammonia_synloop
  • subfails for H2 Storage CapEx and OpEx, Ammonia OpEx, total adjusted CapEx, total adjusted OpEx, LCOH (increased), LCOA (increased). Similar reasoning as Example 1 and 2.

Section 7 (Optional): New Model Checklist

  • Model Structure:
    • Follows established naming conventions outlined in docs/developer_guide/coding_guidelines.md
    • Used attrs class to define the Config to load in attributes for the model
      • If applicable: inherit from BaseConfig or CostModelBaseConfig
    • Added: initialize() method, setup() method, compute() method
      • If applicable: inherit from CostModelBaseClass
  • Integration: Model has been properly integrated into H2Integrate
    • Added to supported_models.py
    • If a new commodity_type is added, update create_financial_model in h2integrate_model.py
  • Tests: Unit tests have been added for the new model
    • Pytest-style unit tests
    • Unit tests are in a "test" folder within the folder a new model was added to
    • If applicable add integration tests
  • Example: If applicable, a working example demonstrating the new model has been created
    • Input file comments
    • Run file comments
    • Example has been tested and runs successfully in test_all_examples.py
  • Documentation:
    • Write docstrings using the Google style
    • Model added to the main models list in docs/user_guide/model_overview.md
      • Model documentation page added to the appropriate docs/ section
      • <model_name>.md is added to the _toc.yml

@elenya-grant elenya-grant added code cleanup ready for review This PR is ready for input from folks labels Jan 16, 2026
Copy link
Collaborator

@johnjasa johnjasa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for these changes, Elenya! I have no blocking suggestions.

My only note is that this moves us further away from the "reference" values from the Green Steel paper we compared to for examples 1 and 2. That being said, I don't think it's a reason to not simplify these examples and we've also already discussed reorganizing the examples ordering so those aren't first. No changes needed, really just acknowledging a non-trivial change in some of the results that we don't need to rectify.

@johnjasa johnjasa merged commit 18a6d3f into NatLabRockies:develop Jan 21, 2026
5 checks passed
RHammond2 added a commit that referenced this pull request Feb 10, 2026
* 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

code cleanup ready for review This PR is ready for input from folks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants