openstudio-standards 0.6.0.rc2 → 0.6.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eeae37f1a829d1531a5036352d1a2c63593060c6efbefd3af99dba3daeb46c1a
4
- data.tar.gz: c5272723e22efb67b5e3d5b99a1db683b1d00e7c92c535d94cd8e0abba7cbc9f
3
+ metadata.gz: 36e7f523d2cb10126059ecdf5e1284b63aa700608bdb4a9244d799836bdaf3af
4
+ data.tar.gz: afb385431a40c8a890e10374ee3512c4e539f2eaeaf73e817b53afcbdeb00e98
5
5
  SHA512:
6
- metadata.gz: a1f549cfe400b25576b93541d5fadc0d3aad695ea33a10ddea9b4d39a22d841c603da92b8860a3622af478189ea88f5627c1660d6ad764d27fd5bf3047fd3057
7
- data.tar.gz: 844646771ff16c9e1ecf3b8860c694ae0b36e493651e1399268d47f000917ea7de13487c329f734bbf4468eab9bbf773cd2edda135e43d5a13a8d07e57b92cd8
6
+ metadata.gz: b57b01c010bd7c8b6a3b5c7c291cec14073974a8128fc9eb48dc11f51cec9ff605848cae2ade96947eee9c77fd1f50d17f7962c25b7c7b96c20f1e6b419debcd
7
+ data.tar.gz: a3d1ec5b7bf7ad1c986c2b4b26ac39d99f8ae60411b0efcf8a5a84e6819c1c19cade76921293c13fb70e2c80740219a216442f23519e3c706df1e8081f3c6dc6
@@ -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.exists?(pkg_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.exists?(osm_lib_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.exists? client_config_path
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.exists? client_config_path
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
@@ -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.exists?(construction_library_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)
@@ -144,7 +144,7 @@ module OpenstudioStandards
144
144
 
145
145
  # check that weekday start time plus duration does not exceed 24 hrs
146
146
  if (wkdy_op_hrs_start_time_hr + wkdy_op_hrs_duration_hr + (wkdy_op_hrs_start_time_min + wkdy_op_hrs_duration_min) / 60.0) > 24.0
147
- OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CreateTypical', "Weekday start time of #{wkdy_op_hrs_start} plus duration of #{wkdy_op_hrs_duration} is more than 24 hrs, hours of operation overlap midnight.")
147
+ OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CreateTypical', "Weekday start time of #{wkdy_op_hrs_start_time} plus duration of #{wkdy_op_hrs_duration} is more than 24 hrs, hours of operation overlap midnight.")
148
148
  end
149
149
  end
150
150
 
@@ -190,7 +190,7 @@ module OpenstudioStandards
190
190
  building_overhang_area_w = 0.0
191
191
 
192
192
  # loop through stories based on mine z height of surfaces.
193
- sorted_stories = sort_building_stories_and_get_min_multiplier(model).sort_by { |k, v| v }
193
+ sorted_stories = OpenstudioStandards::Geometry.model_sort_building_stories_and_get_min_multiplier(model).sort_by { |k, v| v }
194
194
  sorted_stories.each do |story, story_min_z|
195
195
  story_min_multiplier = nil
196
196
  story_footprint = nil
@@ -365,10 +365,10 @@ module OpenstudioStandards
365
365
  end
366
366
  end
367
367
 
368
- envelope_data_hash[:building_overhang_proj_factor_n] = building_overhang_area_n / ext_surfaces_hash['northWindow']
369
- envelope_data_hash[:building_overhang_proj_factor_s] = building_overhang_area_s / ext_surfaces_hash['southWindow']
370
- envelope_data_hash[:building_overhang_proj_factor_e] = building_overhang_area_e / ext_surfaces_hash['eastWindow']
371
- envelope_data_hash[:building_overhang_proj_factor_w] = building_overhang_area_w / ext_surfaces_hash['westWindow']
368
+ envelope_data_hash[:building_overhang_proj_factor_n] = building_overhang_area_n / ext_surfaces_hash['north_window']
369
+ envelope_data_hash[:building_overhang_proj_factor_s] = building_overhang_area_s / ext_surfaces_hash['south_window']
370
+ envelope_data_hash[:building_overhang_proj_factor_e] = building_overhang_area_e / ext_surfaces_hash['east_window']
371
+ envelope_data_hash[:building_overhang_proj_factor_w] = building_overhang_area_w / ext_surfaces_hash['west_window']
372
372
 
373
373
  # warn for spaces that are not on a story (in future could infer stories for these)
374
374
  model.getSpaces.sort.each do |space|
@@ -390,7 +390,7 @@ module OpenstudioStandards
390
390
  bounding_length = envelope_data_hash[:building_max_xyz][0] - envelope_data_hash[:building_min_xyz][0]
391
391
  bounding_width = envelope_data_hash[:building_max_xyz][1] - envelope_data_hash[:building_min_xyz][1]
392
392
  bounding_area = bounding_length * bounding_width
393
- footprint_area = envelope_data_hash[:building_floor_area] / envelope_data_hash[:effective_num_stories].to_f
393
+ footprint_area = envelope_data_hash[:building_floor_area] / (envelope_data_hash[:effective_num_stories_above_grade]. + envelope_data_hash[:effective_num_stories_below_grade].to_f)
394
394
  area_multiplier = footprint_area / bounding_area
395
395
  edge_multiplier = Math.sqrt(area_multiplier)
396
396
  bar[:length] = bounding_length * edge_multiplier
@@ -408,7 +408,7 @@ module OpenstudioStandards
408
408
 
409
409
  bounding_length = envelope_data_hash[:building_max_xyz][0] - envelope_data_hash[:building_min_xyz][0]
410
410
  bounding_width = envelope_data_hash[:building_max_xyz][1] - envelope_data_hash[:building_min_xyz][1]
411
- footprint_area = envelope_data_hash[:building_floor_area] / envelope_data_hash[:effective_num_stories].to_f
411
+ footprint_area = envelope_data_hash[:building_floor_area] / (envelope_data_hash[:effective_num_stories_above_grade]. + envelope_data_hash[:effective_num_stories_below_grade].to_f)
412
412
 
413
413
  if bounding_length >= bounding_width
414
414
  bar[:length] = bounding_length
@@ -430,7 +430,7 @@ module OpenstudioStandards
430
430
 
431
431
  bounding_length = envelope_data_hash[:building_max_xyz][0] - envelope_data_hash[:building_min_xyz][0]
432
432
  bounding_width = envelope_data_hash[:building_max_xyz][1] - envelope_data_hash[:building_min_xyz][1]
433
- a = envelope_data_hash[:building_floor_area] / envelope_data_hash[:effective_num_stories].to_f
433
+ a = envelope_data_hash[:building_floor_area] / (envelope_data_hash[:effective_num_stories_above_grade]. + envelope_data_hash[:effective_num_stories_below_grade].to_f)
434
434
  p = envelope_data_hash[:building_perimeter]
435
435
 
436
436
  if bounding_length >= bounding_width
@@ -119,12 +119,19 @@ class Standard
119
119
 
120
120
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(full_htg_sens_eff)
121
121
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(full_htg_lat_eff)
122
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff)
123
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff)
124
122
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(full_cool_sens_eff)
125
123
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(full_cool_lat_eff)
126
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff)
127
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff)
124
+ if model.version < OpenStudio::VersionString.new('3.8.0')
125
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff)
126
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff)
127
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff)
128
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff)
129
+ else
130
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff) unless part_htg_sens_eff.zero?
131
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff) unless part_htg_lat_eff.zero?
132
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff) unless part_cool_sens_eff.zero?
133
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff) unless part_cool_lat_eff.zero?
134
+ end
128
135
 
129
136
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.HeatExchangerSensLat', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}: Set sensible and latent effectiveness calculated by using ERR.")
130
137
  return true
@@ -5173,16 +5173,18 @@ class Standard
5173
5173
  space.surfaces.each do |surface|
5174
5174
  if radiant_type == 'floor'
5175
5175
  if surface.surfaceType == 'Floor'
5176
- if surface.outsideBoundaryCondition == 'Ground'
5176
+ if surface.outsideBoundaryCondition.include? 'Ground'
5177
5177
  surface.setConstruction(radiant_ground_slab_construction)
5178
5178
  elsif surface.outsideBoundaryCondition == 'Outdoors'
5179
5179
  surface.setConstruction(radiant_exterior_slab_construction)
5180
5180
  else # interior floor
5181
5181
  surface.setConstruction(radiant_interior_floor_slab_construction)
5182
5182
 
5183
- # also assign construciton to adjacent surface
5184
- adjacent_surface = surface.adjacentSurface.get
5185
- adjacent_surface.setConstruction(rev_radiant_interior_floor_slab_construction)
5183
+ # also assign construction to adjacent surface
5184
+ if surface.adjacentSurface.is_initialized
5185
+ adjacent_surface = surface.adjacentSurface.get
5186
+ adjacent_surface.setConstruction(rev_radiant_interior_floor_slab_construction)
5187
+ end
5186
5188
  end
5187
5189
  end
5188
5190
  elsif radiant_type == 'ceiling'
@@ -5192,9 +5194,11 @@ class Standard
5192
5194
  else # interior ceiling
5193
5195
  surface.setConstruction(radiant_interior_ceiling_slab_construction)
5194
5196
 
5195
- # also assign construciton to adjacent surface
5196
- adjacent_surface = surface.adjacentSurface.get
5197
- adjacent_surface.setConstruction(rev_radiant_interior_ceiling_slab_construction)
5197
+ # also assign construction to adjacent surface
5198
+ if surface.adjacentSurface.is_initialized
5199
+ adjacent_surface = surface.adjacentSurface.get
5200
+ adjacent_surface.setConstruction(rev_radiant_interior_ceiling_slab_construction)
5201
+ end
5198
5202
  end
5199
5203
  end
5200
5204
  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
@@ -11,12 +11,19 @@ class Standard
11
11
 
12
12
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(full_htg_sens_eff)
13
13
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(full_htg_lat_eff)
14
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff)
15
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff)
16
14
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(full_cool_sens_eff)
17
15
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(full_cool_lat_eff)
18
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff)
19
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff)
16
+ if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
17
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff)
18
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff)
19
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff)
20
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff)
21
+ else
22
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(part_htg_sens_eff) unless part_htg_sens_eff.zero?
23
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(part_htg_lat_eff) unless part_htg_lat_eff.zero?
24
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(part_cool_sens_eff) unless part_cool_sens_eff.zero?
25
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(part_cool_lat_eff) unless part_cool_lat_eff.zero?
26
+ end
20
27
 
21
28
  OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.HeatExchangerSensLat', "For #{heat_exchanger_air_to_air_sensible_and_latent.name}: Set sensible and latent effectiveness.")
22
29
 
@@ -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))
@@ -808,12 +808,14 @@ class NRELZNEReady2017 < ASHRAE901
808
808
  if erv_type == 'HRV'
809
809
  erv.setSensibleEffectivenessat100HeatingAirFlow(0.865)
810
810
  erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
811
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.887)
812
- erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
813
811
  erv.setSensibleEffectivenessat100CoolingAirFlow(0.865)
814
812
  erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
813
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.887)
815
814
  erv.setSensibleEffectivenessat75CoolingAirFlow(0.887)
816
- erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
815
+ if erv.model.version < OpenStudio::VersionString.new('3.8.0')
816
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
817
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
818
+ end
817
819
  else
818
820
  erv.setSensibleEffectivenessat100HeatingAirFlow(0.755)
819
821
  erv.setLatentEffectivenessat100HeatingAirFlow(0.564)
@@ -829,11 +831,13 @@ class NRELZNEReady2017 < ASHRAE901
829
831
  erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
830
832
  erv.setLatentEffectivenessat100HeatingAirFlow(0.0)
831
833
  erv.setSensibleEffectivenessat75HeatingAirFlow(0.79)
832
- erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
833
834
  erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
834
835
  erv.setLatentEffectivenessat100CoolingAirFlow(0.0)
835
836
  erv.setSensibleEffectivenessat75CoolingAirFlow(0.78)
836
- erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
837
+ if erv.model.version < OpenStudio::VersionString.new('3.8.0')
838
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.0)
839
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.0)
840
+ end
837
841
  else
838
842
  erv.setSensibleEffectivenessat100HeatingAirFlow(0.75)
839
843
  erv.setLatentEffectivenessat100HeatingAirFlow(0.74)
@@ -344,20 +344,20 @@
344
344
  "name": "DEER Metal Framed Window",
345
345
  "intended_surface_type": "ExteriorWindow",
346
346
  "standards_construction_type": "Nonmetal framing (all)",
347
- "insulation_layer": "Simple Glazing",
347
+ "insulation_layer": null,
348
348
  "skylight_framing": null,
349
349
  "materials": [
350
- "Simple Glazing"
350
+ "Simple Glazing U 1.23 SHGC 0.61 VT 0.25"
351
351
  ]
352
352
  },
353
353
  {
354
354
  "name": "DEER Skylight",
355
355
  "intended_surface_type": "ExteriorWindow",
356
356
  "standards_construction_type": "Nonmetal framing (all)",
357
- "insulation_layer": "Simple Glazing",
357
+ "insulation_layer": null,
358
358
  "skylight_framing": null,
359
359
  "materials": [
360
- "Simple Glazing"
360
+ "Simple Glazing U 1.23 SHGC 0.61 VT 0.25"
361
361
  ]
362
362
  },
363
363
  {
@@ -383,12 +383,19 @@ class NECB2011
383
383
  heat_exchanger_air_to_air_sensible_and_latent.setHeatExchangerType(erv_info['HeatExchangerType'])
384
384
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100HeatingAirFlow(erv_info['SensibleEffectivenessat100HeatingAirFlow'])
385
385
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100HeatingAirFlow(erv_info['LatentEffectivenessat100HeatingAirFlow'])
386
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(erv_info['SensibleEffectivenessat75HeatingAirFlow'])
387
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(erv_info['LatentEffectivenessat75HeatingAirFlow'])
388
386
  heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat100CoolingAirFlow(erv_info['SensibleEffectivenessat100CoolingAirFlow'])
389
387
  heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat100CoolingAirFlow(erv_info['LatentEffectivenessat100CoolingAirFlow'])
390
- heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(erv_info['SensibleEffectivenessat75CoolingAirFlow'])
391
- heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(erv_info['LatentEffectivenessat75CoolingAirFlow'])
388
+ if heat_exchanger_air_to_air_sensible_and_latent.model.version < OpenStudio::VersionString.new('3.8.0')
389
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(erv_info['SensibleEffectivenessat75HeatingAirFlow'])
390
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(erv_info['LatentEffectivenessat75HeatingAirFlow'])
391
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(erv_info['SensibleEffectivenessat75CoolingAirFlow'])
392
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(erv_info['LatentEffectivenessat75CoolingAirFlow'])
393
+ else
394
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75HeatingAirFlow(erv_info['SensibleEffectivenessat75HeatingAirFlow']) unless erv_info['SensibleEffectivenessat75HeatingAirFlow'].zero?
395
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75HeatingAirFlow(erv_info['LatentEffectivenessat75HeatingAirFlow']) unless erv_info['LatentEffectivenessat75HeatingAirFlow'].zero?
396
+ heat_exchanger_air_to_air_sensible_and_latent.setSensibleEffectivenessat75CoolingAirFlow(erv_info['SensibleEffectivenessat75CoolingAirFlow']) unless erv_info['SensibleEffectivenessat75CoolingAirFlow'].zero?
397
+ heat_exchanger_air_to_air_sensible_and_latent.setLatentEffectivenessat75CoolingAirFlow(erv_info['LatentEffectivenessat75CoolingAirFlow']) unless erv_info['LatentEffectivenessat75CoolingAirFlow'].zero?
398
+ end
392
399
  heat_exchanger_air_to_air_sensible_and_latent.setSupplyAirOutletTemperatureControl(erv_info['SupplyAirOutletTemperatureControl'])
393
400
  heat_exchanger_air_to_air_sensible_and_latent.setFrostControlType(erv_info['FrostControlType'])
394
401
  heat_exchanger_air_to_air_sensible_and_latent.setEconomizerLockout(erv_info['EconomizerLockout'])
@@ -1816,19 +1823,19 @@ class NECB2011
1816
1823
  # Determine if space is heated or cooled via spacetype heating or cooling setpoints also checking if the space is
1817
1824
  # a plenum by checking if there is a hvac system associtated with it
1818
1825
  if sp_type_info['heating_setpoint_schedule'].nil?
1819
- heated = FALSE
1826
+ heated = false
1820
1827
  else
1821
- heated = TRUE
1828
+ heated = true
1822
1829
  end
1823
1830
  if sp_type_info['cooling_setpoint_schedule'].nil?
1824
- cooled = FALSE
1831
+ cooled = false
1825
1832
  else
1826
- cooled = TRUE
1833
+ cooled = true
1827
1834
  end
1828
1835
  if (sp_type_info['necb_hvac_system_selection_type'] == '- undefined -') || /undefined/.match(sp_type_info['necb_hvac_system_selection_type'])
1829
- not_plenum = FALSE
1836
+ not_plenum = false
1830
1837
  else
1831
- not_plenum = TRUE
1838
+ not_plenum = true
1832
1839
  end
1833
1840
  # If the spaces are heated or cooled and are not a plenum then continue
1834
1841
  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
@@ -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.exists? local_epw_file_path
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
@@ -13,5 +13,5 @@ module OpenstudioStandards
13
13
  end
14
14
  return 'git-not-found-on-this-system'
15
15
  end
16
- VERSION = '0.6.0.rc2'.freeze
16
+ VERSION = '0.6.1'.freeze
17
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.6.0.rc2
4
+ version: 0.6.1
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-04-19 00:00:00.000000000 Z
42
+ date: 2024-05-17 00:00:00.000000000 Z
43
43
  dependencies:
44
44
  - !ruby/object:Gem::Dependency
45
- name: minitest-reporters
45
+ name: bundler
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '='
48
+ - - "~>"
49
49
  - !ruby/object:Gem::Version
50
- version: 1.6.1
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: 1.6.1
57
+ version: 2.4.10
58
58
  - !ruby/object:Gem::Dependency
59
- name: minitest-parallel_fork
59
+ name: nokogiri
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - ">="
62
+ - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: '0'
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: '0'
71
+ version: '1.16'
72
72
  - !ruby/object:Gem::Dependency
73
- name: ruby-progressbar
73
+ name: parallel_tests
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - ">="
76
+ - - "~>"
77
77
  - !ruby/object:Gem::Version
78
- version: '0'
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: '0'
85
+ version: 3.7.0
86
86
  - !ruby/object:Gem::Dependency
87
- name: parallel_tests
87
+ name: aes
88
88
  requirement: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - "~>"
90
+ - - '='
91
91
  - !ruby/object:Gem::Version
92
- version: 3.7.0
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: 3.7.0
99
+ version: 0.5.0
100
100
  - !ruby/object:Gem::Dependency
101
- name: nokogiri
101
+ name: codecov
102
102
  requirement: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - "~>"
104
+ - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: '1.11'
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: '1.11'
113
+ version: '0'
114
114
  - !ruby/object:Gem::Dependency
115
- name: bundler
115
+ name: google_drive
116
116
  requirement: !ruby/object:Gem::Requirement
117
117
  requirements:
118
- - - "~>"
118
+ - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 2.1.4
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: 2.1.4
127
+ version: '0'
128
128
  - !ruby/object:Gem::Dependency
129
- name: rake
129
+ name: minitest
130
130
  requirement: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: 12.3.1
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: 12.3.1
141
+ version: 5.14.0
142
142
  - !ruby/object:Gem::Dependency
143
- name: yard
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.9'
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.9'
155
+ version: '0'
156
156
  - !ruby/object:Gem::Dependency
157
- name: rubocop
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.68.1
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.68.1
169
+ version: '0'
170
170
  - !ruby/object:Gem::Dependency
171
- name: rubocop-checkstyle_formatter
171
+ name: minitest-reporters
172
172
  requirement: !ruby/object:Gem::Requirement
173
173
  requirements:
174
174
  - - "~>"
175
175
  - !ruby/object:Gem::Version
176
- version: 0.1.1
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: 0.1.1
183
+ version: 1.4.2
184
184
  - !ruby/object:Gem::Dependency
185
- name: minitest-ci
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: 5.10.3
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: 5.10.3
197
+ version: '0'
198
198
  - !ruby/object:Gem::Dependency
199
- name: rubyXL
199
+ name: rake
200
200
  requirement: !ruby/object:Gem::Requirement
201
201
  requirements:
202
202
  - - "~>"
203
203
  - !ruby/object:Gem::Version
204
- version: '3.4'
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: '3.4'
211
+ version: '13.0'
212
212
  - !ruby/object:Gem::Dependency
213
- name: google_drive
213
+ name: rest-client
214
214
  requirement: !ruby/object:Gem::Requirement
215
215
  requirements:
216
- - - ">="
216
+ - - "~>"
217
217
  - !ruby/object:Gem::Version
218
- version: '0'
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: '0'
225
+ version: 2.0.2
226
226
  - !ruby/object:Gem::Dependency
227
- name: simplecov-html
227
+ name: roo
228
228
  requirement: !ruby/object:Gem::Requirement
229
229
  requirements:
230
- - - "<"
230
+ - - '='
231
231
  - !ruby/object:Gem::Version
232
- version: 0.11.0
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: 0.11.0
239
+ version: 2.7.1
240
240
  - !ruby/object:Gem::Dependency
241
- name: codecov
241
+ name: rubocop
242
242
  requirement: !ruby/object:Gem::Requirement
243
243
  requirements:
244
- - - ">="
244
+ - - '='
245
245
  - !ruby/object:Gem::Version
246
- version: '0'
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: '0'
253
+ version: '1.50'
254
254
  - !ruby/object:Gem::Dependency
255
- name: rest-client
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: 2.0.2
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: 2.0.2
267
+ version: 0.6.0
268
268
  - !ruby/object:Gem::Dependency
269
- name: aes
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.5.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.5.0
281
+ version: '0'
282
282
  - !ruby/object:Gem::Dependency
283
- name: roo
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: 2.7.1
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: 2.7.1
309
+ version: 0.22.0
296
310
  - !ruby/object:Gem::Dependency
297
- name: openstudio-api-stubs
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.1.4
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
@@ -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|