openstudio-common-measures 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (524) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +82 -0
  4. data/Jenkinsfile +2 -1
  5. data/LICENSE.md +1 -1
  6. data/Rakefile +17 -0
  7. data/doc_templates/LICENSE.md +1 -1
  8. data/doc_templates/copyright_erb.txt +1 -1
  9. data/doc_templates/copyright_js.txt +1 -1
  10. data/doc_templates/copyright_ruby.txt +1 -1
  11. data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +1 -1
  12. data/lib/measures/AddCostPerAreaToConstruction/measure.rb +1 -1
  13. data/lib/measures/AddCostPerAreaToConstruction/measure.xml +8 -7
  14. data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +1 -1
  15. data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +1 -1
  16. data/lib/measures/AddCostPerFloorAreaToBuilding/measure.xml +8 -7
  17. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +1 -1
  18. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +1 -1
  19. data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.xml +8 -7
  20. data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +1 -1
  21. data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +1 -1
  22. data/lib/measures/AddCostPerFloorAreaToLights/measure.xml +8 -7
  23. data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +1 -1
  24. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +1 -1
  25. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.xml +8 -7
  26. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +1 -1
  27. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +1 -1
  28. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.xml +9 -8
  29. data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +1 -1
  30. data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +1 -1
  31. data/lib/measures/AddCostperAreatoUnusedConstruction/measure.xml +8 -7
  32. data/lib/measures/AddExteriorLights/LICENSE.md +1 -1
  33. data/lib/measures/AddExteriorLights/measure.rb +1 -1
  34. data/lib/measures/AddExteriorLights/measure.xml +8 -7
  35. data/lib/measures/AddMeter/LICENSE.md +1 -1
  36. data/lib/measures/AddMeter/measure.rb +1 -1
  37. data/lib/measures/AddMeter/measure.xml +8 -7
  38. data/lib/measures/AddOutputDiagnostics/LICENSE.md +1 -1
  39. data/lib/measures/AddOutputDiagnostics/measure.rb +1 -1
  40. data/lib/measures/AddOutputDiagnostics/measure.xml +8 -7
  41. data/lib/measures/AddOutputVariable/LICENSE.md +1 -1
  42. data/lib/measures/AddOutputVariable/measure.rb +1 -1
  43. data/lib/measures/AddOutputVariable/measure.xml +8 -7
  44. data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +1 -1
  45. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +1 -1
  46. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.xml +8 -7
  47. data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +1 -1
  48. data/lib/measures/AdjustSystemEfficiencies/measure.rb +1 -1
  49. data/lib/measures/AdjustSystemEfficiencies/measure.xml +7 -6
  50. data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +1 -1
  51. data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +1 -1
  52. data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.xml +8 -7
  53. data/lib/measures/ChangeBuildingLocation/LICENSE.md +1 -1
  54. data/lib/measures/ChangeBuildingLocation/measure.rb +3 -3
  55. data/lib/measures/ChangeBuildingLocation/measure.xml +15 -15
  56. data/lib/measures/ChangeBuildingLocation/resources/epw.rb +1 -1
  57. data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +1 -1
  58. data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +1 -1
  59. data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +1 -1
  60. data/lib/measures/EnableIdealAirLoadsForAllZones/measure.xml +9 -8
  61. data/lib/measures/ExportScheduleCSV/LICENSE.md +1 -1
  62. data/lib/measures/ExportScheduleCSV/measure.rb +2 -2
  63. data/lib/measures/ExportScheduleCSV/measure.xml +13 -12
  64. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +1 -1
  65. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +1 -1
  66. data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.xml +9 -8
  67. data/lib/measures/MeterFlodPlot/LICENSE.md +1 -1
  68. data/lib/measures/MeterFlodPlot/measure.rb +2 -2
  69. data/lib/measures/MeterFlodPlot/measure.xml +13 -12
  70. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +1 -1
  71. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +1 -1
  72. data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.xml +8 -7
  73. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +1 -1
  74. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +1 -1
  75. data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.xml +8 -7
  76. data/lib/measures/PredictedMeanVote/LICENSE.md +1 -1
  77. data/lib/measures/PredictedMeanVote/measure.rb +1 -1
  78. data/lib/measures/PredictedMeanVote/measure.xml +14 -13
  79. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +1 -1
  80. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +1 -1
  81. data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.xml +9 -8
  82. data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +1 -1
  83. data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +1 -1
  84. data/lib/measures/RemoveUnusedDefaultProfiles/measure.xml +9 -8
  85. data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +1 -1
  86. data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +1 -1
  87. data/lib/measures/ReplaceExteriorWindowConstruction/measure.xml +11 -10
  88. data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +1 -1
  89. data/lib/measures/ReplaceThermostatSchedules/measure.rb +1 -1
  90. data/lib/measures/ReplaceThermostatSchedules/measure.xml +12 -11
  91. data/lib/measures/ReportModelChanges/LICENSE.md +1 -1
  92. data/lib/measures/ReportModelChanges/measure.rb +1 -1
  93. data/lib/measures/ReportModelChanges/measure.xml +5 -5
  94. data/lib/measures/RunPeriod/LICENSE.md +1 -1
  95. data/lib/measures/RunPeriod/measure.rb +1 -1
  96. data/lib/measures/RunPeriod/measure.xml +19 -18
  97. data/lib/measures/RunPeriodMultiple/LICENSE.md +1 -1
  98. data/lib/measures/RunPeriodMultiple/measure.rb +1 -1
  99. data/lib/measures/RunPeriodMultiple/measure.xml +12 -11
  100. data/lib/measures/ServerDirectoryCleanup/LICENSE.md +1 -1
  101. data/lib/measures/ServerDirectoryCleanup/README.md +97 -3
  102. data/lib/measures/ServerDirectoryCleanup/measure.rb +2 -2
  103. data/lib/measures/ServerDirectoryCleanup/measure.xml +20 -69
  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 +10 -9
  140. data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +1 -1
  141. data/lib/measures/UnmetLoadHoursTroubleshooting/README.md +9 -3
  142. data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +2 -2
  143. data/lib/measures/UnmetLoadHoursTroubleshooting/measure.xml +72 -23
  144. data/lib/measures/VentilationQAQC/LICENSE.md +1 -1
  145. data/lib/measures/VentilationQAQC/README.md +9 -3
  146. data/lib/measures/VentilationQAQC/measure.rb +53 -46
  147. data/lib/measures/VentilationQAQC/measure.xml +24 -29
  148. data/lib/measures/ZoneReport/LICENSE.md +1 -1
  149. data/lib/measures/ZoneReport/README.md +2 -2
  150. data/lib/measures/ZoneReport/measure.rb +2 -2
  151. data/lib/measures/ZoneReport/measure.xml +16 -17
  152. data/lib/measures/add_ems_to_control_ev_charging/LICENSE.MD.txt +15 -0
  153. data/lib/measures/{AddDaylightSensors → add_ems_to_control_ev_charging}/LICENSE.md +1 -1
  154. data/lib/measures/add_ems_to_control_ev_charging/README.md +29 -0
  155. data/lib/measures/add_ems_to_control_ev_charging/measure.rb +289 -0
  156. data/lib/measures/add_ems_to_control_ev_charging/measure.xml +91 -0
  157. data/lib/measures/add_ev_load/LICENSE.MD.txt +15 -0
  158. data/lib/measures/{EnableEconomizerControl → add_ev_load}/LICENSE.md +1 -1
  159. data/lib/measures/add_ev_load/README.md +34 -0
  160. data/lib/measures/add_ev_load/measure.rb +331 -0
  161. data/lib/measures/add_ev_load/measure.xml +348 -0
  162. data/lib/measures/add_ev_load/resources/PSN_BuildingKey.csv +104 -0
  163. data/lib/measures/add_ev_load/resources/PSN_BuildingKey_v2.csv +104 -0
  164. data/lib/measures/add_ev_load/resources/chg1_dow1_flex1.csv +96 -0
  165. data/lib/measures/add_ev_load/resources/chg1_dow1_flex2.csv +96 -0
  166. data/lib/measures/add_ev_load/resources/chg1_dow1_flex3.csv +96 -0
  167. data/lib/measures/add_ev_load/resources/chg1_dow2_flex1.csv +96 -0
  168. data/lib/measures/add_ev_load/resources/chg1_dow2_flex2.csv +96 -0
  169. data/lib/measures/add_ev_load/resources/chg1_dow2_flex3.csv +96 -0
  170. data/lib/measures/add_ev_load/resources/chg1_dow3_flex1.csv +96 -0
  171. data/lib/measures/add_ev_load/resources/chg1_dow3_flex2.csv +96 -0
  172. data/lib/measures/add_ev_load/resources/chg1_dow3_flex3.csv +96 -0
  173. data/lib/measures/add_ev_load/resources/chg2_dow1_flex1.csv +96 -0
  174. data/lib/measures/add_ev_load/resources/chg2_dow1_flex2.csv +96 -0
  175. data/lib/measures/add_ev_load/resources/chg2_dow1_flex3.csv +96 -0
  176. data/lib/measures/add_ev_load/resources/chg2_dow2_flex1.csv +96 -0
  177. data/lib/measures/add_ev_load/resources/chg2_dow2_flex2.csv +96 -0
  178. data/lib/measures/add_ev_load/resources/chg2_dow2_flex3.csv +96 -0
  179. data/lib/measures/add_ev_load/resources/chg2_dow3_flex1.csv +96 -0
  180. data/lib/measures/add_ev_load/resources/chg2_dow3_flex2.csv +96 -0
  181. data/lib/measures/add_ev_load/resources/chg2_dow3_flex3.csv +96 -0
  182. data/lib/measures/add_ev_load/resources/chg3_dow1_flex1.csv +96 -0
  183. data/lib/measures/add_ev_load/resources/chg3_dow1_flex2.csv +96 -0
  184. data/lib/measures/add_ev_load/resources/chg3_dow1_flex3.csv +96 -0
  185. data/lib/measures/add_ev_load/resources/chg3_dow2_flex1.csv +96 -0
  186. data/lib/measures/add_ev_load/resources/chg3_dow2_flex2.csv +96 -0
  187. data/lib/measures/add_ev_load/resources/chg3_dow2_flex3.csv +96 -0
  188. data/lib/measures/add_ev_load/resources/chg3_dow3_flex1.csv +96 -0
  189. data/lib/measures/add_ev_load/resources/chg3_dow3_flex2.csv +96 -0
  190. data/lib/measures/add_ev_load/resources/chg3_dow3_flex3.csv +96 -0
  191. data/lib/measures/add_ev_load/resources/fast_charge_15min_Saturday.csv +96 -0
  192. data/lib/measures/add_ev_load/resources/fast_charge_15min_Sunday.csv +96 -0
  193. data/lib/measures/add_ev_load/resources/fast_charge_15min_Weekday.csv +96 -0
  194. data/lib/measures/add_rooftop_pv/LICENSE.md +1 -1
  195. data/lib/measures/add_rooftop_pv/measure.rb +1 -1
  196. data/lib/measures/add_rooftop_pv/measure.xml +5 -5
  197. data/lib/measures/add_zone_mixing_object/LICENSE.md +1 -1
  198. data/lib/measures/add_zone_mixing_object/measure.rb +1 -1
  199. data/lib/measures/add_zone_mixing_object/measure.xml +8 -7
  200. data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +1 -1
  201. data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +1 -1
  202. data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.xml +8 -7
  203. data/lib/measures/air_wall_zone_mixing/LICENSE.md +1 -1
  204. data/lib/measures/air_wall_zone_mixing/measure.rb +1 -1
  205. data/lib/measures/air_wall_zone_mixing/measure.xml +5 -5
  206. data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +1 -1
  207. data/lib/measures/envelope_and_internal_load_breakdown/README.md +4 -3
  208. data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +8 -5
  209. data/lib/measures/envelope_and_internal_load_breakdown/measure.xml +18 -19
  210. data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +1 -1
  211. data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +5 -1
  212. data/lib/measures/example_report/LICENSE.md +1 -1
  213. data/lib/measures/example_report/README.md +27 -5
  214. data/lib/measures/example_report/measure.rb +8 -5
  215. data/lib/measures/example_report/measure.xml +19 -32
  216. data/lib/measures/example_report/resources/os_lib_reporting_example.rb +1 -1
  217. data/lib/measures/example_report/resources/report.html.erb +5 -1
  218. data/lib/measures/gem_env_report/LICENSE.md +1 -1
  219. data/lib/measures/gem_env_report/measure.rb +1 -1
  220. data/lib/measures/gem_env_report/measure.xml +14 -13
  221. data/lib/measures/gem_env_report/resources/gem_env_info.rb +1 -1
  222. data/lib/measures/gem_env_report/resources/openstudio_info.rb +1 -1
  223. data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +1 -1
  224. data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +1 -1
  225. data/lib/measures/generic_qaqc/LICENSE.md +1 -1
  226. data/lib/measures/generic_qaqc/README.md +187 -5
  227. data/lib/measures/generic_qaqc/measure.rb +7 -2
  228. data/lib/measures/generic_qaqc/measure.xml +54 -130
  229. data/lib/measures/generic_qaqc/resources/CreateResults.rb +1 -1
  230. data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +1 -1
  231. data/lib/measures/generic_qaqc/resources/check_calibration.rb +1 -1
  232. data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +1 -1
  233. data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +1 -1
  234. data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +8 -2
  235. data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +11 -12
  236. data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +1 -1
  237. data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +1 -1
  238. data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +1 -1
  239. data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +1 -1
  240. data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +1 -1
  241. data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +1 -1
  242. data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +1 -1
  243. data/lib/measures/generic_qaqc/resources/check_part_loads.rb +1 -1
  244. data/lib/measures/generic_qaqc/resources/check_placeholder.rb +1 -1
  245. data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +1 -1
  246. data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +1 -1
  247. data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +1 -1
  248. data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +1 -1
  249. data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +1 -1
  250. data/lib/measures/generic_qaqc/resources/check_schedules.rb +1 -1
  251. data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +1 -1
  252. data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +1 -1
  253. data/lib/measures/generic_qaqc/resources/check_weather_files.rb +1 -1
  254. data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +1 -1
  255. data/lib/measures/generic_qaqc/resources/report.html.erb +5 -1
  256. data/lib/measures/get_site_from_building_component_library/LICENSE.md +1 -1
  257. data/lib/measures/get_site_from_building_component_library/measure.rb +1 -1
  258. data/lib/measures/get_site_from_building_component_library/measure.xml +6 -6
  259. data/lib/measures/hvac_psychrometric_chart/LICENSE.md +1 -1
  260. data/lib/measures/hvac_psychrometric_chart/README.md +11 -5
  261. data/lib/measures/hvac_psychrometric_chart/measure.rb +2 -2
  262. data/lib/measures/hvac_psychrometric_chart/measure.xml +13 -19
  263. data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +5 -1
  264. data/lib/measures/inject_idf_objects/LICENSE.md +1 -1
  265. data/lib/measures/inject_idf_objects/measure.rb +1 -1
  266. data/lib/measures/inject_idf_objects/measure.xml +29 -28
  267. data/lib/measures/openstudio_results/LICENSE.md +1 -1
  268. data/lib/measures/openstudio_results/README.md +200 -6
  269. data/lib/measures/openstudio_results/measure.rb +20 -14
  270. data/lib/measures/openstudio_results/measure.xml +210 -302
  271. data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +1 -1
  272. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +1 -1
  273. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +1 -1
  274. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +1 -1
  275. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +1 -1
  276. data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +1 -1
  277. data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +1 -1
  278. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +1 -1
  279. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +1 -1
  280. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +1 -1
  281. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
  282. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +1 -1
  283. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +1 -1
  284. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +1 -1
  285. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +1 -1
  286. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +1 -1
  287. data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +1 -1
  288. data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +1 -1
  289. data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +1 -1
  290. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +1 -1
  291. data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +1 -1
  292. data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +1 -1
  293. data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +1 -1
  294. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +1 -1
  295. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +1 -1
  296. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +1 -1
  297. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +1 -1
  298. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +1 -1
  299. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +1 -1
  300. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +1 -1
  301. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +1 -1
  302. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +1 -1
  303. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +1 -1
  304. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
  305. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
  306. data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
  307. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +1 -1
  308. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +1 -1
  309. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +1 -1
  310. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +1 -1
  311. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +1 -1
  312. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +1 -1
  313. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +1 -1
  314. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +1 -1
  315. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +1 -1
  316. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +1 -1
  317. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +1 -1
  318. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +1 -1
  319. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +1 -1
  320. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +1 -1
  321. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +1 -1
  322. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
  323. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
  324. data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
  325. data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +1 -1
  326. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +1 -1
  327. data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +1 -1
  328. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +1 -1
  329. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +1 -1
  330. data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +1 -1
  331. data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +1 -1
  332. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +1 -1
  333. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +1 -1
  334. data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +1 -1
  335. data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +1 -1
  336. data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +1 -1
  337. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +1 -1
  338. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +1 -1
  339. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +1 -1
  340. data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +1 -1
  341. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +1 -1
  342. data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +1 -1
  343. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +1 -1
  344. data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +1 -1
  345. data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +1 -1
  346. data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +1 -1
  347. data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +1 -1
  348. data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +1 -1
  349. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +1 -1
  350. data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +1 -1
  351. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +1 -1
  352. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +1 -1
  353. data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +1 -1
  354. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +1 -1
  355. data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +1 -1
  356. data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +1 -1
  357. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +1 -1
  358. data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +1 -1
  359. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
  360. data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +1 -1
  361. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +1 -1
  362. data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +1 -1
  363. data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +1 -1
  364. data/lib/measures/openstudio_results/resources/Siz.Model.rb +1 -1
  365. data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +1 -1
  366. data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +1 -1
  367. data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +1 -1
  368. data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +1 -1
  369. data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +1 -1
  370. data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +1 -1
  371. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +1 -1
  372. data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +1 -1
  373. data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +1 -1
  374. data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +1 -1
  375. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +1 -1
  376. data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +1 -1
  377. data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +1 -1
  378. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +1 -1
  379. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +1 -1
  380. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +1 -1
  381. data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +1 -1
  382. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +1 -1
  383. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +1 -1
  384. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +1 -1
  385. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +1 -1
  386. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +1 -1
  387. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +1 -1
  388. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +1 -1
  389. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +1 -1
  390. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +1 -1
  391. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +1 -1
  392. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +1 -1
  393. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +1 -1
  394. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +1 -1
  395. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +1 -1
  396. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +1 -1
  397. data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +1 -1
  398. data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +1 -1
  399. data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +117 -39
  400. data/lib/measures/openstudio_results/resources/report.html.erb +5 -1
  401. data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +1 -1
  402. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +1 -1
  403. data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +8 -7
  404. data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +1 -1
  405. data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +1 -1
  406. data/lib/measures/set_electric_equipment_loads_by_epd/measure.xml +10 -9
  407. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +1 -1
  408. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/README.md +16 -0
  409. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +33 -2
  410. data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.xml +33 -8
  411. data/lib/measures/set_run_period/LICENSE.md +1 -1
  412. data/lib/measures/set_run_period/measure.rb +1 -1
  413. data/lib/measures/set_run_period/measure.xml +5 -5
  414. data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +1 -1
  415. data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +1 -1
  416. data/lib/measures/set_space_infiltration_per_exterior_area/measure.xml +8 -7
  417. data/lib/measures/tariff_selection_block/LICENSE.md +1 -1
  418. data/lib/measures/tariff_selection_block/measure.rb +2 -2
  419. data/lib/measures/tariff_selection_block/measure.xml +5 -5
  420. data/lib/measures/tariff_selection_flat/LICENSE.md +1 -1
  421. data/lib/measures/tariff_selection_flat/measure.rb +2 -2
  422. data/lib/measures/tariff_selection_flat/measure.xml +5 -5
  423. data/lib/measures/tariff_selection_generic/LICENSE.md +1 -1
  424. data/lib/measures/tariff_selection_generic/README.md +2 -2
  425. data/lib/measures/tariff_selection_generic/measure.rb +1 -1
  426. data/lib/measures/tariff_selection_generic/measure.xml +25 -25
  427. data/lib/measures/tariff_selection_generic/resources/FlatEnergyCharge-Gas.idf +3 -3
  428. data/lib/measures/tariff_selection_generic/resources/IN-EIAMonthlyRateGas.idf +1 -1
  429. data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +1 -1
  430. data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -2
  431. data/lib/measures/tariff_selection_time_and_date_dependant/measure.xml +5 -5
  432. data/lib/measures/{ImproveFanBeltEfficiency → view_data}/LICENSE.md +1 -1
  433. data/lib/measures/view_data/README.md +64 -0
  434. data/lib/measures/{AddDaylightSensors → view_data}/README.md.erb +0 -0
  435. data/lib/measures/view_data/measure.rb +454 -0
  436. data/lib/measures/view_data/measure.xml +159 -0
  437. data/lib/measures/view_data/resources/report.html.in +2881 -0
  438. data/lib/measures/view_data/resources/va3c.rb +1025 -0
  439. data/lib/measures/{EnableDemandControlledVentilation → view_model}/LICENSE.md +1 -1
  440. data/lib/measures/view_model/README.md +26 -0
  441. data/lib/measures/{EnableDemandControlledVentilation → view_model}/README.md.erb +0 -0
  442. data/lib/measures/view_model/measure.rb +146 -0
  443. data/lib/measures/view_model/measure.xml +129 -0
  444. data/lib/measures/view_model/resources/report.html.in +2881 -0
  445. data/lib/measures/view_model/resources/va3c.rb +1025 -0
  446. data/lib/openstudio-common-measures.rb +1 -1
  447. data/lib/openstudio/common_measures.rb +1 -1
  448. data/lib/openstudio/common_measures/extension.rb +1 -1
  449. data/lib/openstudio/common_measures/version.rb +2 -2
  450. data/openstudio-common-measures.gemspec +4 -4
  451. metadata +67 -91
  452. data/lib/measures/AddDaylightSensors/README.md +0 -136
  453. data/lib/measures/AddDaylightSensors/measure.rb +0 -521
  454. data/lib/measures/AddDaylightSensors/measure.xml +0 -233
  455. data/lib/measures/EnableDemandControlledVentilation/README.md +0 -32
  456. data/lib/measures/EnableDemandControlledVentilation/measure.rb +0 -154
  457. data/lib/measures/EnableDemandControlledVentilation/measure.xml +0 -99
  458. data/lib/measures/EnableEconomizerControl/README.md +0 -48
  459. data/lib/measures/EnableEconomizerControl/README.md.erb +0 -42
  460. data/lib/measures/EnableEconomizerControl/measure.rb +0 -172
  461. data/lib/measures/EnableEconomizerControl/measure.xml +0 -124
  462. data/lib/measures/ImproveFanBeltEfficiency/README.md +0 -104
  463. data/lib/measures/ImproveFanBeltEfficiency/README.md.erb +0 -42
  464. data/lib/measures/ImproveFanBeltEfficiency/measure.rb +0 -366
  465. data/lib/measures/ImproveFanBeltEfficiency/measure.xml +0 -185
  466. data/lib/measures/ImproveMotorEfficiency/LICENSE.md +0 -27
  467. data/lib/measures/ImproveMotorEfficiency/README.md +0 -104
  468. data/lib/measures/ImproveMotorEfficiency/README.md.erb +0 -42
  469. data/lib/measures/ImproveMotorEfficiency/measure.rb +0 -365
  470. data/lib/measures/ImproveMotorEfficiency/measure.xml +0 -182
  471. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/LICENSE.md +0 -27
  472. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/README.md +0 -64
  473. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/README.md.erb +0 -42
  474. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/measure.rb +0 -422
  475. data/lib/measures/IncreaseInsulationRValueForExteriorWalls/measure.xml +0 -150
  476. data/lib/measures/IncreaseInsulationRValueForExteriorWallsByPercentage/LICENSE.md +0 -27
  477. data/lib/measures/IncreaseInsulationRValueForExteriorWallsByPercentage/README.md +0 -32
  478. data/lib/measures/IncreaseInsulationRValueForExteriorWallsByPercentage/README.md.erb +0 -42
  479. data/lib/measures/IncreaseInsulationRValueForExteriorWallsByPercentage/measure.rb +0 -328
  480. data/lib/measures/IncreaseInsulationRValueForExteriorWallsByPercentage/measure.xml +0 -98
  481. data/lib/measures/IncreaseInsulationRValueForRoofs/LICENSE.md +0 -27
  482. data/lib/measures/IncreaseInsulationRValueForRoofs/README.md +0 -64
  483. data/lib/measures/IncreaseInsulationRValueForRoofs/README.md.erb +0 -42
  484. data/lib/measures/IncreaseInsulationRValueForRoofs/measure.rb +0 -422
  485. data/lib/measures/IncreaseInsulationRValueForRoofs/measure.xml +0 -143
  486. data/lib/measures/IncreaseInsulationRValueForRoofsByPercentage/LICENSE.md +0 -27
  487. data/lib/measures/IncreaseInsulationRValueForRoofsByPercentage/README.md +0 -32
  488. data/lib/measures/IncreaseInsulationRValueForRoofsByPercentage/README.md.erb +0 -42
  489. data/lib/measures/IncreaseInsulationRValueForRoofsByPercentage/measure.rb +0 -328
  490. data/lib/measures/IncreaseInsulationRValueForRoofsByPercentage/measure.xml +0 -98
  491. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/LICENSE.md +0 -27
  492. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/README.md +0 -97
  493. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/README.md.erb +0 -42
  494. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/measure.rb +0 -450
  495. data/lib/measures/ReduceElectricEquipmentLoadsByPercentage/measure.xml +0 -186
  496. data/lib/measures/ReduceLightingLoadsByPercentage/LICENSE.md +0 -27
  497. data/lib/measures/ReduceLightingLoadsByPercentage/README.md +0 -96
  498. data/lib/measures/ReduceLightingLoadsByPercentage/README.md.erb +0 -42
  499. data/lib/measures/ReduceLightingLoadsByPercentage/measure.rb +0 -513
  500. data/lib/measures/ReduceLightingLoadsByPercentage/measure.xml +0 -191
  501. data/lib/measures/ReduceSpaceInfiltrationByPercentage/LICENSE.md +0 -27
  502. data/lib/measures/ReduceSpaceInfiltrationByPercentage/README.md +0 -104
  503. data/lib/measures/ReduceSpaceInfiltrationByPercentage/README.md.erb +0 -42
  504. data/lib/measures/ReduceSpaceInfiltrationByPercentage/measure.rb +0 -349
  505. data/lib/measures/ReduceSpaceInfiltrationByPercentage/measure.xml +0 -181
  506. data/lib/measures/ReduceVentilationByPercentage/LICENSE.md +0 -27
  507. data/lib/measures/ReduceVentilationByPercentage/README.md +0 -40
  508. data/lib/measures/ReduceVentilationByPercentage/README.md.erb +0 -42
  509. data/lib/measures/ReduceVentilationByPercentage/measure.rb +0 -291
  510. data/lib/measures/ReduceVentilationByPercentage/measure.xml +0 -96
  511. data/lib/measures/VentilationQAQC/ExampleModel.osm +0 -28468
  512. data/lib/measures/create_variable_speed_rtu/LICENSE.md +0 -27
  513. data/lib/measures/create_variable_speed_rtu/README.md +0 -120
  514. data/lib/measures/create_variable_speed_rtu/README.md.erb +0 -42
  515. data/lib/measures/create_variable_speed_rtu/measure.rb +0 -539
  516. data/lib/measures/create_variable_speed_rtu/measure.xml +0 -207
  517. data/lib/measures/generic_qaqc/resources/os_lib_helper_methods.rb +0 -399
  518. data/lib/measures/openstudio_results/resources/os_lib_helper_methods.rb +0 -399
  519. data/lib/measures/openstudio_results/resources/os_lib_schedules.rb +0 -960
  520. data/lib/measures/radiant_slab_with_doas/LICENSE.md +0 -27
  521. data/lib/measures/radiant_slab_with_doas/README.md +0 -156
  522. data/lib/measures/radiant_slab_with_doas/README.md.erb +0 -42
  523. data/lib/measures/radiant_slab_with_doas/measure.rb +0 -403
  524. data/lib/measures/radiant_slab_with_doas/measure.xml +0 -345
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>zone_report</name>
5
5
  <uid>81ac119f-4841-434c-9e11-824310fe1cb7</uid>
6
- <version_id>2b729b0e-abb0-4257-a616-e13f920af649</version_id>
7
- <version_modified>20200509T041912Z</version_modified>
6
+ <version_id>7d7e961b-e7fa-4148-a3f1-881003426650</version_id>
7
+ <version_modified>20210406T220300Z</version_modified>
8
8
  <xml_checksum>2C8A3EEF</xml_checksum>
9
9
  <class_name>ZoneReport</class_name>
10
10
  <display_name>Zone Report</display_name>
@@ -53,11 +53,23 @@
53
53
  <usage_type>readmeerb</usage_type>
54
54
  <checksum>703C9964</checksum>
55
55
  </file>
56
+ <file>
57
+ <filename>README.md</filename>
58
+ <filetype>md</filetype>
59
+ <usage_type>readme</usage_type>
60
+ <checksum>C013AECE</checksum>
61
+ </file>
56
62
  <file>
57
63
  <filename>LICENSE.md</filename>
58
64
  <filetype>md</filetype>
59
65
  <usage_type>license</usage_type>
60
- <checksum>E0468DD6</checksum>
66
+ <checksum>A21A3ED2</checksum>
67
+ </file>
68
+ <file>
69
+ <filename>ZoneReport_Test.rb</filename>
70
+ <filetype>rb</filetype>
71
+ <usage_type>test</usage_type>
72
+ <checksum>B1178B90</checksum>
61
73
  </file>
62
74
  <file>
63
75
  <version>
@@ -68,20 +80,7 @@
68
80
  <filename>measure.rb</filename>
69
81
  <filetype>rb</filetype>
70
82
  <usage_type>script</usage_type>
71
- <checksum>67AA9EB6</checksum>
72
- </file>
73
- <file>
74
- <filename>README.md</filename>
75
- <filetype>md</filetype>
76
- <usage_type>readme</usage_type>
77
- <checksum>0B68E96D</checksum>
78
- </file>
79
- <file>
80
- <filename>ZoneReport_Test.rb</filename>
81
- <filetype>rb</filetype>
82
- <usage_type>test</usage_type>
83
- <checksum>23FA651F</checksum>
83
+ <checksum>0A989832</checksum>
84
84
  </file>
85
85
  </files>
86
86
  </measure>
87
- <error>wrong number of arguments (given 1, expected 0)</error>
@@ -0,0 +1,15 @@
1
+
2
+
3
+ OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6
+
7
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8
+
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10
+
11
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
12
+
13
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,4 +1,4 @@
1
- OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
1
+ OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
2
2
 
3
3
  Redistribution and use in source and binary forms, with or without modification, are permitted
4
4
  provided that the following conditions are met:
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: "ReadMe"
3
+ author: "Amy Allen"
4
+ date: "8/18/2020"
5
+ output:
6
+ pdf_document: default
7
+ html_document: default
8
+ ---
9
+
10
+ ```{r setup, include=FALSE}
11
+ knitr::opts_chunk$set(echo = TRUE)
12
+ ```
13
+
14
+
15
+ ## Add EMS to Control EV Charging Load
16
+ ## Description
17
+ This measure uses EnergyPlus' EnergyManagementSystem objects to control an electric vehicle charging load to better align the charging power draw with expected solar PV power production. If the need for load shifting passes, and, in any case, by late afternoon, the load shifting will be ended, and the EV load be charged at a higher rate in order to compensate for the earlier curtailment. Curtailment will be compensated for such that vehicles being charged are charged to at least 95% of the level that they would have been otherwise.
18
+
19
+ ## Modeler Description
20
+ This measure is intended for use at a 15-minute timestep.This measure requires than an electric vehicle charging load (with a schedule containing the strings "EV" or "V(v)ehicle" in the name) is already present in the model. This can be accomplished through first applying the Add EV Load measure. Note that this measure can result in increasing the peak load associated with EV charging, during the periods in which curtailment is compensated. This measure is structured around the assumption of an office building occupancy schedule, with occupants requiring vehicles to be charged by 7pm. Load shifting events are characterized by declining levels of solar radiation, which is used as a proxy for diminishing power output from on-site solar PV. Load shifting occurs only on weekdays, when commercial buildings would typically have higher EV charging loads.
21
+
22
+ ## Measure Type
23
+ EnergyPlusMeasure
24
+
25
+ ## Arguments
26
+ ## Curtailment Fraction
27
+ Name: Curtailment Frac, Type: Double, Units: Percent , Required: true, Model Dependent: false. This argument sets the fraction by which EV charging will be curtailed during a load-shifting event. This value defaults to 50%.
28
+
29
+
@@ -0,0 +1,289 @@
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
+ # start the measure
37
+ require 'openstudio-extension'
38
+ require 'openstudio/extension/core/os_lib_helper_methods'
39
+ class AddEMSToControlEVCharging < OpenStudio::Measure::ModelMeasure
40
+ # human readable name
41
+ def name
42
+ return 'Add EMS to Control EV Charging'
43
+ end
44
+
45
+ # human readable description
46
+ def description
47
+ return 'This measure implements a control system to curtail an electric vehicle (EV) charging load to better align EV charging with expected energy production from a solar PV system.'
48
+ end
49
+
50
+ # human readable description of modeling approach
51
+ def modeler_description
52
+ return "This measure uses EnergyPlus' Energy Management System to control an electric vehicle (EV) charging load to better align charging power draw with expected energy production from solar PV. There must already be an EV charging load present in the model when this measure is applied, and the measure is configured based on the assumption of a typical office operating schedule."
53
+ end
54
+
55
+ # define the arguments that the user will input
56
+ def arguments(model)
57
+ args = OpenStudio::Measure::OSArgumentVector.new
58
+ curtailment_frac = OpenStudio::Measure::OSArgument.makeDoubleArgument('curtailment_frac', true)
59
+ curtailment_frac.setDisplayName('Fraction by Which to Curtail EV Charging During Load Shifting Events')
60
+ curtailment_frac.setDefaultValue(0.5)
61
+ curtailment_frac.setDescription('Number between 0 and 1 that denotes the fraction by which EV charging')
62
+ args << curtailment_frac
63
+
64
+ return args
65
+ end
66
+
67
+ # define what happens when the measure is run
68
+ def run(model, runner, user_arguments)
69
+ super(model, runner, user_arguments)
70
+
71
+ # use the built-in error checking
72
+ if !runner.validateUserArguments(arguments(model), user_arguments)
73
+ return false
74
+ end
75
+
76
+ curtailment_frac = runner.getDoubleArgumentValue('curtailment_frac', user_arguments)
77
+ if curtailment_frac < 0 || curtailment_frac > 1
78
+ runner.registerError('Curtailment fraction must be between 0 and 1')
79
+ return false
80
+ end
81
+
82
+ # Initialize handles
83
+ bldg_handle = nil
84
+ bldg_handle = model.getBuilding.handle
85
+
86
+ # Create object for end-of-year-date.
87
+ eoy = OpenStudio::Date.new(OpenStudio::MonthOfYear.new(12), 31, 2006)
88
+
89
+ # Find the EV charger object, which will be passed in to the actuator.
90
+ ext_fuel_equip = model.getFacility.exteriorFuelEquipments
91
+ ext_equip_sched = []
92
+ ext_fuel_equip.each do |equip|
93
+ if equip.exteriorFuelEquipmentDefinition.name.to_s.include?('EV') || equip.exteriorFuelEquipmentDefinition.name.to_s.include?('vehicle') || equip.exteriorFuelEquipmentDefinition.name.to_s.include?('Vehicle')
94
+ ext_equip_sched << equip.schedule
95
+ end
96
+ end
97
+ ev_sched = ext_equip_sched [0]
98
+ if ext_equip_sched.empty?
99
+ runner.registerError('No EV charging schedule found. Schedule must include the string "EV", "vehicle", or "Vehicle" in its name.')
100
+ return false
101
+ end
102
+ if ext_equip_sched.length > 1
103
+ runner.registerError('More than one EV charging schedule found. Currently, this measure is capable of handling only one EV charging schedule.')
104
+ return false
105
+ end
106
+ ev_sched_copy = ext_equip_sched [0].clone
107
+ ev_sched_copy.setName('EV Charging Power Draw Copy')
108
+
109
+ equip_sched_day = ext_equip_sched [0].to_ScheduleRuleset.get.defaultDaySchedule
110
+ puts(ext_equip_sched [0].to_ScheduleRuleset.get)
111
+ equip_sched_day_default_val = equip_sched_day.values
112
+ puts equip_sched_day_default_val
113
+
114
+ # Create a new schedule, scaled by the curtailment fraction
115
+ ev_curtailed_sch = OpenStudio::Model::ScheduleRuleset.new(model)
116
+ ev_curtailed_sch.setName('EV Charging Curtailed Schedule')
117
+
118
+ # Default day (use this for weekdays)
119
+ ev_curtailed_sch.defaultDaySchedule.setName('EV Charging Curtailed Default')
120
+ # Loop through all the values and add to schedule
121
+ equip_sched_day_default_val.each_with_index do |value, i|
122
+ time = OpenStudio::Time.new(0, 0, (i + 1) * 15, 0)
123
+ ev_curtailed_sch.defaultDaySchedule.addValue(time, (value * curtailment_frac))
124
+ end
125
+ # Create needed sensors.
126
+ site_solar_rad_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Site Direct Solar Radiation Rate per Area')
127
+ site_solar_rad_sensor.setName('Direct_Solar_Radiation_Rate')
128
+
129
+ ev_load_curtailed_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
130
+ ev_load_curtailed_sensor.setKeyName('EV Charging Curtailed Schedule')
131
+ ev_load_curtailed_sensor.setName('EV_Load_Curtailed_Sensor')
132
+
133
+ ev_load_sched_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
134
+ ev_load_sched_sensor.setKeyName('EV Charging Power Draw Copy')
135
+ ev_load_sched_sensor.setName('EV_reg_sched_power')
136
+
137
+ # Make the needed actuator.
138
+ ev_schedule_actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(ev_sched, 'Schedule:Year', 'Schedule Value')
139
+ ev_schedule_actuator.setName('EVChargeSchedule_Actuator')
140
+ ev_schedule_actuator_handle = ev_schedule_actuator.handle
141
+
142
+ # Make the global variables.
143
+ solar_trend = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'solartrend')
144
+ arg_dr_state = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'argdrstate')
145
+ curtailed_energy_sum = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'curtailed_energy_sum')
146
+ curtail_frac = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'curtail_frac')
147
+ ev_charge_energy = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'EV_charge_energy')
148
+ ev_sched_charge_energy = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'EV_sched_charge_energy')
149
+
150
+ # Make the trend variables.
151
+ solar_rad_trend = OpenStudio::Model::EnergyManagementSystemTrendVariable.new(model, site_solar_rad_sensor)
152
+ solar_rad_trend.setName('Solar_Radiation_Trend')
153
+ solar_rad_trend.setEMSVariableName(site_solar_rad_sensor.name.to_s)
154
+ solar_rad_trend.setNumberOfTimestepsToBeLogged(144)
155
+
156
+ dr_state_trend = OpenStudio::Model::EnergyManagementSystemTrendVariable.new(model, arg_dr_state)
157
+ dr_state_trend.setName('DR_State_Trend')
158
+ dr_state_trend.setEMSVariableName(arg_dr_state.name.to_s)
159
+
160
+ solar_rad_slope_trend = OpenStudio::Model::EnergyManagementSystemTrendVariable.new(model, solar_trend)
161
+ solar_rad_slope_trend.setName('Solar_Radiation_Slope_Trend')
162
+ solar_rad_slope_trend.setEMSVariableName(solar_trend.name.to_s)
163
+
164
+ # Make the needed output variables. Below is using the model and an acutator, or the model and a global variable, which is allowable.
165
+ ev_charge_eff_sched = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, ev_schedule_actuator)
166
+ ev_charge_eff_sched.setName('EV Charging Effective Schedule')
167
+ ev_charge_eff_sched.setEMSVariableName(ev_schedule_actuator.name.to_s)
168
+
169
+ ev_sched_load = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, ev_load_sched_sensor)
170
+ ev_sched_load.setName('EV Charging Regularly Sched Load')
171
+ ev_sched_load.setEMSVariableName(ev_load_sched_sensor.name.to_s)
172
+
173
+ dr_state = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, arg_dr_state)
174
+ dr_state.setName('dr_state')
175
+ dr_state.setEMSVariableName(arg_dr_state.name.to_s)
176
+
177
+ solar_rad_slope = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, solar_trend)
178
+ solar_rad_slope.setName('solar_radiation_slope_trend')
179
+ solar_rad_slope.setEMSVariableName(solar_trend.name.to_s)
180
+
181
+ curtailed_energy_total = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, curtailed_energy_sum)
182
+ curtailed_energy_total.setName('EV Curtailed Energy Total')
183
+ curtailed_energy_total.setEMSVariableName(curtailed_energy_sum.name.to_s)
184
+
185
+ ev_charge_energy_output = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, ev_charge_energy)
186
+ ev_charge_energy_output.setName('EV Charging Energy')
187
+ ev_charge_energy_output.setEMSVariableName(ev_charge_energy.name.to_s)
188
+
189
+ ev_sched_charge_energy_output = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, ev_sched_charge_energy)
190
+ ev_sched_charge_energy_output.setName('Scheduled EV Charging Energy')
191
+ ev_sched_charge_energy_output.setEMSVariableName(ev_sched_charge_energy.name.to_s)
192
+
193
+ # Make sub-routines.
194
+ # Reset the counter of curtailed energy.
195
+ reset_curtailment_subroutine = OpenStudio::Model::EnergyManagementSystemSubroutine.new(model)
196
+ reset_curtailment_subroutine.setName('Initalize_EV_Curtailment')
197
+ reset_curtailment_subroutine.addLine('SET curtailed_energy_sum=0') # Reset this counter to zero.
198
+
199
+ # Set the actuator for curtailment.
200
+ curtail_ev_sched_subroutine = OpenStudio::Model::EnergyManagementSystemSubroutine.new(model)
201
+ curtail_ev_sched_subroutine.setName('Set_EV_Sched_Curtailed_Value')
202
+ curtail_ev_sched_subroutine.addLine('SET EVChargeSchedule_Actuator =EV_Load_Curtailed_Sensor')
203
+ curtail_ev_sched_subroutine.addLine('SET argdrstate = 1')
204
+ curtail_ev_sched_subroutine.addLine('SET curtailed_energy_sum=curtailed_energy_sum + (EV_reg_sched_power-EV_Load_Curtailed_Sensor)')
205
+ curtail_ev_sched_subroutine.addLine('SET ev_charge_energy=ev_charge_energy + EV_Load_Curtailed_Sensor*SystemTimeStep')
206
+ curtail_ev_sched_subroutine.addLine('SET ev_sched_charge_energy=ev_sched_charge_energy + EV_reg_sched_power*SystemTimeStep')
207
+
208
+ # Make program.
209
+ execute_ev_curtailment_prgrm = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
210
+ execute_ev_curtailment_prgrm.setName('Execute_EV_Curtailment')
211
+ execute_ev_curtailment_prgrm.addLine('IF (CurrentTime==1)')
212
+ execute_ev_curtailment_prgrm.addLine('SET ev_charge_energy=0')
213
+ execute_ev_curtailment_prgrm.addLine('SET ev_sched_charge_energy=0')
214
+ execute_ev_curtailment_prgrm.addLine('ELSEIF (solartrend <0 ) && (CurrentTime<=16) && (CurrentTime>=6) &&(DayofWeek<>1) && (DayofWeek<>7)')
215
+ # execute_ev_curtailment_prgrm.addLine('RUN Initalize_EV_Curtailment')
216
+ execute_ev_curtailment_prgrm.addLine('RUN Set_EV_Sched_Curtailed_Value')
217
+ execute_ev_curtailment_prgrm.addLine('ELSEIF (CurrentTime>16) && (CurrentTime<18.50) && (DayofWeek<>1) && (DayofWeek<>7) ')
218
+ execute_ev_curtailment_prgrm.addLine('SET EVChargeSchedule_Actuator =EV_reg_sched_power + curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep)')
219
+ execute_ev_curtailment_prgrm.addLine('SET curtailed_energy_sum =curtailed_energy_sum- curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep)')
220
+ execute_ev_curtailment_prgrm.addLine('SET ev_charge_energy =ev_charge_energy + (EV_reg_sched_power + curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep))*SystemTimeStep')
221
+ execute_ev_curtailment_prgrm.addLine('SET ev_sched_charge_energy =ev_sched_charge_energy + EV_reg_sched_power*SystemTimeStep')
222
+ execute_ev_curtailment_prgrm.addLine('SET argdrstate = 0')
223
+ execute_ev_curtailment_prgrm.addLine('ELSEIF (CurrentTime==18.50)')
224
+ execute_ev_curtailment_prgrm.addLine('SET curtailed_energy_sum=0')
225
+ execute_ev_curtailment_prgrm.addLine('SET ev_charge_energy =ev_charge_energy + EV_reg_sched_power*SystemTimeStep')
226
+ execute_ev_curtailment_prgrm.addLine('SET ev_sched_charge_energy =ev_sched_charge_energy + EV_reg_sched_power*SystemTimeStep')
227
+ execute_ev_curtailment_prgrm.addLine('ELSEIF (solartrend>=0) && (CurrentTime<18.75)')
228
+ execute_ev_curtailment_prgrm.addLine('SET EVChargeSchedule_Actuator =EV_reg_sched_power + curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep)') # Compensate for curtailment
229
+ execute_ev_curtailment_prgrm.addLine('SET curtailed_energy_sum =curtailed_energy_sum- curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep)') # Update curtailment counter
230
+ execute_ev_curtailment_prgrm.addLine('SET ev_charge_energy =ev_charge_energy + (EV_reg_sched_power + curtailed_energy_sum/((18.75-CurrentTime-SystemTimeStep)/SystemTimeStep))*SystemTimeStep')
231
+ execute_ev_curtailment_prgrm.addLine('SET ev_sched_charge_energy =ev_sched_charge_energy + EV_reg_sched_power*SystemTimeStep')
232
+ execute_ev_curtailment_prgrm.addLine('SET argdrstate = 0')
233
+ execute_ev_curtailment_prgrm.addLine('ELSE')
234
+ execute_ev_curtailment_prgrm.addLine('SET EVChargeSchedule_Actuator = Null')
235
+ execute_ev_curtailment_prgrm.addLine('SET ev_sched_charge_energy =ev_sched_charge_energy + EV_reg_sched_power*SystemTimeStep')
236
+ execute_ev_curtailment_prgrm.addLine('SET ev_charge_energy =ev_charge_energy + EV_reg_sched_power*SystemTimeStep')
237
+ execute_ev_curtailment_prgrm.addLine('SET argdrstate = 0')
238
+ execute_ev_curtailment_prgrm.addLine('ENDIF')
239
+
240
+ solar_trend_prgrm = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
241
+ solar_trend_prgrm.setName('Set_Solar_Trend')
242
+ solar_trend_prgrm.addLine('SET solartrend =@TrendDirection Solar_Radiation_Trend 2')
243
+
244
+ set_demand_threshold_prgrm = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
245
+ set_demand_threshold_prgrm.setName('Set_Demand_Threshold')
246
+ set_demand_threshold_prgrm.addLine('SET curtailed_energy_sum =0')
247
+ set_demand_threshold_prgrm.addLine('SET ev_charge_energy =0')
248
+ set_demand_threshold_prgrm.addLine('SET ev_sched_charge_energy =0')
249
+
250
+ # Add program calling managers.
251
+ ev_curtailment_main_calling_mgr = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
252
+ ev_curtailment_main_calling_mgr.setName('EV_Curtailment')
253
+ ev_curtailment_main_calling_mgr.setCallingPoint('BeginTimestepBeforePredictor')
254
+
255
+ ev_curtailment_main_calling_mgr.setProgram(solar_trend_prgrm, 0)
256
+ ev_curtailment_main_calling_mgr.setProgram(execute_ev_curtailment_prgrm, 1)
257
+
258
+ set_input_vars_mgr = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
259
+ set_input_vars_mgr.setName('Set_input_vars')
260
+ set_input_vars_mgr.setCallingPoint('BeginNewEnvironment')
261
+ set_input_vars_mgr.setProgram(set_demand_threshold_prgrm, 0)
262
+
263
+ # Add output variables
264
+ outputVariable = OpenStudio::Model::OutputVariable.new('dr_state', model)
265
+ outputVariable.setReportingFrequency('timestep')
266
+
267
+ outputVariable = OpenStudio::Model::OutputVariable.new('Schedule Value', model)
268
+ outputVariable.setReportingFrequency('timestep')
269
+ outputVariable.setKeyValue('EV Charging Power Draw')
270
+
271
+ outputVariable = OpenStudio::Model::OutputVariable.new('Schedule Value', model)
272
+ outputVariable.setReportingFrequency('timestep')
273
+ outputVariable.setKeyValue('EV Charging Power Draw Copy')
274
+
275
+ outputVariable = OpenStudio::Model::OutputVariable.new('EV Curtailed Energy Total', model)
276
+ outputVariable.setReportingFrequency('timestep')
277
+
278
+ outputVariable = OpenStudio::Model::OutputVariable.new('Scheduled EV Charging Energy', model)
279
+ outputVariable.setReportingFrequency('timestep')
280
+
281
+ outputVariable = OpenStudio::Model::OutputVariable.new('EV Charging Energy', model)
282
+ outputVariable.setReportingFrequency('timestep')
283
+
284
+ return true
285
+ end
286
+ end
287
+
288
+ # register the measure to be used by the application
289
+ AddEMSToControlEVCharging.new.registerWithApplication
@@ -0,0 +1,91 @@
1
+ <?xml version="1.0"?>
2
+ <measure>
3
+ <schema_version>3.0</schema_version>
4
+ <name>add_ems_to_control_ev_charging</name>
5
+ <uid>df97997f-d02a-4e35-af7a-5aed16cb5772</uid>
6
+ <version_id>d6e93ae3-9066-4fef-84b1-bf7177ebd015</version_id>
7
+ <version_modified>20210406T220300Z</version_modified>
8
+ <xml_checksum>976EB6EB</xml_checksum>
9
+ <class_name>AddEMSToControlEVCharging</class_name>
10
+ <display_name>Add EMS to Control EV Charging</display_name>
11
+ <description>This measure implements a control system to curtail an electric vehicle (EV) charging load to better align EV charging with expected energy production from a solar PV system.</description>
12
+ <modeler_description>This measure uses EnergyPlus' Energy Management System to control an electric vehicle (EV) charging load to better align charging power draw with expected energy production from solar PV. There must already be an EV charging load present in the model when this measure is applied, and the measure is configured based on the assumption of a typical office operating schedule.</modeler_description>
13
+ <arguments>
14
+ <argument>
15
+ <name>curtailment_frac</name>
16
+ <display_name>Fraction by Which to Curtail EV Charging During Load Shifting Events</display_name>
17
+ <description>Number between 0 and 1 that denotes the fraction by which EV charging</description>
18
+ <type>Double</type>
19
+ <units></units>
20
+ <required>true</required>
21
+ <model_dependent>false</model_dependent>
22
+ <default_value>0.5</default_value>
23
+ <min_value></min_value>
24
+ <max_value></max_value>
25
+ </argument>
26
+ </arguments>
27
+ <outputs />
28
+ <provenances />
29
+ <tags>
30
+ <tag>Equipment.Equipment Controls</tag>
31
+ </tags>
32
+ <attributes>
33
+ <attribute>
34
+ <name>Measure Type</name>
35
+ <value>ModelMeasure</value>
36
+ <datatype>string</datatype>
37
+ </attribute>
38
+ <attribute>
39
+ <name>Intended Software Tool</name>
40
+ <value>Apply Measure Now</value>
41
+ <datatype>string</datatype>
42
+ </attribute>
43
+ <attribute>
44
+ <name>Intended Software Tool</name>
45
+ <value>OpenStudio Application</value>
46
+ <datatype>string</datatype>
47
+ </attribute>
48
+ <attribute>
49
+ <name>Intended Software Tool</name>
50
+ <value>Parametric Analysis Tool</value>
51
+ <datatype>string</datatype>
52
+ </attribute>
53
+ </attributes>
54
+ <files>
55
+ <file>
56
+ <filename>example_model.osm</filename>
57
+ <filetype>osm</filetype>
58
+ <usage_type>test</usage_type>
59
+ <checksum>E925F127</checksum>
60
+ </file>
61
+ <file>
62
+ <filename>README.md</filename>
63
+ <filetype>md</filetype>
64
+ <usage_type>readme</usage_type>
65
+ <checksum>70CA2C6E</checksum>
66
+ </file>
67
+ <file>
68
+ <filename>LICENSE.md</filename>
69
+ <filetype>md</filetype>
70
+ <usage_type>license</usage_type>
71
+ <checksum>A21A3ED2</checksum>
72
+ </file>
73
+ <file>
74
+ <filename>add_ems_to_control_ev_charging_test.rb</filename>
75
+ <filetype>rb</filetype>
76
+ <usage_type>test</usage_type>
77
+ <checksum>8CD767D3</checksum>
78
+ </file>
79
+ <file>
80
+ <version>
81
+ <software_program>OpenStudio</software_program>
82
+ <identifier>2.5.1</identifier>
83
+ <min_compatible>2.5.1</min_compatible>
84
+ </version>
85
+ <filename>measure.rb</filename>
86
+ <filetype>rb</filetype>
87
+ <usage_type>script</usage_type>
88
+ <checksum>822775FB</checksum>
89
+ </file>
90
+ </files>
91
+ </measure>