openstudio-calibration 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.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +29 -0
  3. data/CHANGELOG.md +14 -0
  4. data/Gemfile +20 -0
  5. data/Jenkinsfile +6 -0
  6. data/LICENSE.md +27 -0
  7. data/README.md +33 -0
  8. data/Rakefile +50 -0
  9. data/doc_templates/LICENSE.md +27 -0
  10. data/doc_templates/README.md.erb +42 -0
  11. data/doc_templates/copyright_erb.txt +36 -0
  12. data/doc_templates/copyright_js.txt +4 -0
  13. data/doc_templates/copyright_ruby.txt +34 -0
  14. data/lib/files/.gitkeep +0 -0
  15. data/lib/measures/AddMonthlyJSONUtilityData/LICENSE.md +27 -0
  16. data/lib/measures/AddMonthlyJSONUtilityData/README.md +96 -0
  17. data/lib/measures/AddMonthlyJSONUtilityData/README.md.erb +42 -0
  18. data/lib/measures/AddMonthlyJSONUtilityData/measure.rb +280 -0
  19. data/lib/measures/AddMonthlyJSONUtilityData/measure.xml +163 -0
  20. data/lib/measures/AddMonthlyUtilityData/LICENSE.md +27 -0
  21. data/lib/measures/AddMonthlyUtilityData/README.md +64 -0
  22. data/lib/measures/AddMonthlyUtilityData/README.md.erb +42 -0
  23. data/lib/measures/AddMonthlyUtilityData/measure.rb +312 -0
  24. data/lib/measures/AddMonthlyUtilityData/measure.xml +115 -0
  25. data/lib/measures/AddMonthlyUtilityData/tests/AddMonthlyUtilityData_Test.rb +88 -0
  26. data/lib/measures/AddMonthlyUtilityData/tests/electric_billed_usages.json +198 -0
  27. data/lib/measures/AddMonthlyUtilityData/tests/gas_billed_usages.json +198 -0
  28. data/lib/measures/CalibrationReports/LICENSE.md +27 -0
  29. data/lib/measures/CalibrationReports/README.md +26 -0
  30. data/lib/measures/CalibrationReports/README.md.erb +42 -0
  31. data/lib/measures/CalibrationReports/measure.rb +511 -0
  32. data/lib/measures/CalibrationReports/measure.xml +98 -0
  33. data/lib/measures/CalibrationReports/resources/report.html.in +379 -0
  34. data/lib/measures/CalibrationReports/tests/CalibrationReports_Test.rb +523 -0
  35. data/lib/measures/CalibrationReports/tests/ExampleModel.osm +10497 -0
  36. data/lib/measures/CalibrationReports/tests/ExampleModelNoDemandInput.osm +10560 -0
  37. data/lib/measures/CalibrationReports/tests/ExampleModelNoGasInput.osm +10456 -0
  38. data/lib/measures/CalibrationReports/tests/USA_CO_Golden-NREL.724666_TMY3.epw +8768 -0
  39. data/lib/measures/CalibrationReportsEnhanced/LICENSE.md +27 -0
  40. data/lib/measures/CalibrationReportsEnhanced/README.md +143 -0
  41. data/lib/measures/CalibrationReportsEnhanced/README.md.erb +42 -0
  42. data/lib/measures/CalibrationReportsEnhanced/measure.rb +798 -0
  43. data/lib/measures/CalibrationReportsEnhanced/measure.xml +372 -0
  44. data/lib/measures/CalibrationReportsEnhanced/resources/report.html.in +380 -0
  45. data/lib/measures/CalibrationReportsEnhanced/tests/CalibrationReportsEnhanced_Test.rb +734 -0
  46. data/lib/measures/CalibrationReportsEnhanced/tests/ExampleModel.osm +10497 -0
  47. data/lib/measures/CalibrationReportsEnhanced/tests/ExampleModel_FuelOil.osm +12740 -0
  48. data/lib/measures/CalibrationReportsEnhanced/tests/USA_CO_Golden-NREL.724666_TMY3.epw +8768 -0
  49. data/lib/measures/CalibrationReportsEnhanced21/LICENSE.md +27 -0
  50. data/lib/measures/CalibrationReportsEnhanced21/README.md +109 -0
  51. data/lib/measures/CalibrationReportsEnhanced21/README.md.erb +42 -0
  52. data/lib/measures/CalibrationReportsEnhanced21/measure.rb +690 -0
  53. data/lib/measures/CalibrationReportsEnhanced21/measure.xml +269 -0
  54. data/lib/measures/CalibrationReportsEnhanced21/resources/report.html.in +380 -0
  55. data/lib/measures/CoilCoolingDXSingleSpeedMultiplier/LICENSE.md +27 -0
  56. data/lib/measures/CoilCoolingDXSingleSpeedMultiplier/README.md +48 -0
  57. data/lib/measures/CoilCoolingDXSingleSpeedMultiplier/README.md.erb +42 -0
  58. data/lib/measures/CoilCoolingDXSingleSpeedMultiplier/measure.rb +237 -0
  59. data/lib/measures/CoilCoolingDXSingleSpeedMultiplier/measure.xml +93 -0
  60. data/lib/measures/CoilCoolingDXSingleSpeedPercentChange/LICENSE.md +27 -0
  61. data/lib/measures/CoilCoolingDXSingleSpeedPercentChange/README.md +48 -0
  62. data/lib/measures/CoilCoolingDXSingleSpeedPercentChange/README.md.erb +42 -0
  63. data/lib/measures/CoilCoolingDXSingleSpeedPercentChange/measure.rb +228 -0
  64. data/lib/measures/CoilCoolingDXSingleSpeedPercentChange/measure.xml +93 -0
  65. data/lib/measures/CoilCoolingDXTwoSpeedMultiplier/LICENSE.md +27 -0
  66. data/lib/measures/CoilCoolingDXTwoSpeedMultiplier/README.md +64 -0
  67. data/lib/measures/CoilCoolingDXTwoSpeedMultiplier/README.md.erb +42 -0
  68. data/lib/measures/CoilCoolingDXTwoSpeedMultiplier/measure.rb +280 -0
  69. data/lib/measures/CoilCoolingDXTwoSpeedMultiplier/measure.xml +111 -0
  70. data/lib/measures/CoilCoolingDXTwoSpeedPercentChange/LICENSE.md +27 -0
  71. data/lib/measures/CoilCoolingDXTwoSpeedPercentChange/README.md +64 -0
  72. data/lib/measures/CoilCoolingDXTwoSpeedPercentChange/README.md.erb +42 -0
  73. data/lib/measures/CoilCoolingDXTwoSpeedPercentChange/measure.rb +270 -0
  74. data/lib/measures/CoilCoolingDXTwoSpeedPercentChange/measure.xml +111 -0
  75. data/lib/measures/CoilCoolingWaterMultiplier/LICENSE.md +27 -0
  76. data/lib/measures/CoilCoolingWaterMultiplier/README.md +80 -0
  77. data/lib/measures/CoilCoolingWaterMultiplier/README.md.erb +42 -0
  78. data/lib/measures/CoilCoolingWaterMultiplier/measure.rb +324 -0
  79. data/lib/measures/CoilCoolingWaterMultiplier/measure.xml +129 -0
  80. data/lib/measures/CoilCoolingWaterPercentChange/LICENSE.md +27 -0
  81. data/lib/measures/CoilCoolingWaterPercentChange/README.md +80 -0
  82. data/lib/measures/CoilCoolingWaterPercentChange/README.md.erb +42 -0
  83. data/lib/measures/CoilCoolingWaterPercentChange/measure.rb +311 -0
  84. data/lib/measures/CoilCoolingWaterPercentChange/measure.xml +129 -0
  85. data/lib/measures/CoilHeatingElectricMultiplier/LICENSE.md +27 -0
  86. data/lib/measures/CoilHeatingElectricMultiplier/README.md +48 -0
  87. data/lib/measures/CoilHeatingElectricMultiplier/README.md.erb +42 -0
  88. data/lib/measures/CoilHeatingElectricMultiplier/measure.rb +240 -0
  89. data/lib/measures/CoilHeatingElectricMultiplier/measure.xml +93 -0
  90. data/lib/measures/CoilHeatingElectricPercentChange/LICENSE.md +27 -0
  91. data/lib/measures/CoilHeatingElectricPercentChange/README.md +48 -0
  92. data/lib/measures/CoilHeatingElectricPercentChange/README.md.erb +42 -0
  93. data/lib/measures/CoilHeatingElectricPercentChange/measure.rb +231 -0
  94. data/lib/measures/CoilHeatingElectricPercentChange/measure.xml +93 -0
  95. data/lib/measures/CoilHeatingGasMultiplier/LICENSE.md +27 -0
  96. data/lib/measures/CoilHeatingGasMultiplier/README.md +64 -0
  97. data/lib/measures/CoilHeatingGasMultiplier/README.md.erb +42 -0
  98. data/lib/measures/CoilHeatingGasMultiplier/measure.rb +282 -0
  99. data/lib/measures/CoilHeatingGasMultiplier/measure.xml +111 -0
  100. data/lib/measures/CoilHeatingGasPercentChange/LICENSE.md +27 -0
  101. data/lib/measures/CoilHeatingGasPercentChange/README.md +64 -0
  102. data/lib/measures/CoilHeatingGasPercentChange/README.md.erb +42 -0
  103. data/lib/measures/CoilHeatingGasPercentChange/measure.rb +271 -0
  104. data/lib/measures/CoilHeatingGasPercentChange/measure.xml +111 -0
  105. data/lib/measures/CoilHeatingWaterMultiplier/LICENSE.md +27 -0
  106. data/lib/measures/CoilHeatingWaterMultiplier/README.md +48 -0
  107. data/lib/measures/CoilHeatingWaterMultiplier/README.md.erb +42 -0
  108. data/lib/measures/CoilHeatingWaterMultiplier/measure.rb +235 -0
  109. data/lib/measures/CoilHeatingWaterMultiplier/measure.xml +93 -0
  110. data/lib/measures/CoilHeatingWaterPercentChange/LICENSE.md +27 -0
  111. data/lib/measures/CoilHeatingWaterPercentChange/README.md +48 -0
  112. data/lib/measures/CoilHeatingWaterPercentChange/README.md.erb +42 -0
  113. data/lib/measures/CoilHeatingWaterPercentChange/measure.rb +226 -0
  114. data/lib/measures/CoilHeatingWaterPercentChange/measure.xml +93 -0
  115. data/lib/measures/ConstructionLayerZeroMaterialProperties/LICENSE.md +27 -0
  116. data/lib/measures/ConstructionLayerZeroMaterialProperties/README.md +88 -0
  117. data/lib/measures/ConstructionLayerZeroMaterialProperties/README.md.erb +42 -0
  118. data/lib/measures/ConstructionLayerZeroMaterialProperties/measure.rb +221 -0
  119. data/lib/measures/ConstructionLayerZeroMaterialProperties/measure.xml +194 -0
  120. data/lib/measures/ElectricBaseboardEfficiencyAndCapacity/LICENSE.md +27 -0
  121. data/lib/measures/ElectricBaseboardEfficiencyAndCapacity/README.md +40 -0
  122. data/lib/measures/ElectricBaseboardEfficiencyAndCapacity/README.md.erb +42 -0
  123. data/lib/measures/ElectricBaseboardEfficiencyAndCapacity/measure.rb +102 -0
  124. data/lib/measures/ElectricBaseboardEfficiencyAndCapacity/measure.xml +78 -0
  125. data/lib/measures/ExteriorWallThermalPropertiesMultiplier/LICENSE.md +27 -0
  126. data/lib/measures/ExteriorWallThermalPropertiesMultiplier/README.md +48 -0
  127. data/lib/measures/ExteriorWallThermalPropertiesMultiplier/README.md.erb +42 -0
  128. data/lib/measures/ExteriorWallThermalPropertiesMultiplier/measure.rb +263 -0
  129. data/lib/measures/ExteriorWallThermalPropertiesMultiplier/measure.xml +97 -0
  130. data/lib/measures/ExteriorWallThermalPropertiesPercentChange/LICENSE.md +27 -0
  131. data/lib/measures/ExteriorWallThermalPropertiesPercentChange/README.md +48 -0
  132. data/lib/measures/ExteriorWallThermalPropertiesPercentChange/README.md.erb +42 -0
  133. data/lib/measures/ExteriorWallThermalPropertiesPercentChange/measure.rb +253 -0
  134. data/lib/measures/ExteriorWallThermalPropertiesPercentChange/measure.xml +97 -0
  135. data/lib/measures/FansMultiplier/LICENSE.md +27 -0
  136. data/lib/measures/FansMultiplier/README.md +64 -0
  137. data/lib/measures/FansMultiplier/README.md.erb +42 -0
  138. data/lib/measures/FansMultiplier/measure.rb +297 -0
  139. data/lib/measures/FansMultiplier/measure.xml +166 -0
  140. data/lib/measures/FansPercentChange/LICENSE.md +27 -0
  141. data/lib/measures/FansPercentChange/README.md +64 -0
  142. data/lib/measures/FansPercentChange/README.md.erb +42 -0
  143. data/lib/measures/FansPercentChange/measure.rb +286 -0
  144. data/lib/measures/FansPercentChange/measure.xml +166 -0
  145. data/lib/measures/GeneralCalibrationMeasureMultiplier/LICENSE.md +27 -0
  146. data/lib/measures/GeneralCalibrationMeasureMultiplier/README.md +112 -0
  147. data/lib/measures/GeneralCalibrationMeasureMultiplier/README.md.erb +42 -0
  148. data/lib/measures/GeneralCalibrationMeasureMultiplier/measure.rb +639 -0
  149. data/lib/measures/GeneralCalibrationMeasureMultiplier/measure.xml +229 -0
  150. data/lib/measures/GeneralCalibrationMeasurePercentChange/LICENSE.md +27 -0
  151. data/lib/measures/GeneralCalibrationMeasurePercentChange/README.md +112 -0
  152. data/lib/measures/GeneralCalibrationMeasurePercentChange/README.md.erb +42 -0
  153. data/lib/measures/GeneralCalibrationMeasurePercentChange/measure.rb +756 -0
  154. data/lib/measures/GeneralCalibrationMeasurePercentChange/measure.xml +229 -0
  155. data/lib/measures/HardSizeHvac/LICENSE.md +27 -0
  156. data/lib/measures/HardSizeHvac/README.md +26 -0
  157. data/lib/measures/HardSizeHvac/README.md.erb +42 -0
  158. data/lib/measures/HardSizeHvac/measure.rb +88 -0
  159. data/lib/measures/HardSizeHvac/measure.xml +81 -0
  160. data/lib/measures/MaalkaMonthlyJSONUtilityData/LICENSE.md +27 -0
  161. data/lib/measures/MaalkaMonthlyJSONUtilityData/README.md +104 -0
  162. data/lib/measures/MaalkaMonthlyJSONUtilityData/README.md.erb +42 -0
  163. data/lib/measures/MaalkaMonthlyJSONUtilityData/measure.rb +304 -0
  164. data/lib/measures/MaalkaMonthlyJSONUtilityData/measure.xml +216 -0
  165. data/lib/measures/RValueOfInsulationForConstructionMultiplier/LICENSE.md +27 -0
  166. data/lib/measures/RValueOfInsulationForConstructionMultiplier/README.md +40 -0
  167. data/lib/measures/RValueOfInsulationForConstructionMultiplier/README.md.erb +42 -0
  168. data/lib/measures/RValueOfInsulationForConstructionMultiplier/measure.rb +196 -0
  169. data/lib/measures/RValueOfInsulationForConstructionMultiplier/measure.xml +132 -0
  170. data/lib/measures/RValueOfInsulationForConstructionPercentageChange/LICENSE.md +27 -0
  171. data/lib/measures/RValueOfInsulationForConstructionPercentageChange/README.md +40 -0
  172. data/lib/measures/RValueOfInsulationForConstructionPercentageChange/README.md.erb +42 -0
  173. data/lib/measures/RValueOfInsulationForConstructionPercentageChange/measure.rb +189 -0
  174. data/lib/measures/RValueOfInsulationForConstructionPercentageChange/measure.xml +132 -0
  175. data/lib/measures/RoofThermalPropertiesMultiplier/LICENSE.md +27 -0
  176. data/lib/measures/RoofThermalPropertiesMultiplier/README.md +48 -0
  177. data/lib/measures/RoofThermalPropertiesMultiplier/README.md.erb +42 -0
  178. data/lib/measures/RoofThermalPropertiesMultiplier/measure.rb +263 -0
  179. data/lib/measures/RoofThermalPropertiesMultiplier/measure.xml +97 -0
  180. data/lib/measures/RoofThermalPropertiesPercentChange/LICENSE.md +27 -0
  181. data/lib/measures/RoofThermalPropertiesPercentChange/README.md +48 -0
  182. data/lib/measures/RoofThermalPropertiesPercentChange/README.md.erb +42 -0
  183. data/lib/measures/RoofThermalPropertiesPercentChange/measure.rb +253 -0
  184. data/lib/measures/RoofThermalPropertiesPercentChange/measure.xml +97 -0
  185. data/lib/measures/TimeseriesObjectiveFunction/LICENSE.md +27 -0
  186. data/lib/measures/TimeseriesObjectiveFunction/README.md +207 -0
  187. data/lib/measures/TimeseriesObjectiveFunction/README.md.erb +42 -0
  188. data/lib/measures/TimeseriesObjectiveFunction/measure.rb +748 -0
  189. data/lib/measures/TimeseriesObjectiveFunction/measure.xml +435 -0
  190. data/lib/measures/TimeseriesObjectiveFunction/resources/report.html.erb +288 -0
  191. data/lib/measures/TimeseriesPlot/LICENSE.md +27 -0
  192. data/lib/measures/TimeseriesPlot/README.md +56 -0
  193. data/lib/measures/TimeseriesPlot/README.md.erb +42 -0
  194. data/lib/measures/TimeseriesPlot/measure.rb +302 -0
  195. data/lib/measures/TimeseriesPlot/measure.xml +137 -0
  196. data/lib/measures/TimeseriesPlot/resources/report.html.erb +270 -0
  197. data/lib/measures/WaterHeaterMixedMultiplier/LICENSE.md +27 -0
  198. data/lib/measures/WaterHeaterMixedMultiplier/README.md +64 -0
  199. data/lib/measures/WaterHeaterMixedMultiplier/README.md.erb +42 -0
  200. data/lib/measures/WaterHeaterMixedMultiplier/measure.rb +255 -0
  201. data/lib/measures/WaterHeaterMixedMultiplier/measure.xml +180 -0
  202. data/lib/measures/WaterHeaterMixedPercentChange/LICENSE.md +27 -0
  203. data/lib/measures/WaterHeaterMixedPercentChange/README.md +64 -0
  204. data/lib/measures/WaterHeaterMixedPercentChange/README.md.erb +42 -0
  205. data/lib/measures/WaterHeaterMixedPercentChange/measure.rb +245 -0
  206. data/lib/measures/WaterHeaterMixedPercentChange/measure.xml +180 -0
  207. data/lib/measures/zone_report/LICENSE.md +27 -0
  208. data/lib/measures/zone_report/README.md +26 -0
  209. data/lib/measures/zone_report/README.md.erb +42 -0
  210. data/lib/measures/zone_report/measure.rb +706 -0
  211. data/lib/measures/zone_report/measure.xml +67 -0
  212. data/lib/measures/zone_report/resources/report.html.in +342 -0
  213. data/lib/openstudio-calibration-measures.rb +36 -0
  214. data/lib/openstudio/calibration_measures.rb +37 -0
  215. data/lib/openstudio/calibration_measures/extension.rb +49 -0
  216. data/lib/openstudio/calibration_measures/version.rb +40 -0
  217. data/openstudio-calibration.gemspec +30 -0
  218. metadata +331 -0
@@ -0,0 +1,27 @@
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.
@@ -0,0 +1,48 @@
1
+
2
+
3
+ ###### (Automatically generated documentation)
4
+
5
+ # Cooling Coils DX Single Speed Multiplier
6
+
7
+ ## Description
8
+ This is a general purpose measure to calibrate DX Cooling Coils with a Multiplier.
9
+
10
+ ## Modeler Description
11
+ It will be used for calibration of rated capacity and COP. User can choose between a SINGLE coil or ALL the Coils.
12
+
13
+ ## Measure Type
14
+ ModelMeasure
15
+
16
+ ## Taxonomy
17
+
18
+
19
+ ## Arguments
20
+
21
+
22
+ ### Apply the Measure to a SINGLE DX Cooling Coil, ALL the DX Cooling Coils or NONE.
23
+
24
+ **Name:** coil,
25
+ **Type:** Choice,
26
+ **Units:** ,
27
+ **Required:** true,
28
+ **Model Dependent:** false
29
+
30
+ ### Multiplier for COP.
31
+ Multiplier for COP.
32
+ **Name:** rated_cop_multiplier,
33
+ **Type:** Double,
34
+ **Units:** ,
35
+ **Required:** true,
36
+ **Model Dependent:** false
37
+
38
+ ### Multiplier for rated cooling Capacity.
39
+ Multiplier for rated cooling Capacity.
40
+ **Name:** rated_cooling_capacity_multiplier,
41
+ **Type:** Double,
42
+ **Units:** ,
43
+ **Required:** true,
44
+ **Model Dependent:** false
45
+
46
+
47
+
48
+
@@ -0,0 +1,42 @@
1
+ <%#= README.md.erb is used to auto-generate README.md. %>
2
+ <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
+ ###### (Automatically generated documentation)
4
+
5
+ # <%= name %>
6
+
7
+ ## Description
8
+ <%= description %>
9
+
10
+ ## Modeler Description
11
+ <%= modelerDescription %>
12
+
13
+ ## Measure Type
14
+ <%= measureType %>
15
+
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
+
19
+ ## Arguments
20
+
21
+ <% arguments.each do |argument| %>
22
+ ### <%= argument[:display_name] %>
23
+ <%= argument[:description] %>
24
+ **Name:** <%= argument[:name] %>,
25
+ **Type:** <%= argument[:type] %>,
26
+ **Units:** <%= argument[:units] %>,
27
+ **Required:** <%= argument[:required] %>,
28
+ **Model Dependent:** <%= argument[:model_dependent] %>
29
+ <% end %>
30
+
31
+ <% if arguments.size == 0 %>
32
+ <%= "This measure does not have any user arguments" %>
33
+ <% end %>
34
+
35
+ <% if outputs.size > 0 %>
36
+ ## Outputs
37
+ <% output_names = [] %>
38
+ <% outputs.each do |output| %>
39
+ <% output_names << output[:display_name] %>
40
+ <% end %>
41
+ <%= output_names.join(", ") %>
42
+ <% end %>
@@ -0,0 +1,237 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
+ # All rights reserved.
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # (1) Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ #
10
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
11
+ # this list of conditions and the following disclaimer in the documentation
12
+ # and/or other materials provided with the distribution.
13
+ #
14
+ # (3) Neither the name of the copyright holder nor the names of any contributors
15
+ # may be used to endorse or promote products derived from this software without
16
+ # specific prior written permission from the respective party.
17
+ #
18
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
19
+ # of modifications or other derivative works may not use the "OpenStudio"
20
+ # trademark, "OS", "os", or any other confusingly similar designation without
21
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
+ #
23
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
24
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
27
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
28
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
30
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
+ # *******************************************************************************
35
+
36
+ # start the measure
37
+ class CoilCoolingDXSingleSpeedMultiplier < OpenStudio::Measure::ModelMeasure
38
+ # human readable name
39
+ def name
40
+ 'Cooling Coils DX Single Speed Multiplier'
41
+ end
42
+
43
+ # human readable description
44
+ def description
45
+ 'This is a general purpose measure to calibrate DX Cooling Coils with a Multiplier.'
46
+ end
47
+
48
+ # human readable description of modeling approach
49
+ def modeler_description
50
+ 'It will be used for calibration of rated capacity and COP. User can choose between a SINGLE coil or ALL the Coils.'
51
+ end
52
+
53
+ def change_name(object, rated_cop_multiplier, rated_cooling_capacity_multiplier)
54
+ nameString = object.name.get.to_s
55
+ if rated_cop_multiplier != 1.0
56
+ nameString += " #{rated_cop_multiplier.round(2)}x coilEff"
57
+ end
58
+ if rated_cooling_capacity_multiplier != 1.0
59
+ nameString += " #{rated_cooling_capacity_multiplier.round(2)}x coilCap"
60
+ end
61
+ object.setName(nameString)
62
+ end
63
+
64
+ def check_multiplier(runner, multiplier)
65
+ if multiplier < 0
66
+ runner.registerError("Multiplier #{multiplier} cannot be negative.")
67
+ false
68
+ end
69
+ end
70
+
71
+ # define the arguments that the user will input
72
+ def arguments(model)
73
+ args = OpenStudio::Measure::OSArgumentVector.new
74
+
75
+ # populate choice argument for constructions that are applied to surfaces in the model
76
+ loop_handles = OpenStudio::StringVector.new
77
+ loop_display_names = OpenStudio::StringVector.new
78
+
79
+ # putting air loops and names into hash
80
+ loop_args = model.getAirLoopHVACs
81
+ loop_args_hash = {}
82
+ loop_args.each do |loop_arg|
83
+ loop_args_hash[loop_arg.name.to_s] = loop_arg
84
+ end
85
+
86
+ # looping through sorted hash of air loops
87
+ loop_args_hash.sort.map do |_key, value|
88
+ show_loop = false
89
+ components = value.supplyComponents
90
+ components.each do |component|
91
+ next if component.to_CoilCoolingDXSingleSpeed.empty?
92
+ show_loop = true
93
+ loop_handles << component.handle.to_s
94
+ loop_display_names << component.name.to_s
95
+ end
96
+
97
+ # if loop as object of correct type then add to hash.
98
+ # if show_loop == true
99
+ # loop_handles << value.handle.to_s
100
+ # loop_display_names << key
101
+ # end
102
+ end
103
+
104
+ # add building to string vector with space type
105
+ building = model.getBuilding
106
+ loop_handles << building.handle.to_s
107
+ loop_display_names << '*All DX Cooling Coils*'
108
+ loop_handles << '0'
109
+ loop_display_names << '*None*'
110
+
111
+ # make a choice argument for space type
112
+ coil_arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('coil', loop_handles, loop_display_names)
113
+ coil_arg.setDisplayName('Apply the Measure to a SINGLE DX Cooling Coil, ALL the DX Cooling Coils or NONE.')
114
+ coil_arg.setDefaultValue('*All DX Cooling Coils*') # if no space type is chosen this will run on the entire building
115
+ args << coil_arg
116
+
117
+ # rated_cop_multiplier
118
+ rated_cop_multiplier = OpenStudio::Measure::OSArgument.makeDoubleArgument('rated_cop_multiplier', true)
119
+ rated_cop_multiplier.setDisplayName('Multiplier for COP.')
120
+ rated_cop_multiplier.setDescription('Multiplier for COP.')
121
+ rated_cop_multiplier.setDefaultValue(1.0)
122
+ args << rated_cop_multiplier
123
+
124
+ # rated_cooling_capacity_multiplier
125
+ rated_cooling_capacity_multiplier = OpenStudio::Measure::OSArgument.makeDoubleArgument('rated_cooling_capacity_multiplier', true)
126
+ rated_cooling_capacity_multiplier.setDisplayName('Multiplier for rated cooling Capacity.')
127
+ rated_cooling_capacity_multiplier.setDescription('Multiplier for rated cooling Capacity.')
128
+ rated_cooling_capacity_multiplier.setDefaultValue(1.0)
129
+ args << rated_cooling_capacity_multiplier
130
+
131
+ args
132
+ end
133
+
134
+ # define what happens when the measure is run
135
+ def run(model, runner, user_arguments)
136
+ super(model, runner, user_arguments)
137
+
138
+ # use the built-in error checking
139
+ unless runner.validateUserArguments(arguments(model), user_arguments)
140
+ return false
141
+ end
142
+
143
+ # assign the user inputs to variables
144
+ coil_object = runner.getOptionalWorkspaceObjectChoiceValue('coil', user_arguments, model)
145
+ coil_handle = runner.getStringArgumentValue('coil', user_arguments)
146
+
147
+ rated_cooling_capacity_multiplier = runner.getDoubleArgumentValue('rated_cooling_capacity_multiplier', user_arguments)
148
+ check_multiplier(runner, rated_cooling_capacity_multiplier)
149
+ rated_cop_multiplier = runner.getDoubleArgumentValue('rated_cop_multiplier', user_arguments)
150
+ check_multiplier(runner, rated_cop_multiplier)
151
+
152
+ # find objects to change
153
+ coils = []
154
+ building = model.getBuilding
155
+ building_handle = building.handle.to_s
156
+ runner.registerInfo("coil_handle: #{coil_handle}")
157
+ # setup coils
158
+ if coil_handle == building_handle
159
+ # Use ALL coils
160
+ runner.registerInfo('Applying change to ALL Coils')
161
+ loops = model.getAirLoopHVACs
162
+ # loop through air loops
163
+ loops.each do |loop|
164
+ supply_components = loop.supplyComponents
165
+ # find coils on loops
166
+ supply_components.each do |supply_component|
167
+ unless supply_component.to_CoilCoolingDXSingleSpeed.empty?
168
+ coils << supply_component.to_CoilCoolingDXSingleSpeed.get
169
+ end
170
+ end
171
+ end
172
+ elsif coil_handle == 0.to_s
173
+ # coils set to NONE so do nothing
174
+ runner.registerInfo('Applying change to NONE Coils')
175
+ elsif !coil_handle.empty?
176
+ # Single coil handle found, check if object is good
177
+ if !coil_object.get.to_CoilCoolingDXSingleSpeed.empty?
178
+ runner.registerInfo("Applying change to #{coil_object.get.name} coil")
179
+ coils << coil_object.get.to_CoilCoolingDXSingleSpeed.get
180
+ else
181
+ runner.registerError("coil with handle #{coil_handle} could not be found.")
182
+ end
183
+ else
184
+ runner.registerError('coil handle is empty.')
185
+ return false
186
+ end
187
+
188
+ # report initial condition of model
189
+ runner.registerInitialCondition("Coils to change: #{coils.size}")
190
+ runner.registerInfo("Coils to change: #{coils.size}")
191
+ altered_coils = []
192
+ altered_capacity = []
193
+ altered_coilefficiency = []
194
+ # loop through coils
195
+ coils.each do |coil|
196
+ altered_coil = false
197
+ # rated_cooling_capacity_multiplier
198
+ if rated_cooling_capacity_multiplier != 1.0
199
+ if coil.ratedTotalCoolingCapacity.is_initialized
200
+ runner.registerInfo("Applying ratedTotalCoolingCapacity #{rated_cooling_capacity_multiplier}x multiplier to #{coil.name.get}.")
201
+ coil.setRatedTotalCoolingCapacity(coil.ratedTotalCoolingCapacity.get * rated_cooling_capacity_multiplier)
202
+ altered_capacity << coil.handle.to_s
203
+ altered_coil = true
204
+ end
205
+ end
206
+
207
+ # modify rated_cop_multiplier
208
+ if rated_cop_multiplier != 1.0
209
+ if coil.ratedCOP.is_initialized
210
+ runner.registerInfo("Applying ratedCOP #{rated_cop_multiplier}x multiplier to #{coil.name.get}.")
211
+ coil.setRatedCOP(coil.ratedCOP.get * rated_cop_multiplier)
212
+ altered_coilefficiency << coil.handle.to_s
213
+ altered_coil = true
214
+ end
215
+ end
216
+
217
+ next unless altered_coil
218
+ altered_coils << coil.handle.to_s
219
+ change_name(coil, rated_cop_multiplier, rated_cooling_capacity_multiplier)
220
+ runner.registerInfo("coil name changed to: #{coil.name.get}")
221
+ end # end coil loop
222
+
223
+ # na if nothing in model to look at
224
+ if altered_coils.empty?
225
+ runner.registerAsNotApplicable('No Coils were altered in the model')
226
+ return true
227
+ end
228
+
229
+ # report final condition of model
230
+ runner.registerFinalCondition("#{altered_coils.size} Coils objects were altered.")
231
+
232
+ true
233
+ end
234
+ end
235
+
236
+ # register the measure to be used by the application
237
+ CoilCoolingDXSingleSpeedMultiplier.new.registerWithApplication
@@ -0,0 +1,93 @@
1
+ <measure>
2
+ <schema_version>3.0</schema_version>
3
+ <name>coil_cooling_dx_single_speed_multiplier</name>
4
+ <uid>97d0dbdf-6245-4cfd-8dfc-a6a5eb853b16</uid>
5
+ <version_id>aeea742c-e0da-4330-a1e2-1a0071cde7fb</version_id>
6
+ <version_modified>20200325T030945Z</version_modified>
7
+ <xml_checksum>8CBDDA1B</xml_checksum>
8
+ <class_name>CoilCoolingDXSingleSpeedMultiplier</class_name>
9
+ <display_name>Cooling Coils DX Single Speed Multiplier</display_name>
10
+ <description>This is a general purpose measure to calibrate DX Cooling Coils with a Multiplier.</description>
11
+ <modeler_description>It will be used for calibration of rated capacity and COP. User can choose between a SINGLE coil or ALL the Coils.</modeler_description>
12
+ <arguments>
13
+ <argument>
14
+ <name>coil</name>
15
+ <display_name>Apply the Measure to a SINGLE DX Cooling Coil, ALL the DX Cooling Coils or NONE.</display_name>
16
+ <type>Choice</type>
17
+ <required>true</required>
18
+ <model_dependent>false</model_dependent>
19
+ <default_value>*All DX Cooling Coils*</default_value>
20
+ <choices>
21
+ <choice>
22
+ <value>{660e38c6-1ea1-4276-a6d7-514e9eb17fae}</value>
23
+ <display_name>*All DX Cooling Coils*</display_name>
24
+ </choice>
25
+ <choice>
26
+ <value>0</value>
27
+ <display_name>*None*</display_name>
28
+ </choice>
29
+ </choices>
30
+ </argument>
31
+ <argument>
32
+ <name>rated_cop_multiplier</name>
33
+ <display_name>Multiplier for COP.</display_name>
34
+ <description>Multiplier for COP.</description>
35
+ <type>Double</type>
36
+ <required>true</required>
37
+ <model_dependent>false</model_dependent>
38
+ <default_value>1</default_value>
39
+ </argument>
40
+ <argument>
41
+ <name>rated_cooling_capacity_multiplier</name>
42
+ <display_name>Multiplier for rated cooling Capacity.</display_name>
43
+ <description>Multiplier for rated cooling Capacity.</description>
44
+ <type>Double</type>
45
+ <required>true</required>
46
+ <model_dependent>false</model_dependent>
47
+ <default_value>1</default_value>
48
+ </argument>
49
+ </arguments>
50
+ <outputs/>
51
+ <provenances/>
52
+ <tags>
53
+ <tag>HVAC.Cooling</tag>
54
+ </tags>
55
+ <attributes>
56
+ <attribute>
57
+ <name>Measure Type</name>
58
+ <value>ModelMeasure</value>
59
+ <datatype>string</datatype>
60
+ </attribute>
61
+ </attributes>
62
+ <files>
63
+ <file>
64
+ <filename>LICENSE.md</filename>
65
+ <filetype>md</filetype>
66
+ <usage_type>license</usage_type>
67
+ <checksum>E0468DD6</checksum>
68
+ </file>
69
+ <file>
70
+ <filename>README.md.erb</filename>
71
+ <filetype>erb</filetype>
72
+ <usage_type>readmeerb</usage_type>
73
+ <checksum>703C9964</checksum>
74
+ </file>
75
+ <file>
76
+ <filename>README.md</filename>
77
+ <filetype>md</filetype>
78
+ <usage_type>readme</usage_type>
79
+ <checksum>09247749</checksum>
80
+ </file>
81
+ <file>
82
+ <version>
83
+ <software_program>OpenStudio</software_program>
84
+ <identifier>2.1.0</identifier>
85
+ <min_compatible>2.1.0</min_compatible>
86
+ </version>
87
+ <filename>measure.rb</filename>
88
+ <filetype>rb</filetype>
89
+ <usage_type>script</usage_type>
90
+ <checksum>9BEC1CC5</checksum>
91
+ </file>
92
+ </files>
93
+ </measure>