openstudio-standards 0.2.1 → 0.2.2
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/geometry/DEER_ERC.osm +2 -1
- data/data/geometry/DEER_MFm.osm +441 -70
- data/data/geometry/DEER_MFm_DXGF.json +210 -0
- data/data/geometry/DEER_MFm_DXHP.json +210 -0
- data/data/geometry/DEER_MFm_NCEH.json +163 -76
- data/data/geometry/DEER_MFm_NCGF.json +198 -44
- data/data/geometry/DEER_RtS.osm +0 -68
- data/data/geometry/DEER_SUn_Unc.json +2 -0
- data/data/standards/OpenStudio_Standards.xlsx +0 -0
- data/data/standards/OpenStudio_Standards_boilers.json +6 -6
- data/data/standards/OpenStudio_Standards_construction_properties.json +2304 -2304
- data/data/standards/OpenStudio_Standards_construction_sets.json +755 -125
- data/data/standards/OpenStudio_Standards_curves.json +51 -176
- data/data/standards/OpenStudio_Standards_entryways.json +11 -0
- data/data/standards/OpenStudio_Standards_exterior_lighting.json +30 -30
- data/data/standards/OpenStudio_Standards_ground_temperatures.json +288 -288
- data/data/standards/OpenStudio_Standards_heat_pumps.json +1320 -0
- data/data/standards/OpenStudio_Standards_heat_pumps_heating.json +840 -0
- data/data/standards/OpenStudio_Standards_materials.json +1 -1
- data/data/standards/OpenStudio_Standards_motors.json +11 -11
- data/data/standards/OpenStudio_Standards_parking.json +9 -0
- data/data/standards/OpenStudio_Standards_prototype_inputs.json +11877 -11301
- data/data/standards/OpenStudio_Standards_schedules.json +1847 -59
- data/data/standards/OpenStudio_Standards_space_types.json +88552 -75100
- data/data/standards/OpenStudio_Standards_templates.json +6 -6
- data/data/standards/OpenStudio_Standards_unitary_acs.json +1461 -185
- data/data/standards/OpenStudio_Standards_water_heaters.json +306 -0
- data/lib/openstudio-standards.rb +1 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +19 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.swh.rb +13 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +3 -3
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +5 -0
- data/lib/openstudio-standards/standards/Standards.Construction.rb +26 -5
- data/lib/openstudio-standards/standards/Standards.Space.rb +1 -0
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/Standards.WaterHeaterMixed.rb +1 -1
- data/lib/openstudio-standards/standards/deer/deer.Space.rb +17 -0
- data/lib/openstudio-standards/version.rb +1 -1
- metadata +5 -2
@@ -126,17 +126,20 @@ class Standard
|
|
126
126
|
# @return [Bool] returns true if successful, false if not
|
127
127
|
def construction_set_glazing_u_value(construction, target_u_value_ip, intended_surface_type = 'ExteriorWall', target_includes_int_film_coefficients, target_includes_ext_film_coefficients)
|
128
128
|
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "Setting U-Value for #{construction.name}.")
|
129
|
-
|
129
|
+
|
130
130
|
# Skip layer-by-layer fenestration constructions
|
131
131
|
unless construction_simple_glazing?(construction)
|
132
132
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ConstructionBase', "Can only set the u-value of simple glazing. #{construction.name} is not simple glazing.")
|
133
133
|
return false
|
134
134
|
end
|
135
|
-
|
135
|
+
|
136
|
+
glass_layer = construction.layers.first.to_SimpleGlazing.get
|
137
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---glass_layer = #{glass_layer.name} u_factor_si = #{glass_layer.uFactor.round(2)}.")
|
138
|
+
|
136
139
|
# Convert the target U-value to SI
|
137
140
|
target_u_value_ip = target_u_value_ip.to_f
|
138
141
|
target_r_value_ip = 1.0 / target_u_value_ip
|
139
|
-
|
142
|
+
|
140
143
|
target_u_value_si = OpenStudio.convert(target_u_value_ip, 'Btu/ft^2*hr*R', 'W/m^2*K').get
|
141
144
|
target_r_value_si = 1.0 / target_u_value_si
|
142
145
|
|
@@ -151,22 +154,40 @@ class Standard
|
|
151
154
|
film_coeff_r_value_si += film_coefficients_r_value(intended_surface_type, target_includes_int_film_coefficients, target_includes_ext_film_coefficients)
|
152
155
|
film_coeff_u_value_si = 1.0 / film_coeff_r_value_si
|
153
156
|
film_coeff_u_value_ip = OpenStudio.convert(film_coeff_u_value_si, 'W/m^2*K', 'Btu/ft^2*hr*R').get
|
154
|
-
|
157
|
+
film_coeff_r_value_ip = 1.0 / film_coeff_u_value_ip
|
158
|
+
|
159
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---film_coeff_r_value_si = #{film_coeff_r_value_si.round(2)} for #{construction.name}.")
|
160
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---film_coeff_u_value_si = #{film_coeff_u_value_si.round(2)} for #{construction.name}.")
|
161
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---film_coeff_u_value_ip = #{film_coeff_u_value_ip.round(2)} for #{construction.name}.")
|
162
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---film_coeff_r_value_ip = #{film_coeff_r_value_ip.round(2)} for #{construction.name}.")
|
163
|
+
|
155
164
|
# Determine the difference between the desired R-value
|
156
165
|
# and the R-value of the and air films.
|
157
166
|
# This is the desired R-value of the insulation.
|
158
167
|
ins_r_value_si = target_r_value_si - film_coeff_r_value_si
|
159
168
|
if ins_r_value_si <= 0.0
|
160
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ConstructionBase', "Requested U-value of #{target_u_value_ip} for #{construction.name} is too high given the film coefficients of U-#{film_coeff_u_value_ip.round(2)}; U-value will not be modified.")
|
169
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ConstructionBase', "Requested U-value of #{target_u_value_ip} Btu/ft^2*hr*R for #{construction.name} is too high given the film coefficients of U-#{film_coeff_u_value_ip.round(2)} Btu/ft^2*hr*R; U-value will not be modified.")
|
161
170
|
return false
|
162
171
|
end
|
163
172
|
ins_u_value_si = 1.0 / ins_r_value_si
|
173
|
+
|
174
|
+
if ins_u_value_si > 7.0
|
175
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ConstructionBase', "Requested U-value of #{target_u_value_ip} for #{construction.name} is too high given the film coefficients of U-#{film_coeff_u_value_ip.round(2)}; setting U-value to EnergyPlus limit of 7.0 W/m^2*K (1.23 Btu/ft^2*hr*R).")
|
176
|
+
ins_u_value_si = 7.0
|
177
|
+
end
|
178
|
+
|
164
179
|
ins_u_value_ip = OpenStudio.convert(ins_u_value_si, 'W/m^2*K', 'Btu/ft^2*hr*R').get
|
180
|
+
ins_r_value_ip = 1.0 / ins_u_value_ip
|
165
181
|
|
166
182
|
# Set the U-value of the insulation layer
|
167
183
|
glass_layer = construction.layers.first.to_SimpleGlazing.get
|
168
184
|
glass_layer.setUFactor(ins_u_value_si)
|
169
185
|
glass_layer.setName("#{glass_layer.name} U-#{ins_u_value_ip.round(2)}")
|
186
|
+
|
187
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---ins_r_value_ip = #{ins_r_value_ip.round(2)} for #{construction.name}.")
|
188
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---ins_u_value_ip = #{ins_u_value_ip.round(2)} for #{construction.name}.")
|
189
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---ins_u_value_si = #{ins_u_value_si.round(2)} for #{construction.name}.")
|
190
|
+
OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.ConstructionBase', "---glass_layer = #{glass_layer.name} u_factor_si = #{glass_layer.uFactor.round(2)}.")
|
170
191
|
|
171
192
|
# Modify the construction name
|
172
193
|
construction.setName("#{construction.name} U-#{target_u_value_ip.round(2)}")
|
@@ -1235,6 +1235,7 @@ class Standard
|
|
1235
1235
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Standards.Model', "For #{template}, no exterior wall area was found, no infiltration will be added.")
|
1236
1236
|
return true
|
1237
1237
|
end
|
1238
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Standards.Model', "For #{space.name}, set infiltration rate to #{adj_infil_rate_cfm_per_ft2.round(3)} cfm/ft2 exterior wall area (aka #{basic_infil_rate_cfm_per_ft2} cfm/ft2 @75Pa).")
|
1238
1239
|
|
1239
1240
|
# Calculate the total infiltration, assuming
|
1240
1241
|
# that it only occurs through exterior walls
|
@@ -336,7 +336,7 @@ class Standard
|
|
336
336
|
definition = inst.gasEquipmentDefinition
|
337
337
|
unless gas_equip_per_area.zero?
|
338
338
|
definition.setWattsperSpaceFloorArea(OpenStudio.convert(gas_equip_per_area.to_f, 'Btu/hr*ft^2', 'W/m^2').get)
|
339
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set gas EPD to #{
|
339
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set gas EPD to #{gas_equip_per_area} Btu/hr*ft^2.")
|
340
340
|
end
|
341
341
|
unless gas_equip_frac_latent.zero?
|
342
342
|
definition.setFractionLatent(gas_equip_frac_latent)
|
@@ -112,7 +112,7 @@ class Standard
|
|
112
112
|
# Calculate the percent loss per hr
|
113
113
|
hr_loss_base = wh_props['hourly_loss_base']
|
114
114
|
hr_loss_allow = wh_props['hourly_loss_volume_allowance']
|
115
|
-
hrly_loss_pct =
|
115
|
+
hrly_loss_pct = hr_loss_base + (hr_loss_allow / volume_gal) / 100
|
116
116
|
# Convert to Btu/hr, assuming:
|
117
117
|
# Water at 120F, density = 8.25 lb/gal
|
118
118
|
# 1 Btu to raise 1 lb of water 1 F
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class DEER
|
2
|
+
# @!group Space
|
3
|
+
|
4
|
+
# Determine the base infiltration rate at 75 PA.
|
5
|
+
# In the MASControl2 rules, there is BDL code which
|
6
|
+
# states that the value is 0.038 cfm/ft2 of perimeter wall area
|
7
|
+
# at typical building pressures.
|
8
|
+
# This translates to 0.338921 cfm/ft2 of perimeter wall area at
|
9
|
+
# 75Pa using the assumptions from the DOE Prototypes.
|
10
|
+
#
|
11
|
+
# @return [Double] the baseline infiltration rate, in cfm/ft^2
|
12
|
+
# defaults to no infiltration.
|
13
|
+
def space_infiltration_rate_75_pa(space)
|
14
|
+
basic_infil_rate_cfm_per_ft2 = 0.338921
|
15
|
+
return basic_infil_rate_cfm_per_ft2
|
16
|
+
end
|
17
|
+
end
|
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.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Parker
|
@@ -21,7 +21,7 @@ authors:
|
|
21
21
|
autorequire:
|
22
22
|
bindir: bin
|
23
23
|
cert_chain: []
|
24
|
-
date: 2018-
|
24
|
+
date: 2018-06-11 00:00:00.000000000 Z
|
25
25
|
dependencies:
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: minitest-reporters
|
@@ -514,6 +514,8 @@ files:
|
|
514
514
|
- data/geometry/DEER_MBT_SVVG.json
|
515
515
|
- data/geometry/DEER_MBT_WLHP.json
|
516
516
|
- data/geometry/DEER_MFm.osm
|
517
|
+
- data/geometry/DEER_MFm_DXGF.json
|
518
|
+
- data/geometry/DEER_MFm_DXHP.json
|
517
519
|
- data/geometry/DEER_MFm_NCEH.json
|
518
520
|
- data/geometry/DEER_MFm_NCGF.json
|
519
521
|
- data/geometry/DEER_MLI.osm
|
@@ -1550,6 +1552,7 @@ files:
|
|
1550
1552
|
- lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.rb
|
1551
1553
|
- lib/openstudio-standards/standards/deer/deer.AirLoopHVAC.rb
|
1552
1554
|
- lib/openstudio-standards/standards/deer/deer.Model.rb
|
1555
|
+
- lib/openstudio-standards/standards/deer/deer.Space.rb
|
1553
1556
|
- lib/openstudio-standards/standards/deer/deer.rb
|
1554
1557
|
- lib/openstudio-standards/standards/deer/deer_1985/deer_1985.rb
|
1555
1558
|
- lib/openstudio-standards/standards/deer/deer_1996/deer_1996.rb
|