buildingsync 0.2.0
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 +7 -0
- data/.github/workflows/continuous_integration.yml +146 -0
- data/.gitignore +33 -0
- data/.rspec +3 -0
- data/.rubocop.yml +10 -0
- data/CHANGELOG.md +50 -0
- data/Gemfile +31 -0
- data/Jenkinsfile +10 -0
- data/LICENSE.md +29 -0
- data/README.md +105 -0
- data/Rakefile +77 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/buildingsync.gemspec +37 -0
- data/config.rb.in +26 -0
- data/doc_templates/LICENSE.md +29 -0
- data/doc_templates/README.md.erb +42 -0
- data/doc_templates/copyright_erb.txt +38 -0
- data/doc_templates/copyright_js.txt +5 -0
- data/doc_templates/copyright_ruby.txt +36 -0
- data/lib/buildingsync.rb +43 -0
- data/lib/buildingsync/all_resource_total.rb +54 -0
- data/lib/buildingsync/audit_date.rb +54 -0
- data/lib/buildingsync/constants.rb +49 -0
- data/lib/buildingsync/contact.rb +54 -0
- data/lib/buildingsync/extension.rb +57 -0
- data/lib/buildingsync/generator.rb +584 -0
- data/lib/buildingsync/get_bcl_weather_file.rb +326 -0
- data/lib/buildingsync/helpers/Model.hvac.rb +216 -0
- data/lib/buildingsync/helpers/helper.rb +494 -0
- data/lib/buildingsync/helpers/xml_get_set.rb +215 -0
- data/lib/buildingsync/makers/phase_zero_base.osw +178 -0
- data/lib/buildingsync/makers/workflow_maker.json +811 -0
- data/lib/buildingsync/makers/workflow_maker.rb +581 -0
- data/lib/buildingsync/makers/workflow_maker_base.rb +167 -0
- data/lib/buildingsync/model_articulation/building.rb +1119 -0
- data/lib/buildingsync/model_articulation/building_and_system_types.json +121 -0
- data/lib/buildingsync/model_articulation/building_section.rb +190 -0
- data/lib/buildingsync/model_articulation/building_system.rb +49 -0
- data/lib/buildingsync/model_articulation/envelope_system.rb +102 -0
- data/lib/buildingsync/model_articulation/exterior_floor_system_type.rb +64 -0
- data/lib/buildingsync/model_articulation/facility.rb +439 -0
- data/lib/buildingsync/model_articulation/foundation_system_type.rb +64 -0
- data/lib/buildingsync/model_articulation/hvac_system.rb +395 -0
- data/lib/buildingsync/model_articulation/lighting_system.rb +102 -0
- data/lib/buildingsync/model_articulation/loads_system.rb +287 -0
- data/lib/buildingsync/model_articulation/location_element.rb +129 -0
- data/lib/buildingsync/model_articulation/measure.rb +57 -0
- data/lib/buildingsync/model_articulation/roof_system_type.rb +64 -0
- data/lib/buildingsync/model_articulation/service_hot_water_system.rb +87 -0
- data/lib/buildingsync/model_articulation/site.rb +242 -0
- data/lib/buildingsync/model_articulation/spatial_element.rb +343 -0
- data/lib/buildingsync/model_articulation/wall_system_type.rb +64 -0
- data/lib/buildingsync/report.rb +217 -0
- data/lib/buildingsync/resource_use.rb +55 -0
- data/lib/buildingsync/scenario.rb +622 -0
- data/lib/buildingsync/selection_tool.rb +98 -0
- data/lib/buildingsync/time_series.rb +85 -0
- data/lib/buildingsync/translator.rb +167 -0
- data/lib/buildingsync/utility.rb +67 -0
- data/lib/buildingsync/version.rb +45 -0
- metadata +223 -0
@@ -0,0 +1,215 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# *******************************************************************************
|
4
|
+
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
5
|
+
# BuildingSync(R), Copyright (c) 2015-2020, Alliance for Sustainable Energy, LLC.
|
6
|
+
# All rights reserved.
|
7
|
+
#
|
8
|
+
# Redistribution and use in source and binary forms, with or without
|
9
|
+
# modification, are permitted provided that the following conditions are met:
|
10
|
+
#
|
11
|
+
# (1) Redistributions of source code must retain the above copyright notice,
|
12
|
+
# this list of conditions and the following disclaimer.
|
13
|
+
#
|
14
|
+
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
15
|
+
# this list of conditions and the following disclaimer in the documentation
|
16
|
+
# and/or other materials provided with the distribution.
|
17
|
+
#
|
18
|
+
# (3) Neither the name of the copyright holder nor the names of any contributors
|
19
|
+
# may be used to endorse or promote products derived from this software without
|
20
|
+
# specific prior written permission from the respective party.
|
21
|
+
#
|
22
|
+
# (4) Other than as required in clauses (1) and (2), distributions in any form
|
23
|
+
# of modifications or other derivative works may not use the "OpenStudio"
|
24
|
+
# trademark, "OS", "os", or any other confusingly similar designation without
|
25
|
+
# specific prior written permission from Alliance for Sustainable Energy, LLC.
|
26
|
+
#
|
27
|
+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
28
|
+
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
29
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
30
|
+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
31
|
+
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
32
|
+
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
33
|
+
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
34
|
+
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
35
|
+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
36
|
+
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
37
|
+
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
38
|
+
# *******************************************************************************
|
39
|
+
require 'rexml/document'
|
40
|
+
|
41
|
+
require 'buildingsync/helpers/helper'
|
42
|
+
|
43
|
+
module BuildingSync
|
44
|
+
# Used for getting, setting, and creating XML snippets
|
45
|
+
# for BuildingSync classes with an @base_xml attribute
|
46
|
+
module XmlGetSet
|
47
|
+
def get_prefix
|
48
|
+
if @ns == ''
|
49
|
+
return ''
|
50
|
+
else
|
51
|
+
return "#{@ns}:"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Get the id attribute of the @base_xml
|
56
|
+
# @see help_get_attribute_value
|
57
|
+
def xget_id
|
58
|
+
return help_get_attribute_value(@base_xml, 'ID')
|
59
|
+
end
|
60
|
+
|
61
|
+
# Get the name of the element, based on the type of element
|
62
|
+
# @example scenario.get_name, returns text for ScenarioName element
|
63
|
+
# @example site.get_name, returns text for SiteName
|
64
|
+
# @return [String] name associated with the @base_xml
|
65
|
+
def xget_name
|
66
|
+
premises = ['Site', 'Building', 'Section', 'ThermalZone', 'Space']
|
67
|
+
if premises.include? @base_xml.name
|
68
|
+
return xget_text('PremisesName')
|
69
|
+
elsif @base_xml.name == 'Measure'
|
70
|
+
m = @base_xml.elements[".//#{get_prefix}MeasureName"]
|
71
|
+
return help_get_text_value(m)
|
72
|
+
else
|
73
|
+
return xget_text("#{@base_xml.name}Name")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def xget_attribute_for_element(element_name, attribute)
|
78
|
+
element = @base_xml.elements["./#{get_prefix}#{element_name}"]
|
79
|
+
return help_get_attribute_value(element, attribute)
|
80
|
+
end
|
81
|
+
|
82
|
+
# returns the first element with the specified element name
|
83
|
+
# @param element_name [String] non-namespaced element name, 'EnergyResource'
|
84
|
+
# @return [REXML::Element] if element exists
|
85
|
+
# @return [nil] if element doesnt exist
|
86
|
+
def xget_element(element_name)
|
87
|
+
return @base_xml.elements["./#{get_prefix}#{element_name}"]
|
88
|
+
end
|
89
|
+
|
90
|
+
# get or create a new element
|
91
|
+
# @param element_name [String] non-namespaced element name, 'EnergyResource'
|
92
|
+
# @see help_get_or_create
|
93
|
+
def xget_or_create(element_name)
|
94
|
+
return help_get_or_create(@base_xml, "#{get_prefix}#{element_name}")
|
95
|
+
end
|
96
|
+
|
97
|
+
# @param element_name [String] non-namespaced element name, 'EnergyResource'
|
98
|
+
# @see help_get_text_value
|
99
|
+
def xget_text(element_name)
|
100
|
+
return help_get_text_value(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
101
|
+
end
|
102
|
+
|
103
|
+
# @param element_name [String] non-namespaced element name, 'YearOfConstruction'
|
104
|
+
# @see help_get_text_value_as_float
|
105
|
+
def xget_text_as_float(element_name)
|
106
|
+
return help_get_text_value_as_float(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
107
|
+
end
|
108
|
+
|
109
|
+
# @param element_name [String] non-namespaced element name, 'YearOfConstruction'
|
110
|
+
# @see help_get_text_value_as_integer
|
111
|
+
def xget_text_as_integer(element_name)
|
112
|
+
return help_get_text_value_as_integer(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
113
|
+
end
|
114
|
+
|
115
|
+
# @param element_name [String] non-namespaced element name, 'BuildingAutomationSystem'
|
116
|
+
# @see help_get_text_value_as_bool
|
117
|
+
def xget_text_as_bool(element_name)
|
118
|
+
return help_get_text_value_as_bool(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
119
|
+
end
|
120
|
+
|
121
|
+
# @param element_name [String] non-namespaced element name, 'RetrocommissioningDate'
|
122
|
+
# @see help_get_text_value_as_date
|
123
|
+
def xget_text_as_date(element_name)
|
124
|
+
return help_get_text_value_as_date(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
125
|
+
end
|
126
|
+
|
127
|
+
# @param element_name [String] non-namespaced element name, 'StartTimestamp'
|
128
|
+
# @see help_get_text_value_as_datetime
|
129
|
+
def xget_text_as_dt(element_name)
|
130
|
+
return help_get_text_value_as_datetime(@base_xml.elements["./#{get_prefix}#{element_name}"])
|
131
|
+
end
|
132
|
+
|
133
|
+
# Gets all of the IDref attributes of the element_name provided
|
134
|
+
# assumes there is a parent child containment downstream of the base_xml,
|
135
|
+
# where the parent is a plural version of the element_name provided
|
136
|
+
# @example xget_idrefs('Measure') #=> Searches for .//Measures/Measure
|
137
|
+
# @param element_name [String] name of the non-pluralized element, i.e. Measure
|
138
|
+
# @return [Array<String>] all associated IDs ['Measure-1', 'Measure-2', etc.]
|
139
|
+
def xget_idrefs(element_name)
|
140
|
+
id_elements = @base_xml.get_elements(".//#{get_prefix}#{element_name}s/#{get_prefix}#{element_name}")
|
141
|
+
to_return = []
|
142
|
+
id_elements.each do |id|
|
143
|
+
to_return << help_get_attribute_value(id, 'IDref')
|
144
|
+
end
|
145
|
+
return to_return
|
146
|
+
end
|
147
|
+
|
148
|
+
def xget_plurals_text_value(element_name)
|
149
|
+
plurals = @base_xml.get_elements(".//#{get_prefix}#{element_name}s/#{get_prefix}#{element_name}")
|
150
|
+
to_return = []
|
151
|
+
plurals.each do |p|
|
152
|
+
to_return << help_get_text_value(p)
|
153
|
+
end
|
154
|
+
return to_return
|
155
|
+
end
|
156
|
+
|
157
|
+
# Get the linked premises ids of the @base_xml element
|
158
|
+
# @return [Hash] where keys are premise types and values are an array of ids
|
159
|
+
# @example {'Building' => ['Building-1', 'Building-1'], 'Section' => ['Section-4']]}
|
160
|
+
def xget_linked_premises
|
161
|
+
map = {}
|
162
|
+
premises = @base_xml.get_elements(".//#{get_prefix}LinkedPremises").first
|
163
|
+
premises&.elements&.each do |premise_type|
|
164
|
+
map[premise_type.name] = []
|
165
|
+
idref_elements = premise_type.get_elements('.//*[@IDref]')
|
166
|
+
idref_elements&.each do |element|
|
167
|
+
map[premise_type.name] << element.attributes['IDref']
|
168
|
+
end
|
169
|
+
end
|
170
|
+
return map
|
171
|
+
end
|
172
|
+
|
173
|
+
# Only sets the text for an element if it exists
|
174
|
+
# @param element_name [String] non-namespaced element name, 'EnergyResource'
|
175
|
+
# @param new_value [String] new text value to use, 'Electricity'
|
176
|
+
# @return [REXML::Element] if element exists
|
177
|
+
# @return [nil] if element doesn't exist
|
178
|
+
def xset_text(element_name, new_value)
|
179
|
+
element = @base_xml.elements["./#{get_prefix}#{element_name}"]
|
180
|
+
if !element.nil?
|
181
|
+
element.text = new_value
|
182
|
+
end
|
183
|
+
return element
|
184
|
+
end
|
185
|
+
|
186
|
+
# Sets the text for an element if it exists, or creates the element then sets
|
187
|
+
# the text if it doesn't exist
|
188
|
+
# @param element_name [String] non-namespaced element name, 'EnergyResource'
|
189
|
+
# @param new_value [String] new text value to use, 'Electricity'
|
190
|
+
# @param override [Boolean] whether to override the text value if the element already has text
|
191
|
+
# @return [REXML::Element] the element
|
192
|
+
def xset_or_create(element_name, new_value, override = true)
|
193
|
+
element = @base_xml.elements["./#{get_prefix}#{element_name}"]
|
194
|
+
if !element.nil?
|
195
|
+
# if there is no value, we set it
|
196
|
+
if element.text.nil? || element.text.empty?
|
197
|
+
element.text = new_value
|
198
|
+
# if there is a value but we are overriding, we set it
|
199
|
+
elsif override
|
200
|
+
element.text = new_value
|
201
|
+
end
|
202
|
+
else
|
203
|
+
element = REXML::Element.new("#{get_prefix}#{element_name}", @base_xml)
|
204
|
+
element.text = new_value
|
205
|
+
end
|
206
|
+
if element.text.nil?
|
207
|
+
raise StandardError, "Unable to set #{element_name} to nil"
|
208
|
+
end
|
209
|
+
if element.text.empty?
|
210
|
+
raise StandardError, "Unable to set #{element_name} to be empty"
|
211
|
+
end
|
212
|
+
return element
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
@@ -0,0 +1,178 @@
|
|
1
|
+
{
|
2
|
+
"seed_file": "../in.osm",
|
3
|
+
"weather_file": null,
|
4
|
+
"root_directory": null,
|
5
|
+
"run_directory": null,
|
6
|
+
"file_paths": null,
|
7
|
+
"measure_paths": null,
|
8
|
+
"steps": [{
|
9
|
+
"measure_dir_name": "SetLightingLoadsByLPD",
|
10
|
+
"arguments": {
|
11
|
+
"__SKIP__": true
|
12
|
+
}
|
13
|
+
}, {
|
14
|
+
"measure_dir_name": "AddDaylightSensors",
|
15
|
+
"arguments": {
|
16
|
+
"__SKIP__": true
|
17
|
+
}
|
18
|
+
}, {
|
19
|
+
"measure_dir_name": "ReduceLightingLoadsByPercentage",
|
20
|
+
"arguments": {
|
21
|
+
"__SKIP__": true
|
22
|
+
}
|
23
|
+
}, {
|
24
|
+
"measure_dir_name": "tenant_star_internal_loads",
|
25
|
+
"arguments": {
|
26
|
+
"__SKIP__": true
|
27
|
+
}
|
28
|
+
}, {
|
29
|
+
"measure_dir_name": "ReduceElectricEquipmentLoadsByPercentage",
|
30
|
+
"arguments": {
|
31
|
+
"__SKIP__": true
|
32
|
+
}
|
33
|
+
}, {
|
34
|
+
"measure_dir_name": "ReduceSpaceInfiltrationByPercentage",
|
35
|
+
"arguments": {
|
36
|
+
"__SKIP__": true
|
37
|
+
}
|
38
|
+
}, {
|
39
|
+
"measure_dir_name": "IncreaseInsulationRValueForExteriorWalls",
|
40
|
+
"arguments": {
|
41
|
+
"__SKIP__": true
|
42
|
+
}
|
43
|
+
}, {
|
44
|
+
"measure_dir_name": "IncreaseInsulationRValueForExteriorWallsByPercentage",
|
45
|
+
"arguments": {
|
46
|
+
"__SKIP__": true
|
47
|
+
}
|
48
|
+
}, {
|
49
|
+
"measure_dir_name": "IncreaseInsulationRValueForRoofs",
|
50
|
+
"arguments": {
|
51
|
+
"__SKIP__": true
|
52
|
+
}
|
53
|
+
}, {
|
54
|
+
"measure_dir_name": "IncreaseInsulationRValueForRoofsByPercentage",
|
55
|
+
"arguments": {
|
56
|
+
"__SKIP__": true
|
57
|
+
}
|
58
|
+
}, {
|
59
|
+
"measure_dir_name": "replace_simple_glazing",
|
60
|
+
"arguments": {
|
61
|
+
"__SKIP__": true
|
62
|
+
}
|
63
|
+
}, {
|
64
|
+
"measure_dir_name": "improve_simple_glazing_by_percentage",
|
65
|
+
"arguments": {
|
66
|
+
"__SKIP__": true
|
67
|
+
}
|
68
|
+
}, {
|
69
|
+
"measure_dir_name": "SetGasBurnerEfficiency",
|
70
|
+
"arguments": {
|
71
|
+
"__SKIP__": true
|
72
|
+
}
|
73
|
+
}, {
|
74
|
+
"measure_dir_name": "set_boiler_thermal_efficiency",
|
75
|
+
"arguments": {
|
76
|
+
"__SKIP__": true
|
77
|
+
}
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"measure_dir_name": "SetCOPforSingleSpeedDXCoolingUnits",
|
81
|
+
"arguments": {
|
82
|
+
"__SKIP__": true
|
83
|
+
}
|
84
|
+
}, {
|
85
|
+
"measure_dir_name": "SetCOPforTwoSpeedDXCoolingUnits",
|
86
|
+
"arguments": {
|
87
|
+
"__SKIP__": true
|
88
|
+
}
|
89
|
+
}, {
|
90
|
+
"measure_dir_name": "replace_hvac_with_gshp_and_doas",
|
91
|
+
"arguments": {
|
92
|
+
"__SKIP__": true
|
93
|
+
}
|
94
|
+
}, {
|
95
|
+
"measure_dir_name": "vr_fwith_doas",
|
96
|
+
"arguments": {
|
97
|
+
"__SKIP__": true
|
98
|
+
}
|
99
|
+
}, {
|
100
|
+
"measure_dir_name": "add_apszhp_to_each_zone",
|
101
|
+
"arguments": {
|
102
|
+
"__SKIP__": true
|
103
|
+
}
|
104
|
+
}, {
|
105
|
+
"measure_dir_name": "AdjustThermostatSetpointsByDegrees",
|
106
|
+
"arguments": {
|
107
|
+
"__SKIP__": true
|
108
|
+
}
|
109
|
+
}, {
|
110
|
+
"measure_dir_name": "ReplaceFanTotalEfficiency",
|
111
|
+
"arguments": {
|
112
|
+
"__SKIP__": true
|
113
|
+
}
|
114
|
+
}, {
|
115
|
+
"measure_dir_name": "ImproveFanTotalEfficiencybyPercentage",
|
116
|
+
"arguments": {
|
117
|
+
"__SKIP__": true
|
118
|
+
}
|
119
|
+
}, {
|
120
|
+
"measure_dir_name": "EnableDemandControlledVentilation",
|
121
|
+
"arguments": {
|
122
|
+
"__SKIP__": true
|
123
|
+
}
|
124
|
+
}, {
|
125
|
+
"measure_dir_name": "EnableEconomizerControl",
|
126
|
+
"arguments": {
|
127
|
+
"__SKIP__": true
|
128
|
+
}
|
129
|
+
}, {
|
130
|
+
"measure_dir_name": "add_energy_recovery_ventilator",
|
131
|
+
"arguments": {
|
132
|
+
"__SKIP__": true
|
133
|
+
}
|
134
|
+
}, {
|
135
|
+
"measure_dir_name": "set_water_heater_efficiency_heat_lossand_peak_water_flow_rate",
|
136
|
+
"arguments": {
|
137
|
+
"__SKIP__": true
|
138
|
+
}
|
139
|
+
}, {
|
140
|
+
"measure_dir_name": "reduce_water_use_by_percentage",
|
141
|
+
"arguments": {
|
142
|
+
"__SKIP__": true
|
143
|
+
}
|
144
|
+
}, {
|
145
|
+
"measure_dir_name": "tariff_selection_generic",
|
146
|
+
"arguments": {
|
147
|
+
"__SKIP__": false
|
148
|
+
}
|
149
|
+
}, {
|
150
|
+
"measure_dir_name": "openstudio_results",
|
151
|
+
"arguments": {
|
152
|
+
"__SKIP__": false,
|
153
|
+
"building_summary_section": true,
|
154
|
+
"annual_overview_section": true,
|
155
|
+
"monthly_overview_section": true,
|
156
|
+
"utility_bills_rates_section": true,
|
157
|
+
"envelope_section_section": true,
|
158
|
+
"space_type_breakdown_section": true,
|
159
|
+
"space_type_details_section": true,
|
160
|
+
"interior_lighting_section": true,
|
161
|
+
"plug_loads_section": true,
|
162
|
+
"exterior_light_section": true,
|
163
|
+
"water_use_section": true,
|
164
|
+
"hvac_load_profile": true,
|
165
|
+
"zone_condition_section": true,
|
166
|
+
"zone_summary_section": true,
|
167
|
+
"zone_equipment_detail_section": true,
|
168
|
+
"air_loops_detail_section": true,
|
169
|
+
"plant_loops_detail_section": true,
|
170
|
+
"outdoor_air_section": true,
|
171
|
+
"cost_summary_section": true,
|
172
|
+
"source_energy_section": true,
|
173
|
+
"schedules_overview_section": true,
|
174
|
+
"reg_monthly_details": true
|
175
|
+
}
|
176
|
+
}
|
177
|
+
]
|
178
|
+
}
|
@@ -0,0 +1,811 @@
|
|
1
|
+
{
|
2
|
+
"Lighting": [{
|
3
|
+
"Retrofit with light emitting diode technologies": {
|
4
|
+
"measure_dir_name": "SetLightingLoadsByLPD",
|
5
|
+
"arguments": [{
|
6
|
+
"name": "__SKIP__",
|
7
|
+
"value": false,
|
8
|
+
"condition": ""
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"name": "lpd",
|
12
|
+
"value": 0.6,
|
13
|
+
"condition": ""
|
14
|
+
}
|
15
|
+
]
|
16
|
+
}
|
17
|
+
},
|
18
|
+
{
|
19
|
+
"Add daylight controls": {
|
20
|
+
"measure_dir_name": "AddDaylightSensors",
|
21
|
+
"arguments": [{
|
22
|
+
"name": "__SKIP__",
|
23
|
+
"value": false,
|
24
|
+
"condition": ""
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"name": "space_type",
|
28
|
+
"value": "Office WholeBuilding - Sm Office -",
|
29
|
+
"condition": "SmallOffice"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"name": "space_type",
|
33
|
+
"value": "Office WholeBuilding - Md Office -",
|
34
|
+
"condition": "MediumOffice"
|
35
|
+
},
|
36
|
+
{
|
37
|
+
"name": "space_type",
|
38
|
+
"value": "Retail Retail -",
|
39
|
+
"condition": "RetailStandalone"
|
40
|
+
}
|
41
|
+
]
|
42
|
+
}
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"Add occupancy sensors": {
|
46
|
+
"measure_dir_name": "ReduceLightingLoadsByPercentage",
|
47
|
+
"arguments": [{
|
48
|
+
"name": "__SKIP__",
|
49
|
+
"value": false,
|
50
|
+
"condition": ""
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"name": "lighting_power_reduction_percent",
|
54
|
+
"value": 5,
|
55
|
+
"condition": ""
|
56
|
+
}
|
57
|
+
]
|
58
|
+
}
|
59
|
+
}
|
60
|
+
],
|
61
|
+
"Plug Load": [{
|
62
|
+
"Replace with ENERGY STAR rated": {
|
63
|
+
"measure_dir_name": "tenant_star_internal_loads",
|
64
|
+
"arguments": [{
|
65
|
+
"name": "__SKIP__",
|
66
|
+
"value": false,
|
67
|
+
"condition": ""
|
68
|
+
},
|
69
|
+
{
|
70
|
+
"name": "epd",
|
71
|
+
"value": 0.6,
|
72
|
+
"condition": ""
|
73
|
+
}
|
74
|
+
]
|
75
|
+
}
|
76
|
+
},
|
77
|
+
{
|
78
|
+
"Install plug load controls": {
|
79
|
+
"measure_dir_name": "ReduceElectricEquipmentLoadsByPercentage",
|
80
|
+
"arguments": [{
|
81
|
+
"name": "__SKIP__",
|
82
|
+
"value": false,
|
83
|
+
"condition": ""
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"name": "elecequip_power_reduction_percent",
|
87
|
+
"value": 20.0,
|
88
|
+
"condition": ""
|
89
|
+
}
|
90
|
+
]
|
91
|
+
}
|
92
|
+
}
|
93
|
+
],
|
94
|
+
"Refrigeration": [{
|
95
|
+
"Replace ice/refrigeration equipment with high efficiency units": {
|
96
|
+
"measure_dir_name": "ReduceElectricEquipmentLoadsByPercentage",
|
97
|
+
"arguments": [{
|
98
|
+
"name": "__SKIP__",
|
99
|
+
"value": false,
|
100
|
+
"condition": ""
|
101
|
+
},
|
102
|
+
{
|
103
|
+
"name": "elecequip_power_reduction_percent",
|
104
|
+
"value": 5,
|
105
|
+
"condition": ""
|
106
|
+
}
|
107
|
+
]
|
108
|
+
}
|
109
|
+
}],
|
110
|
+
"Wall": [{
|
111
|
+
"Air seal envelope": {
|
112
|
+
"measure_dir_name": "ReduceSpaceInfiltrationByPercentage",
|
113
|
+
"arguments": [{
|
114
|
+
"name": "__SKIP__",
|
115
|
+
"value": false,
|
116
|
+
"condition": ""
|
117
|
+
},
|
118
|
+
{
|
119
|
+
"name": "space_infiltration_reduction_percent",
|
120
|
+
"value": 30.0,
|
121
|
+
"condition": ""
|
122
|
+
}
|
123
|
+
]
|
124
|
+
}
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"Increase wall insulation": {
|
128
|
+
"measure_dir_name": "IncreaseInsulationRValueForExteriorWalls",
|
129
|
+
"arguments": [{
|
130
|
+
"name": "__SKIP__",
|
131
|
+
"value": false,
|
132
|
+
"condition": ""
|
133
|
+
},
|
134
|
+
{
|
135
|
+
"name": "r_value",
|
136
|
+
"value": 25,
|
137
|
+
"condition": ""
|
138
|
+
}
|
139
|
+
]
|
140
|
+
}
|
141
|
+
},
|
142
|
+
{
|
143
|
+
"Insulate thermal bypasses": {
|
144
|
+
"measure_dir_name": "IncreaseInsulationRValueForExteriorWallsByPercentage",
|
145
|
+
"arguments": [{
|
146
|
+
"name": "__SKIP__",
|
147
|
+
"value": false,
|
148
|
+
"condition": ""
|
149
|
+
},
|
150
|
+
{
|
151
|
+
"name": "r_value",
|
152
|
+
"value": 20,
|
153
|
+
"condition": ""
|
154
|
+
}
|
155
|
+
]
|
156
|
+
}
|
157
|
+
}
|
158
|
+
],
|
159
|
+
"Roof": [{
|
160
|
+
"Increase roof insulation": {
|
161
|
+
"measure_dir_name": "IncreaseInsulationRValueForRoofs",
|
162
|
+
"arguments": [{
|
163
|
+
"name": "__SKIP__",
|
164
|
+
"value": false,
|
165
|
+
"condition": ""
|
166
|
+
},
|
167
|
+
{
|
168
|
+
"name": "r_value",
|
169
|
+
"value": 30,
|
170
|
+
"condition": ""
|
171
|
+
}
|
172
|
+
]
|
173
|
+
}
|
174
|
+
}],
|
175
|
+
"Ceiling": [{
|
176
|
+
"Increase ceiling insulation": {
|
177
|
+
"measure_dir_name": "IncreaseInsulationRValueForRoofsByPercentage",
|
178
|
+
"arguments": [{
|
179
|
+
"name": "__SKIP__",
|
180
|
+
"value": false,
|
181
|
+
"condition": ""
|
182
|
+
},
|
183
|
+
{
|
184
|
+
"name": "r_value",
|
185
|
+
"value": 20,
|
186
|
+
"condition": ""
|
187
|
+
}
|
188
|
+
]
|
189
|
+
}
|
190
|
+
}],
|
191
|
+
"Fenestration": [{
|
192
|
+
"Replace windows": {
|
193
|
+
"measure_dir_name": "replace_simple_glazing",
|
194
|
+
"arguments": [{
|
195
|
+
"name": "__SKIP__",
|
196
|
+
"value": false,
|
197
|
+
"condition": ""
|
198
|
+
},
|
199
|
+
{
|
200
|
+
"name": "u_value",
|
201
|
+
"value": 1.65,
|
202
|
+
"condition": ""
|
203
|
+
},
|
204
|
+
{
|
205
|
+
"name": "shgc",
|
206
|
+
"value": 0.2,
|
207
|
+
"condition": ""
|
208
|
+
},
|
209
|
+
{
|
210
|
+
"name": "vt",
|
211
|
+
"value": 0.81,
|
212
|
+
"condition": ""
|
213
|
+
}
|
214
|
+
]
|
215
|
+
}
|
216
|
+
},
|
217
|
+
{
|
218
|
+
"Add window films": {
|
219
|
+
"measure_dir_name": "improve_simple_glazing_by_percentage",
|
220
|
+
"arguments": [{
|
221
|
+
"name": "__SKIP__",
|
222
|
+
"value": false,
|
223
|
+
"condition": ""
|
224
|
+
},
|
225
|
+
{
|
226
|
+
"name": "u_value_improvement_percent",
|
227
|
+
"value": 10,
|
228
|
+
"condition": ""
|
229
|
+
},
|
230
|
+
{
|
231
|
+
"name": "shgc_improvement_percent",
|
232
|
+
"value": 30,
|
233
|
+
"condition": ""
|
234
|
+
}
|
235
|
+
]
|
236
|
+
}
|
237
|
+
}
|
238
|
+
],
|
239
|
+
"Heating System": [{
|
240
|
+
"Replace burner": {
|
241
|
+
"measure_dir_name": "SetGasBurnerEfficiency",
|
242
|
+
"arguments": [{
|
243
|
+
"name": "__SKIP__",
|
244
|
+
"value": false,
|
245
|
+
"condition": "PSZ-AC with gas coil heat"
|
246
|
+
},
|
247
|
+
{
|
248
|
+
"name": "eff",
|
249
|
+
"value": 0.93,
|
250
|
+
"condition": "PSZ-AC with gas coil heat"
|
251
|
+
}
|
252
|
+
]
|
253
|
+
}
|
254
|
+
},
|
255
|
+
{
|
256
|
+
"Replace boiler": {
|
257
|
+
"measure_dir_name": "set_boiler_thermal_efficiency",
|
258
|
+
"arguments": [{
|
259
|
+
"name": "__SKIP__",
|
260
|
+
"value": false,
|
261
|
+
"condition": "PVAV with reheat"
|
262
|
+
},
|
263
|
+
{
|
264
|
+
"name": "input_option_manual",
|
265
|
+
"value": true,
|
266
|
+
"condition": "PVAV with reheat"
|
267
|
+
},
|
268
|
+
{
|
269
|
+
"name": "boiler_thermal_efficiency",
|
270
|
+
"value": 0.93,
|
271
|
+
"condition": "PVAV with reheat"
|
272
|
+
}
|
273
|
+
]
|
274
|
+
}
|
275
|
+
}
|
276
|
+
],
|
277
|
+
"Cooling System": [{
|
278
|
+
"Replace package units": {
|
279
|
+
"measure_dir_name": "SetCOPforSingleSpeedDXCoolingUnits",
|
280
|
+
"arguments": [
|
281
|
+
{
|
282
|
+
"name": "__SKIP__",
|
283
|
+
"value": false,
|
284
|
+
"condition": "PSZ-AC with gas coil heat"
|
285
|
+
},
|
286
|
+
{
|
287
|
+
"name": "cop",
|
288
|
+
"value": 4.1,
|
289
|
+
"condition": "PSZ-AC with gas coil heat"
|
290
|
+
}
|
291
|
+
]
|
292
|
+
}
|
293
|
+
},
|
294
|
+
{
|
295
|
+
"Replace package units": {
|
296
|
+
"measure_dir_name": "SetCOPforTwoSpeedDXCoolingUnits",
|
297
|
+
"arguments": [
|
298
|
+
{
|
299
|
+
"name": "__SKIP__",
|
300
|
+
"value": false,
|
301
|
+
"condition": "PVAV with reheat"
|
302
|
+
},
|
303
|
+
{
|
304
|
+
"name": "cop_high",
|
305
|
+
"value": 4.1,
|
306
|
+
"condition": "PVAV with reheat"
|
307
|
+
},
|
308
|
+
{
|
309
|
+
"name": "cop_low",
|
310
|
+
"value": 4.1,
|
311
|
+
"condition": "PVAV with reheat"
|
312
|
+
}
|
313
|
+
]
|
314
|
+
}
|
315
|
+
}],
|
316
|
+
"Other HVAC": [{
|
317
|
+
"Replace HVAC system type to VRF": {
|
318
|
+
"measure_dir_name": "vr_fwith_doas",
|
319
|
+
"arguments": [{
|
320
|
+
"name": "__SKIP__",
|
321
|
+
"value": false,
|
322
|
+
"condition": ""
|
323
|
+
},
|
324
|
+
{
|
325
|
+
"name": "Office WholeBuilding - Sm Office -",
|
326
|
+
"value": true,
|
327
|
+
"condition": "SmallOffice"
|
328
|
+
},
|
329
|
+
{
|
330
|
+
"name": "Office WholeBuilding - Md Office -",
|
331
|
+
"value": true,
|
332
|
+
"condition": "MediumOffice"
|
333
|
+
},
|
334
|
+
{
|
335
|
+
"name": "Retail Retail -",
|
336
|
+
"value": true,
|
337
|
+
"condition": "RetailStandalone"
|
338
|
+
},
|
339
|
+
{
|
340
|
+
"name": "Retail Point_of_Sale -",
|
341
|
+
"value": true,
|
342
|
+
"condition": "RetailStandalone"
|
343
|
+
},
|
344
|
+
{
|
345
|
+
"name": "Retail Entry -",
|
346
|
+
"value": true,
|
347
|
+
"condition": "RetailStandalone"
|
348
|
+
},
|
349
|
+
{
|
350
|
+
"name": "Retail Back_Space -",
|
351
|
+
"value": true,
|
352
|
+
"condition": "RetailStandalone"
|
353
|
+
},
|
354
|
+
{
|
355
|
+
"name": "vrfCoolCOP",
|
356
|
+
"value": 6.0,
|
357
|
+
"condition": ""
|
358
|
+
},
|
359
|
+
{
|
360
|
+
"name": "vrfHeatCOP",
|
361
|
+
"value": 6.0,
|
362
|
+
"condition": ""
|
363
|
+
},
|
364
|
+
{
|
365
|
+
"name": "doasDXEER",
|
366
|
+
"value": 14,
|
367
|
+
"condition": ""
|
368
|
+
}
|
369
|
+
]
|
370
|
+
}
|
371
|
+
},
|
372
|
+
{
|
373
|
+
"VRF with DOAS": {
|
374
|
+
"measure_dir_name": "vr_fwith_doas",
|
375
|
+
"arguments": [{
|
376
|
+
"name": "__SKIP__",
|
377
|
+
"value": false,
|
378
|
+
"condition": ""
|
379
|
+
},
|
380
|
+
{
|
381
|
+
"name": "Office WholeBuilding - Sm Office -",
|
382
|
+
"value": true,
|
383
|
+
"condition": "SmallOffice"
|
384
|
+
},
|
385
|
+
{
|
386
|
+
"name": "Office WholeBuilding - Md Office -",
|
387
|
+
"value": true,
|
388
|
+
"condition": "MediumOffice"
|
389
|
+
},
|
390
|
+
{
|
391
|
+
"name": "Retail Retail -",
|
392
|
+
"value": true,
|
393
|
+
"condition": "RetailStandalone"
|
394
|
+
},
|
395
|
+
{
|
396
|
+
"name": "Retail Point_of_Sale -",
|
397
|
+
"value": true,
|
398
|
+
"condition": "RetailStandalone"
|
399
|
+
},
|
400
|
+
{
|
401
|
+
"name": "Retail Entry -",
|
402
|
+
"value": true,
|
403
|
+
"condition": "RetailStandalone"
|
404
|
+
},
|
405
|
+
{
|
406
|
+
"name": "Retail Back_Space -",
|
407
|
+
"value": true,
|
408
|
+
"condition": "RetailStandalone"
|
409
|
+
},
|
410
|
+
{
|
411
|
+
"name": "vrfCoolCOP",
|
412
|
+
"value": 6.0,
|
413
|
+
"condition": ""
|
414
|
+
},
|
415
|
+
{
|
416
|
+
"name": "vrfHeatCOP",
|
417
|
+
"value": 6.0,
|
418
|
+
"condition": ""
|
419
|
+
},
|
420
|
+
{
|
421
|
+
"name": "doasDXEER",
|
422
|
+
"value": 14,
|
423
|
+
"condition": ""
|
424
|
+
}
|
425
|
+
]
|
426
|
+
}
|
427
|
+
},
|
428
|
+
{
|
429
|
+
"Replace HVAC with GSHP and DOAS": {
|
430
|
+
"measure_dir_name": "replace_hvac_with_gshp_and_doas",
|
431
|
+
"arguments": [{
|
432
|
+
"name": "__SKIP__",
|
433
|
+
"value": false,
|
434
|
+
"condition": ""
|
435
|
+
},
|
436
|
+
{
|
437
|
+
"name": "Office WholeBuilding - Sm Office -",
|
438
|
+
"value": true,
|
439
|
+
"condition": "SmallOffice"
|
440
|
+
},
|
441
|
+
{
|
442
|
+
"name": "Office WholeBuilding - Md Office -",
|
443
|
+
"value": true,
|
444
|
+
"condition": "MediumOffice"
|
445
|
+
},
|
446
|
+
{
|
447
|
+
"name": "Office WholeBuilding - Md Office -",
|
448
|
+
"value": true,
|
449
|
+
"condition": "MediumOffice"
|
450
|
+
},
|
451
|
+
{
|
452
|
+
"name": "Retail Retail -",
|
453
|
+
"value": true,
|
454
|
+
"condition": "RetailStandalone"
|
455
|
+
},
|
456
|
+
{
|
457
|
+
"name": "Retail Point_of_Sale -",
|
458
|
+
"value": true,
|
459
|
+
"condition": "RetailStandalone"
|
460
|
+
},
|
461
|
+
{
|
462
|
+
"name": "Retail Entry -",
|
463
|
+
"value": true,
|
464
|
+
"condition": "RetailStandalone"
|
465
|
+
},
|
466
|
+
{
|
467
|
+
"name": "Retail Back_Space -",
|
468
|
+
"value": true,
|
469
|
+
"condition": "RetailStandalone"
|
470
|
+
}
|
471
|
+
]
|
472
|
+
}
|
473
|
+
},
|
474
|
+
{
|
475
|
+
"Replace AC and heating units with ground coupled heat pump systems": {
|
476
|
+
"measure_dir_name": "replace_hvac_with_gshp_and_doas",
|
477
|
+
"arguments": [{
|
478
|
+
"name": "__SKIP__",
|
479
|
+
"value": false,
|
480
|
+
"condition": ""
|
481
|
+
},
|
482
|
+
{
|
483
|
+
"name": "Office WholeBuilding - Sm Office -",
|
484
|
+
"value": true,
|
485
|
+
"condition": "SmallOffice"
|
486
|
+
},
|
487
|
+
{
|
488
|
+
"name": "Office WholeBuilding - Md Office -",
|
489
|
+
"value": true,
|
490
|
+
"condition": "MediumOffice"
|
491
|
+
},
|
492
|
+
{
|
493
|
+
"name": "Office WholeBuilding - Md Office -",
|
494
|
+
"value": true,
|
495
|
+
"condition": "MediumOffice"
|
496
|
+
},
|
497
|
+
{
|
498
|
+
"name": "Retail Retail -",
|
499
|
+
"value": true,
|
500
|
+
"condition": "RetailStandalone"
|
501
|
+
},
|
502
|
+
{
|
503
|
+
"name": "Retail Point_of_Sale -",
|
504
|
+
"value": true,
|
505
|
+
"condition": "RetailStandalone"
|
506
|
+
},
|
507
|
+
{
|
508
|
+
"name": "Retail Entry -",
|
509
|
+
"value": true,
|
510
|
+
"condition": "RetailStandalone"
|
511
|
+
},
|
512
|
+
{
|
513
|
+
"name": "Retail Back_Space -",
|
514
|
+
"value": true,
|
515
|
+
"condition": "RetailStandalone"
|
516
|
+
}
|
517
|
+
]
|
518
|
+
}
|
519
|
+
},
|
520
|
+
{
|
521
|
+
"Replace HVAC system type to PZHP": {
|
522
|
+
"measure_dir_name": "add_apszhp_to_each_zone",
|
523
|
+
"arguments": [{
|
524
|
+
"name": "__SKIP__",
|
525
|
+
"value": false,
|
526
|
+
"condition": ""
|
527
|
+
},
|
528
|
+
{
|
529
|
+
"name": "delete_existing",
|
530
|
+
"value": true,
|
531
|
+
"condition": ""
|
532
|
+
},
|
533
|
+
{
|
534
|
+
"name": "cop_cooling",
|
535
|
+
"value": 3.1,
|
536
|
+
"condition": ""
|
537
|
+
},
|
538
|
+
{
|
539
|
+
"name": "cop_heating",
|
540
|
+
"value": 3.1,
|
541
|
+
"condition": ""
|
542
|
+
},
|
543
|
+
{
|
544
|
+
"name": "has_electric_coil",
|
545
|
+
"value": true,
|
546
|
+
"condition": ""
|
547
|
+
},
|
548
|
+
{
|
549
|
+
"name": "has_dcv",
|
550
|
+
"value": false,
|
551
|
+
"condition": ""
|
552
|
+
},
|
553
|
+
{
|
554
|
+
"name": "fan_type",
|
555
|
+
"value": "Constant Volume (default)",
|
556
|
+
"condition": ""
|
557
|
+
},
|
558
|
+
{
|
559
|
+
"name": "fan_pressure_rise",
|
560
|
+
"value": 0,
|
561
|
+
"condition": ""
|
562
|
+
},
|
563
|
+
{
|
564
|
+
"name": "filter_type",
|
565
|
+
"value": "By Space Type",
|
566
|
+
"condition": ""
|
567
|
+
},
|
568
|
+
{
|
569
|
+
"name": "space_type",
|
570
|
+
"value": "Office WholeBuilding - Sm Office -",
|
571
|
+
"condition": "SmallOffice"
|
572
|
+
},
|
573
|
+
{
|
574
|
+
"name": "system_type",
|
575
|
+
"value": "PSZ-AC with gas coil heat",
|
576
|
+
"condition": "MediumOffice"
|
577
|
+
},
|
578
|
+
{
|
579
|
+
"name": "space_type",
|
580
|
+
"value": "Office WholeBuilding - Md Office -",
|
581
|
+
"condition": "MediumOffice"
|
582
|
+
},
|
583
|
+
{
|
584
|
+
"name": "space_type",
|
585
|
+
"value": "Retail Retail -",
|
586
|
+
"condition": "RetailStandalone"
|
587
|
+
},
|
588
|
+
{
|
589
|
+
"name": "space_type",
|
590
|
+
"value": "Retail Point_of_Sale -",
|
591
|
+
"condition": "RetailStandalone"
|
592
|
+
},
|
593
|
+
{
|
594
|
+
"name": "space_type",
|
595
|
+
"value": "Retail Entry -",
|
596
|
+
"condition": "RetailStandalone"
|
597
|
+
},
|
598
|
+
{
|
599
|
+
"name": "space_type",
|
600
|
+
"value": "Retail Back_Space -",
|
601
|
+
"condition": "RetailStandalone"
|
602
|
+
}
|
603
|
+
]
|
604
|
+
}
|
605
|
+
}
|
606
|
+
],
|
607
|
+
"General Controls and Operations": [{
|
608
|
+
"Upgrade operating protocols, calibration, and/or sequencing": {
|
609
|
+
"measure_dir_name": "AdjustThermostatSetpointsByDegrees",
|
610
|
+
"arguments": [{
|
611
|
+
"name": "__SKIP__",
|
612
|
+
"value": false,
|
613
|
+
"condition": ""
|
614
|
+
},
|
615
|
+
{
|
616
|
+
"name": "cooling_adjustment",
|
617
|
+
"value": 1.0,
|
618
|
+
"condition": ""
|
619
|
+
},
|
620
|
+
{
|
621
|
+
"name": "heating_adjustment",
|
622
|
+
"value": -1.0,
|
623
|
+
"condition": ""
|
624
|
+
}
|
625
|
+
]
|
626
|
+
}
|
627
|
+
}],
|
628
|
+
"Fan": [{
|
629
|
+
"Replace with higher efficiency": {
|
630
|
+
"measure_dir_name": "ReplaceFanTotalEfficiency",
|
631
|
+
"arguments": [{
|
632
|
+
"name": "__SKIP__",
|
633
|
+
"value": false,
|
634
|
+
"condition": ""
|
635
|
+
},
|
636
|
+
{
|
637
|
+
"name": "motor_eff",
|
638
|
+
"value": 80.0,
|
639
|
+
"condition": ""
|
640
|
+
}
|
641
|
+
]
|
642
|
+
}
|
643
|
+
}],
|
644
|
+
"Air Distribution": [{
|
645
|
+
"Improve ventilation fans": {
|
646
|
+
"measure_dir_name": "ImproveFanTotalEfficiencybyPercentage",
|
647
|
+
"arguments": [{
|
648
|
+
"name": "__SKIP__",
|
649
|
+
"value": false,
|
650
|
+
"condition": ""
|
651
|
+
},
|
652
|
+
{
|
653
|
+
"name": "motor_eff",
|
654
|
+
"value": 10.0,
|
655
|
+
"condition": ""
|
656
|
+
}
|
657
|
+
]
|
658
|
+
}
|
659
|
+
},
|
660
|
+
{
|
661
|
+
"Install demand control ventilation": {
|
662
|
+
"measure_dir_name": "EnableDemandControlledVentilation",
|
663
|
+
"arguments": [{
|
664
|
+
"name": "__SKIP__",
|
665
|
+
"value": false,
|
666
|
+
"condition": ""
|
667
|
+
},
|
668
|
+
{
|
669
|
+
"name": "dcv_type",
|
670
|
+
"value": "EnableDCV",
|
671
|
+
"condition": ""
|
672
|
+
}
|
673
|
+
]
|
674
|
+
}
|
675
|
+
},
|
676
|
+
{
|
677
|
+
"Add or repair economizer": {
|
678
|
+
"measure_dir_name": "EnableEconomizerControl",
|
679
|
+
"arguments": [{
|
680
|
+
"name": "__SKIP__",
|
681
|
+
"value": false,
|
682
|
+
"condition": ""
|
683
|
+
},
|
684
|
+
{
|
685
|
+
"name": "economizer_type",
|
686
|
+
"value": "FixedDryBulb",
|
687
|
+
"condition": ""
|
688
|
+
}
|
689
|
+
]
|
690
|
+
}
|
691
|
+
}
|
692
|
+
],
|
693
|
+
"Heat Recovery": [{
|
694
|
+
"Add energy recovery": {
|
695
|
+
"measure_dir_name": "add_energy_recovery_ventilator",
|
696
|
+
"arguments": [{
|
697
|
+
"name": "__SKIP__",
|
698
|
+
"value": false,
|
699
|
+
"condition": ""
|
700
|
+
},
|
701
|
+
{
|
702
|
+
"name": "sensible_eff_at_100_heating",
|
703
|
+
"value": 0,
|
704
|
+
"condition": ""
|
705
|
+
},
|
706
|
+
{
|
707
|
+
"name": "latent_eff_at_100_heating",
|
708
|
+
"value": 0,
|
709
|
+
"condition": ""
|
710
|
+
},
|
711
|
+
{
|
712
|
+
"name": "sensible_eff_at_75_heating",
|
713
|
+
"value": 0,
|
714
|
+
"condition": ""
|
715
|
+
},
|
716
|
+
{
|
717
|
+
"name": "latent_eff_at_75_heating",
|
718
|
+
"value": 0,
|
719
|
+
"condition": ""
|
720
|
+
},
|
721
|
+
{
|
722
|
+
"name": "sensible_eff_at_100_cooling",
|
723
|
+
"value": 1,
|
724
|
+
"condition": ""
|
725
|
+
},
|
726
|
+
{
|
727
|
+
"name": "latent_eff_at_100_cooling",
|
728
|
+
"value": 1,
|
729
|
+
"condition": ""
|
730
|
+
},
|
731
|
+
{
|
732
|
+
"name": "sensible_eff_at_75_cooling",
|
733
|
+
"value": 1,
|
734
|
+
"condition": ""
|
735
|
+
},
|
736
|
+
{
|
737
|
+
"name": "latent_eff_at_75_cooling",
|
738
|
+
"value": 1,
|
739
|
+
"condition": ""
|
740
|
+
}
|
741
|
+
]
|
742
|
+
}
|
743
|
+
}],
|
744
|
+
"Domestic Hot Water": [{
|
745
|
+
"Replace or upgrade water heater": {
|
746
|
+
"measure_dir_name": "set_water_heater_efficiency_heat_lossand_peak_water_flow_rate",
|
747
|
+
"arguments": [{
|
748
|
+
"name": "__SKIP__",
|
749
|
+
"value": false,
|
750
|
+
"condition": ""
|
751
|
+
},
|
752
|
+
{
|
753
|
+
"name": "heater_fuel_type_widget",
|
754
|
+
"value": "NaturalGas",
|
755
|
+
"condition": ""
|
756
|
+
},
|
757
|
+
{
|
758
|
+
"name": "heater_thermal_efficiency",
|
759
|
+
"value": 0.88,
|
760
|
+
"condition": ""
|
761
|
+
}
|
762
|
+
]
|
763
|
+
}
|
764
|
+
}, {
|
765
|
+
"Add pipe insulation": {
|
766
|
+
"measure_dir_name": "set_water_heater_efficiency_heat_lossand_peak_water_flow_rate",
|
767
|
+
"arguments": [{
|
768
|
+
"name": "__SKIP__",
|
769
|
+
"value": false,
|
770
|
+
"condition": ""
|
771
|
+
},
|
772
|
+
{
|
773
|
+
"name": "onoff_cycle_loss_coefficient_to_ambient_temperature",
|
774
|
+
"value": 0.25,
|
775
|
+
"condition": ""
|
776
|
+
}
|
777
|
+
]
|
778
|
+
}
|
779
|
+
}, {
|
780
|
+
"Add recirculating pumps": {
|
781
|
+
"measure_dir_name": "set_water_heater_efficiency_heat_lossand_peak_water_flow_rate",
|
782
|
+
"arguments": [{
|
783
|
+
"name": "__SKIP__",
|
784
|
+
"value": false,
|
785
|
+
"condition": ""
|
786
|
+
},
|
787
|
+
{
|
788
|
+
"name": "onoff_cycle_loss_coefficient_to_ambient_temperature",
|
789
|
+
"value": 0.1,
|
790
|
+
"condition": ""
|
791
|
+
}
|
792
|
+
]
|
793
|
+
}
|
794
|
+
}],
|
795
|
+
"Water Use": [{
|
796
|
+
"Install low-flow faucets and showerheads": {
|
797
|
+
"measure_dir_name": "reduce_water_use_by_percentage",
|
798
|
+
"arguments": [{
|
799
|
+
"name": "__SKIP__",
|
800
|
+
"value": false,
|
801
|
+
"condition": ""
|
802
|
+
},
|
803
|
+
{
|
804
|
+
"name": "water_use_reduction_percent",
|
805
|
+
"value": 50.0,
|
806
|
+
"condition": ""
|
807
|
+
}
|
808
|
+
]
|
809
|
+
}
|
810
|
+
}]
|
811
|
+
}
|