openstudio-standards 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards.xlsx +0 -0
  3. data/data/standards/OpenStudio_Standards_chillers.json +5 -5
  4. data/data/standards/OpenStudio_Standards_construction_sets.json +2 -2
  5. data/data/standards/OpenStudio_Standards_curve_cubics.json +12 -0
  6. data/data/standards/OpenStudio_Standards_heat_pumps.json +2126 -72
  7. data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +766 -14
  8. data/data/standards/OpenStudio_Standards_heat_rejection.json +172 -0
  9. data/data/standards/OpenStudio_Standards_prototype_inputs.json +355 -267
  10. data/data/standards/OpenStudio_Standards_schedules.json +262 -10
  11. data/data/standards/OpenStudio_Standards_space_types.json +1466 -794
  12. data/data/standards/manage_OpenStudio_Standards.rb +19 -21
  13. data/data/weather/weather_info.csv +96 -0
  14. data/lib/openstudio-standards/btap/btap.rb +1 -1
  15. data/lib/openstudio-standards/btap/compliance.rb +135 -40
  16. data/lib/openstudio-standards/btap/envelope.rb +26 -5
  17. data/lib/openstudio-standards/btap/geometry.rb +11 -1
  18. data/lib/openstudio-standards/btap/hvac.rb +489 -56
  19. data/lib/openstudio-standards/btap/simmanager.rb +1 -1
  20. data/lib/openstudio-standards/hvac_sizing/HVACSizing.CoilHeatingDXMultiSpeed.rb +120 -0
  21. data/lib/openstudio-standards/hvac_sizing/Siz.CoilCoolingDXMultiSpeed.rb +151 -7
  22. data/lib/openstudio-standards/hvac_sizing/Siz.CoilHeatingGasMultiStage.rb +48 -7
  23. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +14 -12
  24. data/lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -7
  25. data/lib/openstudio-standards/prototypes/Prototype.Model.hvac.rb +123 -91
  26. data/lib/openstudio-standards/prototypes/Prototype.Model.rb +130 -45
  27. data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +13 -7
  28. data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +332 -324
  29. data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +401 -99
  30. data/lib/openstudio-standards/prototypes/Prototype.hvac_systems.rb +309 -222
  31. data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +100 -80
  32. data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +37 -22
  33. data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +68 -53
  34. data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +109 -88
  35. data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +52 -4
  36. data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +230 -213
  37. data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +225 -218
  38. data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +29 -17
  39. data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +42 -32
  40. data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +331 -314
  41. data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +233 -219
  42. data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +40 -32
  43. data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +19 -6
  44. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +576 -555
  45. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +3 -1
  46. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +35 -17
  47. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +51 -23
  48. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +255 -0
  49. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +192 -0
  50. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +65 -0
  51. data/lib/openstudio-standards/standards/Standards.Fan.rb +37 -6
  52. data/lib/openstudio-standards/standards/Standards.Model.rb +28 -3
  53. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +3 -1
  54. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +41 -15
  55. data/lib/openstudio-standards/version.rb +1 -1
  56. data/lib/openstudio-standards/weather/Weather.Model.rb +509 -5
  57. data/lib/openstudio-standards/weather/Weather.stat_file.rb +145 -5
  58. metadata +8 -3
  59. data/lib/openstudio-standards/btap/environment.rb +0 -718
@@ -3,7 +3,7 @@ class OpenStudio::Model::AirTerminalSingleDuctVAVReheat
3
3
 
4
4
  # Set the initial minimum damper position based on OA
5
5
  # rate of the space and the building vintage.
6
- # Zones with low OA per area get lower initial guesses.
6
+ # Zones with low OA per area get lower initial guesses.
7
7
  # Final position will be adjusted upward
8
8
  # as necessary by Standards.AirLoopHVAC.set_minimum_vav_damper_positions
9
9
  # @param building_vintage [String] the building vintage
@@ -11,15 +11,29 @@ class OpenStudio::Model::AirTerminalSingleDuctVAVReheat
11
11
  # @return [Bool] returns true if successful, false if not
12
12
  # @todo remove exception where older vintages don't have minimum positions adjusted.
13
13
  def set_initial_prototype_damper_position(building_type, building_vintage, zone_oa_per_area)
14
-
14
+
15
15
  # Minimum damper position is based on prototype
16
16
  # assumptions, which are not clearly documented.
17
17
  min_damper_position = nil
18
18
  vav_name = self.name.get
19
- case building_vintage
19
+ case building_vintage
20
20
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
21
- if building_type == "Outpatient" and vav_name.include? "Floor 1"
21
+ if building_type == "Outpatient" and vav_name.include? "Floor 1"
22
+ min_damper_position = 1
23
+ elsif building_type == "Hospital" and vav_name.include? "PatRoom"
24
+ min_damper_position = 1
25
+ elsif building_type == "Hospital" and vav_name.include? "OR"
26
+ min_damper_position = 1
27
+ elsif building_type == "Hospital" and vav_name.include? "ICU"
28
+ min_damper_position = 1
29
+ elsif building_type == "Hospital" and vav_name.include? "Lab"
30
+ min_damper_position = 1
31
+ elsif building_type == "Hospital" and vav_name.include? "ER"
22
32
  min_damper_position = 1
33
+ elsif building_type == "Hospital" and vav_name.include? "Kitchen"
34
+ min_damper_position = 1
35
+ elsif building_type == "Hospital" and vav_name.include? "NurseStn"
36
+ min_damper_position = 0.3
23
37
  else
24
38
  min_damper_position = 0.3
25
39
  end
@@ -28,19 +42,31 @@ class OpenStudio::Model::AirTerminalSingleDuctVAVReheat
28
42
  when '90.1-2010', '90.1-2013'
29
43
  min_damper_position = 0.2
30
44
  end
31
-
45
+
32
46
  # TODO remove the template conditional; doesn't make sense
33
47
  # Determine whether or not to use the high minimum guess.
34
48
  # Cutoff was determined by correlating apparent minimum guesses
35
49
  # to OA rates in prototypes since not well documented in papers.
36
50
  if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2
37
- case building_vintage
51
+ case building_vintage
38
52
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
39
53
  self.setConstantMinimumAirFlowFraction(min_damper_position)
40
54
  else
41
55
  # High OA zones
42
56
  if building_type == "Outpatient"
43
57
  self.setConstantMinimumAirFlowFraction(1)
58
+ elsif building_type == "Hospital"
59
+ case building_vintage
60
+ when '90.1-2010', '90.1-2013'
61
+ if vav_name.include? "PatRoom"
62
+ self.setConstantMinimumAirFlowFraction(0.5)
63
+ else
64
+ self.setConstantMinimumAirFlowFraction(1)
65
+ end
66
+ when '90.1-2004', '90.1-2007'
67
+ self.setConstantMinimumAirFlowFraction(1)
68
+ end
69
+
44
70
  else
45
71
  self.setConstantMinimumAirFlowFraction(0.7)
46
72
  end
@@ -51,7 +77,7 @@ class OpenStudio::Model::AirTerminalSingleDuctVAVReheat
51
77
  end
52
78
 
53
79
  return true
54
-
80
+
55
81
  end
56
82
 
57
83
  end
@@ -3,9 +3,9 @@
3
3
  class OpenStudio::Model::Model
4
4
 
5
5
  def add_hvac(building_type, building_vintage, climate_zone, prototype_input)
6
-
6
+
7
7
  OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started Adding HVAC')
8
-
8
+
9
9
  # Get the list of HVAC systems, as defined
10
10
  # for each building in the Prototype.building_name files.
11
11
  system_to_space_map = define_hvac_system_map(building_type, building_vintage, climate_zone)
@@ -13,21 +13,21 @@ class OpenStudio::Model::Model
13
13
  # Add each HVAC system
14
14
  system_to_space_map.each do |system|
15
15
 
16
- thermal_zones = get_zones_from_spaces_on_system(system)
16
+ thermal_zones = get_zones_from_spaces_on_system(system)
17
+
18
+ return_plenum = get_return_plenum_from_system(system)
17
19
 
18
- return_plenum = get_return_plenum_from_system(system)
19
-
20
20
  # Add the HVAC systems
21
21
  case system['type']
22
22
  when 'VAV'
23
-
23
+
24
24
  # Retrieve the existing hot water loop
25
25
  # or add a new one if necessary.
26
26
  hot_water_loop = nil
27
27
  if self.getPlantLoopByName('Hot Water Loop').is_initialized
28
28
  hot_water_loop = self.getPlantLoopByName('Hot Water Loop').get
29
29
  else
30
- hot_water_loop = self.add_hw_loop('NaturalGas',building_type)
30
+ hot_water_loop = self.add_hw_loop('NaturalGas', building_type)
31
31
  end
32
32
 
33
33
  # Retrieve the existing chilled water loop
@@ -37,36 +37,49 @@ class OpenStudio::Model::Model
37
37
  chilled_water_loop = self.getPlantLoopByName('Chilled Water Loop').get
38
38
  else
39
39
  condenser_water_loop = nil
40
+ number_cooling_towers = 1
41
+ num_chillers = 1
42
+ if building_type == "Hospital" or building_type == "LargeOffice"
43
+ case building_vintage
44
+ when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
45
+ number_cooling_towers = 2
46
+ num_chillers = 2
47
+ end
48
+ end
40
49
  if prototype_input['chiller_cooling_type'] == 'WaterCooled'
41
- condenser_water_loop = self.add_cw_loop()
50
+ condenser_water_loop = self.add_cw_loop(building_type, building_vintage, number_cooling_towers)
42
51
  end
43
-
44
- chilled_water_loop = self.add_chw_loop(building_vintage,
45
- prototype_input['chw_pumping_type'],
46
- prototype_input['chiller_cooling_type'],
47
- prototype_input['chiller_condenser_type'],
48
- prototype_input['chiller_compressor_type'],
49
- prototype_input['chiller_capacity_guess'],
50
- condenser_water_loop)
51
-
52
+ chilled_water_loop = self.add_chw_loop(
53
+ building_vintage,
54
+ prototype_input['chw_pumping_type'],
55
+ prototype_input['chiller_cooling_type'],
56
+ prototype_input['chiller_condenser_type'],
57
+ prototype_input['chiller_compressor_type'],
58
+ prototype_input['chiller_capacity_guess'],
59
+ condenser_water_loop,
60
+ building_type,
61
+ num_chillers
62
+ )
52
63
  end
53
-
64
+
54
65
  # Add the VAV
55
- self.add_vav_reheat(building_vintage,
56
- system['name'],
57
- hot_water_loop,
58
- chilled_water_loop,
59
- thermal_zones,
60
- prototype_input['vav_operation_schedule'],
61
- prototype_input['vav_oa_damper_schedule'],
62
- prototype_input['vav_fan_efficiency'],
63
- prototype_input['vav_fan_motor_efficiency'],
64
- prototype_input['vav_fan_pressure_rise'],
65
- return_plenum,
66
- building_type)
67
-
66
+ self.add_vav_reheat(building_vintage,
67
+ system['name'],
68
+ hot_water_loop,
69
+ chilled_water_loop,
70
+ thermal_zones,
71
+ prototype_input['vav_operation_schedule'],
72
+ prototype_input['vav_oa_damper_schedule'],
73
+ prototype_input['vav_fan_efficiency'],
74
+ prototype_input['vav_fan_motor_efficiency'],
75
+ prototype_input['vav_fan_pressure_rise'],
76
+ return_plenum,
77
+ building_type
78
+ )
79
+
80
+
68
81
  when 'CAV'
69
-
82
+
70
83
  # Retrieve the existing hot water loop
71
84
  # or add a new one if necessary.
72
85
  hot_water_loop = nil
@@ -75,7 +88,25 @@ class OpenStudio::Model::Model
75
88
  else
76
89
  hot_water_loop = self.add_hw_loop('NaturalGas',building_type)
77
90
  end
78
-
91
+
92
+ chilled_water_loop = nil
93
+ if self.getPlantLoopByName('Chilled Water Loop').is_initialized
94
+ chilled_water_loop = self.getPlantLoopByName('Chilled Water Loop').get
95
+ elsif building_type == 'Hospital'
96
+ condenser_water_loop = nil
97
+ if prototype_input['chiller_cooling_type'] == 'WaterCooled'
98
+ condenser_water_loop = self.add_cw_loop()
99
+ end
100
+
101
+ chilled_water_loop = self.add_chw_loop(building_vintage,
102
+ prototype_input['chw_pumping_type'],
103
+ prototype_input['chiller_cooling_type'],
104
+ prototype_input['chiller_condenser_type'],
105
+ prototype_input['chiller_compressor_type'],
106
+ prototype_input['chiller_capacity_guess'],
107
+ condenser_water_loop)
108
+ end
109
+
79
110
  # Add the CAV
80
111
  self.add_cav(building_vintage,
81
112
  system['name'],
@@ -86,10 +117,11 @@ class OpenStudio::Model::Model
86
117
  prototype_input['vav_fan_efficiency'],
87
118
  prototype_input['vav_fan_motor_efficiency'],
88
119
  prototype_input['vav_fan_pressure_rise'],
120
+ chilled_water_loop,
89
121
  building_type)
90
-
122
+
91
123
  when 'PSZ-AC'
92
-
124
+
93
125
  # Special logic to differentiate between operation schedules
94
126
  # that vary even inside of a system type for stripmall.
95
127
  hvac_op_sch = nil
@@ -104,36 +136,36 @@ class OpenStudio::Model::Model
104
136
  hvac_op_sch = prototype_input['pszac_operation_schedule_3']
105
137
  oa_sch = prototype_input['pszac_oa_damper_schedule_3']
106
138
  end
107
-
139
+
108
140
  # Special logic to make unitary heat pumps all blow-through
109
141
  fan_position = 'DrawThrough'
110
142
  if prototype_input['pszac_heating_type'] == 'Single Speed Heat Pump' ||
111
143
  prototype_input['pszac_heating_type'] == 'Water To Air Heat Pump'
112
144
  fan_position = 'BlowThrough'
113
145
  end
114
-
146
+
115
147
  # Special logic to make a heat pump loop if necessary
116
148
  heat_pump_loop = nil
117
149
  if prototype_input['pszac_heating_type'] == 'Water To Air Heat Pump'
118
150
  heat_pump_loop = add_hp_loop(building_type)
119
151
  end
120
-
121
- self.add_psz_ac(building_vintage,
122
- system['name'],
152
+
153
+ self.add_psz_ac(building_vintage,
154
+ system['name'],
123
155
  heat_pump_loop, # Typically nil unless water source hp
124
156
  heat_pump_loop, # Typically nil unless water source hp
125
- thermal_zones,
157
+ thermal_zones,
126
158
  hvac_op_sch,
127
159
  oa_sch,
128
- fan_position,
160
+ fan_position,
129
161
  prototype_input['pszac_fan_type'],
130
162
  prototype_input['pszac_heating_type'],
131
163
  prototype_input['pszac_supplemental_heating_type'],
132
164
  prototype_input['pszac_cooling_type'],
133
165
  building_type)
134
-
166
+
135
167
  when 'PVAV'
136
-
168
+
137
169
  # Retrieve the existing hot water loop
138
170
  # or add a new one if necessary.
139
171
  hot_water_loop = nil
@@ -143,19 +175,19 @@ class OpenStudio::Model::Model
143
175
  hot_water_loop = nil
144
176
  else
145
177
  hot_water_loop = self.add_hw_loop('NaturalGas',building_type)
146
- end
178
+ end
147
179
 
148
- self.add_pvav(building_vintage,
149
- system['name'],
150
- thermal_zones,
180
+ self.add_pvav(building_vintage,
181
+ system['name'],
182
+ thermal_zones,
151
183
  prototype_input['vav_operation_schedule'],
152
184
  prototype_input['vav_oa_damper_schedule'],
153
185
  hot_water_loop,
154
- return_plenum,
186
+ return_plenum,
155
187
  building_type)
156
-
188
+
157
189
  when 'DOAS'
158
-
190
+
159
191
  # Retrieve the existing hot water loop
160
192
  # or add a new one if necessary.
161
193
  hot_water_loop = nil
@@ -175,7 +207,7 @@ class OpenStudio::Model::Model
175
207
  if prototype_input['chiller_cooling_type'] == 'WaterCooled'
176
208
  condenser_water_loop = self.add_cw_loop()
177
209
  end
178
-
210
+
179
211
  chilled_water_loop = self.add_chw_loop(building_vintage,
180
212
  prototype_input['chw_pumping_type'],
181
213
  prototype_input['chiller_cooling_type'],
@@ -183,21 +215,21 @@ class OpenStudio::Model::Model
183
215
  prototype_input['chiller_compressor_type'],
184
216
  prototype_input['chiller_capacity_guess'],
185
217
  condenser_water_loop)
186
- end
218
+ end
187
219
 
188
- self.add_doas(building_vintage,
189
- system['name'],
190
- hot_water_loop,
220
+ self.add_doas(building_vintage,
221
+ system['name'],
222
+ hot_water_loop,
191
223
  chilled_water_loop,
192
224
  thermal_zones,
193
225
  prototype_input['vav_operation_schedule'],
194
226
  prototype_input['doas_oa_damper_schedule'],
195
227
  prototype_input['doas_fan_maximum_flow_rate'],
196
228
  prototype_input['doas_economizer_control_type'],
197
- building_type)
229
+ building_type)
198
230
 
199
231
  when 'DC' # Data Center
200
-
232
+
201
233
  # Retrieve the existing hot water loop
202
234
  # or add a new one if necessary.
203
235
  hot_water_loop = nil
@@ -205,8 +237,8 @@ class OpenStudio::Model::Model
205
237
  hot_water_loop = self.getPlantLoopByName('Hot Water Loop').get
206
238
  else
207
239
  hot_water_loop = self.add_hw_loop('NaturalGas',building_type)
208
- end
209
-
240
+ end
241
+
210
242
  # Retrieve the existing heat pump loop
211
243
  # or add a new one if necessary.
212
244
  heat_pump_loop = nil
@@ -215,7 +247,7 @@ class OpenStudio::Model::Model
215
247
  else
216
248
  heat_pump_loop = self.add_hp_loop(building_type)
217
249
  end
218
-
250
+
219
251
  self.add_data_center_hvac(building_vintage,
220
252
  nil,
221
253
  hot_water_loop,
@@ -224,12 +256,12 @@ class OpenStudio::Model::Model
224
256
  prototype_input['flow_fraction_schedule_name'],
225
257
  prototype_input['flow_fraction_schedule_name'],
226
258
  system['main_data_center'])
227
-
259
+
228
260
  when 'SAC'
229
-
230
- self.add_split_AC(building_vintage,
261
+
262
+ self.add_split_AC(building_vintage,
231
263
  nil,
232
- thermal_zones,
264
+ thermal_zones,
233
265
  prototype_input['sac_operation_schedule'],
234
266
  prototype_input['sac_operation_schedule_meeting'],
235
267
  prototype_input['sac_oa_damper_schedule'],
@@ -240,10 +272,10 @@ class OpenStudio::Model::Model
240
272
  building_type)
241
273
 
242
274
  when 'UnitHeater'
243
-
244
- self.add_unitheater(building_vintage,
275
+
276
+ self.add_unitheater(building_vintage,
245
277
  nil,
246
- thermal_zones,
278
+ thermal_zones,
247
279
  prototype_input['unitheater_operation_schedule'],
248
280
  prototype_input['unitheater_fan_control_type'],
249
281
  prototype_input['unitheater_fan_static_pressure'],
@@ -252,17 +284,17 @@ class OpenStudio::Model::Model
252
284
 
253
285
  when 'PTAC'
254
286
 
255
- self.add_ptac(building_vintage,
287
+ self.add_ptac(building_vintage,
256
288
  nil,
257
289
  nil,
258
290
  thermal_zones,
259
291
  prototype_input['ptac_fan_type'],
260
292
  prototype_input['ptac_heating_type'],
261
293
  prototype_input['ptac_cooling_type'],
262
- building_type)
263
-
294
+ building_type)
295
+
264
296
  when 'Exhaust Fan'
265
-
297
+
266
298
  self.add_exhaust_fan(system['availability_sch_name'],
267
299
  system['flow_rate'],
268
300
  system['flow_fraction_schedule_name'],
@@ -270,14 +302,14 @@ class OpenStudio::Model::Model
270
302
  thermal_zones)
271
303
 
272
304
  when 'Zone Ventilation'
273
-
305
+
274
306
  self.add_zone_ventilation(system['availability_sch_name'],
275
307
  system['flow_rate'],
276
308
  system['ventilation_type'],
277
309
  thermal_zones)
278
310
 
279
311
  when 'Refrigeration'
280
-
312
+
281
313
  self.add_refrigeration(building_vintage,
282
314
  system['case_type'],
283
315
  system['cooling_capacity_per_length'],
@@ -293,23 +325,23 @@ class OpenStudio::Model::Model
293
325
  system['condenser_fan_pwr_curve_name'],
294
326
  thermal_zones[0])
295
327
  else
296
-
328
+
297
329
  OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "System type #{system['type']} is not recognized. This system will not be added.")
298
-
330
+
299
331
  end
300
332
 
301
333
  end
302
334
 
303
335
  OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished adding HVAC')
304
-
336
+
305
337
  return true
306
-
338
+
307
339
  end #add hvac
308
340
 
309
341
  private
310
-
342
+
311
343
  def get_zones_from_spaces_on_system(system)
312
-
344
+
313
345
  # Find all zones associated with these spaces
314
346
  thermal_zones = []
315
347
  system['space_names'].each do |space_name|
@@ -323,22 +355,22 @@ class OpenStudio::Model::Model
323
355
  if zone.empty?
324
356
  OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Space #{space_name} has no thermal zone; cannot add an HVAC system to this space.")
325
357
  next
326
- end
358
+ end
327
359
  thermal_zones << zone.get
328
- end
360
+ end
329
361
 
330
362
  return thermal_zones
331
-
363
+
332
364
  end
333
-
365
+
334
366
  def get_return_plenum_from_system(system)
335
367
 
336
368
  # Find the zone associated with the return plenum space name
337
369
  return_plenum = nil
338
-
370
+
339
371
  # Return nil if no return plenum
340
372
  return return_plenum if system['return_plenum'].nil?
341
-
373
+
342
374
  # Get the space
343
375
  space = self.getSpaceByName(system['return_plenum'])
344
376
  if space.empty?
@@ -346,16 +378,16 @@ class OpenStudio::Model::Model
346
378
  return return_plenum
347
379
  end
348
380
  space = space.get
349
-
381
+
350
382
  # Get the space's zone
351
383
  zone = space.thermalZone
352
384
  if zone.empty?
353
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Space #{space_name} has no thermal zone; cannot be a return plenum.")
385
+ OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Space #{space_name} has no thermal zone; cannot be a return plenum.")
354
386
  return return_plenum
355
- end
387
+ end
356
388
 
357
389
  return zone.get
358
-
390
+
359
391
  end
360
-
392
+
361
393
  end