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,24 +1,23 @@
1
1
 
2
2
  # Extend the class to add Secondary School specific stuff
3
3
  class OpenStudio::Model::Model
4
-
5
- def define_space_type_map(building_type, building_vintage, climate_zone)
6
-
4
+ def define_space_type_map(building_type, template, climate_zone)
7
5
  space_type_map = nil
8
- case building_vintage
6
+ case template
9
7
  when 'NECB 2011'
10
- space_type_map ={
11
- "Washroom" => ["Bath_ZN_1_FLR_1"],
12
- "Conf./meet./multi-purpose" => ["Cafeteria_ZN_1_FLR_1"],
13
- "Lab - classrooms" => ["Computer_Class_ZN_1_FLR_1"],
14
- "Classroom/lecture/training" => ["Corner_Class_1_Pod_1_ZN_1_FLR_1", "Corner_Class_1_Pod_2_ZN_1_FLR_1", "Corner_Class_1_Pod_3_ZN_1_FLR_1", "Corner_Class_2_Pod_1_ZN_1_FLR_1", "Corner_Class_2_Pod_2_ZN_1_FLR_1", "Corner_Class_2_Pod_3_ZN_1_FLR_1", "Mult_Class_1_Pod_1_ZN_1_FLR_1", "Mult_Class_1_Pod_2_ZN_1_FLR_1", "Mult_Class_1_Pod_3_ZN_1_FLR_1", "Mult_Class_2_Pod_1_ZN_1_FLR_1", "Mult_Class_2_Pod_2_ZN_1_FLR_1", "Mult_Class_2_Pod_3_ZN_1_FLR_1"],
15
- "Corr. >= 2.4m wide" => ["Corridor_Pod_1_ZN_1_FLR_1", "Corridor_Pod_2_ZN_1_FLR_1", "Corridor_Pod_3_ZN_1_FLR_1", "Main_Corridor_ZN_1_FLR_1"],
16
- "Gym - play" => ["Gym_ZN_1_FLR_1"],
17
- "Food preparation" => ["Kitchen_ZN_1_FLR_1"],
18
- "Library - reading" => ["Library_Media_Center_ZN_1_FLR_1"],
19
- "Lobby - elevator" => ["Lobby_ZN_1_FLR_1"],
20
- "Electrical/Mechanical" => ["Mech_ZN_1_FLR_1"],
21
- "Office - enclosed" => ["Offices_ZN_1_FLR_1"]
8
+ sch = 'D'
9
+ space_type_map = {
10
+ "Washroom-sch-#{sch}" => ['Bath_ZN_1_FLR_1'],
11
+ 'Conf./meet./multi-purpose' => ['Cafeteria_ZN_1_FLR_1'],
12
+ 'Lab - classrooms' => ['Computer_Class_ZN_1_FLR_1'],
13
+ 'Classroom/lecture/training' => ['Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_1'],
14
+ "Corr. >= 2.4m wide-sch-#{sch}" => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_1'],
15
+ 'Gym - play' => ['Gym_ZN_1_FLR_1'],
16
+ 'Food preparation' => ['Kitchen_ZN_1_FLR_1'],
17
+ 'Library - reading' => ['Library_Media_Center_ZN_1_FLR_1'],
18
+ 'Lobby - elevator' => ['Lobby_ZN_1_FLR_1'],
19
+ "Electrical/Mechanical-sch-#{sch}" => ['Mech_ZN_1_FLR_1'],
20
+ 'Office - enclosed' => ['Offices_ZN_1_FLR_1']
22
21
  }
23
22
  else
24
23
  space_type_map = {
@@ -29,40 +28,18 @@ class OpenStudio::Model::Model
29
28
  'Cafeteria' => ['Cafeteria_ZN_1_FLR_1'],
30
29
  'Kitchen' => ['Kitchen_ZN_1_FLR_1'],
31
30
  'Restroom' => ['Bath_ZN_1_FLR_1', 'Bathrooms_ZN_1_FLR_1'],
32
- 'Corridor' => [
33
- 'Corridor_Pod_1_ZN_1_FLR_1',
34
- 'Corridor_Pod_2_ZN_1_FLR_1',
35
- 'Corridor_Pod_3_ZN_1_FLR_1',
36
- 'Main_Corridor_ZN_1_FLR_1'
37
- ],
38
- 'Classroom' => [
39
- 'Computer_Class_ZN_1_FLR_1',
40
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
41
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1',
42
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
43
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
44
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
45
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
46
- 'Library_Media_Center_ZN_1_FLR_1',
47
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
48
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
49
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
50
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1',
51
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
52
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1'
53
- ]
31
+ 'Corridor' => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_1'],
32
+ 'Classroom' => ['Computer_Class_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Library_Media_Center_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_1']
54
33
  }
55
34
  end
56
35
  return space_type_map
57
-
58
36
  end
59
37
 
60
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
61
-
38
+ def define_hvac_system_map(building_type, template, climate_zone)
62
39
  system_to_space_map = nil
63
-
64
- #case building_vintage
65
- #when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
40
+
41
+ # case template
42
+ # when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
66
43
  # system_to_space_map = [
67
44
  # {
68
45
  # 'type' => 'PVAV',
@@ -139,104 +116,78 @@ class OpenStudio::Model::Model
139
116
  # ]
140
117
  # }
141
118
  # ]
142
-
143
- #when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
119
+
120
+ # when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
144
121
  system_to_space_map = [
145
122
  {
146
123
  'type' => 'PVAV',
147
124
  'name' => 'PVAV_POD_1',
148
125
  'space_names' =>
149
- [
150
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
151
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
152
- 'Corridor_Pod_1_ZN_1_FLR_1',
153
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
154
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1'
155
- ]
126
+ ['Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_1']
156
127
  },
157
128
  {
158
129
  'type' => 'PVAV',
159
130
  'name' => 'PVAV_POD_2',
160
131
  'space_names' =>
161
- [
162
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
163
- 'Corridor_Pod_2_ZN_1_FLR_1',
164
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
165
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
166
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1'
167
- ]
132
+ ['Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_1']
168
133
  },
169
134
  {
170
135
  'type' => 'PVAV',
171
136
  'name' => 'PVAV_POD_3',
172
137
  'space_names' =>
173
- [
174
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
175
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
176
- 'Corridor_Pod_3_ZN_1_FLR_1',
177
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
178
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1'
179
- ]
138
+ ['Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_1']
180
139
  },
181
140
  {
182
141
  'type' => 'PVAV',
183
142
  'name' => 'PVAV_OTHER',
184
143
  'space_names' =>
185
- [
186
- 'Computer_Class_ZN_1_FLR_1',
187
- 'Main_Corridor_ZN_1_FLR_1',
188
- 'Lobby_ZN_1_FLR_1',
189
- 'Mech_ZN_1_FLR_1',
190
- 'Bath_ZN_1_FLR_1',
191
- 'Offices_ZN_1_FLR_1',
192
- 'Library_Media_Center_ZN_1_FLR_1'
193
- ]
144
+ ['Computer_Class_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_1', 'Lobby_ZN_1_FLR_1', 'Mech_ZN_1_FLR_1', 'Bath_ZN_1_FLR_1', 'Offices_ZN_1_FLR_1', 'Library_Media_Center_ZN_1_FLR_1']
194
145
  },
195
146
  {
196
147
  'type' => 'PSZ-AC',
197
148
  'name' => 'PSZ-AC_1-6',
198
149
  'space_names' =>
199
150
  [
200
- 'Kitchen_ZN_1_FLR_1'
201
- ]
151
+ 'Kitchen_ZN_1_FLR_1'
152
+ ]
202
153
  },
203
154
  {
204
155
  'type' => 'PSZ-AC',
205
156
  'name' => 'PSZ-AC_2-5',
206
157
  'space_names' =>
207
158
  [
208
- 'Gym_ZN_1_FLR_1'
209
- ]
159
+ 'Gym_ZN_1_FLR_1'
160
+ ]
210
161
  },
211
162
  {
212
163
  'type' => 'PSZ-AC',
213
164
  'name' => 'PSZ-AC_2-7',
214
165
  'space_names' =>
215
166
  [
216
- 'Cafeteria_ZN_1_FLR_1'
217
- ]
167
+ 'Cafeteria_ZN_1_FLR_1'
168
+ ]
218
169
  },
219
170
  {
220
171
  'type' => 'Exhaust Fan',
221
172
  'name' => 'Kitchen Exhaust Fan',
222
173
  'availability_sch_name' => 'SchoolPrimary Kitchen_Exhaust_SCH',
223
- 'flow_rate' => OpenStudio.convert(4500,'cfm','m^3/s').get,
174
+ 'flow_rate' => OpenStudio.convert(4500, 'cfm', 'm^3/s').get,
224
175
  'flow_fraction_schedule_name' => 'SchoolSecondary Kitchen_Exhaust_SCH_DCV',
225
176
  'balanced_exhaust_fraction_schedule_name' => 'SchoolSecondary Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule',
226
177
  'space_names' =>
227
178
  [
228
- 'Kitchen_ZN_1_FLR_1'
229
- ]
179
+ 'Kitchen_ZN_1_FLR_1'
180
+ ]
230
181
  },
231
182
  {
232
183
  'type' => 'Exhaust Fan',
233
184
  'name' => 'Bathrooms_ZN_1_FLR_1',
234
185
  'availability_sch_name' => 'SchoolPrimary Hours_of_operation',
235
- 'flow_rate' => OpenStudio.convert(600,'cfm','m^3/s').get,
186
+ 'flow_rate' => OpenStudio.convert(600, 'cfm', 'm^3/s').get,
236
187
  'space_names' =>
237
188
  [
238
- 'Bath_ZN_1_FLR_1'
239
- ]
189
+ 'Bath_ZN_1_FLR_1'
190
+ ]
240
191
  },
241
192
  {
242
193
  'type' => 'Refrigeration',
@@ -254,8 +205,8 @@ class OpenStudio::Model::Model
254
205
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
255
206
  'space_names' =>
256
207
  [
257
- 'Kitchen_ZN_1_FLR_1'
258
- ]
208
+ 'Kitchen_ZN_1_FLR_1'
209
+ ]
259
210
  },
260
211
  {
261
212
  'type' => 'Refrigeration',
@@ -273,27 +224,21 @@ class OpenStudio::Model::Model
273
224
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
274
225
  'space_names' =>
275
226
  [
276
- 'Kitchen_ZN_1_FLR_1'
277
- ]
227
+ 'Kitchen_ZN_1_FLR_1'
228
+ ]
278
229
  }
279
230
  ]
280
231
 
281
- #end
232
+ # end
282
233
 
283
234
  return system_to_space_map
284
-
285
235
  end
286
236
 
287
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
288
-
237
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
289
238
  return true
290
-
291
- end
292
-
293
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
294
-
239
+ end
240
+
241
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
295
242
  return true
296
-
297
243
  end
298
-
299
244
  end
@@ -1,34 +1,33 @@
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
  when 'NECB 2011'
20
- space_type_map ={
21
- "- undefined -" => ["attic"],
22
- "Dining - bar lounge/leisure" => ["Dining"],
23
- "Food preparation" => ["Kitchen"]
19
+ # dom = B
20
+ space_type_map = {
21
+ '- undefined -' => ['attic'],
22
+ 'Dining - bar lounge/leisure' => ['Dining'],
23
+ 'Food preparation' => ['Kitchen']
24
24
  }
25
25
  end
26
26
  return space_type_map
27
27
  end
28
28
 
29
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
30
-
31
- case building_vintage
29
+ def define_hvac_system_map(building_type, template, climate_zone)
30
+ case template
32
31
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
33
32
  system_to_space_map = [
34
33
  {
@@ -44,8 +43,8 @@ class OpenStudio::Model::Model
44
43
  'balanced_exhaust_fraction_schedule_name' => nil,
45
44
  'space_names' =>
46
45
  [
47
- 'Dining'
48
- ]
46
+ 'Dining'
47
+ ]
49
48
  },
50
49
  {
51
50
  'type' => 'Exhaust Fan',
@@ -56,8 +55,8 @@ class OpenStudio::Model::Model
56
55
  'balanced_exhaust_fraction_schedule_name' => nil,
57
56
  'space_names' =>
58
57
  [
59
- 'Kitchen'
60
- ]
58
+ 'Kitchen'
59
+ ]
61
60
  },
62
61
  {
63
62
  'type' => 'Refrigeration',
@@ -75,8 +74,8 @@ class OpenStudio::Model::Model
75
74
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
76
75
  'space_names' =>
77
76
  [
78
- 'Kitchen'
79
- ]
77
+ 'Kitchen'
78
+ ]
80
79
  },
81
80
  {
82
81
  'type' => 'Refrigeration',
@@ -94,8 +93,8 @@ class OpenStudio::Model::Model
94
93
  'condenser_fan_pwr_curve_name' => nil,
95
94
  'space_names' =>
96
95
  [
97
- 'Kitchen'
98
- ]
96
+ 'Kitchen'
97
+ ]
99
98
  }
100
99
  ]
101
100
  when '90.1-2004'
@@ -113,8 +112,8 @@ class OpenStudio::Model::Model
113
112
  'balanced_exhaust_fraction_schedule_name' => 'RestaurantFastFood Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule_2004',
114
113
  'space_names' =>
115
114
  [
116
- 'Kitchen'
117
- ]
115
+ 'Kitchen'
116
+ ]
118
117
  },
119
118
  {
120
119
  'type' => 'Exhaust Fan',
@@ -125,8 +124,8 @@ class OpenStudio::Model::Model
125
124
  'balanced_exhaust_fraction_schedule_name' => nil,
126
125
  'space_names' =>
127
126
  [
128
- 'Dining'
129
- ]
127
+ 'Dining'
128
+ ]
130
129
  },
131
130
  {
132
131
  'type' => 'Refrigeration',
@@ -144,8 +143,8 @@ class OpenStudio::Model::Model
144
143
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
145
144
  'space_names' =>
146
145
  [
147
- 'Kitchen'
148
- ]
146
+ 'Kitchen'
147
+ ]
149
148
  },
150
149
  {
151
150
  'type' => 'Refrigeration',
@@ -163,9 +162,9 @@ class OpenStudio::Model::Model
163
162
  'condenser_fan_pwr_curve_name' => nil,
164
163
  'space_names' =>
165
164
  [
166
- 'Kitchen'
167
- ]
168
- }
165
+ 'Kitchen'
166
+ ]
167
+ }
169
168
  ]
170
169
  when '90.1-2007', '90.1-2010'
171
170
  system_to_space_map = [
@@ -182,8 +181,8 @@ class OpenStudio::Model::Model
182
181
  'balanced_exhaust_fraction_schedule_name' => 'RestaurantFastFood Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule_2007_2010_2013',
183
182
  'space_names' =>
184
183
  [
185
- 'Kitchen'
186
- ]
184
+ 'Kitchen'
185
+ ]
187
186
  },
188
187
  {
189
188
  'type' => 'Exhaust Fan',
@@ -194,8 +193,8 @@ class OpenStudio::Model::Model
194
193
  'balanced_exhaust_fraction_schedule_name' => nil,
195
194
  'space_names' =>
196
195
  [
197
- 'Dining'
198
- ]
196
+ 'Dining'
197
+ ]
199
198
  },
200
199
  {
201
200
  'type' => 'Refrigeration',
@@ -213,8 +212,8 @@ class OpenStudio::Model::Model
213
212
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
214
213
  'space_names' =>
215
214
  [
216
- 'Kitchen'
217
- ]
215
+ 'Kitchen'
216
+ ]
218
217
  },
219
218
  {
220
219
  'type' => 'Refrigeration',
@@ -232,9 +231,9 @@ class OpenStudio::Model::Model
232
231
  'condenser_fan_pwr_curve_name' => nil,
233
232
  'space_names' =>
234
233
  [
235
- 'Kitchen'
236
- ]
237
- }
234
+ 'Kitchen'
235
+ ]
236
+ }
238
237
  ]
239
238
  when '90.1-2013'
240
239
  system_to_space_map = [
@@ -251,8 +250,8 @@ class OpenStudio::Model::Model
251
250
  'balanced_exhaust_fraction_schedule_name' => 'RestaurantFastFood Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule_2007_2010_2013',
252
251
  'space_names' =>
253
252
  [
254
- 'Kitchen'
255
- ]
253
+ 'Kitchen'
254
+ ]
256
255
  },
257
256
  {
258
257
  'type' => 'Exhaust Fan',
@@ -263,8 +262,8 @@ class OpenStudio::Model::Model
263
262
  'balanced_exhaust_fraction_schedule_name' => nil,
264
263
  'space_names' =>
265
264
  [
266
- 'Dining'
267
- ]
265
+ 'Dining'
266
+ ]
268
267
  },
269
268
  {
270
269
  'type' => 'Refrigeration',
@@ -282,8 +281,8 @@ class OpenStudio::Model::Model
282
281
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
283
282
  'space_names' =>
284
283
  [
285
- 'Kitchen'
286
- ]
284
+ 'Kitchen'
285
+ ]
287
286
  },
288
287
  {
289
288
  'type' => 'Refrigeration',
@@ -301,52 +300,50 @@ class OpenStudio::Model::Model
301
300
  'condenser_fan_pwr_curve_name' => nil,
302
301
  'space_names' =>
303
302
  [
304
- 'Kitchen'
305
- ]
306
- }
303
+ 'Kitchen'
304
+ ]
305
+ }
307
306
  ]
308
307
  end
309
308
 
310
309
  return system_to_space_map
311
310
  end
312
-
313
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
314
-
315
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
316
-
311
+
312
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
313
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
314
+
317
315
  # add extra equipment for kitchen
318
- self.add_extra_equip_kitchen(building_vintage)
316
+ add_extra_equip_kitchen(template)
319
317
  # add extra infiltration for dining room door and attic
320
- self.add_door_infiltration(building_vintage,climate_zone)
318
+ add_door_infiltration(template, climate_zone)
321
319
  # add zone_mixing between kitchen and dining
322
- self.add_zone_mixing(building_vintage)
320
+ add_zone_mixing(template)
323
321
  # Update Sizing Zone
324
- self.update_sizing_zone(building_vintage)
322
+ update_sizing_zone(template)
325
323
  # adjust the cooling setpoint
326
- self.adjust_clg_setpoint(building_vintage,climate_zone)
324
+ adjust_clg_setpoint(template, climate_zone)
327
325
  # reset the design OA of kitchen
328
- self.reset_kitchen_OA(building_vintage)
329
-
330
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
331
-
326
+ reset_kitchen_oa(template)
327
+
328
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
329
+
332
330
  return true
333
-
334
- end
331
+ end
335
332
 
336
- def add_door_infiltration(building_vintage,climate_zone)
333
+ def add_door_infiltration(template, climate_zone)
337
334
  # add extra infiltration for dining room door and attic (there is no attic in 'DOE Ref Pre-1980')
338
- unless building_vintage == 'DOE Ref 1980-2004' or building_vintage == 'DOE Ref Pre-1980'
339
- dining_space = self.getSpaceByName('Dining').get
340
- attic_space = self.getSpaceByName('Attic').get
335
+ unless template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980'
336
+ dining_space = getSpaceByName('Dining').get
337
+ attic_space = getSpaceByName('Attic').get
341
338
  infiltration_diningdoor = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
342
339
  infiltration_attic = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
343
- infiltration_diningdoor.setName("Dining door Infiltration")
340
+ infiltration_diningdoor.setName('Dining door Infiltration')
344
341
  infiltration_per_zone_diningdoor = 0
345
342
  infiltration_per_zone_attic = 0.0729
346
- if building_vintage == '90.1-2004'
343
+ if template == '90.1-2004'
347
344
  infiltration_per_zone_diningdoor = 0.902834611
348
345
  infiltration_diningdoor.setSchedule(add_schedule('RestaurantFastFood DOOR_INFIL_SCH'))
349
- elsif building_vintage == '90.1-2007'
346
+ elsif template == '90.1-2007'
350
347
  case climate_zone
351
348
  when 'ASHRAE 169-2006-1A', 'ASHRAE 169-2006-2A', 'ASHRAE 169-2006-2B', 'ASHRAE 169-2006-3A', 'ASHRAE 169-2006-3B',
352
349
  'ASHRAE 169-2006-3C', 'ASHRAE 169-2006-4A', 'ASHRAE 169-2006-4B', 'ASHRAE 169-2006-4C'
@@ -356,7 +353,7 @@ class OpenStudio::Model::Model
356
353
  infiltration_per_zone_diningdoor = 0.583798439
357
354
  infiltration_diningdoor.setSchedule(add_schedule('RestaurantFastFood VESTIBULE_DOOR_INFIL_SCH'))
358
355
  end
359
- elsif building_vintage == '90.1-2010' or '90.1-2013'
356
+ elsif template == '90.1-2010' || template == '90.1-2013'
360
357
  case climate_zone
361
358
  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'
362
359
  infiltration_per_zone_diningdoor = 0.902834611
@@ -375,15 +372,15 @@ class OpenStudio::Model::Model
375
372
  end
376
373
 
377
374
  # add extra equipment for kitchen
378
- def add_extra_equip_kitchen(building_vintage)
379
- kitchen_space = self.getSpaceByName('Kitchen')
375
+ def add_extra_equip_kitchen(template)
376
+ kitchen_space = getSpaceByName('Kitchen')
380
377
  kitchen_space = kitchen_space.get
381
378
  kitchen_space_type = kitchen_space.spaceType.get
382
379
  elec_equip_def1 = OpenStudio::Model::ElectricEquipmentDefinition.new(self)
383
380
  elec_equip_def2 = OpenStudio::Model::ElectricEquipmentDefinition.new(self)
384
- elec_equip_def1.setName("Kitchen Electric Equipment Definition1")
385
- elec_equip_def2.setName("Kitchen Electric Equipment Definition2")
386
- case building_vintage
381
+ elec_equip_def1.setName('Kitchen Electric Equipment Definition1')
382
+ elec_equip_def2.setName('Kitchen Electric Equipment Definition2')
383
+ case template
387
384
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
388
385
  elec_equip_def1.setFractionLatent(0)
389
386
  elec_equip_def1.setFractionRadiant(0.25)
@@ -391,7 +388,7 @@ class OpenStudio::Model::Model
391
388
  elec_equip_def2.setFractionLatent(0)
392
389
  elec_equip_def2.setFractionRadiant(0.25)
393
390
  elec_equip_def2.setFractionLost(0)
394
- if building_vintage == '90.1-2013'
391
+ if template == '90.1-2013'
395
392
  elec_equip_def1.setDesignLevel(457.5)
396
393
  elec_equip_def2.setDesignLevel(570)
397
394
  else
@@ -401,12 +398,12 @@ class OpenStudio::Model::Model
401
398
  # Create the electric equipment instance and hook it up to the space type
402
399
  elec_equip1 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def1)
403
400
  elec_equip2 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def2)
404
- elec_equip1.setName("Kitchen_Reach-in-Freezer")
405
- elec_equip2.setName("Kitchen_Reach-in-Refrigerator")
401
+ elec_equip1.setName('Kitchen_Reach-in-Freezer')
402
+ elec_equip2.setName('Kitchen_Reach-in-Refrigerator')
406
403
  elec_equip1.setSpaceType(kitchen_space_type)
407
404
  elec_equip2.setSpaceType(kitchen_space_type)
408
- elec_equip1.setSchedule(add_schedule("RestaurantFastFood ALWAYS_ON"))
409
- elec_equip2.setSchedule(add_schedule("RestaurantFastFood ALWAYS_ON"))
405
+ elec_equip1.setSchedule(add_schedule('RestaurantFastFood ALWAYS_ON'))
406
+ elec_equip2.setSchedule(add_schedule('RestaurantFastFood ALWAYS_ON'))
410
407
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
411
408
  elec_equip_def1.setDesignLevel(577)
412
409
  elec_equip_def1.setFractionLatent(0)
@@ -414,60 +411,59 @@ class OpenStudio::Model::Model
414
411
  elec_equip_def1.setFractionLost(1)
415
412
  # Create the electric equipment instance and hook it up to the space type
416
413
  elec_equip1 = OpenStudio::Model::ElectricEquipment.new(elec_equip_def1)
417
- elec_equip1.setName("Kitchen_ExhFan_Equip")
414
+ elec_equip1.setName('Kitchen_ExhFan_Equip')
418
415
  elec_equip1.setSpaceType(kitchen_space_type)
419
- elec_equip1.setSchedule(add_schedule("RestaurantFastFood Kitchen_Exhaust_SCH"))
416
+ elec_equip1.setSchedule(add_schedule('RestaurantFastFood Kitchen_Exhaust_SCH'))
420
417
  end
421
418
  end
422
419
 
423
- def update_sizing_zone(building_vintage)
424
- case building_vintage
420
+ def update_sizing_zone(template)
421
+ case template
425
422
  when '90.1-2007', '90.1-2010', '90.1-2013'
426
- zone_sizing = self.getSpaceByName('Dining').get.thermalZone.get.sizingZone
423
+ zone_sizing = getSpaceByName('Dining').get.thermalZone.get.sizingZone
427
424
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
428
425
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0.003581176)
429
- zone_sizing = self.getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
426
+ zone_sizing = getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
430
427
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
431
428
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0)
432
429
  when '90.1-2004'
433
- zone_sizing = self.getSpaceByName('Dining').get.thermalZone.get.sizingZone
430
+ zone_sizing = getSpaceByName('Dining').get.thermalZone.get.sizingZone
434
431
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
435
432
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0.007111554)
436
- zone_sizing = self.getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
433
+ zone_sizing = getSpaceByName('Kitchen').get.thermalZone.get.sizingZone
437
434
  zone_sizing.setCoolingDesignAirFlowMethod('DesignDayWithLimit')
438
435
  zone_sizing.setCoolingMinimumAirFlowperZoneFloorArea(0)
439
436
  end
440
437
  end
441
-
442
- def adjust_clg_setpoint(building_vintage,climate_zone)
443
- ['Dining','Kitchen'].each do |space_name|
444
- space_type_name = self.getSpaceByName(space_name).get.spaceType.get.name.get
438
+
439
+ def adjust_clg_setpoint(template, climate_zone)
440
+ ['Dining', 'Kitchen'].each do |space_name|
441
+ space_type_name = getSpaceByName(space_name).get.spaceType.get.name.get
445
442
  thermostat_name = space_type_name + ' Thermostat'
446
- thermostat = self.getThermostatSetpointDualSetpointByName(thermostat_name).get
447
- case building_vintage
443
+ thermostat = getThermostatSetpointDualSetpointByName(thermostat_name).get
444
+ case template
448
445
  when '90.1-2004', '90.1-2007', '90.1-2010'
449
446
  if climate_zone == 'ASHRAE 169-2006-2B' || climate_zone == 'ASHRAE 169-2006-1B' || climate_zone == 'ASHRAE 169-2006-3B'
450
447
  case space_name
451
448
  when 'Dining'
452
- thermostat.setCoolingSetpointTemperatureSchedule(add_schedule("RestaurantFastFood CLGSETP_SCH_NO_OPTIMUM"))
449
+ thermostat.setCoolingSetpointTemperatureSchedule(add_schedule('RestaurantFastFood CLGSETP_SCH_NO_OPTIMUM'))
453
450
  when 'Kitchen'
454
- thermostat.setCoolingSetpointTemperatureSchedule(add_schedule("RestaurantFastFood CLGSETP_KITCHEN_SCH_NO_OPTIMUM"))
451
+ thermostat.setCoolingSetpointTemperatureSchedule(add_schedule('RestaurantFastFood CLGSETP_KITCHEN_SCH_NO_OPTIMUM'))
455
452
  end
456
453
  end
457
454
  end
458
455
  end
459
456
  end
460
-
461
-
462
- # In order to provide sufficient OSA to replace exhaust flow through kitchen hoods (3,300 cfm),
463
- # modeled OSA to kitchen is different from OSA determined based on ASHRAE 62.1.
457
+
458
+ # In order to provide sufficient OSA to replace exhaust flow through kitchen hoods (3,300 cfm),
459
+ # modeled OSA to kitchen is different from OSA determined based on ASHRAE 62.1.
464
460
  # It takes into account the available OSA in dining as transfer air.
465
- def reset_kitchen_OA(building_vintage)
466
- space_kitchen = self.getSpaceByName('Kitchen').get
461
+ def reset_kitchen_oa(template)
462
+ space_kitchen = getSpaceByName('Kitchen').get
467
463
  ventilation = space_kitchen.designSpecificationOutdoorAir.get
468
464
  ventilation.setOutdoorAirFlowperPerson(0)
469
465
  ventilation.setOutdoorAirFlowperFloorArea(0)
470
- case building_vintage
466
+ case template
471
467
  when '90.1-2007', '90.1-2010', '90.1-2013'
472
468
  ventilation.setOutdoorAirFlowRate(1.14135966)
473
469
  when '90.1-2004', 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
@@ -475,33 +471,33 @@ class OpenStudio::Model::Model
475
471
  end
476
472
  end
477
473
 
478
- def update_exhaust_fan_efficiency(building_vintage)
479
- case building_vintage
474
+ def update_exhaust_fan_efficiency(template)
475
+ case template
480
476
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
481
- self.getFanZoneExhausts.sort.each do |exhaust_fan|
477
+ getFanZoneExhausts.sort.each do |exhaust_fan|
482
478
  fan_name = exhaust_fan.name.to_s
483
- if fan_name.include? "Dining"
479
+ if fan_name.include? 'Dining'
484
480
  exhaust_fan.setFanEfficiency(1)
485
481
  exhaust_fan.setPressureRise(0)
486
482
  end
487
483
  end
488
484
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
489
- self.getFanZoneExhausts.sort.each do |exhaust_fan|
485
+ getFanZoneExhausts.sort.each do |exhaust_fan|
490
486
  exhaust_fan.setFanEfficiency(1)
491
487
  exhaust_fan.setPressureRise(0.000001)
492
488
  end
493
489
  end
494
490
  end
495
-
496
- def add_zone_mixing(building_vintage)
491
+
492
+ def add_zone_mixing(template)
497
493
  # add zone_mixing between kitchen and dining
498
- space_kitchen = self.getSpaceByName('Kitchen').get
494
+ space_kitchen = getSpaceByName('Kitchen').get
499
495
  zone_kitchen = space_kitchen.thermalZone.get
500
- space_dining = self.getSpaceByName('Dining').get
496
+ space_dining = getSpaceByName('Dining').get
501
497
  zone_dining = space_dining.thermalZone.get
502
498
  zone_mixing_kitchen = OpenStudio::Model::ZoneMixing.new(zone_kitchen)
503
499
  zone_mixing_kitchen.setSchedule(add_schedule('RestaurantFastFood Hours_of_operation'))
504
- case building_vintage
500
+ case template
505
501
  when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
506
502
  zone_mixing_kitchen.setDesignFlowRate(0.834532374)
507
503
  when '90.1-2007', '90.1-2010', '90.1-2013'
@@ -513,23 +509,19 @@ class OpenStudio::Model::Model
513
509
  zone_mixing_kitchen.setDeltaTemperature(0)
514
510
  end
515
511
 
516
- def update_waterheater_loss_coefficient(building_vintage)
517
- case building_vintage
512
+ def update_waterheater_loss_coefficient(template)
513
+ case template
518
514
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB 2011'
519
- self.getWaterHeaterMixeds.sort.each do |water_heater|
515
+ getWaterHeaterMixeds.sort.each do |water_heater|
520
516
  water_heater.setOffCycleLossCoefficienttoAmbientTemperature(7.561562668)
521
517
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(7.561562668)
522
518
  end
523
- end
519
+ end
524
520
  end
525
521
 
522
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
523
+ update_waterheater_loss_coefficient(template)
526
524
 
527
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
528
-
529
- self.update_waterheater_loss_coefficient(building_vintage)
530
-
531
525
  return true
532
-
533
526
  end
534
-
535
527
  end