openstudio-standards 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards.xlsx +0 -0
- data/lib/openstudio-standards/btap/compliance.rb +17 -7
- data/lib/openstudio-standards/btap/hvac.rb +6 -5
- data/lib/openstudio-standards/btap/measures.rb +137 -102
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +2 -2
- data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +1 -1
- data/lib/openstudio-standards/prototypes/Prototype.Model.rb +96 -31
- data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +1 -1
- data/lib/openstudio-standards/prototypes/Prototype.building_specific_methods.rb +163 -0
- data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +54 -52
- data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +28 -26
- data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +41 -39
- data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +19 -17
- data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +16 -13
- data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +13 -11
- data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +33 -31
- data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +66 -64
- data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +8 -88
- data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +54 -52
- data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +13 -11
- data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +15 -13
- data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +11 -9
- data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +13 -11
- data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +7 -5
- data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +18 -13
- data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +11 -9
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +23 -12
- data/lib/openstudio-standards/standards/Standards.Fan.rb +7 -4
- data/lib/openstudio-standards/standards/Standards.Model.rb +4 -4
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +9 -4
- data/lib/openstudio-standards/utilities/simulation.rb +6 -1
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +1 -1
- 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}/
|
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}/
|
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.
|
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
|
-
|
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
|
-
|
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(
|
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}/
|
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'
|
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,
|
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
|
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' =>
|
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,
|
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'
|
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
|