openstudio-geb 0.0.2 → 0.0.3r

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.
@@ -51,14 +51,14 @@ class ReduceEPDByPercentageForPeakHours < OpenStudio::Measure::ModelMeasure
51
51
  start_date1 = OpenStudio::Ruleset::OSArgument.makeStringArgument('start_date1', false)
52
52
  start_date1.setDisplayName('First start date for the Reduction')
53
53
  start_date1.setDescription('In MM-DD format')
54
- start_date1.setDefaultValue('03-01')
54
+ start_date1.setDefaultValue('07-01')
55
55
  args << start_date1
56
56
 
57
57
  # make an argument for the end date of the reduction
58
58
  end_date1 = OpenStudio::Ruleset::OSArgument.makeStringArgument('end_date1', false)
59
59
  end_date1.setDisplayName('First end date for the Reduction')
60
60
  end_date1.setDescription('In MM-DD format')
61
- end_date1.setDefaultValue('05-01')
61
+ end_date1.setDefaultValue('08-31')
62
62
  args << end_date1
63
63
 
64
64
 
@@ -71,21 +71,21 @@ class ReduceEPDByPercentageForPeakHours < OpenStudio::Measure::ModelMeasure
71
71
 
72
72
  # make an argument for the second end date of the reduction
73
73
  end_date2 = OpenStudio::Ruleset::OSArgument.makeStringArgument('end_date2', false)
74
- end_date2.setDisplayName('Second end date for the Reduction')
74
+ end_date2.setDisplayName('Second end date for the Reduction (optional)')
75
75
  end_date2.setDescription('Specify a date in MM-DD format if you want a second period of reduction; leave blank if not needed. If either the start or end date is blank, the period is considered not used.')
76
76
  end_date2.setDefaultValue('')
77
77
  args << end_date2
78
78
 
79
79
  # make an argument for the third start date of the reduction
80
80
  start_date3 = OpenStudio::Ruleset::OSArgument.makeStringArgument('start_date3', false)
81
- start_date3.setDisplayName('Second start date for the Reduction (optional)')
81
+ start_date3.setDisplayName('Third start date for the Reduction (optional)')
82
82
  start_date3.setDescription('Specify a date in MM-DD format if you want a third period of reduction; leave blank if not needed.')
83
83
  start_date3.setDefaultValue('')
84
84
  args << start_date3
85
85
 
86
86
  # make an argument for the third end date of the reduction
87
87
  end_date3 = OpenStudio::Ruleset::OSArgument.makeStringArgument('end_date3', false)
88
- end_date3.setDisplayName('Second end date for the Reduction')
88
+ end_date3.setDisplayName('Third end date for the Reduction')
89
89
  end_date3.setDescription('Specify a date in MM-DD format if you want a third period of reduction; leave blank if not needed. If either the start or end date is blank, the period is considered not used.')
90
90
  end_date3.setDefaultValue('')
91
91
  args << end_date3
@@ -333,110 +333,109 @@ class ReduceEPDByPercentageForPeakHours < OpenStudio::Measure::ModelMeasure
333
333
  if equip_schedules.key?(equip_sch.get.name.to_s)
334
334
  new_equip_sch = equip_schedules[equip_sch.get.name.to_s]
335
335
  else
336
- new_equip_sch = equip_sch.get.clone(model)
337
- new_equip_sch = new_equip_sch.to_Schedule.get
338
- new_equip_sch.setName("#{equip_sch.get.name.to_s} adjusted #{epd_factor}")
339
- # add to the hash
340
- equip_schedules[equip_sch.get.name.to_s] = new_equip_sch
336
+ if equip_sch.get.to_ScheduleRuleset.empty?
337
+ runner.registerWarning("Schedule #{equip_sch.get.name} isn't a ScheduleRuleset object and won't be altered by this measure.")
338
+ next
339
+ else
340
+ new_equip_sch = equip_sch.get.clone(model)
341
+ new_equip_sch = new_equip_sch.to_Schedule.get
342
+ new_equip_sch.setName("#{equip_sch.get.name.to_s} adjusted #{epd_factor}")
343
+ # add to the hash
344
+ equip_schedules[equip_sch.get.name.to_s] = new_equip_sch
345
+ end
341
346
  end
342
347
  equip.setSchedule(new_equip_sch)
348
+ runner.registerInfo("Schedule #{equip_sch.get.name} of electric equipment #{equip.name} will be altered by this measure.")
343
349
  end
344
350
  end
345
351
 
346
352
  equip_schedules.each do |old_name, equip_sch|
347
- if equip_sch.to_ScheduleRuleset.empty?
348
- runner.registerWarning("Schedule #{old_name} isn't a ScheduleRuleset object and won't be altered by this measure.")
349
- equip_sch.remove # remove un-used cloned schedule
350
- else
351
- schedule_set = equip_sch.to_ScheduleRuleset.get
352
- default_rule = schedule_set.defaultDaySchedule
353
- rules = schedule_set.scheduleRules
354
- days_covered = Array.new(7, false)
355
- original_rule_number = rules.length
356
- if original_rule_number > 0
357
- runner.registerInfo("------------ schedule rule set #{old_name} has #{original_rule_number} rules.")
358
- current_index = 0
359
- # rules are in order of priority
360
- rules.each do |rule|
361
- runner.registerInfo("------------ Rule #{rule.ruleIndex}: #{rule.daySchedule.name.to_s}")
362
- rule_period1 = rule.clone(model).to_ScheduleRule.get # OpenStudio::Model::ScheduleRule.new(schedule_set, rule.daySchedule)
363
- rule_period1.setStartDate(os_start_date1)
364
- rule_period1.setEndDate(os_end_date1)
365
- checkDaysCovered(rule_period1, days_covered)
366
- runner.registerInfo("--------------- current days of week coverage: #{days_covered}")
367
-
368
- # set the order of the new cloned schedule rule, to make sure the modified rule has a higher priority than the original one
369
- # and different copies keep the same priority as their original orders
370
- unless schedule_set.setScheduleRuleIndex(rule_period1, current_index)
371
- runner.registerError("Fail to set rule index for #{day_rule_period1.name.to_s}.")
372
- end
373
- current_index += 1
374
-
375
- day_rule_period1 = rule_period1.daySchedule
376
- day_time_vector1 = day_rule_period1.times
377
- day_value_vector1 = day_rule_period1.values
378
- runner.registerInfo(" ------------ time: #{day_time_vector1.map {|os_time| os_time.toString}}")
379
- runner.registerInfo(" ------------ values: #{day_value_vector1}")
380
- unless day_value_vector1.empty?
381
- applicable = true
382
- end
383
- day_rule_period1.clearValues
384
- day_rule_period1 = updateDaySchedule(day_rule_period1, day_time_vector1, day_value_vector1, shift_time1, shift_time2, epd_factor)
385
- runner.registerInfo(" ------------ updated time: #{day_rule_period1.times.map {|os_time| os_time.toString}}")
386
- runner.registerInfo(" ------------ updated values: #{day_rule_period1.values}")
387
- runner.registerInfo("--------------- schedule updated for #{rule_period1.startDate.get} to #{rule_period1.endDate.get}")
388
-
389
- if os_start_date2 and os_end_date2
390
- rule_period2 = copy_sch_rule_for_period(model, rule_period1, rule_period1.daySchedule, os_start_date2, os_end_date2)
391
- unless schedule_set.setScheduleRuleIndex(rule_period2, 0)
392
- runner.registerError("Fail to set rule index for #{rule_period2.daySchedule.name.to_s}.")
393
- end
394
- current_index += 1
395
- runner.registerInfo("--------------- schedule updated for #{rule_period2.startDate.get} to #{rule_period2.endDate.get}")
396
- end
353
+ schedule_set = equip_sch.to_ScheduleRuleset.get
354
+ default_rule = schedule_set.defaultDaySchedule
355
+ rules = schedule_set.scheduleRules
356
+ days_covered = Array.new(7, false)
357
+ original_rule_number = rules.length
358
+ if original_rule_number > 0
359
+ runner.registerInfo("------------ schedule rule set #{old_name} has #{original_rule_number} rules.")
360
+ current_index = 0
361
+ # rules are in order of priority
362
+ rules.each do |rule|
363
+ runner.registerInfo("------------ Rule #{rule.ruleIndex}: #{rule.daySchedule.name.to_s}")
364
+ rule_period1 = rule.clone(model).to_ScheduleRule.get # OpenStudio::Model::ScheduleRule.new(schedule_set, rule.daySchedule)
365
+ rule_period1.setStartDate(os_start_date1)
366
+ rule_period1.setEndDate(os_end_date1)
367
+ checkDaysCovered(rule_period1, days_covered)
368
+ runner.registerInfo("--------------- current days of week coverage: #{days_covered}")
369
+
370
+ # set the order of the new cloned schedule rule, to make sure the modified rule has a higher priority than the original one
371
+ # and different copies keep the same priority as their original orders
372
+ unless schedule_set.setScheduleRuleIndex(rule_period1, current_index)
373
+ runner.registerError("Fail to set rule index for #{day_rule_period1.name.to_s}.")
374
+ end
375
+ current_index += 1
376
+
377
+ day_rule_period1 = rule_period1.daySchedule
378
+ day_time_vector1 = day_rule_period1.times
379
+ day_value_vector1 = day_rule_period1.values
380
+ runner.registerInfo(" ------------ time: #{day_time_vector1.map {|os_time| os_time.toString}}")
381
+ runner.registerInfo(" ------------ values: #{day_value_vector1}")
382
+ unless day_value_vector1.empty?
383
+ applicable = true
384
+ end
385
+ day_rule_period1.clearValues
386
+ day_rule_period1 = updateDaySchedule(day_rule_period1, day_time_vector1, day_value_vector1, shift_time1, shift_time2, epd_factor)
387
+ runner.registerInfo(" ------------ updated time: #{day_rule_period1.times.map {|os_time| os_time.toString}}")
388
+ runner.registerInfo(" ------------ updated values: #{day_rule_period1.values}")
389
+ runner.registerInfo("--------------- schedule updated for #{rule_period1.startDate.get} to #{rule_period1.endDate.get}")
397
390
 
398
- if os_start_date3 and os_end_date3
399
- rule_period3 = copy_sch_rule_for_period(model, rule_period1, rule_period1.daySchedule, os_start_date3, os_end_date3)
400
- unless schedule_set.setScheduleRuleIndex(rule_period3, 0)
401
- runner.registerError("Fail to set rule index for #{rule_period3.daySchedule.name.to_s}.")
402
- end
403
- current_index += 1
404
- runner.registerInfo("--------------- schedule updated for #{rule_period3.startDate.get} to #{rule_period3.endDate.get}")
391
+ if os_start_date2 and os_end_date2
392
+ rule_period2 = copy_sch_rule_for_period(model, rule_period1, rule_period1.daySchedule, os_start_date2, os_end_date2)
393
+ unless schedule_set.setScheduleRuleIndex(rule_period2, 0)
394
+ runner.registerError("Fail to set rule index for #{rule_period2.daySchedule.name.to_s}.")
405
395
  end
396
+ current_index += 1
397
+ runner.registerInfo("--------------- schedule updated for #{rule_period2.startDate.get} to #{rule_period2.endDate.get}")
398
+ end
406
399
 
407
- # The original rule will be shifted to have the currently lowest priority
408
- unless schedule_set.setScheduleRuleIndex(rule, original_rule_number + current_index - 1)
409
- runner.registerError("Fail to set rule index for #{rule.daySchedule.name.to_s}.")
400
+ if os_start_date3 and os_end_date3
401
+ rule_period3 = copy_sch_rule_for_period(model, rule_period1, rule_period1.daySchedule, os_start_date3, os_end_date3)
402
+ unless schedule_set.setScheduleRuleIndex(rule_period3, 0)
403
+ runner.registerError("Fail to set rule index for #{rule_period3.daySchedule.name.to_s}.")
410
404
  end
411
-
412
- end
413
- else
414
- runner.registerWarning("Electric equipment schedule #{old_name} is a ScheduleRuleSet, but has no ScheduleRules associated. It won't be altered by this measure.")
415
- end
416
- if days_covered.include?(false)
417
- new_default_rule = OpenStudio::Model::ScheduleRule.new(schedule_set)
418
- new_default_rule.setStartDate(os_start_date1)
419
- new_default_rule.setEndDate(os_end_date1)
420
- coverMissingDays(new_default_rule, days_covered)
421
- checkDaysCovered(new_default_rule, days_covered)
422
-
423
- cloned_default_day = default_rule.clone(model)
424
- cloned_default_day.setParent(new_default_rule)
425
-
426
- new_default_day = new_default_rule.daySchedule
427
- day_time_vector = new_default_day.times
428
- day_value_vector = new_default_day.values
429
- new_default_day.clearValues
430
- new_default_day = updateDaySchedule(new_default_day, day_time_vector, day_value_vector, shift_time1, shift_time2, epd_factor)
431
- if os_start_date2 and os_end_date2
432
- copy_sch_rule_for_period(model, new_default_rule, new_default_day, os_start_date2, os_end_date2)
405
+ current_index += 1
406
+ runner.registerInfo("--------------- schedule updated for #{rule_period3.startDate.get} to #{rule_period3.endDate.get}")
433
407
  end
434
- if os_start_date3 and os_end_date3
435
- copy_sch_rule_for_period(model, new_default_rule, new_default_day, os_start_date3, os_end_date3)
408
+
409
+ # The original rule will be shifted to have the currently lowest priority
410
+ unless schedule_set.setScheduleRuleIndex(rule, original_rule_number + current_index - 1)
411
+ runner.registerError("Fail to set rule index for #{rule.daySchedule.name.to_s}.")
436
412
  end
437
413
 
438
414
  end
439
-
415
+ else
416
+ runner.registerWarning("Electric equipment schedule #{old_name} is a ScheduleRuleSet, but has no ScheduleRules associated. It won't be altered by this measure.")
417
+ end
418
+ if days_covered.include?(false)
419
+ new_default_rule = OpenStudio::Model::ScheduleRule.new(schedule_set)
420
+ new_default_rule.setStartDate(os_start_date1)
421
+ new_default_rule.setEndDate(os_end_date1)
422
+ coverMissingDays(new_default_rule, days_covered)
423
+ checkDaysCovered(new_default_rule, days_covered)
424
+
425
+ cloned_default_day = default_rule.clone(model)
426
+ cloned_default_day.setParent(new_default_rule)
427
+
428
+ new_default_day = new_default_rule.daySchedule
429
+ day_time_vector = new_default_day.times
430
+ day_value_vector = new_default_day.values
431
+ new_default_day.clearValues
432
+ new_default_day = updateDaySchedule(new_default_day, day_time_vector, day_value_vector, shift_time1, shift_time2, epd_factor)
433
+ if os_start_date2 and os_end_date2
434
+ copy_sch_rule_for_period(model, new_default_rule, new_default_day, os_start_date2, os_end_date2)
435
+ end
436
+ if os_start_date3 and os_end_date3
437
+ copy_sch_rule_for_period(model, new_default_rule, new_default_day, os_start_date3, os_end_date3)
438
+ end
440
439
  end
441
440
 
442
441
  end
@@ -35,6 +35,6 @@
35
35
 
36
36
  module OpenStudio
37
37
  module Geb
38
- VERSION = '0.0.2'.freeze
38
+ VERSION = '0.0.3r'.freeze
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-geb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3r
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaiyu Sun
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-10-12 00:00:00.000000000 Z
12
+ date: 2022-10-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -166,6 +166,7 @@ files:
166
166
  - lib/measures/add_chilled_water_storage_tank/tests/CZ06RV2.epw
167
167
  - lib/measures/add_chilled_water_storage_tank/tests/add_chilled_water_storage_tank_test.rb
168
168
  - lib/measures/add_chilled_water_storage_tank/tests/example_model.osm
169
+ - lib/measures/add_chilled_water_storage_tank/tests/restaurant.osm
169
170
  - lib/measures/add_electrochromic_window/LICENSE.md
170
171
  - lib/measures/add_electrochromic_window/README.md
171
172
  - lib/measures/add_electrochromic_window/README.md.erb
@@ -229,8 +230,9 @@ files:
229
230
  - lib/measures/average_ventilation_for_peak_hours/README.md.erb
230
231
  - lib/measures/average_ventilation_for_peak_hours/measure.rb
231
232
  - lib/measures/average_ventilation_for_peak_hours/measure.xml
233
+ - lib/measures/average_ventilation_for_peak_hours/tests/LargeOffice-90.1-2013-ASHRAE
234
+ 169-2013-5A.osm
232
235
  - lib/measures/average_ventilation_for_peak_hours/tests/average_ventilation_for_peak_hours_test.rb
233
- - lib/measures/average_ventilation_for_peak_hours/tests/example_model.osm
234
236
  - lib/measures/enable_occupancy_driven_lighting/LICENSE.md
235
237
  - lib/measures/enable_occupancy_driven_lighting/README.md
236
238
  - lib/measures/enable_occupancy_driven_lighting/README.md.erb
@@ -301,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
301
303
  version: '0'
302
304
  required_rubygems_version: !ruby/object:Gem::Requirement
303
305
  requirements:
304
- - - ">="
306
+ - - ">"
305
307
  - !ruby/object:Gem::Version
306
- version: '0'
308
+ version: 1.3.1
307
309
  requirements: []
308
310
  rubygems_version: 3.1.4
309
311
  signing_key: