openstudio-standards 0.6.0.rc2 → 0.6.1

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