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,22 +1,22 @@
1
1
 
2
2
  # Extend the class to add Medium Office specific stuff
3
3
  class OpenStudio::Model::Model
4
-
5
4
  # TODO: The ElectricEquipment schedules are wrong in OpenStudio Standards... It needs to be 'RetailStandalone BLDG_EQUIP_SCH' for 90.1-2010 at least but probably all
6
5
  # TODO: There is an OpenStudio bug where two heat exchangers are on the equipment list and it references the same single heat exchanger for both. This doubles the heat recovery energy.
7
6
  # TODO: The HeatExchangerAirToAir is not calculating correctly. It does not equal the legacy IDF and has higher energy usage due to that.
8
7
  # TODO: Need to determine if WaterHeater can be alone or if we need to 'fake' it.
9
8
 
10
- def define_space_type_map(building_type, building_vintage, climate_zone)
9
+ def define_space_type_map(building_type, template, climate_zone)
11
10
  space_type_map = nil
12
- case building_vintage
11
+ case template
13
12
  when 'NECB 2011'
14
- space_type_map ={
15
- "Storage area" => ["Back_Space"],
16
- "Retail - sales" => ["Core_Retail", "Front_Retail", "Point_Of_Sale"],
17
- "Lobby - elevator" => ["Front_Entry"]
18
- }
19
-
13
+ sch = 'C'
14
+ space_type_map = {
15
+ 'Storage area' => ['Back_Space'],
16
+ 'Retail - sales' => ['Core_Retail', 'Front_Retail', 'Point_Of_Sale'],
17
+ 'Lobby - elevator' => ['Front_Entry']
18
+ }
19
+
20
20
  else
21
21
  space_type_map = {
22
22
  'Back_Space' => ['Back_Space'],
@@ -28,62 +28,53 @@ class OpenStudio::Model::Model
28
28
  return space_type_map
29
29
  end
30
30
 
31
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
31
+ def define_hvac_system_map(building_type, template, climate_zone)
32
32
  system_to_space_map = [
33
33
  {
34
- 'type' => 'PSZ-AC',
35
- 'space_names' => ['Back_Space', 'Core_Retail', 'Point_Of_Sale', 'Front_Retail']
34
+ 'type' => 'PSZ-AC',
35
+ 'space_names' => ['Back_Space', 'Core_Retail', 'Point_Of_Sale', 'Front_Retail']
36
36
  },
37
37
  {
38
- 'type' => 'UnitHeater',
39
- 'space_names' => ['Front_Entry']
38
+ 'type' => 'UnitHeater',
39
+ 'space_names' => ['Front_Entry']
40
40
  }
41
41
  ]
42
42
  return system_to_space_map
43
43
  end
44
-
45
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
46
-
47
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
48
44
 
45
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
46
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
49
47
 
50
- # Add the door infiltration for vintage 2004,2007,2010,2013
51
- case building_vintage
52
- when '90.1-2004','90.1-2007','90.1-2010','90.1-2013'
53
- entry_space = self.getSpaceByName('Front_Entry').get
48
+ # Add the door infiltration for template 2004,2007,2010,2013
49
+ case template
50
+ when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
51
+ entry_space = getSpaceByName('Front_Entry').get
54
52
  infiltration_entry = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
55
- infiltration_entry.setName("Entry door Infiltration")
53
+ infiltration_entry.setName('Entry door Infiltration')
56
54
  infiltration_per_zone = 1.418672682
57
55
  infiltration_entry.setDesignFlowRate(infiltration_per_zone)
58
56
  infiltration_entry.setSchedule(add_schedule('RetailStandalone INFIL_Door_Opening_SCH'))
59
57
  infiltration_entry.setSpace(entry_space)
60
- else
61
- # do nothing
62
58
  end
63
59
 
64
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
65
-
60
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
61
+
66
62
  return true
67
-
68
63
  end
69
64
 
70
- def update_waterheater_loss_coefficient(building_vintage)
71
- case building_vintage
65
+ def update_waterheater_loss_coefficient(template)
66
+ case template
72
67
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB 2011'
73
- self.getWaterHeaterMixeds.sort.each do |water_heater|
68
+ getWaterHeaterMixeds.sort.each do |water_heater|
74
69
  water_heater.setOffCycleLossCoefficienttoAmbientTemperature(4.10807252)
75
70
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(4.10807252)
76
71
  end
77
- end
78
- end
79
-
80
-
81
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
72
+ end
73
+ end
82
74
 
83
- self.update_waterheater_loss_coefficient(building_vintage)
75
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
76
+ update_waterheater_loss_coefficient(template)
84
77
 
85
78
  return true
86
-
87
79
  end
88
-
89
80
  end
@@ -1,32 +1,26 @@
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
8
-
6
+ case template
7
+
9
8
  when 'NECB 2011'
10
- space_type_map ={
11
- "Retail - sales" => ["LGstore1", "LGstore2", "SMstore1", "SMstore2", "SMstore3", "SMstore4", "SMstore5", "SMstore6", "SMstore7", "SMstore8"]
9
+ sch = 'C'
10
+ space_type_map = {
11
+ 'Retail - sales' => ['LGstore1', 'LGstore2', 'SMstore1', 'SMstore2', 'SMstore3', 'SMstore4', 'SMstore5', 'SMstore6', 'SMstore7', 'SMstore8']
12
12
  }
13
13
  else
14
14
  space_type_map = {
15
- 'Strip mall - type 1' => [
16
- 'LGstore1', 'SMstore1'
17
- ],
18
- 'Strip mall - type 2' => [
19
- 'SMstore2', 'SMstore3', 'SMstore4'
20
- ],
21
- 'Strip mall - type 3' => [
22
- 'LGstore2', 'SMstore5', 'SMstore6', 'SMstore7', 'SMstore8'
23
- ]
15
+ 'Strip mall - type 1' => ['LGstore1', 'SMstore1'],
16
+ 'Strip mall - type 2' => ['SMstore2', 'SMstore3', 'SMstore4'],
17
+ 'Strip mall - type 3' => ['LGstore2', 'SMstore5', 'SMstore6', 'SMstore7', 'SMstore8']
24
18
  }
25
19
  end
26
20
  return space_type_map
27
21
  end
28
22
 
29
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
23
+ def define_hvac_system_map(building_type, template, climate_zone)
30
24
  system_to_space_map = [
31
25
  {
32
26
  'type' => 'PSZ-AC',
@@ -57,7 +51,7 @@ class OpenStudio::Model::Model
57
51
  'name' => 'PSZ-AC_5',
58
52
  'space_names' => ['SMstore4'],
59
53
  'hvac_op_sch_index' => 2
60
- },{
54
+ }, {
61
55
  'type' => 'PSZ-AC',
62
56
  'name' => 'PSZ-AC_6',
63
57
  'space_names' => ['LGSTORE2'],
@@ -89,62 +83,55 @@ class OpenStudio::Model::Model
89
83
  ]
90
84
  return system_to_space_map
91
85
  end
92
-
93
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
94
-
95
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
96
-
97
- system_to_space_map = define_hvac_system_map(building_type, building_vintage, climate_zone)
86
+
87
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
88
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
89
+
90
+ system_to_space_map = define_hvac_system_map(building_type, template, climate_zone)
98
91
 
99
92
  # Add infiltration door opening
100
93
  # Spaces names to design infiltration rates (m3/s)
101
- case building_vintage
102
- when '90.1-2004','90.1-2007','90.1-2010', '90.1-2013'
103
- door_infiltration_map = { ['LGstore1','LGstore2'] => 0.388884328,
104
- ['SMstore1','SMstore2', 'SMstore3', 'SMstore4','SMstore5', 'SMstore6', 'SMstore7', 'SMstore8']=>0.222287037}
94
+ case template
95
+ when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013'
96
+ door_infiltration_map = { ['LGstore1', 'LGstore2'] => 0.388884328,
97
+ ['SMstore1', 'SMstore2', 'SMstore3', 'SMstore4', 'SMstore5', 'SMstore6', 'SMstore7', 'SMstore8'] => 0.222287037 }
105
98
 
106
99
  door_infiltration_map.each_pair do |space_names, infiltration_design_flowrate|
107
100
  space_names.each do |space_name|
108
- space = self.getSpaceByName(space_name).get
101
+ space = getSpaceByName(space_name).get
109
102
  # Create the infiltration object and hook it up to the space type
110
103
  infiltration = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(self)
111
104
  infiltration.setName("#{space_name} Door Open Infiltration")
112
105
  infiltration.setSpace(space)
113
106
  infiltration.setDesignFlowRate(infiltration_design_flowrate)
114
- infiltration_schedule = self.add_schedule('RetailStripmall INFIL_Door_Opening_SCH')
107
+ infiltration_schedule = add_schedule('RetailStripmall INFIL_Door_Opening_SCH')
115
108
  if infiltration_schedule.nil?
116
- OpenStudio::logFree(OpenStudio::Error, 'openstudio.model.Model', "Can't find schedule (RetailStripmall INFIL_Door_Opening_SCH).")
109
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', "Can't find schedule (RetailStripmall INFIL_Door_Opening_SCH).")
117
110
  return false
118
111
  else
119
112
  infiltration.setSchedule(infiltration_schedule)
120
113
  end
121
114
  end
122
115
  end
123
- else
124
- # do nothing for the old vintage
125
116
  end
126
117
 
127
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
118
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
128
119
  return true
129
- end #add hvac
130
-
120
+ end # add hvac
131
121
 
132
- def update_waterheater_loss_coefficient(building_vintage)
133
- case building_vintage
122
+ def update_waterheater_loss_coefficient(template)
123
+ case template
134
124
  when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB 2011'
135
- self.getWaterHeaterMixeds.sort.each do |water_heater|
125
+ getWaterHeaterMixeds.sort.each do |water_heater|
136
126
  water_heater.setOffCycleLossCoefficienttoAmbientTemperature(1.205980747)
137
127
  water_heater.setOnCycleLossCoefficienttoAmbientTemperature(1.205980747)
138
128
  end
139
- end
129
+ end
140
130
  end
141
-
142
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
143
131
 
144
- self.update_waterheater_loss_coefficient(building_vintage)
145
-
132
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
133
+ update_waterheater_loss_coefficient(template)
134
+
146
135
  return true
147
-
148
136
  end
149
-
150
137
  end
@@ -1,14 +1,11 @@
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
-
7
-
4
+ def define_space_type_map(building_type, template, climate_zone)
8
5
  space_type_map = nil
9
-
10
- case building_vintage
11
- when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
6
+
7
+ case template
8
+ when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004'
12
9
  space_type_map = {
13
10
  'Office' => ['Offices_ZN_1_FLR_1', 'Offices_ZN_1_FLR_2'],
14
11
  'Lobby' => ['Lobby_ZN_1_FLR_2', 'Lobby_ZN_1_FLR_1'],
@@ -20,50 +17,23 @@ class OpenStudio::Model::Model
20
17
  'Restroom' => ['Bathrooms_ZN_1_FLR_2', 'Bathrooms_ZN_1_FLR_1'],
21
18
  'Auditorium' => ['Auditorium_ZN_1_FLR_1'],
22
19
  'Library' => ['LIBRARY_MEDIA_CENTER_ZN_1_FLR_2'],
23
- 'Corridor' => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2',
24
- 'Main_Corridor_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_1',
25
- 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2',
26
- 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2'],
27
- 'Classroom' => [
28
- 'Mult_Class_2_Pod_2_ZN_1_FLR_2',
29
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1',
30
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
31
- 'Mult_Class_2_Pod_1_ZN_1_FLR_2',
32
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
33
- 'Corner_Class_2_Pod_1_ZN_1_FLR_2',
34
- 'Corner_Class_1_Pod_2_ZN_1_FLR_2',
35
- 'Mult_Class_1_Pod_1_ZN_1_FLR_2',
36
- 'Corner_Class_2_Pod_2_ZN_1_FLR_2',
37
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
38
- 'Mult_Class_2_Pod_3_ZN_1_FLR_2',
39
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
40
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
41
- 'Mult_Class_1_Pod_2_ZN_1_FLR_2',
42
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
43
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1',
44
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
45
- 'Corner_Class_1_Pod_1_ZN_1_FLR_2',
46
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1',
47
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
48
- 'Corner_Class_1_Pod_3_ZN_1_FLR_2',
49
- 'Mult_Class_1_Pod_3_ZN_1_FLR_2',
50
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
51
- 'Corner_Class_2_Pod_3_ZN_1_FLR_2'
52
- ]
20
+ 'Corridor' => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2'],
21
+ 'Classroom' => ['Mult_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_1_ZN_1_FLR_2', 'Corner_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_2', 'Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_2', 'Mult_Class_1_Pod_3_ZN_1_FLR_2', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_2']
53
22
  }
54
23
  when 'NECB 2011'
55
- space_type_map ={
56
- "Audience - auditorium" => ["Auditorium_ZN_1_FLR_1"],
57
- "Gym - play" => ["Aux_Gym_ZN_1_FLR_1", "Gym_ZN_1_FLR_1"],
58
- "Washroom" => ["Bathrooms_ZN_1_FLR_1", "Bathrooms_ZN_1_FLR_2"],
59
- "Conf./meet./multi-purpose" => ["Cafeteria_ZN_1_FLR_1"],
60
- "Classroom/lecture/training" => ["Corner_Class_1_Pod_1_ZN_1_FLR_1", "Corner_Class_1_Pod_1_ZN_1_FLR_2", "Corner_Class_1_Pod_2_ZN_1_FLR_1", "Corner_Class_1_Pod_2_ZN_1_FLR_2", "Corner_Class_1_Pod_3_ZN_1_FLR_1", "Corner_Class_1_Pod_3_ZN_1_FLR_2", "Corner_Class_2_Pod_1_ZN_1_FLR_1", "Corner_Class_2_Pod_1_ZN_1_FLR_2", "Corner_Class_2_Pod_2_ZN_1_FLR_1", "Corner_Class_2_Pod_2_ZN_1_FLR_2", "Corner_Class_2_Pod_3_ZN_1_FLR_1", "Corner_Class_2_Pod_3_ZN_1_FLR_2", "Mult_Class_1_Pod_1_ZN_1_FLR_1", "Mult_Class_1_Pod_1_ZN_1_FLR_2", "Mult_Class_1_Pod_2_ZN_1_FLR_1", "Mult_Class_1_Pod_2_ZN_1_FLR_2", "Mult_Class_1_Pod_3_ZN_1_FLR_1", "Mult_Class_1_Pod_3_ZN_1_FLR_2", "Mult_Class_2_Pod_1_ZN_1_FLR_1", "Mult_Class_2_Pod_1_ZN_1_FLR_2", "Mult_Class_2_Pod_2_ZN_1_FLR_1", "Mult_Class_2_Pod_2_ZN_1_FLR_2", "Mult_Class_2_Pod_3_ZN_1_FLR_1", "Mult_Class_2_Pod_3_ZN_1_FLR_2"],
61
- "Corr. >= 2.4m wide" => ["Corridor_Pod_1_ZN_1_FLR_1", "Corridor_Pod_1_ZN_1_FLR_2", "Corridor_Pod_2_ZN_1_FLR_1", "Corridor_Pod_2_ZN_1_FLR_2", "Corridor_Pod_3_ZN_1_FLR_1", "Corridor_Pod_3_ZN_1_FLR_2", "Main_Corridor_ZN_1_FLR_1", "Main_Corridor_ZN_1_FLR_2"],
62
- "Food preparation" => ["Kitchen_ZN_1_FLR_1"],
63
- "Library - reading" => ["LIBRARY_MEDIA_CENTER_ZN_1_FLR_2"],
64
- "Lobby - elevator" => ["Lobby_ZN_1_FLR_1", "Lobby_ZN_1_FLR_2"],
65
- "Electrical/Mechanical" => ["Mech_ZN_1_FLR_1", "Mech_ZN_1_FLR_2"],
66
- "Office - enclosed" => ["Offices_ZN_1_FLR_1", "Offices_ZN_1_FLR_2"]
24
+ sch = 'D'
25
+ space_type_map = {
26
+ 'Audience - auditorium' => ['Auditorium_ZN_1_FLR_1'],
27
+ 'Gym - play' => ['Aux_Gym_ZN_1_FLR_1', 'Gym_ZN_1_FLR_1'],
28
+ 'Washroom' => ['Bathrooms_ZN_1_FLR_1', 'Bathrooms_ZN_1_FLR_2'],
29
+ 'Conf./meet./multi-purpose' => ['Cafeteria_ZN_1_FLR_1'],
30
+ 'Classroom/lecture/training' => ['Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_2', 'Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_2', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_2', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_2', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_2', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_2', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_2', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_2', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_2'],
31
+ "Corr. >= 2.4m wide-sch-#{sch}" => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_2'],
32
+ 'Food preparation' => ['Kitchen_ZN_1_FLR_1'],
33
+ 'Library - reading' => ['LIBRARY_MEDIA_CENTER_ZN_1_FLR_2'],
34
+ 'Lobby - elevator' => ['Lobby_ZN_1_FLR_1', 'Lobby_ZN_1_FLR_2'],
35
+ "Electrical/Mechanical-sch-#{sch}" => ['Mech_ZN_1_FLR_1', 'Mech_ZN_1_FLR_2'],
36
+ 'Office - enclosed' => ['Offices_ZN_1_FLR_1', 'Offices_ZN_1_FLR_2']
67
37
  }
68
38
  else
69
39
  space_type_map = {
@@ -76,191 +46,115 @@ class OpenStudio::Model::Model
76
46
  'Restroom' => ['Bathrooms_ZN_1_FLR_2', 'Bathrooms_ZN_1_FLR_1'],
77
47
  'Auditorium' => ['Auditorium_ZN_1_FLR_1'],
78
48
  'Library' => ['LIBRARY_MEDIA_CENTER_ZN_1_FLR_2'],
79
- 'Corridor' => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2',
80
- 'Main_Corridor_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_1',
81
- 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2',
82
- 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2'],
83
- 'Classroom' => [
84
- 'Mult_Class_2_Pod_2_ZN_1_FLR_2',
85
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1',
86
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
87
- 'Mult_Class_2_Pod_1_ZN_1_FLR_2',
88
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
89
- 'Corner_Class_2_Pod_1_ZN_1_FLR_2',
90
- 'Corner_Class_1_Pod_2_ZN_1_FLR_2',
91
- 'Mult_Class_1_Pod_1_ZN_1_FLR_2',
92
- 'Corner_Class_2_Pod_2_ZN_1_FLR_2',
93
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
94
- 'Mult_Class_2_Pod_3_ZN_1_FLR_2',
95
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
96
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
97
- 'Mult_Class_1_Pod_2_ZN_1_FLR_2',
98
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
99
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1',
100
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
101
- 'Corner_Class_1_Pod_1_ZN_1_FLR_2',
102
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1',
103
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
104
- 'Corner_Class_1_Pod_3_ZN_1_FLR_2',
105
- 'Mult_Class_1_Pod_3_ZN_1_FLR_2',
106
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
107
- 'Corner_Class_2_Pod_3_ZN_1_FLR_2'
108
- ]
109
- }
49
+ 'Corridor' => ['Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_2', 'Main_Corridor_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2'],
50
+ 'Classroom' => ['Mult_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_1_ZN_1_FLR_2', 'Corner_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_2', 'Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_2', 'Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_2', 'Mult_Class_1_Pod_3_ZN_1_FLR_2', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_2']
51
+ }
110
52
  end
111
-
112
53
 
113
54
  return space_type_map
114
-
115
55
  end
116
56
 
117
- def define_hvac_system_map(building_type, building_vintage, climate_zone)
118
-
57
+ def define_hvac_system_map(building_type, template, climate_zone)
119
58
  system_to_space_map = nil
120
-
121
- case building_vintage
59
+
60
+ case template
122
61
  when 'DOE Ref Pre-1980'
123
62
  system_to_space_map = [
124
63
  {
125
64
  'type' => 'CAV',
126
65
  'name' => 'CAV_POD_1',
127
66
  'space_names' =>
128
- [
129
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
130
- 'Corner_Class_1_Pod_1_ZN_1_FLR_2',
131
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
132
- 'Mult_Class_1_Pod_1_ZN_1_FLR_2',
133
- 'Corridor_Pod_1_ZN_1_FLR_1',
134
- 'Corridor_Pod_1_ZN_1_FLR_2',
135
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
136
- 'Corner_Class_2_Pod_1_ZN_1_FLR_2',
137
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1',
138
- 'Mult_Class_2_Pod_1_ZN_1_FLR_2'
139
- ]
67
+ ['Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_2', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_2', 'Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_2', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_2']
140
68
  },
141
69
  {
142
70
  'type' => 'CAV',
143
71
  'name' => 'CAV_POD_2',
144
72
  'space_names' =>
145
- [
146
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1',
147
- 'Corner_Class_1_Pod_2_ZN_1_FLR_2',
148
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
149
- 'Mult_Class_1_Pod_2_ZN_1_FLR_2',
150
- 'Corridor_Pod_2_ZN_1_FLR_1',
151
- 'Corridor_Pod_2_ZN_1_FLR_2',
152
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
153
- 'Corner_Class_2_Pod_2_ZN_1_FLR_2',
154
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
155
- 'Mult_Class_2_Pod_2_ZN_1_FLR_2'
156
- ]
73
+ ['Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_2', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_2']
157
74
  },
158
75
  {
159
76
  'type' => 'CAV',
160
77
  'name' => 'CAV_POD_3',
161
78
  'space_names' =>
162
- [
163
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
164
- 'Corner_Class_1_Pod_3_ZN_1_FLR_2',
165
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
166
- 'Mult_Class_1_Pod_3_ZN_1_FLR_2',
167
- 'Corridor_Pod_3_ZN_1_FLR_1',
168
- 'Corridor_Pod_3_ZN_1_FLR_2',
169
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
170
- 'Corner_Class_2_Pod_3_ZN_1_FLR_2',
171
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1',
172
- 'Mult_Class_2_Pod_3_ZN_1_FLR_2'
173
- ]
79
+ ['Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_2', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_2', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_2', 'Mult_Class_2_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_2']
174
80
  },
175
81
  {
176
82
  'type' => 'CAV',
177
83
  'name' => 'CAV_OTHER',
178
84
  'space_names' =>
179
- [
180
- 'Main_Corridor_ZN_1_FLR_1',
181
- 'Main_Corridor_ZN_1_FLR_2',
182
- 'Lobby_ZN_1_FLR_1',
183
- 'Lobby_ZN_1_FLR_2',
184
- 'Bathrooms_ZN_1_FLR_1',
185
- 'Bathrooms_ZN_1_FLR_2',
186
- 'Offices_ZN_1_FLR_1',
187
- 'Offices_ZN_1_FLR_2',
188
- 'LIBRARY_MEDIA_CENTER_ZN_1_FLR_2',
189
- 'Mech_ZN_1_FLR_1',
190
- 'Mech_ZN_1_FLR_2'
191
- ]
85
+ ['Main_Corridor_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_2', 'Lobby_ZN_1_FLR_1', 'Lobby_ZN_1_FLR_2', 'Bathrooms_ZN_1_FLR_1', 'Bathrooms_ZN_1_FLR_2', 'Offices_ZN_1_FLR_1', 'Offices_ZN_1_FLR_2', 'LIBRARY_MEDIA_CENTER_ZN_1_FLR_2', 'Mech_ZN_1_FLR_1', 'Mech_ZN_1_FLR_2']
192
86
  },
193
87
  {
194
88
  'type' => 'PSZ-AC',
195
89
  'name' => 'PSZ-AC_1-5',
196
90
  'space_names' =>
197
91
  [
198
- 'Gym_ZN_1_FLR_1'
199
- ]
92
+ 'Gym_ZN_1_FLR_1'
93
+ ]
200
94
  },
201
95
  {
202
96
  'type' => 'PSZ-AC',
203
97
  'name' => 'PSZ-AC_2-6',
204
98
  'space_names' =>
205
99
  [
206
- 'Aux_Gym_ZN_1_FLR_1'
207
- ]
100
+ 'Aux_Gym_ZN_1_FLR_1'
101
+ ]
208
102
  },
209
103
  {
210
104
  'type' => 'PSZ-AC',
211
105
  'name' => 'PSZ-AC_3-7',
212
106
  'space_names' =>
213
107
  [
214
- 'Auditorium_ZN_1_FLR_1'
215
- ]
108
+ 'Auditorium_ZN_1_FLR_1'
109
+ ]
216
110
  },
217
111
  {
218
112
  'type' => 'PSZ-AC',
219
113
  'name' => 'PSZ-AC_4-8',
220
114
  'space_names' =>
221
115
  [
222
- 'Kitchen_ZN_1_FLR_1'
223
- ]
116
+ 'Kitchen_ZN_1_FLR_1'
117
+ ]
224
118
  },
225
119
  {
226
120
  'type' => 'PSZ-AC',
227
121
  'name' => 'PSZ-AC_5-9',
228
122
  'space_names' =>
229
123
  [
230
- 'Cafeteria_ZN_1_FLR_1'
231
- ]
124
+ 'Cafeteria_ZN_1_FLR_1'
125
+ ]
232
126
  },
233
127
  {
234
128
  'type' => 'Exhaust Fan',
235
129
  'name' => 'Kitchen Exhaust Fan',
236
130
  'availability_sch_name' => 'SchoolSecondary Kitchen_Exhaust_SCH',
237
- 'flow_rate' => OpenStudio.convert(5400,'cfm','m^3/s').get,
131
+ 'flow_rate' => OpenStudio.convert(5400, 'cfm', 'm^3/s').get,
238
132
  'flow_fraction_schedule_name' => 'SchoolSecondary Kitchen_Exhaust_SCH_DCV',
239
133
  'balanced_exhaust_fraction_schedule_name' => 'SchoolSecondary Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule',
240
134
  'space_names' =>
241
135
  [
242
- 'Kitchen_ZN_1_FLR_1'
243
- ]
136
+ 'Kitchen_ZN_1_FLR_1'
137
+ ]
244
138
  },
245
139
  {
246
140
  'type' => 'Exhaust Fan',
247
141
  'name' => 'Bathrooms_ZN_1_FLR_1',
248
142
  'availability_sch_name' => 'SchoolSecondary Hours_of_operation',
249
- 'flow_rate' => OpenStudio.convert(600,'cfm','m^3/s').get,
143
+ 'flow_rate' => OpenStudio.convert(600, 'cfm', 'm^3/s').get,
250
144
  'space_names' =>
251
145
  [
252
- 'Bathrooms_ZN_1_FLR_1'
253
- ]
146
+ 'Bathrooms_ZN_1_FLR_1'
147
+ ]
254
148
  },
255
149
  {
256
150
  'type' => 'Exhaust Fan',
257
151
  'name' => 'Bathrooms_ZN_1_FLR_2',
258
152
  'availability_sch_name' => 'SchoolSecondary Hours_of_operation',
259
- 'flow_rate' => OpenStudio.convert(600,'cfm','m^3/s').get,
153
+ 'flow_rate' => OpenStudio.convert(600, 'cfm', 'm^3/s').get,
260
154
  'space_names' =>
261
155
  [
262
- 'Bathrooms_ZN_1_FLR_2'
263
- ]
156
+ 'Bathrooms_ZN_1_FLR_2'
157
+ ]
264
158
  },
265
159
  {
266
160
  'type' => 'Refrigeration',
@@ -278,8 +172,8 @@ class OpenStudio::Model::Model
278
172
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
279
173
  'space_names' =>
280
174
  [
281
- 'Kitchen_ZN_1_FLR_1'
282
- ]
175
+ 'Kitchen_ZN_1_FLR_1'
176
+ ]
283
177
  },
284
178
  {
285
179
  'type' => 'Refrigeration',
@@ -297,8 +191,8 @@ class OpenStudio::Model::Model
297
191
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
298
192
  'space_names' =>
299
193
  [
300
- 'Kitchen_ZN_1_FLR_1'
301
- ]
194
+ 'Kitchen_ZN_1_FLR_1'
195
+ ]
302
196
  }
303
197
  ]
304
198
  else
@@ -307,142 +201,97 @@ class OpenStudio::Model::Model
307
201
  'type' => 'VAV',
308
202
  'name' => 'VAV_POD_1',
309
203
  'space_names' =>
310
- [
311
- 'Corner_Class_1_Pod_1_ZN_1_FLR_1',
312
- 'Corner_Class_1_Pod_1_ZN_1_FLR_2',
313
- 'Mult_Class_1_Pod_1_ZN_1_FLR_1',
314
- 'Mult_Class_1_Pod_1_ZN_1_FLR_2',
315
- 'Corridor_Pod_1_ZN_1_FLR_1',
316
- 'Corridor_Pod_1_ZN_1_FLR_2',
317
- 'Corner_Class_2_Pod_1_ZN_1_FLR_1',
318
- 'Corner_Class_2_Pod_1_ZN_1_FLR_2',
319
- 'Mult_Class_2_Pod_1_ZN_1_FLR_1',
320
- 'Mult_Class_2_Pod_1_ZN_1_FLR_2'
321
- ]
204
+ ['Corner_Class_1_Pod_1_ZN_1_FLR_1', 'Corner_Class_1_Pod_1_ZN_1_FLR_2', 'Mult_Class_1_Pod_1_ZN_1_FLR_1', 'Mult_Class_1_Pod_1_ZN_1_FLR_2', 'Corridor_Pod_1_ZN_1_FLR_1', 'Corridor_Pod_1_ZN_1_FLR_2', 'Corner_Class_2_Pod_1_ZN_1_FLR_1', 'Corner_Class_2_Pod_1_ZN_1_FLR_2', 'Mult_Class_2_Pod_1_ZN_1_FLR_1', 'Mult_Class_2_Pod_1_ZN_1_FLR_2']
322
205
  },
323
206
  {
324
207
  'type' => 'VAV',
325
208
  'name' => 'VAV_POD_2',
326
209
  'space_names' =>
327
- [
328
- 'Corner_Class_1_Pod_2_ZN_1_FLR_1',
329
- 'Corner_Class_1_Pod_2_ZN_1_FLR_2',
330
- 'Mult_Class_1_Pod_2_ZN_1_FLR_1',
331
- 'Mult_Class_1_Pod_2_ZN_1_FLR_2',
332
- 'Corridor_Pod_2_ZN_1_FLR_1',
333
- 'Corridor_Pod_2_ZN_1_FLR_2',
334
- 'Corner_Class_2_Pod_2_ZN_1_FLR_1',
335
- 'Corner_Class_2_Pod_2_ZN_1_FLR_2',
336
- 'Mult_Class_2_Pod_2_ZN_1_FLR_1',
337
- 'Mult_Class_2_Pod_2_ZN_1_FLR_2'
338
- ]
210
+ ['Corner_Class_1_Pod_2_ZN_1_FLR_1', 'Corner_Class_1_Pod_2_ZN_1_FLR_2', 'Mult_Class_1_Pod_2_ZN_1_FLR_1', 'Mult_Class_1_Pod_2_ZN_1_FLR_2', 'Corridor_Pod_2_ZN_1_FLR_1', 'Corridor_Pod_2_ZN_1_FLR_2', 'Corner_Class_2_Pod_2_ZN_1_FLR_1', 'Corner_Class_2_Pod_2_ZN_1_FLR_2', 'Mult_Class_2_Pod_2_ZN_1_FLR_1', 'Mult_Class_2_Pod_2_ZN_1_FLR_2']
339
211
  },
340
212
  {
341
213
  'type' => 'VAV',
342
214
  'name' => 'VAV_POD_3',
343
215
  'space_names' =>
344
- [
345
- 'Corner_Class_1_Pod_3_ZN_1_FLR_1',
346
- 'Corner_Class_1_Pod_3_ZN_1_FLR_2',
347
- 'Mult_Class_1_Pod_3_ZN_1_FLR_1',
348
- 'Mult_Class_1_Pod_3_ZN_1_FLR_2',
349
- 'Corridor_Pod_3_ZN_1_FLR_1',
350
- 'Corridor_Pod_3_ZN_1_FLR_2',
351
- 'Corner_Class_2_Pod_3_ZN_1_FLR_1',
352
- 'Corner_Class_2_Pod_3_ZN_1_FLR_2',
353
- 'Mult_Class_2_Pod_3_ZN_1_FLR_1',
354
- 'Mult_Class_2_Pod_3_ZN_1_FLR_2'
355
- ]
216
+ ['Corner_Class_1_Pod_3_ZN_1_FLR_1', 'Corner_Class_1_Pod_3_ZN_1_FLR_2', 'Mult_Class_1_Pod_3_ZN_1_FLR_1', 'Mult_Class_1_Pod_3_ZN_1_FLR_2', 'Corridor_Pod_3_ZN_1_FLR_1', 'Corridor_Pod_3_ZN_1_FLR_2', 'Corner_Class_2_Pod_3_ZN_1_FLR_1', 'Corner_Class_2_Pod_3_ZN_1_FLR_2', 'Mult_Class_2_Pod_3_ZN_1_FLR_1', 'Mult_Class_2_Pod_3_ZN_1_FLR_2']
356
217
  },
357
218
  {
358
219
  'type' => 'VAV',
359
220
  'name' => 'VAV_OTHER',
360
221
  'space_names' =>
361
- [
362
- 'Main_Corridor_ZN_1_FLR_1',
363
- 'Main_Corridor_ZN_1_FLR_2',
364
- 'Lobby_ZN_1_FLR_1',
365
- 'Lobby_ZN_1_FLR_2',
366
- 'Bathrooms_ZN_1_FLR_1',
367
- 'Bathrooms_ZN_1_FLR_2',
368
- 'Offices_ZN_1_FLR_1',
369
- 'Offices_ZN_1_FLR_2',
370
- 'LIBRARY_MEDIA_CENTER_ZN_1_FLR_2',
371
- 'Mech_ZN_1_FLR_1',
372
- 'Mech_ZN_1_FLR_2'
373
- ]
222
+ ['Main_Corridor_ZN_1_FLR_1', 'Main_Corridor_ZN_1_FLR_2', 'Lobby_ZN_1_FLR_1', 'Lobby_ZN_1_FLR_2', 'Bathrooms_ZN_1_FLR_1', 'Bathrooms_ZN_1_FLR_2', 'Offices_ZN_1_FLR_1', 'Offices_ZN_1_FLR_2', 'LIBRARY_MEDIA_CENTER_ZN_1_FLR_2', 'Mech_ZN_1_FLR_1', 'Mech_ZN_1_FLR_2']
374
223
  },
375
224
  {
376
225
  'type' => 'PSZ-AC',
377
226
  'name' => 'PSZ-AC_1-5',
378
227
  'space_names' =>
379
228
  [
380
- 'Gym_ZN_1_FLR_1'
381
- ]
229
+ 'Gym_ZN_1_FLR_1'
230
+ ]
382
231
  },
383
232
  {
384
233
  'type' => 'PSZ-AC',
385
234
  'name' => 'PSZ-AC_2-6',
386
235
  'space_names' =>
387
236
  [
388
- 'Aux_Gym_ZN_1_FLR_1'
389
- ]
237
+ 'Aux_Gym_ZN_1_FLR_1'
238
+ ]
390
239
  },
391
240
  {
392
241
  'type' => 'PSZ-AC',
393
242
  'name' => 'PSZ-AC_3-7',
394
243
  'space_names' =>
395
244
  [
396
- 'Auditorium_ZN_1_FLR_1'
397
- ]
245
+ 'Auditorium_ZN_1_FLR_1'
246
+ ]
398
247
  },
399
248
  {
400
249
  'type' => 'PSZ-AC',
401
250
  'name' => 'PSZ-AC_4-8',
402
251
  'space_names' =>
403
252
  [
404
- 'Kitchen_ZN_1_FLR_1'
405
- ]
253
+ 'Kitchen_ZN_1_FLR_1'
254
+ ]
406
255
  },
407
256
  {
408
257
  'type' => 'PSZ-AC',
409
258
  'name' => 'PSZ-AC_5-9',
410
259
  'space_names' =>
411
260
  [
412
- 'Cafeteria_ZN_1_FLR_1'
413
- ]
261
+ 'Cafeteria_ZN_1_FLR_1'
262
+ ]
414
263
  },
415
264
  {
416
265
  'type' => 'Exhaust Fan',
417
266
  'name' => 'Kitchen Exhaust Fan',
418
267
  'availability_sch_name' => 'SchoolSecondary Kitchen_Exhaust_SCH',
419
- 'flow_rate' => OpenStudio.convert(5400,'cfm','m^3/s').get,
268
+ 'flow_rate' => OpenStudio.convert(5400, 'cfm', 'm^3/s').get,
420
269
  'flow_fraction_schedule_name' => 'SchoolSecondary Kitchen_Exhaust_SCH_DCV',
421
270
  'balanced_exhaust_fraction_schedule_name' => 'SchoolSecondary Kitchen Exhaust Fan Balanced Exhaust Fraction Schedule',
422
271
  'space_names' =>
423
272
  [
424
- 'Kitchen_ZN_1_FLR_1'
425
- ]
273
+ 'Kitchen_ZN_1_FLR_1'
274
+ ]
426
275
  },
427
276
  {
428
277
  'type' => 'Exhaust Fan',
429
278
  'name' => 'Bathrooms_ZN_1_FLR_1',
430
279
  'availability_sch_name' => 'SchoolSecondary Hours_of_operation',
431
- 'flow_rate' => OpenStudio.convert(600,'cfm','m^3/s').get,
280
+ 'flow_rate' => OpenStudio.convert(600, 'cfm', 'm^3/s').get,
432
281
  'space_names' =>
433
282
  [
434
- 'Bathrooms_ZN_1_FLR_1'
435
- ]
283
+ 'Bathrooms_ZN_1_FLR_1'
284
+ ]
436
285
  },
437
286
  {
438
287
  'type' => 'Exhaust Fan',
439
288
  'name' => 'Bathrooms_ZN_1_FLR_2',
440
289
  'availability_sch_name' => 'SchoolSecondary Hours_of_operation',
441
- 'flow_rate' => OpenStudio.convert(600,'cfm','m^3/s').get,
290
+ 'flow_rate' => OpenStudio.convert(600, 'cfm', 'm^3/s').get,
442
291
  'space_names' =>
443
292
  [
444
- 'Bathrooms_ZN_1_FLR_2'
445
- ]
293
+ 'Bathrooms_ZN_1_FLR_2'
294
+ ]
446
295
  },
447
296
  {
448
297
  'type' => 'Refrigeration',
@@ -460,8 +309,8 @@ class OpenStudio::Model::Model
460
309
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
461
310
  'space_names' =>
462
311
  [
463
- 'Kitchen_ZN_1_FLR_1'
464
- ]
312
+ 'Kitchen_ZN_1_FLR_1'
313
+ ]
465
314
  },
466
315
  {
467
316
  'type' => 'Refrigeration',
@@ -479,46 +328,37 @@ class OpenStudio::Model::Model
479
328
  'condenser_fan_pwr_curve_name' => 'RACK1_RackCondFanCurve2',
480
329
  'space_names' =>
481
330
  [
482
- 'Kitchen_ZN_1_FLR_1'
483
- ]
331
+ 'Kitchen_ZN_1_FLR_1'
332
+ ]
484
333
  }
485
334
  ]
486
335
  end
487
-
488
- return system_to_space_map
489
336
 
337
+ return system_to_space_map
490
338
  end
491
339
 
492
- def custom_hvac_tweaks(building_type, building_vintage, climate_zone, prototype_input)
493
-
494
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
495
-
496
- self.getSpaces.each do |space|
497
-
498
- if space.name.get.to_s == "Mech_ZN_1_FLR_1"
499
- self.add_elevator(building_vintage,
500
- space,
501
- prototype_input['number_of_elevators'],
502
- prototype_input['elevator_type'],
503
- prototype_input['elevator_schedule'],
504
- prototype_input['elevator_fan_schedule'],
505
- prototype_input['elevator_fan_schedule'],
506
- building_type)
507
- end
340
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
341
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
342
+
343
+ getSpaces.each do |space|
344
+ if space.name.get.to_s == 'Mech_ZN_1_FLR_1'
345
+ add_elevator(template,
346
+ space,
347
+ prototype_input['number_of_elevators'],
348
+ prototype_input['elevator_type'],
349
+ prototype_input['elevator_schedule'],
350
+ prototype_input['elevator_fan_schedule'],
351
+ prototype_input['elevator_fan_schedule'],
352
+ building_type)
353
+ end
354
+ end
355
+
356
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
508
357
 
509
-
510
- end
511
-
512
- OpenStudio::logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
513
-
514
358
  return true
515
-
516
359
  end
517
-
518
- def custom_swh_tweaks(building_type, building_vintage, climate_zone, prototype_input)
519
360
 
361
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
520
362
  return true
521
-
522
363
  end
523
-
524
364
  end