First time here? Check our help page!
3

How to get Condenser PlantLoop associated with Chiller PlantLoop in OpenStudio

Is there an easy way to return the condenser water PlantLoop that is associated with a given Chiller PlantLoop?

So far, I can get the chiller ok, but can't seem to directly get the associated condenser plant loop, just the condenser water inlet/outlet nodes.

if not chiller_plant_loop.supplyComponents(OpenStudio::Model::ChillerElectricEIR::iddObjectType).empty?

  # Get chiller
  chiller = chiller_plant_loop.supplyComponents(OpenStudio::Model::ChillerElectricEIR::iddObjectType).first.to_ChillerElectricEIR.get

  if chiller.condenserType == 'WaterCooled'
    # Chiller is WaterCooled therefore should be connected to a condenser water loop
    # How do I get the associated Condenser PlantLoop?
  end

end

If I can avoid getting the inlet or outlet node and looping on ALL condenser water loops to find that node, that'd be much better.

Julien Marrec's avatar
29.7k
Julien Marrec
asked 2015-04-08 08:04:13 -0500
edit flag offensive 0 remove flag close merge delete

Comments

add a comment see more comments

1 Answer

1

I just added an updated Annual End Use Breakdown measure to BCL. it includes air and plant loop summaries. As shown below it does link the chiller loop to condenser loop.

image description

The code below is within a loop of all supply side components for the chiller loop. Once a ChillerElectricEIR is found then component.secondaryPlantLoop returns an optional.

elsif component.to_ChillerElectricEIR.is_initialized
  component = component.to_ChillerElectricEIR.get
  sizing_source_units = "W"
  sizing_target_units = "Btu/h"
  if component.referenceCapacity.is_initialized
    sizing_ip = OpenStudio.convert(component.referenceCapacity.get,sizing_source_units,sizing_target_units).get
    sizing_ip_neat = OpenStudio.toNeatString(sizing_ip,2,true)
  else
    sizing_ip_neat = "Autosized"
  end
  value = component.referenceCOP
  value_neat = OpenStudio.toNeatString(value,2,true)
  description = "Reference COP"
  @output_data_plant_loops[:data] <<  [component.iddObject.name,sizing_ip_neat,sizing_target_units,description,value_neat,"",""]

  # second line to indicate if water or air cooled
  if component.secondaryPlantLoop.is_initialized
    @output_data_plant_loops[:data] <<  ["#{component.iddObject.name} (cont)","","","Chiller Source",component.secondaryPlantLoop.get.name,"",""]
  else
    @output_data_plant_loops[:data] <<  ["#{component.iddObject.name} (cont)","","","Chiller Source","Air Cooled","",""]
  end

The code for this is in the os_lib_reporting.rb file in the resources folder of the measure.

David Goldwasser's avatar
20.4k
David Goldwasser
answered 2015-04-08 13:39:32 -0500, updated 2015-04-08 13:41:57 -0500
edit flag offensive 0 remove flag delete link

Comments

Thanks @David Goldwasser. Is Chiller.secondaryPlantLoop defined somewhere in the SDK documentation? I can't find it.

Julien Marrec's avatar Julien Marrec (2015-04-08 13:52:37 -0500) edit

ChillerEIR inherits methods from WaterToWaterComponent.

Tricks in the documentation

  1. Click "Inheritnace diagram" near the top to see what it inherits from. You can click objects on diagram to see their methods.
  2. Click "List of all members" to see all of the inherited methods.
David Goldwasser's avatar David Goldwasser (2015-04-08 14:08:18 -0500) edit
add a comment see more comments