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
@@ -1,98 +0,0 @@
1
- <measure>
2
- <schema_version>3.0</schema_version>
3
- <name>increase_insulation_r_value_for_exterior_walls_by_percentage</name>
4
- <uid>7508c563-22bd-49f4-b646-aac69b02a82d</uid>
5
- <version_id>9ef20b5d-2bdd-417b-a5d9-b7f77d509133</version_id>
6
- <version_modified>20200229T024318Z</version_modified>
7
- <xml_checksum>EB1A0C08</xml_checksum>
8
- <class_name>IncreaseInsulationRValueForExteriorWallsByPercentage</class_name>
9
- <display_name>Increase R-value of Insulation for Exterior Walls By a Specified Percentage</display_name>
10
- <description>Increase the R value of the insulation layer in wall constructinons by a percentage.</description>
11
- <modeler_description>Insulation later is inferred by finding the existing layer with the highest thermal resistance.</modeler_description>
12
- <arguments>
13
- <argument>
14
- <name>r_value</name>
15
- <display_name>Percentage Increase of R-value for Exterior Wall Insulation.</display_name>
16
- <type>Double</type>
17
- <required>true</required>
18
- <model_dependent>false</model_dependent>
19
- <default_value>30</default_value>
20
- </argument>
21
- </arguments>
22
- <outputs/>
23
- <provenances/>
24
- <tags>
25
- <tag>Envelope.Opaque</tag>
26
- </tags>
27
- <attributes>
28
- <attribute>
29
- <name>Measure Function</name>
30
- <value>Measure</value>
31
- <datatype>string</datatype>
32
- </attribute>
33
- <attribute>
34
- <name>Requires EnergyPlus Results</name>
35
- <value>false</value>
36
- <datatype>boolean</datatype>
37
- </attribute>
38
- <attribute>
39
- <name>Measure Type</name>
40
- <value>ModelMeasure</value>
41
- <datatype>string</datatype>
42
- </attribute>
43
- <attribute>
44
- <name>Uses SketchUp API</name>
45
- <value>false</value>
46
- <datatype>boolean</datatype>
47
- </attribute>
48
- </attributes>
49
- <files>
50
- <file>
51
- <filename>EnvelopeAndLoadTestModel_01.osm</filename>
52
- <filetype>osm</filetype>
53
- <usage_type>test</usage_type>
54
- <checksum>10AA8866</checksum>
55
- </file>
56
- <file>
57
- <filename>ReverseTranslatedModel.osm</filename>
58
- <filetype>osm</filetype>
59
- <usage_type>test</usage_type>
60
- <checksum>0B94403D</checksum>
61
- </file>
62
- <file>
63
- <filename>README.md.erb</filename>
64
- <filetype>erb</filetype>
65
- <usage_type>readmeerb</usage_type>
66
- <checksum>703C9964</checksum>
67
- </file>
68
- <file>
69
- <filename>README.md</filename>
70
- <filetype>md</filetype>
71
- <usage_type>readme</usage_type>
72
- <checksum>D4B90CE5</checksum>
73
- </file>
74
- <file>
75
- <filename>LICENSE.md</filename>
76
- <filetype>md</filetype>
77
- <usage_type>license</usage_type>
78
- <checksum>E0468DD6</checksum>
79
- </file>
80
- <file>
81
- <version>
82
- <software_program>OpenStudio</software_program>
83
- <identifier>2.0.0</identifier>
84
- <min_compatible>2.0.0</min_compatible>
85
- </version>
86
- <filename>measure.rb</filename>
87
- <filetype>rb</filetype>
88
- <usage_type>script</usage_type>
89
- <checksum>478DC9B7</checksum>
90
- </file>
91
- <file>
92
- <filename>IncreaseInsulationRValueForExteriorWalls_Test.rb</filename>
93
- <filetype>rb</filetype>
94
- <usage_type>test</usage_type>
95
- <checksum>01E73CC1</checksum>
96
- </file>
97
- </files>
98
- </measure>
@@ -1,27 +0,0 @@
1
- OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
2
-
3
- Redistribution and use in source and binary forms, with or without modification, are permitted
4
- provided that the following conditions are met:
5
-
6
- (1) Redistributions of source code must retain the above copyright notice, this list of conditions
7
- and the following disclaimer.
8
-
9
- (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
10
- and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
-
12
- (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse
13
- or promote products derived from this software without specific prior written permission from the
14
- respective party.
15
-
16
- (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
- derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
- designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
19
-
20
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT,
23
- OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25
- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,64 +0,0 @@
1
-
2
-
3
- ###### (Automatically generated documentation)
4
-
5
- # Increase R-value of Insulation for Roofs to a Specific Value
6
-
7
- ## Description
8
-
9
-
10
- ## Modeler Description
11
-
12
-
13
- ## Measure Type
14
- ModelMeasure
15
-
16
- ## Taxonomy
17
-
18
-
19
- ## Arguments
20
-
21
-
22
- ### Insulation R-value (ft^2*h*R/Btu).
23
-
24
- **Name:** r_value,
25
- **Type:** Double,
26
- **Units:** ,
27
- **Required:** true,
28
- **Model Dependent:** false
29
-
30
- ### Allow both increase and decrease in R-value to reach requested target?
31
-
32
- **Name:** allow_reduction,
33
- **Type:** Boolean,
34
- **Units:** ,
35
- **Required:** true,
36
- **Model Dependent:** false
37
-
38
- ### Increase in Material and Installation Costs for Construction per Area Used ($/ft^2).
39
-
40
- **Name:** material_cost_increase_ip,
41
- **Type:** Double,
42
- **Units:** ,
43
- **Required:** true,
44
- **Model Dependent:** false
45
-
46
- ### One Time Retrofit Cost to Add Insulation to Construction ($/ft^2).
47
-
48
- **Name:** one_time_retrofit_cost_ip,
49
- **Type:** Double,
50
- **Units:** ,
51
- **Required:** true,
52
- **Model Dependent:** false
53
-
54
- ### Year to Incur One Time Retrofit Cost (whole years).
55
-
56
- **Name:** years_until_retrofit_cost,
57
- **Type:** Integer,
58
- **Units:** ,
59
- **Required:** true,
60
- **Model Dependent:** false
61
-
62
-
63
-
64
-
@@ -1,42 +0,0 @@
1
- <%#= README.md.erb is used to auto-generate README.md. %>
2
- <%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
3
- ###### (Automatically generated documentation)
4
-
5
- # <%= name %>
6
-
7
- ## Description
8
- <%= description %>
9
-
10
- ## Modeler Description
11
- <%= modelerDescription %>
12
-
13
- ## Measure Type
14
- <%= measureType %>
15
-
16
- ## Taxonomy
17
- <%= taxonomy %>
18
-
19
- ## Arguments
20
-
21
- <% arguments.each do |argument| %>
22
- ### <%= argument[:display_name] %>
23
- <%= argument[:description] %>
24
- **Name:** <%= argument[:name] %>,
25
- **Type:** <%= argument[:type] %>,
26
- **Units:** <%= argument[:units] %>,
27
- **Required:** <%= argument[:required] %>,
28
- **Model Dependent:** <%= argument[:model_dependent] %>
29
- <% end %>
30
-
31
- <% if arguments.size == 0 %>
32
- <%= "This measure does not have any user arguments" %>
33
- <% end %>
34
-
35
- <% if outputs.size > 0 %>
36
- ## Outputs
37
- <% output_names = [] %>
38
- <% outputs.each do |output| %>
39
- <% output_names << output[:display_name] %>
40
- <% end %>
41
- <%= output_names.join(", ") %>
42
- <% end %>
@@ -1,422 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
24
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
27
- # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
28
- # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
30
- # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32
- # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- # start the measure
37
- class IncreaseInsulationRValueForRoofs < OpenStudio::Measure::ModelMeasure
38
- # define the name that a user will see
39
- def name
40
- return 'Increase R-value of Insulation for Roofs to a Specific Value'
41
- end
42
-
43
- # define the arguments that the user will input
44
- def arguments(model)
45
- args = OpenStudio::Measure::OSArgumentVector.new
46
-
47
- # make an argument insulation R-value
48
- r_value = OpenStudio::Measure::OSArgument.makeDoubleArgument('r_value', true)
49
- r_value.setDisplayName('Insulation R-value (ft^2*h*R/Btu).')
50
- r_value.setDefaultValue(30.0)
51
- args << r_value
52
-
53
- # make bool argument to allow both increase and decrease in R value
54
- allow_reduction = OpenStudio::Measure::OSArgument.makeBoolArgument('allow_reduction', true)
55
- allow_reduction.setDisplayName('Allow both increase and decrease in R-value to reach requested target?')
56
- allow_reduction.setDefaultValue(false)
57
- args << allow_reduction
58
-
59
- # make an argument for material and installation cost
60
- material_cost_increase_ip = OpenStudio::Measure::OSArgument.makeDoubleArgument('material_cost_increase_ip', true)
61
- material_cost_increase_ip.setDisplayName('Increase in Material and Installation Costs for Construction per Area Used ($/ft^2).')
62
- material_cost_increase_ip.setDefaultValue(0.0)
63
- args << material_cost_increase_ip
64
-
65
- # make an argument for demolition cost
66
- one_time_retrofit_cost_ip = OpenStudio::Measure::OSArgument.makeDoubleArgument('one_time_retrofit_cost_ip', true)
67
- one_time_retrofit_cost_ip.setDisplayName('One Time Retrofit Cost to Add Insulation to Construction ($/ft^2).')
68
- one_time_retrofit_cost_ip.setDefaultValue(0.0)
69
- args << one_time_retrofit_cost_ip
70
-
71
- # make an argument for duration in years until costs start
72
- years_until_retrofit_cost = OpenStudio::Measure::OSArgument.makeIntegerArgument('years_until_retrofit_cost', true)
73
- years_until_retrofit_cost.setDisplayName('Year to Incur One Time Retrofit Cost (whole years).')
74
- years_until_retrofit_cost.setDefaultValue(0)
75
- args << years_until_retrofit_cost
76
-
77
- return args
78
- end
79
-
80
- # define what happens when the measure is run
81
- def run(model, runner, user_arguments)
82
- super(model, runner, user_arguments)
83
-
84
- # use the built-in error checking
85
- if !runner.validateUserArguments(arguments(model), user_arguments)
86
- return false
87
- end
88
-
89
- # assign the user inputs to variables
90
- r_value = runner.getDoubleArgumentValue('r_value', user_arguments)
91
- allow_reduction = runner.getBoolArgumentValue('allow_reduction', user_arguments)
92
- material_cost_increase_ip = runner.getDoubleArgumentValue('material_cost_increase_ip', user_arguments)
93
- one_time_retrofit_cost_ip = runner.getDoubleArgumentValue('one_time_retrofit_cost_ip', user_arguments)
94
- years_until_retrofit_cost = runner.getIntegerArgumentValue('years_until_retrofit_cost', user_arguments)
95
-
96
- # set limit for minimum insulation. This is used to limit input and for inferring insulation layer in construction.
97
- min_expected_r_value_ip = 1 # ip units
98
-
99
- # check the R-value for reasonableness
100
- if (r_value < 0) || (r_value > 500)
101
- runner.registerError("The requested roof insulation R-value of #{r_value} ft^2*h*R/Btu was above the measure limit.")
102
- return false
103
- elsif r_value > 60
104
- runner.registerWarning("The requested roof insulation R-value of #{r_value} ft^2*h*R/Btu is abnormally high.")
105
- elsif r_value < min_expected_r_value_ip
106
- runner.registerWarning("The requested roof insulation R-value of #{r_value} ft^2*h*R/Btu is abnormally low.")
107
- end
108
-
109
- # check lifecycle arguments for reasonableness
110
- if (years_until_retrofit_cost < 0) && (years_until_retrofit_cost > 100)
111
- runner.registerError('Year to incur one time retrofit cost should be a non-negative integer less than or equal to 100.')
112
- end
113
-
114
- # short def to make numbers pretty (converts 4125001.25641 to 4,125,001.26 or 4,125,001). The definition be called through this measure
115
- def neat_numbers(number, roundto = 2) # round to 0 or 2)
116
- if roundto == 2
117
- number = format '%.2f', number
118
- else
119
- number = number.round
120
- end
121
- # regex to add commas
122
- number.to_s.reverse.gsub(/([0-9]{3}(?=([0-9])))/, '\\1,').reverse
123
- end
124
-
125
- # helper to make it easier to do unit conversions on the fly
126
- def unit_helper(number, from_unit_string, to_unit_string)
127
- converted_number = OpenStudio.convert(OpenStudio::Quantity.new(number, OpenStudio.createUnit(from_unit_string).get), OpenStudio.createUnit(to_unit_string).get).get.value
128
- end
129
-
130
- # convert r_value and material_cost to si for future use
131
- r_value_si = unit_helper(r_value, 'ft^2*h*R/Btu', 'm^2*K/W')
132
- material_cost_increase_si = unit_helper(material_cost_increase_ip, '1/ft^2', '1/m^2')
133
-
134
- # create an array of roofs and find range of starting construction R-value (not just insulation layer)
135
- surfaces = model.getSurfaces
136
- exterior_surfaces = []
137
- exterior_surface_constructions = []
138
- exterior_surface_construction_names = []
139
- roof_resistance = []
140
- surfaces.each do |surface|
141
- if (surface.outsideBoundaryCondition == 'Outdoors') && (surface.surfaceType == 'RoofCeiling')
142
- exterior_surfaces << surface
143
- roof_const = surface.construction.get
144
- # only add construction if it hasn't been added yet
145
- if !exterior_surface_construction_names.include?(roof_const.name.to_s)
146
- exterior_surface_constructions << roof_const.to_Construction.get
147
- end
148
- exterior_surface_construction_names << roof_const.name.to_s
149
- roof_resistance << 1 / roof_const.thermalConductance.to_f
150
- end
151
- end
152
-
153
- # nothing will be done if there are no exterior surfaces
154
- if exterior_surfaces.empty?
155
- runner.registerAsNotApplicable('Model does not have any roofs.')
156
- return true
157
- end
158
-
159
- # report strings for initial condition
160
- initial_string = []
161
- exterior_surface_constructions.uniq.each do |exterior_surface_construction|
162
- # unit conversion of roof insulation from SI units (M^2*K/W) to IP units (ft^2*h*R/Btu)
163
- initial_conductance_ip = unit_helper(1 / exterior_surface_construction.thermalConductance.to_f, 'm^2*K/W', 'ft^2*h*R/Btu')
164
- initial_string << "#{exterior_surface_construction.name} (R-#{(format '%.1f', initial_conductance_ip)})"
165
- end
166
- runner.registerInitialCondition("The building had #{initial_string.size} roof constructions: #{initial_string.sort.join(', ')}.")
167
-
168
- # hashes to track constructions and materials made by the measure, to avoid duplicates
169
- constructions_hash_old_new = {}
170
- constructions_hash_new_old = {} # used to get netArea of new construction and then cost objects of construction it replaced
171
- materials_hash = {}
172
-
173
- # array and counter for new constructions that are made, used for reporting final condition
174
- final_constructions_array = []
175
-
176
- # loop through all constructions and materials used on roofs, edit and clone
177
- exterior_surface_constructions.each do |exterior_surface_construction|
178
- construction_layers = exterior_surface_construction.layers
179
- max_thermal_resistance_material = ''
180
- max_thermal_resistance_material_index = ''
181
- materials_in_construction = construction_layers.map.with_index do |layer, i|
182
- { 'name' => layer.name.to_s,
183
- 'index' => i,
184
- 'nomass' => !layer.to_MasslessOpaqueMaterial.empty?,
185
- 'r_value' => layer.to_OpaqueMaterial.get.thermalResistance,
186
- 'mat' => layer }
187
- end
188
-
189
- no_mass_materials = materials_in_construction.select { |mat| mat['nomass'] == true }
190
- # measure will select the no mass material with the highest r-value as the insulation layer
191
- # if no mass materials are present, the measure will select the material with the highest r-value per inch
192
- if !no_mass_materials.empty?
193
- thermal_resistance_values = no_mass_materials.map { |mat| mat['r_value'] }
194
- max_mat_hash = no_mass_materials.select { |mat| mat['r_value'] >= thermal_resistance_values.max }
195
- else
196
- thermal_resistance_per_thickness_values = materials_in_construction.map { |mat| mat['r_value'] / mat['mat'].thickness }
197
- target_index = thermal_resistance_per_thickness_values.index(thermal_resistance_per_thickness_values.max)
198
- max_mat_hash = materials_in_construction.select { |mat| mat['index'] == target_index }
199
- thermal_resistance_values = materials_in_construction.map { |mat| mat['r_value'] }
200
- end
201
- max_thermal_resistance_material = max_mat_hash[0]['mat']
202
- max_thermal_resistance_material_index = max_mat_hash[0]['index']
203
- max_thermal_resistance = max_thermal_resistance_material.to_OpaqueMaterial.get.thermalResistance
204
-
205
- if max_thermal_resistance <= unit_helper(min_expected_r_value_ip, 'ft^2*h*R/Btu', 'm^2*K/W')
206
- runner.registerWarning("Construction '#{exterior_surface_construction.name}' does not appear to have an insulation layer and was not altered.")
207
- elsif (max_thermal_resistance >= r_value_si) && !allow_reduction
208
- runner.registerInfo("The insulation layer of construction #{exterior_surface_construction.name} exceeds the requested R-Value. It was not altered.")
209
- else
210
- # clone the construction
211
- final_construction = exterior_surface_construction.clone(model)
212
- final_construction = final_construction.to_Construction.get
213
- final_construction.setName("#{exterior_surface_construction.name} adj roof insulation")
214
- final_constructions_array << final_construction
215
-
216
- # loop through lifecycle costs getting total costs under "Construction" or "Salvage" category and add to counter if occurs during year 0
217
- const_LCCs = final_construction.lifeCycleCosts
218
- cost_added = false
219
- const_LCC_cat_const = false
220
- updated_cost_si = 0
221
- const_LCCs.each do |const_LCC|
222
- if (const_LCC.category == 'Construction') && (material_cost_increase_si != 0)
223
- const_LCC_cat_const = true # need this test to add proper lcc if it didn't exist to start with
224
- # if multiple LCC objects associated with construction only adjust the cost of one of them.
225
- if !cost_added
226
- const_LCC.setCost(const_LCC.cost + material_cost_increase_si)
227
- else
228
- runner.registerInfo("More than one LifeCycleCost object with a category of Construction was associated with #{final_construction.name}. Cost was only adjusted for one of the LifeCycleCost objects.")
229
- end
230
- updated_cost_si += const_LCC.cost
231
- end
232
- end
233
-
234
- if cost_added
235
- runner.registerInfo("Adjusting material and installation cost for #{final_construction.name} to #{neat_numbers(unit_helper(updated_cost_si, '1/m^2', '1/ft^2'))} ($/ft^2).")
236
- end
237
-
238
- # add construction object if it didnt exist to start with and a cost increase was requested
239
- if (const_LCC_cat_const == false) && (material_cost_increase_si != 0)
240
- lcc_for_uncosted_const = OpenStudio::Model::LifeCycleCost.createLifeCycleCost('LCC_increase_insulation', final_construction, material_cost_increase_si, 'CostPerArea', 'Construction', 20, 0).get
241
- runner.registerInfo("No material or installation costs existed for #{final_construction.name}. Created a new LifeCycleCost object with a material and installation cost of #{neat_numbers(unit_helper(lcc_for_uncosted_const.cost, '1/m^2', '1/ft^2'))} ($/ft^2). Assumed capitol cost in first year, an expected life of 20 years, and no O & M costs.")
242
- end
243
-
244
- # add one time cost if requested
245
- if one_time_retrofit_cost_ip > 0
246
- one_time_retrofit_cost_si = unit_helper(one_time_retrofit_cost_ip, '1/ft^2', '1/m^2')
247
- lcc_retrofit_specific = OpenStudio::Model::LifeCycleCost.createLifeCycleCost('LCC_retrofit_specific', final_construction, one_time_retrofit_cost_si, 'CostPerArea', 'Construction', 0, years_until_retrofit_cost).get # using 0 for repeat period since one time cost.
248
- runner.registerInfo("Adding one time cost of #{neat_numbers(unit_helper(lcc_retrofit_specific.cost, '1/m^2', '1/ft^2'))} ($/ft^2) related to retrofit of roof insulation.")
249
- end
250
-
251
- # push to hashes
252
- constructions_hash_old_new[exterior_surface_construction.name.to_s] = final_construction
253
- constructions_hash_new_old[final_construction] = exterior_surface_construction # push the object to hash key vs. name
254
-
255
- # find already cloned insulation material and link to construction
256
- target_material = max_thermal_resistance_material
257
- found_material = false
258
- materials_hash.each do |orig, new|
259
- if target_material.name.to_s == orig
260
- new_material = new
261
- materials_hash[max_thermal_resistance_material.name.to_s] = new_material
262
- final_construction.eraseLayer(max_thermal_resistance_material_index)
263
- final_construction.insertLayer(max_thermal_resistance_material_index, new_material)
264
- found_material = true
265
- end
266
- end
267
-
268
- # clone and edit insulation material and link to construction
269
- if found_material == false
270
- new_material = max_thermal_resistance_material.clone(model)
271
- new_material = new_material.to_OpaqueMaterial.get
272
- new_material.setName("#{max_thermal_resistance_material.name}_R-value #{r_value} (ft^2*h*R/Btu)")
273
- materials_hash[max_thermal_resistance_material.name.to_s] = new_material
274
- final_construction.eraseLayer(max_thermal_resistance_material_index)
275
- final_construction.insertLayer(max_thermal_resistance_material_index, new_material)
276
- runner.registerInfo("For construction'#{final_construction.name}', material'#{new_material.name}' was altered.")
277
-
278
- # edit insulation material
279
- new_material_matt = new_material.to_Material
280
- if !new_material_matt.empty?
281
- starting_thickness = new_material_matt.get.thickness
282
- target_thickness = starting_thickness * r_value_si / thermal_resistance_values.max
283
- final_thickness = new_material_matt.get.setThickness(target_thickness)
284
- end
285
- new_material_massless = new_material.to_MasslessOpaqueMaterial
286
- if !new_material_massless.empty?
287
- final_thermal_resistance = new_material_massless.get.setThermalResistance(r_value_si)
288
- end
289
- new_material_airgap = new_material.to_AirGap
290
- if !new_material_airgap.empty?
291
- final_thermal_resistance = new_material_airgap.get.setThermalResistance(r_value_si)
292
- end
293
- end
294
- end
295
- end
296
-
297
- # loop through construction sets used in the model
298
- default_construction_sets = model.getDefaultConstructionSets
299
- default_construction_sets.each do |default_construction_set|
300
- if default_construction_set.directUseCount > 0
301
- default_surface_const_set = default_construction_set.defaultExteriorSurfaceConstructions
302
- if !default_surface_const_set.empty?
303
- starting_construction = default_surface_const_set.get.roofCeilingConstruction
304
-
305
- # creating new default construction set
306
- new_default_construction_set = default_construction_set.clone(model)
307
- new_default_construction_set = new_default_construction_set.to_DefaultConstructionSet.get
308
- new_default_construction_set.setName("#{default_construction_set.name} adj roof insulation")
309
-
310
- # create new surface set and link to construction set
311
- new_default_surface_const_set = default_surface_const_set.get.clone(model)
312
- new_default_surface_const_set = new_default_surface_const_set.to_DefaultSurfaceConstructions.get
313
- new_default_surface_const_set.setName("#{default_surface_const_set.get.name} adj roof insulation")
314
- new_default_construction_set.setDefaultExteriorSurfaceConstructions(new_default_surface_const_set)
315
-
316
- # use the hash to find the proper construction and link to new_default_surface_const_set
317
- target_const = new_default_surface_const_set.roofCeilingConstruction
318
- if !target_const.empty?
319
- target_const = target_const.get.name.to_s
320
- found_const_flag = false
321
- constructions_hash_old_new.each do |orig, new|
322
- if target_const == orig
323
- final_construction = new
324
- new_default_surface_const_set.setRoofCeilingConstruction(final_construction)
325
- found_const_flag = true
326
- end
327
- end
328
- if found_const_flag == false # this should never happen but is just an extra test in case something goes wrong with the measure code
329
- runner.registerWarning("Measure couldn't find the construction named '#{target_const}' in the exterior surface hash.")
330
- end
331
- end
332
-
333
- # swap all uses of the old construction set for the new
334
- construction_set_sources = default_construction_set.sources
335
- construction_set_sources.each do |construction_set_source|
336
- building_source = construction_set_source.to_Building
337
- # if statement for each type of object than can use a DefaultConstructionSet
338
- if !building_source.empty?
339
- building_source = building_source.get
340
- building_source.setDefaultConstructionSet(new_default_construction_set)
341
- end
342
- building_story_source = construction_set_source.to_BuildingStory
343
- if !building_story_source.empty?
344
- building_story_source = building_story_source.get
345
- building_story_source.setDefaultConstructionSet(new_default_construction_set)
346
- end
347
- space_type_source = construction_set_source.to_SpaceType
348
- if !space_type_source.empty?
349
- space_type_source = space_type_source.get
350
- space_type_source.setDefaultConstructionSet(new_default_construction_set)
351
- end
352
- space_source = construction_set_source.to_Space
353
- if !space_source.empty?
354
- space_source = space_source.get
355
- space_source.setDefaultConstructionSet(new_default_construction_set)
356
- end
357
- end
358
-
359
- end
360
- end
361
- end
362
-
363
- # link cloned and edited constructions for surfaces with hard assigned constructions
364
- exterior_surfaces.each do |exterior_surface|
365
- if !exterior_surface.isConstructionDefaulted && !exterior_surface.construction.empty?
366
-
367
- # use the hash to find the proper construction and link to surface
368
- target_const = exterior_surface.construction
369
- if !target_const.empty?
370
- target_const = target_const.get.name.to_s
371
- constructions_hash_old_new.each do |orig, new|
372
- if target_const == orig
373
- final_construction = new
374
- exterior_surface.setConstruction(final_construction)
375
- end
376
- end
377
- end
378
-
379
- end
380
- end
381
-
382
- # report strings for final condition
383
- final_string = [] # not all exterior roof constructions, but only new ones made. If roof didn't have insulation and was not altered we don't want to show it
384
- affected_area_si = 0
385
- totalCost_of_affected_area = 0
386
- yr0_capital_totalCosts = 0
387
- final_constructions_array.each do |final_construction|
388
- # unit conversion of roof insulation from SI units (M^2*K/W) to IP units (ft^2*h*R/Btu)
389
- final_conductance_ip = unit_helper(1 / final_construction.thermalConductance.to_f, 'm^2*K/W', 'ft^2*h*R/Btu')
390
- final_string << "#{final_construction.name} (R-#{(format '%.1f', final_conductance_ip)})"
391
- affected_area_si += final_construction.getNetArea
392
-
393
- # loop through lifecycle costs getting total costs under "Construction" or "Salvage" category and add to counter if occurs during year 0
394
- const_LCCs = final_construction.lifeCycleCosts
395
- const_LCCs.each do |const_LCC|
396
- if (const_LCC.category == 'Construction') || (const_LCC.category == 'Salvage')
397
- if const_LCC.yearsFromStart == 0
398
- yr0_capital_totalCosts += const_LCC.totalCost
399
- end
400
- end
401
- end
402
- end
403
-
404
- # add not applicable test if there were exterior roof constructions but non of them were altered (already enough insulation or doesn't look like insulated wall)
405
- if affected_area_si == 0
406
- runner.registerAsNotApplicable('No roofs were altered.')
407
- return true
408
- # affected_area_ip = affected_area_si
409
- else
410
- # ip construction area for reporting
411
- affected_area_ip = unit_helper(affected_area_si, 'm^2', 'ft^2')
412
- end
413
-
414
- # report final condition
415
- runner.registerFinalCondition("The existing insulation for roofs was changed to R-#{r_value}. This was accomplished for an initial cost of #{one_time_retrofit_cost_ip} ($/sf) and an increase of #{material_cost_increase_ip} ($/sf) for construction. This was applied to #{neat_numbers(affected_area_ip, 0)} (ft^2) across #{final_string.size} roof constructions: #{final_string.sort.join(', ')}.")
416
-
417
- return true
418
- end
419
- end
420
-
421
- # this allows the measure to be used by the application
422
- IncreaseInsulationRValueForRoofs.new.registerWithApplication