openstudio-geb 0.0.3r → 0.0.3
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.
- checksums.yaml +4 -4
- data/lib/measures/AdjustThermostatSetpointsByDegreesForPeakHours/measure.rb +1 -1
- data/lib/measures/add_chilled_water_storage_tank/measure.rb +2 -5
- data/lib/measures/reduce_epd_by_percentage_for_peak_hours/measure.rb +90 -89
- data/lib/openstudio/geb/version.rb +1 -1
- metadata +4 -5
- data/lib/measures/add_chilled_water_storage_tank/tests/restaurant.osm +0 -12189
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 347d9430484e0647ed589317e8c8324f250e08d4d6f95bcd17e3a66fa84237cd
|
4
|
+
data.tar.gz: bd0f0c3f362792e18e8bddba9dea2c4d2cf8310cf6759fa91b4f50af864d914a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01a593ed9e93044ee79e09dd8b98d697b7a609def6ba532cd37603e06dfef767b519730e443f946f52cffa2b357a0784dbf9ead1a47f5a00c665b5b61b6f9925
|
7
|
+
data.tar.gz: c2e3606e8c44287fe02e60caac0e6c57b4d0bdd82aa266d1701d47125bfeae7f869e55f89b0a8c65b88d530e634cc102118b38f6a32afe2e914d89d431d73ddb
|
@@ -673,7 +673,7 @@ class AdjustThermostatSetpointsByDegreesForPeakHours < OpenStudio::Measure::Mode
|
|
673
673
|
elsif vec_time[i]>time_begin && vec_time[i]<=time_end && count==1
|
674
674
|
sch_day.addValue(vec_time[i], vec_value[i])
|
675
675
|
elsif vec_time[i]>time_end && count == 1
|
676
|
-
sch_day.addValue(time_end, target_temp_si
|
676
|
+
sch_day.addValue(time_end, target_temp_si)
|
677
677
|
sch_day.addValue(vec_time[i], vec_value[i])
|
678
678
|
count = 2
|
679
679
|
else
|
@@ -49,7 +49,7 @@ class AddChilledWaterStorageTank < OpenStudio::Measure::ModelMeasure
|
|
49
49
|
loop_choices << loop.name.to_s
|
50
50
|
end
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
# Make choice argument for primary loop selection
|
54
54
|
selected_primary_loop_name = OpenStudio::Measure::OSArgument.makeChoiceArgument('selected_primary_loop_name', loop_choices, false)
|
55
55
|
selected_primary_loop_name.setDisplayName('Select Primary Loop:')
|
@@ -62,7 +62,6 @@ class AddChilledWaterStorageTank < OpenStudio::Measure::ModelMeasure
|
|
62
62
|
selected_primary_loop_name.setDefaultValue(pri_loop_name)
|
63
63
|
else
|
64
64
|
selected_primary_loop_name.setDescription('Error: No Cooling Loop Found')
|
65
|
-
selected_primary_loop_name.setDefaultValue("")
|
66
65
|
end
|
67
66
|
args << selected_primary_loop_name
|
68
67
|
|
@@ -189,9 +188,7 @@ class AddChilledWaterStorageTank < OpenStudio::Measure::ModelMeasure
|
|
189
188
|
# assign the user inputs to variables
|
190
189
|
objective = runner.getStringArgumentValue('objective', user_arguments)
|
191
190
|
selected_primary_loop_name = runner.getStringArgumentValue('selected_primary_loop_name', user_arguments)
|
192
|
-
|
193
|
-
# selected_primary_loop_name = runner.getStringArgumentValue('selected_primary_loop_name', user_arguments)
|
194
|
-
if !selected_primary_loop_name.empty?
|
191
|
+
if selected_primary_loop_name
|
195
192
|
# get the primary cooling loop
|
196
193
|
selected_primary_loop = model.getModelObjectByName(selected_primary_loop_name)
|
197
194
|
if selected_primary_loop.is_initialized
|
@@ -333,109 +333,110 @@ 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
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
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
|
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
|
346
341
|
end
|
347
342
|
equip.setSchedule(new_equip_sch)
|
348
|
-
runner.registerInfo("Schedule #{equip_sch.get.name} of electric equipment #{equip.name} will be altered by this measure.")
|
349
343
|
end
|
350
344
|
end
|
351
345
|
|
352
346
|
equip_schedules.each do |old_name, equip_sch|
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
runner.registerInfo("------------
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
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}")
|
390
|
-
|
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}.")
|
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}.")
|
395
372
|
end
|
396
373
|
current_index += 1
|
397
|
-
runner.registerInfo("--------------- schedule updated for #{rule_period2.startDate.get} to #{rule_period2.endDate.get}")
|
398
|
-
end
|
399
374
|
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
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}")
|
404
396
|
end
|
405
|
-
current_index += 1
|
406
|
-
runner.registerInfo("--------------- schedule updated for #{rule_period3.startDate.get} to #{rule_period3.endDate.get}")
|
407
|
-
end
|
408
397
|
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
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}")
|
405
|
+
end
|
413
406
|
|
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}.")
|
410
|
+
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.")
|
414
415
|
end
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
copy_sch_rule_for_period(model, new_default_rule, new_default_day, os_start_date3, os_end_date3)
|
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)
|
433
|
+
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)
|
436
|
+
end
|
437
|
+
|
438
438
|
end
|
439
|
+
|
439
440
|
end
|
440
441
|
|
441
442
|
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.
|
4
|
+
version: 0.0.3
|
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
|
+
date: 2022-10-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -166,7 +166,6 @@ 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
|
170
169
|
- lib/measures/add_electrochromic_window/LICENSE.md
|
171
170
|
- lib/measures/add_electrochromic_window/README.md
|
172
171
|
- lib/measures/add_electrochromic_window/README.md.erb
|
@@ -303,9 +302,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
303
302
|
version: '0'
|
304
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
305
304
|
requirements:
|
306
|
-
- - "
|
305
|
+
- - ">="
|
307
306
|
- !ruby/object:Gem::Version
|
308
|
-
version:
|
307
|
+
version: '0'
|
309
308
|
requirements: []
|
310
309
|
rubygems_version: 3.1.4
|
311
310
|
signing_key:
|