Skip to content

Multiunit thermal plants#224

Open
misi9170 wants to merge 37 commits intoNatLabRockies:developfrom
misi9170:feature/mm-thermal
Open

Multiunit thermal plants#224
misi9170 wants to merge 37 commits intoNatLabRockies:developfrom
misi9170:feature/mm-thermal

Conversation

@misi9170
Copy link
Copy Markdown
Collaborator

@misi9170 misi9170 commented Mar 4, 2026

This pull request adds functionality for having multiple thermal generating units under a single thermal power plant. This could be several independent units (e.g. two open-cycle gas turbines) or dependent units, such as the gas turbine and the steam turbine in a combined cycle gas plant. The latter is not currently included, although @jfrederik-nrel is working on it.

As part of this PR, @jfrederik-nrel has also added a generic steam turbine unit. Final validation and documentation of this will be added before we mark this PR as ready for review.
EDIT: as per discussion below, the SteamTurbine class was removed from this PR and moved to #232 instead.

@misi9170 misi9170 added the new-feature A new feature label Mar 5, 2026
@misi9170 misi9170 requested a review from jfrederik-nrel March 5, 2026 18:15
@misi9170 misi9170 requested a review from dzalkind March 5, 2026 21:11
@misi9170
Copy link
Copy Markdown
Collaborator Author

misi9170 commented Mar 6, 2026

To do:

  • Clean up docstrings
  • Add documentation (thermal plant, example)
  • Add tests
  • Finalize example

To consider:

@misi9170
Copy link
Copy Markdown
Collaborator Author

misi9170 commented Mar 9, 2026

@jfrederik-nrel , to keep things clear between this PR and #232, how about I remove the SteamTurbine model from this PR and add it back to your branch on #232. That way, I think I can pretty quickly clean this PR up so that it's ready fore review, which should make it easier for you to work on #232.

@misi9170 misi9170 marked this pull request as ready for review March 9, 2026 22:51
@misi9170
Copy link
Copy Markdown
Collaborator Author

misi9170 commented Mar 9, 2026

@dzalkind @jfrederik-nrel @genevievestarke this PR is now ready for review.

@genevievestarke genevievestarke self-requested a review March 13, 2026 17:27
@genevievestarke
Copy link
Copy Markdown
Collaborator

Move registry to a different place in Hercules?


import copy

import hercules.hybrid_plant as hp
Copy link
Copy Markdown
Collaborator Author

@misi9170 misi9170 Mar 19, 2026

Choose a reason for hiding this comment

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

@genevievestarke , does your comment about moving the registry refer to changing this line so we don't have to import hybrid_plant here? I tried that for a while but kept running into circular import issues so gave up. It sounds like @paulf81 also has had this issue before. I do agree though that this seems weird, and it would be better if the registry was in its own file. Perhaps we create a separate issue for that?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Yeah, @dzalkind mentioned that you were looking for a fix, but we didn't think there was one implemented yet. I'll make an issue!

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See if moving this to a new file is useful.

Copy link
Copy Markdown
Collaborator

@genevievestarke genevievestarke left a comment

Choose a reason for hiding this comment

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

Looks good, I just left some comments so I remember which edits I wanted. I'll be working on applying these today.


import copy

import hercules.hybrid_plant as hp
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

See if moving this to a new file is useful.


# Load component registry here to define units in thermal plant
# NOTE: this breaks a circular dependency issue
from hercules.component_registry import COMPONENT_REGISTRY
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@paulf81 Thoughts on moving the component registry to a new file and adding this import statement later in thermal_plant?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Yes that works for me

@dzalkind dzalkind mentioned this pull request Mar 27, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

New thermal plant class that models down to the turbine level

4 participants