honeybee-openstudio 2.3.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -97,9 +97,10 @@ module FromHoneybee
97
97
  shd_mat_name = openstudio_model.getMaterialByName(@hash[:shade_material])
98
98
  unless shd_mat_name.empty?
99
99
  @shade_material = shd_mat_name.get
100
+ obj_type = @shade_material.iddObject.name
100
101
  end
101
102
  unless @shade_material.nil?
102
- if @shade_material.is_a? OpenStudio::Model::StandardGlazing
103
+ if obj_type == 'OS:WindowMaterial:StandardGlazing'
103
104
  if @shade_location == 'Interior'
104
105
  os_materials[-1] = @shade_material
105
106
  elsif @shade_location == 'Exterior' | os_materials.length < 2
@@ -159,9 +160,12 @@ module FromHoneybee
159
160
  os_shade_control = OpenStudio::Model::ShadingControl.new(@shade_construction)
160
161
 
161
162
  # figure out the shading type
162
- if @shade_material.is_a? OpenStudio::Model::StandardGlazing
163
+ unless @shade_material.nil?
164
+ obj_type = @shade_material.iddObject.name
165
+ end
166
+ if obj_type == 'OS:WindowMaterial:StandardGlazing'
163
167
  shd_type = 'SwitchableGlazing'
164
- elsif @shade_material.is_a? OpenStudio::Model::Blind
168
+ elsif obj_type == 'OS:WindowMaterial:Blind'
165
169
  if @shade_location == 'Between'
166
170
  shd_type = 'BetweenGlassBlind'
167
171
  else
@@ -42,6 +42,7 @@ require 'from_honeybee/load/infiltration'
42
42
  require 'from_honeybee/load/ventilation'
43
43
  require 'from_honeybee/load/setpoint_thermostat'
44
44
  require 'from_honeybee/load/setpoint_humidistat'
45
+ require 'from_honeybee/ventcool/opening'
45
46
 
46
47
  require 'openstudio'
47
48
 
@@ -117,6 +118,9 @@ module FromHoneybee
117
118
  end
118
119
  os_space.setBuildingStory(story)
119
120
 
121
+ # keep track of all window ventilation objects
122
+ window_vent = {}
123
+
120
124
  # assign all of the faces to the room
121
125
  @hash[:faces].each do |face|
122
126
  ladybug_face = Face.new(face)
@@ -134,6 +138,9 @@ module FromHoneybee
134
138
  # assign aperture-level shades if they exist
135
139
  if face[:apertures]
136
140
  face[:apertures].each do |aperture|
141
+ if aperture[:properties][:energy][:vent_opening]
142
+ window_vent[aperture[:identifier]] = aperture[:properties][:energy][:vent_opening]
143
+ end
137
144
  if aperture[:outdoor_shades]
138
145
  unless os_shd_group
139
146
  os_shd_group = make_shade_group(openstudio_model, os_surface, os_space)
@@ -148,6 +155,9 @@ module FromHoneybee
148
155
  # assign door-level shades if they exist
149
156
  if face[:doors]
150
157
  face[:doors].each do |door|
158
+ if door[:properties][:energy][:vent_opening]
159
+ window_vent[door[:identifier]] = door[:properties][:energy][:vent_opening]
160
+ end
151
161
  if door[:outdoor_shades]
152
162
  unless os_shd_group
153
163
  os_shd_group = make_shade_group(openstudio_model, os_surface, os_space)
@@ -284,14 +294,12 @@ module FromHoneybee
284
294
 
285
295
  # assign setpoint if it exists
286
296
  if @hash[:properties][:energy][:setpoint]
287
- #thermostat object is created because heating and cooling schedule are required
288
- #fields.
297
+ # thermostat object is created because heating and cooling schedule are required
289
298
  setpoint_thermostat_space = SetpointThermostat.new(@hash[:properties][:energy][:setpoint])
290
299
  os_setpoint_thermostat_space = setpoint_thermostat_space.to_openstudio(openstudio_model)
291
300
  #set thermostat to thermal zone
292
301
  os_thermal_zone.setThermostatSetpointDualSetpoint(os_setpoint_thermostat_space)
293
- #humidistat object is created if humidifying or dehumidifying schedule is
294
- #specified.
302
+ # humidistat object is created if humidifying or dehumidifying schedule is specified
295
303
  if @hash[:properties][:energy][:setpoint][:humidifying_schedule] or @hash[:properties][:energy][:setpoint][:dehumidifying_schedule]
296
304
  setpoint_humidistat_space = SetpointHumidistat.new(@hash[:properties][:energy][:setpoint])
297
305
  os_setpoint_humidistat_space = setpoint_humidistat_space.to_openstudio(openstudio_model)
@@ -299,6 +307,20 @@ module FromHoneybee
299
307
  end
300
308
  end
301
309
 
310
+ # assign window ventilation objects if they exist
311
+ unless window_vent.empty?
312
+ window_vent.each do |sub_f_id, opening|
313
+ opt_sub_f = openstudio_model.getSubSurfaceByName(sub_f_id)
314
+ unless opt_sub_f.empty?
315
+ sub_f = opt_sub_f.get
316
+ window_vent = VentilationOpening.new(opening)
317
+ os_window_vent = window_vent.to_openstudio(
318
+ openstudio_model, sub_f, @hash[:properties][:energy][:window_vent_control])
319
+ os_window_vent.addToThermalZone(os_thermal_zone)
320
+ end
321
+ end
322
+ end
323
+
302
324
  os_space
303
325
  end
304
326
 
@@ -0,0 +1,635 @@
1
+ # *******************************************************************************
2
+ # Honeybee OpenStudio Gem, Copyright (c) 2020, Alliance for Sustainable
3
+ # Energy, LLC, Ladybug Tools LLC and other contributors. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # (1) Redistributions of source code must retain the above copyright notice,
9
+ # this list of conditions and the following disclaimer.
10
+ #
11
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # (3) Neither the name of the copyright holder nor the names of any contributors
16
+ # may be used to endorse or promote products derived from this software without
17
+ # specific prior written permission from the respective party.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
20
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
23
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
24
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
26
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ # *******************************************************************************
31
+
32
+ # Note: This file is copied directly from the "Create Typical DOE Building from Model" measure
33
+ # https://bcl.nrel.gov/node/85019
34
+ # It is intended that this file be re-copied if new system types are added
35
+
36
+ class OpenStudio::Model::Model
37
+ # Adds the HVAC system as derived from the combinations of CBECS 2012 MAINHT and MAINCL fields.
38
+ # Mapping between combinations and HVAC systems per http://www.nrel.gov/docs/fy08osti/41956.pdf
39
+ # Table C-31
40
+ def add_cbecs_hvac_system(standard, system_type, zones)
41
+ # the 'zones' argument includes zones that have heating, cooling, or both
42
+ # if the HVAC system type serves a single zone, handle zones with only heating separately by adding unit heaters
43
+ # applies to system types PTAC, PTHP, PSZ-AC, and Window AC
44
+ heated_and_cooled_zones = zones.select { |zone| standard.thermal_zone_heated?(zone) && standard.thermal_zone_cooled?(zone) }
45
+ heated_zones = zones.select { |zone| standard.thermal_zone_heated?(zone) }
46
+ cooled_zones = zones.select { |zone| standard.thermal_zone_cooled?(zone) }
47
+ cooled_only_zones = zones.select { |zone| !standard.thermal_zone_heated?(zone) && standard.thermal_zone_cooled?(zone) }
48
+ heated_only_zones = zones.select { |zone| standard.thermal_zone_heated?(zone) && !standard.thermal_zone_cooled?(zone) }
49
+ system_zones = heated_and_cooled_zones + cooled_only_zones
50
+
51
+ # system type naming convention:
52
+ # [ventilation strategy] [ cooling system and plant] [heating system and plant]
53
+
54
+ case system_type
55
+
56
+ when 'Baseboard electric'
57
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
58
+
59
+ when 'Baseboard gas boiler'
60
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
61
+
62
+ when 'Baseboard central air source heat pump'
63
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_only_zones)
64
+
65
+ when 'Baseboard district hot water'
66
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
67
+
68
+ when 'Direct evap coolers with baseboard electric'
69
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
70
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
71
+
72
+ when 'Direct evap coolers with baseboard gas boiler'
73
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
74
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
75
+
76
+ when 'Direct evap coolers with baseboard central air source heat pump'
77
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_zones)
78
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
79
+
80
+ when 'Direct evap coolers with baseboard district hot water'
81
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
82
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
83
+
84
+ when 'Direct evap coolers with forced air furnace'
85
+ # Using unit heater to represent forced air furnace to limit to one airloop per thermal zone.
86
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
87
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
88
+
89
+ when 'Direct evap coolers with gas unit heaters'
90
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
91
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
92
+
93
+ when 'Direct evap coolers with no heat'
94
+ standard.model_add_hvac_system(self, 'Evaporative Cooler', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
95
+
96
+ when 'DOAS with fan coil chiller with boiler'
97
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
98
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
99
+ zone_equipment_ventilation: false)
100
+
101
+ when 'DOAS with fan coil chiller with central air source heat pump'
102
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones)
103
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones,
104
+ zone_equipment_ventilation: false)
105
+
106
+ when 'DOAS with fan coil chiller with district hot water'
107
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones)
108
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones,
109
+ zone_equipment_ventilation: false)
110
+
111
+ when 'DOAS with fan coil chiller with baseboard electric'
112
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones)
113
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
114
+ zone_equipment_ventilation: false)
115
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
116
+
117
+ when 'DOAS with fan coil chiller with gas unit heaters'
118
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones)
119
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
120
+ zone_equipment_ventilation: false)
121
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
122
+
123
+ when 'DOAS with fan coil chiller with no heat'
124
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones)
125
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
126
+ zone_equipment_ventilation: false)
127
+
128
+ when 'DOAS with fan coil air-cooled chiller with boiler'
129
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
130
+ chilled_water_loop_cooling_type: 'AirCooled')
131
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
132
+ chilled_water_loop_cooling_type: 'AirCooled',
133
+ zone_equipment_ventilation: false)
134
+
135
+ when 'DOAS with fan coil air-cooled chiller with central air source heat pump'
136
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones,
137
+ chilled_water_loop_cooling_type: 'AirCooled')
138
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones,
139
+ chilled_water_loop_cooling_type: 'AirCooled',
140
+ zone_equipment_ventilation: false)
141
+
142
+ when 'DOAS with fan coil air-cooled chiller with district hot water'
143
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones,
144
+ chilled_water_loop_cooling_type: 'AirCooled')
145
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones,
146
+ chilled_water_loop_cooling_type: 'AirCooled',
147
+ zone_equipment_ventilation: false)
148
+
149
+ when 'DOAS with fan coil air-cooled chiller with baseboard electric'
150
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones,
151
+ chilled_water_loop_cooling_type: 'AirCooled')
152
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
153
+ chilled_water_loop_cooling_type: 'AirCooled',
154
+ zone_equipment_ventilation: false)
155
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
156
+
157
+ when 'DOAS with fan coil air-cooled chiller with gas unit heaters'
158
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones,
159
+ chilled_water_loop_cooling_type: 'AirCooled')
160
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
161
+ chilled_water_loop_cooling_type: 'AirCooled',
162
+ zone_equipment_ventilation: false)
163
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
164
+
165
+ when 'DOAS with fan coil air-cooled chiller with no heat'
166
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'Electricity', zones,
167
+ chilled_water_loop_cooling_type: 'AirCooled')
168
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
169
+ chilled_water_loop_cooling_type: 'AirCooled',
170
+ zone_equipment_ventilation: false)
171
+
172
+ when 'DOAS with fan coil district chilled water with boiler'
173
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones)
174
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones,
175
+ zone_equipment_ventilation: false)
176
+
177
+ when 'DOAS with fan coil district chilled water with central air source heat pump'
178
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'AirSourceHeatPump', znht = nil, cl = 'DistrictCooling', zones)
179
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'DistrictCooling', zones,
180
+ zone_equipment_ventilation: false)
181
+
182
+ when 'DOAS with fan coil district chilled water with district hot water'
183
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones)
184
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones,
185
+ zone_equipment_ventilation: false)
186
+
187
+ when 'DOAS with fan coil district chilled water with baseboard electric'
188
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
189
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones,
190
+ zone_equipment_ventilation: false)
191
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
192
+
193
+ when 'DOAS with fan coil district chilled water with gas unit heaters'
194
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
195
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones,
196
+ zone_equipment_ventilation: false)
197
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
198
+
199
+ when 'DOAS with fan coil district chilled water with no heat '
200
+ standard.model_add_hvac_system(self, 'DOAS', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
201
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones,
202
+ zone_equipment_ventilation: false)
203
+
204
+ when 'DOAS with VRF'
205
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'Electricity', znht = nil, cl = 'Electricity', zones,
206
+ air_loop_heating_type: 'DX',
207
+ air_loop_cooling_type: 'DX')
208
+ standard.model_add_hvac_system(self, 'VRF', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
209
+
210
+ when 'DOAS with water source heat pumps fluid cooler with boiler'
211
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
212
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
213
+ heat_pump_loop_cooling_type: 'FluidCooler',
214
+ zone_equipment_ventilation: false)
215
+
216
+ when 'DOAS with water source heat pumps cooling tower with boiler'
217
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
218
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
219
+ heat_pump_loop_cooling_type: 'CoolingTower',
220
+ zone_equipment_ventilation: false)
221
+
222
+ when 'DOAS with water source heat pumps with ground source heat pump'
223
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'Electricity', znht = nil, cl = 'Electricity', zones,
224
+ air_loop_heating_type: 'DX',
225
+ air_loop_cooling_type: 'DX')
226
+ standard.model_add_hvac_system(self, 'Ground Source Heat Pumps', ht = 'Electricity', znht = nil, cl = 'Electricity', zones,
227
+ zone_equipment_ventilation: false)
228
+
229
+ when 'DOAS with water source heat pumps district chilled water with district hot water'
230
+ standard.model_add_hvac_system(self, 'DOAS', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones)
231
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones,
232
+ zone_equipment_ventilation: false)
233
+
234
+ # ventilation provided by zone fan coil unit in fan coil systems
235
+ when 'Fan coil chiller with boiler'
236
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
237
+
238
+ when 'Fan coil chiller with central air source heat pump'
239
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones)
240
+
241
+ when 'Fan coil chiller with district hot water'
242
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones)
243
+
244
+ when 'Fan coil chiller with baseboard electric'
245
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones)
246
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
247
+
248
+ when 'Fan coil chiller with gas unit heaters'
249
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones)
250
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
251
+
252
+ when 'Fan coil chiller with no heat'
253
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones)
254
+
255
+ when 'Fan coil air-cooled chiller with boiler'
256
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
257
+ chilled_water_loop_cooling_type: 'AirCooled')
258
+
259
+ when 'Fan coil air-cooled chiller with central air source heat pump'
260
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', zones,
261
+ chilled_water_loop_cooling_type: 'AirCooled')
262
+
263
+ when 'Fan coil air-cooled chiller with district hot water'
264
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', zones,
265
+ chilled_water_loop_cooling_type: 'AirCooled')
266
+
267
+ when 'Fan coil air-cooled chiller with baseboard electric'
268
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
269
+ chilled_water_loop_cooling_type: 'AirCooled')
270
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
271
+
272
+ when 'Fan coil air-cooled chiller with gas unit heaters'
273
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
274
+ chilled_water_loop_cooling_type: 'AirCooled')
275
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
276
+
277
+ when 'Fan coil air-cooled chiller with no heat'
278
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'Electricity', zones,
279
+ chilled_water_loop_cooling_type: 'AirCooled')
280
+
281
+ when 'Fan coil district chilled water with boiler'
282
+ standard.model_add_hvac_system(self, 'Fan Coil ', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones)
283
+
284
+ when 'Fan coil district chilled water with central air source heat pump'
285
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'AirSourceHeatPump', znht = nil, cl = 'DistrictCooling', zones)
286
+
287
+ when 'Fan coil district chilled water with district hot water'
288
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones)
289
+
290
+ when 'Fan coil district chilled water with baseboard electric'
291
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
292
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
293
+
294
+ when 'Fan coil district chilled water with gas unit heaters'
295
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
296
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
297
+
298
+ when 'Fan coil district chilled water with no heat '
299
+ standard.model_add_hvac_system(self, 'Fan Coil', ht = nil, znht = nil, cl = 'DistrictCooling', zones)
300
+
301
+ when 'Forced air furnace'
302
+ # includes ventilation, whereas residential forced air furnace does not.
303
+ standard.model_add_hvac_system(self, 'Forced Air Furnace', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
304
+
305
+ when 'Gas unit heaters'
306
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
307
+
308
+ when 'PTAC with baseboard electric'
309
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
310
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
311
+
312
+ when 'PTAC with baseboard gas boiler'
313
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
314
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
315
+
316
+ when 'PTAC with baseboard district hot water'
317
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
318
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
319
+
320
+ when 'PTAC with gas unit heaters'
321
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
322
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
323
+
324
+ when 'PTAC with electric coil'
325
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = 'Electricity', cl = 'Electricity', system_zones)
326
+ # use 'Baseboard electric' for heated only zones
327
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
328
+
329
+ when 'PTAC with gas coil'
330
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = 'NaturalGas', cl = 'Electricity', system_zones)
331
+ # use 'Baseboard electric' for heated only zones
332
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
333
+
334
+ when 'PTAC with gas boiler'
335
+ standard.model_add_hvac_system(self, 'PTAC', ht = 'NaturalGas', znht = nil, cl = 'Electricity', system_zones)
336
+ # use 'Baseboard gas boiler' for heated only zones
337
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_only_zones)
338
+
339
+ when 'PTAC with central air source heat pump'
340
+ standard.model_add_hvac_system(self, 'PTAC', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', system_zones)
341
+ # use 'Baseboard central air source heat pump' for heated only zones
342
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_only_zones)
343
+
344
+ when 'PTAC with district hot water'
345
+ standard.model_add_hvac_system(self, 'PTAC', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', system_zones)
346
+ # use 'Baseboard district hot water heat' for heated only zones
347
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_only_zones)
348
+
349
+ when 'PTAC with no heat'
350
+ standard.model_add_hvac_system(self, 'PTAC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
351
+
352
+ when 'PTHP'
353
+ standard.model_add_hvac_system(self, 'PTHP', ht = 'Electricity', znht = nil, cl = 'Electricity', system_zones)
354
+ # use 'Baseboard electric' for heated only zones
355
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
356
+
357
+ when 'PSZ-AC with baseboard electric'
358
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
359
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
360
+
361
+ when 'PSZ-AC with baseboard gas boiler'
362
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
363
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
364
+
365
+ when 'PSZ-AC with baseboard district hot water'
366
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
367
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
368
+
369
+ when 'PSZ-AC with gas unit heaters'
370
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'Electricity', system_zones)
371
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
372
+
373
+ when 'PSZ-AC with electric coil'
374
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = 'Electricity', cl = 'Electricity', system_zones)
375
+ # use 'Baseboard electric' for heated only zones
376
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
377
+
378
+ when 'PSZ-AC with gas coil'
379
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = 'NaturalGas', cl = 'Electricity', system_zones)
380
+ # use 'Baseboard electric' for heated only zones
381
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
382
+
383
+ when 'PSZ-AC with gas boiler'
384
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'NaturalGas', znht = nil, cl = 'Electricity', system_zones)
385
+ # use 'Baseboard gas boiler' for heated only zones
386
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_only_zones)
387
+
388
+ when 'PSZ-AC with central air source heat pump'
389
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'AirSourceHeatPump', znht = nil, cl = 'Electricity', system_zones)
390
+ # use 'Baseboard central air source heat pump' for heated only zones
391
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_only_zones)
392
+
393
+ when 'PSZ-AC with district hot water'
394
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'DistrictHeating', znht = nil, cl = 'Electricity', system_zones)
395
+ # use 'Baseboard district hot water' for heated only zones
396
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_only_zones)
397
+
398
+ when 'PSZ-AC with no heat'
399
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
400
+
401
+ when 'PSZ-AC district chilled water with baseboard electric'
402
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'DistrictCooling', system_zones)
403
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
404
+
405
+ when 'PSZ-AC district chilled water with baseboard gas boiler'
406
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'DistrictCooling', system_zones)
407
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
408
+
409
+ when 'PSZ-AC district chilled water with gas unit heaters'
410
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'DistrictCooling', system_zones)
411
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
412
+
413
+ when 'PSZ-AC district chilled water with electric coil'
414
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = 'Electricity', cl = 'DistrictCooling', system_zones)
415
+ # use 'Baseboard electric' for heated only zones
416
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
417
+
418
+ when 'PSZ-AC district chilled water with gas coil'
419
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = 'NaturalGas', cl = 'DistrictCooling', system_zones)
420
+ # use 'Baseboard electric' for heated only zones
421
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
422
+
423
+ when 'PSZ-AC district chilled water with gas boiler'
424
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', system_zones)
425
+ # use 'Baseboard gas boiler' for heated only zones
426
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_only_zones)
427
+
428
+ when 'PSZ-AC district chilled water with central air source heat pump'
429
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'AirSourceHeatPump', znht = nil, cl = 'DistrictCooling', system_zones)
430
+ # use 'Baseboard central air source heat pump' for heated only zones
431
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_only_zones)
432
+
433
+ when 'PSZ-AC district chilled water with district hot water'
434
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', system_zones)
435
+ # use 'Baseboard district hot water' for heated only zones
436
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_only_zones)
437
+
438
+ when 'PSZ-AC district chilled water with no heat'
439
+ standard.model_add_hvac_system(self, 'PSZ-AC', ht = nil, znht = nil, cl = 'DistrictCooling', cooled_zones)
440
+
441
+ when 'PSZ-HP'
442
+ standard.model_add_hvac_system(self, 'PSZ-HP', ht = 'Electricity', znht = nil, cl = 'Electricity', system_zones)
443
+ # use 'Baseboard electric' for heated only zones
444
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_only_zones)
445
+
446
+ # PVAV systems by default use a DX coil for cooling
447
+ when 'PVAV with gas boiler reheat', 'Packaged VAV Air Loop with Boiler' # second enumeration for backwards compatibility with Tenant Star project
448
+ standard.model_add_hvac_system(self, 'PVAV Reheat', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'Electricity', zones)
449
+
450
+ when 'PVAV with central air source heat pump reheat'
451
+ standard.model_add_hvac_system(self, 'PVAV Reheat', ht = 'AirSourceHeatPump', znht = 'AirSourceHeatPump', cl = 'Electricity', zones)
452
+
453
+ when 'PVAV with district hot water reheat'
454
+ standard.model_add_hvac_system(self, 'PVAV Reheat', ht = 'DistrictHeating', znht = 'DistrictHeating', cl = 'Electricity', zones)
455
+
456
+ when 'PVAV with PFP boxes'
457
+ standard.model_add_hvac_system(self, 'PVAV PFP Boxes', ht = 'Electricity', znht = 'Electricity', cl = 'Electricity', zones)
458
+
459
+ when 'PVAV with gas heat with electric reheat'
460
+ standard.model_add_hvac_system(self, 'PVAV Reheat', ht = 'Gas', znht = 'Electricity', cl = 'Electricity', zones)
461
+
462
+ # all residential systems do not have ventilation
463
+ when 'Residential AC with baseboard electric'
464
+ standard.model_add_hvac_system(self, 'Residential AC', ht = nil, znht = nil, cl = nil, cooled_zones)
465
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
466
+
467
+ when 'Residential AC with baseboard gas boiler'
468
+ standard.model_add_hvac_system(self, 'Residential AC', ht = nil, znht = nil, cl = nil, cooled_zones)
469
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
470
+
471
+ when 'Residential AC with baseboard central air source heat pump'
472
+ standard.model_add_hvac_system(self, 'Residential AC', ht = nil, znht = nil, cl = nil, cooled_zones)
473
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_zones)
474
+
475
+ when 'Residential AC with baseboard district hot water'
476
+ standard.model_add_hvac_system(self, 'Residential AC', ht = nil, znht = nil, cl = nil, cooled_zones)
477
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
478
+
479
+ when 'Residential AC with residential forced air furnace'
480
+ standard.model_add_hvac_system(self, 'Residential Forced Air Furnace with AC', ht = nil, znht = nil, cl = nil, zones)
481
+
482
+ when 'Residential AC with no heat'
483
+ standard.model_add_hvac_system(self, 'Residential AC', ht = nil, znht = nil, cl = nil, cooled_zones)
484
+
485
+ when 'Residential heat pump'
486
+ standard.model_add_hvac_system(self, 'Residential Air Source Heat Pump', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
487
+
488
+ when 'Residential heat pump with no cooling'
489
+ standard.model_add_hvac_system(self, 'Residential Air Source Heat Pump', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
490
+
491
+ when 'Residential forced air furnace'
492
+ standard.model_add_hvac_system(self, 'Residential Forced Air Furnace', ht = 'NaturalGas', znht = nil, cl = nil, zones)
493
+
494
+ when 'VAV chiller with gas boiler reheat'
495
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'Electricity', zones)
496
+
497
+ when 'VAV chiller with central air source heat pump reheat'
498
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'AirSourceHeatPump', znht = 'AirSourceHeatPump', cl = 'Electricity', zones)
499
+
500
+ when 'VAV chiller with district hot water reheat'
501
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'DistrictHeating', znht = 'DistrictHeating', cl = 'Electricity', zones)
502
+
503
+ when 'VAV chiller with PFP boxes'
504
+ standard.model_add_hvac_system(self, 'VAV PFP Boxes', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'Electricity', zones)
505
+
506
+ when 'VAV chiller with gas coil reheat'
507
+ standard.model_add_hvac_system(self, 'VAV Gas Reheat', ht = 'NaturalGas', ht = 'NaturalGas', cl = 'Electricity', zones)
508
+
509
+ when 'VAV chiller with no reheat with baseboard electric'
510
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
511
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
512
+
513
+ when 'VAV chiller with no reheat with gas unit heaters'
514
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
515
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
516
+
517
+ when 'VAV chiller with no reheat with zone heat pump'
518
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones)
519
+ # Using PTHP to represent zone heat pump to limit to one airloop per thermal zone.
520
+ standard.model_add_hvac_system(self, 'PTHP', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
521
+
522
+ when 'VAV air-cooled chiller with gas boiler reheat'
523
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'Electricity', zones,
524
+ chilled_water_loop_cooling_type: 'AirCooled')
525
+
526
+ when 'VAV air-cooled chiller with central air source heat pump reheat '
527
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'AirSourceHeatPump', znht = 'AirSourceHeatPump', cl = 'Electricity', zones,
528
+ chilled_water_loop_cooling_type: 'AirCooled')
529
+
530
+ when 'VAV air-cooled chiller with district hot water reheat'
531
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'DistrictHeating', znht = 'DistrictHeating', cl = 'Electricity', zones,
532
+ chilled_water_loop_cooling_type: 'AirCooled')
533
+
534
+ when 'VAV air-cooled chiller with PFP boxes'
535
+ standard.model_add_hvac_system(self, 'VAV PFP Boxes', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'Electricity', zones,
536
+ chilled_water_loop_cooling_type: 'AirCooled')
537
+
538
+ when 'VAV air-cooled chiller with gas coil reheat'
539
+ standard.model_add_hvac_system(self, 'VAV Gas Reheat', ht = 'NaturalGas', ht = 'NaturalGas', cl = 'Electricity', zones,
540
+ chilled_water_loop_cooling_type: 'AirCooled')
541
+
542
+ when 'VAV air-cooled chiller with no reheat with baseboard electric'
543
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
544
+ chilled_water_loop_cooling_type: 'AirCooled')
545
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
546
+
547
+ when 'VAV air-cooled chiller with no reheat with gas unit heaters'
548
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
549
+ chilled_water_loop_cooling_type: 'AirCooled')
550
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
551
+
552
+ when 'VAV air-cooled chiller with no reheat with zone heat pump'
553
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
554
+ chilled_water_loop_cooling_type: 'AirCooled')
555
+ # Using PTHP to represent zone heat pump to limit to one airloop per thermal zone.
556
+ standard.model_add_hvac_system(self, 'PTHP', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
557
+
558
+ when 'VAV district chilled water with gas boiler reheat'
559
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'DistrictCooling', zones)
560
+
561
+ when 'VAV district chilled water with central air source heat pump reheat'
562
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'AirSourceHeatPump', znht = 'AirSourceHeatPump', cl = 'DistrictCooling', zones)
563
+
564
+ when 'VAV district chilled water with district hot water reheat'
565
+ standard.model_add_hvac_system(self, 'VAV Reheat', ht = 'DistrictHeating', znht = 'DistrictHeating', cl = 'DistrictCooling', zones)
566
+
567
+ when 'VAV district chilled water with PFP boxes'
568
+ standard.model_add_hvac_system(self, 'VAV PFP Boxes', ht = 'NaturalGas', znht = 'NaturalGas', cl = 'DistrictCooling', zones)
569
+
570
+ when 'VAV district chilled water with gas coil reheat'
571
+ standard.model_add_hvac_system(self, 'VAV Gas Reheat', ht = 'NaturalGas', ht = 'NaturalGas', cl = 'DistrictCooling', zones)
572
+
573
+ when 'VAV district chilled water with no reheat with baseboard electric'
574
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones)
575
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
576
+
577
+ when 'VAV district chilled water with no reheat with gas unit heaters'
578
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones)
579
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
580
+
581
+ when 'VAV district chilled water with no reheat with zone heat pump'
582
+ standard.model_add_hvac_system(self, 'VAV No Reheat', ht = 'NaturalGas', znht = nil, cl = 'DistrictCooling', zones)
583
+ # Using PTHP to represent zone heat pump to limit to one airloop per thermal zone.
584
+ standard.model_add_hvac_system(self, 'PTHP', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
585
+
586
+ when 'VRF'
587
+ standard.model_add_hvac_system(self, 'VRF', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
588
+
589
+ when 'Water source heat pumps fluid cooler with boiler'
590
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
591
+ heat_pump_loop_cooling_type: 'FluidCooler')
592
+
593
+ when 'Water source heat pumps cooling tower with boiler'
594
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'NaturalGas', znht = nil, cl = 'Electricity', zones,
595
+ heat_pump_loop_cooling_type: 'CoolingTower')
596
+
597
+ when 'Water source heat pumps with ground source heat pump'
598
+ standard.model_add_hvac_system(self, 'Ground Source Heat Pumps', ht = 'Electricity', znht = nil, cl = 'Electricity', zones)
599
+
600
+ when 'Water source heat pumps district chilled water with district hot water'
601
+ standard.model_add_hvac_system(self, 'Water Source Heat Pumps', ht = 'DistrictHeating', znht = nil, cl = 'DistrictCooling', zones)
602
+
603
+ when 'Window AC with baseboard electric'
604
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
605
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'Electricity', znht = nil, cl = nil, heated_zones)
606
+
607
+ when 'Window AC with baseboard gas boiler'
608
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
609
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
610
+
611
+ when 'Window AC with baseboard central air source heat pump'
612
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
613
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'AirSourceHeatPump', znht = nil, cl = nil, heated_zones)
614
+
615
+ when 'Window AC with baseboard district hot water'
616
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
617
+ standard.model_add_hvac_system(self, 'Baseboards', ht = 'DistrictHeating', znht = nil, cl = nil, heated_zones)
618
+
619
+ when 'Window AC with forced air furnace'
620
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
621
+ standard.model_add_hvac_system(self, 'Forced Air Furnace', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
622
+
623
+ when 'Window AC with unit heaters'
624
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
625
+ standard.model_add_hvac_system(self, 'Unit Heaters', ht = 'NaturalGas', znht = nil, cl = nil, heated_zones)
626
+
627
+ when 'Window AC with no heat'
628
+ standard.model_add_hvac_system(self, 'Window AC', ht = nil, znht = nil, cl = 'Electricity', cooled_zones)
629
+
630
+ else
631
+ puts "HVAC system type '#{system_type}' not recognized"
632
+
633
+ end
634
+ end
635
+ end