urbanopt-cli 0.5.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (829) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +2 -2
  4. data/CHANGELOG.md +40 -0
  5. data/CMakeLists.txt +13 -13
  6. data/FindOpenStudioSDK.cmake +11 -6
  7. data/Gemfile +12 -6
  8. data/example_files/Gemfile +11 -8
  9. data/example_files/base_workflow_res.osw +10 -0
  10. data/example_files/example_project_combined.json +13 -3
  11. data/example_files/example_project_with_PV.json +751 -0
  12. data/example_files/example_project_with_streets.json +826 -0
  13. data/example_files/mappers/Baseline.rb +106 -50
  14. data/example_files/mappers/CreateBar.rb +31 -1
  15. data/example_files/mappers/FlexibleHotWater.rb +69 -0
  16. data/example_files/mappers/Floorspace.rb +31 -1
  17. data/example_files/mappers/HighEfficiency.rb +20 -8
  18. data/example_files/mappers/HighEfficiencyCreateBar.rb +3 -2
  19. data/example_files/mappers/HighEfficiencyFloorspace.rb +3 -2
  20. data/example_files/mappers/base_workflow.osw +5 -0
  21. data/example_files/mappers/createbar_workflow.osw +3 -1
  22. data/example_files/mappers/floorspace_workflow.osw +2 -1
  23. data/example_files/measures/BuildResidentialModel/measure.rb +70 -37
  24. data/example_files/osm_building/7.osm +0 -307
  25. data/example_files/osm_building/8.osm +0 -419
  26. data/example_files/osm_building/9.osm +0 -664
  27. data/example_files/reopt/base_assumptions.json +4 -4
  28. data/example_files/reopt/multiPV_assumptions.json +6 -5
  29. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
  30. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +96 -3
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +138 -73
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +509 -487
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +11 -11
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +33 -32
  35. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
  36. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
  37. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +5 -5
  38. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +5 -5
  39. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +5 -5
  40. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +5 -5
  41. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +5 -5
  42. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +5 -5
  43. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +5 -5
  44. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +5 -5
  45. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +5 -5
  46. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +5 -5
  47. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +5 -5
  48. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +5 -5
  49. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +5 -5
  50. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +5 -5
  51. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
  52. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
  53. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +8 -8
  54. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +8 -8
  55. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +8 -8
  56. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +8 -8
  57. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +8 -8
  58. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +5 -5
  59. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +5 -5
  60. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +5 -5
  61. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +5 -5
  62. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +5 -5
  63. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +5 -5
  64. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +5 -5
  65. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +5 -5
  66. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +5 -5
  67. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +5 -5
  68. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +5 -5
  69. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +5 -5
  70. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +5 -5
  71. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +5 -5
  72. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +5 -5
  73. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +5 -5
  74. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +5 -5
  75. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +5 -5
  76. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +5 -5
  77. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +5 -5
  78. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +5 -5
  79. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +5 -5
  80. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +5 -5
  81. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +5 -5
  82. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +5 -5
  83. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +5 -5
  84. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +5 -5
  85. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +5 -5
  86. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +5 -5
  87. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +5 -5
  88. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +5 -5
  89. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +5 -5
  90. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +5 -5
  91. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +5 -5
  92. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +5 -5
  93. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +5 -5
  94. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +5 -5
  95. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +5 -5
  96. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +5 -5
  97. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +5 -5
  98. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +5 -5
  99. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +5 -5
  100. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +5 -5
  101. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +5 -5
  102. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +5 -5
  103. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +5 -5
  104. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +5 -5
  105. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +5 -5
  106. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +5 -5
  107. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +5 -5
  108. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +5 -5
  109. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +5 -5
  110. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +5 -5
  111. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +5 -5
  112. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +5 -5
  113. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +5 -5
  114. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +6 -6
  115. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +5 -5
  116. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +5 -5
  117. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +5 -5
  118. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +5 -5
  119. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +5 -5
  120. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +5 -5
  121. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +5 -5
  122. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +5 -5
  123. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +5 -5
  124. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +5 -5
  125. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +4 -4
  126. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +5 -5
  127. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +6 -6
  128. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +6 -6
  129. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +6 -6
  130. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +5 -5
  131. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +5 -5
  132. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +5 -5
  133. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +5 -5
  134. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +5 -5
  135. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +5 -5
  136. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +5 -5
  137. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +5 -5
  138. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +5 -5
  139. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +5 -5
  140. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +6 -6
  141. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +5 -5
  142. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +5 -5
  143. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +5 -5
  144. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +5 -5
  145. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +5 -5
  146. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +5 -5
  147. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +5 -5
  148. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +5 -5
  149. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +5 -5
  150. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +5 -5
  151. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +5 -5
  152. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +6 -6
  153. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +5 -5
  154. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +5 -5
  155. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +5 -5
  156. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +5 -5
  157. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +5 -5
  158. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +5 -5
  159. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +5 -5
  160. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +5 -5
  161. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +5 -5
  162. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +5 -5
  163. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +5 -5
  164. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +4 -4
  165. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +4 -4
  166. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +5 -5
  167. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw +5 -5
  168. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +6 -6
  169. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +6 -6
  170. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +6 -6
  171. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +5 -5
  172. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +5 -5
  173. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +5 -5
  174. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +5 -5
  175. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +5 -5
  176. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +5 -5
  177. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +6 -6
  178. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +5 -5
  179. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +5 -5
  180. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +5 -5
  181. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +5 -5
  182. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +4 -4
  183. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +5 -5
  184. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +6 -6
  185. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +6 -6
  186. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +5 -5
  187. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +6 -6
  188. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +8 -8
  189. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +5 -5
  190. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +5 -5
  191. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +5 -5
  192. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +5 -5
  193. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +5 -5
  194. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +5 -5
  195. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +5 -5
  196. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +5 -5
  197. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +5 -5
  198. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +5 -5
  199. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +5 -5
  200. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +5 -5
  201. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +5 -5
  202. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +5 -5
  203. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +5 -5
  204. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +5 -5
  205. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +5 -5
  206. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +5 -5
  207. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +5 -5
  208. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +5 -5
  209. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +5 -5
  210. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +5 -5
  211. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +5 -5
  212. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +5 -5
  213. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +5 -5
  214. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +5 -5
  215. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +5 -5
  216. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +5 -5
  217. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +5 -5
  218. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +5 -5
  219. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +5 -5
  220. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +5 -5
  221. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +5 -5
  222. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +5 -5
  223. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +5 -5
  224. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +5 -5
  225. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +5 -5
  226. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic-vacant.osw +5 -5
  227. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +5 -5
  228. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +5 -5
  229. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +5 -5
  230. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +5 -5
  231. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +5 -5
  232. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +5 -5
  233. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +5 -5
  234. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +5 -5
  235. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +4 -2
  236. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +5 -5
  237. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +8 -8
  238. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +8 -8
  239. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +8 -8
  240. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +8 -8
  241. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +8 -8
  242. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +8 -8
  243. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +8 -8
  244. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +8 -8
  245. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +8 -8
  246. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +8 -8
  247. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +8 -8
  248. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +8 -8
  249. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +8 -8
  250. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +8 -8
  251. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +8 -8
  252. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +8 -8
  253. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +8 -8
  254. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +8 -8
  255. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +8 -8
  256. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +8 -8
  257. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +8 -8
  258. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +8 -8
  259. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +8 -8
  260. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +8 -8
  261. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +8 -8
  262. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +8 -8
  263. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +8 -8
  264. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +8 -8
  265. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +8 -8
  266. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +8 -8
  267. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +8 -8
  268. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +8 -8
  269. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +8 -8
  270. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +8 -8
  271. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +8 -8
  272. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +8 -8
  273. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +8 -8
  274. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +8 -8
  275. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +8 -8
  276. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +8 -8
  277. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +8 -8
  278. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +8 -8
  279. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +8 -8
  280. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +8 -8
  281. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +8 -8
  282. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +8 -8
  283. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +8 -8
  284. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +8 -8
  285. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +8 -8
  286. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +8 -8
  287. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +8 -8
  288. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +8 -8
  289. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +8 -8
  290. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +8 -8
  291. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +8 -8
  292. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +8 -8
  293. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +8 -8
  294. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +8 -8
  295. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +8 -8
  296. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +8 -8
  297. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +8 -8
  298. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +8 -8
  299. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +8 -8
  300. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +8 -8
  301. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +5 -5
  302. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +5 -5
  303. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +339 -0
  304. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +5 -5
  305. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +5 -5
  306. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +5 -5
  307. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +5 -5
  308. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +5 -5
  309. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +5 -5
  310. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +5 -5
  311. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +5 -5
  312. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +5 -5
  313. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +5 -5
  314. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +5 -5
  315. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +5 -5
  316. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +5 -5
  317. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +5 -5
  318. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +5 -5
  319. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +5 -5
  320. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +5 -5
  321. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +5 -5
  322. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +5 -5
  323. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +5 -5
  324. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +5 -5
  325. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
  326. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
  327. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +5 -5
  328. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +5 -5
  329. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +5 -5
  330. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +5 -5
  331. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +5 -5
  332. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heating-system.osw +4 -4
  333. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +5 -5
  334. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heating-system.osw +4 -4
  335. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +5 -5
  336. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +5 -5
  337. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +5 -5
  338. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +5 -5
  339. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +5 -5
  340. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +5 -5
  341. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +5 -5
  342. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +5 -5
  343. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +5 -5
  344. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +5 -5
  345. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +5 -5
  346. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +5 -5
  347. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +5 -5
  348. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +5 -5
  349. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +8 -8
  350. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +8 -8
  351. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +7 -7
  352. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +5 -5
  353. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +5 -5
  354. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-tv-plug-loads.osw +5 -5
  355. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +5 -5
  356. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +5 -5
  357. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +5 -5
  358. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +5 -5
  359. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +5 -5
  360. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +5 -5
  361. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +5 -5
  362. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +5 -5
  363. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +5 -5
  364. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +5 -5
  365. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +5 -5
  366. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +5 -5
  367. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → invalid_files/single-family-detached-with-shared-system.osw} +22 -22
  368. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +5 -5
  369. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +5 -5
  370. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +5 -5
  371. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +5 -5
  372. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +5 -5
  373. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +5 -5
  374. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +5 -5
  375. data/example_files/resources/hpxml-measures/Changelog.md +14 -3
  376. data/example_files/resources/hpxml-measures/Gemfile +1 -4
  377. data/example_files/resources/hpxml-measures/Gemfile.lock +6 -25
  378. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +136 -528
  379. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +131 -106
  380. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +2 -0
  381. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +31 -14
  382. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +19 -0
  383. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +5 -1
  384. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +4 -0
  385. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +62 -0
  386. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  387. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +2 -1
  388. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +388 -4
  389. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +54 -14
  390. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +40 -4
  391. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +110 -89
  392. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +2 -4
  393. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +21 -10
  394. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
  395. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +12 -11
  396. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +2 -1
  397. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +28 -1
  398. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +20 -9
  399. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +1 -1
  400. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +1 -0
  401. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -0
  402. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +2 -28
  403. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +16 -7
  404. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/{test_constructions.rb → test_enclosure.rb} +12 -16
  405. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +0 -1
  406. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +0 -1
  407. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +13 -38
  408. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +0 -1
  409. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +0 -1
  410. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +0 -1
  411. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +0 -1
  412. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +0 -1
  413. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +0 -1
  414. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +1 -2
  415. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +0 -1
  416. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
  417. data/example_files/resources/hpxml-measures/README.md +0 -1
  418. data/example_files/resources/hpxml-measures/Rakefile +1 -2
  419. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +32 -13
  420. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +37 -9
  421. data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +24 -7
  422. data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +1 -1
  423. data/example_files/resources/hpxml-measures/docs/source/intro.rst +1 -0
  424. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +75 -58
  425. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +5 -1
  426. data/example_files/resources/hpxml-measures/tasks.rb +248 -263
  427. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
  428. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +17 -4
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +3 -2
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +3 -2
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +3 -2
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +3 -2
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +3 -2
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +3 -2
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +3 -2
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +3 -2
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +3 -2
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +3 -2
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +3 -2
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +3 -2
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +3 -2
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +3 -2
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +3 -2
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +3 -2
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +3 -2
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +3 -2
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +3 -2
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +3 -2
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +3 -2
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +3 -2
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +0 -18
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +1 -0
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +1 -0
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +0 -18
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +0 -18
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +1 -0
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +0 -18
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +1 -0
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +1 -0
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +3 -2
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +4 -3
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +3 -2
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +6 -4
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +3 -2
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +3 -2
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +3 -2
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +3 -2
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +3 -2
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +3 -2
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +3 -2
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +1 -1
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +1 -1
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +2 -1
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +4 -3
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +3 -2
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +2 -1
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +2 -1
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +2 -1
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +3 -2
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +1 -1
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +1 -1
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +1 -1
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +1 -1
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +1 -1
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +3 -2
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +3 -2
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +3 -2
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +1 -1
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +3 -2
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +1 -1
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +3 -2
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +3 -2
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +3 -2
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +3 -2
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +3 -2
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +3 -2
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +3 -2
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +3 -2
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +3 -2
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +3 -2
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +3 -2
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +3 -2
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +3 -2
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +3 -2
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +3 -2
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +3 -2
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +3 -2
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +3 -2
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +3 -2
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +3 -2
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +3 -2
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +3 -2
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +3 -2
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +3 -2
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +3 -2
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +3 -2
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +3 -2
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +3 -2
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +3 -2
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +3 -2
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +3 -2
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +3 -2
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +3 -2
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +3 -2
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +3 -2
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +3 -2
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +3 -2
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +3 -2
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +3 -2
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +3 -2
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +3 -2
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +3 -2
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +3 -2
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +4 -3
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +3 -2
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +3 -2
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +5 -4
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +5 -4
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +3 -2
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +21 -20
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +21 -20
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +3 -2
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +3 -2
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +3 -2
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +3 -2
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +3 -2
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +3 -2
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +3 -2
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +3 -2
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +3 -2
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +3 -2
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +3 -2
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +3 -2
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +3 -2
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +3 -2
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +3 -2
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +3 -2
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +3 -2
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +2 -1
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +4 -3
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +5 -4
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +5 -4
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +5 -4
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +1 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +1 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml +1 -0
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +1 -0
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml +1 -0
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed.xml +1 -0
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml +1 -0
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed.xml +1 -0
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +1 -0
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +1 -0
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +1 -0
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +1 -0
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +1 -0
  577. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml +1 -0
  578. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +1 -0
  579. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +1 -0
  580. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +1 -0
  581. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +1 -0
  582. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +1 -0
  583. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +1 -0
  584. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +1 -0
  585. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +1 -0
  586. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +1 -0
  587. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml +1 -0
  588. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump.xml +1 -0
  589. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +1 -0
  590. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +1 -0
  591. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +1 -0
  592. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml +1 -0
  593. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +1 -0
  594. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +1 -0
  595. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +1 -1
  596. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +1 -1
  597. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +3 -2
  598. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +1 -1
  599. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +1 -1
  600. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +1 -1
  601. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +1 -1
  602. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +2 -1
  603. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +2 -1
  604. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +2 -1
  605. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +6 -5
  606. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +2 -2
  607. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +4 -3
  608. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +4 -3
  609. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +4 -3
  610. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +4 -3
  611. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +4 -3
  612. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +3 -2
  613. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +1 -1
  614. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +3 -2
  615. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +3 -2
  616. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -1
  617. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +1 -1
  618. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +1 -52
  619. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +1 -1
  620. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +2 -1
  621. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +3 -2
  622. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +2 -1
  623. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +3 -2
  624. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +3 -2
  625. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +2 -1
  626. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +3 -2
  627. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +2 -1
  628. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +2 -1
  629. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +2 -1
  630. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +4 -4
  631. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +2 -1
  632. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +3 -2
  633. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +4 -3
  634. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml +3 -2
  635. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml +5 -4
  636. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +5 -4
  637. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +5 -4
  638. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml +3 -2
  639. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +3 -2
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +3 -2
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-only.xml +2 -1
  642. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +4 -3
  643. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml +2 -1
  644. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml +5 -4
  645. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +3 -2
  646. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +3 -2
  647. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +3 -2
  648. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +2 -1
  649. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +1 -1
  650. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +2 -1
  651. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +4 -3
  652. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +5 -4
  653. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +3 -3
  654. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +9 -5
  655. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +1 -52
  656. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +6 -5
  657. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +3 -2
  658. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +1 -1
  659. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +1 -1
  660. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +3 -2
  661. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +1 -1
  662. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +1 -1
  663. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +3 -2
  664. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +3 -2
  665. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +1 -1
  666. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +3 -2
  667. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +3 -2
  668. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +3 -2
  669. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +3 -2
  670. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +3 -2
  671. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +3 -2
  672. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +3 -2
  673. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +3 -2
  674. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +3 -2
  675. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +3 -2
  676. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +3 -2
  677. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +3 -2
  678. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +3 -2
  679. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +3 -2
  680. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +2 -2
  681. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +3 -2
  682. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +3 -2
  683. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +3 -2
  684. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +3 -2
  685. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +3 -2
  686. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +3 -2
  687. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +3 -2
  688. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +3 -2
  689. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +30 -28
  690. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +3 -2
  691. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +3 -2
  692. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +3 -2
  693. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +4 -3
  694. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +3 -2
  695. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +3 -2
  696. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +3 -2
  697. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +3 -2
  698. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +3 -2
  699. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +3 -2
  700. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +9 -6
  701. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +3 -2
  702. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +3 -2
  703. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +3 -2
  704. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +3 -2
  705. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +3 -2
  706. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +3 -2
  707. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +3 -2
  708. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +3 -2
  709. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +3 -2
  710. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +3 -2
  711. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +1 -1
  712. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +1 -1
  713. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +3 -2
  714. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +3 -2
  715. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +3 -2
  716. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +3 -2
  717. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +3 -2
  718. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +1 -1
  719. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +3 -2
  720. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +3 -2
  721. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +3 -2
  722. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +3 -2
  723. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +3 -2
  724. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +3 -2
  725. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +3 -2
  726. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +3 -2
  727. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +3 -2
  728. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +3 -2
  729. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +3 -2
  730. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +4 -3
  731. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +4 -3
  732. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +3 -2
  733. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +3 -2
  734. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +3 -2
  735. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +3 -2
  736. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +3 -2
  737. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +3 -2
  738. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +3 -2
  739. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +3 -2
  740. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +3 -2
  741. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +3 -2
  742. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +3 -2
  743. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +3 -2
  744. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +4 -3
  745. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +2 -1
  746. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +9 -5
  747. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +9 -5
  748. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +3 -2
  749. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +3 -3
  750. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +3 -3
  751. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +9 -5
  752. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +3 -2
  753. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +3 -2
  754. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
  755. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +3 -2
  756. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +3 -2
  757. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +3 -2
  758. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +3 -2
  759. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +3 -2
  760. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +3 -2
  761. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +3 -2
  762. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +3 -2
  763. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +3 -2
  764. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +3 -2
  765. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +5 -4
  766. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +5 -4
  767. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +3 -2
  768. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +3 -2
  769. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +3 -2
  770. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +3 -2
  771. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +3 -2
  772. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +3 -2
  773. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +2 -1
  774. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +1 -1
  775. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +3 -2
  776. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +3 -2
  777. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +3 -2
  778. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +3 -2
  779. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +3 -2
  780. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +3 -2
  781. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +9 -5
  782. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +3 -2
  783. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +3 -2
  784. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +3 -2
  785. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +3 -2
  786. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +3 -2
  787. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +9 -6
  788. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +9 -6
  789. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +4 -3
  790. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +3 -2
  791. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +3 -2
  792. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +2 -1
  793. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +3 -2
  794. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +3 -2
  795. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +3 -2
  796. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +2 -1
  797. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +1 -1
  798. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → invalid_files/solar-fraction-one.xml} +570 -524
  799. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +1 -1
  800. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +2 -1
  801. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +1 -1
  802. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +3 -2
  803. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +3 -2
  804. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +3 -2
  805. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +3 -2
  806. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +3 -2
  807. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +5 -4
  808. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +3 -2
  809. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +3 -2
  810. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +3 -2
  811. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +3 -2
  812. data/example_files/resources/hpxml-measures/workflow/template.osw +1 -0
  813. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +294 -0
  814. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
  815. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
  816. data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
  817. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +108 -38
  818. data/example_files/visualization/input_visualization_feature.html +15 -16
  819. data/example_files/visualization/input_visualization_scenario.html +16 -11
  820. data/lib/uo_cli/version.rb +1 -1
  821. data/lib/uo_cli.rb +158 -26
  822. data/scripts/setup-env-gitbash.sh +4 -4
  823. data/scripts/setup-env-unix.sh +4 -4
  824. data/scripts/setup-env.bat +3 -3
  825. data/scripts/setup-env.ps1 +3 -3
  826. data/uo_cli.gemspec +10 -7
  827. metadata +80 -24
  828. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -74
  829. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -838
@@ -60,6 +60,7 @@ class HVAC
60
60
  if (not cooling_system.nil?) && (not heating_system.nil?) && (cooling_system.fan_watts_per_cfm.to_f != heating_system.fan_watts_per_cfm.to_f)
61
61
  fail "Fan powers for heating system '#{heating_system.id}' and cooling system '#{cooling_system.id}' are attached to a single distribution system and therefore must be the same."
62
62
  end
63
+
63
64
  if (not cooling_system.nil?) && (not cooling_system.fan_watts_per_cfm.nil?)
64
65
  fan_watts_per_cfm = cooling_system.fan_watts_per_cfm
65
66
  else
@@ -413,25 +414,12 @@ class HVAC
413
414
  end
414
415
 
415
416
  # Cooling Coil
416
- clg_coil = OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit.new(model)
417
+ clg_total_cap_curve = create_curve_quad_linear(model, hp_ap.cool_cap_ft_spec[0], obj_name + ' clg total cap curve')
418
+ clg_sens_cap_curve = create_curve_quint_linear(model, hp_ap.cool_sh_ft_spec[0], obj_name + ' clg sens cap curve')
419
+ clg_power_curve = create_curve_quad_linear(model, hp_ap.cool_power_ft_spec[0], obj_name + ' clg power curve')
420
+ clg_coil = OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit.new(model, clg_total_cap_curve, clg_sens_cap_curve, clg_power_curve)
417
421
  clg_coil.setName(obj_name + ' clg coil')
418
422
  clg_coil.setRatedCoolingCoefficientofPerformance(1.0 / hp_ap.cool_rated_eirs[0])
419
- clg_coil.setTotalCoolingCapacityCoefficient1(hp_ap.cool_cap_ft_spec[0][0])
420
- clg_coil.setTotalCoolingCapacityCoefficient2(hp_ap.cool_cap_ft_spec[0][1])
421
- clg_coil.setTotalCoolingCapacityCoefficient3(hp_ap.cool_cap_ft_spec[0][2])
422
- clg_coil.setTotalCoolingCapacityCoefficient4(hp_ap.cool_cap_ft_spec[0][3])
423
- clg_coil.setTotalCoolingCapacityCoefficient5(hp_ap.cool_cap_ft_spec[0][4])
424
- clg_coil.setSensibleCoolingCapacityCoefficient1(hp_ap.cool_sh_ft_spec[0][0])
425
- clg_coil.setSensibleCoolingCapacityCoefficient2(hp_ap.cool_sh_ft_spec[0][1])
426
- clg_coil.setSensibleCoolingCapacityCoefficient3(hp_ap.cool_sh_ft_spec[0][2])
427
- clg_coil.setSensibleCoolingCapacityCoefficient4(hp_ap.cool_sh_ft_spec[0][3])
428
- clg_coil.setSensibleCoolingCapacityCoefficient5(hp_ap.cool_sh_ft_spec[0][4])
429
- clg_coil.setSensibleCoolingCapacityCoefficient6(hp_ap.cool_sh_ft_spec[0][5])
430
- clg_coil.setCoolingPowerConsumptionCoefficient1(hp_ap.cool_power_ft_spec[0][0])
431
- clg_coil.setCoolingPowerConsumptionCoefficient2(hp_ap.cool_power_ft_spec[0][1])
432
- clg_coil.setCoolingPowerConsumptionCoefficient3(hp_ap.cool_power_ft_spec[0][2])
433
- clg_coil.setCoolingPowerConsumptionCoefficient4(hp_ap.cool_power_ft_spec[0][3])
434
- clg_coil.setCoolingPowerConsumptionCoefficient5(hp_ap.cool_power_ft_spec[0][4])
435
423
  clg_coil.setNominalTimeforCondensateRemovaltoBegin(1000)
436
424
  clg_coil.setRatioofInitialMoistureEvaporationRateandSteadyStateLatentCapacity(1.5)
437
425
  clg_coil.setRatedAirFlowRate(UnitConversions.convert(clg_cfm, 'cfm', 'm^3/s'))
@@ -441,19 +429,11 @@ class HVAC
441
429
  hvac_map[heat_pump.id] << clg_coil
442
430
 
443
431
  # Heating Coil
444
- htg_coil = OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit.new(model)
432
+ htg_cap_curve = create_curve_quad_linear(model, hp_ap.heat_cap_ft_spec[0], obj_name + ' htg cap curve')
433
+ htg_power_curve = create_curve_quad_linear(model, hp_ap.heat_power_ft_spec[0], obj_name + ' htg power curve')
434
+ htg_coil = OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit.new(model, htg_cap_curve, htg_power_curve)
445
435
  htg_coil.setName(obj_name + ' htg coil')
446
436
  htg_coil.setRatedHeatingCoefficientofPerformance(1.0 / hp_ap.heat_rated_eirs[0])
447
- htg_coil.setHeatingCapacityCoefficient1(hp_ap.heat_cap_ft_spec[0][0])
448
- htg_coil.setHeatingCapacityCoefficient2(hp_ap.heat_cap_ft_spec[0][1])
449
- htg_coil.setHeatingCapacityCoefficient3(hp_ap.heat_cap_ft_spec[0][2])
450
- htg_coil.setHeatingCapacityCoefficient4(hp_ap.heat_cap_ft_spec[0][3])
451
- htg_coil.setHeatingCapacityCoefficient5(hp_ap.heat_cap_ft_spec[0][4])
452
- htg_coil.setHeatingPowerConsumptionCoefficient1(hp_ap.heat_power_ft_spec[0][0])
453
- htg_coil.setHeatingPowerConsumptionCoefficient2(hp_ap.heat_power_ft_spec[0][1])
454
- htg_coil.setHeatingPowerConsumptionCoefficient3(hp_ap.heat_power_ft_spec[0][2])
455
- htg_coil.setHeatingPowerConsumptionCoefficient4(hp_ap.heat_power_ft_spec[0][3])
456
- htg_coil.setHeatingPowerConsumptionCoefficient5(hp_ap.heat_power_ft_spec[0][4])
457
437
  htg_coil.setRatedAirFlowRate(UnitConversions.convert(htg_cfm, 'cfm', 'm^3/s'))
458
438
  htg_coil.setRatedWaterFlowRate(UnitConversions.convert(hp_ap.GSHP_Loop_flow, 'gal/min', 'm^3/s'))
459
439
  htg_coil.setRatedHeatingCapacity(UnitConversions.convert(heat_pump.heating_capacity, 'Btu/hr', 'W'))
@@ -629,7 +609,7 @@ class HVAC
629
609
  hvac_map[heat_pump.id] << htg_supp_coil
630
610
 
631
611
  # Fan
632
- fan_power_installed = 0.5 # FIXME
612
+ fan_power_installed = 0.0 # Use provided net COP
633
613
  fan = create_supply_fan(model, obj_name, 1, fan_power_installed, htg_cfm)
634
614
  hvac_map[heat_pump.id] += disaggregate_fan_or_pump(model, fan, htg_coil, clg_coil, htg_supp_coil)
635
615
 
@@ -1307,11 +1287,12 @@ class HVAC
1307
1287
  def self.set_cool_curves_room_ac(cooling_system)
1308
1288
  clg_ap = cooling_system.additional_properties
1309
1289
 
1310
- # From Frigidaire 10.7 EER unit in Winkler et. al. Lab Testing of Window ACs (2013)
1311
- clg_ap.cool_cap_ft_spec = [[0.43945980246913574, -0.0008922469135802481, 0.00013984567901234569, 0.0038489259259259253, -5.6327160493827156e-05, 2.041358024691358e-05]]
1312
- clg_ap.cool_eir_ft_spec = [[6.310506172839506, -0.17705185185185185, 0.0014645061728395061, 0.012571604938271608, 0.0001493827160493827, -0.00040308641975308644]]
1313
- clg_ap.cool_cap_fflow_spec = [[0.887, 0.1128, 0]]
1314
- clg_ap.cool_eir_fflow_spec = [[1.763, -0.6081, 0]]
1290
+ # From "Improved Modeling of Residential Air Conditioners and Heat Pumps for Energy Calculations", Cutler at al
1291
+ # https://www.nrel.gov/docs/fy13osti/56354.pdf
1292
+ clg_ap.cool_cap_ft_spec = [[3.68637657, -0.098352478, 0.000956357, 0.005838141, -0.0000127, -0.000131702]]
1293
+ clg_ap.cool_eir_ft_spec = [[-3.437356399, 0.136656369, -0.001049231, -0.0079378, 0.000185435, -0.0001441]]
1294
+ clg_ap.cool_cap_fflow_spec = [[1, 0, 0]]
1295
+ clg_ap.cool_eir_fflow_spec = [[1, 0, 0]]
1315
1296
  end
1316
1297
 
1317
1298
  def self.set_cool_curves_mshp(heat_pump, num_speeds)
@@ -1851,42 +1832,29 @@ class HVAC
1851
1832
  distribution_system = heating_system.distribution_system
1852
1833
  distribution_type = distribution_system.distribution_system_type
1853
1834
 
1854
- if distribution_type == HPXML::HVACDistributionTypeHydronic
1855
- if distribution_system.hydronic_type == HPXML::HydronicTypeWaterLoop
1856
- # Shared boiler w/ WLHP
1857
- if heating_system.shared_loop_watts.nil?
1858
- return 265.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
1859
- else
1860
- sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
1861
- n_dweq = heating_system.number_of_units_served.to_f
1862
- aux_in = 0.0 # ANSI/RESNET/ICC 301-2019 Section 4.4.7.2
1863
- end
1835
+ if not heating_system.shared_loop_watts.nil?
1836
+ sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
1837
+ n_dweq = heating_system.number_of_units_served.to_f
1838
+ if distribution_system.air_type == HPXML::AirTypeFanCoil
1839
+ aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW')
1864
1840
  else
1865
- # Shared boiler w/ baseboard/radiators/etc
1866
- if heating_system.shared_loop_watts.nil?
1867
- return 220.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
1868
- else
1869
- sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
1870
- n_dweq = heating_system.number_of_units_served.to_f
1871
- aux_in = 0.0
1872
- end
1841
+ aux_in = 0.0 # ANSI/RESNET/ICC 301-2019 Section 4.4.7.2
1842
+ end
1843
+ # ANSI/RESNET/ICC 301-2019 Equation 4.4-5
1844
+ return (((sp_kw / n_dweq) + aux_in) * 2080.0).round(2) # kWh/yr
1845
+ elsif distribution_type == HPXML::HVACDistributionTypeHydronic
1846
+ # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
1847
+ if distribution_system.hydronic_type == HPXML::HydronicTypeWaterLoop # Shared boiler w/ WLHP
1848
+ return 265.0
1849
+ else # Shared boiler w/ baseboard/radiators/etc
1850
+ return 220.0
1873
1851
  end
1874
1852
  elsif distribution_type == HPXML::HVACDistributionTypeAir
1875
- if distribution_system.air_type == HPXML::AirTypeFanCoil
1876
- # Shared boiler w/ fan coil
1877
- if heating_system.shared_loop_watts.nil? || heating_system.fan_coil_watts.nil?
1878
- return 438.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
1879
- else
1880
- sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
1881
- n_dweq = heating_system.number_of_units_served.to_f
1882
- aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW')
1883
- end
1853
+ if distribution_system.air_type == HPXML::AirTypeFanCoil # Shared boiler w/ fan coil
1854
+ return 438.0
1884
1855
  end
1885
1856
  end
1886
1857
 
1887
- # ANSI/RESNET/ICC 301-2019 Equation 4.4-5
1888
- return ((sp_kw / n_dweq) + aux_in) * 2080.0 # kWh/yr
1889
-
1890
1858
  else # In-unit boilers
1891
1859
 
1892
1860
  if [HPXML::FuelTypeNaturalGas,
@@ -2765,19 +2733,19 @@ class HVAC
2765
2733
  end
2766
2734
 
2767
2735
  def self.create_curve_biquadratic_constant(model)
2768
- const_biquadratic = OpenStudio::Model::CurveBiquadratic.new(model)
2769
- const_biquadratic.setName('ConstantBiquadratic')
2770
- const_biquadratic.setCoefficient1Constant(1)
2771
- const_biquadratic.setCoefficient2x(0)
2772
- const_biquadratic.setCoefficient3xPOW2(0)
2773
- const_biquadratic.setCoefficient4y(0)
2774
- const_biquadratic.setCoefficient5yPOW2(0)
2775
- const_biquadratic.setCoefficient6xTIMESY(0)
2776
- const_biquadratic.setMinimumValueofx(-100)
2777
- const_biquadratic.setMaximumValueofx(100)
2778
- const_biquadratic.setMinimumValueofy(-100)
2779
- const_biquadratic.setMaximumValueofy(100)
2780
- return const_biquadratic
2736
+ curve = OpenStudio::Model::CurveBiquadratic.new(model)
2737
+ curve.setName('ConstantBiquadratic')
2738
+ curve.setCoefficient1Constant(1)
2739
+ curve.setCoefficient2x(0)
2740
+ curve.setCoefficient3xPOW2(0)
2741
+ curve.setCoefficient4y(0)
2742
+ curve.setCoefficient5yPOW2(0)
2743
+ curve.setCoefficient6xTIMESY(0)
2744
+ curve.setMinimumValueofx(-100)
2745
+ curve.setMaximumValueofx(100)
2746
+ curve.setMinimumValueofy(-100)
2747
+ curve.setMaximumValueofy(100)
2748
+ return curve
2781
2749
  end
2782
2750
 
2783
2751
  def self.create_curve_quadratic_constant(model)
@@ -2794,15 +2762,15 @@ class HVAC
2794
2762
  end
2795
2763
 
2796
2764
  def self.create_curve_cubic_constant(model)
2797
- constant_cubic = OpenStudio::Model::CurveCubic.new(model)
2798
- constant_cubic.setName('ConstantCubic')
2799
- constant_cubic.setCoefficient1Constant(1)
2800
- constant_cubic.setCoefficient2x(0)
2801
- constant_cubic.setCoefficient3xPOW2(0)
2802
- constant_cubic.setCoefficient4xPOW3(0)
2803
- constant_cubic.setMinimumValueofx(-100)
2804
- constant_cubic.setMaximumValueofx(100)
2805
- return constant_cubic
2765
+ curve = OpenStudio::Model::CurveCubic.new(model)
2766
+ curve.setName('ConstantCubic')
2767
+ curve.setCoefficient1Constant(1)
2768
+ curve.setCoefficient2x(0)
2769
+ curve.setCoefficient3xPOW2(0)
2770
+ curve.setCoefficient4xPOW3(0)
2771
+ curve.setMinimumValueofx(-100)
2772
+ curve.setMaximumValueofx(100)
2773
+ return curve
2806
2774
  end
2807
2775
 
2808
2776
  def self.convert_curve_biquadratic(coeff, ip_to_si = true)
@@ -2911,6 +2879,29 @@ class HVAC
2911
2879
  return curve
2912
2880
  end
2913
2881
 
2882
+ def self.create_curve_quad_linear(model, coeff, name)
2883
+ curve = OpenStudio::Model::CurveQuadLinear.new(model)
2884
+ curve.setName(name)
2885
+ curve.setCoefficient1Constant(coeff[0])
2886
+ curve.setCoefficient2w(coeff[1])
2887
+ curve.setCoefficient3x(coeff[2])
2888
+ curve.setCoefficient4y(coeff[3])
2889
+ curve.setCoefficient5z(coeff[4])
2890
+ return curve
2891
+ end
2892
+
2893
+ def self.create_curve_quint_linear(model, coeff, name)
2894
+ curve = OpenStudio::Model::CurveQuintLinear.new(model)
2895
+ curve.setName(name)
2896
+ curve.setCoefficient1Constant(coeff[0])
2897
+ curve.setCoefficient2v(coeff[1])
2898
+ curve.setCoefficient3w(coeff[2])
2899
+ curve.setCoefficient4x(coeff[3])
2900
+ curve.setCoefficient5y(coeff[4])
2901
+ curve.setCoefficient6z(coeff[5])
2902
+ return curve
2903
+ end
2904
+
2914
2905
  def self.create_dx_cooling_coil(model, obj_name, cooling_system)
2915
2906
  clg_ap = cooling_system.additional_properties
2916
2907
 
@@ -3983,7 +3974,7 @@ class HVAC
3983
3974
  return 30.0 # W/ton, per ANSI/RESNET/ICC 301-2019 Section 4.4.5 (closed loop)
3984
3975
  end
3985
3976
 
3986
- def self.apply_shared_systems(hpxml)
3977
+ def self.apply_shared_systems(hpxml = true)
3987
3978
  applied_clg = apply_shared_cooling_systems(hpxml)
3988
3979
  applied_htg = apply_shared_heating_systems(hpxml)
3989
3980
  return unless (applied_clg || applied_htg)
@@ -4000,7 +3991,7 @@ class HVAC
4000
3991
  # Remove any orphaned HVAC distributions
4001
3992
  hpxml.hvac_distributions.each do |hvac_distribution|
4002
3993
  hvac_systems = []
4003
- (hpxml.heating_systems + hpxml.cooling_systems + hpxml.heat_pumps).each do |hvac_system|
3994
+ hpxml.hvac_systems.each do |hvac_system|
4004
3995
  next if hvac_system.distribution_system_idref.nil?
4005
3996
  next unless hvac_system.distribution_system_idref == hvac_distribution.id
4006
3997
 
@@ -4063,12 +4054,19 @@ class HVAC
4063
4054
  fail "Unexpected cooling system type '#{cooling_system.cooling_system_type}'."
4064
4055
  end
4065
4056
 
4057
+ if seer_eq <= 0
4058
+ fail "Negative SEER equivalent calculated for cooling system '#{cooling_system.id}', double check inputs."
4059
+ end
4060
+
4066
4061
  cooling_system.cooling_system_type = HPXML::HVACTypeCentralAirConditioner
4067
- cooling_system.cooling_efficiency_seer = seer_eq
4062
+ cooling_system.cooling_efficiency_seer = seer_eq.round(2)
4068
4063
  cooling_system.cooling_efficiency_kw_per_ton = nil
4069
4064
  cooling_system.cooling_capacity = nil # Autosize the equipment
4070
4065
  cooling_system.is_shared_system = false
4071
4066
  cooling_system.number_of_units_served = nil
4067
+ cooling_system.shared_loop_watts = nil
4068
+ cooling_system.shared_loop_motor_efficiency = nil
4069
+ cooling_system.fan_coil_watts = nil
4072
4070
 
4073
4071
  # Assign new distribution system to air conditioner
4074
4072
  if distribution_type == HPXML::HVACDistributionTypeHydronic
@@ -4085,6 +4083,29 @@ class HVAC
4085
4083
  annual_heating_dse: 1.0)
4086
4084
  cooling_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
4087
4085
  end
4086
+ elsif (distribution_type == HPXML::HVACDistributionTypeAir) && (distribution_system.air_type == HPXML::AirTypeFanCoil)
4087
+ # Convert "fan coil" air distribution system to "regular velocity"
4088
+ if distribution_system.hvac_systems.size > 1
4089
+ # Has attached heating system, so create a copy specifically for the cooling system
4090
+ hpxml.hvac_distributions << distribution_system.dup
4091
+ hpxml.hvac_distributions[-1].id += "#{cooling_system.id}AirDistributionSystem"
4092
+ cooling_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
4093
+ end
4094
+ hpxml.hvac_distributions[-1].air_type = HPXML::AirTypeRegularVelocity
4095
+ if hpxml.hvac_distributions[-1].duct_leakage_measurements.select { |lm| (lm.duct_type == HPXML::DuctTypeSupply) && (lm.duct_leakage_total_or_to_outside == HPXML::DuctLeakageToOutside) }.size == 0
4096
+ # Assign zero supply leakage
4097
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
4098
+ duct_leakage_units: HPXML::UnitsCFM25,
4099
+ duct_leakage_value: 0,
4100
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
4101
+ end
4102
+ if hpxml.hvac_distributions[-1].duct_leakage_measurements.select { |lm| (lm.duct_type == HPXML::DuctTypeReturn) && (lm.duct_leakage_total_or_to_outside == HPXML::DuctLeakageToOutside) }.size == 0
4103
+ # Assign zero return leakage
4104
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
4105
+ duct_leakage_units: HPXML::UnitsCFM25,
4106
+ duct_leakage_value: 0,
4107
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
4108
+ end
4088
4109
  end
4089
4110
  end
4090
4111
 
@@ -890,6 +890,7 @@ class HVACSizing
890
890
  sum_ua_wall += (1.0 / wall.insulation_assembly_r_value * wall.net_area)
891
891
  end
892
892
  fail 'Could not find connected walls.' if sum_a_wall <= 0
893
+
893
894
  u_wall = sum_ua_wall / sum_a_wall
894
895
 
895
896
  # Calculate partition temperature different cooling (PTDC) per Manual J Figure A12-17
@@ -1434,7 +1435,6 @@ class HVACSizing
1434
1435
 
1435
1436
  hvac_sizing_values.Cool_Capacity = (hvac_sizing_values.Cool_Load_Tot / totalCap_CurveValue)
1436
1437
  hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac.SHRRated[hvac.SizingSpeed]
1437
- # FIXME: Why not use calc_airflow_rate?
1438
1438
  hvac_sizing_values.Cool_Airflow = hvac.RatedCFMperTonCooling[-1] * hvac.CapacityRatioCooling[-1] * UnitConversions.convert(hvac_sizing_values.Cool_Capacity, 'Btu/hr', 'ton')
1439
1439
 
1440
1440
  elsif hvac.CoolType == HPXML::HVACTypeRoomAirConditioner
@@ -1444,7 +1444,6 @@ class HVACSizing
1444
1444
 
1445
1445
  hvac_sizing_values.Cool_Capacity = hvac_sizing_values.Cool_Load_Tot / totalCap_CurveValue
1446
1446
  hvac_sizing_values.Cool_Capacity_Sens = hvac_sizing_values.Cool_Capacity * hvac.SHRRated[hvac.SizingSpeed]
1447
- # FIXME: Why not use calc_airflow_rate?
1448
1447
  hvac_sizing_values.Cool_Airflow = hvac.RatedCFMperTonCooling[hvac.SizingSpeed] * UnitConversions.convert(hvac_sizing_values.Cool_Capacity, 'Btu/hr', 'ton')
1449
1448
 
1450
1449
  elsif hvac.CoolType == HPXML::HVACTypeHeatPumpGroundToAir
@@ -1543,7 +1542,6 @@ class HVACSizing
1543
1542
  hvac_sizing_values.Heat_Capacity = hvac_sizing_values.Heat_Load
1544
1543
  hvac_sizing_values.Heat_Capacity_Supp = hvac_sizing_values.Heat_Load
1545
1544
  end
1546
- # FIXME: Why not use calc_airflow_rate?
1547
1545
  hvac_sizing_values.Heat_Airflow = hvac.RatedCFMperTonHeating[-1] * hvac.CapacityRatioHeating[-1] * UnitConversions.convert(hvac_sizing_values.Heat_Capacity, 'Btu/hr', 'ton') # Maximum air flow under heating operation
1548
1546
 
1549
1547
  elsif hvac.HeatType == HPXML::HVACTypeHeatPumpGroundToAir
@@ -2587,7 +2585,7 @@ class HVACSizing
2587
2585
  else # Unvented space
2588
2586
  ach = 0.1 # Assumption
2589
2587
  end
2590
- # FUTURE: Reuse code from measure.rb set_zone_volumes()
2588
+ # FUTURE: Reuse code from Geometry.set_zone_volumes()
2591
2589
  if [HPXML::LocationAtticVented, HPXML::LocationAtticUnvented].include? space_type
2592
2590
  floor_area = @hpxml.frame_floors.select { |f| [f.interior_adjacent_to, f.exterior_adjacent_to].include? space_type }.map { |s| s.area }.sum(0.0)
2593
2591
  roofs = @hpxml.roofs.select { |r| r.interior_adjacent_to == space_type }
@@ -3,7 +3,8 @@
3
3
  require 'fileutils'
4
4
 
5
5
  def run_hpxml_workflow(rundir, measures, measures_dir, debug: false, output_vars: [],
6
- output_meters: [], run_measures_only: false, print_prefix: '')
6
+ output_meters: [], run_measures_only: false, print_prefix: '',
7
+ ep_input_format: 'idf')
7
8
  rm_path(rundir)
8
9
  FileUtils.mkdir_p(rundir)
9
10
 
@@ -47,10 +48,10 @@ def run_hpxml_workflow(rundir, measures, measures_dir, debug: false, output_vars
47
48
  om.setReportingFrequency(output_meter[1])
48
49
  end
49
50
 
50
- # Translate model to IDF
51
+ # Translate model to workspace
51
52
  forward_translator = OpenStudio::EnergyPlus::ForwardTranslator.new
52
53
  forward_translator.setExcludeLCCObjects(true)
53
- model_idf = forward_translator.translateModel(model)
54
+ workspace = forward_translator.translateModel(model)
54
55
  success = report_ft_errors_warnings(forward_translator, rundir)
55
56
 
56
57
  if not success
@@ -60,16 +61,25 @@ def run_hpxml_workflow(rundir, measures, measures_dir, debug: false, output_vars
60
61
  end
61
62
 
62
63
  # Apply reporting measure output requests
63
- apply_energyplus_output_requests(measures_dir, measures, runner, model, model_idf)
64
-
65
- # Write IDF to file
66
- File.open(File.join(rundir, 'in.idf'), 'w') { |f| f << model_idf.to_s }
64
+ apply_energyplus_output_requests(measures_dir, measures, runner, model, workspace)
65
+
66
+ # Write to file
67
+ if ep_input_format == 'idf'
68
+ ep_input_filename = 'in.idf'
69
+ File.open(File.join(rundir, ep_input_filename), 'w') { |f| f << workspace.to_s }
70
+ elsif ep_input_format == 'epjson'
71
+ ep_input_filename = 'in.epJSON'
72
+ json = OpenStudio::EPJSON::toJSONString(workspace.toIdfFile)
73
+ File.open(File.join(rundir, ep_input_filename), 'w') { |f| f << json.to_s }
74
+ else
75
+ fail "Unexpected ep_input_format: #{ep_input_format}."
76
+ end
67
77
 
68
78
  # Run simulation
69
79
  print "#{print_prefix}Running simulation...\n"
70
80
  ep_path = File.absolute_path(File.join(OpenStudio.getOpenStudioCLI.to_s, '..', '..', 'EnergyPlus', 'energyplus')) # getEnergyPlusDirectory can be unreliable, using getOpenStudioCLI instead
71
81
  simulation_start = Time.now
72
- command = "\"#{ep_path}\" -w \"#{model.getWeatherFile.path.get}\" in.idf"
82
+ command = "\"#{ep_path}\" -w \"#{model.getWeatherFile.path.get}\" #{ep_input_filename}"
73
83
  if debug
74
84
  File.open(File.join(rundir, 'run.log'), 'a') do |f|
75
85
  f << "Executing command '#{command}' from working directory '#{rundir}'.\n"
@@ -159,7 +169,7 @@ def apply_measures(measures_dir, measures, runner, model, show_measure_calls = t
159
169
  return true
160
170
  end
161
171
 
162
- def apply_energyplus_output_requests(measures_dir, measures, runner, model, model_idf)
172
+ def apply_energyplus_output_requests(measures_dir, measures, runner, model, workspace)
163
173
  # Call each measure in the specified order
164
174
  measures.keys.each do |measure_subdir|
165
175
  # Gather measure arguments and call measure
@@ -173,7 +183,7 @@ def apply_energyplus_output_requests(measures_dir, measures, runner, model, mode
173
183
  runner.setLastOpenStudioModel(model)
174
184
  idf_objects = measure.energyPlusOutputRequests(runner, argument_map)
175
185
  idf_objects.each do |idf_object|
176
- model_idf.addObject(idf_object)
186
+ workspace.addObject(idf_object)
177
187
  end
178
188
  end
179
189
  end
@@ -433,6 +443,7 @@ def report_os_warnings(os_log, rundir)
433
443
  next if s.logMessage.include? 'WorkflowStepResult value called with undefined stepResult'
434
444
  next if s.logMessage.include?("Object of type 'Schedule:Constant' and named 'Always") && s.logMessage.include?('points to an object named') && s.logMessage.include?('but that object cannot be located')
435
445
  next if s.logMessage.include? 'Appears there are no design condition fields in the EPW file'
446
+ next if s.logMessage.include?('Using EnergyPlusVersion version') && s.logMessage.include?("which should have 'Year' field, but it's always zero")
436
447
 
437
448
  f << "OS Message: #{s.logMessage}\n"
438
449
  end
@@ -1,30 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- called_from_cli = true
4
- begin
5
- OpenStudio.getOpenStudioCLI
6
- rescue
7
- called_from_cli = false
8
- end
3
+ require 'minitest/autorun'
9
4
 
10
- if not called_from_cli # cli can't load codecov gem
11
- require 'simplecov'
12
- require 'codecov'
5
+ require 'minitest/reporters'
6
+ require 'minitest/reporters/spec_reporter' # Needed when run via OS CLI
13
7
 
14
- # save to CircleCI's artifacts directory if we're on CircleCI
15
- if ENV['CI']
16
- if ENV['CIRCLE_ARTIFACTS']
17
- dir = File.join(ENV['CIRCLE_ARTIFACTS'], 'coverage')
18
- SimpleCov.coverage_dir(dir)
19
- end
20
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
21
- else
22
- SimpleCov.coverage_dir('coverage')
23
- end
24
- SimpleCov.start
25
-
26
- require 'minitest/autorun'
27
- require 'minitest/reporters'
28
-
29
- Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new # spec-like progress
30
- end
8
+ Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new # spec-like progress
@@ -145,17 +145,18 @@ class MiscLoads
145
145
  heater_sch = heater_sch.schedule
146
146
  end
147
147
 
148
- mel_def = OpenStudio::Model::GasEquipmentDefinition.new(model)
149
- mel = OpenStudio::Model::GasEquipment.new(mel_def)
150
- mel.setName(obj_name)
151
- mel.setEndUseSubcategory(obj_name)
152
- mel.setSpace(living_space)
153
- mel_def.setName(obj_name)
154
- mel_def.setDesignLevel(space_design_level)
155
- mel_def.setFractionRadiant(0)
156
- mel_def.setFractionLatent(0)
157
- mel_def.setFractionLost(1)
158
- mel.setSchedule(heater_sch)
148
+ mfl_def = OpenStudio::Model::OtherEquipmentDefinition.new(model)
149
+ mfl = OpenStudio::Model::OtherEquipment.new(mfl_def)
150
+ mfl.setName(obj_name)
151
+ mfl.setEndUseSubcategory(obj_name)
152
+ mfl.setFuelType(EPlus.fuel_type(HPXML::FuelTypeNaturalGas))
153
+ mfl.setSpace(living_space)
154
+ mfl_def.setName(obj_name)
155
+ mfl_def.setDesignLevel(space_design_level)
156
+ mfl_def.setFractionRadiant(0)
157
+ mfl_def.setFractionLatent(0)
158
+ mfl_def.setFractionLost(1)
159
+ mfl.setSchedule(heater_sch)
159
160
  end
160
161
  end
161
162
 
@@ -9,6 +9,7 @@ class PV
9
9
  else
10
10
  # Apportion to single dwelling unit by # bedrooms
11
11
  fail if pv_system.number_of_bedrooms_served.to_f <= nbeds.to_f # EPvalidator.xml should prevent this
12
+
12
13
  max_power = pv_system.max_power_output * nbeds.to_f / pv_system.number_of_bedrooms_served.to_f
13
14
  end
14
15
 
@@ -40,7 +41,7 @@ class PV
40
41
  ipvwatts.setName("#{obj_name} inverter")
41
42
  ipvwatts.setInverterEfficiency(pv_system.inverter_efficiency)
42
43
 
43
- elcd = gpvwatts.electricLoadCenterDistribution.get
44
+ elcd = OpenStudio::Model::ElectricLoadCenterDistribution.new(model)
44
45
  elcd.setName("#{obj_name} elec load center dist")
45
46
  elcd.addGenerator(gpvwatts)
46
47
  elcd.setInverter(ipvwatts)
@@ -1086,7 +1086,7 @@ class SchedulesFile
1086
1086
  schedule_file.setColumnNumber(col_index + 1)
1087
1087
  schedule_file.setRowstoSkipatTop(rows_to_skip)
1088
1088
  schedule_file.setNumberofHoursofData(num_hrs_in_year.to_i)
1089
- schedule_file.setMinutesperItem("#{min_per_item.to_i}")
1089
+ schedule_file.setMinutesperItem(min_per_item.to_i)
1090
1090
 
1091
1091
  return schedule_file
1092
1092
  end
@@ -1220,6 +1220,33 @@ class SchedulesFile
1220
1220
  update(col_names: col_names.keys)
1221
1221
  end
1222
1222
 
1223
+ def set_outage(outage_start_date:,
1224
+ outage_end_date:)
1225
+
1226
+ minutes_per_step = 60
1227
+ if @model.getSimulationControl.timestep.is_initialized
1228
+ minutes_per_step = 60 / @model.getSimulationControl.timestep.get.numberOfTimestepsPerHour
1229
+ end
1230
+
1231
+ col_names = ScheduleGenerator.col_names
1232
+
1233
+ sec_per_step = minutes_per_step * 60.0
1234
+ col_names.each do |col_name, val|
1235
+ next if col_name == 'occupants'
1236
+ next if val.nil?
1237
+
1238
+ ts = Time.new(outage_start_date.year, 'Jan', 1)
1239
+ @schedules[col_name].each_with_index do |step, i|
1240
+ if outage_start_date <= ts && ts < outage_end_date # in the outage period
1241
+ @schedules[col_name][i] = 0.0
1242
+ end
1243
+ ts += sec_per_step
1244
+ end
1245
+ end
1246
+
1247
+ update(col_names: col_names.keys)
1248
+ end
1249
+
1223
1250
  def import(col_names:)
1224
1251
  @schedules = {}
1225
1252
  col_names += ['vacancy']
@@ -1,23 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SimControls
4
- def self.apply(model, header)
4
+ def self.apply(model, hpxml)
5
5
  sim = model.getSimulationControl
6
6
  sim.setRunSimulationforSizingPeriods(false)
7
7
 
8
8
  tstep = model.getTimestep
9
- tstep.setNumberOfTimestepsPerHour(60 / header.timestep)
9
+ tstep.setNumberOfTimestepsPerHour(60 / hpxml.header.timestep)
10
10
 
11
11
  shad = model.getShadowCalculation
12
12
  shad.setMaximumFiguresInShadowOverlapCalculations(200)
13
- # Detailed diffuse algorithm is required for window interior shading with varying
14
- # transmittance schedules
15
- shad.setSkyDiffuseModelingAlgorithm('DetailedSkyDiffuseModeling')
16
13
  # Use EnergyPlus default of 20 days for update frequency; it is a reasonable balance
17
14
  # between speed and accuracy (e.g., sun position, picking up any change in window
18
15
  # interior shading transmittance, etc.).
19
16
  shad.setShadingCalculationUpdateFrequency(20)
20
17
 
18
+ has_windows_varying_transmittance = false
19
+ hpxml.windows.each do |window|
20
+ sf_summer = window.interior_shading_factor_summer * window.exterior_shading_factor_summer
21
+ sf_winter = window.interior_shading_factor_winter * window.exterior_shading_factor_winter
22
+ next if sf_summer == sf_winter
23
+
24
+ has_windows_varying_transmittance = true
25
+ end
26
+ if has_windows_varying_transmittance
27
+ # Detailed diffuse algorithm is required for window interior shading with varying
28
+ # transmittance schedules
29
+ shad.setSkyDiffuseModelingAlgorithm('DetailedSkyDiffuseModeling')
30
+ end
31
+
21
32
  outsurf = model.getOutsideSurfaceConvectionAlgorithm
22
33
  outsurf.setAlgorithm('DOE-2')
23
34
 
@@ -31,9 +42,9 @@ class SimControls
31
42
  convlim.setMinimumSystemTimestep(0)
32
43
 
33
44
  run_period = model.getRunPeriod
34
- run_period.setBeginMonth(header.sim_begin_month)
35
- run_period.setBeginDayOfMonth(header.sim_begin_day)
36
- run_period.setEndMonth(header.sim_end_month)
37
- run_period.setEndDayOfMonth(header.sim_end_day)
45
+ run_period.setBeginMonth(hpxml.header.sim_begin_month)
46
+ run_period.setBeginDayOfMonth(hpxml.header.sim_begin_day)
47
+ run_period.setEndMonth(hpxml.header.sim_end_month)
48
+ run_period.setEndDayOfMonth(hpxml.header.sim_end_day)
38
49
  end
39
50
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  class Version
4
4
  OS_HPXML_Version = '1.1.0' # Version of the OS-HPXML workflow
5
- OS_Version = '3.1.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
5
+ OS_Version = '3.2.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
6
6
  HPXML_Version = '3.0' # HPXML schemaVersion
7
7
 
8
8
  def self.check_openstudio_version
@@ -183,6 +183,7 @@ class Waterheater
183
183
  if water_heating_system.standby_loss <= 0
184
184
  fail 'A negative indirect water heater standby loss was calculated, double check water heater inputs.'
185
185
  end
186
+
186
187
  act_vol = calc_storage_tank_actual_vol(water_heating_system.tank_volume, nil)
187
188
  a_side = calc_tank_areas(act_vol)[1]
188
189
  ua = calc_indirect_ua_with_standbyloss(act_vol, water_heating_system, a_side, solar_fraction)
@@ -62,6 +62,7 @@ class XMLHelper
62
62
  if element.nil?
63
63
  return
64
64
  end
65
+
65
66
  value = element.text
66
67
 
67
68
  if datatype == :integer