Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question
5

Create your own plant loop operation schemes in OpenStudio

asked 2016-01-22 08:20:15 -0500

updated 2017-05-17 12:24:54 -0500

Referenced question: Plant Loop Operation Scheme in Open Studio

OpenStudio currently generates the Plant loop operation scheme on forward translation. In my case it's definitely not doing what I want and my waterside economizer, a HeatExchanger:FluidToFluid is not turning on as a result. I know the operation scheme is the problem since I've managed to fix it in the IDF editor.

I see that in 1.10.1 (but it's been like this for a while) in the GUI if you look at the Plant Loop objects there are dropdowns to specify the operation schemes.

Can I create my operation schemes using the SDK, assign them to my plant loop and NOT have OpenStudio trying to remove them or add any other schemes?

edit retag flag offensive close merge delete

Comments

bonus point: when will we be able to edit the operation schemes directly in the GUI?

Julien Marrec's avatar Julien Marrec  ( 2016-01-22 08:31:07 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
4

answered 2016-01-22 09:31:12 -0500

Yes, you can now explicitly define the PlantEquipmentOperationSchemes in OpenStudio using the API. The feature is described here. If you define any operation schemes, the OpenStudio defaulting will be disabled except for the behavior around component setpoint operation.

Here is a made up example.

chiller = model.getChillerElectricEIRs.first
chilled_plant = chiller.plantLoop.get
chiller2 = OpenStudio::Model::ChillerElectricEIR.new(model)
chilled_plant.addSupplyBranchForComponent(chiller2)
# A default constructed load scheme has a single large load range
cooling_op_scheme = OpenStudio::Model::PlantEquipmentOperationCoolingLoad.new(model)
# This method adds the equipment to the existing load range
cooling_op_scheme.addEquipment(chiller)
cooling_op_scheme.addEquipment(chiller2)
# This cuts the load range into two pieces with only chiller2 operating on the lower end of the range
# See PlantEquipmentOperationRangeBasedScheme for details about this api 
lower_range_equipment = []
lower_range_equipment.push(chiller2)
cooling_op_scheme.addLoadRange(25000.0,lower_range_equipment)
chilled_plant.setPlantEquipmentOperationCoolingLoad(cooling_op_scheme)

The details about how the load range scheme API works is here.

OpenStudio will always create a component setpoint operation scheme for any components that have a setpoint manager on their immediate outlet node, but you can overrule that scheme by assigning the component to a different operation scheme that is set as the primary scheme. You might do this if for some reason you needed a SPM on a component outlet but do not want component setpoint operation.

edit flag offensive delete link more

Comments

Daily double if you add the op schemes to the OpenStudio UI, but we are shooting for version 1.11.0.

Kyle Benne's avatar Kyle Benne  ( 2016-01-22 09:32:32 -0500 )edit

Can we give away UH karma points or badges for code GitHub commits to OS core :)

David Goldwasser's avatar David Goldwasser  ( 2016-01-22 09:46:17 -0500 )edit

I know nothing about GUI nor C++, sorry. Can I request some convenience methods to look at the operation schemes? cooling_op_scheme.equipment(cooling_op_scheme.loadRangeUpperLimits[0]) isn't that convenient

Julien Marrec's avatar Julien Marrec  ( 2016-01-22 10:38:13 -0500 )edit

What do you have in mind?

Kyle Benne's avatar Kyle Benne  ( 2016-01-22 10:50:41 -0500 )edit

Something like cooling_op_scheme.displayInDumbedDownTerms:

cooling_op_scheme.loadRangeUpperLimits.each do |rangeLimit| puts "\nUp to #{rangeLimit}W" cooling_op_scheme.equipment(rangeLimit).each do |equip| puts equip.name end end

Julien Marrec's avatar Julien Marrec  ( 2016-01-22 11:10:27 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Careers

Question Tools

1 follower

Stats

Asked: 2016-01-22 08:20:15 -0500

Seen: 1,268 times

Last updated: Jan 22 '16