-
Notifications
You must be signed in to change notification settings - Fork 193
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow Python Plugin Instances in User-Defined Plant Component #5264
Comments
bonnema
added
Enhancement Request
Triage
Issue needs to be assessed and labeled, further information on reported might be needed
labels
Oct 1, 2024
DavidGoldwasser
removed
the
Triage
Issue needs to be assessed and labeled, further information on reported might be needed
label
Oct 16, 2024
That's all done in the Ctor: OpenStudio/src/model/PlantComponentUserDefined.cpp Lines 519 to 597 in cae9435
So the possible implementation is probably to provide a new ctor: PlantComponentUserDefined::PlantComponentUserDefined(const PythonPluginInstance& initialiazitionProgram, const PythonPluginInstance& simulationProgram) or maybe rather add a defaulted arg to the original ctor: // if initializeEMS is true, actuators are set up, and two pairs of EMS:Program & EMS:ProgramCallingManager are set up for the initialization and simulation programs of the plant connection 1
PlantComponentUserDefined::PlantComponentUserDefined(const Model& model, bool initializeEMS = true); Side note: I hadn't realized E+ has up to 4 plant connections (and program calling managers for each) while we support only one. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Enhancement Request
Modify the user-defined plant component to accept a Python Plugin Instance for the
plantInitializationProgramCallingManager
as well as theplantSimulationProgramCallingManager
. 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 theplantSimulationProgramCallingManager
. 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
andsetPlantSimulationProgramCallingManager
methods to accept a Python Plugin Instance. If thesetPlantInitializationProgramCallingManager
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.
The text was updated successfully, but these errors were encountered: