openstudio-load-flexibility-measures 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/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
|