openstudio-geb 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.3'.freeze
38
+ VERSION = '0.1.0'.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.3
4
+ version: 0.1.0
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-21 00:00:00.000000000 Z
12
+ date: 2022-10-25 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