openstudio-standards 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards.xlsx +0 -0
  3. data/data/standards/OpenStudio_Standards_boilers.json +62 -4
  4. data/data/standards/OpenStudio_Standards_chillers.json +778 -68
  5. data/data/standards/OpenStudio_Standards_construction_sets.json +52 -93
  6. data/data/standards/OpenStudio_Standards_curve_biquadratics.json +36 -36
  7. data/data/standards/OpenStudio_Standards_curve_quadratics.json +3 -3
  8. data/data/standards/OpenStudio_Standards_heat_pumps.json +840 -0
  9. data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +352 -0
  10. data/data/standards/OpenStudio_Standards_heat_rejection.json +48 -0
  11. data/data/standards/OpenStudio_Standards_motors.json +270 -0
  12. data/data/standards/OpenStudio_Standards_space_types.json +10390 -2824
  13. data/data/standards/OpenStudio_Standards_unitary_acs.json +794 -18
  14. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.ddy +538 -0
  15. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.epw +8768 -0
  16. data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.stat +493 -0
  17. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.ddy +536 -0
  18. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.epw +8768 -0
  19. data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.stat +554 -0
  20. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.ddy +536 -0
  21. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.epw +8768 -0
  22. data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.stat +554 -0
  23. data/data/weather/envelope_info.csv +6 -0
  24. data/lib/openstudio-standards.rb +10 -11
  25. data/lib/openstudio-standards/btap/compliance.rb +251 -969
  26. data/lib/openstudio-standards/btap/envelope.rb +1 -1
  27. data/lib/openstudio-standards/btap/fileio.rb +37 -5
  28. data/lib/openstudio-standards/btap/geometry.rb +27 -17
  29. data/lib/openstudio-standards/btap/hvac.rb +80 -27
  30. data/lib/openstudio-standards/hvac_sizing/{HVACSizing.CoilHeatingDXMultiSpeed.rb → Siz.CoilHeatingDXMultiSpeed.rb} +0 -0
  31. data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +30 -4
  32. data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerTwoSpeed.rb +61 -5
  33. data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerVariableSpeed.rb +37 -7
  34. data/lib/openstudio-standards/hvac_sizing/Siz.DistrictCooling.rb +27 -0
  35. data/lib/openstudio-standards/hvac_sizing/Siz.DistrictHeating.rb +27 -0
  36. data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsConstantSpeed.rb +55 -0
  37. data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsVariableSpeed.rb +55 -0
  38. data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +51 -9
  39. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +99 -17
  40. data/lib/openstudio-standards/hvac_sizing/Siz.PumpConstantSpeed.rb +1 -1
  41. data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +29 -6
  42. data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +16 -0
  43. data/lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb +43 -48
  44. data/lib/openstudio-standards/prototypes/Prototype.ControllerWaterCoil.rb +5 -9
  45. data/lib/openstudio-standards/prototypes/Prototype.Fan.rb +68 -0
  46. data/lib/openstudio-standards/prototypes/Prototype.FanConstantVolume.rb +39 -43
  47. data/lib/openstudio-standards/prototypes/Prototype.FanOnOff.rb +49 -51
  48. data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +55 -61
  49. data/lib/openstudio-standards/prototypes/Prototype.FanZoneExhaust.rb +8 -10
  50. data/lib/openstudio-standards/prototypes/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -20
  51. data/lib/openstudio-standards/prototypes/Prototype.Model.hvac.rb +330 -322
  52. data/lib/openstudio-standards/prototypes/Prototype.Model.rb +501 -446
  53. data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +221 -230
  54. data/lib/openstudio-standards/prototypes/Prototype.add_objects.rb +0 -2
  55. data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +130 -137
  56. data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +374 -291
  57. data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +146 -193
  58. data/lib/openstudio-standards/prototypes/Prototype.hvac_systems.rb +1315 -1113
  59. data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +65 -88
  60. data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +101 -156
  61. data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +46 -96
  62. data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +113 -123
  63. data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +356 -345
  64. data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +48 -103
  65. data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +115 -123
  66. data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +30 -39
  67. data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +32 -45
  68. data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +98 -258
  69. data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +429 -474
  70. data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +28 -36
  71. data/lib/openstudio-standards/prototypes/Prototype.strip_model.rb +7 -7
  72. data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +172 -146
  73. data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +46 -53
  74. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +885 -707
  75. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +48 -57
  76. data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +24 -31
  77. data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +80 -93
  78. data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +69 -0
  79. data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +60 -72
  80. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +104 -108
  81. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +190 -198
  82. data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +134 -146
  83. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +56 -60
  84. data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +151 -161
  85. data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +30 -34
  86. data/lib/openstudio-standards/standards/Standards.Construction.rb +116 -132
  87. data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +138 -0
  88. data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +11 -0
  89. data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +11 -0
  90. data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +16 -0
  91. data/lib/openstudio-standards/standards/Standards.Fan.rb +190 -236
  92. data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -2
  93. data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -2
  94. data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +168 -14
  95. data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -2
  96. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +33 -0
  97. data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +83 -0
  98. data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +22 -0
  99. data/lib/openstudio-standards/standards/Standards.Model.rb +2385 -1622
  100. data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +83 -35
  101. data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +805 -395
  102. data/lib/openstudio-standards/standards/Standards.Pump.rb +139 -119
  103. data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -2
  104. data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +16 -15
  105. data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +35 -0
  106. data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +7 -13
  107. data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +144 -59
  108. data/lib/openstudio-standards/standards/Standards.Space.rb +1509 -1326
  109. data/lib/openstudio-standards/standards/Standards.SpaceType.rb +254 -262
  110. data/lib/openstudio-standards/standards/Standards.SubSurface.rb +105 -105
  111. data/lib/openstudio-standards/standards/Standards.Surface.rb +27 -31
  112. data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +882 -157
  113. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +179 -69
  114. data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +75 -0
  115. data/lib/openstudio-standards/utilities/logging.rb +31 -38
  116. data/lib/openstudio-standards/utilities/simulation.rb +118 -82
  117. data/lib/openstudio-standards/version.rb +1 -1
  118. data/lib/openstudio-standards/weather/Weather.Model.rb +382 -390
  119. data/lib/openstudio-standards/weather/Weather.stat_file.rb +159 -78
  120. metadata +59 -6
@@ -1,6 +1,4 @@
1
1
 
2
2
  # open the class to add methods to size all HVAC equipment
3
3
  class OpenStudio::Model::Model
4
-
5
-
6
4
  end
@@ -1,36 +1,34 @@
1
1
 
2
2
  # Extend the class to add Medium Office specific stuff
3
3
  class OpenStudio::Model::Model
4
-
5
- def define_space_type_map(building_type, building_vintage, climate_zone)
4
+ def define_space_type_map(building_type, template, climate_zone)
6
5
  space_type_map = nil
7
- case building_vintage
6
+ case template
8
7
  when 'DOE Ref Pre-1980'
9
8
  space_type_map = {
10
9
  'Dining' => ['Dining'],
11
10
  'Kitchen' => ['Kitchen']
12
11
  }
13
- when 'DOE Ref 1980-2004','90.1-2010','90.1-2007','90.1-2004','90.1-2013'
12
+ when 'DOE Ref 1980-2004', '90.1-2010', '90.1-2007', '90.1-2004', '90.1-2013'
14
13
  space_type_map = {
15
14
  'Dining' => ['Dining'],
16
15
  'Kitchen' => ['Kitchen'],
17
16
  'Attic' => ['attic']
18
17
  }
19
-
18
+
20
19
  when 'NECB 2011'
21
- space_type_map ={
22
- "- undefined -" => ["attic"],
23
- "Dining - family space" => ["Dining"],
24
- "Food preparation" => ["Kitchen"]
20
+ space_type_map = {
21
+ '- undefined -' => ['attic'],
22
+ 'Dining - family space' => ['Dining'],
23
+ 'Food preparation' => ['Kitchen']
25
24
  }
26
25
  end
27
-
26
+
28
27
  return space_type_map
29
28
  end
30
29
 
31
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
32
-
33
- case building_vintage
30
+ def define_hvac_system_map(building_type, template, climate_zone)
31
+ case template
34
32
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
35
33
  system_to_space_map = [
36
34
  {
@@ -46,8 +44,8 @@ class OpenStudio::Model::Model
46
44
  'balanced_exhaust_fraction_schedule_name' => nil,
47
45
  'space_names' =>
48
46
  [
49
- 'Dining'
50
- ]
47
+ 'Dining'
48
+ ]
51
49
  },
52
50
  {
53
51
  'type' => 'Exhaust Fan',
@@ -58,8 +56,8 @@ class OpenStudio::Model::Model
58
56
  'balanced_exhaust_fraction_schedule_name' => nil,
59
57
  'space_names' =>
60
58
  [
61
- 'Kitchen'
62
- ]
59
+ 'Kitchen'
60
+ ]
63
61
  },
64
62
  {
65
63
  'type' => 'Refrigeration',
@@ -77,8 +75,8 @@ class OpenStudio::Model::Model
77
75
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
78
76
  'space_names' =>
79
77
  [
80
- 'Kitchen'
81
- ]
78
+ 'Kitchen'
79
+ ]
82
80
  },
83
81
  {
84
82
  'type' => 'Refrigeration',
@@ -96,8 +94,8 @@ class OpenStudio::Model::Model
96
94
  'condenser_fan_pwr_curve_name' => nil,
97
95
  'space_names' =>
98
96
  [
99
- 'Kitchen'
100
- ]
97
+ 'Kitchen'
98
+ ]
101
99
  }
102
100
  ]
103
101
  when '90.1-2004'
@@ -115,8 +113,8 @@ class OpenStudio::Model::Model
115
113
  'balanced_exhaust_fraction_schedule_name' => nil,
116
114
  'space_names' =>
117
115
  [
118
- 'Dining'
119
- ]
116
+ 'Dining'
117
+ ]
120
118
  },
121
119
  {
122
120
  'type' => 'Exhaust Fan',
@@ -127,8 +125,8 @@ class OpenStudio::Model::Model
127
125
  'balanced_exhaust_fraction_schedule_name' => nil,
128
126
  'space_names' =>
129
127
  [
130
- 'Kitchen'
131
- ]
128
+ 'Kitchen'
129
+ ]
132
130
  },
133
131
  {
134
132
  'type' => 'Refrigeration',
@@ -146,8 +144,8 @@ class OpenStudio::Model::Model
146
144
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
147
145
  'space_names' =>
148
146
  [
149
- 'Kitchen'
150
- ]
147
+ 'Kitchen'
148
+ ]
151
149
  },
152
150
  {
153
151
  'type' => 'Refrigeration',
@@ -165,8 +163,8 @@ class OpenStudio::Model::Model
165
163
  'condenser_fan_pwr_curve_name' => nil,
166
164
  'space_names' =>
167
165
  [
168
- 'Kitchen'
169
- ]
166
+ 'Kitchen'
167
+ ]
170
168
  }
171
169
  ]
172
170
  when '90.1-2007'
@@ -184,8 +182,8 @@ class OpenStudio::Model::Model
184
182
  'balanced_exhaust_fraction_schedule_name' => nil,
185
183
  'space_names' =>
186
184
  [
187
- 'Dining'
188
- ]
185
+ 'Dining'
186
+ ]
189
187
  },
190
188
  {
191
189
  'type' => 'Exhaust Fan',
@@ -196,8 +194,8 @@ class OpenStudio::Model::Model
196
194
  'balanced_exhaust_fraction_schedule_name' => nil,
197
195
  'space_names' =>
198
196
  [
199
- 'Kitchen'
200
- ]
197
+ 'Kitchen'
198
+ ]
201
199
  },
202
200
  {
203
201
  'type' => 'Refrigeration',
@@ -215,8 +213,8 @@ class OpenStudio::Model::Model
215
213
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
216
214
  'space_names' =>
217
215
  [
218
- 'Kitchen'
219
- ]
216
+ 'Kitchen'
217
+ ]
220
218
  },
221
219
  {
222
220
  'type' => 'Refrigeration',
@@ -234,8 +232,8 @@ class OpenStudio::Model::Model
234
232
  'condenser_fan_pwr_curve_name' => nil,
235
233
  'space_names' =>
236
234
  [
237
- 'Kitchen'
238
- ]
235
+ 'Kitchen'
236
+ ]
239
237
  }
240
238
  ]
241
239
  when '90.1-2007'
@@ -253,8 +251,8 @@ class OpenStudio::Model::Model
253
251
  'balanced_exhaust_fraction_schedule_name' => nil,
254
252
  'space_names' =>
255
253
  [
256
- 'Dining'
257
- ]
254
+ 'Dining'
255
+ ]
258
256
  },
259
257
  {
260
258
  'type' => 'Exhaust Fan',
@@ -265,8 +263,8 @@ class OpenStudio::Model::Model
265
263
  'balanced_exhaust_fraction_schedule_name' => nil,
266
264
  'space_names' =>
267
265
  [
268
- 'Kitchen'
269
- ]
266
+ 'Kitchen'
267
+ ]
270
268
  },
271
269
  {
272
270
  'type' => 'Refrigeration',
@@ -284,8 +282,8 @@ class OpenStudio::Model::Model
284
282
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
285
283
  'space_names' =>
286
284
  [
287
- 'Kitchen'
288
- ]
285
+ 'Kitchen'
286
+ ]
289
287
  },
290
288
  {
291
289
  'type' => 'Refrigeration',
@@ -303,8 +301,8 @@ class OpenStudio::Model::Model
303
301
  'condenser_fan_pwr_curve_name' => nil,
304
302
  'space_names' =>
305
303
  [
306
- 'Kitchen'
307
- ]
304
+ 'Kitchen'
305
+ ]
308
306
  }
309
307
  ]
310
308
  when '90.1-2010'
@@ -322,8 +320,8 @@ class OpenStudio::Model::Model
322
320
  'balanced_exhaust_fraction_schedule_name' => nil,
323
321
  'space_names' =>
324
322
  [
325
- 'Dining'
326
- ]
323
+ 'Dining'
324
+ ]
327
325
  },
328
326
  {
329
327
  'type' => 'Exhaust Fan',
@@ -334,8 +332,8 @@ class OpenStudio::Model::Model
334
332
  'balanced_exhaust_fraction_schedule_name' => nil,
335
333
  'space_names' =>
336
334
  [
337
- 'Kitchen'
338
- ]
335
+ 'Kitchen'
336
+ ]
339
337
  },
340
338
  {
341
339
  'type' => 'Refrigeration',
@@ -353,8 +351,8 @@ class OpenStudio::Model::Model
353
351
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
354
352
  'space_names' =>
355
353
  [
356
- 'Kitchen'
357
- ]
354
+ 'Kitchen'
355
+ ]
358
356
  },
359
357
  {
360
358
  'type' => 'Refrigeration',
@@ -372,8 +370,8 @@ class OpenStudio::Model::Model
372
370
  'condenser_fan_pwr_curve_name' => nil,
373
371
  'space_names' =>
374
372
  [
375
- 'Kitchen'
376
- ]
373
+ 'Kitchen'
374
+ ]
377
375
  }
378
376
  ]
379
377
  when '90.1-2013'
@@ -391,8 +389,8 @@ class OpenStudio::Model::Model
391
389
  'balanced_exhaust_fraction_schedule_name' => nil,
392
390
  'space_names' =>
393
391
  [
394
- 'Dining'
395
- ]
392
+ 'Dining'
393
+ ]
396
394
  },
397
395
  {
398
396
  'type' => 'Exhaust Fan',
@@ -403,8 +401,8 @@ class OpenStudio::Model::Model
403
401
  'balanced_exhaust_fraction_schedule_name' => nil,
404
402
  'space_names' =>
405
403
  [
406
- 'Kitchen'
407
- ]
404
+ 'Kitchen'
405
+ ]
408
406
  },
409
407
  {
410
408
  'type' => 'Refrigeration',
@@ -422,8 +420,8 @@ class OpenStudio::Model::Model
422
420
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
423
421
  'space_names' =>
424
422
  [
425
- 'Kitchen'
426
- ]
423
+ 'Kitchen'
424
+ ]
427
425
  },
428
426
  {
429
427
  'type' => 'Refrigeration',
@@ -441,53 +439,51 @@ class OpenStudio::Model::Model
441
439
  'condenser_fan_pwr_curve_name' => nil,
442
440
  'space_names' =>
443
441
  [
444
- 'Kitchen'
445
- ]
442
+ 'Kitchen'
443
+ ]
446
444
  }
447
445
  ]
448
446
 
449
447
  end
450
-
448
+
451
449
  return system_to_space_map
452
450
  end
453
-
454
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
455
-
456
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
457
-
451
+
452
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
453
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
454
+
458
455
  # add extra equipment for kitchen
459
- self.add_extra_equip_kitchen(building_vintage)
456
+ add_extra_equip_kitchen(template)
460
457
  # add extra infiltration for dining room door and attic
461
- self.add_door_infiltration(building_vintage,climate_zone)
458
+ add_door_infiltration(template, climate_zone)
462
459
  # add zone_mixing between kitchen and dining
463
- self.add_zone_mixing(building_vintage)
460
+ add_zone_mixing(template)
464
461
  # Update Sizing Zone
465
- self.update_sizing_zone(building_vintage)
462
+ update_sizing_zone(template)
466
463
  # adjust the cooling setpoint
467
- self.adjust_clg_setpoint(building_vintage,climate_zone)
464
+ adjust_clg_setpoint(template, climate_zone)
468
465
  # reset the design OA of kitchen
469
- self.reset_kitchen_OA(building_vintage)
470
-
471
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
472
-
466
+ reset_kitchen_oa(template)
467
+
468
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
469
+
473
470
  return true
474
-
475
- end #add hvac
471
+ end # add hvac
476
472
 
477
- def add_door_infiltration(building_vintage,climate_zone)
473
+ def add_door_infiltration(template, climate_zone)
478
474
  # add extra infiltration for dining room door and attic (there is no attic in 'DOE Ref Pre-1980')
479
- unless building_vintage == 'DOE Ref 1980-2004' or building_vintage == 'DOE Ref Pre-1980' or building_vintage == 'NECB 2011'
480
- dining_space = self.getSpaceByName('Dining').get
481
- attic_space = self.getSpaceByName('Attic').get
475
+ unless template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980' || template == 'NECB 2011'
476
+ dining_space = getSpaceByName('Dining').get
477
+ attic_space = getSpaceByName('Attic').get
482
478
  infiltration_diningdoor = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
483
479
  infiltration_attic = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
484
- infiltration_diningdoor.setName("Dining door Infiltration")
480
+ infiltration_diningdoor.setName('Dining door Infiltration')
485
481
  infiltration_per_zone_diningdoor = 0
486
482
  infiltration_per_zone_attic = 0.2378
487
- if building_vintage == '90.1-2004'
483
+ if template == '90.1-2004'
488
484
  infiltration_per_zone_diningdoor = 0.614474994
489
485
  infiltration_diningdoor.setSchedule(add_schedule('RestaurantSitDown DOOR_INFIL_SCH'))
490
- elsif building_vintage == '90.1-2007'
486
+ elsif template == '90.1-2007'
491
487
  case climate_zone
492
488
  when 'ASHRAE 169-2006-1A', 'ASHRAE 169-2006-2A', 'ASHRAE 169-2006-2B', 'ASHRAE 169-2006-3A', 'ASHRAE 169-2006-3B',
493
489
  'ASHRAE 169-2006-3C', 'ASHRAE 169-2006-4A', 'ASHRAE 169-2006-4B', 'ASHRAE 169-2006-4C'
@@ -497,7 +493,7 @@ class OpenStudio::Model::Model
497
493
  infiltration_per_zone_diningdoor = 0.389828222
498
494
  infiltration_diningdoor.setSchedule(add_schedule('RestaurantSitDown VESTIBULE_DOOR_INFIL_SCH'))
499
495
  end
500
- elsif building_vintage == '90.1-2010' or '90.1-2013'
496
+ elsif template == '90.1-2010' || template == '90.1-2013'
501
497
  case climate_zone
502
498
  when 'ASHRAE 169-2006-1A', 'ASHRAE 169-2006-2A', 'ASHRAE 169-2006-2B', 'ASHRAE 169-2006-3A', 'ASHRAE 169-2006-3B', 'ASHRAE 169-2006-3C'
503
499
  infiltration_per_zone_diningdoor = 0.614474994
@@ -515,33 +511,33 @@ class OpenStudio::Model::Model
515
511
  end
516
512
  end
517
513
 
518
- def update_exhaust_fan_efficiency(building_vintage)
519
- case building_vintage
514
+ def update_exhaust_fan_efficiency(template)
515
+ case template
520
516
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
521
- self.getFanZoneExhausts.sort.each do |exhaust_fan|
517
+ getFanZoneExhausts.sort.each do |exhaust_fan|
522
518
  fan_name = exhaust_fan.name.to_s
523
- if fan_name.include? "Dining"
519
+ if fan_name.include? 'Dining'
524
520
  exhaust_fan.setFanEfficiency(1)
525
521
  exhaust_fan.setPressureRise(0)
526
522
  end
527
523
  end
528
524
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
529
- self.getFanZoneExhausts.sort.each do |exhaust_fan|
525
+ getFanZoneExhausts.sort.each do |exhaust_fan|
530
526
  exhaust_fan.setFanEfficiency(1)
531
527
  exhaust_fan.setPressureRise(0.000001)
532
528
  end
533
529
  end
534
530
  end
535
531
 
536
- def add_zone_mixing(building_vintage)
532
+ def add_zone_mixing(template)
537
533
  # add zone_mixing between kitchen and dining
538
- space_kitchen = self.getSpaceByName('Kitchen').get
534
+ space_kitchen = getSpaceByName('Kitchen').get
539
535
  zone_kitchen = space_kitchen.thermalZone.get
540
- space_dining = self.getSpaceByName('Dining').get
536
+ space_dining = getSpaceByName('Dining').get
541
537
  zone_dining = space_dining.thermalZone.get
542
538
  zone_mixing_kitchen = OpenStudio::Model::ZoneMixing.new(zone_kitchen)
543
539
  zone_mixing_kitchen.setSchedule(add_schedule('RestaurantSitDown Hours_of_operation'))
544
- case building_vintage
540
+ case template
545
541
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
546
542
  zone_mixing_kitchen.setDesignFlowRate(1.828)
547
543
  when '90.1-2007', '90.1-2010', '90.1-2013'
@@ -554,15 +550,15 @@ class OpenStudio::Model::Model
554
550
  end
555
551
 
556
552
  # add extra equipment for kitchen
557
- def add_extra_equip_kitchen(building_vintage)
558
- kitchen_space = self.getSpaceByName('Kitchen')
553
+ def add_extra_equip_kitchen(template)
554
+ kitchen_space = getSpaceByName('Kitchen')
559
555
  kitchen_space = kitchen_space.get
560
556
  kitchen_space_type = kitchen_space.spaceType.get
561
557
  elec_equip_def1 = OpenStudio::Model::ElectricEquipmentDefinition.new(self)
562
558
  elec_equip_def2 = OpenStudio::Model::ElectricEquipmentDefinition.new(self)
563
- elec_equip_def1.setName("Kitchen Electric Equipment Definition1")
564
- elec_equip_def2.setName("Kitchen Electric Equipment Definition2")
565
- case building_vintage
559
+ elec_equip_def1.setName('Kitchen Electric Equipment Definition1')
560
+ elec_equip_def2.setName('Kitchen Electric Equipment Definition2')
561
+ case template
566
562
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
567
563
  elec_equip_def1.setFractionLatent(0)
568
564
  elec_equip_def1.setFractionRadiant(0.25)
@@ -570,7 +566,7 @@ class OpenStudio::Model::Model
570
566
  elec_equip_def2.setFractionLatent(0)
571
567
  elec_equip_def2.setFractionRadiant(0.25)
572
568
  elec_equip_def2.setFractionLost(0)
573
- if building_vintage == '90.1-2013'
569
+ if template == '90.1-2013'
574
570
  elec_equip_def1.setDesignLevel(457.5)
575
571
  elec_equip_def2.setDesignLevel(570)
576
572
  else
@@ -580,12 +576,12 @@ class OpenStudio::Model::Model
580
576
  # Create the electric equipment instance and hook it up to the space type
581
577
  elec_equip1 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def1)
582
578
  elec_equip2 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def2)
583
- elec_equip1.setName("Kitchen_Reach-in-Freezer")
584
- elec_equip2.setName("Kitchen_Reach-in-Refrigerator")
579
+ elec_equip1.setName('Kitchen_Reach-in-Freezer')
580
+ elec_equip2.setName('Kitchen_Reach-in-Refrigerator')
585
581
  elec_equip1.setSpaceType(kitchen_space_type)
586
582
  elec_equip2.setSpaceType(kitchen_space_type)
587
- elec_equip1.setSchedule(add_schedule("RestaurantSitDown ALWAYS_ON"))
588
- elec_equip2.setSchedule(add_schedule("RestaurantSitDown ALWAYS_ON"))
583
+ elec_equip1.setSchedule(add_schedule('RestaurantSitDown ALWAYS_ON'))
584
+ elec_equip2.setSchedule(add_schedule('RestaurantSitDown ALWAYS_ON'))
589
585
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
590
586
  elec_equip_def1.setDesignLevel(699)
591
587
  elec_equip_def1.setFractionLatent(0)
@@ -593,59 +589,59 @@ class OpenStudio::Model::Model
593
589
  elec_equip_def1.setFractionLost(1)
594
590
  # Create the electric equipment instance and hook it up to the space type
595
591
  elec_equip1 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def1)
596
- elec_equip1.setName("Kitchen_ExhFan_Equip")
592
+ elec_equip1.setName('Kitchen_ExhFan_Equip')
597
593
  elec_equip1.setSpaceType(kitchen_space_type)
598
- elec_equip1.setSchedule(add_schedule("RestaurantSitDown Kitchen_Exhaust_SCH"))
594
+ elec_equip1.setSchedule(add_schedule('RestaurantSitDown Kitchen_Exhaust_SCH'))
599
595
  end
600
596
  end
601
597
 
602
- def update_sizing_zone(building_vintage)
603
- case building_vintage
598
+ def update_sizing_zone(template)
599
+ case template
604
600
  when '90.1-2007', '90.1-2010', '90.1-2013'
605
- zone_sizing = self.getSpaceByName('Dining').get.thermalZone.get.sizingZone
601
+ zone_sizing = getSpaceByName('Dining').get.thermalZone.get.sizingZone
606
602
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
607
603
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0.003581176)
608
- zone_sizing = self.getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
604
+ zone_sizing = getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
609
605
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
610
606
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0)
611
607
  when '90.1-2004'
612
- zone_sizing = self.getSpaceByName('Dining').get.thermalZone.get.sizingZone
608
+ zone_sizing = getSpaceByName('Dining').get.thermalZone.get.sizingZone
613
609
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
614
610
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0.007111554)
615
- zone_sizing = self.getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
611
+ zone_sizing = getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
616
612
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
617
613
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0)
618
614
  end
619
615
  end
620
616
 
621
- def adjust_clg_setpoint(building_vintage,climate_zone)
622
- ['Dining','Kitchen'].each do |space_name|
623
- space_type_name = self.getSpaceByName(space_name).get.spaceType.get.name.get
617
+ def adjust_clg_setpoint(template, climate_zone)
618
+ ['Dining', 'Kitchen'].each do |space_name|
619
+ space_type_name = getSpaceByName(space_name).get.spaceType.get.name.get
624
620
  thermostat_name = space_type_name + ' Thermostat'
625
- thermostat = self.getThermostatSetpointDualSetpointByName(thermostat_name).get
626
- case building_vintage
621
+ thermostat = getThermostatSetpointDualSetpointByName(thermostat_name).get
622
+ case template
627
623
  when '90.1-2004', '90.1-2007', '90.1-2010'
628
624
  if climate_zone == 'ASHRAE 169-2006-2B' || climate_zone == 'ASHRAE 169-2006-1B' || climate_zone == 'ASHRAE 169-2006-3B'
629
625
  case space_name
630
626
  when 'Dining'
631
- thermostat.setCoolingSetpointTemperatureSchedule(add_schedule("RestaurantSitDown CLGSETP_SCH_NO_OPTIMUM"))
627
+ thermostat.setCoolingSetpointTemperatureSchedule(add_schedule('RestaurantSitDown CLGSETP_SCH_NO_OPTIMUM'))
632
628
  when 'Kitchen'
633
- thermostat.setCoolingSetpointTemperatureSchedule(add_schedule("RestaurantSitDown CLGSETP_KITCHEN_SCH_NO_OPTIMUM"))
629
+ thermostat.setCoolingSetpointTemperatureSchedule(add_schedule('RestaurantSitDown CLGSETP_KITCHEN_SCH_NO_OPTIMUM'))
634
630
  end
635
631
  end
636
632
  end
637
633
  end
638
634
  end
639
635
 
640
- # In order to provide sufficient OSA to replace exhaust flow through kitchen hoods (3,300 cfm),
641
- # modeled OSA to kitchen is different from OSA determined based on ASHRAE 62.1.
636
+ # In order to provide sufficient OSA to replace exhaust flow through kitchen hoods (3,300 cfm),
637
+ # modeled OSA to kitchen is different from OSA determined based on ASHRAE 62.1.
642
638
  # It takes into account the available OSA in dining as transfer air.
643
- def reset_kitchen_OA(building_vintage)
644
- space_kitchen = self.getSpaceByName('Kitchen').get
639
+ def reset_kitchen_oa(template)
640
+ space_kitchen = getSpaceByName('Kitchen').get
645
641
  ventilation = space_kitchen.designSpecificationOutdoorAir.get
646
642
  ventilation.setOutdoorAirFlowperPerson(0)
647
643
  ventilation.setOutdoorAirFlowperFloorArea(0)
648
- case building_vintage
644
+ case template
649
645
  when '90.1-2010', '90.1-2013'
650
646
  ventilation.setOutdoorAirFlowRate(1.21708392)
651
647
  when '90.1-2007'
@@ -655,11 +651,11 @@ class OpenStudio::Model::Model
655
651
  end
656
652
  end
657
653
 
658
- def update_waterheater_loss_coefficient(building_vintage)
659
- case building_vintage
654
+ def update_waterheater_loss_coefficient(template)
655
+ case template
660
656
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB 2011'
661
- self.getWaterHeaterMixeds.sort.each do |water_heater|
662
- if water_heater.name.to_s.include?("Booster")
657
+ getWaterHeaterMixeds.sort.each do |water_heater|
658
+ if water_heater.name.to_s.include?('Booster')
663
659
  water_heater.setOffCycleLossCoefficienttoAmbientTemperature(1.053159296)
664
660
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(1.053159296)
665
661
  else
@@ -667,15 +663,12 @@ class OpenStudio::Model::Model
667
663
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(9.643286505)
668
664
  end
669
665
  end
670
- end
666
+ end
671
667
  end
672
-
673
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
674
-
675
- self.update_waterheater_loss_coefficient(building_vintage)
676
-
668
+
669
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
670
+ update_waterheater_loss_coefficient(template)
671
+
677
672
  return true
678
-
679
673
  end
680
-
681
674
  end