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.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards.xlsx +0 -0
- data/data/standards/OpenStudio_Standards_boilers.json +62 -4
- data/data/standards/OpenStudio_Standards_chillers.json +778 -68
- data/data/standards/OpenStudio_Standards_construction_sets.json +52 -93
- data/data/standards/OpenStudio_Standards_curve_biquadratics.json +36 -36
- data/data/standards/OpenStudio_Standards_curve_quadratics.json +3 -3
- data/data/standards/OpenStudio_Standards_heat_pumps.json +840 -0
- data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +352 -0
- data/data/standards/OpenStudio_Standards_heat_rejection.json +48 -0
- data/data/standards/OpenStudio_Standards_motors.json +270 -0
- data/data/standards/OpenStudio_Standards_space_types.json +10390 -2824
- data/data/standards/OpenStudio_Standards_unitary_acs.json +794 -18
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.ddy +538 -0
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Boulder-Broomfield-Jefferson.County.AP.724699_TMY3.stat +493 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.ddy +536 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Denver.Intl.AP.725650_TMY3.stat +554 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.ddy +536 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.epw +8768 -0
- data/data/weather/USA_CO_Fort.Collins.AWOS.724769_TMY3.stat +554 -0
- data/data/weather/envelope_info.csv +6 -0
- data/lib/openstudio-standards.rb +10 -11
- data/lib/openstudio-standards/btap/compliance.rb +251 -969
- data/lib/openstudio-standards/btap/envelope.rb +1 -1
- data/lib/openstudio-standards/btap/fileio.rb +37 -5
- data/lib/openstudio-standards/btap/geometry.rb +27 -17
- data/lib/openstudio-standards/btap/hvac.rb +80 -27
- data/lib/openstudio-standards/hvac_sizing/{HVACSizing.CoilHeatingDXMultiSpeed.rb → Siz.CoilHeatingDXMultiSpeed.rb} +0 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +30 -4
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerTwoSpeed.rb +61 -5
- data/lib/openstudio-standards/hvac_sizing/Siz.CoolingTowerVariableSpeed.rb +37 -7
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictCooling.rb +27 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.DistrictHeating.rb +27 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsConstantSpeed.rb +55 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeaderedPumpsVariableSpeed.rb +55 -0
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +51 -9
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +99 -17
- data/lib/openstudio-standards/hvac_sizing/Siz.PumpConstantSpeed.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +29 -6
- data/lib/openstudio-standards/hvac_sizing/Siz.WaterHeaterMixed.rb +16 -0
- data/lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb +43 -48
- data/lib/openstudio-standards/prototypes/Prototype.ControllerWaterCoil.rb +5 -9
- data/lib/openstudio-standards/prototypes/Prototype.Fan.rb +68 -0
- data/lib/openstudio-standards/prototypes/Prototype.FanConstantVolume.rb +39 -43
- data/lib/openstudio-standards/prototypes/Prototype.FanOnOff.rb +49 -51
- data/lib/openstudio-standards/prototypes/Prototype.FanVariableVolume.rb +55 -61
- data/lib/openstudio-standards/prototypes/Prototype.FanZoneExhaust.rb +8 -10
- data/lib/openstudio-standards/prototypes/Prototype.HeatExchangerAirToAirSensibleAndLatent.rb +15 -20
- data/lib/openstudio-standards/prototypes/Prototype.Model.hvac.rb +330 -322
- data/lib/openstudio-standards/prototypes/Prototype.Model.rb +501 -446
- data/lib/openstudio-standards/prototypes/Prototype.Model.swh.rb +221 -230
- data/lib/openstudio-standards/prototypes/Prototype.add_objects.rb +0 -2
- data/lib/openstudio-standards/prototypes/Prototype.full_service_restaurant.rb +130 -137
- data/lib/openstudio-standards/prototypes/Prototype.high_rise_apartment.rb +374 -291
- data/lib/openstudio-standards/prototypes/Prototype.hospital.rb +146 -193
- data/lib/openstudio-standards/prototypes/Prototype.hvac_systems.rb +1315 -1113
- data/lib/openstudio-standards/prototypes/Prototype.large_hotel.rb +65 -88
- data/lib/openstudio-standards/prototypes/Prototype.large_office.rb +101 -156
- data/lib/openstudio-standards/prototypes/Prototype.medium_office.rb +46 -96
- data/lib/openstudio-standards/prototypes/Prototype.mid_rise_apartment.rb +113 -123
- data/lib/openstudio-standards/prototypes/Prototype.outpatient.rb +356 -345
- data/lib/openstudio-standards/prototypes/Prototype.primary_school.rb +48 -103
- data/lib/openstudio-standards/prototypes/Prototype.quick_service_restaurant.rb +115 -123
- data/lib/openstudio-standards/prototypes/Prototype.retail_standalone.rb +30 -39
- data/lib/openstudio-standards/prototypes/Prototype.retail_stripmall.rb +32 -45
- data/lib/openstudio-standards/prototypes/Prototype.secondary_school.rb +98 -258
- data/lib/openstudio-standards/prototypes/Prototype.small_hotel.rb +429 -474
- data/lib/openstudio-standards/prototypes/Prototype.small_office.rb +28 -36
- data/lib/openstudio-standards/prototypes/Prototype.strip_model.rb +7 -7
- data/lib/openstudio-standards/prototypes/Prototype.utilities.rb +172 -146
- data/lib/openstudio-standards/prototypes/Prototype.warehouse.rb +46 -53
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +885 -707
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +48 -57
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +24 -31
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +80 -93
- data/lib/openstudio-standards/standards/Standards.BuildingStory.rb +69 -0
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +60 -72
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +104 -108
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +190 -198
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +134 -146
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +56 -60
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +151 -161
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +30 -34
- data/lib/openstudio-standards/standards/Standards.Construction.rb +116 -132
- data/lib/openstudio-standards/standards/Standards.CoolingTower.rb +138 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerSingleSpeed.rb +11 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerTwoSpeed.rb +11 -0
- data/lib/openstudio-standards/standards/Standards.CoolingTowerVariableSpeed.rb +16 -0
- data/lib/openstudio-standards/standards/Standards.Fan.rb +190 -236
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +168 -14
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +33 -0
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +83 -0
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +22 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +2385 -1622
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +83 -35
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +805 -395
- data/lib/openstudio-standards/standards/Standards.Pump.rb +139 -119
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -2
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +16 -15
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +35 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +7 -13
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +144 -59
- data/lib/openstudio-standards/standards/Standards.Space.rb +1509 -1326
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +254 -262
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +105 -105
- data/lib/openstudio-standards/standards/Standards.Surface.rb +27 -31
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +882 -157
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +179 -69
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +75 -0
- data/lib/openstudio-standards/utilities/logging.rb +31 -38
- data/lib/openstudio-standards/utilities/simulation.rb +118 -82
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/Weather.Model.rb +382 -390
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +159 -78
- 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,
|
9
|
+
def define_space_type_map(building_type, template, climate_zone)
|
11
10
|
space_type_map = nil
|
12
|
-
case
|
11
|
+
case template
|
13
12
|
when 'NECB 2011'
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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,
|
31
|
+
def define_hvac_system_map(building_type, template, climate_zone)
|
32
32
|
system_to_space_map = [
|
33
33
|
{
|
34
|
-
|
35
|
-
|
34
|
+
'type' => 'PSZ-AC',
|
35
|
+
'space_names' => ['Back_Space', 'Core_Retail', 'Point_Of_Sale', 'Front_Retail']
|
36
36
|
},
|
37
37
|
{
|
38
|
-
|
39
|
-
|
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
|
51
|
-
case
|
52
|
-
when '90.1-2004','90.1-2007','90.1-2010','90.1-2013'
|
53
|
-
entry_space =
|
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(
|
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
|
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(
|
71
|
-
case
|
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
|
-
|
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
|
-
|
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
|
8
|
-
|
6
|
+
case template
|
7
|
+
|
9
8
|
when 'NECB 2011'
|
10
|
-
|
11
|
-
|
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
|
-
|
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,
|
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,
|
94
|
-
|
95
|
-
|
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
|
102
|
-
when '90.1-2004','90.1-2007','90.1-2010', '90.1-2013'
|
103
|
-
door_infiltration_map = { ['LGstore1','LGstore2'] => 0.388884328,
|
104
|
-
|
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 =
|
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 =
|
107
|
+
infiltration_schedule = add_schedule('RetailStripmall INFIL_Door_Opening_SCH')
|
115
108
|
if infiltration_schedule.nil?
|
116
|
-
OpenStudio
|
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
|
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(
|
133
|
-
case
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
"
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
"
|
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
|
-
|
81
|
-
|
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,
|
118
|
-
|
57
|
+
def define_hvac_system_map(building_type, template, climate_zone)
|
119
58
|
system_to_space_map = nil
|
120
|
-
|
121
|
-
case
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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,
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
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
|