openstudio-common-measures 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (387) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test_with_openstudio.yml +62 -0
  3. data/CHANGELOG.md +25 -0
  4. data/LICENSE.md +7 -21
  5. data/README.md +2 -1
  6. data/Rakefile +4 -27
  7. data/doc_templates/LICENSE.md +7 -21
  8. data/doc_templates/copyright_erb.txt +2 -32
  9. data/doc_templates/copyright_js.txt +2 -2
  10. data/doc_templates/copyright_ruby.txt +3 -33
  11. data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +7 -21
  12. data/lib/measures/AddCostPerAreaToConstruction/measure.rb +2 -32
  13. data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +7 -21
  14. data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +2 -32
  15. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +7 -21
  16. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +2 -32
  17. data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +7 -21
  18. data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +2 -32
  19. data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +7 -21
  20. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +2 -32
  21. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +7 -21
  22. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +2 -32
  23. data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +7 -21
  24. data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +2 -32
  25. data/lib/measures/AddExteriorLights/LICENSE.md +7 -21
  26. data/lib/measures/AddExteriorLights/measure.rb +2 -32
  27. data/lib/measures/AddMeter/LICENSE.md +7 -21
  28. data/lib/measures/AddMeter/measure.rb +2 -32
  29. data/lib/measures/AddOutputDiagnostics/LICENSE.md +7 -21
  30. data/lib/measures/AddOutputDiagnostics/measure.rb +2 -32
  31. data/lib/measures/AddOutputVariable/LICENSE.md +7 -21
  32. data/lib/measures/AddOutputVariable/measure.rb +2 -32
  33. data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +7 -21
  34. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +2 -32
  35. data/lib/measures/AddThermalComfortModelTypes/LICENSE.md +13 -0
  36. data/lib/measures/AddThermalComfortModelTypes/README.md +115 -0
  37. data/lib/measures/AddThermalComfortModelTypes/README.md.erb +45 -0
  38. data/lib/measures/AddThermalComfortModelTypes/measure.rb +165 -0
  39. data/lib/measures/AddThermalComfortModelTypes/measure.xml +244 -0
  40. data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +7 -21
  41. data/lib/measures/AdjustSystemEfficiencies/measure.rb +2 -32
  42. data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +7 -21
  43. data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +2 -32
  44. data/lib/measures/ChangeBuildingLocation/LICENSE.md +7 -21
  45. data/lib/measures/ChangeBuildingLocation/measure.rb +2 -32
  46. data/lib/measures/ChangeBuildingLocation/resources/epw.rb +2 -32
  47. data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +2 -32
  48. data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +7 -21
  49. data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +2 -32
  50. data/lib/measures/ExportScheduleCSV/LICENSE.md +7 -21
  51. data/lib/measures/ExportScheduleCSV/measure.rb +2 -32
  52. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +7 -21
  53. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +2 -32
  54. data/lib/measures/MeterFlodPlot/LICENSE.md +7 -21
  55. data/lib/measures/MeterFlodPlot/measure.rb +2 -32
  56. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +7 -21
  57. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +2 -32
  58. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +7 -21
  59. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +2 -32
  60. data/lib/measures/PredictedMeanVote/LICENSE.md +7 -21
  61. data/lib/measures/PredictedMeanVote/measure.rb +2 -32
  62. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +7 -21
  63. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +2 -32
  64. data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +7 -21
  65. data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +2 -32
  66. data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +7 -21
  67. data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +2 -32
  68. data/lib/measures/ReplaceModel/LICENSE.md +13 -0
  69. data/lib/measures/ReplaceModel/README.md +34 -0
  70. data/lib/measures/ReplaceModel/README.md.erb +42 -0
  71. data/lib/measures/ReplaceModel/measure.rb +113 -0
  72. data/lib/measures/ReplaceModel/measure.xml +71 -0
  73. data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +7 -21
  74. data/lib/measures/ReplaceThermostatSchedules/measure.rb +2 -32
  75. data/lib/measures/ReportModelChanges/LICENSE.md +7 -21
  76. data/lib/measures/ReportModelChanges/measure.rb +2 -32
  77. data/lib/measures/ReportModelChanges/measure.xml +2 -2
  78. data/lib/measures/RunPeriod/LICENSE.md +7 -21
  79. data/lib/measures/RunPeriod/measure.rb +2 -32
  80. data/lib/measures/RunPeriodMultiple/LICENSE.md +7 -21
  81. data/lib/measures/RunPeriodMultiple/measure.rb +2 -32
  82. data/lib/measures/ServerDirectoryCleanup/LICENSE.md +7 -21
  83. data/lib/measures/ServerDirectoryCleanup/measure.rb +2 -32
  84. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +7 -21
  85. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +2 -32
  86. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +7 -21
  87. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +2 -32
  88. data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +7 -21
  89. data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +2 -32
  90. data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +7 -21
  91. data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +2 -32
  92. data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +7 -21
  93. data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +2 -32
  94. data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +7 -21
  95. data/lib/measures/SetGasBurnerEfficiency/measure.rb +2 -32
  96. data/lib/measures/SetLifecycleCostParameters/LICENSE.md +7 -21
  97. data/lib/measures/SetLifecycleCostParameters/measure.rb +2 -32
  98. data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +7 -21
  99. data/lib/measures/SetLightingLoadsByLPD/measure.rb +2 -32
  100. data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +7 -21
  101. data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +2 -32
  102. data/lib/measures/SetThermostatSchedules/LICENSE.md +7 -21
  103. data/lib/measures/SetThermostatSchedules/measure.rb +2 -32
  104. data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +7 -21
  105. data/lib/measures/ShiftScheduleProfileTime/measure.rb +2 -32
  106. data/lib/measures/SwapLightsDefinition/LICENSE.md +7 -21
  107. data/lib/measures/SwapLightsDefinition/measure.rb +2 -32
  108. data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +7 -21
  109. data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +2 -32
  110. data/lib/measures/VentilationQAQC/LICENSE.md +7 -21
  111. data/lib/measures/VentilationQAQC/measure.rb +2 -32
  112. data/lib/measures/XcelEDAReportingandQAQC/LICENSE.md +13 -0
  113. data/lib/measures/XcelEDAReportingandQAQC/README.md +26 -0
  114. data/lib/measures/XcelEDAReportingandQAQC/README.md.erb +42 -0
  115. data/lib/measures/XcelEDAReportingandQAQC/measure.rb +201 -0
  116. data/lib/measures/XcelEDAReportingandQAQC/measure.xml +116 -0
  117. data/lib/measures/{generic_qaqc → XcelEDAReportingandQAQC}/resources/CreateResults.rb +51 -50
  118. data/lib/measures/XcelEDAReportingandQAQC/resources/EUI.rb +53 -0
  119. data/lib/measures/XcelEDAReportingandQAQC/resources/EndUseBreakdown.rb +88 -0
  120. data/lib/measures/XcelEDAReportingandQAQC/resources/FuelSwap.rb +275 -0
  121. data/lib/measures/XcelEDAReportingandQAQC/resources/PeakHeatCoolMonth.rb +191 -0
  122. data/lib/measures/XcelEDAReportingandQAQC/resources/UnmetHrs.rb +45 -0
  123. data/lib/measures/XcelEDATariffSelectionandModelSetup/LICENSE.md +13 -0
  124. data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md +40 -0
  125. data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md.erb +42 -0
  126. data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.rb +367 -0
  127. data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.xml +309 -0
  128. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Commercial.idf +95 -0
  129. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Interruptible Industrial G.idf +32 -0
  130. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Large CG.idf +32 -0
  131. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Commercial.idf +95 -0
  132. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Firm.idf +32 -0
  133. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Interruptible.idf +32 -0
  134. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Primary General.idf +95 -0
  135. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General Low Load Factor.idf +95 -0
  136. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General.idf +95 -0
  137. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Transmission General.idf +95 -0
  138. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Primary General.idf +95 -0
  139. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential Gas.idf +32 -0
  140. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential General.idf +95 -0
  141. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General Low Load Factor.idf +95 -0
  142. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General.idf +95 -0
  143. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary Photovoltaic Time-of-Use.idf +95 -0
  144. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Small CG.idf +32 -0
  145. data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Transmission General.idf +95 -0
  146. data/lib/measures/ZoneReport/LICENSE.md +7 -21
  147. data/lib/measures/ZoneReport/measure.rb +2 -32
  148. data/lib/measures/add_ems_emissions_reporting/LICENSE.md +7 -21
  149. data/lib/measures/add_ems_emissions_reporting/measure.rb +2 -32
  150. data/lib/measures/add_ems_to_control_ev_charging/LICENSE.md +7 -21
  151. data/lib/measures/add_ems_to_control_ev_charging/measure.rb +2 -32
  152. data/lib/measures/add_ev_load/LICENSE.md +7 -21
  153. data/lib/measures/add_ev_load/measure.rb +2 -32
  154. data/lib/measures/add_rooftop_pv/LICENSE.md +7 -21
  155. data/lib/measures/add_rooftop_pv/measure.rb +2 -32
  156. data/lib/measures/add_zone_mixing_object/LICENSE.md +7 -21
  157. data/lib/measures/add_zone_mixing_object/measure.rb +2 -32
  158. data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +7 -21
  159. data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +2 -32
  160. data/lib/measures/air_wall_zone_mixing/LICENSE.md +7 -21
  161. data/lib/measures/air_wall_zone_mixing/measure.rb +2 -32
  162. data/lib/measures/create_csv_output/LICENSE.md +13 -0
  163. data/lib/measures/create_csv_output/README.md +36 -0
  164. data/lib/measures/create_csv_output/README.md.erb +45 -0
  165. data/lib/measures/create_csv_output/docs/.gitkeep +0 -0
  166. data/lib/measures/create_csv_output/measure.rb +235 -0
  167. data/lib/measures/create_csv_output/measure.xml +124 -0
  168. data/lib/measures/create_csv_output/resources/report.html.in +13 -0
  169. data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +7 -21
  170. data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +2 -32
  171. data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +2 -32
  172. data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +6 -32
  173. data/lib/measures/example_report/LICENSE.md +7 -21
  174. data/lib/measures/example_report/measure.rb +2 -32
  175. data/lib/measures/example_report/resources/os_lib_reporting_example.rb +2 -32
  176. data/lib/measures/example_report/resources/report.html.erb +6 -32
  177. data/lib/measures/gem_env_report/LICENSE.md +7 -21
  178. data/lib/measures/gem_env_report/measure.rb +2 -32
  179. data/lib/measures/gem_env_report/resources/gem_env_info.rb +2 -32
  180. data/lib/measures/gem_env_report/resources/openstudio_info.rb +2 -32
  181. data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +2 -32
  182. data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +2 -32
  183. data/lib/measures/generic_qaqc/LICENSE.md +7 -21
  184. data/lib/measures/generic_qaqc/measure.rb +2 -32
  185. data/lib/measures/generic_qaqc/measure.xml +8 -14
  186. data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +2 -32
  187. data/lib/measures/generic_qaqc/resources/check_calibration.rb +2 -32
  188. data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +2 -32
  189. data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +2 -32
  190. data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +2 -32
  191. data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +2 -32
  192. data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +2 -32
  193. data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +2 -32
  194. data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +2 -32
  195. data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +2 -32
  196. data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +2 -32
  197. data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +2 -32
  198. data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +2 -32
  199. data/lib/measures/generic_qaqc/resources/check_part_loads.rb +2 -32
  200. data/lib/measures/generic_qaqc/resources/check_placeholder.rb +2 -32
  201. data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +2 -32
  202. data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +2 -32
  203. data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +2 -32
  204. data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +2 -32
  205. data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +2 -32
  206. data/lib/measures/generic_qaqc/resources/check_schedules.rb +2 -32
  207. data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +2 -32
  208. data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +2 -32
  209. data/lib/measures/generic_qaqc/resources/check_weather_files.rb +2 -32
  210. data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +2 -32
  211. data/lib/measures/generic_qaqc/resources/report.html.erb +6 -32
  212. data/lib/measures/get_site_from_building_component_library/LICENSE.md +7 -21
  213. data/lib/measures/get_site_from_building_component_library/measure.rb +2 -32
  214. data/lib/measures/hvac_psychrometric_chart/LICENSE.md +7 -21
  215. data/lib/measures/hvac_psychrometric_chart/measure.rb +2 -32
  216. data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +6 -32
  217. data/lib/measures/inject_idf_objects/LICENSE.md +7 -21
  218. data/lib/measures/inject_idf_objects/measure.rb +2 -32
  219. data/lib/measures/openstudio_results/LICENSE.md +7 -21
  220. data/lib/measures/openstudio_results/measure.rb +2 -32
  221. data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +2 -32
  222. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +2 -32
  223. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +2 -32
  224. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +2 -32
  225. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +2 -32
  226. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +2 -32
  227. data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +2 -32
  228. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +2 -32
  229. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +2 -32
  230. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +2 -32
  231. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +2 -32
  232. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +2 -32
  233. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +2 -32
  234. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +2 -32
  235. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +2 -32
  236. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +2 -32
  237. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +2 -32
  238. data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +2 -32
  239. data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +2 -32
  240. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +2 -32
  241. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +2 -32
  242. data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +2 -32
  243. data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +2 -32
  244. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +2 -32
  245. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +2 -32
  246. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +2 -32
  247. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +2 -32
  248. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +2 -32
  249. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +2 -32
  250. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +2 -32
  251. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +2 -32
  252. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +2 -32
  253. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +2 -32
  254. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +2 -32
  255. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
  256. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
  257. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +2 -32
  258. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +2 -32
  259. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +2 -32
  260. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +2 -32
  261. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +2 -32
  262. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +2 -32
  263. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +2 -32
  264. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +2 -32
  265. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +2 -32
  266. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +2 -32
  267. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +2 -32
  268. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +2 -32
  269. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +2 -32
  270. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +2 -32
  271. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +2 -32
  272. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -32
  273. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
  274. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
  275. data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +2 -32
  276. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +2 -32
  277. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +2 -32
  278. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +2 -32
  279. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +2 -32
  280. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +2 -32
  281. data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +2 -32
  282. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +2 -32
  283. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +2 -32
  284. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +2 -32
  285. data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +2 -32
  286. data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +2 -32
  287. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +2 -32
  288. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +2 -32
  289. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +2 -32
  290. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +2 -32
  291. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +2 -32
  292. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +2 -32
  293. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +2 -32
  294. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +2 -32
  295. data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +2 -32
  296. data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +2 -32
  297. data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +2 -32
  298. data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +2 -32
  299. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +2 -32
  300. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +2 -32
  301. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +2 -32
  302. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +2 -32
  303. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +2 -32
  304. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +2 -32
  305. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +2 -32
  306. data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +2 -32
  307. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +2 -32
  308. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +2 -32
  309. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +2 -32
  310. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +2 -32
  311. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +2 -32
  312. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +2 -32
  313. data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +2 -32
  314. data/lib/measures/openstudio_results/resources/Siz.Model.rb +2 -32
  315. data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +2 -32
  316. data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +2 -32
  317. data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +2 -32
  318. data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +2 -32
  319. data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +2 -32
  320. data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +2 -32
  321. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +2 -32
  322. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +2 -32
  323. data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +2 -32
  324. data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +2 -32
  325. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +2 -32
  326. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +2 -32
  327. data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +2 -32
  328. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +2 -32
  329. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +2 -32
  330. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +2 -32
  331. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +2 -32
  332. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +2 -32
  333. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +2 -32
  334. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +2 -32
  335. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +2 -32
  336. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +2 -32
  337. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +2 -32
  338. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +2 -32
  339. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +2 -32
  340. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +2 -32
  341. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +2 -32
  342. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +2 -32
  343. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +2 -32
  344. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +2 -32
  345. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +2 -32
  346. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +2 -32
  347. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +2 -32
  348. data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +2 -32
  349. data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +2 -32
  350. data/lib/measures/openstudio_results/resources/report.html.erb +6 -32
  351. data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +7 -21
  352. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +12 -50
  353. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +9 -9
  354. data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +7 -21
  355. data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +2 -32
  356. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +7 -21
  357. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +2 -32
  358. data/lib/measures/set_run_period/LICENSE.md +7 -21
  359. data/lib/measures/set_run_period/measure.rb +2 -32
  360. data/lib/measures/set_run_period/measure.xml +2 -2
  361. data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +7 -21
  362. data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +2 -32
  363. data/lib/measures/shadow_calculation/LICENSE.md +13 -0
  364. data/lib/measures/shadow_calculation/README.md +80 -0
  365. data/lib/measures/shadow_calculation/README.md.erb +42 -0
  366. data/lib/measures/shadow_calculation/measure.rb +188 -0
  367. data/lib/measures/shadow_calculation/measure.xml +180 -0
  368. data/lib/measures/tariff_selection_block/LICENSE.md +7 -21
  369. data/lib/measures/tariff_selection_block/measure.rb +2 -32
  370. data/lib/measures/tariff_selection_flat/LICENSE.md +7 -21
  371. data/lib/measures/tariff_selection_flat/measure.rb +2 -32
  372. data/lib/measures/tariff_selection_generic/LICENSE.md +7 -21
  373. data/lib/measures/tariff_selection_generic/measure.rb +2 -32
  374. data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +7 -21
  375. data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -32
  376. data/lib/measures/view_data/LICENSE.md +7 -21
  377. data/lib/measures/view_data/measure.rb +2 -32
  378. data/lib/measures/view_data/resources/va3c.rb +2 -32
  379. data/lib/measures/view_model/LICENSE.md +7 -21
  380. data/lib/measures/view_model/measure.rb +2 -32
  381. data/lib/measures/view_model/resources/va3c.rb +2 -32
  382. data/lib/openstudio/common_measures/extension.rb +2 -32
  383. data/lib/openstudio/common_measures/version.rb +3 -33
  384. data/lib/openstudio/common_measures.rb +2 -32
  385. data/lib/openstudio-common-measures.rb +2 -32
  386. data/openstudio-common-measures.gemspec +2 -2
  387. metadata +69 -8
@@ -0,0 +1,201 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://openstudio.net/license
4
+ # *******************************************************************************
5
+
6
+ # start the measure
7
+ class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
8
+
9
+ # require all .rb files in resources folder
10
+ Dir[File.dirname(__FILE__) + '/resources/*.rb'].each { |file| require file }
11
+ # incude module
12
+ include OsLib_CreateResults
13
+
14
+ # define the name that a user will see, this method may be deprecated as
15
+ # the display name in PAT comes from the name field in measure.xml
16
+ def name
17
+ return 'XcelEDAReportingandQAQC'
18
+ end
19
+
20
+ # define the arguments that the user will input
21
+ def arguments(model = nil)
22
+ args = OpenStudio::Measure::OSArgumentVector.new
23
+
24
+ return args
25
+ end
26
+
27
+ # return a vector of IdfObject's to request EnergyPlus objects needed by the run method
28
+ def energyPlusOutputRequests(runner, user_arguments)
29
+ super(runner, user_arguments)
30
+
31
+ result = OpenStudio::IdfObjectVector.new
32
+
33
+ # Request the day type to use in the peak demand window checks.
34
+ result << OpenStudio::IdfObject.load('Output:Variable,*,Site Day Type Index,timestep;').get
35
+
36
+ return result
37
+ end
38
+
39
+ # define what happens when the measure is run
40
+ def run(runner, user_arguments)
41
+ super(runner, user_arguments)
42
+
43
+ # make the runner a class variable
44
+ @runner = runner
45
+
46
+ # use the built-in error checking
47
+ if !runner.validateUserArguments(arguments, user_arguments)
48
+ return false
49
+ end
50
+
51
+ runner.registerInitialCondition('Starting QAQC report generation')
52
+
53
+ # get the last model and sql file
54
+ @model = runner.lastOpenStudioModel
55
+ if @model.is_initialized
56
+ @model = @model.get
57
+ else
58
+ runner.registerError('Cannot find last model.')
59
+ return false
60
+ end
61
+
62
+ @sql = runner.lastEnergyPlusSqlFile
63
+ if @sql.is_initialized
64
+ @sql = @sql.get
65
+ else
66
+ runner.registerError('Cannot find last sql file.')
67
+ return false
68
+ end
69
+
70
+ # define the time-of-use periods for electricity consumption
71
+ electricity_consumption_tou_periods = [
72
+ {
73
+ 'tou_name' => 'system_peak',
74
+ 'tou_id' => 1,
75
+ 'skip_weekends' => true,
76
+ 'skip_holidays' => true,
77
+ 'start_mo' => 'June',
78
+ 'start_day' => 1,
79
+ 'start_hr' => 14,
80
+ 'end_mo' => 'September',
81
+ 'end_day' => 30,
82
+ 'end_hr' => 18
83
+ },
84
+ {
85
+ 'tou_name' => 'peak',
86
+ 'tou_id' => 2,
87
+ 'skip_weekends' => true,
88
+ 'skip_holidays' => true,
89
+ 'start_mo' => 'January',
90
+ 'start_day' => 1,
91
+ 'start_hr' => 7,
92
+ 'end_mo' => 'December',
93
+ 'end_day' => 31,
94
+ 'end_hr' => 22
95
+ },
96
+ {
97
+ 'tou_name' => 'low_value_spring',
98
+ 'tou_id' => 4,
99
+ 'skip_weekends' => false,
100
+ 'skip_holidays' => false,
101
+ 'start_mo' => 'February',
102
+ 'start_day' => 1,
103
+ 'start_hr' => 0,
104
+ 'end_mo' => 'April',
105
+ 'end_day' => 30,
106
+ 'end_hr' => 6
107
+ },
108
+ {
109
+ 'tou_name' => 'low_value_fall',
110
+ 'tou_id' => 4,
111
+ 'skip_weekends' => false,
112
+ 'skip_holidays' => false,
113
+ 'start_mo' => 'November',
114
+ 'start_day' => 1,
115
+ 'start_hr' => 0,
116
+ 'end_mo' => 'November',
117
+ 'end_day' => 30,
118
+ 'end_hr' => 6
119
+ },
120
+ {
121
+ 'tou_name' => 'average',
122
+ 'tou_id' => 3,
123
+ 'skip_weekends' => false,
124
+ 'skip_holidays' => false,
125
+ 'start_mo' => 'January',
126
+ 'start_day' => 1,
127
+ 'start_hr' => 0,
128
+ 'end_mo' => 'December',
129
+ 'end_day' => 31,
130
+ 'end_hr' => 24
131
+ }
132
+ ]
133
+
134
+ # vector to store the results and checks
135
+ report_elems = OpenStudio::AttributeVector.new
136
+ report_elems << create_results(skip_weekends = true,
137
+ skip_holidays = true,
138
+ start_mo = 'June',
139
+ start_day = 1,
140
+ start_hr = 14,
141
+ end_mo = 'September',
142
+ end_day = 30,
143
+ end_hr = 18,
144
+ electricity_consumption_tou_periods)
145
+
146
+ # create an attribute vector to hold the checks
147
+ check_elems = OpenStudio::AttributeVector.new
148
+
149
+ # unmet hours check
150
+ check_elems << unmet_hrs_check
151
+
152
+ # energy use for cooling and heating as percentage of total energy check
153
+ check_elems << enduse_pcts_check
154
+
155
+ # peak heating and cooling months check
156
+ check_elems << peak_heat_cool_mo_check
157
+
158
+ # EUI check
159
+ check_elems << eui_check
160
+
161
+ # Register Values for all of the checks
162
+ check_elems.each do |check|
163
+ check_uid = OpenStudio.removeBraces(OpenStudio.createUUID)
164
+ # loop through attributes (name,category,description,then optionally one or more flag attributes)
165
+ check.valueAsAttributeVector.each_with_index do |value, index|
166
+ if index == 0 # name
167
+ runner.registerValue("qaqc_name_#{check_uid}", value.valueAsString)
168
+ elsif index == 1 # category
169
+ runner.registerValue("qaqc_cat_#{check_uid}", value.valueAsString)
170
+ elsif index == 2 # description
171
+ runner.registerValue("qaqc_desc_#{check_uid}", value.valueAsString)
172
+ else # flag
173
+ flag_uid = OpenStudio.removeBraces(OpenStudio.createUUID)
174
+ runner.registerValue("qaqc_flag_#{check_uid}_#{flag_uid}", value.valueAsString)
175
+ end
176
+ end
177
+ end
178
+
179
+ # end checks
180
+ report_elems << OpenStudio::Attribute.new('checks', check_elems)
181
+
182
+ # create an extra layer of report. the first level gets thrown away.
183
+ top_level_elems = OpenStudio::AttributeVector.new
184
+ top_level_elems << OpenStudio::Attribute.new('report', report_elems)
185
+
186
+ # create the report
187
+ result = OpenStudio::Attribute.new('summary_report', top_level_elems)
188
+ result.saveToXml(OpenStudio::Path.new('report.xml'))
189
+
190
+ # closing the sql file
191
+ @sql.close
192
+
193
+ # reporting final condition
194
+ runner.registerFinalCondition('Finished generating report.xml.')
195
+
196
+ return true
197
+ end
198
+ end
199
+
200
+ # this allows the measure to be use by the application
201
+ XcelEDAReportingandQAQC.new.registerWithApplication
@@ -0,0 +1,116 @@
1
+ <?xml version="1.0"?>
2
+ <measure>
3
+ <schema_version>3.0</schema_version>
4
+ <name>xcel_eda_reportingand_qaqc</name>
5
+ <uid>92bee759-86ae-4617-92e2-f8e5aa9dc684</uid>
6
+ <version_id>1fbb6bad-30d2-4d7b-8202-9bffacab9a27</version_id>
7
+ <version_modified>20230606T063314Z</version_modified>
8
+ <xml_checksum>2C8A3EEF</xml_checksum>
9
+ <class_name>XcelEDAReportingandQAQC</class_name>
10
+ <display_name>XcelEDAReportingandQAQC</display_name>
11
+ <description>This measure extracts key simulation results and performs basic model QAQC checks necessary for the Xcel EDA Program.</description>
12
+ <modeler_description>Reads the model and sql file to pull out the necessary information and run the model checks. The check results show up as Warning messages in the measure's output on the PAT run tab.</modeler_description>
13
+ <arguments />
14
+ <outputs />
15
+ <provenances />
16
+ <tags>
17
+ <tag>Reporting.QAQC</tag>
18
+ </tags>
19
+ <attributes>
20
+ <attribute>
21
+ <name>Measure Type</name>
22
+ <value>ReportingMeasure</value>
23
+ <datatype>string</datatype>
24
+ </attribute>
25
+ <attribute>
26
+ <name>Uses SketchUp API</name>
27
+ <value>false</value>
28
+ <datatype>boolean</datatype>
29
+ </attribute>
30
+ </attributes>
31
+ <files>
32
+ <file>
33
+ <filename>0116_OfficeTest121_dev.osm</filename>
34
+ <filetype>osm</filetype>
35
+ <usage_type>test</usage_type>
36
+ <checksum>63E36762</checksum>
37
+ </file>
38
+ <file>
39
+ <filename>USA_CO_Golden-NREL.724666_TMY3.epw</filename>
40
+ <filetype>epw</filetype>
41
+ <usage_type>test</usage_type>
42
+ <checksum>BDF687C1</checksum>
43
+ </file>
44
+ <file>
45
+ <filename>FuelSwap.rb</filename>
46
+ <filetype>rb</filetype>
47
+ <usage_type>resource</usage_type>
48
+ <checksum>0331B57B</checksum>
49
+ </file>
50
+ <file>
51
+ <filename>LICENSE.md</filename>
52
+ <filetype>md</filetype>
53
+ <usage_type>license</usage_type>
54
+ <checksum>9640B6CB</checksum>
55
+ </file>
56
+ <file>
57
+ <filename>README.md.erb</filename>
58
+ <filetype>erb</filetype>
59
+ <usage_type>readmeerb</usage_type>
60
+ <checksum>703C9964</checksum>
61
+ </file>
62
+ <file>
63
+ <filename>README.md</filename>
64
+ <filetype>md</filetype>
65
+ <usage_type>readme</usage_type>
66
+ <checksum>2313289F</checksum>
67
+ </file>
68
+ <file>
69
+ <filename>UnmetHrs.rb</filename>
70
+ <filetype>rb</filetype>
71
+ <usage_type>resource</usage_type>
72
+ <checksum>A57CD713</checksum>
73
+ </file>
74
+ <file>
75
+ <filename>EUI.rb</filename>
76
+ <filetype>rb</filetype>
77
+ <usage_type>resource</usage_type>
78
+ <checksum>5048D687</checksum>
79
+ </file>
80
+ <file>
81
+ <filename>XcelEDAReportingandQAQC_Test.rb</filename>
82
+ <filetype>rb</filetype>
83
+ <usage_type>test</usage_type>
84
+ <checksum>92CFA4EC</checksum>
85
+ </file>
86
+ <file>
87
+ <version>
88
+ <software_program>OpenStudio</software_program>
89
+ <identifier>2.0.0</identifier>
90
+ <min_compatible>3.6.0</min_compatible>
91
+ </version>
92
+ <filename>measure.rb</filename>
93
+ <filetype>rb</filetype>
94
+ <usage_type>script</usage_type>
95
+ <checksum>1A411884</checksum>
96
+ </file>
97
+ <file>
98
+ <filename>PeakHeatCoolMonth.rb</filename>
99
+ <filetype>rb</filetype>
100
+ <usage_type>resource</usage_type>
101
+ <checksum>BF7DA333</checksum>
102
+ </file>
103
+ <file>
104
+ <filename>EndUseBreakdown.rb</filename>
105
+ <filetype>rb</filetype>
106
+ <usage_type>resource</usage_type>
107
+ <checksum>40551D0D</checksum>
108
+ </file>
109
+ <file>
110
+ <filename>CreateResults.rb</filename>
111
+ <filetype>rb</filetype>
112
+ <usage_type>resource</usage_type>
113
+ <checksum>C1E641AA</checksum>
114
+ </file>
115
+ </files>
116
+ </measure>
@@ -1,36 +1,6 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2022, 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.
2
+ # OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://openstudio.net/license
34
4
  # *******************************************************************************
35
5
 
36
6
  module OsLib_CreateResults
@@ -171,9 +141,9 @@ module OsLib_CreateResults
171
141
 
172
142
  yr = nil
173
143
  if os_version > OpenStudio::VersionString.new('1.5.3')
174
- yr = "January #{new_yr.round}"
144
+ yr = "January #{new_yr.round}"
175
145
  else
176
- yr = "January #{new_yr.round}"
146
+ yr = "January #{new_yr.round}"
177
147
  end
178
148
 
179
149
  ann_cap_cash = 0.0
@@ -288,7 +258,14 @@ module OsLib_CreateResults
288
258
  fuel_type_map = {
289
259
  OpenStudio::EndUseFuelType.new('Electricity').value => OpenStudio::FuelType.new('Electricity'),
290
260
  OpenStudio::EndUseFuelType.new('Gas').value => OpenStudio::FuelType.new('Gas'),
291
- OpenStudio::EndUseFuelType.new('AdditionalFuel').value => OpenStudio::FuelType.new('Diesel'), # TODO: add other fuel types
261
+ OpenStudio::EndUseFuelType.new('Gasoline').value => OpenStudio::FuelType.new('Gasoline'),
262
+ OpenStudio::EndUseFuelType.new('Diesel').value => OpenStudio::FuelType.new('Diesel'),
263
+ OpenStudio::EndUseFuelType.new('Coal').value => OpenStudio::FuelType.new('Coal'),
264
+ OpenStudio::EndUseFuelType.new('FuelOil_1').value => OpenStudio::FuelType.new('FuelOil_1'),
265
+ OpenStudio::EndUseFuelType.new('FuelOil_2').value => OpenStudio::FuelType.new('FuelOil_2'),
266
+ OpenStudio::EndUseFuelType.new('Propane').value => OpenStudio::FuelType.new('Propane'),
267
+ OpenStudio::EndUseFuelType.new('OtherFuel_1').value => OpenStudio::FuelType.new('OtherFuel_1'),
268
+ OpenStudio::EndUseFuelType.new('OtherFuel_2').value => OpenStudio::FuelType.new('OtherFuel_2'),
292
269
  OpenStudio::EndUseFuelType.new('DistrictCooling').value => OpenStudio::FuelType.new('DistrictCooling'),
293
270
  OpenStudio::EndUseFuelType.new('DistrictHeating').value => OpenStudio::FuelType.new('DistrictHeating'),
294
271
  OpenStudio::EndUseFuelType.new('Water').value => OpenStudio::FuelType.new('Water')
@@ -298,7 +275,14 @@ module OsLib_CreateResults
298
275
  fuel_type_alias_map = {
299
276
  OpenStudio::EndUseFuelType.new('Electricity').value => 'electricity',
300
277
  OpenStudio::EndUseFuelType.new('Gas').value => 'gas',
301
- OpenStudio::EndUseFuelType.new('AdditionalFuel').value => 'other_energy',
278
+ OpenStudio::EndUseFuelType.new('Gasoline').value => 'gas',
279
+ OpenStudio::EndUseFuelType.new('Diesel').value => 'diesel',
280
+ OpenStudio::EndUseFuelType.new('Coal').value => 'coal',
281
+ OpenStudio::EndUseFuelType.new('FuelOil_1').value => 'fuel_oil_1',
282
+ OpenStudio::EndUseFuelType.new('FuelOil_2').value => 'fuel_oil_2',
283
+ OpenStudio::EndUseFuelType.new('Propane').value => 'propane',
284
+ OpenStudio::EndUseFuelType.new('OtherFuel_1').value => 'other_energy',
285
+ OpenStudio::EndUseFuelType.new('OtherFuel_2').value => 'other_fuel_2',
302
286
  OpenStudio::EndUseFuelType.new('DistrictCooling').value => 'district_cooling',
303
287
  OpenStudio::EndUseFuelType.new('DistrictHeating').value => 'district_heating',
304
288
  OpenStudio::EndUseFuelType.new('Water').value => 'water'
@@ -331,14 +315,26 @@ module OsLib_CreateResults
331
315
  end
332
316
 
333
317
  # other_energy
334
- other_energy = @sql.otherFuelTotalEndUses
335
- if other_energy.is_initialized
336
- cons_elems << OpenStudio::Attribute.new('other_energy', other_energy.get, 'GJ')
337
- @runner.registerValue('annual_consumption_other_energy', other_energy.get, 'GJ')
338
- else
339
- cons_elems << OpenStudio::Attribute.new('other_energy', 0.0, 'GJ')
340
- @runner.registerValue('annual_consumption_other_energy', 0.0, 'GJ')
318
+ other_fuels = ['gasoline', 'diesel', 'coal', 'fuelOilNo1', 'fuelOilNo2', 'propane', 'otherFuel1', 'otherFuel2']
319
+ other_energy_total = 0.0
320
+ other_fuels.each do |fuel|
321
+ other_energy = @sql.instance_eval(fuel + 'TotalEndUses')
322
+ if other_energy.is_initialized
323
+ # sum up all of the "other" fuels
324
+ other_energy_total += other_energy.get
325
+ end
341
326
  end
327
+ cons_elems << OpenStudio::Attribute.new('other_energy', other_energy_total, 'GJ')
328
+ @runner.registerValue('annual_consumption_other_energy', other_energy_total, 'GJ')
329
+
330
+ # other_energy = @sql.otherFuelTotalEndUses
331
+ # if other_energy.is_initialized
332
+ # cons_elems << OpenStudio::Attribute.new('other_energy', other_energy.get, 'GJ')
333
+ # @runner.registerValue('annual_consumption_other_energy', other_energy.get, 'GJ')
334
+ # else
335
+ # cons_elems << OpenStudio::Attribute.new('other_energy', 0.0, 'GJ')
336
+ # @runner.registerValue('annual_consumption_other_energy', 0.0, 'GJ')
337
+ # end
342
338
 
343
339
  # district_cooling
344
340
  district_cooling = @sql.districtCoolingTotalEndUses
@@ -752,7 +748,7 @@ module OsLib_CreateResults
752
748
  end
753
749
  else
754
750
  # If TOU periods were specified but this model has no district cooling, report zeroes
755
- if !electricity_consumption_tou_periods.empty?
751
+ if electricity_consumption_tou_periods.size > 0
756
752
  # Get the TOU ids
757
753
  tou_ids = []
758
754
  electricity_consumption_tou_periods.each do |tou_pd|
@@ -882,9 +878,9 @@ module OsLib_CreateResults
882
878
  end
883
879
  if total.is_initialized
884
880
  other_val = total.get - prev_tot
885
- annual_utility_cost_map[OpenStudio::EndUseFuelType.new('AdditionalFuel').valueName] = other_val
881
+ annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = other_val
886
882
  else
887
- annual_utility_cost_map[OpenStudio::EndUseFuelType.new('AdditionalFuel').valueName] = 0.0
883
+ annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = 0.0
888
884
  end
889
885
 
890
886
  # export remaining costs in the correct order
@@ -892,8 +888,8 @@ module OsLib_CreateResults
892
888
  utility_cost_elems << OpenStudio::Attribute.new('gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
893
889
  @runner.registerValue('annual_utility_cost_gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
894
890
  # other_energy
895
- utility_cost_elems << OpenStudio::Attribute.new('other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('AdditionalFuel').valueName], 'dollars')
896
- @runner.registerValue('annual_utility_cost_other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('AdditionalFuel').valueName], 'dollars')
891
+ utility_cost_elems << OpenStudio::Attribute.new('other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
892
+ @runner.registerValue('annual_utility_cost_other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
897
893
  # district_cooling
898
894
  utility_cost_elems << OpenStudio::Attribute.new('district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
899
895
  @runner.registerValue('annual_utility_cost_district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
@@ -928,7 +924,12 @@ module OsLib_CreateResults
928
924
  # loop through all the fuel types
929
925
  end_use_fuel_types.each do |end_use_fuel_type|
930
926
  # get the annual total cost for this fuel type
931
- ann_cost = annual_utility_cost_map[end_use_fuel_type.valueName]
927
+ # Only Electricity, Gas, DistrictCooling,DistrictHeating, Water and OtherFuel_1 are defined in map so check value first
928
+ if annual_utility_cost_map.key?(end_use_fuel_type.valueName)
929
+ ann_cost = annual_utility_cost_map[end_use_fuel_type.valueName]
930
+ else
931
+ ann_cost = 0.0
932
+ end
932
933
  # get the total annual usage for this fuel type in all end use categories
933
934
  # loop through all end uses, adding the annual usage value to the aggregator
934
935
  ann_usg = 0.0
@@ -980,7 +981,7 @@ module OsLib_CreateResults
980
981
  fuel_type_elems = OpenStudio::AttributeVector.new
981
982
  fuel_type_name = fuel_type_alias_map[end_use_fuel_type.value]
982
983
  ann_energy_cons = 0.0
983
- # in each end use, loop through months and get monthly enedy consumption
984
+ # in each end use, loop through months and get monthly energy consumption
984
985
  months.each_with_index do |month, i|
985
986
  mon_energy_cons = 0.0
986
987
  val = @sql.energyConsumptionByMonth(end_use_fuel_type, end_use_cat, month)
@@ -0,0 +1,53 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://openstudio.net/license
4
+ # *******************************************************************************
5
+
6
+ class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
7
+ # can we use E+'s metric directly? E+ will only use conditioned area
8
+ # we need to incorporate building type into the range checking - ASHRAE Standard 100
9
+ # how many hours did the @model run for? - make sure 8760 - get from html file
10
+
11
+ # checks the EUI for the whole building
12
+ def eui_check
13
+ # summary of the check
14
+ check_elems = OpenStudio::AttributeVector.new
15
+ check_elems << OpenStudio::Attribute.new('name', 'EUI Check')
16
+ check_elems << OpenStudio::Attribute.new('category', 'General')
17
+ check_elems << OpenStudio::Attribute.new('description', 'Check that the EUI of the building is reasonable')
18
+
19
+ building = @model.getBuilding
20
+
21
+ # make sure all required data are available
22
+ if @sql.totalSiteEnergy.empty?
23
+ check_elems << OpenStudio::Attribute.new('flag', 'Site energy data unavailable; check not run')
24
+ @runner.registerWarning('Site energy data unavailable; check not run')
25
+ end
26
+
27
+ total_site_energy_kBtu = OpenStudio.convert(@sql.totalSiteEnergy.get, 'GJ', 'kBtu').get
28
+ if total_site_energy_kBtu == 0
29
+ check_elems << OpenStudio::Attribute.new('flag', 'Model site energy use = 0; likely a problem with the model')
30
+ @runner.registerWarning('Model site energy use = 0; likely a problem with the model')
31
+ end
32
+
33
+ floor_area_ft2 = OpenStudio.convert(building.floorArea, 'm^2', 'ft^2').get
34
+ if floor_area_ft2 == 0
35
+ check_elems << OpenStudio::Attribute.new('flag', 'The building has 0 floor area')
36
+ @runner.registerWarning('The building has 0 floor area')
37
+ end
38
+
39
+ site_EUI = total_site_energy_kBtu / floor_area_ft2
40
+ if site_EUI > 200
41
+ check_elems << OpenStudio::Attribute.new('flag', "Site EUI of #{site_EUI} looks high. A hospital or lab (high energy buildings) are around 200 kBtu/ft^2")
42
+ @runner.registerWarning("Site EUI of #{site_EUI} looks high. A hospital or lab (high energy buildings) are around 200 kBtu/ft^2")
43
+ end
44
+ if site_EUI < 30
45
+ check_elems << OpenStudio::Attribute.new('flag', "Site EUI of #{site_EUI} looks low. A high efficiency office building is around 50 kBtu/ft^2")
46
+ @runner.registerWarning("Site EUI of #{site_EUI} looks low. A high efficiency office building is around 50 kBtu/ft^2")
47
+ end
48
+
49
+ check_elem = OpenStudio::Attribute.new('check', check_elems)
50
+
51
+ return check_elem
52
+ end
53
+ end
@@ -0,0 +1,88 @@
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
3
+ # See also https://openstudio.net/license
4
+ # *******************************************************************************
5
+
6
+ class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
7
+ # add electric heat rejection to electric cooling
8
+ # add fans and lights? compare fans and cooling - greater than 5x different during peak cooling month - helps identify bad chiller curves
9
+
10
+ # energy use for cooling and heating as percentage of total energy
11
+ def enduse_pcts_check
12
+ # summary of the check
13
+ check_elems = OpenStudio::AttributeVector.new
14
+ check_elems << OpenStudio::Attribute.new('name', 'Energy Enduses Check')
15
+ check_elems << OpenStudio::Attribute.new('category', 'Xcel EDA')
16
+ check_elems << OpenStudio::Attribute.new('description', 'Check that heating and cooling energy make up the expected percentage of total energy consumption')
17
+
18
+ # aggregators to hold the values
19
+ electricity_cooling = 0
20
+ natural_gas_cooling = 0
21
+ other_fuel_cooling = 0
22
+ total_site_energy = 0
23
+ electricity_heating = 0
24
+ natural_gas_heating = 0
25
+ other_fuel_heating = 0
26
+
27
+ # make sure all required data are available
28
+ if @sql.electricityCooling.is_initialized
29
+ electricity_cooling = @sql.electricityCooling.get
30
+ end
31
+ if @sql.naturalGasCooling.is_initialized
32
+ natural_gas_cooling = @sql.naturalGasCooling.get
33
+ end
34
+ if @sql.totalSiteEnergy.is_initialized
35
+ total_site_energy = @sql.totalSiteEnergy.get
36
+ end
37
+ if @sql.electricityHeating.is_initialized
38
+ electricity_heating = @sql.electricityHeating.get
39
+ end
40
+ if @sql.naturalGasHeating.is_initialized
41
+ natural_gas_heating = @sql.naturalGasHeating.get
42
+ end
43
+
44
+ other_fuels = ['gasoline', 'diesel', 'coal', 'fuelOilNo1', 'fuelOilNo2', 'propane', 'otherFuel1', 'otherFuel2']
45
+ other_fuel_cooling = 0.0
46
+ other_fuels.each do |fuel|
47
+ other_energy = @sql.instance_eval(fuel + 'Cooling')
48
+ if other_energy.is_initialized
49
+ # sum up all of the "other" fuels
50
+ other_fuel_cooling += other_energy.get
51
+ end
52
+ end
53
+ other_fuel_heating = 0.0
54
+ other_fuels.each do |fuel|
55
+ other_energy = @sql.instance_eval(fuel + 'Heating')
56
+ if other_energy.is_initialized
57
+ # sum up all of the "other" fuels
58
+ other_fuel_heating += other_energy.get
59
+ end
60
+ end
61
+
62
+ # if @sql.otherFuelCooling.is_initialized
63
+ # other_fuel_cooling = @sql.otherFuelCooling.get
64
+ # end
65
+ # if @sql.otherFuelHeating.is_initialized
66
+ # other_fuel_heating = @sql.otherFuelHeating.get
67
+ # end
68
+
69
+ pct_cooling = (electricity_cooling + natural_gas_cooling + other_fuel_cooling) / total_site_energy
70
+ pct_heating = (electricity_heating + natural_gas_heating + other_fuel_heating) / total_site_energy
71
+
72
+ # flag if 0% < pct_cooling < 20%
73
+ if (pct_cooling < 0.0) || (pct_cooling > 0.2)
74
+ check_elems << OpenStudio::Attribute.new('flag', "Cooling energy = #{pct_cooling} of total energy use; outside of 0%-20% range expected by Xcel EDA")
75
+ @runner.registerWarning("Cooling energy = #{pct_cooling} of total energy use; outside of 0%-20% range expected by Xcel EDA")
76
+ end
77
+
78
+ # flag if 30% < pct_heating < 50%
79
+ if (pct_heating < 0.30) || (pct_heating > 0.50)
80
+ check_elems << OpenStudio::Attribute.new('flag', "Heating energy = #{pct_heating} of total energy use; outside the 30%-50% range expected by Xcel EDA")
81
+ @runner.registerWarning("Heating energy = #{pct_heating} of total energy use; outside the 30%-50% range expected by Xcel EDA")
82
+ end
83
+
84
+ check_elem = OpenStudio::Attribute.new('check', check_elems)
85
+
86
+ return check_elem
87
+ end
88
+ end