openstudio-geb 0.0.3r → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|