openstudio-geb 0.0.3 → 0.1.0

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