NatLabRockies / NatLabRockies/H2Integrate

Planned steps for refactoring existing dispatch and storage models

Open
#564 1 comment 0 reactions 1 assignee View on GitHub

@elenya-grant is already working on this.

Since Mar 4, 2026.

Dominant language
Python
Stars
26
Forks
44
Avg merge
3d 22h
Merged PRs (30d)
16

Description

Steps towards refactoring storage dispatch

The over-all goal of this work is to allow for all storage performance models to be usable with all control strategies (pyomo or open-loop). The supplementary goals are:

  • sync the open-loop storage controllers with the pyomo controllers
  • create a storage model performance baseclass so that the storage model is compatible with open-loop controllers and pyomo controllers
  • Ensure that all storage and control models can have their charge rate and capacity optimized

Some of the steps of this are detailed across many issues, but I will summarize them here

  • 1. Initial clean-up PySAM battery model so that charge rate and capacity can be optimized (PR #557)

  • 2. Introduce a generic storage model that is compatible with the Pyomo controllers (Issue #441)

    • PR #571
  • 3. Split out some of the logic in the PyomoControllerBaseClass that is only used for the HeuristicLoadFollowingController but not needed for the OptimizedDispatchController (Issue #443)

    • PR #587
  • 4. Refactor the open-loop controllers (and their corresponding storage performance models) to minimize the use of pass-through components and sync-up the open-loop controllers (and their corresponding storage performance models) to better align with the Pyomo controller outputs. The issues that this encompasses are:

    • #566
    • #498
    • PR #589 (dropped)
    • PR #608
    • PR #612
  • 5. Integrate the use of the open-loop controllers into the PySAM battery and generic storage model created in Step 2. (this is a baby step towards Step 7)

    • #567
    • PR #613
    • [/] PR #615 (follow-on bugfix to 613)
  • 6. Integrate the use of the Pyomo controllers into the StorageAutoSizingModel (this is a baby step towards Step 7)

    • #568
  • 7. Introduce a storage performance model baseclass and update the pysam battery and generic storage model to inherit this. This depends on steps 1, 2, and 4 being complete.

    • #521
  • 8. Update the StorageAutoSizingModel and SimpleGenericStorage (or equivalent/whichever is relevant at this point) to inherit the storage model baseclass created in Step 7

  • 9. At this point, all controllers should be compatible with all storage performance models. In one of the above steps, its expected that there may be some updates to existing baseclasses and/or base configuration classes to ensure that storage design parameters have the same naming convention across controllers and storage performance models.

  • Clean-ups

    • #569
    • #570
    • Rename max_charge_fraction to max_soc_fraction, rename min_charge_fraction to min_soc_fraction, and rename init_charge_fraction to init_soc_fraction. (PR #613)
    • [/] Open-loop storage baseclass (PR #619)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.