openstudio-standards 0.2.15 → 0.2.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +117 -117
- data/data/geometry/ASHRAEHighriseApartment.osm +0 -27
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx +0 -0
- data/data/standards/export_OpenStudio_libraries.rb +2 -0
- data/data/standards/test_performance_expected_dd_results.csv +892 -892
- data/lib/openstudio-standards/btap/btap_result.rb +2 -2
- data/lib/openstudio-standards/btap/reporting.rb +2 -2
- data/lib/openstudio-standards/btap/simmanager.rb +2 -2
- data/lib/openstudio-standards/hvac_sizing/Siz.ControllerOutdoorAir.rb +0 -54
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +11 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.Model.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +26 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +14 -6
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +63 -63
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +12 -9
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +35 -16
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +23 -10
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +36 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ServiceWaterHeating.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +25 -15
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -3
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +2 -0
- data/lib/openstudio-standards/standards/Standards.Construction.rb +12 -6
- data/lib/openstudio-standards/standards/Standards.Model.rb +43 -8
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +15 -0
- data/lib/openstudio-standards/standards/Standards.Space.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +7 -0
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +32 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_properties.json +22 -742
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.prototype_inputs.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +25 -25
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_properties.json +19 -559
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.prototype_inputs.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +11 -11
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_properties.json +19 -559
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.prototype_inputs.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_properties.json +19 -559
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.prototype_inputs.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +13 -13
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_properties.json +370 -910
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.prototype_inputs.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +18 -18
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +19 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_properties.json +2380 -1300
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.construction_sets.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.prototype_inputs.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.refrigeration_system.json +0 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +18 -18
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +140 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.schedules.json +1176 -312
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.construction_properties.json +172 -1132
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.construction_sets.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.prototype_inputs.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.construction_properties.json +180 -1140
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.construction_sets.json +14 -14
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.prototype_inputs.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/data/nrel_zne_ready_2017.construction_properties.json +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/data/ze_aedg_multifamily.construction_properties.json +9 -9
- data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +15 -0
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +12 -6
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +12 -6
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +16 -8
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +10 -20
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +209 -37
- data/lib/openstudio-standards/standards/necb/ECMS/loads.rb +1 -0
- data/lib/openstudio-standards/standards/necb/ECMS/pv_ground.rb +8 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +16 -9
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartment.osm +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/LowriseApartment.osm +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/MidriseApartment.osm +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_multi_speed.rb +9 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +10 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +9 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +14 -8
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +14 -8
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +13 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +12 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +4 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +38 -19
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/service_water_heating.rb +15 -4
- data/lib/openstudio-standards/standards/necb/NECB2020/building_envelope.rb +10 -651
- data/lib/openstudio-standards/standards/necb/NECB2020/necb_2020.rb +8 -38
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +159 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +41 -43
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +7 -4
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards.rb +1 -0
- metadata +5 -2
@@ -20,8 +20,8 @@ module BTAP
|
|
20
20
|
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Electricity' AND RowName='Electricity:Facility'" +
|
21
21
|
" AND ColumnName='Electricity Maximum Value' AND Units='W'")
|
22
22
|
natural_gas_peak = model.sqlFile().get().execAndReturnFirstDouble("SELECT Value FROM tabulardatawithstrings WHERE ReportName='EnergyMeters'" +
|
23
|
-
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Gas' AND RowName='
|
24
|
-
" AND ColumnName='Gas Maximum Value' AND Units='W'")
|
23
|
+
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Natural Gas' AND RowName='NaturalGas:Facility'" +
|
24
|
+
" AND ColumnName='Natural Gas Maximum Value' AND Units='W'")
|
25
25
|
|
26
26
|
# Create hash to store all the collected data.
|
27
27
|
qaqc = {}
|
@@ -215,8 +215,8 @@ module BTAP
|
|
215
215
|
end
|
216
216
|
|
217
217
|
natural_gas_peak = model.sqlFile().get().execAndReturnFirstDouble("SELECT Value FROM tabulardatawithstrings WHERE ReportName='EnergyMeters'" +
|
218
|
-
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Gas' AND RowName='
|
219
|
-
" AND ColumnName='Gas Maximum Value' AND Units='W'")
|
218
|
+
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Natural Gas' AND RowName='NaturalGas:Facility'" +
|
219
|
+
" AND ColumnName='Natural Gas Maximum Value' AND Units='W'")
|
220
220
|
if natural_gas_peak.empty?
|
221
221
|
natural_gas_peak = 0.0
|
222
222
|
end
|
@@ -472,8 +472,8 @@ module BTAP
|
|
472
472
|
end
|
473
473
|
|
474
474
|
natural_gas_peak = model.sqlFile().get().execAndReturnFirstDouble("SELECT Value FROM tabulardatawithstrings WHERE ReportName='EnergyMeters'" +
|
475
|
-
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Gas' AND RowName='
|
476
|
-
" AND ColumnName='Gas Maximum Value' AND Units='W'")
|
475
|
+
" AND ReportForString='Entire Facility' AND TableName='Annual and Peak Values - Natural Gas' AND RowName='NaturalGas:Facility'" +
|
476
|
+
" AND ColumnName='Natural Gas Maximum Value' AND Units='W'")
|
477
477
|
if natural_gas_peak.empty?
|
478
478
|
natural_gas_peak = 0.0
|
479
479
|
end
|
@@ -54,60 +54,6 @@ class OpenStudio::Model::ControllerOutdoorAir
|
|
54
54
|
end
|
55
55
|
air_loop = oa_sys.airLoop.get
|
56
56
|
|
57
|
-
# Determine if the system is multizone
|
58
|
-
multizone = false
|
59
|
-
if air_loop.thermalZones.size > 1
|
60
|
-
multizone = true
|
61
|
-
end
|
62
|
-
|
63
|
-
# Determine if the system is variable volume
|
64
|
-
vav = false
|
65
|
-
air_loop.supplyComponents.reverse.each do |comp|
|
66
|
-
if comp.to_FanVariableVolume.is_initialized
|
67
|
-
vav = true
|
68
|
-
elsif comp.to_AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.is_initialized
|
69
|
-
fan = comp.to_AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.get.supplyAirFan
|
70
|
-
if fan.to_FanVariableVolume.is_initialized
|
71
|
-
vav = true
|
72
|
-
end
|
73
|
-
elsif comp.to_AirLoopHVACUnitarySystem.is_initialized
|
74
|
-
fan = comp.to_AirLoopHVACUnitarySystem.get.supplyFan
|
75
|
-
if fan.is_initialized
|
76
|
-
if fan.get.to_FanVariableVolume.is_initialized
|
77
|
-
vav = true
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
# If it is a multizone VAV system, get the system multiplier
|
84
|
-
# to work around the bug in EnergyPlus.
|
85
|
-
if multizone && vav
|
86
|
-
if oa.is_initialized
|
87
|
-
oa_val = oa.get
|
88
|
-
|
89
|
-
# Get the system multiplier
|
90
|
-
mult = 1
|
91
|
-
|
92
|
-
# Get all the zone multipliers
|
93
|
-
zn_mults = []
|
94
|
-
air_loop.thermalZones.each do |zone|
|
95
|
-
zn_mults << zone.multiplier
|
96
|
-
end
|
97
|
-
|
98
|
-
# Warn if there are different multipliers
|
99
|
-
uniq_mults = zn_mults.uniq
|
100
|
-
if uniq_mults.size > 1
|
101
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirLoopHVAC', "For #{air_loop.name}: not all zones on the system have an identical zone multiplier. Multipliers are: #{uniq_mults.join(', ')}.")
|
102
|
-
else
|
103
|
-
mult = uniq_mults[0]
|
104
|
-
end
|
105
|
-
|
106
|
-
oa_val = oa_val * mult
|
107
|
-
oa = OpenStudio::OptionalDouble.new(oa_val)
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
57
|
return oa
|
112
58
|
end
|
113
59
|
end
|
@@ -263,6 +263,11 @@ class OpenStudio::Model::Model
|
|
263
263
|
# Get the object type
|
264
264
|
obj_type = equipment.iddObjectType.valueName.to_s
|
265
265
|
case obj_type
|
266
|
+
when 'OS_AirLooHVAC_UnitarySystem'
|
267
|
+
equipment = equipment.to_AirLoopHVACUnitarySystem.get
|
268
|
+
if equipment.heatingCoil.is_initialized
|
269
|
+
fuels += self.coil_heating_fuels(equipment.heatingCoil.get)
|
270
|
+
end
|
266
271
|
when 'OS_AirTerminal_SingleDuct_ConstantVolume_FourPipeInduction'
|
267
272
|
equipment = equipment.to_AirTerminalSingleDuctConstantVolumeFourPipeInduction.get
|
268
273
|
fuels += self.coil_heating_fuels(equipment.heatingCoil)
|
@@ -350,7 +355,12 @@ class OpenStudio::Model::Model
|
|
350
355
|
zone.equipment.each do |equipment|
|
351
356
|
# Get the object type
|
352
357
|
obj_type = equipment.iddObjectType.valueName.to_s
|
353
|
-
case obj_type
|
358
|
+
case obj_type
|
359
|
+
when 'OS_AirLoopHVAC_UnitarySystem'
|
360
|
+
equipment = equipment.to_AirLoopHVACUnitarySystem.get
|
361
|
+
if equipment.coolingCoil.is_initialized
|
362
|
+
fuels += self.coil_cooling_fuels(equipment.coolingCoil.get)
|
363
|
+
end
|
354
364
|
when 'OS_AirTerminal_SingleDuct_ConstantVolume_CooledBeam'
|
355
365
|
equipment = equipment.to_AirTerminalSingleDuctConstantVolumeCooledBeam.get
|
356
366
|
fuels += self.coil_cooling_fuels(equipment.coilCoolingCooledBeam)
|
@@ -236,7 +236,7 @@ class OpenStudio::Model::ThermalZone
|
|
236
236
|
# serving those air loops.
|
237
237
|
#
|
238
238
|
# return [Array<String>] An array. Possible values are
|
239
|
-
# Electricity, NaturalGas, PropaneGas, FuelOilNo1, FuelOilNo2,
|
239
|
+
# Electricity, NaturalGas, Propane, PropaneGas, FuelOilNo1, FuelOilNo2,
|
240
240
|
# Coal, Diesel, Gasoline, DistrictCooling, DistrictHeating,
|
241
241
|
# and SolarEnergy.
|
242
242
|
def heating_fuels
|
@@ -278,7 +278,7 @@ class OpenStudio::Model::ThermalZone
|
|
278
278
|
# serving those air loops.
|
279
279
|
#
|
280
280
|
# return [Array<String>] An array. Possible values are
|
281
|
-
# Electricity, NaturalGas, PropaneGas, FuelOilNo1, FuelOilNo2,
|
281
|
+
# Electricity, NaturalGas, Propane, PropaneGas, FuelOilNo1, FuelOilNo2,
|
282
282
|
# Coal, Diesel, Gasoline, DistrictCooling, DistrictHeating,
|
283
283
|
# and SolarEnergy.
|
284
284
|
def cooling_fuels
|
@@ -9,6 +9,27 @@ module College
|
|
9
9
|
# @param prototype_input [Hash] hash of prototype inputs
|
10
10
|
# @return [Bool] returns true if successful, false if not
|
11
11
|
def model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input)
|
12
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
|
13
|
+
|
14
|
+
model.getSpaces.each do |space|
|
15
|
+
if space.name.get.to_s == 'CB_PUBLIC_ELEVATORS_F1'
|
16
|
+
model_add_elevator(model,
|
17
|
+
space,
|
18
|
+
prototype_input['number_of_elevators'],
|
19
|
+
prototype_input['elevator_type'],
|
20
|
+
prototype_input['elevator_schedule'],
|
21
|
+
prototype_input['elevator_fan_schedule'],
|
22
|
+
prototype_input['elevator_fan_schedule'],
|
23
|
+
building_type)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
|
28
|
+
|
29
|
+
# add extra infiltration for entry door
|
30
|
+
add_door_infiltration(climate_zone, model)
|
31
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Added door infiltration')
|
32
|
+
|
12
33
|
return true
|
13
34
|
end
|
14
35
|
|
@@ -25,7 +46,7 @@ module College
|
|
25
46
|
infiltration_entrydoor.setName('entry door Infiltration')
|
26
47
|
infiltration_per_zone_entrydoor = 0
|
27
48
|
if template == '90.1-2004'
|
28
|
-
infiltration_per_zone_entrydoor =
|
49
|
+
infiltration_per_zone_entrydoor = 4.566024
|
29
50
|
infiltration_entrydoor.setSchedule(model_add_schedule(model, 'College INFIL_Door_Opening_SCH'))
|
30
51
|
elsif template == '90.1-2007'
|
31
52
|
case climate_zone
|
@@ -35,10 +56,10 @@ module College
|
|
35
56
|
'ASHRAE 169-2006-4A',
|
36
57
|
'ASHRAE 169-2006-4B',
|
37
58
|
'ASHRAE 169-2006-4C'
|
38
|
-
infiltration_per_zone_entrydoor =
|
59
|
+
infiltration_per_zone_entrydoor = 3.204085
|
39
60
|
infiltration_entrydoor.setSchedule(model_add_schedule(model, 'College INFIL_Door_Opening_SCH'))
|
40
61
|
else
|
41
|
-
infiltration_per_zone_entrydoor =
|
62
|
+
infiltration_per_zone_entrydoor = 4.566024
|
42
63
|
infiltration_entrydoor.setSchedule(model_add_schedule(model, 'College INFIL_Door_Opening_SCH'))
|
43
64
|
end
|
44
65
|
elsif template == '90.1-2010' || template == '90.1-2013'
|
@@ -46,10 +67,10 @@ module College
|
|
46
67
|
when 'ASHRAE 169-2006-3A',
|
47
68
|
'ASHRAE 169-2006-3B',
|
48
69
|
'ASHRAE 169-2006-3C'
|
49
|
-
infiltration_per_zone_entrydoor =
|
70
|
+
infiltration_per_zone_entrydoor = 3.204085
|
50
71
|
infiltration_entrydoor.setSchedule(model_add_schedule(model, 'College INFIL_Door_Opening_SCH'))
|
51
72
|
else
|
52
|
-
infiltration_per_zone_entrydoor =
|
73
|
+
infiltration_per_zone_entrydoor = 4.566024
|
53
74
|
infiltration_entrydoor.setSchedule(model_add_schedule(model, 'College INFIL_Door_Opening_SCH'))
|
54
75
|
end
|
55
76
|
end
|
@@ -11,6 +11,15 @@ module Laboratory
|
|
11
11
|
def model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input)
|
12
12
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments')
|
13
13
|
|
14
|
+
# get the fume hood space type and exhaust ACH
|
15
|
+
fume_hood_exhaust_ach = nil
|
16
|
+
model.getSpaceTypes.each do |spc_type|
|
17
|
+
next unless spc_type.name.get.to_s.downcase.include? 'fume hood'
|
18
|
+
|
19
|
+
spc_type_properties = space_type_get_standards_data(spc_type)
|
20
|
+
fume_hood_exhaust_ach = spc_type_properties['ventilation_air_changes'].to_f
|
21
|
+
end
|
22
|
+
|
14
23
|
# For fume hood, the OA rate varies with the fume hood schedule
|
15
24
|
# So add "Proportional Control Minimum Outdoor Air Flow Rate Schedule"
|
16
25
|
# at the mean time, modify "Outdoor Air Method" to "ProportionalControlBasedOnDesignOARate" in Controller:MechanicalVentilation of the DOAS
|
@@ -19,6 +28,11 @@ module Laboratory
|
|
19
28
|
|
20
29
|
ventilation = space.designSpecificationOutdoorAir.get
|
21
30
|
ventilation.setOutdoorAirFlowRateFractionSchedule(model_add_schedule(model, 'Lab_FumeHood_Sch'))
|
31
|
+
|
32
|
+
# add exhaust fan to fume hood zone
|
33
|
+
fume_hood_zone_volume = space.volume
|
34
|
+
flow_rate_fume_hood = fume_hood_zone_volume * fume_hood_exhaust_ach / 3600.0
|
35
|
+
model_add_exhaust_fan(model, [space.thermalZone.get], flow_rate: flow_rate_fume_hood, flow_fraction_schedule_name: 'Lab_FumeHood_Sch')
|
22
36
|
end
|
23
37
|
|
24
38
|
# adjust doas sizing
|
@@ -38,12 +52,6 @@ module Laboratory
|
|
38
52
|
end
|
39
53
|
end
|
40
54
|
|
41
|
-
# @todo add exhaust fan to fume hood zone
|
42
|
-
# search_criteria = ...
|
43
|
-
# fume_hood_space = model_find_object(standards_data['Space Types'], search_criteria)
|
44
|
-
# fume_hood_zone_volume = fume_hood_space.getVolume...
|
45
|
-
# flow_rate_fume_hood = fume_hood_zone_volume * fume_hood_space['Ventilation_Air_Changes...']
|
46
|
-
# model_add_exhaust_fan(model, thermal_zones, flow_rate=flow_rate_fume_hood, flow_fraction_schedule_name='Lab_FumeHood_Sch')
|
47
55
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments')
|
48
56
|
return true
|
49
57
|
end
|
@@ -2970,9 +2970,9 @@ end
|
|
2970
2970
|
end
|
2971
2971
|
end
|
2972
2972
|
|
2973
|
-
# This class represents a prototypical ASHRAE9012004
|
2974
|
-
class
|
2975
|
-
@@building_type = "
|
2973
|
+
# This class represents a prototypical ASHRAE9012004 Courthouse.
|
2974
|
+
class ASHRAE9012004Courthouse < ASHRAE9012004
|
2975
|
+
@@building_type = "Courthouse"
|
2976
2976
|
register_standard ("90.1-2004_#{@@building_type}")
|
2977
2977
|
attr_accessor :prototype_database
|
2978
2978
|
attr_accessor :prototype_input
|
@@ -2987,7 +2987,7 @@ end
|
|
2987
2987
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
2988
2988
|
if @prototype_input.nil?
|
2989
2989
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
2990
|
-
raise("Could not find prototype inputs for
|
2990
|
+
raise("Could not find prototype inputs for ASHRAE9012004Courthouse, cannot create model.")
|
2991
2991
|
return false
|
2992
2992
|
end
|
2993
2993
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -3004,7 +3004,7 @@ end
|
|
3004
3004
|
def set_variables()
|
3005
3005
|
# Will be overwritten in class reopen file.
|
3006
3006
|
# add all building methods for now.
|
3007
|
-
self.extend(
|
3007
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
3008
3008
|
end
|
3009
3009
|
# Returns the mapping between the names of the spaces
|
3010
3010
|
# in the geometry .osm file and the space types
|
@@ -6283,9 +6283,9 @@ end
|
|
6283
6283
|
end
|
6284
6284
|
end
|
6285
6285
|
|
6286
|
-
# This class represents a prototypical ASHRAE9012007
|
6287
|
-
class
|
6288
|
-
@@building_type = "
|
6286
|
+
# This class represents a prototypical ASHRAE9012007 Courthouse.
|
6287
|
+
class ASHRAE9012007Courthouse < ASHRAE9012007
|
6288
|
+
@@building_type = "Courthouse"
|
6289
6289
|
register_standard ("90.1-2007_#{@@building_type}")
|
6290
6290
|
attr_accessor :prototype_database
|
6291
6291
|
attr_accessor :prototype_input
|
@@ -6300,7 +6300,7 @@ end
|
|
6300
6300
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
6301
6301
|
if @prototype_input.nil?
|
6302
6302
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
6303
|
-
raise("Could not find prototype inputs for
|
6303
|
+
raise("Could not find prototype inputs for ASHRAE9012007Courthouse, cannot create model.")
|
6304
6304
|
return false
|
6305
6305
|
end
|
6306
6306
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -6317,7 +6317,7 @@ end
|
|
6317
6317
|
def set_variables()
|
6318
6318
|
# Will be overwritten in class reopen file.
|
6319
6319
|
# add all building methods for now.
|
6320
|
-
self.extend(
|
6320
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
6321
6321
|
end
|
6322
6322
|
# Returns the mapping between the names of the spaces
|
6323
6323
|
# in the geometry .osm file and the space types
|
@@ -9596,9 +9596,9 @@ end
|
|
9596
9596
|
end
|
9597
9597
|
end
|
9598
9598
|
|
9599
|
-
# This class represents a prototypical ASHRAE9012010
|
9600
|
-
class
|
9601
|
-
@@building_type = "
|
9599
|
+
# This class represents a prototypical ASHRAE9012010 Courthouse.
|
9600
|
+
class ASHRAE9012010Courthouse < ASHRAE9012010
|
9601
|
+
@@building_type = "Courthouse"
|
9602
9602
|
register_standard ("90.1-2010_#{@@building_type}")
|
9603
9603
|
attr_accessor :prototype_database
|
9604
9604
|
attr_accessor :prototype_input
|
@@ -9613,7 +9613,7 @@ end
|
|
9613
9613
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
9614
9614
|
if @prototype_input.nil?
|
9615
9615
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
9616
|
-
raise("Could not find prototype inputs for
|
9616
|
+
raise("Could not find prototype inputs for ASHRAE9012010Courthouse, cannot create model.")
|
9617
9617
|
return false
|
9618
9618
|
end
|
9619
9619
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -9630,7 +9630,7 @@ end
|
|
9630
9630
|
def set_variables()
|
9631
9631
|
# Will be overwritten in class reopen file.
|
9632
9632
|
# add all building methods for now.
|
9633
|
-
self.extend(
|
9633
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
9634
9634
|
end
|
9635
9635
|
# Returns the mapping between the names of the spaces
|
9636
9636
|
# in the geometry .osm file and the space types
|
@@ -12909,9 +12909,9 @@ end
|
|
12909
12909
|
end
|
12910
12910
|
end
|
12911
12911
|
|
12912
|
-
# This class represents a prototypical ASHRAE9012013
|
12913
|
-
class
|
12914
|
-
@@building_type = "
|
12912
|
+
# This class represents a prototypical ASHRAE9012013 Courthouse.
|
12913
|
+
class ASHRAE9012013Courthouse < ASHRAE9012013
|
12914
|
+
@@building_type = "Courthouse"
|
12915
12915
|
register_standard ("90.1-2013_#{@@building_type}")
|
12916
12916
|
attr_accessor :prototype_database
|
12917
12917
|
attr_accessor :prototype_input
|
@@ -12926,7 +12926,7 @@ end
|
|
12926
12926
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
12927
12927
|
if @prototype_input.nil?
|
12928
12928
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
12929
|
-
raise("Could not find prototype inputs for
|
12929
|
+
raise("Could not find prototype inputs for ASHRAE9012013Courthouse, cannot create model.")
|
12930
12930
|
return false
|
12931
12931
|
end
|
12932
12932
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -12943,7 +12943,7 @@ end
|
|
12943
12943
|
def set_variables()
|
12944
12944
|
# Will be overwritten in class reopen file.
|
12945
12945
|
# add all building methods for now.
|
12946
|
-
self.extend(
|
12946
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
12947
12947
|
end
|
12948
12948
|
# Returns the mapping between the names of the spaces
|
12949
12949
|
# in the geometry .osm file and the space types
|
@@ -16222,9 +16222,9 @@ end
|
|
16222
16222
|
end
|
16223
16223
|
end
|
16224
16224
|
|
16225
|
-
# This class represents a prototypical ASHRAE9012016
|
16226
|
-
class
|
16227
|
-
@@building_type = "
|
16225
|
+
# This class represents a prototypical ASHRAE9012016 Courthouse.
|
16226
|
+
class ASHRAE9012016Courthouse < ASHRAE9012016
|
16227
|
+
@@building_type = "Courthouse"
|
16228
16228
|
register_standard ("90.1-2016_#{@@building_type}")
|
16229
16229
|
attr_accessor :prototype_database
|
16230
16230
|
attr_accessor :prototype_input
|
@@ -16239,7 +16239,7 @@ end
|
|
16239
16239
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
16240
16240
|
if @prototype_input.nil?
|
16241
16241
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
16242
|
-
raise("Could not find prototype inputs for
|
16242
|
+
raise("Could not find prototype inputs for ASHRAE9012016Courthouse, cannot create model.")
|
16243
16243
|
return false
|
16244
16244
|
end
|
16245
16245
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -16256,7 +16256,7 @@ end
|
|
16256
16256
|
def set_variables()
|
16257
16257
|
# Will be overwritten in class reopen file.
|
16258
16258
|
# add all building methods for now.
|
16259
|
-
self.extend(
|
16259
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
16260
16260
|
end
|
16261
16261
|
# Returns the mapping between the names of the spaces
|
16262
16262
|
# in the geometry .osm file and the space types
|
@@ -19535,9 +19535,9 @@ end
|
|
19535
19535
|
end
|
19536
19536
|
end
|
19537
19537
|
|
19538
|
-
# This class represents a prototypical ASHRAE9012019
|
19539
|
-
class
|
19540
|
-
@@building_type = "
|
19538
|
+
# This class represents a prototypical ASHRAE9012019 Courthouse.
|
19539
|
+
class ASHRAE9012019Courthouse < ASHRAE9012019
|
19540
|
+
@@building_type = "Courthouse"
|
19541
19541
|
register_standard ("90.1-2019_#{@@building_type}")
|
19542
19542
|
attr_accessor :prototype_database
|
19543
19543
|
attr_accessor :prototype_input
|
@@ -19552,7 +19552,7 @@ end
|
|
19552
19552
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
19553
19553
|
if @prototype_input.nil?
|
19554
19554
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
19555
|
-
raise("Could not find prototype inputs for
|
19555
|
+
raise("Could not find prototype inputs for ASHRAE9012019Courthouse, cannot create model.")
|
19556
19556
|
return false
|
19557
19557
|
end
|
19558
19558
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -19569,7 +19569,7 @@ end
|
|
19569
19569
|
def set_variables()
|
19570
19570
|
# Will be overwritten in class reopen file.
|
19571
19571
|
# add all building methods for now.
|
19572
|
-
self.extend(
|
19572
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
19573
19573
|
end
|
19574
19574
|
# Returns the mapping between the names of the spaces
|
19575
19575
|
# in the geometry .osm file and the space types
|
@@ -22848,9 +22848,9 @@ end
|
|
22848
22848
|
end
|
22849
22849
|
end
|
22850
22850
|
|
22851
|
-
# This class represents a prototypical DOERef1980to2004
|
22852
|
-
class
|
22853
|
-
@@building_type = "
|
22851
|
+
# This class represents a prototypical DOERef1980to2004 Courthouse.
|
22852
|
+
class DOERef1980to2004Courthouse < DOERef1980to2004
|
22853
|
+
@@building_type = "Courthouse"
|
22854
22854
|
register_standard ("DOE Ref 1980-2004_#{@@building_type}")
|
22855
22855
|
attr_accessor :prototype_database
|
22856
22856
|
attr_accessor :prototype_input
|
@@ -22865,7 +22865,7 @@ end
|
|
22865
22865
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
22866
22866
|
if @prototype_input.nil?
|
22867
22867
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
22868
|
-
raise("Could not find prototype inputs for
|
22868
|
+
raise("Could not find prototype inputs for DOERef1980to2004Courthouse, cannot create model.")
|
22869
22869
|
return false
|
22870
22870
|
end
|
22871
22871
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -22882,7 +22882,7 @@ end
|
|
22882
22882
|
def set_variables()
|
22883
22883
|
# Will be overwritten in class reopen file.
|
22884
22884
|
# add all building methods for now.
|
22885
|
-
self.extend(
|
22885
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
22886
22886
|
end
|
22887
22887
|
# Returns the mapping between the names of the spaces
|
22888
22888
|
# in the geometry .osm file and the space types
|
@@ -26161,9 +26161,9 @@ end
|
|
26161
26161
|
end
|
26162
26162
|
end
|
26163
26163
|
|
26164
|
-
# This class represents a prototypical DOERefPre1980
|
26165
|
-
class
|
26166
|
-
@@building_type = "
|
26164
|
+
# This class represents a prototypical DOERefPre1980 Courthouse.
|
26165
|
+
class DOERefPre1980Courthouse < DOERefPre1980
|
26166
|
+
@@building_type = "Courthouse"
|
26167
26167
|
register_standard ("DOE Ref Pre-1980_#{@@building_type}")
|
26168
26168
|
attr_accessor :prototype_database
|
26169
26169
|
attr_accessor :prototype_input
|
@@ -26178,7 +26178,7 @@ end
|
|
26178
26178
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
26179
26179
|
if @prototype_input.nil?
|
26180
26180
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
26181
|
-
raise("Could not find prototype inputs for
|
26181
|
+
raise("Could not find prototype inputs for DOERefPre1980Courthouse, cannot create model.")
|
26182
26182
|
return false
|
26183
26183
|
end
|
26184
26184
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -26195,7 +26195,7 @@ end
|
|
26195
26195
|
def set_variables()
|
26196
26196
|
# Will be overwritten in class reopen file.
|
26197
26197
|
# add all building methods for now.
|
26198
|
-
self.extend(
|
26198
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
26199
26199
|
end
|
26200
26200
|
# Returns the mapping between the names of the spaces
|
26201
26201
|
# in the geometry .osm file and the space types
|
@@ -29474,9 +29474,9 @@ end
|
|
29474
29474
|
end
|
29475
29475
|
end
|
29476
29476
|
|
29477
|
-
# This class represents a prototypical NRELZNEReady2017
|
29478
|
-
class
|
29479
|
-
@@building_type = "
|
29477
|
+
# This class represents a prototypical NRELZNEReady2017 Courthouse.
|
29478
|
+
class NRELZNEReady2017Courthouse < NRELZNEReady2017
|
29479
|
+
@@building_type = "Courthouse"
|
29480
29480
|
register_standard ("NREL ZNE Ready 2017_#{@@building_type}")
|
29481
29481
|
attr_accessor :prototype_database
|
29482
29482
|
attr_accessor :prototype_input
|
@@ -29491,7 +29491,7 @@ end
|
|
29491
29491
|
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs',search_criteria: {'template' => @template,'building_type' => @@building_type })
|
29492
29492
|
if @prototype_input.nil?
|
29493
29493
|
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => @template,'building_type' => @@building_type }}, cannot create model.")
|
29494
|
-
raise("Could not find prototype inputs for
|
29494
|
+
raise("Could not find prototype inputs for NRELZNEReady2017Courthouse, cannot create model.")
|
29495
29495
|
return false
|
29496
29496
|
end
|
29497
29497
|
@lookup_building_type = self.model_get_lookup_name(@@building_type)
|
@@ -29508,7 +29508,7 @@ end
|
|
29508
29508
|
def set_variables()
|
29509
29509
|
# Will be overwritten in class reopen file.
|
29510
29510
|
# add all building methods for now.
|
29511
|
-
self.extend(
|
29511
|
+
self.extend(Courthouse) unless @template == 'NECB 2011'
|
29512
29512
|
end
|
29513
29513
|
# Returns the mapping between the names of the spaces
|
29514
29514
|
# in the geometry .osm file and the space types
|
@@ -31981,9 +31981,9 @@ end
|
|
31981
31981
|
|
31982
31982
|
end
|
31983
31983
|
|
31984
|
-
# This class represents a prototypical NECB2011
|
31985
|
-
class
|
31986
|
-
BUILDING_TYPE = "
|
31984
|
+
# This class represents a prototypical NECB2011 Courthouse.
|
31985
|
+
class NECB2011Courthouse < NECB2011
|
31986
|
+
BUILDING_TYPE = "Courthouse"
|
31987
31987
|
TEMPLATE = "NECB2011"
|
31988
31988
|
register_standard ("#{TEMPLATE}_#{BUILDING_TYPE}")
|
31989
31989
|
attr_accessor :prototype_database
|
@@ -31999,11 +31999,11 @@ end
|
|
31999
31999
|
@building_type = BUILDING_TYPE
|
32000
32000
|
@template = TEMPLATE
|
32001
32001
|
@instvarbuilding_type = @building_type
|
32002
|
-
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2011",'building_type' => "
|
32002
|
+
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2011",'building_type' => "Courthouse" })
|
32003
32003
|
if @prototype_input.nil?
|
32004
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2011",'building_type' => "
|
32004
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2011",'building_type' => "Courthouse" }}, cannot create model.")
|
32005
32005
|
#puts JSON.pretty_generate(standards_data['prototype_inputs'])
|
32006
|
-
raise("Could not find prototype inputs for NECB2011
|
32006
|
+
raise("Could not find prototype inputs for NECB2011 Courthouse, cannot create model.")
|
32007
32007
|
return false
|
32008
32008
|
end
|
32009
32009
|
@lookup_building_type = self.model_get_lookup_name(@building_type)
|
@@ -34395,9 +34395,9 @@ end
|
|
34395
34395
|
|
34396
34396
|
end
|
34397
34397
|
|
34398
|
-
# This class represents a prototypical NECB2015
|
34399
|
-
class
|
34400
|
-
BUILDING_TYPE = "
|
34398
|
+
# This class represents a prototypical NECB2015 Courthouse.
|
34399
|
+
class NECB2015Courthouse < NECB2015
|
34400
|
+
BUILDING_TYPE = "Courthouse"
|
34401
34401
|
TEMPLATE = "NECB2015"
|
34402
34402
|
register_standard ("#{TEMPLATE}_#{BUILDING_TYPE}")
|
34403
34403
|
attr_accessor :prototype_database
|
@@ -34413,11 +34413,11 @@ end
|
|
34413
34413
|
@building_type = BUILDING_TYPE
|
34414
34414
|
@template = TEMPLATE
|
34415
34415
|
@instvarbuilding_type = @building_type
|
34416
|
-
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2015",'building_type' => "
|
34416
|
+
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2015",'building_type' => "Courthouse" })
|
34417
34417
|
if @prototype_input.nil?
|
34418
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2015",'building_type' => "
|
34418
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2015",'building_type' => "Courthouse" }}, cannot create model.")
|
34419
34419
|
#puts JSON.pretty_generate(standards_data['prototype_inputs'])
|
34420
|
-
raise("Could not find prototype inputs for NECB2015
|
34420
|
+
raise("Could not find prototype inputs for NECB2015 Courthouse, cannot create model.")
|
34421
34421
|
return false
|
34422
34422
|
end
|
34423
34423
|
@lookup_building_type = self.model_get_lookup_name(@building_type)
|
@@ -36809,9 +36809,9 @@ end
|
|
36809
36809
|
|
36810
36810
|
end
|
36811
36811
|
|
36812
|
-
# This class represents a prototypical NECB2017
|
36813
|
-
class
|
36814
|
-
BUILDING_TYPE = "
|
36812
|
+
# This class represents a prototypical NECB2017 Courthouse.
|
36813
|
+
class NECB2017Courthouse < NECB2017
|
36814
|
+
BUILDING_TYPE = "Courthouse"
|
36815
36815
|
TEMPLATE = "NECB2017"
|
36816
36816
|
register_standard ("#{TEMPLATE}_#{BUILDING_TYPE}")
|
36817
36817
|
attr_accessor :prototype_database
|
@@ -36827,11 +36827,11 @@ end
|
|
36827
36827
|
@building_type = BUILDING_TYPE
|
36828
36828
|
@template = TEMPLATE
|
36829
36829
|
@instvarbuilding_type = @building_type
|
36830
|
-
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2017",'building_type' => "
|
36830
|
+
@prototype_input = self.standards_lookup_table_first(table_name: 'prototype_inputs', search_criteria: {'template' => "NECB2017",'building_type' => "Courthouse" })
|
36831
36831
|
if @prototype_input.nil?
|
36832
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2017",'building_type' => "
|
36832
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Model', "Could not find prototype inputs for #{{'template' => "NECB2017",'building_type' => "Courthouse" }}, cannot create model.")
|
36833
36833
|
#puts JSON.pretty_generate(standards_data['prototype_inputs'])
|
36834
|
-
raise("Could not find prototype inputs for NECB2017
|
36834
|
+
raise("Could not find prototype inputs for NECB2017 Courthouse, cannot create model.")
|
36835
36835
|
return false
|
36836
36836
|
end
|
36837
36837
|
@lookup_building_type = self.model_get_lookup_name(@building_type)
|