openstudio-standards 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|