openstudio-load-flexibility-measures 0.8.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/Gemfile +1 -20
  4. data/Jenkinsfile +2 -3
  5. data/LICENSE.md +1 -1
  6. data/README.md +2 -0
  7. data/lib/measures/PeakPeriodSchedulesShift/LICENSE.md +13 -0
  8. data/lib/measures/PeakPeriodSchedulesShift/README.md +140 -0
  9. data/lib/measures/PeakPeriodSchedulesShift/README.md.erb +106 -0
  10. data/lib/measures/PeakPeriodSchedulesShift/docs/measures-overview.png +0 -0
  11. data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples1.png +0 -0
  12. data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples2.png +0 -0
  13. data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples3.png +0 -0
  14. data/lib/measures/PeakPeriodSchedulesShift/measure.rb +441 -0
  15. data/lib/measures/PeakPeriodSchedulesShift/measure.xml +230 -0
  16. data/lib/measures/PeakPeriodSchedulesShift/tests/PeakPeriodSchedulesShift_Test.rb +603 -0
  17. data/lib/measures/PeakPeriodSchedulesShift/tests/base-schedules-detailed-occupancy-stochastic.osm +8306 -0
  18. data/lib/measures/PeakPeriodSchedulesShift/tests/base.osm +15647 -0
  19. data/lib/measures/PeakPeriodSchedulesShift/tests/files/schedules20230418-20180-18nykxu.csv +8761 -0
  20. data/lib/measures/PeakPeriodSchedulesShift/tests/files/unmodified_schedules.csv +8761 -0
  21. data/lib/measures/PeakPeriodSchedulesShift/tests/test_smooth_schedules.osm +23698 -0
  22. data/lib/measures/PeakPeriodSchedulesShift/tests/test_stochastic_schedules.osm +8985 -0
  23. data/lib/measures/PeakPeriodSchedulesShift/tests/test_stochastic_schedules_no_stacking.osm +8306 -0
  24. data/lib/measures/ShiftScheduleByType/LICENSE.md +1 -1
  25. data/lib/measures/ShiftScheduleByType/measure.xml +23 -23
  26. data/lib/measures/add_central_ice_storage/LICENSE.md +1 -1
  27. data/lib/measures/add_central_ice_storage/measure.rb +6 -6
  28. data/lib/measures/add_central_ice_storage/measure.xml +29 -29
  29. data/lib/measures/add_central_ice_storage/tests/add_central_ice_storage_test.rb +0 -2
  30. data/lib/measures/add_hpwh/LICENSE.md +1 -1
  31. data/lib/measures/add_hpwh/measure.rb +19 -19
  32. data/lib/measures/add_hpwh/measure.xml +23 -23
  33. data/lib/measures/add_hpwh/tests/add_hpwh_test.rb +0 -2
  34. data/lib/measures/add_packaged_ice_storage/LICENSE.md +1 -1
  35. data/lib/measures/add_packaged_ice_storage/measure.xml +3 -3
  36. data/lib/openstudio/load_flexibility_measures/version.rb +1 -1
  37. data/openstudio-load-flexibility-measures.gemspec +13 -8
  38. metadata +121 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26b919673f7ce4c202f5126df385ad569a77079965c62d15dbcef6b04e0b90dd
4
- data.tar.gz: d8a422fab203371546a6031c4c01d1084fb26a64536a4a578de387b5592dbcb5
3
+ metadata.gz: b827295300d90067bd7a9664a6fa935f432896caf922871fb2d1638efd8e5f69
4
+ data.tar.gz: 319fbb0cd35c79b8ff9911322e651dc6db7502c6f1b7a4d479865da8e029d123
5
5
  SHA512:
6
- metadata.gz: 294fdcd9d4242a5aa1e4731563440a33936606cda1c1a5c80ec59bd9ef3ff4a9a27ca1856874a5cd36fe85ebaa73686dbffe3e5d00f992104741221fb94b118b
7
- data.tar.gz: 3b4f529c7a8a20be1ed134d397355cdaa1f93fd1197df2a7d77256a79d98fe051a20ed9fb780e3e547c78a2ea8470aaa669b3e2a9987e7ac0c7a3aa71ef73d03
6
+ metadata.gz: dd8f8b850c7aaa337ea306e9992123e2f2fe000156e269105674f3d9a97eadb5d3f3af8e572d9a8e5c14703a6b32506d1c9f3d96498749761b274ccfa1837219
7
+ data.tar.gz: edc05b3d56f4fe2accfff8320ea7974f50ed3db03d1d8389dbeb04f5b1f1292716623e23f2f08c5eb1ae7a2f74194727e57eb00ed21a1df98ce0039e319c30c7
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # OpenStudio Load Flexibility Measures Gem
2
2
 
3
+ ## Version 0.10.0
4
+ - Support for OpenStudio 3.9 (upgrade to standards gem 0.7.0, extension gem 0.8.1)
5
+
6
+ ## Version 0.9.0
7
+ - Updating dependencies and licenses for OpenStudio 3.8 (upgrade to standards gem 0.6.0)
8
+
3
9
  ## Version 0.8.0
4
10
  - Updating dependencies and licenses for OpenStudio 3.7 (upgrade to standards gem 0.5.0, extension gem 0.7.0)
5
11
  - Fix field indexes for CoilCoolingDXTwoSpeed in add_packaged_ice_storage
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
+ # Specify your gem's dependencies in openstudio-model-articulation.gemspec
3
4
  gemspec
4
5
 
5
6
  # Local gems are useful when developing and integrating the various dependencies.
@@ -10,29 +11,9 @@ gemspec
10
11
  # checkout the latest version (develop) from github.
11
12
  allow_local = ENV['FAVOR_LOCAL_GEMS']
12
13
 
13
-
14
- # Delete when these branchesa are merged and released
15
- #gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'v0.6.0-rc1'
16
- #gem 'openstudio-standards', '= 0.2.17.rc1', :github => 'NREL/openstudio-standards', :ref => '3.5.0_changes'
17
-
18
-
19
-
20
- # uncomment when you want CI to use develop branch of extension gem
21
- # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'develop'
22
-
23
- # uncomment when you want CI to use develop branch of openstudio-standards gem
24
- # gem 'openstudio-standards', github: 'NREL/OpenStudio-standards', branch: 'master'
25
-
26
14
  # Only uncomment if you need to test a different version of the extension gem
27
15
  # if allow_local && File.exist?('../OpenStudio-extension-gem')
28
16
  # gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
29
17
  # elsif allow_local
30
18
  # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'develop'
31
19
  # end
32
-
33
- # Only uncomment if you need to test a different version of OpenStudio-standards
34
- # if allow_local && File.exist?('../openstudio-standards')
35
- # gem 'openstudio-standards', path: '../openstudio-standards'
36
- # elsif allow_local
37
- # gem 'openstudio-standards', github: 'NREL/OpenStudio-standards', branch: 'develop'
38
- # end
data/Jenkinsfile CHANGED
@@ -1,6 +1,6 @@
1
- //Jenkins pipelines are stored in shared libraries. Please see: https://github.com/NREL/cbci_jenkins_libs
1
+ //Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs
2
2
 
3
- @Library('cbci_shared_libs') _
3
+ @Library('cbci_shared_libs@developExtension') _
4
4
 
5
5
  // Build for PR to develop branch only.
6
6
  if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
@@ -8,4 +8,3 @@ if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { // check if set
8
8
  openstudio_extension_gems()
9
9
 
10
10
  }
11
-
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- OpenStudio(R), Copyright (c) 2008, 2023 Alliance for Sustainable Energy, LLC.
1
+ OpenStudio(R), Copyright (c) 2008, 2024 Alliance for Sustainable Energy, LLC.
2
2
 
3
3
  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
4
 
data/README.md CHANGED
@@ -31,6 +31,8 @@ Detailed instructions for usage are included in each measure's respective README
31
31
 
32
32
  |OpenStudio Load Flexibility Measures Gem|OpenStudio|Ruby|
33
33
  |:--------------:|:----------:|:--------:|
34
+ | 0.10.0| 3.9 | 3.2.2 |
35
+ | 0.9.0| 3.8 | 3.2.2 |
34
36
  | 0.8.0| 3.7 | 2.7 |
35
37
  | 0.7.0| 3.6 | 2.7 |
36
38
  | 0.6 - 0.6.1 | 3.5 | 2.7 |
@@ -0,0 +1,13 @@
1
+ OpenStudio(R), Copyright (c) 2008, 2024 Alliance for Sustainable Energy, LLC.
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
+
5
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
+
7
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
+
9
+ 3. Redistribution of this software, without modification, must refer to the software by the same designation. Redistribution of a modified version of this software (i) may not refer to the modified version by the same designation, or by any confusingly similar designation, and (ii) must refer to the underlying software originally provided by Alliance as “OpenStudio®”. Except to comply with the foregoing, the term “OpenStudio®”, or any confusingly similar designation may not be used to refer to any modified version of this software or any modified version of the underlying software originally provided by Alliance without the prior written consent of Alliance.
10
+
11
+ 4. The name of the copyright holder(s), any contributors, the United States Government, the United States Department of Energy, or any of their employees may not be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,140 @@
1
+
2
+
3
+ ###### (Automatically generated documentation)
4
+
5
+ # PeakPeriodSchedulesShift
6
+
7
+ ## Description
8
+ Shifts select weekday (or weekday/weekend) schedules out of a peak period.
9
+
10
+ ## Modeler Description
11
+ Enter a peak period window, a delay value, and any applicable ScheduleRuleset or ScheduleFile schedules. Shift all schedule values falling within the peak period to after the end (offset by delay) of the peak period. Optionally prevent stacking of schedule values by only allowing shifts to all-zero periods. Optionally apply schedule shifts to weekend days.
12
+
13
+ ## Measure Type
14
+ ModelMeasure
15
+
16
+ ## Taxonomy
17
+ Whole Building.Whole Building Schedules
18
+
19
+ ___
20
+ ## Table of Contents
21
+ - [Measure Overview](#measure-overview)<br/>
22
+ - [Other Examples](#other-examples)<br/>
23
+ - [Automatically Generated Argument List](#arguments)<br/>
24
+
25
+ ## Measure Overview
26
+
27
+ The intent of this measure is to give the user the ability to shift schedules, thereby giving some control over the timing of energy use.
28
+ A daily peak period is defined using a start and end hour of the day.
29
+ This represents a peak demand window for which customers, e.g., might be penalized for running home appliances.
30
+ Schedule values falling within the peak period are then shifted back in time, to start at the end of the peak period.
31
+ An optional delay value can be specified to control how many hours after the peak period final hour the load shift should begin.
32
+ By default, only schedule values occuring during weekdays can be shifted.
33
+ However, an optional argument can be supplied to additionally enable schedule shifts for weekend days.
34
+ Users also have the ability to disallow overlapping of shifted schedules onto any existing events.
35
+ By default, however, schedules are shifted to periods that already have non-zero schedule values.
36
+ In terms of specifying which schedules may be shifted, the user may provide comma-separated lists of schedule names for both ScheduleRuleset and ScheduleFile object types.
37
+ Any schedule whose name is not listed is not available to receive any schedule shifts.
38
+
39
+ The following illustrates a simple shift that has been applied to a refrigerator schedule.
40
+ The first 5 weekdays of the year show the appliance load shifted back to start at the end of the peak period.
41
+ The peak period does not apply to weekends, and so the final 2 weekend days does not show any shifted schedules.
42
+
43
+ ![Overview](./docs/measures-overview.png?raw=true)
44
+
45
+ It's important to note that although this measure has been written generically to support any schedules of either the ScheduleRuleset of ScheduleFile type, it has only been tested in the context of residential workflows (i.e, ResStock).
46
+ Users applying this measure in other (untested) workflows should use caution.
47
+
48
+ ## Other Examples
49
+
50
+ Below are additional examples illustrating various scenarios for changing values supplied to measure arguments.
51
+
52
+ ### Shorter peak period
53
+
54
+ *Peak Period*: 5pm - 7pm |
55
+ *Delay*: None |
56
+ *Weekdays Only*: Yes
57
+
58
+ ![Shorter Peak Period](./docs/other-examples1.png?raw=true)
59
+
60
+ ### Non-zero delay value
61
+
62
+ *Peak Period*: 3pm - 7pm |
63
+ *Delay*: 1hr |
64
+ *Weekdays Only*: Yes
65
+
66
+ ![Nonzero Delay Value](./docs/other-examples2.png?raw=true)
67
+
68
+ ### Applied to weekends
69
+
70
+ *Peak Period*: 3pm - 7pm |
71
+ *Delay*: None |
72
+ *Weekdays Only*: No
73
+
74
+ ![Applied To Weekends](./docs/other-examples3.png?raw=true)
75
+
76
+ ___
77
+
78
+ *(Automatically generated argument information follows)*
79
+
80
+ ## Arguments
81
+
82
+
83
+ ### Schedules: Peak Period
84
+ Specifies the peak period. Enter a time like "15 - 18" (start hour can be 0 through 23 and end hour can be 1 through 24).
85
+ **Name:** schedules_peak_period,
86
+ **Type:** String,
87
+ **Units:** ,
88
+ **Required:** true,
89
+ **Model Dependent:** false
90
+
91
+
92
+ ### Schedules: Peak Period Delay
93
+ The number of hours after peak period end.
94
+ **Name:** schedules_peak_period_delay,
95
+ **Type:** Integer,
96
+ **Units:** hr,
97
+ **Required:** true,
98
+ **Model Dependent:** false
99
+
100
+
101
+ ### Schedules: Peak Period Allow Stacking
102
+ Whether schedules can be shifted to periods that already have non-zero schedule values. Defaults to true. Note that the schedule type limits upper value is increased to 2.0 when allowing stacked schedule values.
103
+ **Name:** schedules_peak_period_allow_stacking,
104
+ **Type:** Boolean,
105
+ **Units:** ,
106
+ **Required:** false,
107
+ **Model Dependent:** false
108
+
109
+
110
+ ### Schedules: Peak Period Weekdays Only
111
+ Whether schedules can be shifted for weekdays only, or weekends as well. Defaults to true.
112
+ **Name:** schedules_peak_period_weekdays_only,
113
+ **Type:** Boolean,
114
+ **Units:** ,
115
+ **Required:** false,
116
+ **Model Dependent:** false
117
+
118
+
119
+ ### Schedules: Peak Period Schedule Rulesets Names
120
+ Comma-separated list of Schedule:Ruleset object names corresponding to schedules to shift during the specified peak period.
121
+ **Name:** schedules_peak_period_schedule_rulesets_names,
122
+ **Type:** String,
123
+ **Units:** ,
124
+ **Required:** false,
125
+ **Model Dependent:** false
126
+
127
+
128
+ ### Schedules: Peak Period Schedule Files Column Names
129
+ Comma-separated list of column names, referenced by Schedule:File objects, corresponding to schedules to shift during the specified peak period.
130
+ **Name:** schedules_peak_period_schedule_files_column_names,
131
+ **Type:** String,
132
+ **Units:** ,
133
+ **Required:** false,
134
+ **Model Dependent:** false
135
+
136
+
137
+
138
+
139
+
140
+
@@ -0,0 +1,106 @@
1
+ <%#= README.md.erb is used to auto-generate README.md. %>
2
+ <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
+ ###### (Automatically generated documentation)
4
+
5
+ # <%= name %>
6
+
7
+ ## Description
8
+ <%= description %>
9
+
10
+ ## Modeler Description
11
+ <%= modelerDescription %>
12
+
13
+ ## Measure Type
14
+ <%= measureType %>
15
+
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
+
19
+ ___
20
+ ## Table of Contents
21
+ - [Measure Overview](#measure-overview)<br/>
22
+ - [Other Examples](#other-examples)<br/>
23
+ - [Automatically Generated Argument List](#arguments)<br/>
24
+
25
+ ## Measure Overview
26
+
27
+ The intent of this measure is to give the user the ability to shift schedules, thereby giving some control over the timing of energy use.
28
+ A daily peak period is defined using a start and end hour of the day.
29
+ This represents a peak demand window for which customers, e.g., might be penalized for running home appliances.
30
+ Schedule values falling within the peak period are then shifted back in time, to start at the end of the peak period.
31
+ An optional delay value can be specified to control how many hours after the peak period final hour the load shift should begin.
32
+ By default, only schedule values occuring during weekdays can be shifted.
33
+ However, an optional argument can be supplied to additionally enable schedule shifts for weekend days.
34
+ Users also have the ability to disallow overlapping of shifted schedules onto any existing events.
35
+ By default, however, schedules are shifted to periods that already have non-zero schedule values.
36
+ In terms of specifying which schedules may be shifted, the user may provide comma-separated lists of schedule names for both ScheduleRuleset and ScheduleFile object types.
37
+ Any schedule whose name is not listed is not available to receive any schedule shifts.
38
+
39
+ The following illustrates a simple shift that has been applied to a refrigerator schedule.
40
+ The first 5 weekdays of the year show the appliance load shifted back to start at the end of the peak period.
41
+ The peak period does not apply to weekends, and so the final 2 weekend days does not show any shifted schedules.
42
+
43
+ ![Overview](./docs/measures-overview.png?raw=true)
44
+
45
+ It's important to note that although this measure has been written generically to support any schedules of either the ScheduleRuleset of ScheduleFile type, it has only been tested in the context of residential workflows (i.e, ResStock).
46
+ Users applying this measure in other (untested) workflows should use caution.
47
+
48
+ ## Other Examples
49
+
50
+ Below are additional examples illustrating various scenarios for changing values supplied to measure arguments.
51
+
52
+ ### Shorter peak period
53
+
54
+ *Peak Period*: 5pm - 7pm |
55
+ *Delay*: None |
56
+ *Weekdays Only*: Yes
57
+
58
+ ![Shorter Peak Period](./docs/other-examples1.png?raw=true)
59
+
60
+ ### Non-zero delay value
61
+
62
+ *Peak Period*: 3pm - 7pm |
63
+ *Delay*: 1hr |
64
+ *Weekdays Only*: Yes
65
+
66
+ ![Nonzero Delay Value](./docs/other-examples2.png?raw=true)
67
+
68
+ ### Applied to weekends
69
+
70
+ *Peak Period*: 3pm - 7pm |
71
+ *Delay*: None |
72
+ *Weekdays Only*: No
73
+
74
+ ![Applied To Weekends](./docs/other-examples3.png?raw=true)
75
+
76
+ ___
77
+
78
+ *(Automatically generated argument information follows)*
79
+
80
+ ## Arguments
81
+
82
+ <% arguments.each do |argument| %>
83
+ ### <%= argument[:display_name] %>
84
+ <%= argument[:description] %>
85
+ **Name:** <%= argument[:name] %>,
86
+ **Type:** <%= argument[:type] %>,
87
+ **Units:** <%= argument[:units] %>,
88
+ **Required:** <%= argument[:required] %>,
89
+ **Model Dependent:** <%= argument[:model_dependent] %>
90
+ <% if argument[:type] == "Choice" && !argument[:model_dependent]%>
91
+ **Choice Display Names** <%= argument[:choice_display_names] %>
92
+ <% end %>
93
+ <% end %>
94
+
95
+ <% if arguments.size == 0 %>
96
+ <%= "This measure does not have any user arguments" %>
97
+ <% end %>
98
+
99
+ <% if outputs.size > 0 %>
100
+ ## Outputs
101
+ <% output_names = [] %>
102
+ <% outputs.each do |output| %>
103
+ <% output_names << output[:display_name] %>
104
+ <% end %>
105
+ <%= output_names.join(", ") %>
106
+ <% end %>