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 +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile +4 -0
- data/lib/measures/add_central_hpwh_for_load_flexibility/LICENSE.md +27 -1
- data/lib/measures/add_central_hpwh_for_load_flexibility/README.md +2 -2
- data/lib/measures/add_central_hpwh_for_load_flexibility/measure.rb +3 -4
- data/lib/measures/add_central_hpwh_for_load_flexibility/measure.xml +19 -20
- data/lib/measures/add_central_hpwh_for_load_flexibility/tests/add_central_hpwh_for_load_flexibility.rb +5 -5
- data/lib/measures/add_distributed_ice_storage_to_air_loop_for_load_flexibility/LICENSE.md +20 -6
- data/lib/measures/add_distributed_ice_storage_to_air_loop_for_load_flexibility/measure.rb +8 -7
- data/lib/measures/add_distributed_ice_storage_to_air_loop_for_load_flexibility/measure.xml +14 -14
- data/lib/measures/add_ice_storage_to_plant_loop_for_load_flexibility/LICENSE.md +20 -6
- data/lib/measures/add_ice_storage_to_plant_loop_for_load_flexibility/README.md +5 -5
- data/lib/measures/add_ice_storage_to_plant_loop_for_load_flexibility/measure.rb +46 -32
- data/lib/measures/add_ice_storage_to_plant_loop_for_load_flexibility/measure.xml +24 -27
- data/lib/measures/add_ice_storage_to_plant_loop_for_load_flexibility/tests/add_ice_storage_to_plant_loop_for_load_flexibility_test.rb +1 -0
- data/lib/openstudio/load_flexibility_measures/version.rb +1 -1
- metadata +2 -4
- data/.DS_Store +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3067d071796cf31183292010668e79ad8f434cc5affc3cdb991d9fa79afb5a07
|
4
|
+
data.tar.gz: 445adcf8663134e60fe14eb8d50104920eab3703e11ebd73e6f12782f716748b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c62fbf8957c40e177a11148e344c4bb357bc2ab84256842166596bfb6676208500f5d58ca0be8267f70fdd0866a5694b1ee5a8576a8d4dc6d0fbe053900717a
|
7
|
+
data.tar.gz: 99bccbd7f9c5400c53ee041394f921fd9a10bae81f9ca8bd6caadcd91fa44009b958dcabb556cda9ed149d481272c84539b883674687fca62d9dee6028542767
|
data/CHANGELOG.md
CHANGED
@@ -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 +1,27 @@
|
|
1
|
-
|
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
|
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
|
-
|
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>
|
7
|
-
<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>
|
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
|
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>
|
368
|
+
<filename>LICENSE.md</filename>
|
376
369
|
<filetype>md</filetype>
|
377
|
-
<usage_type>
|
378
|
-
<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>
|
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>
|
388
|
+
<checksum>3E6F88C9</checksum>
|
390
389
|
</file>
|
391
390
|
<file>
|
392
|
-
<filename>
|
393
|
-
<filetype>
|
394
|
-
<usage_type>
|
395
|
-
<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
|
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 =
|
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
|
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
|
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
|
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
|
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
|
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
|
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(
|
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__) + '
|
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__) + '
|
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>
|
7
|
-
<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
|
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
|
95
|
-
<description>Select if building is occupied on weekends
|
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
|
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>
|
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>
|
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
|
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
|
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
|
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
|
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
|
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
|
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(
|
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(
|
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(
|
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.
|
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>
|
7
|
-
<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.
|
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>
|
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
|
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
|
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
|
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
|
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
|
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>
|
483
|
+
<checksum>4CDCF2D8</checksum>
|
493
484
|
</file>
|
494
485
|
<file>
|
495
486
|
<version>
|
496
487
|
<software_program>OpenStudio</software_program>
|
497
|
-
<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>
|
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'
|
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.
|
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-
|
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
|