openstudio-standards 0.6.0.rc1 → 0.6.0
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/export_OpenStudio_libraries.rb +2 -2
- data/data/standards/manage_OpenStudio_Standards.rb +2 -2
- data/data/standards/test_performance_expected_dd_results.csv +8 -8
- data/lib/openstudio-standards/btap/btap_result.rb +0 -2
- data/lib/openstudio-standards/btap/envelope.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +7 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +46 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +171 -178
- data/lib/openstudio-standards/schedules/parametric.rb +5 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +20 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +6 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/qaqc/necb_qaqc.rb +3 -7
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +1 -1
- data/lib/openstudio-standards/utilities/simulation.rb +5 -0
- data/lib/openstudio-standards/version.rb +1 -1
- metadata +104 -92
- data/data/standards/OpenStudio_Standards-deer-comstock.xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 99feac3c5967489050268e5d5371e8966cdab260e390ceda4e61c7d3f8413dd3
|
|
4
|
+
data.tar.gz: 3e66eab384d8af2d75243ab465fad4cb94e6d007514bd3c4de51fbe5ddfc9d1a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7766ea57fc85eaea49dcc70b704bfb0a5a0a89ce332c0ec442ec50c2e5af4eb7b1d8523d4cefe5002d4e674f3b8610c3c3eccb2324dda9d6dcff2c48101dc24
|
|
7
|
+
data.tar.gz: c7fc367108d38b3879d82e63b7b7169b0c05978a1016da8869481dfd9adfbbbb416e9b48be1c23f5a8fa37b036141ce384bb425804a37703ec0c6d8d7ead9848
|
|
@@ -438,9 +438,9 @@ def export_openstudio_libraries
|
|
|
438
438
|
|
|
439
439
|
# Save the library
|
|
440
440
|
pkg_dir = "#{__dir__}/../../pkg"
|
|
441
|
-
Dir.mkdir(pkg_dir) unless Dir.
|
|
441
|
+
Dir.mkdir(pkg_dir) unless Dir.exist?(pkg_dir)
|
|
442
442
|
osm_lib_dir = "#{pkg_dir}/libraries"
|
|
443
|
-
Dir.mkdir(osm_lib_dir) unless Dir.
|
|
443
|
+
Dir.mkdir(osm_lib_dir) unless Dir.exist?(osm_lib_dir)
|
|
444
444
|
library_path = "#{osm_lib_dir}/#{template_name.gsub(/\W/,'_')}.osm"
|
|
445
445
|
puts "* Saving library #{library_path}"
|
|
446
446
|
model.save(OpenStudio::Path.new(library_path), true)
|
|
@@ -204,7 +204,7 @@ end
|
|
|
204
204
|
def check_google_drive_configuration
|
|
205
205
|
require 'google_drive'
|
|
206
206
|
client_config_path = File.join(Dir.home, '.credentials', "client_secret.json")
|
|
207
|
-
unless File.
|
|
207
|
+
unless File.exist? client_config_path
|
|
208
208
|
puts "Unable to locate client_secret.json file at #{client_config_path}."
|
|
209
209
|
return false
|
|
210
210
|
end
|
|
@@ -228,7 +228,7 @@ end
|
|
|
228
228
|
def download_google_spreadsheets(spreadsheet_titles)
|
|
229
229
|
require 'google_drive'
|
|
230
230
|
client_config_path = File.join(Dir.home, '.credentials', "client_secret.json")
|
|
231
|
-
unless File.
|
|
231
|
+
unless File.exist? client_config_path
|
|
232
232
|
puts "Unable to locate client_secret.json file at #{client_config_path}."
|
|
233
233
|
return false
|
|
234
234
|
end
|
|
@@ -65,17 +65,17 @@ FullServiceRestaurant,90.1-2010,ASHRAE 169-2013-4A,777539613.1023173,0,0,0,0,0,0
|
|
|
65
65
|
FullServiceRestaurant,90.1-2013,ASHRAE 169-2013-4A,755631711.948922,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,256687116.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4297953623.6510105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1245911470.5462978,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3908703861.4121346,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11642346584.45856,0.0,11642346584.45856,504301758.4820919,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,659020530.2483394,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
66
66
|
FullServiceRestaurant,90.1-2016,ASHRAE 169-2013-4A,620443829.9347649,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154382256.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4297953623.6510105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1210468758.551721,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3793374488.949421,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11254131588.132673,0.0,11254131588.132673,504409020.65290403,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,658963098.2230852,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
67
67
|
FullServiceRestaurant,90.1-2019,ASHRAE 169-2013-4A,597946658.1005332,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154382256.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4184760983.6510096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1198296660.8610497,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14136512.169772021,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3750980520.625906,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10948760999.042639,0.0,10948760999.042639,389190069.46910566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,659067338.1652699,0,0,0,0,0,0,0,0,0,18.483544466559202,0,0,0,0,0,0,0,0
|
|
68
|
-
MidriseApartment,90.1-2004,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
69
|
-
MidriseApartment,90.1-2007,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
70
|
-
MidriseApartment,90.1-2010,ASHRAE 169-2013-4A,1264722844.1737761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4611200599.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
68
|
+
MidriseApartment,90.1-2004,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,822237969.1271257,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03033663212866495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3118760026.6748786,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13937338361.958841,0.0,13937338361.958841,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3550002640.5727863,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
69
|
+
MidriseApartment,90.1-2007,ASHRAE 169-2013-4A,1228747413.939952,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,557040000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4660550311.613755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,809000404.0380547,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.03033663212866495,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2528602358.197528,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13333936887.96347,0.0,13333936887.96347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3549996400.143838,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
70
|
+
MidriseApartment,90.1-2010,ASHRAE 169-2013-4A,1264722844.1737761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4611200599.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,704832644.0873003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.029272188896080235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2295723503.6061645,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12711631630.973076,0.0,12711631630.973076,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3534192040.0464287,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
71
71
|
MidriseApartment,90.1-2013,ASHRAE 169-2013-4A,1101038681.645097,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300960000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1256799325.2086463,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2744609020.8069496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13144730768.847263,0.0,13144730768.847263,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113968269.3115425,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
72
72
|
MidriseApartment,90.1-2016,ASHRAE 169-2013-4A,855834791.8498567,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198123000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1182782275.7769496,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2569744536.0970163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12547808335.214468,0.0,12547808335.214468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113968259.6156197,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
73
73
|
MidriseApartment,90.1-2019,ASHRAE 169-2013-4A,709501859.475796,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,198123000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4607308711.0301285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1162767188.6764462,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.035753887865926565,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2520799815.662402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12332519761.625237,0.0,12332519761.625237,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3113972425.935563,0,0,0,0,0,0,0,0,0,15.410284867262238,0,0,0,0,0,0,0,0
|
|
74
|
-
HighriseApartment,90.1-2004,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
75
|
-
HighriseApartment,90.1-2007,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
76
|
-
HighriseApartment,90.1-2010,ASHRAE 169-2013-4A,2979275880.92879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9820817101.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170434864.9558134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
77
|
-
HighriseApartment,90.1-2013,ASHRAE 169-2013-4A,2502911158.565948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170319510.47468275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
78
|
-
HighriseApartment,90.1-2016,ASHRAE 169-2013-4A,1931902613.3330522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118479993.45694521,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
74
|
+
HighriseApartment,90.1-2004,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2759561631.1494513,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,535385144.18915427,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5196503967.47089,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8875514542.687614,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,413405499.66227293,0,0,0,0,0,0,0,0,0,19.3778306394734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32406989386.80568,0.0,32406989386.80568,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
75
|
+
HighriseApartment,90.1-2007,ASHRAE 169-2013-4A,2830783842.860468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1629600000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9870166813.800488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,296067944.9853616,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2703997101.9827433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,524708568.86517787,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4900477910.411963,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8876724591.81084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,407243708.7186346,0,0,0,0,0,0,0,0,0,19.2909489563067,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32039770483.43566,0.0,32039770483.43566,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
76
|
+
HighriseApartment,90.1-2010,ASHRAE 169-2013-4A,2979275880.92879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9820817101.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170434864.9558134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2345467351.7142277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,478968864.1229158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3576635640.9440866,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8051631861.32485,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,978219656.8966086,0,0,0,0,0,0,0,0,0,21.611850387905623,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29687851222.10414,0.0,29687851222.10414,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
77
|
+
HighriseApartment,90.1-2013,ASHRAE 169-2013-4A,2502911158.565948,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1286400000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170319510.47468275,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3813943393.7084503,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,472222105.5504,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4945734316.175122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8916435671.29256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,984248362.8439888,0,0,0,0,0,0,0,0,0,24.03349270191599,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32929186492.63715,0.0,32929186492.63715,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
78
|
+
HighriseApartment,90.1-2016,ASHRAE 169-2013-4A,1931902613.3330522,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118479993.45694521,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3603255819.112727,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,446176575.3944447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4703256163.616502,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8493315396.990675,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,790543658.4208595,0,0,0,0,0,0,0,0,0,21.72224373776791,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30824011754.3512,0.0,30824011754.3512,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
79
79
|
HighriseApartment,90.1-2019,ASHRAE 169-2013-4A,1610413342.225185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,900109560.0000012,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9816925213.216848,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118471681.5553761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3585415380.3169084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,434118898.3026537,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4736283926.267405,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8374609000.969961,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,775714827.7673504,0,0,0,0,0,0,0,0,0,21.388790981215433,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20046760.809141975,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30372108591.430824,0.0,30372108591.430824,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39.27137111334572,0,0,0,0,0,0,0,0
|
|
80
80
|
Hospital,90.1-2004,ASHRAE 169-2013-4A,43700141905.51176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1996320000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73851258109.6063,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34067503994.126015,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33103022164.466347,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10112571728.238243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,46820766045.57834,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6532353748.843508,0,0,0,0,0,0,0,0,0,191.02704311998363,0,0,0,0,0,0,0,0,6798818700.137337,0,0,0,0,0,0,0,0,0,2.5291605564510893,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,258704259073.49158,0.0,258704259073.49158,1470040442.5647764,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251462234.41894314,0,0,0,0,0,0,0,0,0,46.80754034926254,0,0,0,0,0,0,0,0
|
|
81
81
|
Hospital,90.1-2007,ASHRAE 169-2013-4A,43700141905.51176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1996320000.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66950317309.60635,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33600246624.695667,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32641907550.116947,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9789181478.960934,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45212694684.451775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6362012611.503619,0,0,0,0,0,0,0,0,0,185.34140190149392,0,0,0,0,0,0,0,0,7302765350.65984,0,0,0,0,0,0,0,0,0,2.716628710445461,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,249277725384.5667,0.0,249277725384.5667,1470690632.651906,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,251447236.40786576,0,0,0,0,0,0,0,0,0,46.80754034926254,0,0,0,0,0,0,0,0
|
|
@@ -25,8 +25,6 @@ module BTAP
|
|
|
25
25
|
# Create hash to store all the collected data.
|
|
26
26
|
qaqc = {}
|
|
27
27
|
error_warning=[]
|
|
28
|
-
qaqc[:os_standards_revision] = OpenstudioStandards::git_revision
|
|
29
|
-
qaqc[:os_standards_version] = OpenstudioStandards::VERSION
|
|
30
28
|
# Store Building data.
|
|
31
29
|
qaqc[:building] = {}
|
|
32
30
|
qaqc[:building][:name] = model.building.get.name.get
|
|
@@ -909,7 +909,7 @@ module BTAP
|
|
|
909
909
|
#@return [Boolean] optional_construction_set
|
|
910
910
|
def self.get_construction_set_from_library(construction_library_file, construction_set_name)
|
|
911
911
|
#Load Contruction osm library.
|
|
912
|
-
if File.
|
|
912
|
+
if File.exist?(construction_library_file)
|
|
913
913
|
construction_lib = BTAP::FileIO::load_osm(construction_library_file)
|
|
914
914
|
#Get construction set..
|
|
915
915
|
optional_construction_set = construction_lib.getDefaultConstructionSetByName(construction_set_name)
|
|
@@ -51,8 +51,13 @@ class Standard
|
|
|
51
51
|
htg_coil.setGasBurnerEfficiency(efficiency)
|
|
52
52
|
|
|
53
53
|
# defaults
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
if model.version < OpenStudio::VersionString.new('3.7.0')
|
|
55
|
+
htg_coil.setParasiticElectricLoad(0.0)
|
|
56
|
+
htg_coil.setParasiticGasLoad(0.0)
|
|
57
|
+
else
|
|
58
|
+
htg_coil.setOnCycleParasiticElectricLoad(0.0)
|
|
59
|
+
htg_coil.setOffCycleParasiticGasLoad(0.0)
|
|
60
|
+
end
|
|
56
61
|
|
|
57
62
|
return htg_coil
|
|
58
63
|
end
|
|
@@ -1579,9 +1579,54 @@ Standard.class_eval do
|
|
|
1579
1579
|
air_loop_hvac.thermalZones.each do |zone|
|
|
1580
1580
|
next unless OpenstudioStandards::ThermalZone.thermal_zone_residential?(zone)
|
|
1581
1581
|
|
|
1582
|
+
# Exception 3 to 6.5.6.1.1
|
|
1583
|
+
case template
|
|
1584
|
+
when '90.1-2019'
|
|
1585
|
+
case climate_zone
|
|
1586
|
+
when 'ASHRAE 169-2006-0A',
|
|
1587
|
+
'ASHRAE 169-2006-0B',
|
|
1588
|
+
'ASHRAE 169-2006-1A',
|
|
1589
|
+
'ASHRAE 169-2006-1B',
|
|
1590
|
+
'ASHRAE 169-2006-2A',
|
|
1591
|
+
'ASHRAE 169-2006-2B',
|
|
1592
|
+
'ASHRAE 169-2006-3A',
|
|
1593
|
+
'ASHRAE 169-2006-3B',
|
|
1594
|
+
'ASHRAE 169-2006-3C',
|
|
1595
|
+
'ASHRAE 169-2006-4A',
|
|
1596
|
+
'ASHRAE 169-2006-4B',
|
|
1597
|
+
'ASHRAE 169-2006-4C',
|
|
1598
|
+
'ASHRAE 169-2006-5A',
|
|
1599
|
+
'ASHRAE 169-2006-5B',
|
|
1600
|
+
'ASHRAE 169-2006-5C',
|
|
1601
|
+
'ASHRAE 169-2013-0A',
|
|
1602
|
+
'ASHRAE 169-2013-0B',
|
|
1603
|
+
'ASHRAE 169-2013-1A',
|
|
1604
|
+
'ASHRAE 169-2013-1B',
|
|
1605
|
+
'ASHRAE 169-2013-2A',
|
|
1606
|
+
'ASHRAE 169-2013-2B',
|
|
1607
|
+
'ASHRAE 169-2013-3A',
|
|
1608
|
+
'ASHRAE 169-2013-3B',
|
|
1609
|
+
'ASHRAE 169-2013-3C',
|
|
1610
|
+
'ASHRAE 169-2013-4A',
|
|
1611
|
+
'ASHRAE 169-2013-4B',
|
|
1612
|
+
'ASHRAE 169-2013-4C',
|
|
1613
|
+
'ASHRAE 169-2013-5A',
|
|
1614
|
+
'ASHRAE 169-2013-5B',
|
|
1615
|
+
'ASHRAE 169-2013-5C'
|
|
1616
|
+
if zone.floorArea <= OpenStudio.convert(500.0, 'ft^2', 'm^2').get
|
|
1617
|
+
has_erv = false
|
|
1618
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Energy recovery will not be modeled for the ERV serving #{zone.name}.")
|
|
1619
|
+
end
|
|
1620
|
+
end
|
|
1621
|
+
end
|
|
1622
|
+
|
|
1582
1623
|
oa_cfm_per_ft2 = 0.0578940512546562
|
|
1583
1624
|
oa_m3_per_m2 = OpenStudio.convert(OpenStudio.convert(oa_cfm_per_ft2, 'cfm', 'm^3/s').get, '1/ft^2', '1/m^2').get
|
|
1584
|
-
|
|
1625
|
+
if has_erv
|
|
1626
|
+
model_add_residential_erv(model, zone, oa_m3_per_m2)
|
|
1627
|
+
else
|
|
1628
|
+
model_add_residential_ventilator(model, zone, oa_m3_per_m2)
|
|
1629
|
+
end
|
|
1585
1630
|
|
|
1586
1631
|
# Shut-off air loop level OA intake
|
|
1587
1632
|
oa_controller = air_loop_hvac.airLoopHVACOutdoorAirSystem.get.getControllerOutdoorAir
|
|
@@ -5904,6 +5904,177 @@ class Standard
|
|
|
5904
5904
|
return ideal_systems
|
|
5905
5905
|
end
|
|
5906
5906
|
|
|
5907
|
+
# Add a residential ERV: standalone ERV that operates to provide OA,
|
|
5908
|
+
# used in conjuction with a system that having mechanical cooling and a heating coil
|
|
5909
|
+
#
|
|
5910
|
+
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
5911
|
+
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
5912
|
+
# @return [OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator] Standalone ERV
|
|
5913
|
+
def model_add_residential_erv(model,
|
|
5914
|
+
thermal_zone,
|
|
5915
|
+
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
5916
|
+
|
|
5917
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
|
|
5918
|
+
|
|
5919
|
+
# Determine ERR and design basis when energy recovery is required
|
|
5920
|
+
#
|
|
5921
|
+
# enthalpy_recovery_ratio = nil will trigger an ERV with no effectiveness that only provides OA
|
|
5922
|
+
enthalpy_recovery_ratio = nil
|
|
5923
|
+
climate_zone = OpenstudioStandards::Weather.model_get_climate_zone(model)
|
|
5924
|
+
case template
|
|
5925
|
+
when '90.1-2019'
|
|
5926
|
+
search_criteria = {
|
|
5927
|
+
'template' => template,
|
|
5928
|
+
'climate_zone' => climate_zone,
|
|
5929
|
+
'under_8000_hours' => false,
|
|
5930
|
+
'nontransient_dwelling' => true
|
|
5931
|
+
}
|
|
5932
|
+
else
|
|
5933
|
+
search_criteria = {
|
|
5934
|
+
'template' => template,
|
|
5935
|
+
'climate_zone' => climate_zone,
|
|
5936
|
+
'under_8000_hours' => false
|
|
5937
|
+
}
|
|
5938
|
+
end
|
|
5939
|
+
|
|
5940
|
+
erv_enthalpy_recovery_ratio = model_find_object(standards_data['energy_recovery'], search_criteria)
|
|
5941
|
+
|
|
5942
|
+
# Extract ERR from data lookup
|
|
5943
|
+
if !erv_enthalpy_recovery_ratio.nil?
|
|
5944
|
+
if erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio'].nil? & erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].nil?
|
|
5945
|
+
# If not included in the data, an enthalpy
|
|
5946
|
+
# recovery ratio (ERR) of 50% is used
|
|
5947
|
+
enthalpy_recovery_ratio = 0.5
|
|
5948
|
+
case climate_zone
|
|
5949
|
+
when 'ASHRAE 169-2006-6B',
|
|
5950
|
+
'ASHRAE 169-2013-6B',
|
|
5951
|
+
'ASHRAE 169-2006-7A',
|
|
5952
|
+
'ASHRAE 169-2013-7A',
|
|
5953
|
+
'ASHRAE 169-2006-7B',
|
|
5954
|
+
'ASHRAE 169-2013-7B',
|
|
5955
|
+
'ASHRAE 169-2006-8A',
|
|
5956
|
+
'ASHRAE 169-2013-8A',
|
|
5957
|
+
'ASHRAE 169-2006-8B',
|
|
5958
|
+
'ASHRAE 169-2013-8B'
|
|
5959
|
+
design_conditions = 'heating'
|
|
5960
|
+
else
|
|
5961
|
+
design_conditions = 'cooling'
|
|
5962
|
+
end
|
|
5963
|
+
else
|
|
5964
|
+
design_conditions = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].downcase
|
|
5965
|
+
enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio']
|
|
5966
|
+
end
|
|
5967
|
+
end
|
|
5968
|
+
|
|
5969
|
+
# # Fan power with energy recovery = 0.934 W/cfm
|
|
5970
|
+
supply_fan = create_fan_by_name(model,
|
|
5971
|
+
'ERV_Supply_Fan',
|
|
5972
|
+
fan_name: "#{thermal_zone.name} ERV Supply Fan")
|
|
5973
|
+
exhaust_fan = create_fan_by_name(model,
|
|
5974
|
+
'ERV_Supply_Fan',
|
|
5975
|
+
fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
|
|
5976
|
+
supply_fan.setMotorEfficiency(0.48)
|
|
5977
|
+
exhaust_fan.setMotorEfficiency(0.48)
|
|
5978
|
+
supply_fan.setFanTotalEfficiency(0.303158)
|
|
5979
|
+
exhaust_fan.setFanTotalEfficiency(0.303158)
|
|
5980
|
+
supply_fan.setPressureRise(270.64755)
|
|
5981
|
+
exhaust_fan.setPressureRise(270.64755)
|
|
5982
|
+
|
|
5983
|
+
|
|
5984
|
+
# Create ERV Controller
|
|
5985
|
+
erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
|
|
5986
|
+
erv_controller.setName("#{thermal_zone.name} ERV Controller")
|
|
5987
|
+
erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
|
|
5988
|
+
|
|
5989
|
+
# Create heat exchanger
|
|
5990
|
+
heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
|
|
5991
|
+
heat_exchanger.setName("#{thermal_zone.name} ERV HX")
|
|
5992
|
+
heat_exchanger.setSupplyAirOutletTemperatureControl(false)
|
|
5993
|
+
heat_exchanger.setHeatExchangerType('Rotary')
|
|
5994
|
+
heat_exchanger.setEconomizerLockout(false)
|
|
5995
|
+
heat_exchanger.setFrostControlType('ExhaustOnly')
|
|
5996
|
+
heat_exchanger.setThresholdTemperature(-23.3)
|
|
5997
|
+
heat_exchanger.setInitialDefrostTimeFraction(0.167)
|
|
5998
|
+
heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
|
|
5999
|
+
heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
|
|
6000
|
+
heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
|
|
6001
|
+
|
|
6002
|
+
erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
|
|
6003
|
+
erv.setName("#{thermal_zone.name} ERV")
|
|
6004
|
+
|
|
6005
|
+
erv.setController(erv_controller)
|
|
6006
|
+
erv.addToThermalZone(thermal_zone)
|
|
6007
|
+
|
|
6008
|
+
# Set OA requirements; Assumes a default of 55 cfm
|
|
6009
|
+
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
6010
|
+
erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6011
|
+
erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6012
|
+
else
|
|
6013
|
+
erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
|
|
6014
|
+
end
|
|
6015
|
+
erv.setVentilationRateperOccupant(0.0)
|
|
6016
|
+
|
|
6017
|
+
# Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
|
|
6018
|
+
# From EnergyPlus I/O reference:
|
|
6019
|
+
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
6020
|
+
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
6021
|
+
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
6022
|
+
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
6023
|
+
# is added to the zone."
|
|
6024
|
+
thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
|
|
6025
|
+
thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
|
|
6026
|
+
|
|
6027
|
+
return erv
|
|
6028
|
+
end
|
|
6029
|
+
|
|
6030
|
+
# Add a residential ventilation: standalone unit ventilation and zone exhaust that operates to provide OA,
|
|
6031
|
+
# used in conjuction with a system that having mechanical cooling and a heating coil
|
|
6032
|
+
#
|
|
6033
|
+
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
6034
|
+
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
6035
|
+
# @return [OpenStudio::Model::ZoneHVACUnitVentilator] Standalone Unit Ventilator
|
|
6036
|
+
def model_add_residential_ventilator(model,
|
|
6037
|
+
thermal_zone,
|
|
6038
|
+
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
6039
|
+
|
|
6040
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone unit ventilator for #{thermal_zone.name}.")
|
|
6041
|
+
|
|
6042
|
+
# Fan power with no energy recovery = 0.806 W/cfm
|
|
6043
|
+
supply_fan = create_fan_by_name(model,
|
|
6044
|
+
'ERV_Supply_Fan',
|
|
6045
|
+
fan_name: "#{thermal_zone.name} Ventilator Supply Fan")
|
|
6046
|
+
supply_fan.setMotorEfficiency(0.48)
|
|
6047
|
+
supply_fan.setFanTotalEfficiency(0.303158)
|
|
6048
|
+
supply_fan.setPressureRise(233.6875)
|
|
6049
|
+
|
|
6050
|
+
unit_ventilator = OpenStudio::Model::ZoneHVACUnitVentilator.new(model, supply_fan)
|
|
6051
|
+
unit_ventilator.setName("#{thermal_zone.name} Unit Ventilator")
|
|
6052
|
+
unit_ventilator.addToThermalZone(thermal_zone)
|
|
6053
|
+
fan_zone_exhaust = create_fan_zone_exhaust(model,
|
|
6054
|
+
fan_name: "#{thermal_zone.name} Exhaust Fan",
|
|
6055
|
+
fan_efficiency: 0.303158,
|
|
6056
|
+
pressure_rise: 233.6875)
|
|
6057
|
+
|
|
6058
|
+
# Set OA requirements; Assumes a default of 55 cfm
|
|
6059
|
+
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
6060
|
+
unit_ventilator.setMaximumSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6061
|
+
fan_zone_exhaust.setMaximumFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
6062
|
+
else
|
|
6063
|
+
unit_ventilator.setMaximumSupplyAirFlowRate(min_oa_flow_m3_per_s_per_m2)
|
|
6064
|
+
fan_zone_exhaust.setMaximumFlowRate(min_oa_flow_m3_per_s_per_m2)
|
|
6065
|
+
end
|
|
6066
|
+
|
|
6067
|
+
# Ensure the unit ventilator takes priority, so ventilation load is included when treated by other zonal systems
|
|
6068
|
+
# From EnergyPlus I/O reference:
|
|
6069
|
+
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
6070
|
+
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
6071
|
+
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
6072
|
+
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
6073
|
+
# is added to the zone."
|
|
6074
|
+
thermal_zone.setCoolingPriority(unit_ventilator.to_ModelObject.get, 1)
|
|
6075
|
+
thermal_zone.setHeatingPriority(unit_ventilator.to_ModelObject.get, 1)
|
|
6076
|
+
end
|
|
6077
|
+
|
|
5907
6078
|
# Adds an exhaust fan to each zone.
|
|
5908
6079
|
#
|
|
5909
6080
|
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
@@ -7295,182 +7466,4 @@ class Standard
|
|
|
7295
7466
|
rename_air_loop_nodes(model)
|
|
7296
7467
|
rename_plant_loop_nodes(model)
|
|
7297
7468
|
end
|
|
7298
|
-
|
|
7299
|
-
# Add a residential ERV: standalone ERV that operates to provide OA,
|
|
7300
|
-
# use in conjuction witha system that having mechanical cooling and
|
|
7301
|
-
# a heating coil
|
|
7302
|
-
#
|
|
7303
|
-
# @param model [OpenStudio::Model::Model] OpenStudio Model object
|
|
7304
|
-
# @param thermal_zone [OpenStudio::Model::ThermalZone] OpenStudio ThermalZone object
|
|
7305
|
-
# @param climate_zone [String] Climate zone
|
|
7306
|
-
# @param energy_recovery [Boolean] Indicates if the ERV is to recover energy, if false, only provides OA
|
|
7307
|
-
# @return [OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator] Standalone ERV
|
|
7308
|
-
def model_add_residential_erv(model,
|
|
7309
|
-
thermal_zone,
|
|
7310
|
-
climate_zone,
|
|
7311
|
-
energy_recovery,
|
|
7312
|
-
min_oa_flow_m3_per_s_per_m2 = nil)
|
|
7313
|
-
|
|
7314
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Adding standalone ERV for #{thermal_zone.name}.")
|
|
7315
|
-
|
|
7316
|
-
# Exception 3 to 6.5.6.1.1
|
|
7317
|
-
case template
|
|
7318
|
-
when '90.1-2019'
|
|
7319
|
-
case climate_zone
|
|
7320
|
-
when 'ASHRAE 169-2006-0A',
|
|
7321
|
-
'ASHRAE 169-2006-0B',
|
|
7322
|
-
'ASHRAE 169-2006-1A',
|
|
7323
|
-
'ASHRAE 169-2006-1B',
|
|
7324
|
-
'ASHRAE 169-2006-2A',
|
|
7325
|
-
'ASHRAE 169-2006-2B',
|
|
7326
|
-
'ASHRAE 169-2006-3A',
|
|
7327
|
-
'ASHRAE 169-2006-3B',
|
|
7328
|
-
'ASHRAE 169-2006-3C',
|
|
7329
|
-
'ASHRAE 169-2006-4A',
|
|
7330
|
-
'ASHRAE 169-2006-4B',
|
|
7331
|
-
'ASHRAE 169-2006-4C',
|
|
7332
|
-
'ASHRAE 169-2006-5A',
|
|
7333
|
-
'ASHRAE 169-2006-5B',
|
|
7334
|
-
'ASHRAE 169-2006-5C',
|
|
7335
|
-
'ASHRAE 169-2013-0A',
|
|
7336
|
-
'ASHRAE 169-2013-0B',
|
|
7337
|
-
'ASHRAE 169-2013-1A',
|
|
7338
|
-
'ASHRAE 169-2013-1B',
|
|
7339
|
-
'ASHRAE 169-2013-2A',
|
|
7340
|
-
'ASHRAE 169-2013-2B',
|
|
7341
|
-
'ASHRAE 169-2013-3A',
|
|
7342
|
-
'ASHRAE 169-2013-3B',
|
|
7343
|
-
'ASHRAE 169-2013-3C',
|
|
7344
|
-
'ASHRAE 169-2013-4A',
|
|
7345
|
-
'ASHRAE 169-2013-4B',
|
|
7346
|
-
'ASHRAE 169-2013-4C',
|
|
7347
|
-
'ASHRAE 169-2013-5A',
|
|
7348
|
-
'ASHRAE 169-2013-5B',
|
|
7349
|
-
'ASHRAE 169-2013-5C'
|
|
7350
|
-
if thermal_zone.floorArea <= OpenStudio.convert(500.0, 'ft^2', 'm^2').get
|
|
7351
|
-
energy_recovery = false
|
|
7352
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.Model.Model', "Energy recovery will not be modeled for the ERV serving #{thermal_zone.name}.")
|
|
7353
|
-
end
|
|
7354
|
-
end
|
|
7355
|
-
end
|
|
7356
|
-
|
|
7357
|
-
# Determine ERR and design basis when energy recovery is required
|
|
7358
|
-
#
|
|
7359
|
-
# enthalpy_recovery_ratio = nil will trigger an ERV with no effectiveness that only provides OA
|
|
7360
|
-
enthalpy_recovery_ratio = nil
|
|
7361
|
-
if energy_recovery
|
|
7362
|
-
case template
|
|
7363
|
-
when '90.1-2019'
|
|
7364
|
-
search_criteria = {
|
|
7365
|
-
'template' => template,
|
|
7366
|
-
'climate_zone' => climate_zone,
|
|
7367
|
-
'under_8000_hours' => false,
|
|
7368
|
-
'nontransient_dwelling' => true
|
|
7369
|
-
}
|
|
7370
|
-
else
|
|
7371
|
-
search_criteria = {
|
|
7372
|
-
'template' => template,
|
|
7373
|
-
'climate_zone' => climate_zone,
|
|
7374
|
-
'under_8000_hours' => false
|
|
7375
|
-
}
|
|
7376
|
-
end
|
|
7377
|
-
|
|
7378
|
-
erv_enthalpy_recovery_ratio = model_find_object(standards_data['energy_recovery'], search_criteria)
|
|
7379
|
-
|
|
7380
|
-
# Extract ERR from data lookup
|
|
7381
|
-
if !erv_enthalpy_recovery_ratio.nil?
|
|
7382
|
-
if erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio'].nil? & erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].nil?
|
|
7383
|
-
# If not included in the data, an enthalpy
|
|
7384
|
-
# recovery ratio (ERR) of 50% is used
|
|
7385
|
-
enthalpy_recovery_ratio = 0.5
|
|
7386
|
-
case climate_zone
|
|
7387
|
-
when 'ASHRAE 169-2006-6B',
|
|
7388
|
-
'ASHRAE 169-2013-6B',
|
|
7389
|
-
'ASHRAE 169-2006-7A',
|
|
7390
|
-
'ASHRAE 169-2013-7A',
|
|
7391
|
-
'ASHRAE 169-2006-7B',
|
|
7392
|
-
'ASHRAE 169-2013-7B',
|
|
7393
|
-
'ASHRAE 169-2006-8A',
|
|
7394
|
-
'ASHRAE 169-2013-8A',
|
|
7395
|
-
'ASHRAE 169-2006-8B',
|
|
7396
|
-
'ASHRAE 169-2013-8B'
|
|
7397
|
-
design_conditions = 'heating'
|
|
7398
|
-
else
|
|
7399
|
-
design_conditions = 'cooling'
|
|
7400
|
-
end
|
|
7401
|
-
else
|
|
7402
|
-
design_conditions = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio_design_conditions'].downcase
|
|
7403
|
-
enthalpy_recovery_ratio = erv_enthalpy_recovery_ratio['enthalpy_recovery_ratio']
|
|
7404
|
-
end
|
|
7405
|
-
end
|
|
7406
|
-
end
|
|
7407
|
-
|
|
7408
|
-
# Create fans
|
|
7409
|
-
#
|
|
7410
|
-
# Fan power:
|
|
7411
|
-
# No energy recovery = 0.806 W/cfm
|
|
7412
|
-
# Energy recovery = 0.934 W/cfm
|
|
7413
|
-
supply_fan = create_fan_by_name(model,
|
|
7414
|
-
'ERV_Supply_Fan',
|
|
7415
|
-
fan_name: "#{thermal_zone.name} ERV Supply Fan")
|
|
7416
|
-
exhaust_fan = create_fan_by_name(model,
|
|
7417
|
-
'ERV_Supply_Fan',
|
|
7418
|
-
fan_name: "#{thermal_zone.name} ERV Exhaust Fan")
|
|
7419
|
-
supply_fan.setMotorEfficiency(0.48)
|
|
7420
|
-
exhaust_fan.setMotorEfficiency(0.48)
|
|
7421
|
-
supply_fan.setFanTotalEfficiency(0.303158)
|
|
7422
|
-
exhaust_fan.setFanTotalEfficiency(0.303158)
|
|
7423
|
-
if energy_recovery
|
|
7424
|
-
supply_fan.setPressureRise(270.64755)
|
|
7425
|
-
exhaust_fan.setPressureRise(270.64755)
|
|
7426
|
-
else
|
|
7427
|
-
supply_fan.setPressureRise(233.6875)
|
|
7428
|
-
exhaust_fan.setPressureRise(233.6875)
|
|
7429
|
-
end
|
|
7430
|
-
|
|
7431
|
-
# Create ERV Controller
|
|
7432
|
-
erv_controller = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilatorController.new(model)
|
|
7433
|
-
erv_controller.setName("#{thermal_zone.name} ERV Controller")
|
|
7434
|
-
erv_controller.setControlHighIndoorHumidityBasedonOutdoorHumidityRatio(false)
|
|
7435
|
-
|
|
7436
|
-
# Create heat exchanger
|
|
7437
|
-
heat_exchanger = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
|
|
7438
|
-
heat_exchanger.setName("#{thermal_zone.name} ERV HX")
|
|
7439
|
-
heat_exchanger.setSupplyAirOutletTemperatureControl(false)
|
|
7440
|
-
heat_exchanger.setHeatExchangerType('Rotary')
|
|
7441
|
-
heat_exchanger.setEconomizerLockout(false)
|
|
7442
|
-
heat_exchanger.setFrostControlType('ExhaustOnly')
|
|
7443
|
-
heat_exchanger.setThresholdTemperature(-23.3)
|
|
7444
|
-
heat_exchanger.setInitialDefrostTimeFraction(0.167)
|
|
7445
|
-
heat_exchanger.setRateofDefrostTimeFractionIncrease(1.44)
|
|
7446
|
-
heat_exchanger.setAvailabilitySchedule(model_add_schedule(model, 'Always On - No Design Day'))
|
|
7447
|
-
heat_exchanger_air_to_air_sensible_and_latent_apply_prototype_efficiency_enthalpy_recovery_ratio(heat_exchanger, enthalpy_recovery_ratio, design_conditions, climate_zone)
|
|
7448
|
-
|
|
7449
|
-
erv = OpenStudio::Model::ZoneHVACEnergyRecoveryVentilator.new(model, heat_exchanger, supply_fan, exhaust_fan)
|
|
7450
|
-
erv.setName("#{thermal_zone.name} ERV")
|
|
7451
|
-
|
|
7452
|
-
erv.setController(erv_controller)
|
|
7453
|
-
erv.addToThermalZone(thermal_zone)
|
|
7454
|
-
|
|
7455
|
-
# Set OA requirements; Assumes a default of 55 cfm
|
|
7456
|
-
if min_oa_flow_m3_per_s_per_m2.nil?
|
|
7457
|
-
erv.setSupplyAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
7458
|
-
erv.setExhaustAirFlowRate(OpenStudio.convert(55.0, 'cfm', 'm^3/s').get)
|
|
7459
|
-
else
|
|
7460
|
-
erv.setVentilationRateperUnitFloorArea(min_oa_flow_m3_per_s_per_m2)
|
|
7461
|
-
end
|
|
7462
|
-
erv.setVentilationRateperOccupant(0.0)
|
|
7463
|
-
|
|
7464
|
-
# Ensure the ERV takes priority, so ventilation load is included when treated by other zonal systems
|
|
7465
|
-
# From EnergyPlus I/O reference:
|
|
7466
|
-
# "For situations where one or more equipment types has limited capacity or limited control capability, order the
|
|
7467
|
-
# sequence so that the most controllable piece of equipment runs last. For example, with a dedicated outdoor air
|
|
7468
|
-
# system (DOAS), the air terminal for the DOAS should be assigned Heating Sequence = 1 and Cooling Sequence = 1.
|
|
7469
|
-
# Any other equipment should be assigned sequence 2 or higher so that it will see the net load after the DOAS air
|
|
7470
|
-
# is added to the zone."
|
|
7471
|
-
thermal_zone.setCoolingPriority(erv.to_ModelObject.get, 1)
|
|
7472
|
-
thermal_zone.setHeatingPriority(erv.to_ModelObject.get, 1)
|
|
7473
|
-
|
|
7474
|
-
return erv
|
|
7475
|
-
end
|
|
7476
7469
|
end
|
|
@@ -1341,6 +1341,11 @@ module OpenstudioStandards
|
|
|
1341
1341
|
|
|
1342
1342
|
# Tell EnergyPlus to interpolate schedules to timestep so that it doesn't have to be done in this code
|
|
1343
1343
|
# sch_day.setInterpolatetoTimestep(true)
|
|
1344
|
+
# if model.version < OpenStudio::VersionString.new('3.8.0')
|
|
1345
|
+
# day_sch.setInterpolatetoTimestep(true)
|
|
1346
|
+
# else
|
|
1347
|
+
# day_sch.setInterpolatetoTimestep('Average')
|
|
1348
|
+
# end
|
|
1344
1349
|
|
|
1345
1350
|
return schedule_day
|
|
1346
1351
|
end
|
|
@@ -2791,6 +2791,11 @@ class Standard
|
|
|
2791
2791
|
day_sch = sch_ruleset.defaultDaySchedule
|
|
2792
2792
|
day_sch.setName("#{schedule_name} Default")
|
|
2793
2793
|
model_add_vals_to_sch(model, day_sch, sch_type, values)
|
|
2794
|
+
if model.version < OpenStudio::VersionString.new('3.8.0')
|
|
2795
|
+
day_sch.setInterpolatetoTimestep(false)
|
|
2796
|
+
else
|
|
2797
|
+
day_sch.setInterpolatetoTimestep('No')
|
|
2798
|
+
end
|
|
2794
2799
|
end
|
|
2795
2800
|
|
|
2796
2801
|
# Winter Design Day
|
|
@@ -2800,6 +2805,11 @@ class Standard
|
|
|
2800
2805
|
day_sch = sch_ruleset.winterDesignDaySchedule
|
|
2801
2806
|
day_sch.setName("#{schedule_name} Winter Design Day")
|
|
2802
2807
|
model_add_vals_to_sch(model, day_sch, sch_type, values)
|
|
2808
|
+
if model.version < OpenStudio::VersionString.new('3.8.0')
|
|
2809
|
+
day_sch.setInterpolatetoTimestep(false)
|
|
2810
|
+
else
|
|
2811
|
+
day_sch.setInterpolatetoTimestep('No')
|
|
2812
|
+
end
|
|
2803
2813
|
end
|
|
2804
2814
|
|
|
2805
2815
|
# Summer Design Day
|
|
@@ -2809,6 +2819,11 @@ class Standard
|
|
|
2809
2819
|
day_sch = sch_ruleset.summerDesignDaySchedule
|
|
2810
2820
|
day_sch.setName("#{schedule_name} Summer Design Day")
|
|
2811
2821
|
model_add_vals_to_sch(model, day_sch, sch_type, values)
|
|
2822
|
+
if model.version < OpenStudio::VersionString.new('3.8.0')
|
|
2823
|
+
day_sch.setInterpolatetoTimestep(false)
|
|
2824
|
+
else
|
|
2825
|
+
day_sch.setInterpolatetoTimestep('No')
|
|
2826
|
+
end
|
|
2812
2827
|
end
|
|
2813
2828
|
|
|
2814
2829
|
# Other days (weekdays, weekends, etc)
|
|
@@ -2827,6 +2842,11 @@ class Standard
|
|
|
2827
2842
|
day_sch = sch_rule.daySchedule
|
|
2828
2843
|
day_sch.setName("#{schedule_name} #{day_types} Day")
|
|
2829
2844
|
model_add_vals_to_sch(model, day_sch, sch_type, values)
|
|
2845
|
+
if model.version < OpenStudio::VersionString.new('3.8.0')
|
|
2846
|
+
day_sch.setInterpolatetoTimestep(false)
|
|
2847
|
+
else
|
|
2848
|
+
day_sch.setInterpolatetoTimestep('No')
|
|
2849
|
+
end
|
|
2830
2850
|
|
|
2831
2851
|
# Set the dates when the rule applies
|
|
2832
2852
|
sch_rule.setStartDate(OpenStudio::Date.new(OpenStudio::MonthOfYear.new(start_date.month.to_i), start_date.day.to_i))
|
|
@@ -1816,19 +1816,19 @@ class NECB2011
|
|
|
1816
1816
|
# Determine if space is heated or cooled via spacetype heating or cooling setpoints also checking if the space is
|
|
1817
1817
|
# a plenum by checking if there is a hvac system associtated with it
|
|
1818
1818
|
if sp_type_info['heating_setpoint_schedule'].nil?
|
|
1819
|
-
heated =
|
|
1819
|
+
heated = false
|
|
1820
1820
|
else
|
|
1821
|
-
heated =
|
|
1821
|
+
heated = true
|
|
1822
1822
|
end
|
|
1823
1823
|
if sp_type_info['cooling_setpoint_schedule'].nil?
|
|
1824
|
-
cooled =
|
|
1824
|
+
cooled = false
|
|
1825
1825
|
else
|
|
1826
|
-
cooled =
|
|
1826
|
+
cooled = true
|
|
1827
1827
|
end
|
|
1828
1828
|
if (sp_type_info['necb_hvac_system_selection_type'] == '- undefined -') || /undefined/.match(sp_type_info['necb_hvac_system_selection_type'])
|
|
1829
|
-
not_plenum =
|
|
1829
|
+
not_plenum = false
|
|
1830
1830
|
else
|
|
1831
|
-
not_plenum =
|
|
1831
|
+
not_plenum = true
|
|
1832
1832
|
end
|
|
1833
1833
|
# If the spaces are heated or cooled and are not a plenum then continue
|
|
1834
1834
|
if (heated || cooled) && not_plenum
|
|
@@ -224,10 +224,6 @@ class NECB2011
|
|
|
224
224
|
qaqc = {}
|
|
225
225
|
qaqc[:sql_data] = get_sql_tables_to_json(model)
|
|
226
226
|
error_warning = []
|
|
227
|
-
qaqc[:os_standards_revision] = OpenstudioStandards.git_revision
|
|
228
|
-
qaqc[:os_standards_version] = OpenstudioStandards::VERSION
|
|
229
|
-
qaqc[:openstudio_version] = os_version.strip
|
|
230
|
-
qaqc[:energyplus_version] = eplus_version.strip
|
|
231
227
|
# Store Building data.
|
|
232
228
|
qaqc[:building] = {}
|
|
233
229
|
qaqc[:building][:name] = model.building.get.name.get
|
|
@@ -541,7 +537,7 @@ class NECB2011
|
|
|
541
537
|
constructions = []
|
|
542
538
|
outdoor_subsurfaces.each { |surface| constructions << surface.construction.get }
|
|
543
539
|
ext_const_base = Hash.new(0)
|
|
544
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
540
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
545
541
|
# iterate thought each construction and get store data
|
|
546
542
|
ext_const_base.sort.each do |construction, count|
|
|
547
543
|
construction_info = {}
|
|
@@ -558,7 +554,7 @@ class NECB2011
|
|
|
558
554
|
constructions = []
|
|
559
555
|
outdoor_surfaces.each { |surface| constructions << surface.construction.get }
|
|
560
556
|
ext_const_base = Hash.new(0)
|
|
561
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
557
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
562
558
|
# iterate thought each construction and get store data
|
|
563
559
|
ext_const_base.sort.each do |construction, count|
|
|
564
560
|
construction_info = {}
|
|
@@ -575,7 +571,7 @@ class NECB2011
|
|
|
575
571
|
constructions = []
|
|
576
572
|
ground_surfaces.each { |surface| constructions << surface.construction.get }
|
|
577
573
|
ext_const_base = Hash.new(0)
|
|
578
|
-
constructions.each { |name| ext_const_base[name] += 1 }
|
|
574
|
+
constructions.each { |name| ext_const_base[name.to_Construction.get] += 1 }
|
|
579
575
|
# iterate thought each construction and get store data
|
|
580
576
|
ext_const_base.sort.each do |construction, count|
|
|
581
577
|
construction_info = {}
|
|
@@ -112,7 +112,7 @@ class BTAPDatapoint
|
|
|
112
112
|
epw_file = @options[:epw_file]
|
|
113
113
|
epw_dir = nil
|
|
114
114
|
local_epw_file_path = File.join(input_folder_cache,@options[:epw_file])
|
|
115
|
-
epw_dir = input_folder_cache if File.
|
|
115
|
+
epw_dir = input_folder_cache if File.exist? local_epw_file_path
|
|
116
116
|
weather_file_path = OpenstudioStandards::Weather.get_standards_weather_file_path(epw_file)
|
|
117
117
|
OpenstudioStandards::Weather.model_set_building_location(model, weather_file_path: weather_file_path)
|
|
118
118
|
else
|
|
@@ -193,6 +193,11 @@ Standard.class_eval do
|
|
|
193
193
|
sim_control.setDoHVACSizingSimulationforSizingPeriods(true)
|
|
194
194
|
sim_control.setMaximumNumberofHVACSizingSimulationPasses(1)
|
|
195
195
|
end
|
|
196
|
+
if model.version >= OpenStudio::VersionString.new('3.8.0')
|
|
197
|
+
sim_control.setDoZoneSizingCalculation(true)
|
|
198
|
+
sim_control.setDoSystemSizingCalculation(true)
|
|
199
|
+
sim_control.setDoPlantSizingCalculation(true)
|
|
200
|
+
end
|
|
196
201
|
|
|
197
202
|
# check that all zones have surfaces.
|
|
198
203
|
raise 'Error: Sizing Run Failed. Thermal Zones with no surfaces exist.' unless model_do_all_zones_have_surfaces?(model)
|
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.6.0
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mark Adams
|
|
@@ -39,274 +39,288 @@ authors:
|
|
|
39
39
|
autorequire:
|
|
40
40
|
bindir: bin
|
|
41
41
|
cert_chain: []
|
|
42
|
-
date: 2024-
|
|
42
|
+
date: 2024-05-10 00:00:00.000000000 Z
|
|
43
43
|
dependencies:
|
|
44
44
|
- !ruby/object:Gem::Dependency
|
|
45
|
-
name:
|
|
45
|
+
name: bundler
|
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
|
47
47
|
requirements:
|
|
48
|
-
- -
|
|
48
|
+
- - "~>"
|
|
49
49
|
- !ruby/object:Gem::Version
|
|
50
|
-
version:
|
|
50
|
+
version: 2.4.10
|
|
51
51
|
type: :development
|
|
52
52
|
prerelease: false
|
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
|
54
54
|
requirements:
|
|
55
|
-
- -
|
|
55
|
+
- - "~>"
|
|
56
56
|
- !ruby/object:Gem::Version
|
|
57
|
-
version:
|
|
57
|
+
version: 2.4.10
|
|
58
58
|
- !ruby/object:Gem::Dependency
|
|
59
|
-
name:
|
|
59
|
+
name: nokogiri
|
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
|
61
61
|
requirements:
|
|
62
|
-
- - "
|
|
62
|
+
- - "~>"
|
|
63
63
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: '
|
|
64
|
+
version: '1.16'
|
|
65
65
|
type: :development
|
|
66
66
|
prerelease: false
|
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
|
69
|
-
- - "
|
|
69
|
+
- - "~>"
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
|
-
version: '
|
|
71
|
+
version: '1.16'
|
|
72
72
|
- !ruby/object:Gem::Dependency
|
|
73
|
-
name:
|
|
73
|
+
name: parallel_tests
|
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
|
75
75
|
requirements:
|
|
76
|
-
- - "
|
|
76
|
+
- - "~>"
|
|
77
77
|
- !ruby/object:Gem::Version
|
|
78
|
-
version:
|
|
78
|
+
version: 3.7.0
|
|
79
79
|
type: :development
|
|
80
80
|
prerelease: false
|
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
|
82
82
|
requirements:
|
|
83
|
-
- - "
|
|
83
|
+
- - "~>"
|
|
84
84
|
- !ruby/object:Gem::Version
|
|
85
|
-
version:
|
|
85
|
+
version: 3.7.0
|
|
86
86
|
- !ruby/object:Gem::Dependency
|
|
87
|
-
name:
|
|
87
|
+
name: aes
|
|
88
88
|
requirement: !ruby/object:Gem::Requirement
|
|
89
89
|
requirements:
|
|
90
|
-
- -
|
|
90
|
+
- - '='
|
|
91
91
|
- !ruby/object:Gem::Version
|
|
92
|
-
version:
|
|
92
|
+
version: 0.5.0
|
|
93
93
|
type: :development
|
|
94
94
|
prerelease: false
|
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
|
96
96
|
requirements:
|
|
97
|
-
- -
|
|
97
|
+
- - '='
|
|
98
98
|
- !ruby/object:Gem::Version
|
|
99
|
-
version:
|
|
99
|
+
version: 0.5.0
|
|
100
100
|
- !ruby/object:Gem::Dependency
|
|
101
|
-
name:
|
|
101
|
+
name: codecov
|
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
|
103
103
|
requirements:
|
|
104
|
-
- - "
|
|
104
|
+
- - ">="
|
|
105
105
|
- !ruby/object:Gem::Version
|
|
106
|
-
version: '
|
|
106
|
+
version: '0'
|
|
107
107
|
type: :development
|
|
108
108
|
prerelease: false
|
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
|
110
110
|
requirements:
|
|
111
|
-
- - "
|
|
111
|
+
- - ">="
|
|
112
112
|
- !ruby/object:Gem::Version
|
|
113
|
-
version: '
|
|
113
|
+
version: '0'
|
|
114
114
|
- !ruby/object:Gem::Dependency
|
|
115
|
-
name:
|
|
115
|
+
name: google_drive
|
|
116
116
|
requirement: !ruby/object:Gem::Requirement
|
|
117
117
|
requirements:
|
|
118
|
-
- - "
|
|
118
|
+
- - ">="
|
|
119
119
|
- !ruby/object:Gem::Version
|
|
120
|
-
version:
|
|
120
|
+
version: '0'
|
|
121
121
|
type: :development
|
|
122
122
|
prerelease: false
|
|
123
123
|
version_requirements: !ruby/object:Gem::Requirement
|
|
124
124
|
requirements:
|
|
125
|
-
- - "
|
|
125
|
+
- - ">="
|
|
126
126
|
- !ruby/object:Gem::Version
|
|
127
|
-
version:
|
|
127
|
+
version: '0'
|
|
128
128
|
- !ruby/object:Gem::Dependency
|
|
129
|
-
name:
|
|
129
|
+
name: minitest
|
|
130
130
|
requirement: !ruby/object:Gem::Requirement
|
|
131
131
|
requirements:
|
|
132
132
|
- - "~>"
|
|
133
133
|
- !ruby/object:Gem::Version
|
|
134
|
-
version:
|
|
134
|
+
version: 5.14.0
|
|
135
135
|
type: :development
|
|
136
136
|
prerelease: false
|
|
137
137
|
version_requirements: !ruby/object:Gem::Requirement
|
|
138
138
|
requirements:
|
|
139
139
|
- - "~>"
|
|
140
140
|
- !ruby/object:Gem::Version
|
|
141
|
-
version:
|
|
141
|
+
version: 5.14.0
|
|
142
142
|
- !ruby/object:Gem::Dependency
|
|
143
|
-
name:
|
|
143
|
+
name: minitest-ci
|
|
144
144
|
requirement: !ruby/object:Gem::Requirement
|
|
145
145
|
requirements:
|
|
146
|
-
- - "
|
|
146
|
+
- - ">="
|
|
147
147
|
- !ruby/object:Gem::Version
|
|
148
|
-
version: '0
|
|
148
|
+
version: '0'
|
|
149
149
|
type: :development
|
|
150
150
|
prerelease: false
|
|
151
151
|
version_requirements: !ruby/object:Gem::Requirement
|
|
152
152
|
requirements:
|
|
153
|
-
- - "
|
|
153
|
+
- - ">="
|
|
154
154
|
- !ruby/object:Gem::Version
|
|
155
|
-
version: '0
|
|
155
|
+
version: '0'
|
|
156
156
|
- !ruby/object:Gem::Dependency
|
|
157
|
-
name:
|
|
157
|
+
name: minitest-parallel_fork
|
|
158
158
|
requirement: !ruby/object:Gem::Requirement
|
|
159
159
|
requirements:
|
|
160
|
-
- -
|
|
160
|
+
- - ">="
|
|
161
161
|
- !ruby/object:Gem::Version
|
|
162
|
-
version: 0
|
|
162
|
+
version: '0'
|
|
163
163
|
type: :development
|
|
164
164
|
prerelease: false
|
|
165
165
|
version_requirements: !ruby/object:Gem::Requirement
|
|
166
166
|
requirements:
|
|
167
|
-
- -
|
|
167
|
+
- - ">="
|
|
168
168
|
- !ruby/object:Gem::Version
|
|
169
|
-
version: 0
|
|
169
|
+
version: '0'
|
|
170
170
|
- !ruby/object:Gem::Dependency
|
|
171
|
-
name:
|
|
171
|
+
name: minitest-reporters
|
|
172
172
|
requirement: !ruby/object:Gem::Requirement
|
|
173
173
|
requirements:
|
|
174
174
|
- - "~>"
|
|
175
175
|
- !ruby/object:Gem::Version
|
|
176
|
-
version:
|
|
176
|
+
version: 1.4.2
|
|
177
177
|
type: :development
|
|
178
178
|
prerelease: false
|
|
179
179
|
version_requirements: !ruby/object:Gem::Requirement
|
|
180
180
|
requirements:
|
|
181
181
|
- - "~>"
|
|
182
182
|
- !ruby/object:Gem::Version
|
|
183
|
-
version:
|
|
183
|
+
version: 1.4.2
|
|
184
184
|
- !ruby/object:Gem::Dependency
|
|
185
|
-
name:
|
|
185
|
+
name: openstudio-api-stubs
|
|
186
186
|
requirement: !ruby/object:Gem::Requirement
|
|
187
187
|
requirements:
|
|
188
|
-
- - "
|
|
188
|
+
- - ">="
|
|
189
189
|
- !ruby/object:Gem::Version
|
|
190
|
-
version:
|
|
190
|
+
version: '0'
|
|
191
191
|
type: :development
|
|
192
192
|
prerelease: false
|
|
193
193
|
version_requirements: !ruby/object:Gem::Requirement
|
|
194
194
|
requirements:
|
|
195
|
-
- - "
|
|
195
|
+
- - ">="
|
|
196
196
|
- !ruby/object:Gem::Version
|
|
197
|
-
version:
|
|
197
|
+
version: '0'
|
|
198
198
|
- !ruby/object:Gem::Dependency
|
|
199
|
-
name:
|
|
199
|
+
name: rake
|
|
200
200
|
requirement: !ruby/object:Gem::Requirement
|
|
201
201
|
requirements:
|
|
202
202
|
- - "~>"
|
|
203
203
|
- !ruby/object:Gem::Version
|
|
204
|
-
version: '
|
|
204
|
+
version: '13.0'
|
|
205
205
|
type: :development
|
|
206
206
|
prerelease: false
|
|
207
207
|
version_requirements: !ruby/object:Gem::Requirement
|
|
208
208
|
requirements:
|
|
209
209
|
- - "~>"
|
|
210
210
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: '
|
|
211
|
+
version: '13.0'
|
|
212
212
|
- !ruby/object:Gem::Dependency
|
|
213
|
-
name:
|
|
213
|
+
name: rest-client
|
|
214
214
|
requirement: !ruby/object:Gem::Requirement
|
|
215
215
|
requirements:
|
|
216
|
-
- - "
|
|
216
|
+
- - "~>"
|
|
217
217
|
- !ruby/object:Gem::Version
|
|
218
|
-
version:
|
|
218
|
+
version: 2.0.2
|
|
219
219
|
type: :development
|
|
220
220
|
prerelease: false
|
|
221
221
|
version_requirements: !ruby/object:Gem::Requirement
|
|
222
222
|
requirements:
|
|
223
|
-
- - "
|
|
223
|
+
- - "~>"
|
|
224
224
|
- !ruby/object:Gem::Version
|
|
225
|
-
version:
|
|
225
|
+
version: 2.0.2
|
|
226
226
|
- !ruby/object:Gem::Dependency
|
|
227
|
-
name:
|
|
227
|
+
name: roo
|
|
228
228
|
requirement: !ruby/object:Gem::Requirement
|
|
229
229
|
requirements:
|
|
230
|
-
- -
|
|
230
|
+
- - '='
|
|
231
231
|
- !ruby/object:Gem::Version
|
|
232
|
-
version:
|
|
232
|
+
version: 2.7.1
|
|
233
233
|
type: :development
|
|
234
234
|
prerelease: false
|
|
235
235
|
version_requirements: !ruby/object:Gem::Requirement
|
|
236
236
|
requirements:
|
|
237
|
-
- -
|
|
237
|
+
- - '='
|
|
238
238
|
- !ruby/object:Gem::Version
|
|
239
|
-
version:
|
|
239
|
+
version: 2.7.1
|
|
240
240
|
- !ruby/object:Gem::Dependency
|
|
241
|
-
name:
|
|
241
|
+
name: rubocop
|
|
242
242
|
requirement: !ruby/object:Gem::Requirement
|
|
243
243
|
requirements:
|
|
244
|
-
- -
|
|
244
|
+
- - '='
|
|
245
245
|
- !ruby/object:Gem::Version
|
|
246
|
-
version: '
|
|
246
|
+
version: '1.50'
|
|
247
247
|
type: :development
|
|
248
248
|
prerelease: false
|
|
249
249
|
version_requirements: !ruby/object:Gem::Requirement
|
|
250
250
|
requirements:
|
|
251
|
-
- -
|
|
251
|
+
- - '='
|
|
252
252
|
- !ruby/object:Gem::Version
|
|
253
|
-
version: '
|
|
253
|
+
version: '1.50'
|
|
254
254
|
- !ruby/object:Gem::Dependency
|
|
255
|
-
name:
|
|
255
|
+
name: rubocop-checkstyle_formatter
|
|
256
256
|
requirement: !ruby/object:Gem::Requirement
|
|
257
257
|
requirements:
|
|
258
|
-
- -
|
|
258
|
+
- - "~>"
|
|
259
259
|
- !ruby/object:Gem::Version
|
|
260
|
-
version:
|
|
260
|
+
version: 0.6.0
|
|
261
261
|
type: :development
|
|
262
262
|
prerelease: false
|
|
263
263
|
version_requirements: !ruby/object:Gem::Requirement
|
|
264
264
|
requirements:
|
|
265
|
-
- -
|
|
265
|
+
- - "~>"
|
|
266
266
|
- !ruby/object:Gem::Version
|
|
267
|
-
version:
|
|
267
|
+
version: 0.6.0
|
|
268
268
|
- !ruby/object:Gem::Dependency
|
|
269
|
-
name:
|
|
269
|
+
name: ruby-progressbar
|
|
270
270
|
requirement: !ruby/object:Gem::Requirement
|
|
271
271
|
requirements:
|
|
272
|
-
- -
|
|
272
|
+
- - ">="
|
|
273
273
|
- !ruby/object:Gem::Version
|
|
274
|
-
version: 0
|
|
274
|
+
version: '0'
|
|
275
275
|
type: :development
|
|
276
276
|
prerelease: false
|
|
277
277
|
version_requirements: !ruby/object:Gem::Requirement
|
|
278
278
|
requirements:
|
|
279
|
-
- -
|
|
279
|
+
- - ">="
|
|
280
280
|
- !ruby/object:Gem::Version
|
|
281
|
-
version: 0
|
|
281
|
+
version: '0'
|
|
282
282
|
- !ruby/object:Gem::Dependency
|
|
283
|
-
name:
|
|
283
|
+
name: rubyXL
|
|
284
|
+
requirement: !ruby/object:Gem::Requirement
|
|
285
|
+
requirements:
|
|
286
|
+
- - "~>"
|
|
287
|
+
- !ruby/object:Gem::Version
|
|
288
|
+
version: '3.4'
|
|
289
|
+
type: :development
|
|
290
|
+
prerelease: false
|
|
291
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
292
|
+
requirements:
|
|
293
|
+
- - "~>"
|
|
294
|
+
- !ruby/object:Gem::Version
|
|
295
|
+
version: '3.4'
|
|
296
|
+
- !ruby/object:Gem::Dependency
|
|
297
|
+
name: simplecov
|
|
284
298
|
requirement: !ruby/object:Gem::Requirement
|
|
285
299
|
requirements:
|
|
286
300
|
- - '='
|
|
287
301
|
- !ruby/object:Gem::Version
|
|
288
|
-
version:
|
|
302
|
+
version: 0.22.0
|
|
289
303
|
type: :development
|
|
290
304
|
prerelease: false
|
|
291
305
|
version_requirements: !ruby/object:Gem::Requirement
|
|
292
306
|
requirements:
|
|
293
307
|
- - '='
|
|
294
308
|
- !ruby/object:Gem::Version
|
|
295
|
-
version:
|
|
309
|
+
version: 0.22.0
|
|
296
310
|
- !ruby/object:Gem::Dependency
|
|
297
|
-
name:
|
|
311
|
+
name: yard
|
|
298
312
|
requirement: !ruby/object:Gem::Requirement
|
|
299
313
|
requirements:
|
|
300
|
-
- - "
|
|
314
|
+
- - "~>"
|
|
301
315
|
- !ruby/object:Gem::Version
|
|
302
|
-
version: '0'
|
|
316
|
+
version: '0.9'
|
|
303
317
|
type: :development
|
|
304
318
|
prerelease: false
|
|
305
319
|
version_requirements: !ruby/object:Gem::Requirement
|
|
306
320
|
requirements:
|
|
307
|
-
- - "
|
|
321
|
+
- - "~>"
|
|
308
322
|
- !ruby/object:Gem::Version
|
|
309
|
-
version: '0'
|
|
323
|
+
version: '0.9'
|
|
310
324
|
- !ruby/object:Gem::Dependency
|
|
311
325
|
name: tbd
|
|
312
326
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -640,7 +654,6 @@ files:
|
|
|
640
654
|
- data/geometry/DOERefWarehouse.json
|
|
641
655
|
- data/geometry/DOERefWarehouse.osm
|
|
642
656
|
- data/inventory/thermal_bridging.csv
|
|
643
|
-
- data/standards/OpenStudio_Standards-deer-comstock.xlsx
|
|
644
657
|
- data/standards/exclude_list.csv
|
|
645
658
|
- data/standards/export_OpenStudio_libraries.rb
|
|
646
659
|
- data/standards/legacy_dd_results.csv
|
|
@@ -650,7 +663,6 @@ files:
|
|
|
650
663
|
- data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1.csv
|
|
651
664
|
- data/standards/metadata_units_OpenStudio_Standards-ashrae_90_1space_types.csv
|
|
652
665
|
- data/standards/metadata_units_OpenStudio_Standards-deer-ALL-comstockspace_types.csv
|
|
653
|
-
- data/standards/openstudio_standards_duplicates_log.csv
|
|
654
666
|
- data/standards/templates_to_climate_zones.json
|
|
655
667
|
- data/standards/test_performance_expected_dd_results.csv
|
|
656
668
|
- data/weather/ARCATA_725945_CZ2010.ddy
|
|
@@ -2516,7 +2528,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
2516
2528
|
- !ruby/object:Gem::Version
|
|
2517
2529
|
version: 1.3.6
|
|
2518
2530
|
requirements: []
|
|
2519
|
-
rubygems_version: 3.
|
|
2531
|
+
rubygems_version: 3.4.10
|
|
2520
2532
|
signing_key:
|
|
2521
2533
|
specification_version: 4
|
|
2522
2534
|
summary: Creates OpenStudio models of typical buildings, creates standard baselines
|
|
Binary file
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
Spreadsheet Name,Worksheet Name,Object Index in Worksheet,Similarity of Duplicate,Duplicate Object
|
|
2
|
-
OpenStudio_Standards-ashrae_90_1,refrigerated_cases,38,different,90.1-2004|Any|Service Deli Cases|
|
|
3
|
-
OpenStudio_Standards-ashrae_90_1,refrigerated_cases,80,different,90.1-2007|Any|Service Deli Cases|
|
|
4
|
-
OpenStudio_Standards-ashrae_90_1,refrigerated_cases,122,different,90.1-2010|Any|Service Deli Cases|
|
|
5
|
-
OpenStudio_Standards-ashrae_90_1,refrigerated_cases,164,different,90.1-2013|Any|Service Deli Cases|
|