openstudio-standards 0.2.16.rc1 → 0.2.16.rc2
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-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
|