Converter PLM dispatch#773
Conversation
kbrunik
left a comment
There was a problem hiding this comment.
Looking pretty good! Remarkable how much simpler the code is when you don't have to track state of charge! I know there was already some planned work that still needs to happen, so happy to re-review at that point
A few high-level notes for the PR:
- Be sure to update the changelog
- Add some basic tests to make sure the dispatch is occurring as expected (i.e., the tech is turns off after peak is "managed")
- Write a doc page for the converter PLM
There was a problem hiding this comment.
I'm thinking it might be good to move this file to the resource_files folder at the top level of H2I so that it can be used in this example and 33_peak_load_management.
There was a problem hiding this comment.
or the library folder at the top level of H2I instead?
There was a problem hiding this comment.
I'm thinking it might be good to move this file to the resource_files folder at the top level of H2I so that it can be used in this example and 33_peak_load_management.
There was a problem hiding this comment.
I think it could be good to have both peak load management examples (storage and converter) in the same folder 33_peak_load_management and then have nested folders for each example.
There was a problem hiding this comment.
Let's update name of this file so it's not the same as the storage PLM file.
| @@ -0,0 +1,5 @@ | |||
| name: driver_config | |||
| description: Driver configuration for multivariable streams example | |||
| control_parameters: | ||
| commodity: electricity | ||
| commodity_rate_units: kW | ||
| system_capacity_rate: 1000.0 |
There was a problem hiding this comment.
Remove from control section, example didn't run with it included.
| """ | ||
| Example 33: Peak load management dispatch | ||
|
|
||
| This example demonstrates: |
There was a problem hiding this comment.
Update example description based on fuel cell/converter example.
| @@ -0,0 +1,65 @@ | |||
| name: technology_config | |||
| description: This plant charges a battery from the grid to reduce peak demand | |||
| StorageOpenLoopControlBaseConfig | ||
| ): | ||
| """ | ||
| Configuration class for the PeakLoadManagementHeuristicOpenLoopStorageController. |
|
|
||
| """ | ||
|
|
||
| system_capacity_kw: int | float = field() |
There was a problem hiding this comment.
@elenya-grant and @johnjasa, I was discussing with Jared about how to make this control strategy tech agnostic. Right now it's hardcoded to have system_capacity_kw in the config. I'm wondering if y'all have ideas of what the best path forward is for this to work with all dispatchable converters.
We have access to the standardized commodity_rate_units but there's no standardization across how we define system capacity, which makes this challenging.
There was a problem hiding this comment.
well system capacity is a standard output of performance models (rated_{commodity}_production). I get confused on the order that models are added, but if the performance model is created in the tech subgroup before the controller, then the performance model would output the rated_{commodity}_production and that could then be an input to the PLM converter controller.
This is a good question though. I think the best thing (if possible) would be to have rated_{commodity}_production as an openmdao input.
Also - I don't think the capacity input in the config or the openmdao inputs should be standardized for a few reasons:
- In the config, it seems more acceptable to include units in config parameters to make it more clear to users what units that parameter should be in. The units are not included in OpenMDAO input names.
- Some technologies do not have a single capacity-related input. Some technologies have an input that would instead be a multiplier on some number of units (like number of electrolyzer clusters and cluster capacity OR number of wind turbines and wind turbine capacity).
* varopex * refurb schedule * update fuel cell schedule calc to allow for non-integer multiples of eol and timesteps * extend liftime for schedule test * Update h2integrate/converters/hydrogen/h2_fuel_cell.py --------- Co-authored-by: Jared Thomas <jaredthomas68@gmail.com> Co-authored-by: Jared Thomas <jaredthomas68@users.noreply.github.com>
Converter PLM control
This PR adds peak load management dispatch for converters. It handles two load profiles, one representing an upstream (grid) load and the other representing a local load that must be met. The converter will be dispatched when either of the demand profiles exceeds their respective peak limits.
Section 1: Type of Contribution
Section 2: Draft PR Checklist
TODO:
Type of Reviewer Feedback Requested (on Draft PR)
Structural feedback:
Looking for high-level feedback at this point from any who wish to give it.
Implementation feedback:
Other feedback:
Section 3: General PR Checklist
docs/files are up-to-date, or added when necessaryCHANGELOG.md"A complete thought. [PR XYZ]((https://github.com/NatLabRockies/H2Integrate/pull/XYZ)", where
XYZshould be replaced with the actual number.Section 4: Related Issues
Section 5: Impacted Areas of the Software
Section 5.1: New Files
path/to/file.extensionmethod1: What and why something was changed in one sentence or less.Section 5.2: Modified Files
path/to/file.extensionmethod1: 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
docs/developer_guide/coding_guidelines.mdattrsclass to define theConfigto load in attributes for the modelBaseConfigorCostModelBaseConfiginitialize()method,setup()method,compute()methodCostModelBaseClasssupported_models.pycreate_financial_modelinh2integrate_model.pytest_all_examples.pydocs/user_guide/model_overview.mddocs/section<model_name>.mdis added to the_toc.ymlgenerate_class_hierarchy.pyto update the class hierarchy diagram indocs/developer_guide/class_structure.md