openstudio-common-measures 0.3.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (467) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +3 -1
  4. data/CHANGELOG.md +34 -0
  5. data/Jenkinsfile +2 -1
  6. data/LICENSE.md +1 -1
  7. data/README.md +21 -2
  8. data/doc_templates/LICENSE.md +1 -1
  9. data/doc_templates/copyright_erb.txt +1 -1
  10. data/doc_templates/copyright_js.txt +1 -1
  11. data/doc_templates/copyright_ruby.txt +1 -1
  12. data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +1 -1
  13. data/lib/measures/AddCostPerAreaToConstruction/measure.rb +1 -1
  14. data/lib/measures/AddCostPerAreaToConstruction/measure.xml +8 -7
  15. data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +1 -1
  16. data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +1 -1
  17. data/lib/measures/AddCostPerFloorAreaToBuilding/measure.xml +8 -7
  18. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +1 -1
  19. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +1 -1
  20. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.xml +8 -7
  21. data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +1 -1
  22. data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +1 -1
  23. data/lib/measures/AddCostPerFloorAreaToLights/measure.xml +8 -7
  24. data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +1 -1
  25. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +1 -1
  26. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.xml +8 -13
  27. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +1 -1
  28. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +1 -1
  29. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.xml +15 -8
  30. data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +1 -1
  31. data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +1 -1
  32. data/lib/measures/AddCostperAreatoUnusedConstruction/measure.xml +8 -7
  33. data/lib/measures/AddExteriorLights/LICENSE.md +1 -1
  34. data/lib/measures/AddExteriorLights/measure.rb +1 -1
  35. data/lib/measures/AddExteriorLights/measure.xml +8 -7
  36. data/lib/measures/AddMeter/LICENSE.md +1 -1
  37. data/lib/measures/AddMeter/measure.rb +1 -1
  38. data/lib/measures/AddMeter/measure.xml +8 -7
  39. data/lib/measures/AddOutputDiagnostics/LICENSE.md +1 -1
  40. data/lib/measures/AddOutputDiagnostics/measure.rb +1 -1
  41. data/lib/measures/AddOutputDiagnostics/measure.xml +8 -7
  42. data/lib/measures/AddOutputVariable/LICENSE.md +1 -1
  43. data/lib/measures/AddOutputVariable/measure.rb +1 -1
  44. data/lib/measures/AddOutputVariable/measure.xml +8 -7
  45. data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +1 -1
  46. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +1 -1
  47. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.xml +8 -7
  48. data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +1 -1
  49. data/lib/measures/AdjustSystemEfficiencies/measure.rb +1 -1
  50. data/lib/measures/AdjustSystemEfficiencies/measure.xml +7 -6
  51. data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +1 -1
  52. data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +1 -1
  53. data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.xml +8 -7
  54. data/lib/measures/ChangeBuildingLocation/LICENSE.md +1 -1
  55. data/lib/measures/ChangeBuildingLocation/measure.rb +3 -3
  56. data/lib/measures/ChangeBuildingLocation/measure.xml +17 -17
  57. data/lib/measures/ChangeBuildingLocation/resources/epw.rb +1 -1
  58. data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +1 -1
  59. data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +1 -1
  60. data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +1 -1
  61. data/lib/measures/EnableIdealAirLoadsForAllZones/measure.xml +9 -8
  62. data/lib/measures/ExportScheduleCSV/LICENSE.md +1 -1
  63. data/lib/measures/ExportScheduleCSV/measure.rb +1 -1
  64. data/lib/measures/ExportScheduleCSV/measure.xml +11 -11
  65. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +1 -1
  66. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +1 -1
  67. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.xml +5 -5
  68. data/lib/measures/MeterFlodPlot/LICENSE.md +1 -1
  69. data/lib/measures/MeterFlodPlot/measure.rb +1 -1
  70. data/lib/measures/MeterFlodPlot/measure.xml +11 -11
  71. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +1 -1
  72. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +1 -1
  73. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.xml +8 -7
  74. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +1 -1
  75. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +1 -1
  76. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.xml +8 -7
  77. data/lib/measures/PredictedMeanVote/LICENSE.md +1 -1
  78. data/lib/measures/PredictedMeanVote/measure.rb +1 -1
  79. data/lib/measures/PredictedMeanVote/measure.xml +14 -13
  80. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +1 -1
  81. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +1 -1
  82. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.xml +9 -8
  83. data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +1 -1
  84. data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +1 -1
  85. data/lib/measures/RemoveUnusedDefaultProfiles/measure.xml +9 -8
  86. data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +1 -1
  87. data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +1 -1
  88. data/lib/measures/ReplaceExteriorWindowConstruction/measure.xml +11 -10
  89. data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +1 -1
  90. data/lib/measures/ReplaceThermostatSchedules/measure.rb +1 -1
  91. data/lib/measures/ReplaceThermostatSchedules/measure.xml +12 -11
  92. data/lib/measures/ReportModelChanges/LICENSE.md +1 -1
  93. data/lib/measures/ReportModelChanges/measure.rb +1 -1
  94. data/lib/measures/ReportModelChanges/measure.xml +5 -5
  95. data/lib/measures/RunPeriod/LICENSE.md +1 -1
  96. data/lib/measures/RunPeriod/measure.rb +1 -1
  97. data/lib/measures/RunPeriod/measure.xml +19 -18
  98. data/lib/measures/RunPeriodMultiple/LICENSE.md +1 -1
  99. data/lib/measures/RunPeriodMultiple/measure.rb +1 -1
  100. data/lib/measures/RunPeriodMultiple/measure.xml +4 -4
  101. data/lib/measures/ServerDirectoryCleanup/LICENSE.md +1 -1
  102. data/lib/measures/ServerDirectoryCleanup/measure.rb +1 -1
  103. data/lib/measures/ServerDirectoryCleanup/measure.xml +16 -16
  104. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +1 -1
  105. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +1 -1
  106. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.xml +10 -9
  107. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +1 -1
  108. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +1 -1
  109. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.xml +10 -9
  110. data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +1 -1
  111. data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +1 -1
  112. data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.xml +8 -7
  113. data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +1 -1
  114. data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +1 -1
  115. data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.xml +8 -7
  116. data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +1 -1
  117. data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +1 -1
  118. data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.xml +8 -7
  119. data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +1 -1
  120. data/lib/measures/SetGasBurnerEfficiency/measure.rb +1 -1
  121. data/lib/measures/SetGasBurnerEfficiency/measure.xml +10 -9
  122. data/lib/measures/SetLifecycleCostParameters/LICENSE.md +1 -1
  123. data/lib/measures/SetLifecycleCostParameters/measure.rb +1 -1
  124. data/lib/measures/SetLifecycleCostParameters/measure.xml +8 -7
  125. data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +1 -1
  126. data/lib/measures/SetLightingLoadsByLPD/measure.rb +1 -1
  127. data/lib/measures/SetLightingLoadsByLPD/measure.xml +10 -9
  128. data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +1 -1
  129. data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +1 -1
  130. data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.xml +20 -19
  131. data/lib/measures/SetThermostatSchedules/LICENSE.md +1 -1
  132. data/lib/measures/SetThermostatSchedules/measure.rb +1 -1
  133. data/lib/measures/SetThermostatSchedules/measure.xml +12 -11
  134. data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +1 -1
  135. data/lib/measures/ShiftScheduleProfileTime/measure.rb +1 -1
  136. data/lib/measures/ShiftScheduleProfileTime/measure.xml +10 -9
  137. data/lib/measures/SwapLightsDefinition/LICENSE.md +1 -1
  138. data/lib/measures/SwapLightsDefinition/measure.rb +1 -1
  139. data/lib/measures/SwapLightsDefinition/measure.xml +9 -10
  140. data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +1 -1
  141. data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +1 -1
  142. data/lib/measures/UnmetLoadHoursTroubleshooting/measure.xml +11 -11
  143. data/lib/measures/VentilationQAQC/LICENSE.md +1 -1
  144. data/lib/measures/VentilationQAQC/measure.rb +1 -1
  145. data/lib/measures/VentilationQAQC/measure.xml +17 -17
  146. data/lib/measures/ZoneReport/LICENSE.md +1 -1
  147. data/lib/measures/ZoneReport/measure.rb +1 -1
  148. data/lib/measures/ZoneReport/measure.xml +11 -11
  149. data/lib/measures/add_ems_emissions_reporting/LICENSE.MD.txt +15 -0
  150. data/lib/measures/add_ems_emissions_reporting/LICENSE.md +27 -0
  151. data/lib/measures/add_ems_emissions_reporting/README.md +17 -0
  152. data/lib/measures/add_ems_emissions_reporting/measure.rb +475 -0
  153. data/lib/measures/add_ems_emissions_reporting/measure.xml +599 -0
  154. data/lib/measures/add_ems_emissions_reporting/resources/future_annual_co2e.csv +17 -0
  155. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2020.csv +8761 -0
  156. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2022.csv +8761 -0
  157. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2024.csv +8761 -0
  158. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2026.csv +8761 -0
  159. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2028.csv +8761 -0
  160. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2030.csv +8761 -0
  161. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2032.csv +8761 -0
  162. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2034.csv +8761 -0
  163. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2036.csv +8761 -0
  164. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2038.csv +8761 -0
  165. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2040.csv +8761 -0
  166. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2042.csv +8761 -0
  167. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2044.csv +8761 -0
  168. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2046.csv +8761 -0
  169. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2048.csv +8761 -0
  170. data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2050.csv +8761 -0
  171. data/lib/measures/add_ems_emissions_reporting/resources/historical_annual_co2e.csv +9 -0
  172. data/lib/measures/add_ems_emissions_reporting/resources/historical_hourly_co2e_2019.csv +8761 -0
  173. data/lib/measures/add_ems_to_control_ev_charging/LICENSE.MD.txt +1 -1
  174. data/lib/measures/add_ems_to_control_ev_charging/LICENSE.md +1 -1
  175. data/lib/measures/add_ems_to_control_ev_charging/measure.rb +2 -1
  176. data/lib/measures/add_ems_to_control_ev_charging/measure.xml +14 -10
  177. data/lib/measures/add_ev_load/LICENSE.MD.txt +1 -1
  178. data/lib/measures/add_ev_load/LICENSE.md +1 -1
  179. data/lib/measures/add_ev_load/measure.rb +56 -10
  180. data/lib/measures/add_ev_load/measure.xml +229 -16
  181. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/PSN_BuildingKey.csv → PSN_BuildingKey.csv} +0 -0
  182. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/PSN_BuildingKey_v2.csv → PSN_BuildingKey_v2.csv} +0 -0
  183. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex1.csv → chg1_dow1_flex1.csv} +0 -0
  184. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex2.csv → chg1_dow1_flex2.csv} +0 -0
  185. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex3.csv → chg1_dow1_flex3.csv} +0 -0
  186. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex1.csv → chg1_dow2_flex1.csv} +0 -0
  187. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex2.csv → chg1_dow2_flex2.csv} +0 -0
  188. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex3.csv → chg1_dow2_flex3.csv} +0 -0
  189. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex1.csv → chg1_dow3_flex1.csv} +0 -0
  190. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex2.csv → chg1_dow3_flex2.csv} +0 -0
  191. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex3.csv → chg1_dow3_flex3.csv} +0 -0
  192. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex1.csv → chg2_dow1_flex1.csv} +0 -0
  193. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex2.csv → chg2_dow1_flex2.csv} +0 -0
  194. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex3.csv → chg2_dow1_flex3.csv} +0 -0
  195. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex1.csv → chg2_dow2_flex1.csv} +0 -0
  196. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex2.csv → chg2_dow2_flex2.csv} +0 -0
  197. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex3.csv → chg2_dow2_flex3.csv} +0 -0
  198. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex1.csv → chg2_dow3_flex1.csv} +0 -0
  199. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex2.csv → chg2_dow3_flex2.csv} +0 -0
  200. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex3.csv → chg2_dow3_flex3.csv} +0 -0
  201. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex1.csv → chg3_dow1_flex1.csv} +0 -0
  202. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex2.csv → chg3_dow1_flex2.csv} +0 -0
  203. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex3.csv → chg3_dow1_flex3.csv} +0 -0
  204. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex1.csv → chg3_dow2_flex1.csv} +0 -0
  205. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex2.csv → chg3_dow2_flex2.csv} +0 -0
  206. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex3.csv → chg3_dow2_flex3.csv} +0 -0
  207. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex1.csv → chg3_dow3_flex1.csv} +0 -0
  208. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex2.csv → chg3_dow3_flex2.csv} +0 -0
  209. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex3.csv → chg3_dow3_flex3.csv} +0 -0
  210. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Saturday.csv → fast_charge_15min_Saturday.csv} +0 -0
  211. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Sunday.csv → fast_charge_15min_Sunday.csv} +0 -0
  212. data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Weekday.csv → fast_charge_15min_Weekday.csv} +0 -0
  213. data/lib/measures/add_rooftop_pv/LICENSE.md +1 -1
  214. data/lib/measures/add_rooftop_pv/measure.rb +1 -1
  215. data/lib/measures/add_rooftop_pv/measure.xml +5 -5
  216. data/lib/measures/add_zone_mixing_object/LICENSE.md +1 -1
  217. data/lib/measures/add_zone_mixing_object/measure.rb +1 -1
  218. data/lib/measures/add_zone_mixing_object/measure.xml +8 -7
  219. data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +1 -1
  220. data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +1 -1
  221. data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.xml +8 -7
  222. data/lib/measures/air_wall_zone_mixing/LICENSE.md +1 -1
  223. data/lib/measures/air_wall_zone_mixing/measure.rb +1 -1
  224. data/lib/measures/air_wall_zone_mixing/measure.xml +5 -5
  225. data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +1 -1
  226. data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +1 -1
  227. data/lib/measures/envelope_and_internal_load_breakdown/measure.xml +8 -8
  228. data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +1 -1
  229. data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +8 -1
  230. data/lib/measures/example_report/LICENSE.md +1 -1
  231. data/lib/measures/example_report/measure.rb +1 -1
  232. data/lib/measures/example_report/measure.xml +14 -14
  233. data/lib/measures/example_report/resources/os_lib_reporting_example.rb +1 -1
  234. data/lib/measures/example_report/resources/report.html.erb +8 -1
  235. data/lib/measures/gem_env_report/LICENSE.md +1 -1
  236. data/lib/measures/gem_env_report/measure.rb +1 -1
  237. data/lib/measures/gem_env_report/measure.xml +13 -12
  238. data/lib/measures/gem_env_report/resources/gem_env_info.rb +1 -1
  239. data/lib/measures/gem_env_report/resources/openstudio_info.rb +1 -1
  240. data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +1 -1
  241. data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +1 -1
  242. data/lib/measures/generic_qaqc/LICENSE.md +1 -1
  243. data/lib/measures/generic_qaqc/README.md +19 -4
  244. data/lib/measures/generic_qaqc/README.md.erb +7 -1
  245. data/lib/measures/generic_qaqc/docs/generic_qaqc_detailed.jpg +0 -0
  246. data/lib/measures/generic_qaqc/docs/generic_qaqc_summary.jpg +0 -0
  247. data/lib/measures/generic_qaqc/measure.rb +40 -30
  248. data/lib/measures/generic_qaqc/measure.xml +183 -90
  249. data/lib/measures/generic_qaqc/resources/CreateResults.rb +1 -1
  250. data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +1 -1
  251. data/lib/measures/generic_qaqc/resources/check_calibration.rb +1 -1
  252. data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +4 -2
  253. data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +14 -9
  254. data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +331 -232
  255. data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +60 -21
  256. data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +59 -21
  257. data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +1 -1
  258. data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +58 -57
  259. data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +5 -2
  260. data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +28 -23
  261. data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +5 -2
  262. data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +4 -4
  263. data/lib/measures/generic_qaqc/resources/check_part_loads.rb +1 -1
  264. data/lib/measures/generic_qaqc/resources/check_placeholder.rb +1 -1
  265. data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +1 -1
  266. data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +1 -1
  267. data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +1 -1
  268. data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +1 -1
  269. data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +1 -1
  270. data/lib/measures/generic_qaqc/resources/check_schedules.rb +66 -102
  271. data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +4 -2
  272. data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +4 -2
  273. data/lib/measures/generic_qaqc/resources/check_weather_files.rb +1 -1
  274. data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +50 -16
  275. data/lib/measures/generic_qaqc/resources/report.html.erb +8 -1
  276. data/lib/measures/get_site_from_building_component_library/LICENSE.md +1 -1
  277. data/lib/measures/get_site_from_building_component_library/measure.rb +1 -1
  278. data/lib/measures/get_site_from_building_component_library/measure.xml +6 -6
  279. data/lib/measures/hvac_psychrometric_chart/LICENSE.md +1 -1
  280. data/lib/measures/hvac_psychrometric_chart/measure.rb +1 -1
  281. data/lib/measures/hvac_psychrometric_chart/measure.xml +15 -15
  282. data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +8 -1
  283. data/lib/measures/inject_idf_objects/LICENSE.md +1 -1
  284. data/lib/measures/inject_idf_objects/measure.rb +1 -1
  285. data/lib/measures/inject_idf_objects/measure.xml +10 -10
  286. data/lib/measures/openstudio_results/LICENSE.md +1 -1
  287. data/lib/measures/openstudio_results/measure.rb +6 -4
  288. data/lib/measures/openstudio_results/measure.xml +174 -162
  289. data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +1 -1
  290. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +1 -1
  291. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +1 -1
  292. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +1 -1
  293. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +1 -1
  294. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +1 -1
  295. data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +1 -1
  296. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +1 -1
  297. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +1 -1
  298. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +1 -1
  299. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  300. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +1 -1
  301. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +1 -1
  302. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +1 -1
  303. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +1 -1
  304. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +1 -1
  305. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +1 -1
  306. data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +1 -1
  307. data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +1 -1
  308. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +1 -1
  309. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +1 -1
  310. data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +1 -1
  311. data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +1 -1
  312. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +1 -1
  313. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +1 -1
  314. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +1 -1
  315. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +1 -1
  316. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +1 -1
  317. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +1 -1
  318. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +1 -1
  319. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +1 -1
  320. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +1 -1
  321. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +1 -1
  322. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  323. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
  324. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
  325. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +1 -1
  326. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +1 -1
  327. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +1 -1
  328. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +1 -1
  329. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +1 -1
  330. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +1 -1
  331. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +1 -1
  332. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +1 -1
  333. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +1 -1
  334. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +1 -1
  335. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +1 -1
  336. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +1 -1
  337. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +1 -1
  338. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +1 -1
  339. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +1 -1
  340. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  341. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
  342. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
  343. data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +1 -1
  344. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +1 -1
  345. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +1 -1
  346. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +1 -1
  347. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +1 -1
  348. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +1 -1
  349. data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +1 -1
  350. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +1 -1
  351. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +1 -1
  352. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +1 -1
  353. data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +1 -1
  354. data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +1 -1
  355. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +1 -1
  356. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +1 -1
  357. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +1 -1
  358. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +1 -1
  359. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +1 -1
  360. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +1 -1
  361. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +1 -1
  362. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +1 -1
  363. data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +1 -1
  364. data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +1 -1
  365. data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +1 -1
  366. data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +1 -1
  367. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +1 -1
  368. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +1 -1
  369. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +1 -1
  370. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +1 -1
  371. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +1 -1
  372. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +1 -1
  373. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +1 -1
  374. data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +1 -1
  375. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +1 -1
  376. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +1 -1
  377. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
  378. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +1 -1
  379. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +1 -1
  380. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +1 -1
  381. data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +1 -1
  382. data/lib/measures/openstudio_results/resources/Siz.Model.rb +1 -1
  383. data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +1 -1
  384. data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +1 -1
  385. data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +1 -1
  386. data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +1 -1
  387. data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +1 -1
  388. data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +1 -1
  389. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +1 -1
  390. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +1 -1
  391. data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +1 -1
  392. data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +1 -1
  393. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +1 -1
  394. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +1 -1
  395. data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +1 -1
  396. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +1 -1
  397. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +1 -1
  398. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +1 -1
  399. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +1 -1
  400. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +1 -1
  401. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +1 -1
  402. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +1 -1
  403. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +1 -1
  404. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +1 -1
  405. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +1 -1
  406. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +1 -1
  407. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +1 -1
  408. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +1 -1
  409. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +1 -1
  410. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +1 -1
  411. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +1 -1
  412. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +1 -1
  413. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +1 -1
  414. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +1 -1
  415. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +1 -1
  416. data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +1 -1
  417. data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +2 -2
  418. data/lib/measures/openstudio_results/resources/report.html.erb +8 -1
  419. data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +1 -1
  420. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +1 -1
  421. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +8 -7
  422. data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +1 -1
  423. data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +1 -1
  424. data/lib/measures/set_electric_equipment_loads_by_epd/measure.xml +10 -9
  425. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +1 -1
  426. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +1 -1
  427. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.xml +17 -11
  428. data/lib/measures/set_run_period/LICENSE.md +1 -1
  429. data/lib/measures/set_run_period/measure.rb +1 -1
  430. data/lib/measures/set_run_period/measure.xml +5 -5
  431. data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +1 -1
  432. data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +1 -1
  433. data/lib/measures/set_space_infiltration_per_exterior_area/measure.xml +8 -7
  434. data/lib/measures/tariff_selection_block/LICENSE.md +1 -1
  435. data/lib/measures/tariff_selection_block/measure.rb +2 -2
  436. data/lib/measures/tariff_selection_block/measure.xml +5 -5
  437. data/lib/measures/tariff_selection_flat/LICENSE.md +1 -1
  438. data/lib/measures/tariff_selection_flat/measure.rb +2 -2
  439. data/lib/measures/tariff_selection_flat/measure.xml +5 -5
  440. data/lib/measures/tariff_selection_generic/LICENSE.md +1 -1
  441. data/lib/measures/tariff_selection_generic/README.md +2 -2
  442. data/lib/measures/tariff_selection_generic/measure.rb +1 -1
  443. data/lib/measures/tariff_selection_generic/measure.xml +25 -25
  444. data/lib/measures/tariff_selection_generic/resources/FlatEnergyCharge-Gas.idf +3 -3
  445. data/lib/measures/tariff_selection_generic/resources/IN-EIAMonthlyRateGas.idf +1 -1
  446. data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +1 -1
  447. data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -2
  448. data/lib/measures/tariff_selection_time_and_date_dependant/measure.xml +5 -5
  449. data/lib/measures/view_data/LICENSE.md +1 -1
  450. data/lib/measures/view_data/measure.rb +1 -1
  451. data/lib/measures/view_data/measure.xml +32 -32
  452. data/lib/measures/view_data/resources/report.html.in +1336 -973
  453. data/lib/measures/view_data/resources/va3c.rb +2 -1
  454. data/lib/measures/view_model/LICENSE.md +1 -1
  455. data/lib/measures/view_model/measure.rb +1 -1
  456. data/lib/measures/view_model/measure.xml +32 -32
  457. data/lib/measures/view_model/resources/report.html.in +1339 -976
  458. data/lib/measures/view_model/resources/va3c.rb +2 -1
  459. data/lib/openstudio/common_measures/extension.rb +1 -1
  460. data/lib/openstudio/common_measures/version.rb +2 -2
  461. data/lib/openstudio/common_measures.rb +1 -1
  462. data/lib/openstudio-common-measures.rb +1 -1
  463. data/openstudio-common-measures.gemspec +4 -4
  464. metadata +68 -45
  465. data/lib/measures/generic_qaqc/resources/os_lib_helper_methods.rb +0 -399
  466. data/lib/measures/openstudio_results/resources/os_lib_helper_methods.rb +0 -399
  467. data/lib/measures/openstudio_results/resources/os_lib_schedules.rb +0 -962
@@ -0,0 +1,475 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2021, 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
+ require 'csv'
37
+ require 'openstudio-extension'
38
+ require 'openstudio/extension/core/os_lib_helper_methods'
39
+
40
+ # start the measure
41
+ class AddEMSEmissionsReporting < OpenStudio::Measure::ModelMeasure
42
+ # human readable name
43
+ def name
44
+ return 'Add EMS to Report Emissions'
45
+ end
46
+
47
+ # human readable description
48
+ def description
49
+ return 'This measure reports emissions based on user-provided future and historical years as well as future, historical hourly, and historical annual subregions.'
50
+ end
51
+
52
+ # human readable description of modeling approach
53
+ def modeler_description
54
+ return 'This measure uses the EnergyPlus Energy Management System to log and report emissions based on user-provided future and historical years as well as future, historical hourly, and historical annual subregions.'
55
+ end
56
+
57
+ # define the arguments that the user will input
58
+ def arguments(model)
59
+ args = OpenStudio::Measure::OSArgumentVector.new
60
+
61
+ # future subregion
62
+ future_subregion_chs = OpenStudio::StringVector.new
63
+ future_subregion_chs << 'AZNMc'
64
+ future_subregion_chs << 'CAMXc'
65
+ future_subregion_chs << 'ERCTc'
66
+ future_subregion_chs << 'FRCCc'
67
+ future_subregion_chs << 'MROEc'
68
+ future_subregion_chs << 'MROWc'
69
+ future_subregion_chs << 'NEWEc'
70
+ future_subregion_chs << 'NWPPc'
71
+ future_subregion_chs << 'NYSTc'
72
+ future_subregion_chs << 'RFCEc'
73
+ future_subregion_chs << 'RFCMc'
74
+ future_subregion_chs << 'RFCWc'
75
+ future_subregion_chs << 'RMPAc'
76
+ future_subregion_chs << 'SPNOc'
77
+ future_subregion_chs << 'SPSOc'
78
+ future_subregion_chs << 'SRMVc'
79
+ future_subregion_chs << 'SRMWc'
80
+ future_subregion_chs << 'SRSOc'
81
+ future_subregion_chs << 'SRTVc'
82
+ future_subregion_chs << 'SRVCc'
83
+
84
+ future_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('future_subregion', future_subregion_chs, true)
85
+ future_subregion.setDisplayName('Future subregion')
86
+ future_subregion.setDescription('Future subregion. Options are: AZNMc, CAMXc, ERCTc, FRCCc, MROEc, MROWc, NEWEc, NWPPc, NYSTc, RFCEc, RFCMc, RFCWc, RMPAc, SPNOc, SPSOc, SRMVc, SRMWc, SRSOc, SRTVc, and SRVCc')
87
+ future_subregion.setDefaultValue('RMPAc')
88
+ args << future_subregion
89
+
90
+ # historical hourly subregion
91
+ hourly_historical_subregion_chs = OpenStudio::StringVector.new
92
+ hourly_historical_subregion_chs << 'California'
93
+ hourly_historical_subregion_chs << 'Carolinas'
94
+ hourly_historical_subregion_chs << 'Central'
95
+ hourly_historical_subregion_chs << 'Florida'
96
+ hourly_historical_subregion_chs << 'Mid-Atlantic'
97
+ hourly_historical_subregion_chs << 'Midwest'
98
+ hourly_historical_subregion_chs << 'New England'
99
+ hourly_historical_subregion_chs << 'New York'
100
+ hourly_historical_subregion_chs << 'Northwest'
101
+ hourly_historical_subregion_chs << 'Rocky Mountains'
102
+ hourly_historical_subregion_chs << 'Southeast'
103
+ hourly_historical_subregion_chs << 'Southwest'
104
+ hourly_historical_subregion_chs << 'Tennessee'
105
+ hourly_historical_subregion_chs << 'Texas'
106
+
107
+ hourly_historical_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('hourly_historical_subregion', hourly_historical_subregion_chs, true)
108
+ hourly_historical_subregion.setDisplayName('Historical hourly subregion')
109
+ hourly_historical_subregion.setDescription('Historical hourly subregion. Options are: California, Carolinas, Central, Florida, Mid-Atlantic, Midwest, New England, New York, Northwest, Rocky Mountains, Southeast, Southwest, Tennessee, and Texas')
110
+ hourly_historical_subregion.setDefaultValue('Rocky Mountains')
111
+ args << hourly_historical_subregion
112
+
113
+ # historical annual subregion
114
+ annual_historical_subregion_chs = OpenStudio::StringVector.new
115
+ annual_historical_subregion_chs << 'AKGD'
116
+ annual_historical_subregion_chs << 'AKMS'
117
+ annual_historical_subregion_chs << 'AZNM'
118
+ annual_historical_subregion_chs << 'CAMX'
119
+ annual_historical_subregion_chs << 'ERCT'
120
+ annual_historical_subregion_chs << 'FRCC'
121
+ annual_historical_subregion_chs << 'HIMS'
122
+ annual_historical_subregion_chs << 'HIOA'
123
+ annual_historical_subregion_chs << 'MROE'
124
+ annual_historical_subregion_chs << 'MROW'
125
+ annual_historical_subregion_chs << 'NEWE'
126
+ annual_historical_subregion_chs << 'NWPP'
127
+ annual_historical_subregion_chs << 'NYCW'
128
+ annual_historical_subregion_chs << 'NYLI'
129
+ annual_historical_subregion_chs << 'NYUP'
130
+ annual_historical_subregion_chs << 'RFCE'
131
+ annual_historical_subregion_chs << 'RFCM'
132
+ annual_historical_subregion_chs << 'RFCW'
133
+ annual_historical_subregion_chs << 'RMPA'
134
+ annual_historical_subregion_chs << 'SPNO'
135
+ annual_historical_subregion_chs << 'SPSO'
136
+ annual_historical_subregion_chs << 'SRMV'
137
+ annual_historical_subregion_chs << 'SRMW'
138
+ annual_historical_subregion_chs << 'SRSO'
139
+ annual_historical_subregion_chs << 'SRTV'
140
+ annual_historical_subregion_chs << 'SRVC'
141
+
142
+ annual_historical_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('annual_historical_subregion', annual_historical_subregion_chs, true)
143
+ annual_historical_subregion.setDisplayName('Historical annual subregion')
144
+ annual_historical_subregion.setDescription('Historical annual subregion. Options are: AKGD, AKMS, AZNM, CAMX, ERCT, FRCC, HIMS, HIOA, MROE, MROW, NEWE, NWPP, NYCW, NYLI, NYUP, RFCE, RFCM, RFCW, RMPA, SPNO, SPSO, SRMV, SRMW, SRSO, SRTV, and SRVC')
145
+ annual_historical_subregion.setDefaultValue('RMPA')
146
+ args << annual_historical_subregion
147
+
148
+ # future year
149
+ future_year_chs = OpenStudio::StringVector.new
150
+ future_year_chs << '2020'
151
+ future_year_chs << '2022'
152
+ future_year_chs << '2024'
153
+ future_year_chs << '2026'
154
+ future_year_chs << '2028'
155
+ future_year_chs << '2030'
156
+ future_year_chs << '2032'
157
+ future_year_chs << '2034'
158
+ future_year_chs << '2036'
159
+ future_year_chs << '2038'
160
+ future_year_chs << '2040'
161
+ future_year_chs << '2042'
162
+ future_year_chs << '2044'
163
+ future_year_chs << '2046'
164
+ future_year_chs << '2048'
165
+ future_year_chs << '2050'
166
+
167
+
168
+ future_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('future_year', future_year_chs, true)
169
+ future_year.setDisplayName('Future Year')
170
+ future_year.setDescription('Future Year. Options are: 2020 to 2050 in two year increments')
171
+ future_year.setDefaultValue('2020')
172
+ args << future_year
173
+
174
+ # hourly historical year
175
+ hourly_historical_year_chs = OpenStudio::StringVector.new
176
+ hourly_historical_year_chs << '2019'
177
+
178
+ hourly_historical_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('hourly_historical_year', hourly_historical_year_chs, true)
179
+ hourly_historical_year.setDisplayName('Hourly Historical Year')
180
+ hourly_historical_year.setDescription('Hourly Historical Year. Options are: 2019.')
181
+ hourly_historical_year.setDefaultValue('2019')
182
+ args << hourly_historical_year
183
+
184
+ # annual historical year
185
+ annual_historical_year_chs = OpenStudio::StringVector.new
186
+ annual_historical_year_chs << '2007'
187
+ annual_historical_year_chs << '2009'
188
+ annual_historical_year_chs << '2010'
189
+ annual_historical_year_chs << '2012'
190
+ annual_historical_year_chs << '2014'
191
+ annual_historical_year_chs << '2016'
192
+ annual_historical_year_chs << '2018'
193
+ annual_historical_year_chs << '2019'
194
+
195
+ annual_historical_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('annual_historical_year', annual_historical_year_chs, true)
196
+
197
+ #puts "annual_historical_year = #{annual_historical_year}"
198
+
199
+ annual_historical_year.setDisplayName('Annual Historical Year')
200
+ annual_historical_year.setDescription('Annual Historical Year. Options are: 2007, 2009, 2010, 2012, 2014, 2016, 2018, and 2019.')
201
+ annual_historical_year.setDefaultValue('2019')
202
+ args << annual_historical_year
203
+
204
+ return args
205
+ end
206
+
207
+
208
+ # define what happens when the measure is run
209
+ def run(model, runner, usr_args)
210
+ super(model, runner, usr_args)
211
+
212
+ # use the built-in error checking
213
+ return false unless runner.validateUserArguments(arguments(model), usr_args)
214
+
215
+ # assign the user inputs to variables
216
+ future_subregion = runner.getStringArgumentValue('future_subregion', usr_args)
217
+ hourly_historical_subregion = runner.getStringArgumentValue('hourly_historical_subregion', usr_args)
218
+ annual_historical_subregion = runner.getStringArgumentValue('annual_historical_subregion', usr_args)
219
+ future_year = runner.getStringArgumentValue('future_year', usr_args).to_i
220
+ hourly_historical_year = runner.getStringArgumentValue('hourly_historical_year', usr_args).to_i
221
+ annual_historical_year = runner.getStringArgumentValue('annual_historical_year', usr_args).to_i
222
+
223
+ # log errors if users select arguments not supported by the measure
224
+ arguments(model).each do |argument|
225
+
226
+ case argument.name
227
+
228
+ when 'future_subregion'
229
+ if !argument.choiceValues.include? future_subregion
230
+ runner.registerError("#{future_subregion} is not a valid option. Please select from of the following future_subregion options #{argument.choiceValues}")
231
+ end
232
+ when 'hourly_historical_subregion'
233
+ if !argument.choiceValues.include? hourly_historical_subregion
234
+ runner.registerError("#{hourly_historical_subregion} is not a valid option. Please select from of the following hourly_historical_subregion options #{argument.choiceValues}")
235
+ end
236
+ when 'annual_historical_subregion'
237
+ if !argument.choiceValues.include? annual_historical_subregion
238
+ runner.registerError("#{annual_historical_subregion} is not a valid option. Please select from of the following annual_historical_subregion options #{argument.choiceValues}")
239
+ end
240
+ when 'future_year'
241
+ if !argument.choiceValues.include? future_year.to_s
242
+ runner.registerError("#{future_year} is not a valid option. Please select from of the following future_year options #{argument.choiceValues}")
243
+ end
244
+ when 'hourly_historical_year'
245
+ if !argument.choiceValues.include? hourly_historical_year.to_s
246
+ runner.registerError("#{hourly_historical_year} is not a valid option. Please select from of the following hourly_historical_year options #{argument.choiceValues}")
247
+ end
248
+ when 'annual_historical_year'
249
+ if !argument.choiceValues.include? annual_historical_year.to_s
250
+ runner.registerError("#{annual_historical_year} is not a valid option. Please select from of the following annual_historical_year options #{argument.choiceValues}")
251
+ end
252
+
253
+ end
254
+
255
+ end
256
+
257
+ fut_hr_path = "#{__dir__}/resources/future_hourly_co2e_#{future_year}.csv"
258
+ his_hr_path = "#{__dir__}/resources/historical_hourly_co2e_#{hourly_historical_year}.csv"
259
+ fut_yr_path = "#{__dir__}/resources/future_annual_co2e.csv"
260
+ his_yr_path = "#{__dir__}/resources/historical_annual_co2e.csv"
261
+
262
+ # find external files
263
+ if ((File.exist?(fut_hr_path)) and (File.exist?(fut_yr_path)) and (File.exist?(his_hr_path)) and (File.exist?(his_yr_path)))
264
+ fut_hr_file = OpenStudio::Model::ExternalFile.getExternalFile(model, fut_hr_path)
265
+ his_hr_file = OpenStudio::Model::ExternalFile.getExternalFile(model, his_hr_path)
266
+ fut_yr_file = OpenStudio::Model::ExternalFile.getExternalFile(model, fut_yr_path)
267
+ his_yr_file = OpenStudio::Model::ExternalFile.getExternalFile(model, his_yr_path)
268
+ if ((fut_hr_file.is_initialized) and (his_hr_file.is_initialized) and (fut_yr_file.is_initialized) and (his_yr_file.is_initialized))
269
+ fut_hr_file = fut_hr_file.get
270
+ his_hr_file = his_hr_file.get
271
+ fut_yr_file = fut_yr_file.get
272
+ his_yr_file = his_yr_file.get
273
+ fut_hr_data = CSV.read(fut_hr_path, headers: true)
274
+ his_hr_data = CSV.read(his_hr_path, headers: true)
275
+ fut_yr_data = CSV.read(fut_yr_path, headers: true)
276
+ his_yr_data = CSV.read(his_yr_path, headers: true)
277
+ end
278
+ else
279
+ runner.registerError("Could not find CSV file at one of more of the following paths: #{fut_hr_path}, #{his_hr_path}, #{fut_yr_path}, or #{his_yr_path}")
280
+ return false
281
+ end
282
+
283
+ # add schedule type limits for schedule file
284
+ lim_type = OpenStudio::Model::ScheduleTypeLimits.new(model)
285
+ lim_type.setName('Emissions Sch File Type Limits')
286
+
287
+ # add future schedule file
288
+ sch_file = OpenStudio::Model::ScheduleFile.new(fut_hr_file)
289
+ sch_file.setName("#{future_subregion} #{future_year} Future Hourly Emissions Sch")
290
+ sch_file.setScheduleTypeLimits(lim_type)
291
+ sch_file.setColumnNumber(fut_hr_data.headers.index(future_subregion) + 1)
292
+ sch_file.setRowstoSkipatTop(1)
293
+ sch_file.setNumberofHoursofData(8760)
294
+ sch_file.setColumnSeparator('Comma')
295
+ sch_file.setInterpolatetoTimestep(false)
296
+ sch_file.setMinutesperItem(60)
297
+
298
+ # add historical schedule file
299
+ sch_file = OpenStudio::Model::ScheduleFile.new(his_hr_file)
300
+ sch_file.setName("#{hourly_historical_subregion} #{hourly_historical_year} Historical Hourly Emissions Sch")
301
+ sch_file.setScheduleTypeLimits(lim_type)
302
+ sch_file.setColumnNumber(his_hr_data.headers.index(hourly_historical_subregion) + 1)
303
+ sch_file.setRowstoSkipatTop(1)
304
+ sch_file.setNumberofHoursofData(8760)
305
+ sch_file.setColumnSeparator('Comma')
306
+ sch_file.setInterpolatetoTimestep(false)
307
+ sch_file.setMinutesperItem(60)
308
+
309
+ # add EMS sensor for future schedule file
310
+ sch_sens = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
311
+ sch_sens.setKeyName("#{future_subregion} #{future_year} Future Hourly Emissions Sch")
312
+ sch_sens.setName('Fut_Sen')
313
+
314
+ # add EMS sensor for historical schedule file
315
+ sch_sens = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
316
+ sch_sens.setKeyName("#{hourly_historical_subregion} #{hourly_historical_year} Historical Hourly Emissions Sch")
317
+ sch_sens.setName('His_Sen')
318
+
319
+ # add whole-building electricity sensor
320
+ sch_sens = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Facility Total Purchased Electricity Energy')
321
+ sch_sens.setKeyName('Whole Building')
322
+ sch_sens.setName('Ele_Sen')
323
+
324
+ ems_prgm = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
325
+ ems_prgm.setName('Emissions_Calc_Prgm')
326
+ ems_prgm.addLine('SET fut_hr_val = Fut_Sen')
327
+ ems_prgm.addLine('SET his_hr_val = His_Sen')
328
+ fut_yr_data.each {|r| ems_prgm.addLine("SET fut_yr_val = #{r[future_subregion]}") if r[0].to_i == future_year}
329
+ his_yr_data.each {|r| ems_prgm.addLine("SET his_yr_val = #{r[annual_historical_subregion]}") if r[0].to_i == annual_historical_year}
330
+ ems_prgm.addLine('SET elec = Ele_Sen')
331
+ ems_prgm.addLine('SET conv = 1000000 * 60 * 60') # J to MWh (1000000J/MJ * 60hr/min * 60 min/sec)
332
+ ems_prgm.addLine('SET conv_kg_mt = 0.001') # kg to metric ton
333
+ ems_prgm.addLine('SET fut_hr = (fut_hr_val * elec / conv) * conv_kg_mt')
334
+ ems_prgm.addLine('SET his_hr = (his_hr_val * elec / conv) * conv_kg_mt')
335
+ ems_prgm.addLine('SET fut_yr = (fut_yr_val * elec / conv) * conv_kg_mt')
336
+ ems_prgm.addLine('SET his_yr = (his_yr_val * elec / conv) * conv_kg_mt')
337
+
338
+
339
+ #### add emissions intensity metric
340
+ # get building from model
341
+ building = model.getBuilding
342
+ floor_area = building.floorArea * 10.764 #change from m2 to ft2
343
+ #add metric
344
+ ems_prgm.addLine("SET fut_hr_intensity = fut_hr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
345
+ ems_prgm.addLine("SET his_hr_intensity = his_hr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
346
+ ems_prgm.addLine("SET fut_yr_intensity = fut_yr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
347
+ ems_prgm.addLine("SET his_yr_intensity = his_yr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
348
+
349
+ # add EMS program calling manager
350
+ mgr_prgm = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
351
+ mgr_prgm.setName('Emissions Calc Prgm')
352
+ mgr_prgm.setCallingPoint('EndOfSystemTimestepBeforeHVACReporting')
353
+ mgr_prgm.setProgram(ems_prgm, 0)
354
+
355
+ # add future hourly EMS output variable
356
+ ems_var1 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_hr')
357
+ ems_var1.setName('Future_Hourly_Emissions_Var')
358
+ ems_var1.setEMSVariableName('fut_hr')
359
+ ems_var1.setTypeOfDataInVariable('Summed')
360
+ ems_var1.setUpdateFrequency('SystemTimestep')
361
+ ems_var1.setEMSProgramOrSubroutineName(ems_prgm)
362
+ ems_var1.setUnits('mt')
363
+
364
+ # add historical hourly EMS output variable
365
+ ems_var2 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_hr')
366
+ ems_var2.setName('Historical_Hourly_Emissions_Var')
367
+ ems_var2.setEMSVariableName('his_hr')
368
+ ems_var2.setTypeOfDataInVariable('Summed')
369
+ ems_var2.setUpdateFrequency('SystemTimestep')
370
+ ems_var2.setEMSProgramOrSubroutineName(ems_prgm)
371
+ ems_var2.setUnits('mt')
372
+
373
+ # add future annual EMS output variable
374
+ ems_var3 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_yr')
375
+ ems_var3.setName('Future_Annual_Emissions_Var')
376
+ ems_var3.setEMSVariableName('fut_yr')
377
+ ems_var3.setTypeOfDataInVariable('Summed')
378
+ ems_var3.setUpdateFrequency('SystemTimestep')
379
+ ems_var3.setEMSProgramOrSubroutineName(ems_prgm)
380
+ ems_var3.setUnits('mt')
381
+
382
+ # add historical annual EMS output variable
383
+ ems_var4 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_yr')
384
+ ems_var4.setName('Historical_Annual_Emissions_Var')
385
+ ems_var4.setEMSVariableName('his_yr')
386
+ ems_var4.setTypeOfDataInVariable('Summed')
387
+ ems_var4.setUpdateFrequency('SystemTimestep')
388
+ ems_var4.setEMSProgramOrSubroutineName(ems_prgm)
389
+ ems_var4.setUnits('mt')
390
+
391
+
392
+ ##### add emissions intensity
393
+ # add future hourly EMS output variable
394
+ ems_var5 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_hr_intensity')
395
+ ems_var5.setName('Future_Hourly_Emissions_Intensity_Var')
396
+ ems_var5.setEMSVariableName('fut_hr_intensity')
397
+ ems_var5.setTypeOfDataInVariable('Summed')
398
+ ems_var5.setUpdateFrequency('SystemTimestep')
399
+ ems_var5.setEMSProgramOrSubroutineName(ems_prgm)
400
+ ems_var5.setUnits('kg/ft2')
401
+
402
+ # add historical hourly EMS output variable
403
+ ems_var6 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_hr_intensity')
404
+ ems_var6.setName('Historical_Hourly_Emissions_Intensity_Var')
405
+ ems_var6.setEMSVariableName('his_hr_intensity')
406
+ ems_var6.setTypeOfDataInVariable('Summed')
407
+ ems_var6.setUpdateFrequency('SystemTimestep')
408
+ ems_var6.setEMSProgramOrSubroutineName(ems_prgm)
409
+ ems_var6.setUnits('kg/ft2')
410
+
411
+ # add future annual EMS output variable
412
+ ems_var7 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_yr_intensity')
413
+ ems_var7.setName('Future_Annual_Emissions_Intensity_Var')
414
+ ems_var7.setEMSVariableName('fut_yr_intensity')
415
+ ems_var7.setTypeOfDataInVariable('Summed')
416
+ ems_var7.setUpdateFrequency('SystemTimestep')
417
+ ems_var7.setEMSProgramOrSubroutineName(ems_prgm)
418
+ ems_var7.setUnits('kg/ft2')
419
+
420
+ # add historical annual EMS output variable
421
+ ems_var8 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_yr_intensity')
422
+ ems_var8.setName('Historical_Annual_Emissions_Intensity_Var')
423
+ ems_var8.setEMSVariableName('his_yr_intensity')
424
+ ems_var8.setTypeOfDataInVariable('Summed')
425
+ ems_var8.setUpdateFrequency('SystemTimestep')
426
+ ems_var8.setEMSProgramOrSubroutineName(ems_prgm)
427
+ ems_var8.setUnits('kg/ft2')
428
+
429
+ # add future hourly reporting output variable
430
+ out_var1 = OpenStudio::Model::OutputVariable.new('Future_Hourly_Emissions_Var', model)
431
+ out_var1.setKeyValue('EMS')
432
+ out_var1.setReportingFrequency('hourly')
433
+
434
+ # add historical hourly reporting output variable
435
+ out_var2 = OpenStudio::Model::OutputVariable.new('Historical_Hourly_Emissions_Var', model)
436
+ out_var2.setKeyValue('EMS')
437
+ out_var2.setReportingFrequency('hourly')
438
+
439
+ # add future annual reporting output variable
440
+ out_var3 = OpenStudio::Model::OutputVariable.new('Future_Annual_Emissions_Var', model)
441
+ out_var3.setKeyValue('EMS')
442
+ out_var3.setReportingFrequency('hourly')
443
+
444
+ # add historical annual reporting output variable
445
+ out_var4 = OpenStudio::Model::OutputVariable.new('Historical_Annual_Emissions_Var', model)
446
+ out_var4.setKeyValue('EMS')
447
+ out_var4.setReportingFrequency('hourly')
448
+
449
+ # add future hourly intensity reporting output variable
450
+ out_var5 = OpenStudio::Model::OutputVariable.new('Future_Hourly_Emissions_Intensity_Var', model)
451
+ out_var5.setKeyValue('EMS')
452
+ out_var5.setReportingFrequency('hourly')
453
+
454
+ # add historical hourly intensity reporting output variable
455
+ out_var6 = OpenStudio::Model::OutputVariable.new('Historical_Hourly_Emissions_Intensity_Var', model)
456
+ out_var6.setKeyValue('EMS')
457
+ out_var6.setReportingFrequency('hourly')
458
+
459
+ # add future annual intensity reporting output variable
460
+ out_var7 = OpenStudio::Model::OutputVariable.new('Future_Annual_Emissions_Intensity_Var', model)
461
+ out_var7.setKeyValue('EMS')
462
+ out_var7.setReportingFrequency('hourly')
463
+
464
+ # add historical annual intensity reporting output variable
465
+ out_var8 = OpenStudio::Model::OutputVariable.new('Historical_Annual_Emissions_Intensity_Var', model)
466
+ out_var8.setKeyValue('EMS')
467
+ out_var8.setReportingFrequency('hourly')
468
+
469
+
470
+ return true
471
+ end
472
+ end
473
+
474
+ # register the measure to be used by the application
475
+ AddEMSEmissionsReporting.new.registerWithApplication