openstudio-load-flexibility-measures 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34389d51f3a0e19bedbb600916df148ef929b1c8a1cf8eff8291f56724ea1011
4
- data.tar.gz: 1964e592d6849974bda5e7605b7143a7ea5aaab7a5c1f24b7774a03bfc9220db
3
+ metadata.gz: 3067d071796cf31183292010668e79ad8f434cc5affc3cdb991d9fa79afb5a07
4
+ data.tar.gz: 445adcf8663134e60fe14eb8d50104920eab3703e11ebd73e6f12782f716748b
5
5
  SHA512:
6
- metadata.gz: 16599341e89e6a5db13f8093c5086d435f4ac3c8bb8716ed9e9237c584a4442864ca3c70fc987458a2d268b68edd3d0d37b5e918a7e107d6368e210da463bafa
7
- data.tar.gz: 4eab8b7a18b262ed03ae7eeaa22156580ed629df1a4b40fdc91046d1eaab5af49e8a87b3e5b41ee4ff8fe4f0ef9969ed199e3d3759df256cac7b6131836edfd0
6
+ metadata.gz: 9c62fbf8957c40e177a11148e344c4bb357bc2ab84256842166596bfb6676208500f5d58ca0be8267f70fdd0866a5694b1ee5a8576a8d4dc6d0fbe053900717a
7
+ data.tar.gz: 99bccbd7f9c5400c53ee041394f921fd9a10bae81f9ca8bd6caadcd91fa44009b958dcabb556cda9ed149d481272c84539b883674687fca62d9dee6028542767
@@ -1,5 +1,14 @@
1
1
  # OpenStudio Load Flexibility Measures Gem
2
2
 
3
+ ## Version 0.1.2
4
+
5
+ * Bug Fixes:
6
+ * ![Fixed:][fixed] [#4](https://github.com/NREL/openstudio-load-flexibility-measures-gem/issues/4), use unix paths in 'add_distributed_ice_storage_to_air_loop_for_load_flexibility'
7
+ * ![Fixed:][fixed] [#6](https://github.com/NREL/openstudio-load-flexibility-measures-gem/issues/6), code error in add_distributed measure
8
+ * ![Fixed:][fixed] [#8](https://github.com/NREL/openstudio-load-flexibility-measures-gem/issues/8), EMS output variables cause measure failure
9
+ * Remove .DS_Store and exclude from future releases
10
+ * Code cleanup
11
+
3
12
  ## Version 0.1.1
4
13
 
5
14
  * Initial release
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
+
5
+ if File.exist?('../openstudio-standards')
6
+ gem 'openstudio-standards', path: '../openstudio-standards'
7
+ end
@@ -1 +1,27 @@
1
- Insert your license here
1
+ OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted
4
+ provided that the following conditions are met:
5
+
6
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions
7
+ and the following disclaimer.
8
+
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
10
+ and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+
12
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse
13
+ or promote products derived from this software without specific prior written permission from the
14
+ respective party.
15
+
16
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
+ derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
+ designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT,
23
+ OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -21,7 +21,7 @@ ModelMeasure
21
21
  ## Arguments
22
22
 
23
23
 
24
- ### Remove existing water heater on selected loop?
24
+ ### Remove existing water heater on selected loop
25
25
 
26
26
  **Name:** remove_wh,
27
27
  **Type:** Boolean,
@@ -70,7 +70,7 @@ This is where the water heater tank will be placed
70
70
  **Model Dependent:** false
71
71
 
72
72
  ### Set heat pump rated COP (heating)
73
- [-]
73
+
74
74
  **Name:** cop,
75
75
  **Type:** Double,
76
76
  **Units:** ,
@@ -43,7 +43,7 @@
43
43
  # EnergyPlus Engineering Reference, Sections:
44
44
 
45
45
  # start the measure
46
- class AddCentralHPWHForLoadFlexibility < OpenStudio::Measure::ModelMeasure
46
+ class AddCentralHpwhForLoadFlexibility < OpenStudio::Measure::ModelMeasure
47
47
  require 'openstudio-standards'
48
48
 
49
49
  # human readable name
@@ -87,7 +87,7 @@ class AddCentralHPWHForLoadFlexibility < OpenStudio::Measure::ModelMeasure
87
87
 
88
88
  # create argument for removal of existing water heater tanks on selected loop
89
89
  remove_wh = OpenStudio::Measure::OSArgument.makeBoolArgument('remove_wh', true)
90
- remove_wh.setDisplayName('Remove existing water heater on selected loop?')
90
+ remove_wh.setDisplayName('Remove existing water heater on selected loop')
91
91
  remove_wh.setDescription('')
92
92
  remove_wh.setDefaultValue(true)
93
93
  args << remove_wh
@@ -176,7 +176,6 @@ class AddCentralHPWHForLoadFlexibility < OpenStudio::Measure::ModelMeasure
176
176
  # create argument for heat pump rated cop
177
177
  cop = OpenStudio::Measure::OSArgument.makeDoubleArgument('cop', true)
178
178
  cop.setDisplayName('Set heat pump rated COP (heating)')
179
- cop.setDescription('[-]')
180
179
  cop.setDefaultValue(2.8)
181
180
  args << cop
182
181
 
@@ -645,4 +644,4 @@ class AddCentralHPWHForLoadFlexibility < OpenStudio::Measure::ModelMeasure
645
644
  end
646
645
 
647
646
  # register the measure to be used by the application
648
- AddCentralHPWHForLoadFlexibility.new.registerWithApplication
647
+ AddCentralHpwhForLoadFlexibility.new.registerWithApplication
@@ -3,10 +3,10 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>add_central_hpwh_for_load_flexibility</name>
5
5
  <uid>518cde6f-1806-4b9a-bee9-ccaac49c7a53</uid>
6
- <version_id>13943fd8-e7ff-41ea-8e90-3c767bcfa466</version_id>
7
- <version_modified>20200727T193248Z</version_modified>
6
+ <version_id>5be8272a-251e-4e96-8e32-cded6decab33</version_id>
7
+ <version_modified>20200806T183852Z</version_modified>
8
8
  <xml_checksum>A374667A</xml_checksum>
9
- <class_name>AddCentralHPWHForLoadFlexibility</class_name>
9
+ <class_name>AddCentralHpwhForLoadFlexibility</class_name>
10
10
  <display_name>flexible_domestic_hot_water</display_name>
11
11
  <description>This measure adds or replaces existing domestic hot water heater with air source heat pump system and allows for the addition of multiple daily flexible control time windows. The heater/tank system may charge at maximum capacity up to an elevated temperature, or float without any heat addition for a specified timeframe down to a minimum tank temperature.</description>
12
12
  <modeler_description>This measure allows selection between three heat pump water heater modeling approaches in EnergyPlus.The user may select between the pumped-condenser or wrapped-condenser objects. They may also elect to use a simplified calculation which does not use the heat pump objects, but instead used an electric resistance heater and approximates the equivalent electrical input that would be required from a heat pump. This expedites simulation at the expense of accuracy.
@@ -15,7 +15,7 @@ The flexibility of the system is based on user-defined temperatures and times, w
15
15
  <arguments>
16
16
  <argument>
17
17
  <name>remove_wh</name>
18
- <display_name>Remove existing water heater on selected loop?</display_name>
18
+ <display_name>Remove existing water heater on selected loop</display_name>
19
19
  <description></description>
20
20
  <type>Boolean</type>
21
21
  <required>true</required>
@@ -106,7 +106,6 @@ The flexibility of the system is based on user-defined temperatures and times, w
106
106
  <argument>
107
107
  <name>cop</name>
108
108
  <display_name>Set heat pump rated COP (heating)</display_name>
109
- <description>[-]</description>
110
109
  <type>Double</type>
111
110
  <required>true</required>
112
111
  <model_dependent>false</model_dependent>
@@ -347,12 +346,6 @@ The flexibility of the system is based on user-defined temperatures and times, w
347
346
  </attribute>
348
347
  </attributes>
349
348
  <files>
350
- <file>
351
- <filename>LICENSE.md</filename>
352
- <filetype>md</filetype>
353
- <usage_type>license</usage_type>
354
- <checksum>CD7F5672</checksum>
355
- </file>
356
349
  <file>
357
350
  <filename>README.md.erb</filename>
358
351
  <filetype>erb</filetype>
@@ -372,27 +365,33 @@ The flexibility of the system is based on user-defined temperatures and times, w
372
365
  <checksum>E8326C12</checksum>
373
366
  </file>
374
367
  <file>
375
- <filename>README.md</filename>
368
+ <filename>LICENSE.md</filename>
376
369
  <filetype>md</filetype>
377
- <usage_type>readme</usage_type>
378
- <checksum>E4E50206</checksum>
370
+ <usage_type>license</usage_type>
371
+ <checksum>E0468DD6</checksum>
372
+ </file>
373
+ <file>
374
+ <filename>add_central_hpwh_for_load_flexibility.rb</filename>
375
+ <filetype>rb</filetype>
376
+ <usage_type>test</usage_type>
377
+ <checksum>349A48C2</checksum>
379
378
  </file>
380
379
  <file>
381
380
  <version>
382
381
  <software_program>OpenStudio</software_program>
383
- <identifier>2.8.0</identifier>
382
+ <identifier>3.0.0</identifier>
384
383
  <min_compatible>2.8.0</min_compatible>
385
384
  </version>
386
385
  <filename>measure.rb</filename>
387
386
  <filetype>rb</filetype>
388
387
  <usage_type>script</usage_type>
389
- <checksum>97C8CF92</checksum>
388
+ <checksum>3E6F88C9</checksum>
390
389
  </file>
391
390
  <file>
392
- <filename>add_central_hpwh_for_load_flexibility.rb</filename>
393
- <filetype>rb</filetype>
394
- <usage_type>test</usage_type>
395
- <checksum>28D79679</checksum>
391
+ <filename>README.md</filename>
392
+ <filetype>md</filetype>
393
+ <usage_type>readme</usage_type>
394
+ <checksum>48EE62B0</checksum>
396
395
  </file>
397
396
  </files>
398
397
  </measure>
@@ -41,7 +41,7 @@ require 'minitest/autorun'
41
41
  require_relative '../measure.rb'
42
42
  require 'fileutils'
43
43
 
44
- class AddCentralHPWHForLoadFlexibilityTest < Minitest::Test
44
+ class AddCentralHpwhForLoadFlexibilityTest < Minitest::Test
45
45
  # def setup
46
46
  # end
47
47
 
@@ -50,7 +50,7 @@ class AddCentralHPWHForLoadFlexibilityTest < Minitest::Test
50
50
 
51
51
  def test_good_argument_values
52
52
  # create an instance of the measure
53
- measure = AddCentralHPWHForLoadFlexibility.new
53
+ measure = AddCentralHpwhForLoadFlexibility.new
54
54
 
55
55
  # create runner with empty OSW
56
56
  osw = OpenStudio::WorkflowJSON.new
@@ -85,12 +85,12 @@ class AddCentralHPWHForLoadFlexibilityTest < Minitest::Test
85
85
  measure.run(model, runner, argument_map)
86
86
  result = runner.result
87
87
 
88
- # show the output
89
- show_output(result)
90
-
91
88
  # assert that it ran correctly
92
89
  assert_equal('Success', result.value.valueName)
93
90
 
91
+ # show the output
92
+ show_output(result)
93
+
94
94
  # save the model to test output directory
95
95
  output_file_path = "#{File.dirname(__FILE__)}//output/test_output.osm"
96
96
  model.save(output_file_path, true)
@@ -1,13 +1,27 @@
1
1
  OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
2
2
 
3
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted
4
+ provided that the following conditions are met:
4
5
 
5
- (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions
7
+ and the following disclaimer.
6
8
 
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.
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
10
+ and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
11
 
9
- (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
12
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse
13
+ or promote products derived from this software without specific prior written permission from the
14
+ respective party.
10
15
 
11
- (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
16
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
+ derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
+ designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
12
19
 
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS 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.
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT,
23
+ OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -79,7 +79,7 @@ class AddDistributedIceStorageToAirLoopForLoadFlexibility < OpenStudio::Measure:
79
79
 
80
80
  # make boolean argument for selecting cooling coils to replace
81
81
  coilhash.each do |k, v|
82
- coil_selection = OpenStudio::Measure::OSArgument.makeBoolArgument(c, true)
82
+ coil_selection = OpenStudio::Measure::OSArgument.makeBoolArgument(k, true)
83
83
  coil_selection.setDisplayName(k)
84
84
  coil_selection.setDefaultValue(v)
85
85
  args << coil_selection
@@ -92,7 +92,7 @@ class AddDistributedIceStorageToAirLoopForLoadFlexibility < OpenStudio::Measure:
92
92
  args << ice_cap
93
93
 
94
94
  size_mult = OpenStudio::Measure::OSArgument.makeStringArgument('size_mult', false)
95
- size_mult.setDisplayName('Enter a sizing multiplier to manually adjust the autosize results for ice tank capacities.')
95
+ size_mult.setDisplayName('Enter a sizing multiplier to manually adjust the autosize results for ice tank capacities')
96
96
  size_mult.setDefaultValue('1.0')
97
97
  args << size_mult
98
98
 
@@ -103,7 +103,7 @@ class AddDistributedIceStorageToAirLoopForLoadFlexibility < OpenStudio::Measure:
103
103
  args << ctl
104
104
 
105
105
  # obtain default schedule names in TESCurves.idf. This allows users to manually add schedules to the idf and be able to access them in OS or PAT
106
- source_idf = OpenStudio::IdfFile.load(OpenStudio::Path.new(File.dirname(__FILE__) + '\resources\TESCurves.idf')).get
106
+ source_idf = OpenStudio::IdfFile.load(OpenStudio::Path.new(File.dirname(__FILE__) + '/resources/TESCurves.idf')).get
107
107
  schedules = source_idf.getObjectsByType('Schedule:Compact'.to_IddObjectType)
108
108
  schedule_names = OpenStudio::StringVector.new
109
109
 
@@ -120,14 +120,14 @@ class AddDistributedIceStorageToAirLoopForLoadFlexibility < OpenStudio::Measure:
120
120
 
121
121
  # make arguement for weekend TES operation
122
122
  wknd = OpenStudio::Measure::OSArgument.makeBoolArgument('wknd', false)
123
- wknd.setDisplayName('Run TES on the weekends?')
124
- wknd.setDescription('Select if building is occupied on weekends.')
123
+ wknd.setDisplayName('Run TES on the weekends')
124
+ wknd.setDescription('Select if building is occupied on weekends')
125
125
  wknd.setDefaultValue(true)
126
126
  args << wknd
127
127
 
128
128
  # make arguments for operating season
129
129
  season = OpenStudio::Measure::OSArgument.makeStringArgument('season', false)
130
- season.setDisplayName('Select season during which the ice cooling may be used:')
130
+ season.setDisplayName('Select season during which the ice cooling may be used')
131
131
  season.setDescription('Use MM/DD-MM/DD format')
132
132
  season.setDefaultValue('01/01-12/31')
133
133
  args << season
@@ -172,7 +172,8 @@ class AddDistributedIceStorageToAirLoopForLoadFlexibility < OpenStudio::Measure:
172
172
  end
173
173
 
174
174
  # load required TESCurves.idf. This contains all the TES performance curves and default schedules
175
- source_idf = OpenStudio::IdfFile.load(OpenStudio::Path.new(File.dirname(__FILE__) + '\resources\TESCurves.idf')).get
175
+ source_idf = OpenStudio::IdfFile.load(OpenStudio::Path.new(File.dirname(__FILE__) + '/resources/TESCurves.idf')).get
176
+
176
177
  # workspace.addObjects(idf_obj_vector) does not work here. Add each obj individually.
177
178
  source_idf.objects.each do |o|
178
179
  workspace.addObject(o)
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>add_distributed_ice_storage_to_air_loop_for_load_flexibility</name>
5
5
  <uid>2aa8c128-53b9-49fd-9aaf-9253a1f05936</uid>
6
- <version_id>58142df5-609b-4ec5-9312-35d9a76a94ea</version_id>
7
- <version_modified>20200727T193248Z</version_modified>
6
+ <version_id>8b55d314-a611-495a-bbc3-47cdd3ed9e86</version_id>
7
+ <version_modified>20200806T183852Z</version_modified>
8
8
  <xml_checksum>2617824F</xml_checksum>
9
9
  <class_name>AddDistributedIceStorageToAirLoopForLoadFlexibility</class_name>
10
10
  <display_name>Add Distributed Ice Storage to Air Loop for Load Flexibility</display_name>
@@ -34,7 +34,7 @@
34
34
  </argument>
35
35
  <argument>
36
36
  <name>size_mult</name>
37
- <display_name>Enter a sizing multiplier to manually adjust the autosize results for ice tank capacities.</display_name>
37
+ <display_name>Enter a sizing multiplier to manually adjust the autosize results for ice tank capacities</display_name>
38
38
  <type>String</type>
39
39
  <required>false</required>
40
40
  <model_dependent>false</model_dependent>
@@ -91,8 +91,8 @@
91
91
  </argument>
92
92
  <argument>
93
93
  <name>wknd</name>
94
- <display_name>Run TES on the weekends?</display_name>
95
- <description>Select if building is occupied on weekends.</description>
94
+ <display_name>Run TES on the weekends</display_name>
95
+ <description>Select if building is occupied on weekends</description>
96
96
  <type>Boolean</type>
97
97
  <required>false</required>
98
98
  <model_dependent>false</model_dependent>
@@ -110,7 +110,7 @@
110
110
  </argument>
111
111
  <argument>
112
112
  <name>season</name>
113
- <display_name>Select season during which the ice cooling may be used:</display_name>
113
+ <display_name>Select season during which the ice cooling may be used</display_name>
114
114
  <description>Use MM/DD-MM/DD format</description>
115
115
  <type>String</type>
116
116
  <required>false</required>
@@ -208,12 +208,6 @@ If 'AutoSize' is selected for ice capacity, these inputs set an ice capacity siz
208
208
  </attribute>
209
209
  </attributes>
210
210
  <files>
211
- <file>
212
- <filename>LICENSE.md</filename>
213
- <filetype>md</filetype>
214
- <usage_type>license</usage_type>
215
- <checksum>59B484B4</checksum>
216
- </file>
217
211
  <file>
218
212
  <filename>TESCurves.idf</filename>
219
213
  <filetype>idf</filetype>
@@ -232,11 +226,17 @@ If 'AutoSize' is selected for ice capacity, these inputs set an ice capacity siz
232
226
  <usage_type>readme</usage_type>
233
227
  <checksum>B27484F2</checksum>
234
228
  </file>
229
+ <file>
230
+ <filename>LICENSE.md</filename>
231
+ <filetype>md</filetype>
232
+ <usage_type>license</usage_type>
233
+ <checksum>E0468DD6</checksum>
234
+ </file>
235
235
  <file>
236
236
  <filename>add_distributed_ice_storage_to_air_loop_for_load_flexibility_test.rb</filename>
237
237
  <filetype>rb</filetype>
238
238
  <usage_type>test</usage_type>
239
- <checksum>FE5F5343</checksum>
239
+ <checksum>FC11EAC7</checksum>
240
240
  </file>
241
241
  <file>
242
242
  <version>
@@ -247,7 +247,7 @@ If 'AutoSize' is selected for ice capacity, these inputs set an ice capacity siz
247
247
  <filename>measure.rb</filename>
248
248
  <filetype>rb</filetype>
249
249
  <usage_type>script</usage_type>
250
- <checksum>65E65993</checksum>
250
+ <checksum>AFBDDEF7</checksum>
251
251
  </file>
252
252
  </files>
253
253
  </measure>
@@ -1,13 +1,27 @@
1
1
  OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
2
2
 
3
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted
4
+ provided that the following conditions are met:
4
5
 
5
- (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions
7
+ and the following disclaimer.
6
8
 
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.
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
10
+ and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
11
 
9
- (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
12
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse
13
+ or promote products derived from this software without specific prior written permission from the
14
+ respective party.
10
15
 
11
- (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
16
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
+ derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
+ designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
12
19
 
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS 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.
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT,
23
+ OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -83,7 +83,7 @@ Enter as a fraction of chiller capacity (0.0 - 1.0).
83
83
  **Required:** false,
84
84
  **Model Dependent:** false
85
85
 
86
- ### Use Existing (Pre-Defined) Temperature Control Schedules?
86
+ ### Use Existing (Pre-Defined) Temperature Control Schedules
87
87
  Use drop-down selections below.
88
88
  **Name:** old,
89
89
  **Type:** Boolean,
@@ -115,7 +115,7 @@ Use drop-down selections below.
115
115
  **Required:** false,
116
116
  **Model Dependent:** false
117
117
 
118
- ### Create New (Simple) Temperature Control Schedules?
118
+ ### Create New (Simple) Temperature Control Schedules
119
119
  Use entry fields below. If Pre-Defined is also selected, these new schedules will be created but not applied.
120
120
  **Name:** new,
121
121
  **Type:** Boolean,
@@ -195,7 +195,7 @@ Use 24 hour format (HR:MM)
195
195
  **Required:** true,
196
196
  **Model Dependent:** false
197
197
 
198
- ### Allow Ice Discharge on Weekends?
198
+ ### Allow Ice Discharge on Weekends
199
199
 
200
200
  **Name:** wknds,
201
201
  **Type:** Boolean,
@@ -211,7 +211,7 @@ This will not change reporting frequency for existing output variables in the mo
211
211
  **Required:** false,
212
212
  **Model Dependent:** false
213
213
 
214
- ### Test Demand Reponse Event?
214
+ ### Test Demand Reponse Event
215
215
 
216
216
  **Name:** dr,
217
217
  **Type:** Boolean,
@@ -251,7 +251,7 @@ Use 24 hour format (HR:MM)
251
251
  **Required:** false,
252
252
  **Model Dependent:** false
253
253
 
254
- ### Allow chiller to back-up ice during DR event?
254
+ ### Allow chiller to back-up ice during DR event
255
255
  Unselection may result in unmet cooling hours
256
256
  **Name:** dr_chill,
257
257
  **Type:** Boolean,
@@ -143,19 +143,19 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
143
143
  # Make double argument for ice chiller resizing factor - relative to selected chiller capacity
144
144
  chiller_resize_factor = OpenStudio::Measure::OSArgument.makeDoubleArgument('chiller_resize_factor', false)
145
145
  chiller_resize_factor.setDisplayName('Enter Chiller Sizing Factor:')
146
- chiller_resize_factor.setDefaultValue('0.7')
146
+ chiller_resize_factor.setDefaultValue(0.75)
147
147
  args << chiller_resize_factor
148
148
 
149
149
  # Make double argument for chiller max capacity limit during ice discharge
150
150
  chiller_limit = OpenStudio::Measure::OSArgument.makeDoubleArgument('chiller_limit', false)
151
151
  chiller_limit.setDisplayName('Enter Chiller Max Capacity Limit During Ice Discharge:')
152
152
  chiller_limit.setDescription('Enter as a fraction of chiller capacity (0.0 - 1.0).')
153
- chiller_limit.setDefaultValue('0.75')
153
+ chiller_limit.setDefaultValue(1.0)
154
154
  args << chiller_limit
155
155
 
156
156
  # Make choice argument for schedule options
157
157
  old = OpenStudio::Measure::OSArgument.makeBoolArgument('old', false)
158
- old.setDisplayName('Use Existing (Pre-Defined) Temperature Control Schedules?')
158
+ old.setDisplayName('Use Existing (Pre-Defined) Temperature Control Schedules')
159
159
  old.setDescription('Use drop-down selections below.')
160
160
  old.setDefaultValue(false)
161
161
  args << old
@@ -207,7 +207,7 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
207
207
 
208
208
  # Make bool argument for creating new schedules
209
209
  new = OpenStudio::Measure::OSArgument.makeBoolArgument('new', false)
210
- new.setDisplayName('Create New (Simple) Temperature Control Schedules?')
210
+ new.setDisplayName('Create New (Simple) Temperature Control Schedules')
211
211
  new.setDescription('Use entry fields below. If Pre-Defined is also selected, these new schedules will be created' \
212
212
  ' but not applied.')
213
213
  new.setDefaultValue(true)
@@ -231,7 +231,7 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
231
231
  # Make double argument for loop temperature for ice charging
232
232
  chg_sp = OpenStudio::Measure::OSArgument.makeDoubleArgument('chg_sp', true)
233
233
  chg_sp.setDisplayName('Ice Charging Setpoint Temperature F:')
234
- chg_sp.setDefaultValue('25')
234
+ chg_sp.setDefaultValue(25)
235
235
  args << chg_sp
236
236
 
237
237
  # Make double argument for loop design delta T
@@ -276,7 +276,7 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
276
276
 
277
277
  # Make boolean arguments for ctes dischage days
278
278
  wknds = OpenStudio::Measure::OSArgument.makeBoolArgument('wknds', true)
279
- wknds.setDisplayName('Allow Ice Discharge on Weekends?')
279
+ wknds.setDisplayName('Allow Ice Discharge on Weekends')
280
280
  wknds.setDefaultValue(false)
281
281
  args << wknds
282
282
 
@@ -291,15 +291,13 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
291
291
  ## DR TESTER INPUTS -----------------------------------------
292
292
  # Make boolean argument for use of demand response event test
293
293
  dr = OpenStudio::Measure::OSArgument.makeBoolArgument('dr', false)
294
- dr.setDisplayName('Test Demand Reponse Event?')
295
- dr.setDescription('')
294
+ dr.setDisplayName('Test Demand Reponse Event')
296
295
  dr.setDefaultValue(false)
297
296
  args << dr
298
297
 
299
298
  # Make choice argument for type of demand response event (add or shed)
300
299
  dr_add_shed = OpenStudio::Measure::OSArgument.makeChoiceArgument('dr_add_shed', ['Add', 'Shed'], false)
301
300
  dr_add_shed.setDisplayName('Select if a Load Add or Load Shed Event')
302
- dr_add_shed.setDescription('')
303
301
  dr_add_shed.setDefaultValue('Shed')
304
302
  args << dr_add_shed
305
303
 
@@ -320,13 +318,12 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
320
318
  # Make double argument for DR event duration
321
319
  dr_dur = OpenStudio::Measure::OSArgument.makeDoubleArgument('dr_dur', false)
322
320
  dr_dur.setDisplayName('Enter duration of demand response event [hr]:')
323
- dr_dur.setDescription('')
324
- dr_dur.setDefaultValue('3')
321
+ dr_dur.setDefaultValue(3)
325
322
  args << dr_dur
326
323
 
327
324
  # Make boolean argument for allowing chiller to back-up ice
328
325
  dr_chill = OpenStudio::Measure::OSArgument.makeBoolArgument('dr_chill', false)
329
- dr_chill.setDisplayName('Allow chiller to back-up ice during DR event?')
326
+ dr_chill.setDisplayName('Allow chiller to back-up ice during DR event')
330
327
  dr_chill.setDescription('Unselection may result in unmet cooling hours')
331
328
  dr_chill.setDefaultValue('false')
332
329
  args << dr_chill
@@ -858,6 +855,29 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
858
855
  " * #{demand_sp_mgr.name}")
859
856
  end
860
857
 
858
+ ## Create General EMS Variables for Chiller and TES Capacities------------------------------------------------------
859
+
860
+ # Chiller Nominal Capacity Internal Variable
861
+ evar_chiller_cap = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Chiller Nominal Capacity')
862
+ evar_chiller_cap.setInternalDataIndexKeyName(ctes_chiller.name.to_s)
863
+ evar_chiller_cap.setName('CTES_Chiller_Capacity')
864
+
865
+ # Ice Tank thermal storage capacity - Empty Global Variable
866
+ evar_tes_cap = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'TES_Cap')
867
+
868
+ # Set TES Capacity from User Inputs
869
+ set_tes_cap = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
870
+ set_tes_cap.setName('Set_TES_Cap')
871
+ body = <<-EMS
872
+ SET TES_Cap = #{storage_capacity}
873
+ EMS
874
+ set_tes_cap.setBody(body)
875
+
876
+ set_tes_cap_pcm = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
877
+ set_tes_cap_pcm.setName('Set_TES_Cap_CallMgr')
878
+ set_tes_cap_pcm.setCallingPoint('BeginNewEnvironment')
879
+ set_tes_cap_pcm.addProgram(set_tes_cap)
880
+
861
881
  ## Create EMS Components to Control Load on Upstream (Priority) Device----------------------------------------------
862
882
 
863
883
  # Flag value indicating that a chiller limiter is required or DR Test is Activated
@@ -874,10 +894,6 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
874
894
  'outlet setpoint. ')
875
895
 
876
896
  # Internal and Global Variable(s)
877
- # Chiller Nominal Capacity
878
- evar_chiller_cap = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, 'Chiller Nominal Capacity')
879
- evar_chiller_cap.setInternalDataIndexKeyName(ctes_chiller.name.to_s)
880
- evar_chiller_cap.setName('CTES_Chiller_Capacity')
881
897
 
882
898
  # Chiller Limited Capacity for Ice Discharge Period - Empty Global Variable
883
899
  evar_chiller_limit = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'Chiller_Limited_Capacity')
@@ -885,9 +901,6 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
885
901
  # Instances of Chiller Limit Application - Empty Global Variable
886
902
  evar_limit_counter = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'Limit_Counter')
887
903
 
888
- # Ice Tank thermal storage capacity - Empty Global Variable
889
- evar_tes_cap = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'TES_Cap')
890
-
891
904
  # Max Delta-T for Chiller De-Rate - Empty Global Variable
892
905
  dt_ems = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'DT_Max')
893
906
 
@@ -964,7 +977,6 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
964
977
  SET Limit_Counter = 0
965
978
  SET DR_Flag = 0
966
979
  SET DT_Max = #{dt_max}
967
- SET TES_Cap = #{storage_capacity}
968
980
  EMS
969
981
  chiller_limit_calculation.setBody(body)
970
982
 
@@ -979,18 +991,13 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
979
991
  chiller_limit_calc_pcm.setCallingPoint('BeginNewEnvironment')
980
992
  chiller_limit_calc_pcm.addProgram(chiller_limit_calculation)
981
993
 
982
- # EMS Output Variable(s)
983
- eout_chiller_cap = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_chiller_cap)
984
- eout_chiller_cap.setName('Chiller Nominal Capacity')
985
-
994
+ # EMS Output Variable(s) - Chiller Limiter Dependent
986
995
  eout_chiller_limit = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_chiller_limit)
987
996
  eout_chiller_limit.setName('Chiller Limited Capacity')
988
997
 
989
998
  eout_limit_counter = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_limit_counter)
990
999
  eout_limit_counter.setName('Chiller Limit Counter')
991
1000
 
992
- eout_tes_cap = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_tes_cap)
993
- eout_tes_cap.setName('Ice Thermal Storage Capacity')
994
1001
  end
995
1002
 
996
1003
  ## DR EVENT TESTER EMS --------------------------
@@ -1075,6 +1082,13 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
1075
1082
 
1076
1083
  ## Add Output Variables and Meters----------------------------------------------------------------------------------
1077
1084
 
1085
+ # EMS Output Variable(s) - Chiller Limit Independent
1086
+ eout_chiller_cap = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_chiller_cap)
1087
+ eout_chiller_cap.setName('Chiller Nominal Capacity')
1088
+
1089
+ eout_tes_cap = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, evar_tes_cap)
1090
+ eout_tes_cap.setName('Ice Thermal Storage Capacity')
1091
+
1078
1092
  # Identify existing output variables
1079
1093
  vars = model.getOutputVariables
1080
1094
  var_names = []
@@ -1234,12 +1248,6 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
1234
1248
 
1235
1249
  if chiller_limit != 1.0 # flag for EMS use, following EMS vars only exist if previous script ran
1236
1250
 
1237
- # Create output variable for chiller nominal capacity (from EMS Output Variable)
1238
- v = OpenStudio::Model::OutputVariable.new(eout_chiller_cap.name.to_s, model)
1239
- v.setName("#{ctes_chiller.name} Nominal Capacity [W]")
1240
- v.setVariableName('Chiller Nominal Capacity')
1241
- ovars << v
1242
-
1243
1251
  # Create output variable for chiller limited capacity (from EMS Output Variable)
1244
1252
  v = OpenStudio::Model::OutputVariable.new(eout_chiller_limit.name.to_s, model)
1245
1253
  v.setName("#{ctes_chiller.name} Limited Capacity")
@@ -1270,6 +1278,12 @@ class AddIceStorageToPlantLoopForLoadFlexibility < OpenStudio::Measure::ModelMea
1270
1278
  v.setVariableName('Ice Thermal Storage Capacity')
1271
1279
  ovars << v
1272
1280
 
1281
+ # Create output variable for chiller nominal capacity (from EMS Output Variable)
1282
+ v = OpenStudio::Model::OutputVariable.new(eout_chiller_cap.name.to_s, model)
1283
+ v.setName("#{ctes_chiller.name} Nominal Capacity [W]")
1284
+ v.setVariableName('Chiller Nominal Capacity')
1285
+ ovars << v
1286
+
1273
1287
  # Set variable reporting frequency for newly created output variables
1274
1288
  ovars.each do |var|
1275
1289
  var.setReportingFrequency(report_freq)
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>add_ice_storage_to_plant_loop_for_load_flexibility</name>
5
5
  <uid>48f37812-0cb6-4770-b695-beb8d8a5660d</uid>
6
- <version_id>ec8fce33-0983-427d-baf9-624b66c9bdb6</version_id>
7
- <version_modified>20200729T185358Z</version_modified>
6
+ <version_id>7c7e99fa-5fa6-403b-98d2-d08a19e2dba2</version_id>
7
+ <version_modified>20200806T183852Z</version_modified>
8
8
  <xml_checksum>6394841D</xml_checksum>
9
9
  <class_name>AddIceStorageToPlantLoopForLoadFlexibility</class_name>
10
10
  <display_name>Add Ice Storage Tank</display_name>
@@ -97,7 +97,7 @@
97
97
  <type>Double</type>
98
98
  <required>false</required>
99
99
  <model_dependent>false</model_dependent>
100
- <default_value>0.7</default_value>
100
+ <default_value>0.75</default_value>
101
101
  </argument>
102
102
  <argument>
103
103
  <name>chiller_limit</name>
@@ -106,11 +106,11 @@
106
106
  <type>Double</type>
107
107
  <required>false</required>
108
108
  <model_dependent>false</model_dependent>
109
- <default_value>0.75</default_value>
109
+ <default_value>1</default_value>
110
110
  </argument>
111
111
  <argument>
112
112
  <name>old</name>
113
- <display_name>Use Existing (Pre-Defined) Temperature Control Schedules?</display_name>
113
+ <display_name>Use Existing (Pre-Defined) Temperature Control Schedules</display_name>
114
114
  <description>Use drop-down selections below.</description>
115
115
  <type>Boolean</type>
116
116
  <required>false</required>
@@ -171,7 +171,7 @@
171
171
  </argument>
172
172
  <argument>
173
173
  <name>new</name>
174
- <display_name>Create New (Simple) Temperature Control Schedules?</display_name>
174
+ <display_name>Create New (Simple) Temperature Control Schedules</display_name>
175
175
  <description>Use entry fields below. If Pre-Defined is also selected, these new schedules will be created but not applied.</description>
176
176
  <type>Boolean</type>
177
177
  <required>false</required>
@@ -270,7 +270,7 @@
270
270
  </argument>
271
271
  <argument>
272
272
  <name>wknds</name>
273
- <display_name>Allow Ice Discharge on Weekends?</display_name>
273
+ <display_name>Allow Ice Discharge on Weekends</display_name>
274
274
  <type>Boolean</type>
275
275
  <required>true</required>
276
276
  <model_dependent>false</model_dependent>
@@ -323,8 +323,7 @@
323
323
  </argument>
324
324
  <argument>
325
325
  <name>dr</name>
326
- <display_name>Test Demand Reponse Event?</display_name>
327
- <description></description>
326
+ <display_name>Test Demand Reponse Event</display_name>
328
327
  <type>Boolean</type>
329
328
  <required>false</required>
330
329
  <model_dependent>false</model_dependent>
@@ -343,7 +342,6 @@
343
342
  <argument>
344
343
  <name>dr_add_shed</name>
345
344
  <display_name>Select if a Load Add or Load Shed Event</display_name>
346
- <description></description>
347
345
  <type>Choice</type>
348
346
  <required>false</required>
349
347
  <model_dependent>false</model_dependent>
@@ -380,7 +378,6 @@
380
378
  <argument>
381
379
  <name>dr_dur</name>
382
380
  <display_name>Enter duration of demand response event [hr]:</display_name>
383
- <description></description>
384
381
  <type>Double</type>
385
382
  <required>false</required>
386
383
  <model_dependent>false</model_dependent>
@@ -388,7 +385,7 @@
388
385
  </argument>
389
386
  <argument>
390
387
  <name>dr_chill</name>
391
- <display_name>Allow chiller to back-up ice during DR event?</display_name>
388
+ <display_name>Allow chiller to back-up ice during DR event</display_name>
392
389
  <description>Unselection may result in unmet cooling hours</description>
393
390
  <type>Boolean</type>
394
391
  <required>false</required>
@@ -461,46 +458,46 @@
461
458
  <usage_type>test</usage_type>
462
459
  <checksum>A3FC1180</checksum>
463
460
  </file>
464
- <file>
465
- <filename>LICENSE.md</filename>
466
- <filetype>md</filetype>
467
- <usage_type>license</usage_type>
468
- <checksum>59B484B4</checksum>
469
- </file>
470
461
  <file>
471
462
  <filename>Ice Measure Implementation Guide.pdf</filename>
472
463
  <filetype>pdf</filetype>
473
464
  <usage_type>doc</usage_type>
474
465
  <checksum>090841B0</checksum>
475
466
  </file>
476
- <file>
477
- <filename>README.md</filename>
478
- <filetype>md</filetype>
479
- <usage_type>readme</usage_type>
480
- <checksum>F360189C</checksum>
481
- </file>
482
467
  <file>
483
468
  <filename>OsLib_Schedules.rb</filename>
484
469
  <filetype>rb</filetype>
485
470
  <usage_type>resource</usage_type>
486
471
  <checksum>2F6D3DE2</checksum>
487
472
  </file>
473
+ <file>
474
+ <filename>LICENSE.md</filename>
475
+ <filetype>md</filetype>
476
+ <usage_type>license</usage_type>
477
+ <checksum>E0468DD6</checksum>
478
+ </file>
488
479
  <file>
489
480
  <filename>add_ice_storage_to_plant_loop_for_load_flexibility_test.rb</filename>
490
481
  <filetype>rb</filetype>
491
482
  <usage_type>test</usage_type>
492
- <checksum>7C4811E5</checksum>
483
+ <checksum>4CDCF2D8</checksum>
493
484
  </file>
494
485
  <file>
495
486
  <version>
496
487
  <software_program>OpenStudio</software_program>
497
- <identifier>2.7.1</identifier>
488
+ <identifier>3.0.0</identifier>
498
489
  <min_compatible>2.7.1</min_compatible>
499
490
  </version>
500
491
  <filename>measure.rb</filename>
501
492
  <filetype>rb</filetype>
502
493
  <usage_type>script</usage_type>
503
- <checksum>E05DCD4F</checksum>
494
+ <checksum>32CD91EE</checksum>
495
+ </file>
496
+ <file>
497
+ <filename>README.md</filename>
498
+ <filetype>md</filetype>
499
+ <usage_type>readme</usage_type>
500
+ <checksum>69EDB2DB</checksum>
504
501
  </file>
505
502
  </files>
506
503
  </measure>
@@ -160,6 +160,7 @@ class AddIceStorageToPlantLoopForLoadFlexibilityTest < Minitest::Test
160
160
  args_hash['storage_capacity'] = 550
161
161
  args_hash['melt_indicator'] = 'InsideMelt'
162
162
  args_hash['chiller_resize_factor'] = 0.75
163
+ args_hash['chiller_limit'] = 0.7
163
164
  args_hash['chg_sp'] = 26
164
165
  args_hash['loop_sp'] = 42
165
166
  args_hash['delta_t'] = '16'
@@ -35,6 +35,6 @@
35
35
 
36
36
  module OpenStudio
37
37
  module LoadFlexibilityMeasures
38
- VERSION = '0.1.1'.freeze
38
+ VERSION = '0.1.2'.freeze
39
39
  end
40
40
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openstudio-load-flexibility-measures
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Heine
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-08-03 00:00:00.000000000 Z
12
+ date: 2020-08-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -103,7 +103,6 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - ".DS_Store"
107
106
  - ".gitignore"
108
107
  - ".rubocop.yml"
109
108
  - CHANGELOG.md
@@ -115,7 +114,6 @@ files:
115
114
  - doc_templates/copyright_erb.txt
116
115
  - doc_templates/copyright_js.txt
117
116
  - doc_templates/copyright_ruby.txt
118
- - lib/.DS_Store
119
117
  - lib/measures/add_central_hpwh_for_load_flexibility/LICENSE.md
120
118
  - lib/measures/add_central_hpwh_for_load_flexibility/README.md
121
119
  - lib/measures/add_central_hpwh_for_load_flexibility/README.md.erb
data/.DS_Store DELETED
Binary file