openstudio-calibration 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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,435 @@
1
+ <measure>
2
+ <schema_version>3.0</schema_version>
3
+ <name>timeseries_objective_function</name>
4
+ <uid>6804217d-4737-45f3-82df-b81393c29ce3</uid>
5
+ <version_id>cd719981-451c-476a-b4d9-bec827cb0b9b</version_id>
6
+ <version_modified>20200331T151749Z</version_modified>
7
+ <xml_checksum>FFE04372</xml_checksum>
8
+ <class_name>TimeseriesObjectiveFunction</class_name>
9
+ <display_name>TimeSeries Objective Function</display_name>
10
+ <description>Creates Objective Function from Timeseries Data</description>
11
+ <modeler_description>Creates Objective Function from Timeseries Data. The measure applies a Norm at each timestep between the difference of CSV metered data and SQL model data. A timeseries plot can also be created. Possible outputs are 'cvrmse', 'nmbe', 'simdata' = sum of the simulated data, 'csvdata' = sum of metered data, 'diff' = P Norm between the metered and simulated data if Norm is 1 or 2, else its just the Difference.</modeler_description>
12
+ <arguments>
13
+ <argument>
14
+ <name>csv_name</name>
15
+ <display_name>Path to CSV file for the metered data</display_name>
16
+ <description>Path to CSV file including file name.</description>
17
+ <type>String</type>
18
+ <required>true</required>
19
+ <model_dependent>false</model_dependent>
20
+ <default_value>../../../lib/resources/mtr.csv</default_value>
21
+ </argument>
22
+ <argument>
23
+ <name>csv_time_header</name>
24
+ <display_name>CSV Time Header</display_name>
25
+ <description>CSV Time Header Value. Used to determine the timestamp column in the CSV file</description>
26
+ <type>String</type>
27
+ <required>true</required>
28
+ <model_dependent>false</model_dependent>
29
+ <default_value>Date/Time</default_value>
30
+ </argument>
31
+ <argument>
32
+ <name>csv_var</name>
33
+ <display_name>CSV variable name</display_name>
34
+ <description>CSV variable name. Used to determine the variable column in the CSV file</description>
35
+ <type>String</type>
36
+ <required>true</required>
37
+ <model_dependent>false</model_dependent>
38
+ <default_value>Whole Building:Facility Total Electric Demand Power [W](TimeStep)</default_value>
39
+ </argument>
40
+ <argument>
41
+ <name>convert_data</name>
42
+ <display_name>Convert Units</display_name>
43
+ <description>Convert Units in Metered Data</description>
44
+ <type>Choice</type>
45
+ <required>true</required>
46
+ <model_dependent>false</model_dependent>
47
+ <default_value>None</default_value>
48
+ <choices>
49
+ <choice>
50
+ <value>F to C</value>
51
+ <display_name>F to C</display_name>
52
+ </choice>
53
+ <choice>
54
+ <value>WH to J</value>
55
+ <display_name>WH to J</display_name>
56
+ </choice>
57
+ <choice>
58
+ <value>CFM to m3/s</value>
59
+ <display_name>CFM to m3/s</display_name>
60
+ </choice>
61
+ <choice>
62
+ <value>PSI to Pa</value>
63
+ <display_name>PSI to Pa</display_name>
64
+ </choice>
65
+ <choice>
66
+ <value>None</value>
67
+ <display_name>None</display_name>
68
+ </choice>
69
+ </choices>
70
+ </argument>
71
+ <argument>
72
+ <name>csv_var_dn</name>
73
+ <display_name>CSV variable display name</display_name>
74
+ <description>CSV variable display name. Not yet Implemented</description>
75
+ <type>String</type>
76
+ <required>true</required>
77
+ <model_dependent>false</model_dependent>
78
+ <default_value></default_value>
79
+ </argument>
80
+ <argument>
81
+ <name>year</name>
82
+ <display_name>Year in csv data timestamp</display_name>
83
+ <description>Is the Year in the csv data timestamp => mm:dd:yy or mm:dd (true/false)</description>
84
+ <type>Boolean</type>
85
+ <required>true</required>
86
+ <model_dependent>false</model_dependent>
87
+ <default_value>true</default_value>
88
+ <choices>
89
+ <choice>
90
+ <value>true</value>
91
+ <display_name>true</display_name>
92
+ </choice>
93
+ <choice>
94
+ <value>false</value>
95
+ <display_name>false</display_name>
96
+ </choice>
97
+ </choices>
98
+ </argument>
99
+ <argument>
100
+ <name>seconds</name>
101
+ <display_name>Seconds in csv data timestamp</display_name>
102
+ <description>Is the Seconds in the csv data timestamp => hh:mm:ss or hh:mm (true/false)</description>
103
+ <type>Boolean</type>
104
+ <required>true</required>
105
+ <model_dependent>false</model_dependent>
106
+ <default_value>true</default_value>
107
+ <choices>
108
+ <choice>
109
+ <value>true</value>
110
+ <display_name>true</display_name>
111
+ </choice>
112
+ <choice>
113
+ <value>false</value>
114
+ <display_name>false</display_name>
115
+ </choice>
116
+ </choices>
117
+ </argument>
118
+ <argument>
119
+ <name>key_value</name>
120
+ <display_name>SQL key value</display_name>
121
+ <description>SQL key value for the SQL query to find the variable in the SQL file</description>
122
+ <type>String</type>
123
+ <required>true</required>
124
+ <model_dependent>false</model_dependent>
125
+ <default_value></default_value>
126
+ </argument>
127
+ <argument>
128
+ <name>timeseries_name</name>
129
+ <display_name>TimeSeries Name</display_name>
130
+ <description>TimeSeries Name for the SQL query to find the variable in the SQL file</description>
131
+ <type>String</type>
132
+ <required>true</required>
133
+ <model_dependent>false</model_dependent>
134
+ <default_value>Facility Total Electric Demand Power</default_value>
135
+ </argument>
136
+ <argument>
137
+ <name>reporting_frequency</name>
138
+ <display_name>Reporting Frequency</display_name>
139
+ <description>Reporting Frequency for SQL Query</description>
140
+ <type>Choice</type>
141
+ <required>true</required>
142
+ <model_dependent>false</model_dependent>
143
+ <choices>
144
+ <choice>
145
+ <value>Detailed</value>
146
+ <display_name>Detailed</display_name>
147
+ </choice>
148
+ <choice>
149
+ <value>Timestep</value>
150
+ <display_name>Timestep</display_name>
151
+ </choice>
152
+ <choice>
153
+ <value>Hourly</value>
154
+ <display_name>Hourly</display_name>
155
+ </choice>
156
+ <choice>
157
+ <value>Daily</value>
158
+ <display_name>Daily</display_name>
159
+ </choice>
160
+ <choice>
161
+ <value>Monthly</value>
162
+ <display_name>Monthly</display_name>
163
+ </choice>
164
+ <choice>
165
+ <value>RunPeriod</value>
166
+ <display_name>RunPeriod</display_name>
167
+ </choice>
168
+ </choices>
169
+ </argument>
170
+ <argument>
171
+ <name>environment_period</name>
172
+ <display_name>Environment Period</display_name>
173
+ <description>Environment Period for SQL query</description>
174
+ <type>String</type>
175
+ <required>true</required>
176
+ <model_dependent>false</model_dependent>
177
+ <default_value>RUN PERIOD 1</default_value>
178
+ </argument>
179
+ <argument>
180
+ <name>norm</name>
181
+ <display_name>Norm of the difference of csv and sql</display_name>
182
+ <description>Norm of the difference of csv and sql. 1 is absolute value. 2 is euclidean distance. 3 is raw difference.</description>
183
+ <type>Double</type>
184
+ <required>true</required>
185
+ <model_dependent>false</model_dependent>
186
+ <default_value>1</default_value>
187
+ </argument>
188
+ <argument>
189
+ <name>scale</name>
190
+ <display_name>Scale factor to apply to the difference</display_name>
191
+ <description>Scale factor to apply to the difference (1 is no scale)</description>
192
+ <type>Double</type>
193
+ <required>true</required>
194
+ <model_dependent>false</model_dependent>
195
+ <default_value>1</default_value>
196
+ </argument>
197
+ <argument>
198
+ <name>find_avail</name>
199
+ <display_name>Find Available data in the SQL file</display_name>
200
+ <description>Will RegisterInfo all the 'EnvPeriod', 'ReportingFrequencies', 'VariableNames', 'KeyValues' in the SQL file. Useful for debugging SQL issues.</description>
201
+ <type>Boolean</type>
202
+ <required>true</required>
203
+ <model_dependent>false</model_dependent>
204
+ <default_value>true</default_value>
205
+ <choices>
206
+ <choice>
207
+ <value>true</value>
208
+ <display_name>true</display_name>
209
+ </choice>
210
+ <choice>
211
+ <value>false</value>
212
+ <display_name>false</display_name>
213
+ </choice>
214
+ </choices>
215
+ </argument>
216
+ <argument>
217
+ <name>algorithm_download</name>
218
+ <display_name>algorithm_download</display_name>
219
+ <description>Make JSON data available for algorithm_download (true/false)</description>
220
+ <type>Boolean</type>
221
+ <required>true</required>
222
+ <model_dependent>false</model_dependent>
223
+ <default_value>false</default_value>
224
+ <choices>
225
+ <choice>
226
+ <value>true</value>
227
+ <display_name>true</display_name>
228
+ </choice>
229
+ <choice>
230
+ <value>false</value>
231
+ <display_name>false</display_name>
232
+ </choice>
233
+ </choices>
234
+ </argument>
235
+ <argument>
236
+ <name>plot_flag</name>
237
+ <display_name>plot_flag timeseries data</display_name>
238
+ <description>Create plot of timeseries data (true/false)</description>
239
+ <type>Boolean</type>
240
+ <required>true</required>
241
+ <model_dependent>false</model_dependent>
242
+ <default_value>true</default_value>
243
+ <choices>
244
+ <choice>
245
+ <value>true</value>
246
+ <display_name>true</display_name>
247
+ </choice>
248
+ <choice>
249
+ <value>false</value>
250
+ <display_name>false</display_name>
251
+ </choice>
252
+ </choices>
253
+ </argument>
254
+ <argument>
255
+ <name>plot_name</name>
256
+ <display_name>Plot name</display_name>
257
+ <description>Name to include in reporting file name.</description>
258
+ <type>String</type>
259
+ <required>true</required>
260
+ <model_dependent>false</model_dependent>
261
+ <default_value></default_value>
262
+ </argument>
263
+ <argument>
264
+ <name>verbose_messages</name>
265
+ <display_name>verbose_messages</display_name>
266
+ <description>verbose messages. Useful for debugging but MAJOR Performance Hit.</description>
267
+ <type>Boolean</type>
268
+ <required>true</required>
269
+ <model_dependent>false</model_dependent>
270
+ <default_value>false</default_value>
271
+ <choices>
272
+ <choice>
273
+ <value>true</value>
274
+ <display_name>true</display_name>
275
+ </choice>
276
+ <choice>
277
+ <value>false</value>
278
+ <display_name>false</display_name>
279
+ </choice>
280
+ </choices>
281
+ </argument>
282
+ <argument>
283
+ <name>warning_messages</name>
284
+ <display_name>warning_messages</display_name>
285
+ <description>Warn on missing data.</description>
286
+ <type>Boolean</type>
287
+ <required>true</required>
288
+ <model_dependent>false</model_dependent>
289
+ <default_value>true</default_value>
290
+ <choices>
291
+ <choice>
292
+ <value>true</value>
293
+ <display_name>true</display_name>
294
+ </choice>
295
+ <choice>
296
+ <value>false</value>
297
+ <display_name>false</display_name>
298
+ </choice>
299
+ </choices>
300
+ </argument>
301
+ <argument>
302
+ <name>add_first_zero_for_plots</name>
303
+ <display_name>add_first_zero_for_plots</display_name>
304
+ <description>Add a point of zero value to the plot at the beginning of the runperiod.</description>
305
+ <type>Boolean</type>
306
+ <required>true</required>
307
+ <model_dependent>false</model_dependent>
308
+ <default_value>false</default_value>
309
+ <choices>
310
+ <choice>
311
+ <value>true</value>
312
+ <display_name>true</display_name>
313
+ </choice>
314
+ <choice>
315
+ <value>false</value>
316
+ <display_name>false</display_name>
317
+ </choice>
318
+ </choices>
319
+ </argument>
320
+ <argument>
321
+ <name>add_last_zero_for_plots</name>
322
+ <display_name>add_last_zero_for_plots</display_name>
323
+ <description>Add a point of zero value to the plot at the end of the runperiod.</description>
324
+ <type>Boolean</type>
325
+ <required>true</required>
326
+ <model_dependent>false</model_dependent>
327
+ <default_value>false</default_value>
328
+ <choices>
329
+ <choice>
330
+ <value>true</value>
331
+ <display_name>true</display_name>
332
+ </choice>
333
+ <choice>
334
+ <value>false</value>
335
+ <display_name>false</display_name>
336
+ </choice>
337
+ </choices>
338
+ </argument>
339
+ </arguments>
340
+ <outputs>
341
+ <output>
342
+ <name>diff</name>
343
+ <display_name>diff</display_name>
344
+ <short_name>diff</short_name>
345
+ <type>Double</type>
346
+ <model_dependent>false</model_dependent>
347
+ </output>
348
+ <output>
349
+ <name>simdata</name>
350
+ <display_name>simdata</display_name>
351
+ <short_name>simdata</short_name>
352
+ <type>Double</type>
353
+ <model_dependent>false</model_dependent>
354
+ </output>
355
+ <output>
356
+ <name>csvdata</name>
357
+ <display_name>csvdata</display_name>
358
+ <short_name>csvdata</short_name>
359
+ <type>Double</type>
360
+ <model_dependent>false</model_dependent>
361
+ </output>
362
+ <output>
363
+ <name>cvrmse</name>
364
+ <display_name>cvrmse</display_name>
365
+ <short_name>cvrmse</short_name>
366
+ <type>Double</type>
367
+ <model_dependent>false</model_dependent>
368
+ </output>
369
+ <output>
370
+ <name>nmbe</name>
371
+ <display_name>nmbe</display_name>
372
+ <short_name>nmbe</short_name>
373
+ <type>Double</type>
374
+ <model_dependent>false</model_dependent>
375
+ </output>
376
+ </outputs>
377
+ <provenances/>
378
+ <tags>
379
+ <tag>Reporting.QAQC</tag>
380
+ </tags>
381
+ <attributes>
382
+ <attribute>
383
+ <name>Intended Software Tool</name>
384
+ <value>OpenStudio Application</value>
385
+ <datatype>string</datatype>
386
+ </attribute>
387
+ <attribute>
388
+ <name>Intended Software Tool</name>
389
+ <value>Parametric Analysis Tool</value>
390
+ <datatype>string</datatype>
391
+ </attribute>
392
+ <attribute>
393
+ <name>Measure Type</name>
394
+ <value>ReportingMeasure</value>
395
+ <datatype>string</datatype>
396
+ </attribute>
397
+ </attributes>
398
+ <files>
399
+ <file>
400
+ <filename>README.md.erb</filename>
401
+ <filetype>erb</filetype>
402
+ <usage_type>readmeerb</usage_type>
403
+ <checksum>703C9964</checksum>
404
+ </file>
405
+ <file>
406
+ <filename>README.md</filename>
407
+ <filetype>md</filetype>
408
+ <usage_type>readme</usage_type>
409
+ <checksum>3F176FE0</checksum>
410
+ </file>
411
+ <file>
412
+ <filename>LICENSE.md</filename>
413
+ <filetype>md</filetype>
414
+ <usage_type>license</usage_type>
415
+ <checksum>E0468DD6</checksum>
416
+ </file>
417
+ <file>
418
+ <version>
419
+ <software_program>OpenStudio</software_program>
420
+ <identifier>2.1.0</identifier>
421
+ <min_compatible>2.1.0</min_compatible>
422
+ </version>
423
+ <filename>measure.rb</filename>
424
+ <filetype>rb</filetype>
425
+ <usage_type>script</usage_type>
426
+ <checksum>5DF37720</checksum>
427
+ </file>
428
+ <file>
429
+ <filename>report.html.erb</filename>
430
+ <filetype>erb</filetype>
431
+ <usage_type>resource</usage_type>
432
+ <checksum>0BA3EB44</checksum>
433
+ </file>
434
+ </files>
435
+ </measure>
@@ -0,0 +1,288 @@
1
+ <%
2
+ # *******************************************************************************
3
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
4
+ # All rights reserved.
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # (1) Redistributions of source code must retain the above copyright notice,
9
+ # this list of conditions and the following disclaimer.
10
+ #
11
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # (3) Neither the name of the copyright holder nor the names of any contributors
16
+ # may be used to endorse or promote products derived from this software without
17
+ # specific prior written permission from the respective party.
18
+ #
19
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
20
+ # of modifications or other derivative works may not use the "OpenStudio"
21
+ # trademark, "OS", "os", or any other confusingly similar designation without
22
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
23
+ #
24
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
25
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
26
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
28
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
29
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
31
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
33
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
+ # *******************************************************************************
36
+ %>
37
+
38
+
39
+
40
+ <!DOCTYPE html>
41
+ <meta charset="utf-8">
42
+ <style>
43
+
44
+ svg {
45
+ font: 10px sans-serif;
46
+ }
47
+
48
+ .axis path,
49
+ .axis line {
50
+ fill: none;
51
+ stroke: #000;
52
+ shape-rendering: crispEdges;
53
+ }
54
+
55
+ .brush .extent {
56
+ stroke: #fff;
57
+ fill-opacity: .125;
58
+ shape-rendering: crispEdges;
59
+ }
60
+
61
+ .xline {
62
+ stroke-width: 1;
63
+ fill: none;
64
+ clip-path: url(#clip);
65
+ }
66
+
67
+ </style>
68
+ <title><%=@name%></title>
69
+ <link href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.2.0/css/bootstrap.css" rel="stylesheet">
70
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
71
+ <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/d3/3.3.9/d3.min.js"></script>
72
+ <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
73
+ </head>
74
+ <body>
75
+ <div id="timeseriesplot" class="container">
76
+ <h1 id="plottitle">Timeseries Plot</h1>
77
+ </div>
78
+ <script>
79
+
80
+ var allSeries = <%= all_series %>;
81
+
82
+ // Set the overall plot heading
83
+ if (allSeries[0].displayname != "") $("#plottitle").text(allSeries[0].displayname);
84
+ else $("#plottitle").text(allSeries[0].type);
85
+
86
+ // Define size and margins of chart
87
+ var margin = {top: 10, right: 350, bottom: 100, left: 100},
88
+ margin2 = {top: 430, right: 350, bottom: 20, left: 100},
89
+ width = 1500 - margin.left - margin.right,
90
+ height = 500 - margin.top - margin.bottom,
91
+ height2 = 500 - margin2.top - margin2.bottom;
92
+
93
+ var parseDate = d3.time.format("%b %Y").parse;
94
+
95
+ // Determine the bounds of the chart
96
+ var x_min = new Date('January 1, 3000 00:00:00');
97
+ var x_max = new Date('January 1, 1900 00:00:00');
98
+ var y_min = Number.POSITIVE_INFINITY;
99
+ var y_max = Number.NEGATIVE_INFINITY;
100
+ $.each(allSeries, function(index, all_series) {
101
+ var series = allSeries[index];
102
+
103
+ this_x_min = d3.min(series.data.map(function(d) { return new Date(d.time); }))
104
+ this_x_max = d3.max(series.data.map(function(d) { return new Date(d.time); }))
105
+ this_y_min = d3.min(series.data.map(function(d) { return d.y; }))
106
+ this_y_max = d3.max(series.data.map(function(d) { return d.y; }))
107
+
108
+ if (this_x_min < x_min) x_min = this_x_min;
109
+ if (this_x_max > x_max) x_max = this_x_max;
110
+ if (this_y_min < y_min) y_min = this_y_min;
111
+ if (this_y_max > y_max) y_max = this_y_max;
112
+
113
+ });
114
+ // Log the bounds for debugging
115
+ console.log("x_min = " + x_min)
116
+ console.log("x_max = " + x_max)
117
+ console.log("y_min = " + y_min)
118
+ console.log("y_max = " + y_max)
119
+
120
+ // Increase the y max by a little for readability
121
+ y_max = y_max + ((y_max - y_min) * 0.25);
122
+
123
+ // Horizontal axis scale
124
+ var x_extent = [this.x_min, this.x_max];
125
+
126
+ // Vertical axis scale
127
+ var y_extent = [this.y_min, this.y_max];
128
+
129
+ // Create the x and y scales (width on page) for both chart areas
130
+ var x = d3.time.scale().range([0, width]),
131
+ x2 = d3.time.scale().range([0, width]),
132
+ y = d3.scale.linear().range([height, 0]),
133
+ y2 = d3.scale.linear().range([height2, 0]);
134
+
135
+ // Create the x and y domains (extent of the data) for both chart areas
136
+ x.domain(x_extent);
137
+ y.domain(y_extent);
138
+ x2.domain(x.domain());
139
+ y2.domain(y.domain());
140
+
141
+ // Create and position axes
142
+ var xAxis = d3.svg.axis().scale(x).orient("bottom"),
143
+ xAxis2 = d3.svg.axis().scale(x2).orient("bottom"),
144
+ yAxis = d3.svg.axis().scale(y).tickFormat(d3.format(".2e")).orient("left"),
145
+ yAxis2 = d3.svg.axis().scale(y2).orient("left");
146
+
147
+ // Create the selector
148
+ var brush = d3.svg.brush()
149
+ .x(x2)
150
+ .on("brush", brushed);
151
+
152
+ // Function to create lines in the focus area
153
+ var line = d3.svg.line()
154
+ .x(function(d) { return x(new Date(d.time)); })
155
+ .y(function(d) { return y(d.y); });
156
+
157
+ // Function to create lines in the context area
158
+ var line2 = d3.svg.line()
159
+ .x(function(d) { return x2(new Date(d.time)); })
160
+ .y(function(d) { return y2(d.y); });
161
+
162
+ // Create the overall SVG
163
+ var svg = d3.select("#timeseriesplot").append("svg")
164
+ .attr("width", width + margin.left + margin.right)
165
+ .attr("height", height + margin.top + margin.bottom);
166
+
167
+ svg.append("defs").append("clipPath")
168
+ .attr("id", "clip")
169
+ .append("rect")
170
+ .attr("width", width)
171
+ .attr("height", height);
172
+
173
+ // Draw the focus section (main plot)
174
+ var focus = svg.append("g")
175
+ .attr("class", "focus")
176
+ .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
177
+
178
+ // Draw the focus x and y axes
179
+ focusaxis = focus.append("g")
180
+ .attr("class", "x axis")
181
+ .attr("transform", "translate(0," + height + ")")
182
+ .call(xAxis);
183
+
184
+ focusaxis.append("text")
185
+ .text(allSeries[0].type + " [" + allSeries[0].units + "]")
186
+ .attr("transform", "rotate (-90, 0, 0) translate(" + (height / 5) + "," + (-1*(margin.left / 2 + 20)) + ")"); // TODO dynamically account for width of axis label to center
187
+
188
+ focus.append("g")
189
+ .attr("class", "y axis")
190
+ .call(yAxis);
191
+
192
+ // Draw the context section (selector)
193
+ var context = svg.append("g")
194
+ .attr("class", "context")
195
+ .attr("transform", "translate(" + margin2.left + "," + margin2.top + ")");
196
+
197
+ // Draw the context x axis
198
+ context.append("g")
199
+ .attr("class", "x axis")
200
+ .attr("transform", "translate(0," + height2 + ")")
201
+ .call(xAxis2);
202
+
203
+ // Draw the brush selector for the context
204
+ context.append("g")
205
+ .attr("class", "x brush")
206
+ .call(brush)
207
+ .selectAll("rect")
208
+ .attr("y", -6)
209
+ .attr("height", height2 + 7);
210
+
211
+ // set default extent for brush selected (custom code for FRP)
212
+ brush.extent([new Date("January 15 2009 00:00:00"), new Date("January 16 2009 24:00:00")])
213
+ context.select('.brush').call(brush);
214
+ brushed();
215
+
216
+ // Setup the spacing for the legends
217
+ var legendSpacing = 25;
218
+
219
+ // Create a legend for the data series
220
+ var primlegend = focus.append("g")
221
+ .attr("class", "w axis")
222
+ .attr("transform", "translate(" + (width + 10) + ",0)");
223
+
224
+ // TODO make series toggle-able
225
+ primlegend.append("text").text("Series Names")
226
+ //.style("cursor", " pointer")
227
+ .attr("y", legendSpacing * 1)
228
+ .attr("class", "noselect");
229
+
230
+ // Define the color scale
231
+ var c20 = d3.scale.category20();
232
+ c20.domain([1, allSeries.length]);
233
+
234
+ // Plot each series
235
+ var i = 1;
236
+ $.each(allSeries, function(index, all_series) {
237
+ var series = allSeries[index];
238
+
239
+ // Generate a color
240
+ var lineColor = series.color
241
+
242
+ // Plot on the focus
243
+ focus.append("path")
244
+ .datum(series.data)
245
+ .attr("class", "xline")
246
+ .attr("d", line)
247
+ .style("stroke", lineColor);
248
+
249
+ // Plot on the context
250
+ // Note that line2 uses the x2 and y2 scales
251
+ context.append("path")
252
+ .datum(series.data)
253
+ .attr("class", "xline")
254
+ .attr("d", line2)
255
+ .style("stroke", lineColor);
256
+
257
+ // Add the series name to the legend
258
+ primlegend.append("text").text(series.name + " [" + series.units + "]")
259
+ .style("cursor", " pointer")
260
+ .attr("y", legendSpacing * (i + 1))
261
+ .attr("class", "noselect")
262
+ .style("fill", lineColor);
263
+
264
+ i += 1;
265
+
266
+ });
267
+
268
+ // Add the series cvrmse to the legend
269
+ primlegend.append("text").text("CVRMSE:" + allSeries[0].cvrmse)
270
+ .attr("y", legendSpacing * (i + 1))
271
+ .attr("class", "noselect");
272
+ i += 1;
273
+
274
+ // Add the series nmbe to the legend
275
+ primlegend.append("text").text("NMBE:" + allSeries[0].nmbe)
276
+ .attr("y", legendSpacing * (i + 1))
277
+ .attr("class", "noselect");
278
+ i += 1;
279
+
280
+ // Define what to do when the selector is moved around
281
+ function brushed() {
282
+ console.log("Brushed")
283
+ x.domain(brush.empty() ? x2.domain() : brush.extent());
284
+ focus.selectAll(".xline").attr("d", line);
285
+ focus.selectAll(".x.axis").call(xAxis);
286
+ }
287
+
288
+ </script>