openstudio-geb 0.0.1 → 0.0.3r

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -0
  3. data/lib/measures/AdjustThermostatSetpointsByDegreesForPeakHours/measure.rb +1 -1
  4. data/lib/measures/add_chilled_water_storage_tank/measure.rb +167 -36
  5. data/lib/measures/add_chilled_water_storage_tank/tests/restaurant.osm +12189 -0
  6. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/LICENSE.md +0 -0
  7. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/README.md +0 -0
  8. data/lib/measures/{Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation → add_rooftop_pv_simple}/README.md.erb +0 -0
  9. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/measure.rb +0 -0
  10. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/measure.xml +0 -0
  11. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/tests/CZ06RV2.epw +0 -0
  12. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/tests/add_rooftop_pv_test.rb +0 -0
  13. data/lib/measures/{add_rooftop_pv → add_rooftop_pv_simple}/tests/pv_test_input.osm +0 -0
  14. data/lib/measures/average_ventilation_for_peak_hours/measure.rb +22 -11
  15. data/lib/measures/average_ventilation_for_peak_hours/tests/LargeOffice-90.1-2013-ASHRAE 169-2013-5A.osm +21863 -0
  16. data/lib/measures/reduce_epd_by_percentage_for_peak_hours/measure.rb +94 -95
  17. data/lib/openstudio/geb/utilities.rb +34 -6
  18. data/lib/openstudio/geb/version.rb +1 -1
  19. data/openstudio-geb.gemspec +1 -1
  20. metadata +15 -129
  21. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/files/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw +0 -8768
  22. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/files/USA_NY_Buffalo.Niagara.Intl.AP.725280_TMY3.epw +0 -8768
  23. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/LICENSE.md +0 -27
  24. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/README.md +0 -32
  25. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/measure.rb +0 -156
  26. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/measure.xml +0 -117
  27. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/tests/0320_ModelWithHVAC_01.osm +0 -22223
  28. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/tests/EnableDemandControlledVentilation_Test.rb +0 -123
  29. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/LICENSE.md +0 -27
  30. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/README.md +0 -136
  31. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/README.md.erb +0 -47
  32. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/measure.rb +0 -586
  33. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/measure.xml +0 -200
  34. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/EnvelopeAndLoadTestModel_01.osm +0 -14352
  35. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/EnvelopeAndLoadTestModel_01_Costed.osm +0 -14438
  36. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/HasSpaceWithNoLightsOrElec.osm +0 -16531
  37. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/ReplaceElectricEquipmentWithEPD_Test.rb +0 -592
  38. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/out.osw +0 -68
  39. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/reports/eplustbl.html +0 -27183
  40. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/data_point.zip +0 -0
  41. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/data_point_out.json +0 -6
  42. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.audit +0 -49
  43. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.bnd +0 -1103
  44. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.eio +0 -630
  45. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.end +0 -1
  46. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.err +0 -331
  47. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.eso +0 -158559
  48. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.mdd +0 -336
  49. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.mtd +0 -2519
  50. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.rdd +0 -638
  51. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.shd +0 -902
  52. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusout.sql +0 -0
  53. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplusssz.csv +0 -147
  54. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/eplustbl.htm +0 -27183
  55. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/epluszsz.csv +0 -148
  56. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/finished.job +0 -1
  57. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/in.idf +0 -10384
  58. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/in.osm +0 -13809
  59. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/measure_attributes.json +0 -6
  60. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/objectives.json +0 -2
  61. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/pre-preprocess.idf +0 -10134
  62. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/results.json +0 -6
  63. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/run.log +0 -0
  64. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/sqlite.err +0 -1
  65. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/started.job +0 -1
  66. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/stdout-energyplus +0 -271
  67. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/run/stdout-expandobject +0 -3
  68. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/stderr +0 -0
  69. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/stdout +0 -0
  70. data/lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE 169-2013-5A_dcv/workflow.osw +0 -19
  71. data/lib/measures/add_rooftop_pv/README.md.erb +0 -42
  72. data/lib/measures/average_ventilation_for_peak_hours/tests/example_model.osm +0 -8077
@@ -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
@@ -1,4 +1,4 @@
1
- require 'nokogiri'
1
+ # require 'oga'
2
2
  require 'json'
3
3
 
4
4
  # load openstudio model
@@ -25,25 +25,53 @@ def list_all_geb_measures
25
25
  measure_list = {}
26
26
 
27
27
  # get the absolute path of measures folder
28
- measures_path = File.expand_path("../../../measures/", __FILE__ )
28
+ measures_dir = File.expand_path("../../../measures/", __FILE__ )
29
+
30
+ # use partial codes from function list_measures in OS Extension Runner to get the list of measures
31
+ # this is a temporary solution for the geb gem to be adopted by URBANopt workflow due to gem complexity
32
+ # (previously use nokogiri/oga as dependency and it didn't work in the integration process)
33
+ if measures_dir.nil? || measures_dir.empty?
34
+ puts 'Measures dir is nil or empty'
35
+ return true
36
+ end
37
+
38
+ # this is to accommodate a single measures dir (like most gems)
39
+ # or a repo with multiple directories fo measures (like OpenStudio-measures)
40
+ measures = Dir.glob(File.join(measures_dir, '**/measure.rb'))
41
+ if measures.empty?
42
+ # also try nested 2-deep to support openstudio-measures
43
+ measures = Dir.glob(File.join(measures_dir, '**/**/measure.rb'))
44
+ end
45
+ puts "#{measures.length} MEASURES FOUND"
46
+ puts measures.inspect
47
+ measures.each do |measure|
48
+ measure_name = measure.split('/')[-2]
49
+ measure_list[measure_name] = {}
50
+ measure_list[measure_name]['measure_dir_name'] = File.dirname(measure)
51
+ end
52
+
53
+ =begin
29
54
  measure_folders_name = Dir.entries(measures_path).select {|entry| File.directory? File.join(measures_path,entry) and !(entry =='.' || entry == '..') }
30
55
  measure_folders_name.each do |measure_folder|
31
56
  # read the measure.xml file, get measure's metadata
32
57
  measure_xml = File.join(measures_path,measure_folder,'measure.xml')
33
- data = File.open(measure_xml) { |f| Nokogiri::XML(f) }
58
+ handle = File.open(measure_xml)
59
+ data = Oga.parse_xml(handle)
60
+
34
61
  # get measure's display name
35
- measure_name = data.xpath("//display_name").first.content
62
+ measure_name = data.xpath("//display_name").first.text
36
63
  # get measure's ruby class name
37
- class_name = data.xpath("//class_name").first.content
64
+ class_name = data.xpath("//class_name").first.text
38
65
  # get parameter name list
39
66
  para_names = []
40
- data.xpath("measure//arguments//argument//name").each{|ele| para_names << ele.content}
67
+ data.xpath("measure//arguments//argument//name").each{|ele| para_names << ele.text}
41
68
  measure_list[measure_name] = {}
42
69
  measure_list[measure_name]['measure_dir_name'] = File.join(measures_path, measure_folder)
43
70
  measure_list[measure_name]['class_name'] = class_name
44
71
  measure_list[measure_name]['para_names'] = para_names
45
72
  # puts JSON.pretty_generate(measure_list)
46
73
  end
74
+ =end
47
75
 
48
76
  return measure_list
49
77
  end
@@ -35,6 +35,6 @@
35
35
 
36
36
  module OpenStudio
37
37
  module Geb
38
- VERSION = '0.0.1'.freeze
38
+ VERSION = '0.0.3r'.freeze
39
39
  end
40
40
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'rake', '~> 13.0'
27
27
  spec.add_development_dependency 'rspec', '3.7.0'
28
28
  spec.add_development_dependency 'rubocop', '~> 1.15.0'
29
- spec.add_dependency 'nokogiri', '~>1.10'
29
+ # spec.add_development_dependency 'oga', '~>3.4'
30
30
 
31
31
  spec.add_dependency 'openstudio-extension', '~> 0.5.1'
32
32
  spec.add_dependency 'openstudio-standards', '~> 0.2.9'
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.1
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-11 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
@@ -67,20 +67,6 @@ dependencies:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.15.0
70
- - !ruby/object:Gem::Dependency
71
- name: nokogiri
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '1.10'
77
- type: :runtime
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '1.10'
84
70
  - !ruby/object:Gem::Dependency
85
71
  name: openstudio-extension
86
72
  requirement: !ruby/object:Gem::Requirement
@@ -159,108 +145,6 @@ files:
159
145
  - lib/measures/Enable Demand Controlled Ventilation/tests/EnableDemandControlledVentilation_Test.rb
160
146
  - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
161
147
  169-2013-5A_dcv.osm
162
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
163
- 169-2013-5A_dcv/files/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw
164
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
165
- 169-2013-5A_dcv/files/USA_NY_Buffalo.Niagara.Intl.AP.725280_TMY3.epw
166
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
167
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/LICENSE.md
168
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
169
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/README.md
170
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
171
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/README.md.erb
172
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
173
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/measure.rb
174
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
175
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/measure.xml
176
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
177
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/tests/0320_ModelWithHVAC_01.osm
178
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
179
- 169-2013-5A_dcv/measures/Enable Demand Controlled Ventilation/tests/EnableDemandControlledVentilation_Test.rb
180
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
181
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/LICENSE.md
182
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
183
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/README.md
184
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
185
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/README.md.erb
186
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
187
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/measure.rb
188
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
189
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/measure.xml
190
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
191
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/EnvelopeAndLoadTestModel_01.osm
192
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
193
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/EnvelopeAndLoadTestModel_01_Costed.osm
194
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
195
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/HasSpaceWithNoLightsOrElec.osm
196
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
197
- 169-2013-5A_dcv/measures/Set Electric Equipment loads by EPD/tests/ReplaceElectricEquipmentWithEPD_Test.rb
198
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
199
- 169-2013-5A_dcv/out.osw
200
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
201
- 169-2013-5A_dcv/reports/eplustbl.html
202
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
203
- 169-2013-5A_dcv/run/data_point.zip
204
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
205
- 169-2013-5A_dcv/run/data_point_out.json
206
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
207
- 169-2013-5A_dcv/run/eplusout.audit
208
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
209
- 169-2013-5A_dcv/run/eplusout.bnd
210
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
211
- 169-2013-5A_dcv/run/eplusout.eio
212
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
213
- 169-2013-5A_dcv/run/eplusout.end
214
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
215
- 169-2013-5A_dcv/run/eplusout.err
216
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
217
- 169-2013-5A_dcv/run/eplusout.eso
218
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
219
- 169-2013-5A_dcv/run/eplusout.mdd
220
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
221
- 169-2013-5A_dcv/run/eplusout.mtd
222
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
223
- 169-2013-5A_dcv/run/eplusout.rdd
224
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
225
- 169-2013-5A_dcv/run/eplusout.shd
226
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
227
- 169-2013-5A_dcv/run/eplusout.sql
228
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
229
- 169-2013-5A_dcv/run/eplusssz.csv
230
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
231
- 169-2013-5A_dcv/run/eplustbl.htm
232
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
233
- 169-2013-5A_dcv/run/epluszsz.csv
234
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
235
- 169-2013-5A_dcv/run/finished.job
236
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
237
- 169-2013-5A_dcv/run/in.idf
238
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
239
- 169-2013-5A_dcv/run/in.osm
240
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
241
- 169-2013-5A_dcv/run/measure_attributes.json
242
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
243
- 169-2013-5A_dcv/run/objectives.json
244
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
245
- 169-2013-5A_dcv/run/pre-preprocess.idf
246
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
247
- 169-2013-5A_dcv/run/results.json
248
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
249
- 169-2013-5A_dcv/run/run.log
250
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
251
- 169-2013-5A_dcv/run/sqlite.err
252
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
253
- 169-2013-5A_dcv/run/started.job
254
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
255
- 169-2013-5A_dcv/run/stdout-energyplus
256
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
257
- 169-2013-5A_dcv/run/stdout-expandobject
258
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
259
- 169-2013-5A_dcv/stderr
260
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
261
- 169-2013-5A_dcv/stdout
262
- - lib/measures/Enable Demand Controlled Ventilation/tests/MediumOffice-90.1-2010-ASHRAE
263
- 169-2013-5A_dcv/workflow.osw
264
148
  - lib/measures/GEB Metrics Report/LICENSE.md
265
149
  - lib/measures/GEB Metrics Report/README.md
266
150
  - lib/measures/GEB Metrics Report/README.md.erb
@@ -282,6 +166,7 @@ files:
282
166
  - lib/measures/add_chilled_water_storage_tank/tests/CZ06RV2.epw
283
167
  - lib/measures/add_chilled_water_storage_tank/tests/add_chilled_water_storage_tank_test.rb
284
168
  - lib/measures/add_chilled_water_storage_tank/tests/example_model.osm
169
+ - lib/measures/add_chilled_water_storage_tank/tests/restaurant.osm
285
170
  - lib/measures/add_electrochromic_window/LICENSE.md
286
171
  - lib/measures/add_electrochromic_window/README.md
287
172
  - lib/measures/add_electrochromic_window/README.md.erb
@@ -320,14 +205,14 @@ files:
320
205
  - lib/measures/add_interior_blinds_and_control/measure.xml
321
206
  - lib/measures/add_interior_blinds_and_control/tests/add_exterior_blinds_and_control_test.rb
322
207
  - lib/measures/add_interior_blinds_and_control/tests/example_model.osm
323
- - lib/measures/add_rooftop_pv/LICENSE.md
324
- - lib/measures/add_rooftop_pv/README.md
325
- - lib/measures/add_rooftop_pv/README.md.erb
326
- - lib/measures/add_rooftop_pv/measure.rb
327
- - lib/measures/add_rooftop_pv/measure.xml
328
- - lib/measures/add_rooftop_pv/tests/CZ06RV2.epw
329
- - lib/measures/add_rooftop_pv/tests/add_rooftop_pv_test.rb
330
- - lib/measures/add_rooftop_pv/tests/pv_test_input.osm
208
+ - lib/measures/add_rooftop_pv_simple/LICENSE.md
209
+ - lib/measures/add_rooftop_pv_simple/README.md
210
+ - lib/measures/add_rooftop_pv_simple/README.md.erb
211
+ - lib/measures/add_rooftop_pv_simple/measure.rb
212
+ - lib/measures/add_rooftop_pv_simple/measure.xml
213
+ - lib/measures/add_rooftop_pv_simple/tests/CZ06RV2.epw
214
+ - lib/measures/add_rooftop_pv_simple/tests/add_rooftop_pv_test.rb
215
+ - lib/measures/add_rooftop_pv_simple/tests/pv_test_input.osm
331
216
  - lib/measures/adjust_dhw_setpoint/LICENSE.md
332
217
  - lib/measures/adjust_dhw_setpoint/README.md
333
218
  - lib/measures/adjust_dhw_setpoint/README.md.erb
@@ -345,8 +230,9 @@ files:
345
230
  - lib/measures/average_ventilation_for_peak_hours/README.md.erb
346
231
  - lib/measures/average_ventilation_for_peak_hours/measure.rb
347
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
348
235
  - lib/measures/average_ventilation_for_peak_hours/tests/average_ventilation_for_peak_hours_test.rb
349
- - lib/measures/average_ventilation_for_peak_hours/tests/example_model.osm
350
236
  - lib/measures/enable_occupancy_driven_lighting/LICENSE.md
351
237
  - lib/measures/enable_occupancy_driven_lighting/README.md
352
238
  - lib/measures/enable_occupancy_driven_lighting/README.md.erb
@@ -417,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
417
303
  version: '0'
418
304
  required_rubygems_version: !ruby/object:Gem::Requirement
419
305
  requirements:
420
- - - ">="
306
+ - - ">"
421
307
  - !ruby/object:Gem::Version
422
- version: '0'
308
+ version: 1.3.1
423
309
  requirements: []
424
310
  rubygems_version: 3.1.4
425
311
  signing_key: