openstudio-standards 0.1.9 → 0.1.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/data/standards/OpenStudio_Standards.xlsx +0 -0
  3. data/lib/openstudio-standards/btap/compliance.rb +17 -7
  4. data/lib/openstudio-standards/btap/hvac.rb +6 -5
  5. data/lib/openstudio-standards/btap/measures.rb +137 -102
  6. data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +2 -2
  7. data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +1 -1
  8. data/lib/openstudio-standards/prototypes/Prototype.Model.rb +96 -31
  9. data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +1 -1
  10. data/lib/openstudio-standards/prototypes/Prototype.building_specific_methods.rb +163 -0
  11. data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +54 -52
  12. data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +28 -26
  13. data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +41 -39
  14. data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +19 -17
  15. data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +16 -13
  16. data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +13 -11
  17. data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +33 -31
  18. data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +66 -64
  19. data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +8 -88
  20. data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +54 -52
  21. data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +13 -11
  22. data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +15 -13
  23. data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +11 -9
  24. data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +13 -11
  25. data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +7 -5
  26. data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +18 -13
  27. data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +11 -9
  28. data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +23 -12
  29. data/lib/openstudio-standards/standards/Standards.Fan.rb +7 -4
  30. data/lib/openstudio-standards/standards/Standards.Model.rb +4 -4
  31. data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +9 -4
  32. data/lib/openstudio-standards/utilities/simulation.rb +6 -1
  33. data/lib/openstudio-standards/version.rb +1 -1
  34. data/lib/openstudio-standards/weather/Weather.Model.rb +1 -1
  35. metadata +3 -2
@@ -59,7 +59,7 @@ class OpenStudio::Model::Model
59
59
 
60
60
  # A helper method to run a sizing run and pull any values calculated during
61
61
  # autosizing back into the self.
62
- def runSizingRun(sizing_run_dir = "#{Dir.pwd}/SizingRun")
62
+ def runSizingRun(sizing_run_dir = "#{Dir.pwd}/SR")
63
63
 
64
64
 
65
65
  # Change the simulation to only run the sizing days
@@ -102,7 +102,7 @@ class OpenStudio::Model::Model
102
102
 
103
103
  # A helper method to run a sizing run and pull any values calculated during
104
104
  # autosizing back into the self.
105
- def runSpaceSizingRun(sizing_run_dir = "#{Dir.pwd}/SpaceSizingRun")
105
+ def runSpaceSizingRun(sizing_run_dir = "#{Dir.pwd}/SpaceSR")
106
106
  puts "*************Runing sizing space Run ***************************"
107
107
  #Make copy of model
108
108
  model = BTAP::FileIO::deep_copy(self, true)
@@ -9,7 +9,7 @@ class OpenStudio::Model::FanVariableVolume
9
9
  def apply_prototype_fan_pressure_rise(building_type, template, climate_zone)
10
10
  # NECB
11
11
  if template == 'NECB 2011'
12
- pressure_rise_pa = 1000.0
12
+ pressure_rise_pa = 1458.33 # 1000 Pa for supply fan and 458.33 Pa for return fan (accounts for efficiency differences between two fans)
13
13
  setPressureRise(pressure_rise_pa)
14
14
  return true
15
15
  end
@@ -12,6 +12,7 @@ class OpenStudio::Model::Model
12
12
  require_relative 'Prototype.Model.hvac'
13
13
  require_relative 'Prototype.Model.swh'
14
14
  require_relative '../standards/Standards.Model'
15
+ require_relative 'Prototype.building_specific_methods'
15
16
 
16
17
  # Creates a DOE prototype building model and replaces
17
18
  # the current model with this model.
@@ -25,6 +26,7 @@ class OpenStudio::Model::Model
25
26
  # model.create_prototype_building('SmallOffice', '90.1-2010', 'ASHRAE 169-2006-5A')
26
27
 
27
28
  def create_prototype_building(building_type, template, climate_zone, epw_file, sizing_run_dir = Dir.pwd, debug = false)
29
+ osm_file_increment = 0
28
30
  # There are no reference models for HighriseApartment at vintages Pre-1980 and 1980-2004, nor for NECB 2011. This is a quick check.
29
31
  if building_type == 'HighriseApartment'
30
32
  if template == 'DOE Ref Pre-1980' || template == 'DOE Ref 1980-2004'
@@ -53,23 +55,77 @@ class OpenStudio::Model::Model
53
55
 
54
56
  case template
55
57
  when 'NECB 2011'
58
+
59
+
60
+
61
+ debug_incremental_changes = false
56
62
  load_building_type_methods(building_type, template, climate_zone)
63
+ osm_file_increment += 1
64
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_load_building_type_methods.osm") if debug_incremental_changes
65
+
57
66
  load_geometry(building_type, template, climate_zone)
67
+ osm_file_increment += 1
68
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_load_geometry.osm") if debug_incremental_changes
69
+
58
70
  getBuilding.setName("#{template}-#{building_type}-#{climate_zone}-#{epw_file} created: #{Time.new}")
71
+ osm_file_increment += 1
72
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_set_name.osm") if debug_incremental_changes
73
+
59
74
  space_type_map = define_space_type_map(building_type, template, climate_zone)
75
+ File.open("#{sizing_run_dir}/space_type_map.json", 'w') {|f| f.write(JSON.pretty_generate(space_type_map)) }
76
+
60
77
  assign_space_type_stubs('Space Function', template, space_type_map) # TO DO: add support for defining NECB 2011 archetype by building type (versus space function)
78
+ osm_file_increment += 1
79
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_assign_space_type_stubs.osm") if debug_incremental_changes
80
+
61
81
  add_loads(template, climate_zone)
82
+ osm_file_increment += 1
83
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_add_loads.osm") if debug_incremental_changes
84
+
62
85
  apply_infiltration_standard(template)
86
+ osm_file_increment += 1
87
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_apply_infiltration.osm") if debug_incremental_changes
88
+
63
89
  modify_infiltration_coefficients(building_type, template, climate_zone) # does not apply to NECB 2011 but left here for consistency
90
+ osm_file_increment += 1
91
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_modify_infiltation_coefficients.osm") if debug_incremental_changes
92
+
64
93
  modify_surface_convection_algorithm(template)
65
- add_constructions(lookup_building_type, template, climate_zone)
94
+ osm_file_increment += 1
95
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_modify_surface_convection_algorithm.osm") if debug_incremental_changes
96
+
97
+ add_constructions(building_type, template, climate_zone)
98
+ osm_file_increment += 1
99
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_add_constructions.osm") if debug_incremental_changes
100
+
66
101
  create_thermal_zones(building_type, template, climate_zone)
102
+ osm_file_increment += 1
103
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_create_thermal_zones.osm") if debug_incremental_changes
104
+
67
105
  add_design_days_and_weather_file(building_type, template, climate_zone, epw_file)
68
- return false if runSizingRun("#{sizing_run_dir}/SizingRun0") == false
106
+ osm_file_increment += 1
107
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_add_design_days_and_weather_file.osm") if debug_incremental_changes
108
+
109
+ return false if runSizingRun("#{sizing_run_dir}/SR0") == false
110
+ osm_file_increment += 1
111
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_sizing_run_0.osm") if debug_incremental_changes
112
+
69
113
  add_hvac(building_type, template, climate_zone, prototype_input, epw_file)
114
+ osm_file_increment += 1
115
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_add_hvac.osm") if debug_incremental_changes
116
+
117
+ osm_file_increment += 1
70
118
  add_swh(building_type, template, climate_zone, prototype_input)
119
+ osm_file_increment += 1
120
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_swh.osm") if debug_incremental_changes
121
+
71
122
  apply_sizing_parameters(building_type, template)
123
+ osm_file_increment += 1
124
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_apply_sizing_paramaters.osm") if debug_incremental_changes
125
+
72
126
  yearDescription.get.setDayofWeekforStartDay('Sunday')
127
+ osm_file_increment += 1
128
+ BTAP::FileIO::save_osm(self,"#{sizing_run_dir}/post_#{osm_file_increment}_setDayofWeekforStartDay.osm") if debug_incremental_changes
73
129
  else
74
130
 
75
131
  load_building_type_methods(building_type, template, climate_zone)
@@ -81,12 +137,12 @@ class OpenStudio::Model::Model
81
137
  apply_infiltration_standard(template)
82
138
  modify_infiltration_coefficients(building_type, template, climate_zone)
83
139
  modify_surface_convection_algorithm(template)
84
- add_constructions(lookup_building_type, template, climate_zone)
140
+ add_constructions(building_type, template, climate_zone)
85
141
  create_thermal_zones(building_type, template, climate_zone)
86
142
  add_hvac(building_type, template, climate_zone, prototype_input, epw_file)
87
- custom_hvac_tweaks(building_type, template, climate_zone, prototype_input)
143
+ custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, self)
88
144
  add_swh(building_type, template, climate_zone, prototype_input)
89
- custom_swh_tweaks(building_type, template, climate_zone, prototype_input)
145
+ custom_swh_tweaks(building_type, template, climate_zone, prototype_input, self)
90
146
  add_exterior_lights(building_type, template, climate_zone, prototype_input)
91
147
  add_occupancy_sensors(building_type, template, climate_zone)
92
148
  add_design_days_and_weather_file(building_type, template, climate_zone, epw_file)
@@ -102,7 +158,7 @@ class OpenStudio::Model::Model
102
158
 
103
159
  # For some building types, stories are defined explicitly
104
160
  if building_type == 'SmallHotel'
105
- building_story_map = define_building_story_map(building_type, template, climate_zone)
161
+ building_story_map = PrototypeBuilding::SmallHotel.define_building_story_map(building_type, template, climate_zone)
106
162
  assign_building_story(building_type, template, climate_zone, building_story_map)
107
163
  end
108
164
 
@@ -111,7 +167,7 @@ class OpenStudio::Model::Model
111
167
  assign_spaces_to_stories
112
168
 
113
169
  # Perform a sizing run
114
- if runSizingRun("#{sizing_run_dir}/SizingRun1") == false
170
+ if runSizingRun("#{sizing_run_dir}/SR1") == false
115
171
  return false
116
172
  end
117
173
 
@@ -128,13 +184,13 @@ class OpenStudio::Model::Model
128
184
  # for 90.1-2010 Outpatient, AHU2 set minimum outdoor air flow rate as 0
129
185
  # AHU1 doesn't have economizer
130
186
  if building_type == 'Outpatient'
131
- modify_oa_controller(template)
187
+ PrototypeBuilding::Outpatient.modify_oa_controller(template, self)
132
188
  # For operating room 1&2 in 2010 and 2013, VAV minimum air flow is set by schedule
133
- reset_or_room_vav_minimum_damper(prototype_input, template)
189
+ PrototypeBuilding::Outpatient.reset_or_room_vav_minimum_damper(prototype_input, template, self)
134
190
  end
135
191
 
136
192
  if building_type == 'Hospital'
137
- modify_hospital_oa_controller(template)
193
+ PrototypeBuilding::Hospital.modify_hospital_oa_controller(template, self)
138
194
  end
139
195
 
140
196
  # Apply the HVAC efficiency standard
@@ -144,28 +200,23 @@ class OpenStudio::Model::Model
144
200
  # only four zones in large hotel have daylighting controls
145
201
  # todo: YXC to merge to the main function
146
202
  if building_type == 'LargeHotel'
147
- large_hotel_add_daylighting_controls(template)
203
+ PrototypeBuilding::LargeHotel.large_hotel_add_daylighting_controls(template, self)
148
204
  elsif building_type == 'Hospital'
149
- hospital_add_daylighting_controls(template)
205
+ PrototypeBuilding::Hospital.hospital_add_daylighting_controls(template, self)
150
206
  else
151
207
  add_daylighting_controls(template)
152
208
  end
153
209
 
154
- if building_type == 'QuickServiceRestaurant' || building_type == 'FullServiceRestaurant' || building_type == 'Outpatient'
155
- update_exhaust_fan_efficiency(template)
210
+ if building_type == 'QuickServiceRestaurant'
211
+ PrototypeBuilding::QuickServiceRestaurant.update_exhaust_fan_efficiency(template, self)
212
+ elsif building_type == 'FullServiceRestaurant'
213
+ PrototypeBuilding::FullServiceRestaurant.update_exhaust_fan_efficiency(template, self)
214
+ elsif building_type == 'Outpatient'
215
+ PrototypeBuilding::Outpatient.update_exhaust_fan_efficiency(template, self)
156
216
  end
157
217
 
158
218
  if building_type == 'HighriseApartment'
159
- update_fan_efficiency
160
- end
161
-
162
- # Add output variables for debugging
163
- # AHU1 doesn't have economizer
164
- if building_type == 'Outpatient'
165
- # remove the controller:mechanical ventilation for AHU1 OA
166
- modify_oa_controller(template)
167
- # For operating room 1&2 in 2010 and 2013, VAV minimum air flow is set by schedule
168
- reset_or_room_vav_minimum_damper(prototype_input, template)
219
+ PrototypeBuilding::HighriseApartment.update_fan_efficiency(self)
169
220
  end
170
221
 
171
222
  # Add output variables for debugging
@@ -183,7 +234,6 @@ class OpenStudio::Model::Model
183
234
  # Get the name of the building type used in lookups
184
235
  #
185
236
  # @param building_type [String] the building type
186
- # a .osm file in the /resources directory
187
237
  # @return [String] returns the lookup name as a string
188
238
  # @todo Unify the lookup names and eliminate this method
189
239
  def get_lookup_name(building_type)
@@ -535,6 +585,10 @@ class OpenStudio::Model::Model
535
585
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started applying constructions')
536
586
  is_residential = 'No' # default is nonresidential for building level
537
587
 
588
+ # The constructions lookup table uses a slightly different list of
589
+ # building types.
590
+ lookup_building_type = get_lookup_name(building_type)
591
+
538
592
  # Assign construction to adiabatic construction
539
593
  # Assign a material to all internal mass objects
540
594
  cp02_carpet_pad = OpenStudio::Model::MasslessOpaqueMaterial.new(self)
@@ -628,7 +682,7 @@ class OpenStudio::Model::Model
628
682
  end
629
683
 
630
684
  # Make the default construction set for the building
631
- bldg_def_const_set = add_construction_set(template, climate_zone, building_type, nil, is_residential)
685
+ bldg_def_const_set = add_construction_set(template, climate_zone, lookup_building_type, nil, is_residential)
632
686
 
633
687
  if bldg_def_const_set.is_initialized
634
688
  getBuilding.setDefaultConstructionSet(bldg_def_const_set.get)
@@ -670,7 +724,7 @@ class OpenStudio::Model::Model
670
724
  end
671
725
 
672
726
  # Add construction from story level, especially for the case when there are residential and nonresidential construction in the same building
673
- if building_type == 'SmallHotel'
727
+ if lookup_building_type == 'SmallHotel'
674
728
  getBuildingStorys.each do |story|
675
729
  next if story.name.get == 'AtticStory'
676
730
  puts "story = #{story.name}"
@@ -685,7 +739,7 @@ class OpenStudio::Model::Model
685
739
  if space_type.standardsSpaceType.is_initialized
686
740
  space_type_name = space_type.standardsSpaceType.get
687
741
  end
688
- data = find_object($os_standards['space_types'], 'template' => template, 'building_type' => building_type, 'space_type' => space_type_name)
742
+ data = find_object($os_standards['space_types'], 'template' => template, 'building_type' => lookup_building_type, 'space_type' => space_type_name)
689
743
  exterior_spaces_area += space.floorArea
690
744
  story_exterior_residential_area += space.floorArea if data['is_residential'] == 'Yes' # "Yes" is residential, "No" or nil is nonresidential
691
745
  end
@@ -693,7 +747,7 @@ class OpenStudio::Model::Model
693
747
  next if is_residential == 'No'
694
748
 
695
749
  # if the story is identified as residential, assign residential construction set to the spaces on this story.
696
- building_story_const_set = add_construction_set(template, climate_zone, building_type, nil, is_residential)
750
+ building_story_const_set = add_construction_set(template, climate_zone, lookup_building_type, nil, is_residential)
697
751
  if building_story_const_set.is_initialized
698
752
  story.spaces.each do |space|
699
753
  space.setDefaultConstructionSet(building_story_const_set.get)
@@ -796,8 +850,14 @@ class OpenStudio::Model::Model
796
850
 
797
851
  # This map define the multipliers for spaces with multipliers not equals to 1
798
852
  case building_type
799
- when 'LargeHotel', 'MidriseApartment', 'LargeOffice', 'Hospital'
800
- space_multiplier_map = define_space_multiplier
853
+ when 'LargeHotel'
854
+ space_multiplier_map = PrototypeBuilding::LargeHotel.define_space_multiplier
855
+ when 'MidriseApartment'
856
+ space_multiplier_map = PrototypeBuilding::MidriseApartment.define_space_multiplier
857
+ when 'LargeOffice'
858
+ space_multiplier_map = PrototypeBuilding::LargeOffice.define_space_multiplier
859
+ when 'Hospital'
860
+ space_multiplier_map = PrototypeBuilding::Hospital.define_space_multiplier
801
861
  else
802
862
  space_multiplier_map = {}
803
863
  end
@@ -823,6 +883,11 @@ class OpenStudio::Model::Model
823
883
  else
824
884
  thermostat_clone = thermostat.get.clone(self).to_ThermostatSetpointDualSetpoint.get
825
885
  zone.setThermostatSetpointDualSetpoint(thermostat_clone)
886
+ if template == 'NECB 2011'
887
+ #Set Ideal loads to thermal zone for sizing for NECB needs. We need this for sizing.
888
+ ideal_loads = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(self)
889
+ ideal_loads.addToThermalZone(zone)
890
+ end
826
891
  end
827
892
  end
828
893
 
@@ -183,12 +183,12 @@ class OpenStudio::Model::Model
183
183
  else
184
184
 
185
185
  # Attaches the end uses if specified by space type
186
+ space_type_map = define_space_type_map(building_type, template, climate_zone)
186
187
 
187
188
  if template == 'NECB 2011'
188
189
  building_type = 'Space Function'
189
190
  end
190
191
 
191
- space_type_map = define_space_type_map(building_type, template, climate_zone)
192
192
  space_type_map.each do |space_type_name, space_names|
193
193
  search_criteria = {
194
194
  'template' => template,
@@ -0,0 +1,163 @@
1
+
2
+ # Extend the class to add Medium Office specific stuff
3
+ class OpenStudio::Model::Model
4
+ def define_space_type_map(building_type, template, climate_zone)
5
+ case building_type
6
+ when 'SecondarySchool'
7
+ return PrototypeBuilding::SecondarySchool.define_space_type_map(building_type, template, climate_zone)
8
+ when 'PrimarySchool'
9
+ return PrototypeBuilding::PrimarySchool.define_space_type_map(building_type, template, climate_zone)
10
+ when 'SmallOffice'
11
+ return PrototypeBuilding::SmallOffice.define_space_type_map(building_type, template, climate_zone)
12
+ when 'MediumOffice'
13
+ return PrototypeBuilding::MediumOffice.define_space_type_map(building_type, template, climate_zone)
14
+ when 'LargeOffice'
15
+ return PrototypeBuilding::LargeOffice.define_space_type_map(building_type, template, climate_zone)
16
+ when 'SmallHotel'
17
+ return PrototypeBuilding::SmallHotel.define_space_type_map(building_type, template, climate_zone)
18
+ when 'LargeHotel'
19
+ return PrototypeBuilding::LargeHotel.define_space_type_map(building_type, template, climate_zone)
20
+ when 'Warehouse'
21
+ return PrototypeBuilding::Warehouse.define_space_type_map(building_type, template, climate_zone)
22
+ when 'RetailStandalone'
23
+ return PrototypeBuilding::RetailStandalone.define_space_type_map(building_type, template, climate_zone)
24
+ when 'RetailStripmall'
25
+ return PrototypeBuilding::RetailStripmall.define_space_type_map(building_type, template, climate_zone)
26
+ when 'QuickServiceRestaurant'
27
+ return PrototypeBuilding::QuickServiceRestaurant.define_space_type_map(building_type, template, climate_zone)
28
+ when 'FullServiceRestaurant'
29
+ return PrototypeBuilding::FullServiceRestaurant.define_space_type_map(building_type, template, climate_zone)
30
+ when 'Hospital'
31
+ return PrototypeBuilding::Hospital.define_space_type_map(building_type, template, climate_zone)
32
+ when 'Outpatient'
33
+ return PrototypeBuilding::Outpatient.define_space_type_map(building_type, template, climate_zone)
34
+ when 'MidriseApartment'
35
+ return PrototypeBuilding::MidriseApartment.define_space_type_map(building_type, template, climate_zone)
36
+ when 'HighriseApartment'
37
+ return PrototypeBuilding::HighriseApartment.define_space_type_map(building_type, template, climate_zone)
38
+ else
39
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model.define_space_type_map', "Building Type = #{building_type} not recognized")
40
+ return false
41
+ end
42
+ end
43
+
44
+ def define_hvac_system_map(building_type, template, climate_zone)
45
+ case building_type
46
+ when 'SecondarySchool'
47
+ return PrototypeBuilding::SecondarySchool.define_hvac_system_map(building_type, template, climate_zone)
48
+ when 'PrimarySchool'
49
+ return PrototypeBuilding::PrimarySchool.define_hvac_system_map(building_type, template, climate_zone)
50
+ when 'SmallOffice'
51
+ return PrototypeBuilding::SmallOffice.define_hvac_system_map(building_type, template, climate_zone)
52
+ when 'MediumOffice'
53
+ return PrototypeBuilding::MediumOffice.define_hvac_system_map(building_type, template, climate_zone)
54
+ when 'LargeOffice'
55
+ return PrototypeBuilding::LargeOffice.define_hvac_system_map(building_type, template, climate_zone)
56
+ when 'SmallHotel'
57
+ return PrototypeBuilding::SmallHotel.define_hvac_system_map(building_type, template, climate_zone)
58
+ when 'LargeHotel'
59
+ return PrototypeBuilding::LargeHotel.define_hvac_system_map(building_type, template, climate_zone)
60
+ when 'Warehouse'
61
+ return PrototypeBuilding::Warehouse.define_hvac_system_map(building_type, template, climate_zone)
62
+ when 'RetailStandalone'
63
+ return PrototypeBuilding::RetailStandalone.define_hvac_system_map(building_type, template, climate_zone)
64
+ when 'RetailStripmall'
65
+ return PrototypeBuilding::RetailStripmall.define_hvac_system_map(building_type, template, climate_zone)
66
+ when 'QuickServiceRestaurant'
67
+ return PrototypeBuilding::QuickServiceRestaurant.define_hvac_system_map(building_type, template, climate_zone)
68
+ when 'FullServiceRestaurant'
69
+ return PrototypeBuilding::FullServiceRestaurant.define_hvac_system_map(building_type, template, climate_zone)
70
+ when 'Hospital'
71
+ return PrototypeBuilding::Hospital.define_hvac_system_map(building_type, template, climate_zone)
72
+ when 'Outpatient'
73
+ return PrototypeBuilding::Outpatient.define_hvac_system_map(building_type, template, climate_zone)
74
+ when 'MidriseApartment'
75
+ return PrototypeBuilding::MidriseApartment.define_hvac_system_map(building_type, template, climate_zone)
76
+ when 'HighriseApartment'
77
+ return PrototypeBuilding::HighriseApartment.define_hvac_system_map(building_type, template, climate_zone)
78
+ else
79
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model.define_hvac_system_map', "Building Type = #{building_type} not recognized")
80
+ return false
81
+ end
82
+ end
83
+
84
+ def custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
85
+ case building_type
86
+ when 'SecondarySchool'
87
+ return PrototypeBuilding::SecondarySchool.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
88
+ when 'PrimarySchool'
89
+ return PrototypeBuilding::PrimarySchool.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
90
+ when 'SmallOffice'
91
+ return PrototypeBuilding::SmallOffice.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
92
+ when 'MediumOffice'
93
+ return PrototypeBuilding::MediumOffice.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
94
+ when 'LargeOffice'
95
+ return PrototypeBuilding::LargeOffice.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
96
+ when 'SmallHotel'
97
+ return PrototypeBuilding::SmallHotel.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
98
+ when 'LargeHotel'
99
+ return PrototypeBuilding::LargeHotel.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
100
+ when 'Warehouse'
101
+ return PrototypeBuilding::Warehouse.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
102
+ when 'RetailStandalone'
103
+ return PrototypeBuilding::RetailStandalone.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
104
+ when 'RetailStripmall'
105
+ return PrototypeBuilding::RetailStripmall.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
106
+ when 'QuickServiceRestaurant'
107
+ return PrototypeBuilding::QuickServiceRestaurant.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
108
+ when 'FullServiceRestaurant'
109
+ return PrototypeBuilding::FullServiceRestaurant.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
110
+ when 'Hospital'
111
+ return PrototypeBuilding::Hospital.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
112
+ when 'Outpatient'
113
+ return PrototypeBuilding::Outpatient.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
114
+ when 'MidriseApartment'
115
+ return PrototypeBuilding::MidriseApartment.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
116
+ when 'HighriseApartment'
117
+ return PrototypeBuilding::HighriseApartment.custom_hvac_tweaks(building_type, template, climate_zone, prototype_input, model)
118
+ else
119
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model.custom_hvac_tweaks', "Building Type = #{building_type} not recognized")
120
+ return false
121
+ end
122
+ end
123
+
124
+ def custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
125
+ case building_type
126
+ when 'SecondarySchool'
127
+ return PrototypeBuilding::SecondarySchool.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
128
+ when 'PrimarySchool'
129
+ return PrototypeBuilding::PrimarySchool.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
130
+ when 'SmallOffice'
131
+ return PrototypeBuilding::SmallOffice.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
132
+ when 'MediumOffice'
133
+ return PrototypeBuilding::MediumOffice.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
134
+ when 'LargeOffice'
135
+ return PrototypeBuilding::LargeOffice.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
136
+ when 'SmallHotel'
137
+ return PrototypeBuilding::SmallHotel.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
138
+ when 'LargeHotel'
139
+ return PrototypeBuilding::LargeHotel.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
140
+ when 'Warehouse'
141
+ return PrototypeBuilding::Warehouse.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
142
+ when 'RetailStandalone'
143
+ return PrototypeBuilding::RetailStandalone.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
144
+ when 'RetailStripmall'
145
+ return PrototypeBuilding::RetailStripmall.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
146
+ when 'QuickServiceRestaurant'
147
+ return PrototypeBuilding::QuickServiceRestaurant.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
148
+ when 'FullServiceRestaurant'
149
+ return PrototypeBuilding::FullServiceRestaurant.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
150
+ when 'Hospital'
151
+ return PrototypeBuilding::Hospital.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
152
+ when 'Outpatient'
153
+ return PrototypeBuilding::Outpatient.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
154
+ when 'MidriseApartment'
155
+ return PrototypeBuilding::MidriseApartment.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
156
+ when 'HighriseApartment'
157
+ return PrototypeBuilding::HighriseApartment.custom_swh_tweaks(building_type, template, climate_zone, prototype_input, model)
158
+ else
159
+ OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model.custom_swh_tweaks', "Building Type = #{building_type} not recognized")
160
+ return false
161
+ end
162
+ end
163
+ end