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.
- 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
|