NatLabRockies / NatLabRockies/H2Integrate
Planned steps for refactoring existing dispatch and storage models
@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
PyomoControllerBaseClassthat is only used for theHeuristicLoadFollowingControllerbut not needed for theOptimizedDispatchController(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
StorageAutoSizingModelandSimpleGenericStorage(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_fractiontomax_soc_fraction, renamemin_charge_fractiontomin_soc_fraction, and renameinit_charge_fractiontoinit_soc_fraction. (PR #613) - [/] Open-loop storage baseclass (PR #619)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.