openstudio-standards 0.2.16.rc1 → 0.2.16.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/standards/OpenStudio_Standards-ashrae_90_1.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/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +14 -6
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +12 -9
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +24 -12
- data/lib/openstudio-standards/standards/Standards.Model.rb +4 -0
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +15 -0
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +5 -2
- data/lib/openstudio-standards/standards/deer/deer.PlanarSurface.rb +15 -0
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +2 -2
- data/lib/openstudio-standards/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4687323abab6ca503d4b6b32e17c1451d213155ed3c82871b94d34aaef2314e3
|
4
|
+
data.tar.gz: bfb5e5eb27e9097efa812f4feef93321a2e3f228cfd64678dc5792d96dd643ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e9ddfba7c6e11bae35aca085b6c27de01aaae975019f4891f55d08a0a7da67efadf9e7344f992c09f332b7f56c8c3318242137fb106a314ccd7d35980bcbebc
|
7
|
+
data.tar.gz: b12da5eafbe5b39cc1e1785ffbca7d4b930fee40ec4966f1a8e4fdb534164fe2c00b8860a1c32613ec38db47c168b50a91ee21c39b72150915dc1066a2dc9411
|
Binary file
|
Binary file
|
@@ -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
|
@@ -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
|
@@ -11,9 +11,9 @@ class Standard
|
|
11
11
|
# @param nominal_thermal_efficiency [Double] boiler nominal thermal efficiency
|
12
12
|
# @param eff_curve_temp_eval_var [String] LeavingBoiler or EnteringBoiler temperature for the boiler efficiency curve
|
13
13
|
# @param flow_mode [String] boiler flow mode
|
14
|
-
# @param
|
14
|
+
# @param lvg_temp_dsgn_f [Double] boiler leaving design temperature in degrees Fahrenheit
|
15
15
|
# note that this field is deprecated in OS versions 3.0+
|
16
|
-
# @param
|
16
|
+
# @param out_temp_lmt_f [Double] boiler outlet temperature limit in degrees Fahrenheit
|
17
17
|
# @param min_plr [Double] boiler minimum part load ratio
|
18
18
|
# @param max_plr [Double] boiler maximum part load ratio
|
19
19
|
# @param opt_plr [Double] boiler optimum part load ratio
|
@@ -27,8 +27,8 @@ class Standard
|
|
27
27
|
nominal_thermal_efficiency: 0.80,
|
28
28
|
eff_curve_temp_eval_var: 'LeavingBoiler',
|
29
29
|
flow_mode: 'LeavingSetpointModulated',
|
30
|
-
|
31
|
-
|
30
|
+
lvg_temp_dsgn_f: 180.0, # 82.22 degrees Celsius
|
31
|
+
out_temp_lmt_f: 203.0, # 95.0 degrees Celsius
|
32
32
|
min_plr: 0.0,
|
33
33
|
max_plr: 1.2,
|
34
34
|
opt_plr: 1.0,
|
@@ -48,6 +48,8 @@ class Standard
|
|
48
48
|
|
49
49
|
if fuel_type.nil? || fuel_type == 'Gas'
|
50
50
|
boiler.setFuelType('NaturalGas')
|
51
|
+
elsif fuel_type == 'Propane' || fuel_type == 'PropaneGas'
|
52
|
+
boiler.setFuelType('Propane')
|
51
53
|
else
|
52
54
|
boiler.setFuelType(fuel_type)
|
53
55
|
end
|
@@ -71,23 +73,24 @@ class Standard
|
|
71
73
|
end
|
72
74
|
|
73
75
|
if model.version < OpenStudio::VersionString.new('3.0.0')
|
74
|
-
if
|
76
|
+
if lvg_temp_dsgn_f.nil?
|
75
77
|
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(180.0, 'F', 'C').get)
|
76
78
|
else
|
77
|
-
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(
|
79
|
+
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(lvg_temp_dsgn_f, 'F', 'C').get)
|
78
80
|
end
|
79
81
|
end
|
80
82
|
|
81
|
-
if
|
83
|
+
if out_temp_lmt_f.nil?
|
82
84
|
boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(203.0, 'F', 'C').get)
|
83
85
|
else
|
84
|
-
boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(
|
86
|
+
boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(out_temp_lmt_f, 'F', 'C').get)
|
85
87
|
end
|
86
88
|
|
87
89
|
# logic to set different defaults for condensing boilers if not specified
|
88
90
|
if draft_type == 'Condensing'
|
89
91
|
if model.version < OpenStudio::VersionString.new('3.0.0')
|
90
|
-
|
92
|
+
# default to 120 degrees Fahrenheit (48.49 degrees Celsius)
|
93
|
+
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(120.0, 'F', 'C').get) if lvg_temp_dsgn_f.nil?
|
91
94
|
end
|
92
95
|
boiler.setNominalThermalEfficiency(0.96) if nominal_thermal_efficiency.nil?
|
93
96
|
end
|
@@ -24,7 +24,7 @@ class Standard
|
|
24
24
|
# Creates a hot water loop with a boiler, district heating, or a water-to-water heat pump and adds it to the model.
|
25
25
|
#
|
26
26
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
27
|
-
# @param boiler_fuel_type [String] valid choices are Electricity, NaturalGas, PropaneGas, FuelOilNo1, FuelOilNo2, DistrictHeating, HeatPump
|
27
|
+
# @param boiler_fuel_type [String] valid choices are Electricity, NaturalGas, Propane, PropaneGas, FuelOilNo1, FuelOilNo2, DistrictHeating, HeatPump
|
28
28
|
# @param ambient_loop [OpenStudio::Model::PlantLoop] The condenser loop for the heat pump. Only used when boiler_fuel_type is HeatPump.
|
29
29
|
# @param system_name [String] the name of the system, or nil in which case it will be defaulted
|
30
30
|
# @param dsgn_sup_wtr_temp [Double] design supply water temperature in degrees Fahrenheit, default 180F
|
@@ -128,17 +128,17 @@ class Standard
|
|
128
128
|
when 'AirSourceHeatPump', 'ASHP'
|
129
129
|
create_central_air_source_heat_pump(model, hot_water_loop)
|
130
130
|
# Boiler
|
131
|
-
when 'Electricity', 'Gas', 'NaturalGas', 'PropaneGas', 'FuelOilNo1', 'FuelOilNo2'
|
131
|
+
when 'Electricity', 'Gas', 'NaturalGas', 'Propane', 'PropaneGas', 'FuelOilNo1', 'FuelOilNo2'
|
132
132
|
if boiler_lvg_temp_dsgn.nil?
|
133
|
-
|
133
|
+
lvg_temp_dsgn_f = dsgn_sup_wtr_temp
|
134
134
|
else
|
135
|
-
|
135
|
+
lvg_temp_dsgn_f = boiler_lvg_temp_dsgn
|
136
136
|
end
|
137
137
|
|
138
138
|
if boiler_out_temp_lmt.nil?
|
139
|
-
|
139
|
+
out_temp_lmt_f = 203.0
|
140
140
|
else
|
141
|
-
|
141
|
+
out_temp_lmt_f = boiler_out_temp_lmt
|
142
142
|
end
|
143
143
|
|
144
144
|
boiler = create_boiler_hot_water(model,
|
@@ -147,8 +147,8 @@ class Standard
|
|
147
147
|
draft_type: boiler_draft_type,
|
148
148
|
nominal_thermal_efficiency: 0.78,
|
149
149
|
eff_curve_temp_eval_var: boiler_eff_curve_temp_eval_var,
|
150
|
-
|
151
|
-
|
150
|
+
lvg_temp_dsgn_f: lvg_temp_dsgn_f,
|
151
|
+
out_temp_lmt_f: out_temp_lmt_f,
|
152
152
|
max_plr: boiler_max_plr,
|
153
153
|
sizing_factor: boiler_sizing_factor)
|
154
154
|
|
@@ -803,13 +803,13 @@ class Standard
|
|
803
803
|
when 'AirSourceHeatPump', 'ASHP'
|
804
804
|
heating_equipment = create_central_air_source_heat_pump(model, heat_pump_water_loop)
|
805
805
|
heating_equipment_stpt_manager.setName("#{heat_pump_water_loop.name} ASHP Scheduled Dual Setpoint")
|
806
|
-
when 'Electricity', 'Gas', 'NaturalGas', 'PropaneGas', 'FuelOilNo1', 'FuelOilNo2'
|
806
|
+
when 'Electricity', 'Gas', 'NaturalGas', 'Propane', 'PropaneGas', 'FuelOilNo1', 'FuelOilNo2'
|
807
807
|
heating_equipment = create_boiler_hot_water(model,
|
808
808
|
hot_water_loop: heat_pump_water_loop,
|
809
809
|
name: "#{heat_pump_water_loop.name} Supplemental Boiler",
|
810
810
|
fuel_type: heating_fuel,
|
811
811
|
flow_mode: 'ConstantFlow',
|
812
|
-
|
812
|
+
lvg_temp_dsgn_f: 86.0, # 30.0 degrees Celsius
|
813
813
|
min_plr: 0.0,
|
814
814
|
max_plr: 1.2,
|
815
815
|
opt_plr: 1.0)
|
@@ -4031,7 +4031,7 @@ class Standard
|
|
4031
4031
|
high_temp_radiant = OpenStudio::Model::ZoneHVACHighTemperatureRadiant.new(model)
|
4032
4032
|
high_temp_radiant.setName("#{zone.name} High Temp Radiant")
|
4033
4033
|
|
4034
|
-
if heating_type.nil? || heating_type == 'Gas'
|
4034
|
+
if heating_type.nil? || heating_type == 'NaturalGas' || heating_type == 'Gas'
|
4035
4035
|
high_temp_radiant.setFuelType('NaturalGas')
|
4036
4036
|
else
|
4037
4037
|
high_temp_radiant.setFuelType(heating_type)
|
@@ -4410,7 +4410,14 @@ class Standard
|
|
4410
4410
|
# @param radiant_type [String] type of radiant system, floor or ceiling, to create in zone.
|
4411
4411
|
# @param include_carpet [Bool] boolean to include thin carpet tile over radiant slab, default to true
|
4412
4412
|
# @param carpet_thickness_in [Double] thickness of carpet in inches
|
4413
|
-
# @param
|
4413
|
+
# @param model_occ_hr_start [Double] (Optional) Only applies if control_strategy is 'proportional_control'.
|
4414
|
+
# Starting hour of building occupancy.
|
4415
|
+
# @param model_occ_hr_end [Double] (Optional) Only applies if control_strategy is 'proportional_control'.
|
4416
|
+
# Ending hour of building occupancy.
|
4417
|
+
# @param control_strategy [String] name of control strategy. Options are 'proportional_control' and 'none'.
|
4418
|
+
# If control strategy is 'proportional_control', the method will apply the CBE radiant control sequences
|
4419
|
+
# detailed in Raftery et al. (2017), “A new control strategy for high thermal mass radiant systems”.
|
4420
|
+
# Otherwise no control strategy will be applied and the radiant system will assume the EnergyPlus default controls.
|
4414
4421
|
# @param proportional_gain [Double] (Optional) Only applies if control_strategy is 'proportional_control'.
|
4415
4422
|
# Proportional gain constant (recommended 0.3 or less).
|
4416
4423
|
# @param minimum_operation [Double] (Optional) Only applies if control_strategy is 'proportional_control'.
|
@@ -4427,6 +4434,7 @@ class Standard
|
|
4427
4434
|
# Only used if radiant_lockout is true
|
4428
4435
|
# @return [Array<OpenStudio::Model::ZoneHVACLowTemperatureRadiantVariableFlow>] array of radiant objects.
|
4429
4436
|
# @todo Once the OpenStudio API supports it, make chilled water loops optional for heating only systems
|
4437
|
+
# @todo Lookup occupany start and end hours from zone occupancy schedule
|
4430
4438
|
def model_add_low_temp_radiant(model,
|
4431
4439
|
thermal_zones,
|
4432
4440
|
hot_water_loop,
|
@@ -4434,6 +4442,8 @@ class Standard
|
|
4434
4442
|
radiant_type: 'floor',
|
4435
4443
|
include_carpet: true,
|
4436
4444
|
carpet_thickness_in: 0.25,
|
4445
|
+
model_occ_hr_start: 6.0,
|
4446
|
+
model_occ_hr_end: 18.0,
|
4437
4447
|
control_strategy: 'proportional_control',
|
4438
4448
|
proportional_gain: 0.3,
|
4439
4449
|
minimum_operation: 1,
|
@@ -4743,6 +4753,8 @@ class Standard
|
|
4743
4753
|
if control_strategy == 'proportional_control'
|
4744
4754
|
model_add_radiant_proportional_controls(model, zone, radiant_loop,
|
4745
4755
|
radiant_type: radiant_type,
|
4756
|
+
model_occ_hr_start: model_occ_hr_start,
|
4757
|
+
model_occ_hr_end: model_occ_hr_end,
|
4746
4758
|
proportional_gain: proportional_gain,
|
4747
4759
|
minimum_operation: minimum_operation,
|
4748
4760
|
weekend_temperature_reset: weekend_temperature_reset,
|
@@ -3984,6 +3984,9 @@ class Standard
|
|
3984
3984
|
|
3985
3985
|
# Air loops
|
3986
3986
|
model.getAirLoopHVACs.each(&:remove)
|
3987
|
+
if model.version > OpenStudio::VersionString.new('3.1.0')
|
3988
|
+
model.getAirLoopHVACDedicatedOutdoorAirSystems.each(&:remove)
|
3989
|
+
end
|
3987
3990
|
|
3988
3991
|
# Zone equipment
|
3989
3992
|
model.getThermalZones.sort.each do |zone|
|
@@ -5207,6 +5210,7 @@ class Standard
|
|
5207
5210
|
electric = true
|
5208
5211
|
|
5209
5212
|
if htg_fuels.include?('NaturalGas') ||
|
5213
|
+
htg_fuels.include?('Propane') ||
|
5210
5214
|
htg_fuels.include?('PropaneGas') ||
|
5211
5215
|
htg_fuels.include?('FuelOilNo1') ||
|
5212
5216
|
htg_fuels.include?('FuelOilNo2') ||
|
@@ -92,6 +92,21 @@ class Standard
|
|
92
92
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlanarSurface', "Could not determine the standards fenestration type for #{planar_surface.name} from #{construction.name}. This surface will not have the standard applied.")
|
93
93
|
return previous_construction_map
|
94
94
|
end
|
95
|
+
# Exterior Doors
|
96
|
+
elsif surf_type == 'ExteriorDoor'
|
97
|
+
stds_type = standards_info.standardsConstructionType
|
98
|
+
if stds_type.is_initialized
|
99
|
+
stds_type = stds_type.get
|
100
|
+
case stds_type
|
101
|
+
when 'RollUp', 'Rollup', 'NonSwinging', 'Nonswinging'
|
102
|
+
stds_type = 'NonSwinging'
|
103
|
+
else
|
104
|
+
stds_type = 'Swinging'
|
105
|
+
end
|
106
|
+
else
|
107
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlanarSurface', "Could not determine the standards construction type for exterior door #{planar_surface.name}. This door will not have the standard applied.")
|
108
|
+
return previous_construction_map
|
109
|
+
end
|
95
110
|
# All other surface types
|
96
111
|
else
|
97
112
|
stds_type = standards_info.standardsConstructionType
|
@@ -602,12 +602,13 @@ class Standard
|
|
602
602
|
|
603
603
|
# Get an array of the heating fuels
|
604
604
|
# used by the zone. Possible values are
|
605
|
-
# Electricity, NaturalGas, PropaneGas, FuelOilNo1, FuelOilNo2,
|
605
|
+
# Electricity, NaturalGas, Propane, PropaneGas, FuelOilNo1, FuelOilNo2,
|
606
606
|
# Coal, Diesel, Gasoline, DistrictHeating,
|
607
607
|
# and SolarEnergy.
|
608
608
|
htg_fuels = thermal_zone.heating_fuels
|
609
609
|
|
610
610
|
if htg_fuels.include?('NaturalGas') ||
|
611
|
+
htg_fuels.include?('Propane') ||
|
611
612
|
htg_fuels.include?('PropaneGas') ||
|
612
613
|
htg_fuels.include?('FuelOilNo1') ||
|
613
614
|
htg_fuels.include?('FuelOilNo2') ||
|
@@ -641,6 +642,7 @@ class Standard
|
|
641
642
|
# Fossil heating
|
642
643
|
htg_fuels = thermal_zone.heating_fuels
|
643
644
|
if htg_fuels.include?('NaturalGas') ||
|
645
|
+
htg_fuels.include?('Propane') ||
|
644
646
|
htg_fuels.include?('PropaneGas') ||
|
645
647
|
htg_fuels.include?('FuelOilNo1') ||
|
646
648
|
htg_fuels.include?('FuelOilNo2') ||
|
@@ -703,7 +705,7 @@ class Standard
|
|
703
705
|
|
704
706
|
# Get an array of the heating fuels
|
705
707
|
# used by the zone. Possible values are
|
706
|
-
# Electricity, NaturalGas, PropaneGas, FuelOilNo1, FuelOilNo2,
|
708
|
+
# Electricity, NaturalGas, Propane, PropaneGas, FuelOilNo1, FuelOilNo2,
|
707
709
|
# Coal, Diesel, Gasoline, DistrictHeating,
|
708
710
|
# and SolarEnergy.
|
709
711
|
htg_fuels = thermal_zone.heating_fuels
|
@@ -711,6 +713,7 @@ class Standard
|
|
711
713
|
# Includes fossil
|
712
714
|
fossil = false
|
713
715
|
if htg_fuels.include?('NaturalGas') ||
|
716
|
+
htg_fuels.include?('Propane') ||
|
714
717
|
htg_fuels.include?('PropaneGas') ||
|
715
718
|
htg_fuels.include?('FuelOilNo1') ||
|
716
719
|
htg_fuels.include?('FuelOilNo2') ||
|
@@ -94,6 +94,21 @@ class DEER
|
|
94
94
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.PlanarSurface', "Could not determine the standards fenestration type for #{planar_surface.name} from #{construction.name}. This surface will not have the standard applied.")
|
95
95
|
return previous_construction_map
|
96
96
|
end
|
97
|
+
# Exterior Doors
|
98
|
+
elsif surf_type == 'ExteriorDoor'
|
99
|
+
stds_type = standards_info.standardsConstructionType
|
100
|
+
if stds_type.is_initialized
|
101
|
+
stds_type = stds_type.get
|
102
|
+
case stds_type
|
103
|
+
when 'RollUp', 'Rollup', 'NonSwinging', 'Nonswinging'
|
104
|
+
stds_type = 'NonSwinging'
|
105
|
+
else
|
106
|
+
stds_type = 'Swinging'
|
107
|
+
end
|
108
|
+
else
|
109
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.PlanarSurface', "Could not determine the standards construction type for exterior door #{planar_surface.name}. This door will not have the standard applied.")
|
110
|
+
return previous_construction_map
|
111
|
+
end
|
97
112
|
# All other surface types
|
98
113
|
else
|
99
114
|
stds_type = standards_info.standardsConstructionType
|
@@ -482,7 +482,7 @@ class ECMS
|
|
482
482
|
system_zones_map = update_system_zones_map(model,system_zones_map,ecm_system_zones_map_option,'sys_1')
|
483
483
|
else
|
484
484
|
updated_system_zones_map = {}
|
485
|
-
system_zones_map.each {|sname,zones| updated_system_zones_map["sys_1#{sname[5
|
485
|
+
system_zones_map.each {|sname,zones| updated_system_zones_map["sys_1#{sname[5..-1]}"] = zones} # doas unit is an NECB sys_1
|
486
486
|
system_zones_map = updated_system_zones_map
|
487
487
|
end
|
488
488
|
# Add outdoor VRF unit
|
@@ -1196,7 +1196,7 @@ class ECMS
|
|
1196
1196
|
system_zones_map = update_system_zones_map(model,system_zones_map,ecm_system_zones_map_option,'sys_1')
|
1197
1197
|
else
|
1198
1198
|
updated_system_zones_map = {}
|
1199
|
-
system_zones_map.each {|sname,zones| updated_system_zones_map["sys_1#{sname[5
|
1199
|
+
system_zones_map.each {|sname,zones| updated_system_zones_map["sys_1#{sname[5..-1]}"] = zones}
|
1200
1200
|
system_zones_map = updated_system_zones_map
|
1201
1201
|
end
|
1202
1202
|
# Update system doas flags
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio-standards
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.16.
|
4
|
+
version: 0.2.16.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Parker
|
@@ -28,7 +28,7 @@ authors:
|
|
28
28
|
autorequire:
|
29
29
|
bindir: bin
|
30
30
|
cert_chain: []
|
31
|
-
date: 2022-03-
|
31
|
+
date: 2022-03-31 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: minitest-reporters
|
@@ -641,6 +641,7 @@ files:
|
|
641
641
|
- data/geometry/DOERefWarehouse.osm
|
642
642
|
- data/standards/OpenStudio_Standards-ashrae_90_1.xlsx
|
643
643
|
- data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx
|
644
|
+
- data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx
|
644
645
|
- data/standards/exclude_list.csv
|
645
646
|
- data/standards/export_OpenStudio_libraries.rb
|
646
647
|
- data/standards/legacy_dd_results.csv
|