NatLabRockies / NatLabRockies/OpenStudio

Allow Python Plugin Instances in User-Defined Plant Component

Open
#5,264 1 comment 0 reactions 2 assignees View on GitHub

@DavidGoldwasser is already working on this.

Since Oct 1, 2024.

Enhancement Request
Dominant language
C++
Stars
646
Forks
237
Avg merge
3d 11h
Merged PRs (30d)
10

Description

Enhancement Request

Modify the user-defined plant component to accept a Python Plugin Instance for the plantInitializationProgramCallingManager as well as the plantSimulationProgramCallingManager. Additionally, if a Python Plugin Instance is specified, do not construct any default Energy Management System objects.

Detailed Description

Currently, the user-defined plant component only allows an Energy Management System Program Calling Manager for the plantInitializationProgramCallingManager and the plantSimulationProgramCallingManager. It also default constructs a number of Energy Management System actuators in addition to a two Energy Management System programs.

However, this does not allow a Python Plugin to be used to model the user-defined plant component. While the importance of these defaults and generating a running model is recognized, it would be beneficial to be able to bypass this functionality.

Possible Implementation

Overload the setPlantInitializationProgramCallingManager and setPlantSimulationProgramCallingManager methods to accept a Python Plugin Instance. If the setPlantInitializationProgramCallingManager method is used with a Python Plugin Instance, do not default construct a Plant Initialization Energy Management System Program or these actuators:

  • designVolumeFlowRateActuator
  • minimumMassFlowRateActuator
  • maximumMassFlowRateActuator
  • minimumLoadingCapacityActuator
  • maximumLoadingCapacityActuator
  • optimalLoadingCapacityActuator

Similarly, if the setPlantSimulationProgramCallingManager method is used with a Python Plugin Instance, do not default construct a Plant Simulation Energy Management System Program or these actuators:

  • outletTemperatureActuator
  • massFlowRateActuator

It is important to keep these split, sometimes it is convenient to keep one program in Python and the other in ERL.

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.