@@ -201,32 +201,36 @@ def straight_component_data_hash(comp, reporting_frequency, variable_names)
201201 comp = comp . to_StraightComponent . get
202202 comp_data [ 'object_name' ] = comp . name . to_s
203203 comp_data [ 'object_type' ] = comp . iddObjectType . valueName . to_s
204+ comp_data [ 'before_objects' ] = [ ]
205+ comp_data [ 'after_objects' ] = [ ]
204206 if comp . inletModelObject . is_initialized
205207 if comp . inletModelObject . get . name . is_initialized
206208 inlet_object_name = comp . inletModelObject . get . name . get
207209 if comp . loop . get . name . get . to_s == inlet_object_name
208210 # don't log the air loop for the supply inlet node
209- comp_data [ 'before_objects' ] = [ ]
210211 else
212+ # use the component name as is
211213 comp_data [ 'before_objects' ] = [ inlet_object_name ]
212214 end
215+ elsif comp . inletModelObject . get . iddObjectType . valueName . to_s == 'OS_PortList'
216+ inlet_object_name = comp . inletModelObject . get . to_PortList . get . thermalZone . name . to_s
217+ comp_data [ 'before_objects' ] = [ inlet_object_name ]
213218 end
214- else
215- comp_data [ 'before_objects' ] = [ ]
216219 end
217220 if comp . outletModelObject . is_initialized
218221 if comp . outletModelObject . get . name . is_initialized
219222 outlet_object_name = comp . outletModelObject . get . name . get
220223 if comp . loop . get . name . get . to_s == outlet_object_name
221224 # don't log the air loop for the supply outlet node
222- comp_data [ 'after_objects' ] = [ ]
223225 else
224226 comp_data [ 'after_objects' ] = [ outlet_object_name ]
225227 end
228+ elsif comp . outletModelObject . get . iddObjectType . valueName . to_s == 'OS_PortList'
229+ outlet_object_name = comp . outletModelObject . get . to_PortList . get . thermalZone . name . to_s
230+ comp_data [ 'after_objects' ] = [ outlet_object_name ]
226231 end
227- else
228- comp_data [ 'after_objects' ] = [ ]
229232 end
233+
230234 if comp . to_Node . is_initialized && !variable_names . empty?
231235 sql = comp . model . sqlFile . get
232236 ann_env_pd = annual_run_period ( sql )
@@ -246,6 +250,70 @@ def straight_component_data_hash(comp, reporting_frequency, variable_names)
246250 return comp_data
247251 end
248252
253+ def hvac_component_data_hash ( comp , reporting_frequency , variable_names , loop_data )
254+ comp_data = { }
255+ comp = comp . to_HVACComponent . get
256+ comp_data [ 'object_name' ] = comp . name . to_s
257+ comp_data [ 'object_type' ] = comp . iddObjectType . valueName . to_s
258+ comp_data [ 'before_objects' ] = [ ]
259+ comp_data [ 'after_objects' ] = [ ]
260+
261+ # capture outdoor air system properties
262+ if comp . to_AirLoopHVACOutdoorAirSystem . is_initialized
263+ comp = comp . to_AirLoopHVACOutdoorAirSystem . get
264+ if comp . outboardOANode . is_initialized
265+ oa_node = comp . outboardOANode . get
266+ comp_data [ 'before_objects' ] << oa_node . name . get
267+ temp_comp = straight_component_data_hash ( oa_node , reporting_frequency , variable_names )
268+ temp_comp [ 'component_side' ] = 'outdoor'
269+ loop_data [ 'components' ] << temp_comp
270+ end
271+ if comp . returnAirModelObject . is_initialized
272+ comp_data [ 'before_objects' ] << comp . returnAirModelObject . get . name . get
273+ end
274+ if comp . outboardReliefNode . is_initialized
275+ relief_node = comp . outboardReliefNode . get
276+ comp_data [ 'after_objects' ] << relief_node . name . get
277+ temp_comp = straight_component_data_hash ( relief_node , reporting_frequency , variable_names )
278+ temp_comp [ 'component_side' ] = 'relief'
279+ loop_data [ 'components' ] << temp_comp
280+ end
281+ if comp . mixedAirModelObject . is_initialized
282+ comp_data [ 'after_objects' ] << comp . mixedAirModelObject . get . name . get
283+ end
284+ elsif comp . to_Splitter . is_initialized
285+ # if the object is a splitter, log the inlet node and all outlet nodes
286+ comp = comp . to_Splitter . get
287+ comp_data [ 'before_objects' ] = [ comp . inletModelObject . get . name . get ] if comp . inletModelObject . is_initialized
288+ comp . outletModelObjects . each { |obj | comp_data [ 'after_objects' ] << obj . name . get }
289+ elsif comp . to_Mixer . is_initialized
290+ # if the object is a mixer, log all inlet nodes and the outlet node
291+ comp = comp . to_Mixer . get
292+ comp . inletModelObjects . each { |obj | comp_data [ 'before_objects' ] << obj . name . get }
293+ comp_data [ 'after_objects' ] = [ comp . outletModelObject . get . name . get ] if comp . outletModelObject . is_initialized
294+ elsif comp . to_ThermalZone . is_initialized
295+ comp = comp . to_ThermalZone . get
296+ comp . inletPortList . modelObjects . each { |obj | comp_data [ 'before_objects' ] << obj . name . get }
297+ comp . returnPortList . modelObjects . each { |obj | comp_data [ 'after_objects' ] << obj . name . get }
298+ elsif comp . to_WaterToAirComponent . is_initialized
299+ comp = comp . to_WaterToAirComponent . get
300+ comp_data [ 'before_objects' ] << comp . airInletModelObject . get . name . get if comp . airInletModelObject . is_initialized
301+ comp_data [ 'before_objects' ] << comp . waterInletModelObject . get . name . get if comp . waterInletModelObject . is_initialized
302+ comp_data [ 'after_objects' ] << comp . airOutletModelObject . get . name . get if comp . airOutletModelObject . is_initialized
303+ comp_data [ 'after_objects' ] << comp . waterOutletModelObject . get . name . get if comp . waterOutletModelObject . is_initialized
304+ elsif comp . to_WaterToWaterComponent . is_initialized
305+ comp = comp . to_WaterToWaterComponent . get
306+ comp_data [ 'before_objects' ] << comp . demandInletModelObject . get . name . get if comp . demandInletModelObject . is_initialized
307+ comp_data [ 'before_objects' ] << comp . supplyInletModelObject . get . name . get if comp . supplyInletModelObject . is_initialized
308+ comp_data [ 'before_objects' ] << comp . tertiaryInletModelObject . get . name . get if comp . tertiaryInletModelObject . is_initialized
309+ comp_data [ 'after_objects' ] << comp . demandOutletModelObject . get . name . get if comp . demandOutletModelObject . is_initialized
310+ comp_data [ 'after_objects' ] << comp . supplyOutletModelObject . get . name . get if comp . supplyOutletModelObject . is_initialized
311+ comp_data [ 'after_objects' ] << comp . tertiaryOutletModelObject . get . name . get if comp . tertiaryOutletModelObject . is_initialized
312+ end
313+
314+ return comp_data
315+ end
316+
249317 def add_node_names_to_array ( model_objects , node_names )
250318 model_objects . each do |model_object |
251319 unless model_object . to_Node . empty?
@@ -334,106 +402,49 @@ def run(runner, user_arguments)
334402 return false
335403 end
336404
405+ # log data from AirLoopHVACs and PlantLoops
337406 hvac_data = [ ]
338- # get data from air loops
339- model . getAirLoopHVACs . each do | air_loop |
340- air_loop_data = { }
341- air_loop_data [ 'loop_name '] = air_loop . name . to_s
342- air_loop_data [ 'loop_type '] = air_loop . iddObjectType . valueName . to_s
343- air_loop_data [ 'boundary_nodes '] = loop_boundary_nodes ( air_loop )
344- air_loop_data [ ' components' ] = [ ]
345- air_loop . supplyComponents . each do |comp |
407+ model . getLoops . each do | hvac_loop |
408+ loop_data = { }
409+ loop_data [ 'loop_name' ] = hvac_loop . name . to_s
410+ loop_data [ 'loop_type '] = hvac_loop . iddObjectType . valueName . to_s
411+ loop_data [ 'boundary_nodes '] = loop_boundary_nodes ( hvac_loop )
412+ loop_data [ 'components '] = [ ]
413+ # loop through supply side components and add them to components array
414+ hvac_loop . supplyComponents . each do |comp |
346415 if comp . to_StraightComponent . is_initialized
347416 comp_data = straight_component_data_hash ( comp , reporting_frequency , variable_names )
348417 else
349- comp_data = { }
350- end
351-
352- # capture outdoor air system properties
353- if comp . to_AirLoopHVACOutdoorAirSystem . is_initialized
354- comp_data [ 'object_name' ] = comp . name . to_s
355- comp_data [ 'object_type' ] = comp . iddObjectType . valueName . to_s
356- comp = comp . to_AirLoopHVACOutdoorAirSystem . get
357- comp_data [ 'before_objects' ] = [ ]
358- comp_data [ 'after_objects' ] = [ ]
359- if comp . outboardOANode . is_initialized
360- oa_node = comp . outboardOANode . get
361- comp_data [ 'before_objects' ] << oa_node . name . get
362- temp_comp = straight_component_data_hash ( oa_node , reporting_frequency , variable_names )
363- temp_comp [ 'component_side' ] = 'supply'
364- air_loop_data [ 'components' ] << temp_comp
365- end
366- if comp . returnAirModelObject . is_initialized
367- comp_data [ 'before_objects' ] << comp . returnAirModelObject . get . name . get
368- end
369- if comp . outboardReliefNode . is_initialized
370- relief_node = comp . outboardReliefNode . get
371- comp_data [ 'after_objects' ] << relief_node . name . get
372- temp_comp = straight_component_data_hash ( relief_node , reporting_frequency , variable_names )
373- temp_comp [ 'component_side' ] = 'supply'
374- air_loop_data [ 'components' ] << temp_comp
375- end
376- if comp . mixedAirModelObject . is_initialized
377- comp_data [ 'after_objects' ] << comp . mixedAirModelObject . get . name . get
378- end
418+ comp_data = hvac_component_data_hash ( comp , reporting_frequency , variable_names , loop_data )
379419 end
380-
381420 comp_data [ 'component_side' ] = 'supply'
382- air_loop_data [ 'components' ] << comp_data
421+ loop_data [ 'components' ] << comp_data
383422 end
384-
385- air_loop . demandComponents . each do |comp |
423+ # loop through demand side components and add them to components array
424+ hvac_loop . demandComponents . each do |comp |
386425 if comp . to_StraightComponent . is_initialized
387- if include_demand_nodes
388- comp_data = straight_component_data_hash ( comp , reporting_frequency , variable_names )
389- else
390- comp_data = straight_component_data_hash ( comp , reporting_frequency , [ ] )
391- end
426+ # variable_names = [] unless include_demand_nodes
427+ comp_data = straight_component_data_hash ( comp , reporting_frequency , include_demand_nodes ? variable_names : [ ] )
392428 else
393- comp_data = { }
429+ comp_data = hvac_component_data_hash ( comp , reporting_frequency , include_demand_nodes ? variable_names : [ ] , loop_data )
394430 end
395-
396431 comp_data [ 'component_side' ] = 'demand'
397- air_loop_data [ 'components' ] << comp_data
432+ loop_data [ 'components' ] << comp_data
398433 end
399434
400- hvac_data << air_loop_data
401- end
435+ # connect supply outlet and demand inlet
436+ supply_outlet = loop_data [ 'components' ] . select { |comp | comp [ 'object_name' ] == loop_data [ 'boundary_nodes' ] [ 'supply_outlet' ] } [ 0 ]
437+ demand_inlet = loop_data [ 'components' ] . select { |comp | comp [ 'object_name' ] == loop_data [ 'boundary_nodes' ] [ 'demand_inlet' ] } [ 0 ]
438+ supply_outlet [ 'after_objects' ] << loop_data [ 'boundary_nodes' ] [ 'demand_inlet' ]
439+ demand_inlet [ 'before_objects' ] << loop_data [ 'boundary_nodes' ] [ 'supply_outlet' ]
402440
403- # get data from plant loops
404- model . getPlantLoops . each do |plant_loop |
405- plant_loop_data = { }
406- plant_loop_data [ 'loop_name' ] = plant_loop . name . to_s
407- plant_loop_data [ 'loop_type' ] = plant_loop . iddObjectType . valueName . to_s
408- plant_loop_data [ 'boundary_nodes' ] = loop_boundary_nodes ( plant_loop )
409- plant_loop_data [ 'components' ] = [ ]
410- plant_loop . supplyComponents . each do |comp |
411- if comp . to_StraightComponent . is_initialized
412- comp_data = straight_component_data_hash ( comp , reporting_frequency , variable_names )
413- else
414- comp_data = { }
415- end
416-
417- comp_data [ 'component_side' ] = 'supply'
418- plant_loop_data [ 'components' ] << comp_data
419- end
420-
421- plant_loop . demandComponents . each do |comp |
422- if comp . to_StraightComponent . is_initialized
423- if include_demand_nodes
424- comp_data = straight_component_data_hash ( comp , reporting_frequency , variable_names )
425- else
426- comp_data = straight_component_data_hash ( comp , reporting_frequency , [ ] )
427- end
428- else
429- comp_data = { }
430- end
431-
432- comp_data [ 'component_side' ] = 'demand'
433- plant_loop_data [ 'components' ] << comp_data
434- end
441+ # connect demand outlet and supply inlet
442+ demand_outlet = loop_data [ 'components' ] . select { |comp | comp [ 'object_name' ] == loop_data [ 'boundary_nodes' ] [ 'demand_outlet' ] } [ 0 ]
443+ supply_inlet = loop_data [ 'components' ] . select { |comp | comp [ 'object_name' ] == loop_data [ 'boundary_nodes' ] [ 'supply_inlet' ] } [ 0 ]
444+ demand_outlet [ 'after_objects' ] << loop_data [ 'boundary_nodes' ] [ 'supply_inlet' ]
445+ supply_inlet [ 'before_objects' ] << loop_data [ 'boundary_nodes' ] [ 'demand_outlet' ]
435446
436- hvac_data << plant_loop_data
447+ hvac_data << loop_data
437448 end
438449
439450 # Convert the hash to a JSON string
0 commit comments