Skip to content

Adding an electrical thermal energy storage model and size optimizer - #810

Open
bayc wants to merge 34 commits into
NatLabRockies:developfrom
bayc:feature/etes
Open

Adding an electrical thermal energy storage model and size optimizer#810
bayc wants to merge 34 commits into
NatLabRockies:developfrom
bayc:feature/etes

Conversation

@bayc

@bayc bayc commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Adding an electric Thermal Energy Storage Model

This PR adds and electric thermal energy storage (ETES) model, along with code to optimize the size of the ETES.

Review on implementation and structure would be very appreciated.

The docs will be updated after the first round of review is completed.

The included example is not meant to be final, but meant to showcase the performance of the ETES as as standalone technology. This example will be replaced with an integrated example showcasing a full heat component system in a future PR.

Section 1: Type of Contribution

  • Feature Enhancement
    • Framework
    • New Model
    • Updated Model
    • Tools/Utilities
    • Other (please describe):
  • 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
    • At least one complete sentence has been provided to describe the changes made in this PR
    • After the above, a hyperlink has been provided to the PR using the following format:
      "A complete thought. [PR XYZ]((https://github.com/NatLabRockies/H2Integrate/pull/XYZ)", where
      XYZ should be replaced with the actual number.

Section 4: Related Issues

Section 5: Impacted Areas of the Software

Section 5.1: New Files

  • storage/heat/etes.py
    • The ETES model.
  • storage/heat/etes_cost_model.py
    • The ETES cost model.
  • storage/heat/etes_milp.py
    • A sizing routine for the ETES.
  • storage/heat/test/test_etes.py
    • Test for the ETES model.
  • storage/heat/test/test_etes_cost_model.py
    • Test for the ETES cost model.
  • storage/heat/test/test_etes_milp.py
    • Test for the ETES MILP sizing routinel.

Section 5.2: Modified Files

  • path/to/file.extension
    • method1: What and why something was changed in one sentence or less.

Section 6: Additional Supporting Information

Section 7: Test Results, if applicable

Section 8 (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
  • 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
    • Run generate_class_hierarchy.py to update the class hierarchy diagram in docs/developer_guide/class_structure.md

@bayc
bayc marked this pull request as draft July 22, 2026 16:34
@bayc
bayc changed the base branch from main to develop July 22, 2026 16:34
@bayc bayc added enhancement New feature or request in progress labels Jul 22, 2026
@bayc
bayc marked this pull request as ready for review August 6, 2026 18:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request in progress

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants