urbanopt-cli 0.5.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (907) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG.md +43 -1
  4. data/CMakeLists.txt +14 -14
  5. data/FindOpenStudioSDK.cmake +11 -6
  6. data/Gemfile +11 -5
  7. data/LICENSE.md +11 -1
  8. data/Rakefile +16 -6
  9. data/example_files/Gemfile +8 -8
  10. data/example_files/example_project_combined.json +100 -5
  11. data/example_files/example_project_with_streets.json +826 -0
  12. data/example_files/mappers/Baseline.rb +107 -59
  13. data/example_files/mappers/CreateBar.rb +17 -7
  14. data/example_files/mappers/EvCharging.rb +20 -10
  15. data/example_files/mappers/Floorspace.rb +17 -7
  16. data/example_files/mappers/HighEfficiency.rb +20 -8
  17. data/example_files/mappers/HighEfficiencyCreateBar.rb +19 -8
  18. data/example_files/mappers/HighEfficiencyFloorspace.rb +19 -8
  19. data/example_files/mappers/ThermalStorage.rb +16 -6
  20. data/example_files/measures/BuildResidentialModel/measure.rb +249 -134
  21. data/example_files/reopt/base_assumptions.json +2 -2
  22. data/example_files/reopt/multiPV_assumptions.json +4 -3
  23. data/example_files/residential/clothes_dryer.tsv +7 -7
  24. data/example_files/residential/clothes_washer.tsv +1 -1
  25. data/example_files/residential/cooling_system.tsv +42 -22
  26. data/example_files/residential/dishwasher.tsv +1 -1
  27. data/example_files/residential/exhaust.tsv +3 -0
  28. data/example_files/residential/heat_pump.tsv +62 -40
  29. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +2 -1
  30. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +116 -0
  31. data/example_files/resources/hpxml-measures/.gitignore +1 -8
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +746 -1236
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1550 -1215
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
  35. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +432 -343
  36. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +134 -91
  37. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
  38. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
  40. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
  41. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +36 -60
  42. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +35 -59
  43. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +35 -59
  44. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +35 -59
  45. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +36 -60
  46. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +36 -60
  47. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +41 -65
  48. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +36 -60
  49. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +36 -60
  50. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +36 -60
  51. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +36 -60
  52. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +36 -60
  53. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +36 -60
  54. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +36 -60
  55. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
  56. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
  57. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +39 -63
  58. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +39 -63
  59. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +39 -63
  60. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +39 -63
  61. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +39 -63
  62. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +36 -60
  63. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +36 -61
  64. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +36 -61
  65. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +36 -60
  66. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +36 -61
  67. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +36 -61
  68. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +36 -61
  69. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +36 -61
  70. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +36 -60
  71. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +36 -60
  72. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +36 -60
  73. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +36 -61
  74. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +36 -60
  75. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +37 -61
  76. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +36 -60
  77. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +36 -60
  78. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +36 -60
  79. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +36 -60
  80. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +36 -60
  81. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +36 -60
  82. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +36 -60
  83. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +36 -60
  84. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +36 -60
  85. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +36 -60
  86. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +36 -60
  87. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +36 -60
  88. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +36 -60
  89. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +36 -60
  90. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +36 -60
  91. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +36 -60
  92. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +36 -60
  93. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +36 -60
  94. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +36 -60
  95. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +36 -60
  96. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +36 -60
  97. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +36 -60
  98. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +36 -60
  99. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +36 -60
  100. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +36 -60
  101. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +36 -60
  102. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +36 -60
  103. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +36 -60
  104. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +36 -60
  105. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +36 -60
  106. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +36 -60
  107. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +36 -60
  108. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +36 -60
  109. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +36 -60
  110. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +36 -60
  111. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +36 -60
  112. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +36 -60
  113. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +36 -60
  114. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +36 -60
  115. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +36 -60
  116. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +36 -60
  117. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +36 -60
  118. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +37 -61
  119. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +37 -61
  120. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +36 -60
  121. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +36 -60
  122. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +36 -60
  123. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +36 -60
  124. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +35 -59
  125. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +35 -59
  126. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +35 -59
  127. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +35 -59
  128. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +35 -59
  129. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
  130. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
  131. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +36 -61
  132. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +36 -60
  133. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +36 -60
  134. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +36 -60
  135. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +36 -60
  136. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +36 -61
  137. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +36 -61
  138. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +36 -60
  139. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +36 -60
  140. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +36 -60
  141. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +36 -61
  142. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +36 -60
  143. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +36 -60
  144. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +36 -62
  145. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +35 -60
  146. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +35 -60
  147. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +35 -59
  148. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +35 -59
  149. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +36 -61
  150. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +36 -60
  151. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +36 -60
  152. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +36 -60
  153. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +37 -61
  154. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +36 -61
  155. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +36 -61
  156. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +37 -62
  157. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +36 -61
  158. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
  159. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +36 -60
  160. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +36 -60
  161. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +36 -60
  162. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +36 -60
  163. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +36 -61
  164. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +36 -60
  165. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +36 -60
  166. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +36 -60
  167. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +36 -60
  168. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
  169. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
  170. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +36 -62
  171. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +41 -63
  172. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
  173. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
  174. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
  175. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
  176. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
  177. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
  178. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
  179. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
  180. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
  181. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
  182. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
  183. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
  184. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +36 -61
  185. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +36 -61
  186. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +36 -61
  187. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +36 -61
  188. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +37 -62
  189. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +37 -62
  190. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +36 -60
  191. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +37 -62
  192. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
  193. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +36 -60
  194. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +36 -60
  195. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +36 -60
  196. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +36 -61
  197. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +36 -61
  198. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +36 -60
  199. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +36 -61
  200. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +36 -60
  201. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +36 -60
  202. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +36 -60
  203. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +45 -69
  204. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +36 -60
  205. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +49 -73
  206. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
  207. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-location-honolulu-hi.osw} +39 -63
  208. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +36 -60
  209. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
  210. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
  211. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +36 -60
  212. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +44 -70
  213. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +37 -61
  214. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +36 -60
  215. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +36 -60
  216. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +36 -60
  217. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
  218. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +36 -60
  219. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +36 -60
  220. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +36 -60
  221. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +36 -60
  222. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +36 -60
  223. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +34 -58
  224. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +34 -58
  225. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +34 -58
  226. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +36 -60
  227. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
  228. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +35 -59
  229. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +36 -60
  230. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +39 -63
  231. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +36 -60
  232. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +36 -60
  233. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +36 -60
  234. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +36 -60
  235. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +36 -60
  236. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +36 -60
  237. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +36 -60
  238. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +36 -60
  239. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +60 -57
  240. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +36 -60
  241. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
  242. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
  243. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
  244. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
  245. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
  246. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
  247. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
  248. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
  249. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
  250. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
  251. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
  252. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
  253. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
  254. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
  255. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
  256. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
  257. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
  258. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
  259. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
  260. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
  261. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
  262. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
  263. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
  264. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
  265. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
  266. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  267. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
  268. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  269. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
  270. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  271. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
  272. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  273. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
  274. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  275. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
  276. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  277. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
  278. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  279. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
  280. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  281. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
  282. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  283. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
  284. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
  285. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
  286. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  287. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
  288. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  289. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
  290. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  291. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
  292. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  293. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
  294. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  295. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
  296. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  297. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
  298. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  299. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
  300. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  301. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
  302. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  303. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
  304. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
  305. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
  306. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
  307. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +339 -0
  308. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
  309. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
  310. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
  311. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
  312. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
  313. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
  314. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
  315. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
  316. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
  317. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
  318. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
  319. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
  320. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
  321. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
  322. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
  323. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +36 -60
  324. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
  325. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
  326. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
  327. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +36 -60
  328. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
  329. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
  330. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
  331. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +36 -60
  332. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +36 -60
  333. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
  334. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
  335. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
  336. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +38 -62
  337. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
  338. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +36 -60
  339. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +36 -60
  340. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
  341. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
  342. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
  343. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
  344. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
  345. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +39 -63
  346. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
  347. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +36 -60
  348. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +36 -60
  349. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +36 -60
  350. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +36 -60
  351. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
  352. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +36 -60
  353. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +39 -63
  354. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +39 -63
  355. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +38 -62
  356. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +36 -60
  357. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
  358. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +40 -64
  359. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
  360. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
  361. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +36 -60
  362. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +36 -60
  363. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +36 -60
  364. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
  365. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +36 -60
  366. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
  367. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +36 -60
  368. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +36 -60
  369. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +36 -60
  370. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +36 -60
  371. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +337 -0
  372. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +36 -60
  373. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +36 -60
  374. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +36 -60
  375. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
  376. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +38 -62
  377. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
  378. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
  379. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
  380. data/example_files/resources/hpxml-measures/Changelog.md +249 -0
  381. data/example_files/resources/hpxml-measures/Gemfile +3 -4
  382. data/example_files/resources/hpxml-measures/Gemfile.lock +27 -32
  383. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +318 -1283
  384. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +167 -121
  385. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +7 -97
  386. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +600 -203
  387. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +21 -28
  388. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
  389. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +112 -177
  390. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +16 -180
  391. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +543 -94
  392. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  393. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +4 -7
  394. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +410 -14
  395. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
  396. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +782 -460
  397. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +455 -107
  398. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1466 -1403
  399. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1391 -1467
  400. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
  401. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
  402. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +85 -13
  403. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
  404. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -33
  405. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +3 -4
  406. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +43 -7
  407. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +24 -7
  408. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
  409. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  410. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +4 -4
  411. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +32 -30
  412. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +6 -29
  413. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +523 -635
  414. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
  415. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -1
  416. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -2
  417. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +297 -7
  418. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +0 -1
  419. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -1
  420. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -1
  421. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -1
  422. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -1
  423. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -1
  424. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +26 -3
  425. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -1
  426. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
  427. data/example_files/resources/hpxml-measures/README.md +4 -5
  428. data/example_files/resources/hpxml-measures/Rakefile +1 -2
  429. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +140 -47
  430. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +351 -495
  431. data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +260 -189
  432. data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
  433. data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +3 -3
  434. data/example_files/resources/hpxml-measures/docs/source/intro.rst +4 -105
  435. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +538 -396
  436. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +158 -130
  437. data/example_files/resources/hpxml-measures/tasks.rb +1497 -736
  438. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
  439. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
  440. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
  441. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
  442. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
  443. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
  444. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
  445. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
  446. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
  447. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +36 -5
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +4 -3
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +5 -3
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +5 -3
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +535 -0
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +5 -3
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +4 -3
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +4 -3
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +4 -2
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +4 -3
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +4 -3
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +4 -3
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +4 -3
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +6 -5
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +4 -3
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +4 -3
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +4 -3
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +4 -3
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +4 -3
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +4 -3
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +4 -3
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +4 -3
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +4 -3
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +3 -5
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +28 -18
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +28 -18
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +3 -5
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +3 -5
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +23 -11
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +3 -5
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +23 -12
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +23 -12
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +4 -3
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +6 -6
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +4 -3
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +8 -5
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +4 -3
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +4 -3
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +4 -3
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +4 -3
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +4 -3
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +4 -3
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +17 -4
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +1 -2
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +1 -2
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +3 -2
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +564 -564
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +4 -3
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +3 -5
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +3 -2
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +3 -5
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +4 -3
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +1 -2
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +1 -2
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +1 -2
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +1 -2
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +1 -2
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +4 -3
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +4 -3
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +4 -3
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +1 -2
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +4 -3
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +1 -2
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +4 -2
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +4 -3
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +4 -3
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +4 -3
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +4 -3
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +4 -3
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +4 -3
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +4 -3
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +4 -3
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +4 -3
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +4 -3
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +4 -3
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +4 -3
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +4 -3
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +4 -3
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +4 -3
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +4 -3
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +4 -3
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +4 -3
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +4 -3
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +4 -3
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +4 -3
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +4 -3
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +4 -3
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +4 -3
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +4 -3
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +4 -3
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +4 -3
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +4 -3
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +4 -3
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +4 -3
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +4 -3
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +5 -4
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +4 -3
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +4 -3
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +4 -3
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +4 -3
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +4 -3
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +4 -3
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +4 -3
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +4 -3
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +4 -3
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +4 -3
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +5 -4
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +9 -3
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +4 -3
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +601 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +6 -5
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +4 -3
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +22 -21
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2475 -0
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +4 -3
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +4 -3
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +577 -561
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +4 -3
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +644 -0
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +4 -3
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +4 -3
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +4 -3
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +6 -5
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +4 -3
  577. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +5 -4
  578. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +5 -4
  579. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +4 -3
  580. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +5 -4
  581. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +4 -3
  582. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +4 -3
  583. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +4 -3
  584. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +556 -0
  585. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +562 -0
  586. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +6 -8
  587. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +6 -5
  588. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +6 -5
  589. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +553 -0
  590. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +558 -0
  591. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +2 -4
  592. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +558 -0
  593. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +560 -559
  594. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +557 -556
  595. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +560 -559
  596. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +557 -556
  597. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
  598. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +569 -569
  599. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
  600. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +2 -4
  601. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +547 -546
  602. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +547 -546
  603. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +2 -7
  604. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +2 -4
  605. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +2 -4
  606. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
  607. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +553 -552
  608. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
  609. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +547 -546
  610. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +560 -559
  611. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +560 -559
  612. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +548 -0
  613. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +558 -557
  614. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +555 -0
  615. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +560 -0
  616. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +562 -562
  617. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +559 -559
  618. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +547 -0
  619. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +2 -4
  620. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +2 -4
  621. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +2 -4
  622. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +557 -0
  623. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
  624. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
  625. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
  626. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +560 -559
  627. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +1 -2
  628. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +1 -2
  629. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +4 -4
  630. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +1 -2
  631. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +1 -2
  632. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +1 -2
  633. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +1 -2
  634. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +3 -5
  635. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +3 -2
  636. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +3 -2
  637. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +7 -12
  638. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +2 -3
  639. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +5 -7
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +5 -7
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +5 -4
  642. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +5 -4
  643. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +5 -7
  644. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +4 -3
  645. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +1 -2
  646. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +4 -2
  647. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +11 -1
  648. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
  649. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
  650. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +512 -563
  651. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
  652. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +548 -547
  653. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +4 -3
  654. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +3 -2
  655. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +4 -3
  656. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +4 -3
  657. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +548 -550
  658. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +4 -3
  659. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +3 -2
  660. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +3 -2
  661. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +3 -2
  662. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +4 -5
  663. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +557 -0
  664. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +563 -0
  665. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +562 -562
  666. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +568 -561
  667. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +566 -559
  668. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +567 -0
  669. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +567 -0
  670. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +571 -564
  671. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +572 -0
  672. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +572 -0
  673. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +552 -549
  674. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +566 -0
  675. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +552 -548
  676. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +565 -558
  677. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +569 -0
  678. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +566 -0
  679. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +570 -0
  680. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +3 -5
  681. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +1 -5
  682. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +3 -5
  683. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +5 -7
  684. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +6 -8
  685. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +3 -7
  686. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +920 -913
  687. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
  688. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +512 -563
  689. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +7 -6
  690. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +4 -3
  691. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +1 -2
  692. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +1 -2
  693. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +4 -3
  694. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
  695. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
  696. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +4 -3
  697. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +4 -3
  698. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
  699. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +4 -3
  700. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +4 -3
  701. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +4 -3
  702. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +4 -3
  703. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +37 -25
  704. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +4 -3
  705. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +37 -25
  706. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +563 -0
  707. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +517 -0
  708. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +4 -3
  709. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +517 -0
  710. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +577 -0
  711. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +4 -3
  712. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +4 -3
  713. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +2 -3
  714. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +11 -1
  715. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +4 -3
  716. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +4 -3
  717. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +4 -3
  718. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +4 -3
  719. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +4 -3
  720. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +4 -3
  721. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +4 -3
  722. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +32 -29
  723. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +4 -3
  724. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +4 -3
  725. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +4 -2
  726. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +5 -4
  727. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +8 -3
  728. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +12 -3
  729. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +4 -3
  730. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +4 -3
  731. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +564 -0
  732. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +8 -3
  733. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1657 -0
  734. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +4 -3
  735. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +564 -0
  736. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +4 -3
  737. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +4 -3
  738. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +4 -3
  739. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +4 -3
  740. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +4 -3
  741. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +4 -3
  742. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +4 -3
  743. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +4 -3
  744. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
  745. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +1 -2
  746. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +4 -3
  747. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +4 -3
  748. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +4 -3
  749. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → invalid_files/dehumidifier-fraction-served.xml} +534 -523
  750. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +535 -0
  751. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +1 -2
  752. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +4 -3
  753. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +4 -3
  754. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +4 -3
  755. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +563 -0
  756. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +563 -0
  757. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +4 -3
  758. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +4 -3
  759. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +4 -3
  760. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +4 -3
  761. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +5 -4
  762. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +5 -4
  763. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +7 -6
  764. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +448 -0
  765. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +4 -3
  766. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +4 -3
  767. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +4 -3
  768. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +4 -3
  769. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +4 -3
  770. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +14 -60
  771. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +760 -0
  772. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +759 -0
  773. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +761 -0
  774. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +759 -0
  775. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +563 -0
  776. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +460 -0
  777. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +579 -0
  778. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +3 -5
  779. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +920 -913
  780. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +920 -913
  781. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +3 -7
  782. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +3 -4
  783. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +3 -4
  784. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +920 -913
  785. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +4 -3
  786. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +4 -3
  787. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
  788. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +563 -0
  789. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +4 -3
  790. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +4 -3
  791. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +4 -3
  792. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +4 -3
  793. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +5 -4
  794. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +4 -3
  795. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +4 -3
  796. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +4 -3
  797. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +574 -0
  798. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +591 -0
  799. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +591 -0
  800. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +563 -0
  801. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +4 -3
  802. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +4 -3
  803. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +465 -0
  804. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +563 -0
  805. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +451 -0
  806. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +3 -5
  807. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +1 -2
  808. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +4 -3
  809. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +4 -3
  810. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +473 -0
  811. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +4 -3
  812. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +9 -3
  813. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +4 -3
  814. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +916 -909
  815. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +4 -3
  816. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +4 -3
  817. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +4 -3
  818. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +15 -4
  819. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +4 -3
  820. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1657 -0
  821. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1657 -0
  822. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
  823. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
  824. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +5 -4
  825. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +4 -3
  826. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +4 -3
  827. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +3 -2
  828. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +4 -3
  829. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +4 -3
  830. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +4 -3
  831. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +3 -5
  832. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +1 -2
  833. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +571 -0
  834. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +1 -2
  835. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +3 -5
  836. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +1 -2
  837. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +4 -3
  838. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +4 -3
  839. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +4 -3
  840. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +4 -3
  841. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +4 -3
  842. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +6 -5
  843. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +4 -3
  844. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +4 -3
  845. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +4 -3
  846. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +4 -3
  847. data/example_files/resources/hpxml-measures/workflow/template.osw +5 -1
  848. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
  849. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
  850. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
  851. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
  852. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
  853. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
  854. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
  855. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
  856. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
  857. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
  858. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
  859. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
  860. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
  861. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
  862. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
  863. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
  864. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
  865. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
  866. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
  867. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
  868. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
  869. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
  870. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
  871. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
  872. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
  873. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
  874. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +294 -0
  875. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
  876. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
  877. data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
  878. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +324 -382
  879. data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
  880. data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
  881. data/example_files/visualization/input_visualization_feature.html +13 -14
  882. data/example_files/visualization/input_visualization_scenario.html +14 -9
  883. data/lib/uo_cli.rb +293 -60
  884. data/lib/uo_cli/version.rb +17 -7
  885. data/requirements.txt +2 -0
  886. data/scripts/setup-env-gitbash.sh +4 -4
  887. data/scripts/setup-env-unix.sh +4 -4
  888. data/scripts/setup-env.bat +3 -3
  889. data/scripts/setup-env.ps1 +3 -3
  890. data/uo_cli.gemspec +10 -7
  891. metadata +320 -82
  892. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
  893. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
  894. data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
  895. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
  896. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
  897. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
  898. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
  899. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
  900. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
  901. data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
  902. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
  903. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -74
  904. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
  905. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +0 -109
  906. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -835
  907. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +0 -563
@@ -3,136 +3,153 @@
3
3
  Workflow Outputs
4
4
  ================
5
5
 
6
- OpenStudio-HPXML generates a variety of annual (and optionally, timeseries) outputs for a residential HPXML-based model.
6
+ OpenStudio-HPXML generates a number of workflow outputs:
7
+
8
+ ================================= ======================================
9
+ File Notes
10
+ ================================= ======================================
11
+ results_annual.csv (or .json) Summary annual outputs in either CSV or JSON formats. See :ref:`annual_outputs`.
12
+ results_timeseries.csv (or .json) Timeseries outputs in either CSV or JSON formats. See :ref:`timeseries_outputs`. Only generated if requested.
13
+ in.idf The EnergyPlus input file.
14
+ in.xml HPXML file populated with defaulted values (e.g., autosized HVAC capacities); defaults use the ``dataSource='software'`` attribute.
15
+ in.osm The OpenStudio model file. Only generated if the ``debug`` argument is used.
16
+ run.log Errors/warnings generated by the OpenStudio-HPXML workflow.
17
+ eplusout.* Minimal E+ files (e.g., sql output, error file, etc.). ALL output files can be generated using the ``debug`` argument.
18
+ ================================= ======================================
19
+
20
+ .. _annual_outputs:
7
21
 
8
22
  Annual Outputs
9
23
  --------------
10
24
 
11
- OpenStudio-HPXML will always generate an annual CSV output file called results_annual.csv, co-located with the EnergyPlus output.
12
- The CSV file includes the following sections of output:
13
-
14
- Annual Energy Consumption by Fuel Type
15
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16
-
17
- Current fuel types are:
18
-
19
- ========================== ===========================
20
- Type Notes
21
- ========================== ===========================
22
- Electricity: Total (MBtu)
23
- Electricity: Net (MBtu) Excludes any power produced by PV or generators.
24
- Natural Gas: Total (MBtu)
25
- Fuel Oil: Total (MBtu) Includes "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "kerosene", and "diesel"
26
- Propane: Total (MBtu)
27
- Wood: Total (MBtu)
28
- Wood Pellets: Total (MBtu)
29
- Coal: Total (MBtu) Includes "coal", "anthracite coal", "bituminous coal", and "coke".
30
- ========================== ===========================
31
-
32
- Annual Energy Consumption By Fuel Type and End Use
33
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34
-
35
- Current end use/fuel type combinations are:
36
-
37
- ========================================================== ====================================================
38
- Type Notes
39
- ========================================================== ====================================================
40
- Electricity: Heating (MBtu)
41
- Electricity: Heating Fans/Pumps (MBtu)
42
- Electricity: Cooling (MBtu)
43
- Electricity: Cooling Fans/Pumps (MBtu)
44
- Electricity: Hot Water (MBtu)
45
- Electricity: Hot Water Recirc Pump (MBtu)
46
- Electricity: Hot Water Solar Thermal Pump (MBtu)
47
- Electricity: Lighting Interior (MBtu)
48
- Electricity: Lighting Garage (MBtu)
49
- Electricity: Lighting Exterior (MBtu)
50
- Electricity: Mech Vent (MBtu)
51
- Electricity: Mech Vent Preheating (MBtu)
52
- Electricity: Mech Vent Precooling (MBtu)
53
- Electricity: Whole House Fan (MBtu)
54
- Electricity: Refrigerator (MBtu)
55
- Electricity: Freezer (MBtu)
56
- Electricity: Dehumidifier (MBtu)
57
- Electricity: Dishwasher (MBtu)
58
- Electricity: Clothes Washer (MBtu)
59
- Electricity: Clothes Dryer (MBtu)
60
- Electricity: Range/Oven (MBtu)
61
- Electricity: Ceiling Fan (MBtu)
62
- Electricity: Television (MBtu)
63
- Electricity: Plug Loads (MBtu)
64
- Electricity: Electric Vehicle Charging (MBtu)
65
- Electricity: Well Pump (MBtu)
66
- Electricity: Pool Heater (MBtu)
67
- Electricity: Pool Pump (MBtu)
68
- Electricity: Hot Tub Heater (MBtu)
69
- Electricity: Hot Tub Pump (MBtu)
70
- Electricity: PV (MBtu) Negative value for any power produced
71
- Electricity: Generator (MBtu) Negative value for power produced
72
- Natural Gas: Heating (MBtu)
73
- Natural Gas: Hot Water (MBtu)
74
- Natural Gas: Clothes Dryer (MBtu)
75
- Natural Gas: Range/Oven (MBtu)
76
- Natural Gas: Mech Vent Preheating (MBtu)
77
- Natural Gas: Mech Vent Precooling (MBtu)
78
- Natural Gas: Pool Heater (MBtu)
79
- Natural Gas: Hot Tub Heater (MBtu)
80
- Natural Gas: Grill (MBtu)
81
- Natural Gas: Lighting (MBtu)
82
- Natural Gas: Fireplace (MBtu)
83
- Natural Gas: Generator (MBtu) Positive value for any fuel consumed
84
- Fuel Oil: Heating (MBtu)
85
- Fuel Oil: Hot Water (MBtu)
86
- Fuel Oil: Clothes Dryer (MBtu)
87
- Fuel Oil: Range/Oven (MBtu)
88
- Fuel Oil: Mech Vent Preheating (MBtu)
89
- Fuel Oil: Mech Vent Precooling (MBtu)
90
- Fuel Oil: Grill (MBtu)
91
- Fuel Oil: Lighting (MBtu)
92
- Fuel Oil: Fireplace (MBtu)
93
- Propane: Heating (MBtu)
94
- Propane: Hot Water (MBtu)
95
- Propane: Clothes Dryer (MBtu)
96
- Propane: Range/Oven (MBtu)
97
- Propane: Mech Vent Preheating (MBtu)
98
- Propane: Mech Vent Precooling (MBtu)
99
- Propane: Grill (MBtu)
100
- Propane: Lighting (MBtu)
101
- Propane: Fireplace (MBtu)
102
- Propane: Generator (MBtu) Positive value for any fuel consumed
103
- Wood Cord: Heating (MBtu)
104
- Wood Cord: Hot Water (MBtu)
105
- Wood Cord: Clothes Dryer (MBtu)
106
- Wood Cord: Range/Oven (MBtu)
107
- Wood Cord: Mech Vent Preheating (MBtu)
108
- Wood Cord: Mech Vent Precooling (MBtu)
109
- Wood Cord: Grill (MBtu)
110
- Wood Cord: Lighting (MBtu)
111
- Wood Cord: Fireplace (MBtu)
112
- Wood Pellets: Heating (MBtu)
113
- Wood Pellets: Hot Water (MBtu)
114
- Wood Pellets: Clothes Dryer (MBtu)
115
- Wood Pellets: Range/Oven (MBtu)
116
- Wood Pellets: Mech Vent Preheating (MBtu)
117
- Wood Pellets: Mech Vent Precooling (MBtu)
118
- Wood Pellets: Grill (MBtu)
119
- Wood Pellets: Lighting (MBtu)
120
- Wood Pellets: Fireplace (MBtu)
121
- Coal: Heating (MBtu)
122
- Coal: Hot Water (MBtu)
123
- Coal: Clothes Dryer (MBtu)
124
- Coal: Range/Oven (MBtu)
125
- Coal: Mech Vent Preheating (MBtu)
126
- Coal: Mech Vent Precooling (MBtu)
127
- Coal: Grill (MBtu)
128
- Coal: Lighting (MBtu)
129
- Coal: Fireplace (MBtu)
130
- ========================================================== ====================================================
25
+ OpenStudio-HPXML will always generate an annual output file called results_annual.csv (or results_annual.json), co-located with the EnergyPlus output.
26
+ The file includes the following sections of output:
27
+
28
+ Annual Energy Consumption by Fuel Use
29
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30
+
31
+ Current fuel uses are listed below.
32
+
33
+ ==================================== ===========================
34
+ Type Notes
35
+ ==================================== ===========================
36
+ Fuel Use: Electricity: Total (MBtu)
37
+ Fuel Use: Electricity: Net (MBtu) Subtracts any power produced by PV or generators.
38
+ Fuel Use: Natural Gas: Total (MBtu)
39
+ Fuel Use: Fuel Oil: Total (MBtu) Includes "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "kerosene", and "diesel"
40
+ Fuel Use: Propane: Total (MBtu)
41
+ Fuel Use: Wood: Total (MBtu)
42
+ Fuel Use: Wood Pellets: Total (MBtu)
43
+ Fuel Use: Coal: Total (MBtu) Includes "coal", "anthracite coal", "bituminous coal", and "coke".
44
+ ==================================== ===========================
45
+
46
+ Annual Energy Consumption By End Use
47
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48
+
49
+ Current end uses are listed below.
50
+
51
+ Note that all end uses are mutually exclusive -- the "Electricity: Heating" end use, for example, excludes energy reported in the "Electricity: Heating Fans/Pumps" end use.
52
+ So the sum of all end uses for a given fuel (e.g., sum of all "End Use: Natural Gas: \*") equal the above reported fuel use (e.g., "Fuel Use: Natural Gas: Total").
53
+
54
+ =================================================================== ====================================================
55
+ Type Notes
56
+ =================================================================== ====================================================
57
+ End Use: Electricity: Heating (MBtu) Excludes fans/pumps
58
+ End Use: Electricity: Heating Fans/Pumps (MBtu)
59
+ End Use: Electricity: Cooling (MBtu) Excludes fans/pumps
60
+ End Use: Electricity: Cooling Fans/Pumps (MBtu)
61
+ End Use: Electricity: Hot Water (MBtu) Excludes recirc pump and solar thermal pump
62
+ End Use: Electricity: Hot Water Recirc Pump (MBtu)
63
+ End Use: Electricity: Hot Water Solar Thermal Pump (MBtu) Non-zero only when using detailed (not simple) solar thermal inputs
64
+ End Use: Electricity: Lighting Interior (MBtu)
65
+ End Use: Electricity: Lighting Garage (MBtu)
66
+ End Use: Electricity: Lighting Exterior (MBtu)
67
+ End Use: Electricity: Mech Vent (MBtu) Excludes preheating/precooling
68
+ End Use: Electricity: Mech Vent Preheating (MBtu)
69
+ End Use: Electricity: Mech Vent Precooling (MBtu)
70
+ End Use: Electricity: Whole House Fan (MBtu)
71
+ End Use: Electricity: Refrigerator (MBtu)
72
+ End Use: Electricity: Freezer (MBtu)
73
+ End Use: Electricity: Dehumidifier (MBtu)
74
+ End Use: Electricity: Dishwasher (MBtu)
75
+ End Use: Electricity: Clothes Washer (MBtu)
76
+ End Use: Electricity: Clothes Dryer (MBtu)
77
+ End Use: Electricity: Range/Oven (MBtu)
78
+ End Use: Electricity: Ceiling Fan (MBtu)
79
+ End Use: Electricity: Television (MBtu)
80
+ End Use: Electricity: Plug Loads (MBtu) Excludes independently reported plug loads (e.g., well pump)
81
+ End Use: Electricity: Electric Vehicle Charging (MBtu)
82
+ End Use: Electricity: Well Pump (MBtu)
83
+ End Use: Electricity: Pool Heater (MBtu)
84
+ End Use: Electricity: Pool Pump (MBtu)
85
+ End Use: Electricity: Hot Tub Heater (MBtu)
86
+ End Use: Electricity: Hot Tub Pump (MBtu)
87
+ End Use: Electricity: PV (MBtu) Negative value for any power produced
88
+ End Use: Electricity: Generator (MBtu) Negative value for any power produced
89
+ End Use: Natural Gas: Heating (MBtu)
90
+ End Use: Natural Gas: Hot Water (MBtu)
91
+ End Use: Natural Gas: Clothes Dryer (MBtu)
92
+ End Use: Natural Gas: Range/Oven (MBtu)
93
+ End Use: Natural Gas: Mech Vent Preheating (MBtu)
94
+ End Use: Natural Gas: Mech Vent Precooling (MBtu)
95
+ End Use: Natural Gas: Pool Heater (MBtu)
96
+ End Use: Natural Gas: Hot Tub Heater (MBtu)
97
+ End Use: Natural Gas: Grill (MBtu)
98
+ End Use: Natural Gas: Lighting (MBtu)
99
+ End Use: Natural Gas: Fireplace (MBtu)
100
+ End Use: Natural Gas: Generator (MBtu) Positive value for any fuel consumed
101
+ End Use: Fuel Oil: Heating (MBtu)
102
+ End Use: Fuel Oil: Hot Water (MBtu)
103
+ End Use: Fuel Oil: Clothes Dryer (MBtu)
104
+ End Use: Fuel Oil: Range/Oven (MBtu)
105
+ End Use: Fuel Oil: Mech Vent Preheating (MBtu)
106
+ End Use: Fuel Oil: Mech Vent Precooling (MBtu)
107
+ End Use: Fuel Oil: Grill (MBtu)
108
+ End Use: Fuel Oil: Lighting (MBtu)
109
+ End Use: Fuel Oil: Fireplace (MBtu)
110
+ End Use: Propane: Heating (MBtu)
111
+ End Use: Propane: Hot Water (MBtu)
112
+ End Use: Propane: Clothes Dryer (MBtu)
113
+ End Use: Propane: Range/Oven (MBtu)
114
+ End Use: Propane: Mech Vent Preheating (MBtu)
115
+ End Use: Propane: Mech Vent Precooling (MBtu)
116
+ End Use: Propane: Grill (MBtu)
117
+ End Use: Propane: Lighting (MBtu)
118
+ End Use: Propane: Fireplace (MBtu)
119
+ End Use: Propane: Generator (MBtu) Positive value for any fuel consumed
120
+ End Use: Wood Cord: Heating (MBtu)
121
+ End Use: Wood Cord: Hot Water (MBtu)
122
+ End Use: Wood Cord: Clothes Dryer (MBtu)
123
+ End Use: Wood Cord: Range/Oven (MBtu)
124
+ End Use: Wood Cord: Mech Vent Preheating (MBtu)
125
+ End Use: Wood Cord: Mech Vent Precooling (MBtu)
126
+ End Use: Wood Cord: Grill (MBtu)
127
+ End Use: Wood Cord: Lighting (MBtu)
128
+ End Use: Wood Cord: Fireplace (MBtu)
129
+ End Use: Wood Pellets: Heating (MBtu)
130
+ End Use: Wood Pellets: Hot Water (MBtu)
131
+ End Use: Wood Pellets: Clothes Dryer (MBtu)
132
+ End Use: Wood Pellets: Range/Oven (MBtu)
133
+ End Use: Wood Pellets: Mech Vent Preheating (MBtu)
134
+ End Use: Wood Pellets: Mech Vent Precooling (MBtu)
135
+ End Use: Wood Pellets: Grill (MBtu)
136
+ End Use: Wood Pellets: Lighting (MBtu)
137
+ End Use: Wood Pellets: Fireplace (MBtu)
138
+ End Use: Coal: Heating (MBtu)
139
+ End Use: Coal: Hot Water (MBtu)
140
+ End Use: Coal: Clothes Dryer (MBtu)
141
+ End Use: Coal: Range/Oven (MBtu)
142
+ End Use: Coal: Mech Vent Preheating (MBtu)
143
+ End Use: Coal: Mech Vent Precooling (MBtu)
144
+ End Use: Coal: Grill (MBtu)
145
+ End Use: Coal: Lighting (MBtu)
146
+ End Use: Coal: Fireplace (MBtu)
147
+ =================================================================== ====================================================
131
148
 
132
149
  Annual Building Loads
133
150
  ~~~~~~~~~~~~~~~~~~~~~
134
151
 
135
- Current annual building loads are:
152
+ Current annual building loads are listed below.
136
153
 
137
154
  ===================================== ==================================================================
138
155
  Type Notes
@@ -148,7 +165,7 @@ Current annual building loads are:
148
165
  Annual Unmet Building Loads
149
166
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
150
167
 
151
- Current annual unmet building loads are:
168
+ Current annual unmet building loads are listed below.
152
169
 
153
170
  ========================== =====
154
171
  Type Notes
@@ -167,7 +184,7 @@ Rather, the unmet load is only the amount of load that the room AC *should* be s
167
184
  Peak Building Electricity
168
185
  ~~~~~~~~~~~~~~~~~~~~~~~~~
169
186
 
170
- Current peak building electricity outputs are:
187
+ Current peak building electricity outputs are listed below.
171
188
 
172
189
  ================================== =========================================================
173
190
  Type Notes
@@ -179,7 +196,7 @@ Current peak building electricity outputs are:
179
196
  Peak Building Loads
180
197
  ~~~~~~~~~~~~~~~~~~~
181
198
 
182
- Current peak building loads are:
199
+ Current peak building loads are listed below.
183
200
 
184
201
  ========================== ==================================
185
202
  Type Notes
@@ -191,9 +208,13 @@ Current peak building loads are:
191
208
  Annual Component Building Loads
192
209
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
193
210
 
211
+ **Note**: This section is only available if the ``--add-component-loads`` argument is used.
212
+ The argument is not used by default for faster performance.
213
+
194
214
  Component loads represent the estimated contribution of different building components to the annual heating/cooling building loads.
195
215
  The sum of component loads for heating (or cooling) will roughly equal the annual heating (or cooling) building load reported above.
196
- Current component loads disaggregated by Heating/Cooling are:
216
+
217
+ Current component loads disaggregated by Heating/Cooling are listed below.
197
218
 
198
219
  ================================================= =========================================================================================================
199
220
  Type Notes
@@ -220,7 +241,7 @@ Current component loads disaggregated by Heating/Cooling are:
220
241
  Annual Hot Water Uses
221
242
  ~~~~~~~~~~~~~~~~~~~~~
222
243
 
223
- Current annual hot water uses are:
244
+ Current annual hot water uses are listed below.
224
245
 
225
246
  =================================== ====================
226
247
  Type Notes
@@ -231,14 +252,15 @@ Current annual hot water uses are:
231
252
  Hot Water: Distribution Waste (gal)
232
253
  =================================== ====================
233
254
 
255
+ .. _timeseries_outputs:
234
256
 
235
257
  Timeseries Outputs
236
258
  ------------------
237
259
 
238
- OpenStudio-HPXML can optionally generate a timeseries CSV output file.
239
- The timeseries output file is called results_timeseries.csv and co-located with the EnergyPlus output.
260
+ OpenStudio-HPXML can optionally generate a timeseries output file.
261
+ The timeseries output file is called results_timeseries.csv (or results_timeseries.json) and co-located with the EnergyPlus output.
240
262
 
241
- Depending on the outputs requested, CSV files may include:
263
+ Depending on the outputs requested, the file may include:
242
264
 
243
265
  =================================== ==================================================================================================================================
244
266
  Type Notes
@@ -248,7 +270,13 @@ Depending on the outputs requested, CSV files may include:
248
270
  Hot Water Uses Water use for each end use type (in gallons).
249
271
  Total Loads Heating, cooling, and hot water loads (in kBtu) for the building.
250
272
  Component Loads Heating and cooling loads (in kBtu) disaggregated by component (e.g., Walls, Windows, Infiltration, Ducts, etc.).
273
+ Unmet Loads Unmet heating and cooling loads (in kBtu) for the building.
251
274
  Zone Temperatures Average temperatures (in deg-F) for each space modeled (e.g., living space, attic, garage, basement, crawlspace, etc.).
252
275
  Airflows Airflow rates (in cfm) for infiltration, mechanical ventilation (including clothes dryer exhaust), natural ventilation, whole house fans.
253
276
  Weather Weather file data including outdoor temperatures, relative humidity, wind speed, and solar.
254
277
  =================================== ==================================================================================================================================
278
+
279
+ Timeseries outputs can be one of the following frequencies: hourly, daily, monthly, or timestep (i.e., equal to the simulation timestep, which defaults to an hour but can be sub-hourly).
280
+
281
+ Timestamps in the output use the end-of-hour (or end-of-day for daily frequency, etc.) convention.
282
+ Most outputs will be summed over the hour (e.g., energy) but some will be averaged over the hour (e.g., temperatures, airflows).
@@ -16,7 +16,7 @@ def create_osws
16
16
  'base-appliances-dehumidifier.osw' => 'base-location-dallas-tx.osw',
17
17
  'base-appliances-dehumidifier-ief-portable.osw' => 'base-appliances-dehumidifier.osw',
18
18
  'base-appliances-dehumidifier-ief-whole-home.osw' => 'base-appliances-dehumidifier-ief-portable.osw',
19
- 'base-appliances-dehumidifier-50percent.osw' => 'base-appliances-dehumidifier.osw',
19
+ # 'base-appliances-dehumidifier-multiple.osw' => 'base-appliances-dehumidifier.osw',
20
20
  'base-appliances-gas.osw' => 'base.osw',
21
21
  'base-appliances-modified.osw' => 'base.osw',
22
22
  'base-appliances-none.osw' => 'base.osw',
@@ -29,20 +29,37 @@ def create_osws
29
29
  'base-atticroof-radiant-barrier.osw' => 'base-location-dallas-tx.osw',
30
30
  'base-atticroof-unvented-insulated-roof.osw' => 'base.osw',
31
31
  'base-atticroof-vented.osw' => 'base.osw',
32
+ 'base-bldgtype-single-family-attached.osw' => 'base.osw',
32
33
  'base-bldgtype-multifamily.osw' => 'base.osw',
33
34
  # 'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
34
35
  # 'base-bldgtype-multifamily-adjacent-to-multiple.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
35
36
  # 'base-bldgtype-multifamily-adjacent-to-non-freezing-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
36
37
  # 'base-bldgtype-multifamily-adjacent-to-other-heated-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
37
38
  # 'base-bldgtype-multifamily-adjacent-to-other-housing-unit.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
38
- # 'base-bldgtype-multifamily-shared-laundry-room.osw' => 'base.osw', # Not going to support shared laundry room
39
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw' => 'base-bldgtype-multifamily.osw',
40
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw',
41
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.osw',
42
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw',
43
+ # 'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.osw',
44
+ 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw' => 'base-bldgtype-multifamily.osw',
45
+ 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw',
46
+ # 'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw',
47
+ # 'base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.osw' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw',
48
+ # 'base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw',
49
+ # 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw' => 'base-bldgtype-multifamily.osw',
50
+ # 'base-bldgtype-multifamily-shared-chiller-only-fan-coil.osw' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw',
51
+ # 'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-chiller-only-fan-coil.osw',
52
+ # 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw',
53
+ # 'base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.osw',
54
+ # 'base-bldgtype-multifamily-shared-generator.osw' => 'base-bldgtype-multifamily.osw',
55
+ # 'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.osw' => 'base-bldgtype-multifamily.osw',
56
+ # 'base-bldgtype-multifamily-shared-laundry-room.osw' => 'base-bldgtype-multifamily.osw', # Not going to support shared laundry room
39
57
  'base-bldgtype-multifamily-shared-mechvent.osw' => 'base-bldgtype-multifamily.osw',
40
58
  # 'base-bldgtype-multifamily-shared-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
41
59
  'base-bldgtype-multifamily-shared-mechvent-preconditioning.osw' => 'base-bldgtype-multifamily-shared-mechvent.osw',
42
60
  'base-bldgtype-multifamily-shared-pv.osw' => 'base-bldgtype-multifamily.osw',
43
61
  'base-bldgtype-multifamily-shared-water-heater.osw' => 'base-bldgtype-multifamily.osw',
44
62
  # 'base-bldgtype-multifamily-shared-water-heater-recirc.osw' => 'base.osw', $ Not supporting shared recirculation for now
45
- 'base-bldgtype-single-family-attached.osw' => 'base.osw',
46
63
  'base-dhw-combi-tankless.osw' => 'base-dhw-indirect.osw',
47
64
  'base-dhw-combi-tankless-outside.osw' => 'base-dhw-combi-tankless.osw',
48
65
  # 'base-dhw-desuperheater.osw' => 'base.osw', # Not supporting desuperheater for now
@@ -96,7 +113,7 @@ def create_osws
96
113
  'base-dhw-tank-oil.osw' => 'base.osw',
97
114
  'base-dhw-tank-wood.osw' => 'base.osw',
98
115
  'base-enclosure-2stories.osw' => 'base.osw',
99
- 'base-enclosure-2stories-garage.osw' => 'base.osw',
116
+ 'base-enclosure-2stories-garage.osw' => 'base-enclosure-2stories.osw',
100
117
  'base-enclosure-beds-1.osw' => 'base.osw',
101
118
  'base-enclosure-beds-2.osw' => 'base.osw',
102
119
  'base-enclosure-beds-4.osw' => 'base.osw',
@@ -110,11 +127,14 @@ def create_osws
110
127
  'base-enclosure-overhangs.osw' => 'base.osw',
111
128
  # 'base-enclosure-rooftypes.osw' => 'base.osw',
112
129
  # 'base-enclosure-skylights.osw' => 'base.osw', # There are no front roof surfaces, but 15.0 ft^2 of skylights were specified.
130
+ # 'base-enclosure-skylights-shading.osw' => 'base-enclosure-skylights.osw", # Not going to support interior/exterior shading by facade
113
131
  # 'base-enclosure-split-surfaces.osw' => 'base.osw',
132
+ # 'base-enclosure-split-surfaces2.osw' => 'base.osw',
114
133
  # 'base-enclosure-walltypes.osw' => 'base.osw',
115
- # 'base-enclosure-windows-interior-shading.osw' => 'base.osw', # Not going to support interior shading by facade
134
+ # 'base-enclosure-windows-shading.osw' => 'base.osw', # Not going to support interior/exterior shading by facade
116
135
  'base-enclosure-windows-none.osw' => 'base.osw',
117
136
  'base-foundation-ambient.osw' => 'base.osw',
137
+ # 'base-foundation-basement-garage.osw' => 'base.osw',
118
138
  # 'base-foundation-complex.osw' => 'base.osw', # Not going to support multiple foundation types
119
139
  'base-foundation-conditioned-basement-slab-insulation.osw' => 'base.osw',
120
140
  # 'base-foundation-conditioned-basement-wall-interior-insulation.osw' => 'base.osw',
@@ -128,6 +148,8 @@ def create_osws
128
148
  'base-foundation-vented-crawlspace.osw' => 'base.osw',
129
149
  # 'base-foundation-walkout-basement.osw' => 'base.osw', # 1 kiva object instead of 4
130
150
  'base-hvac-air-to-air-heat-pump-1-speed.osw' => 'base.osw',
151
+ 'base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
152
+ 'base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
131
153
  'base-hvac-air-to-air-heat-pump-2-speed.osw' => 'base.osw',
132
154
  'base-hvac-air-to-air-heat-pump-var-speed.osw' => 'base.osw',
133
155
  'base-hvac-boiler-coal-only.osw' => 'base.osw',
@@ -155,6 +177,7 @@ def create_osws
155
177
  'base-hvac-fireplace-wood-only.osw' => 'base.osw',
156
178
  'base-hvac-fixed-heater-gas-only.osw' => 'base.osw',
157
179
  'base-hvac-floor-furnace-propane-only.osw' => 'base.osw',
180
+ 'base-hvac-furnace-coal-only.osw' => 'base.osw',
158
181
  'base-hvac-furnace-elec-central-ac-1-speed.osw' => 'base.osw',
159
182
  'base-hvac-furnace-elec-only.osw' => 'base.osw',
160
183
  'base-hvac-furnace-gas-central-ac-2-speed.osw' => 'base.osw',
@@ -166,7 +189,23 @@ def create_osws
166
189
  'base-hvac-furnace-wood-only.osw' => 'base.osw',
167
190
  # 'base-hvac-furnace-x3-dse.osw' => 'base.osw', # Not going to support DSE
168
191
  'base-hvac-ground-to-air-heat-pump.osw' => 'base.osw',
192
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
193
+ 'base-hvac-ground-to-air-heat-pump-heating-only.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
169
194
  # 'base-hvac-ideal-air.osw' => 'base.osw',
195
+ 'base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
196
+ 'base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
197
+ 'base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
198
+ # 'base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
199
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
200
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw' => 'base-hvac-air-to-air-heat-pump-2-speed.osw',
201
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw' => 'base-hvac-air-to-air-heat-pump-var-speed.osw',
202
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
203
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw' => 'base-hvac-furnace-gas-central-ac-2-speed.osw',
204
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw' => 'base-hvac-furnace-gas-central-ac-var-speed.osw',
205
+ 'base-hvac-install-quality-all-furnace-gas-only.osw' => 'base-hvac-furnace-gas-only.osw',
206
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
207
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
208
+ 'base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw' => 'base-hvac-mini-split-air-conditioner-only-ducted.osw',
170
209
  'base-hvac-mini-split-air-conditioner-only-ducted.osw' => 'base.osw',
171
210
  'base-hvac-mini-split-air-conditioner-only-ductless.osw' => 'base-hvac-mini-split-air-conditioner-only-ducted.osw',
172
211
  'base-hvac-mini-split-heat-pump-ducted.osw' => 'base.osw',
@@ -174,11 +213,10 @@ def create_osws
174
213
  'base-hvac-mini-split-heat-pump-ducted-heating-only.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
175
214
  'base-hvac-mini-split-heat-pump-ductless.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
176
215
  # 'base-hvac-multiple.osw' => 'base.osw', # Not supporting multiple heating/cooling systems for now
177
- # 'base-hvac-multiple2.osw' => 'base.osw', # Not supporting multiple heating/cooling systems for now
178
216
  'base-hvac-none.osw' => 'base.osw',
179
217
  'base-hvac-portable-heater-gas-only.osw' => 'base.osw',
180
218
  # 'base-hvac-programmable-thermostat.osw' => 'base.osw',
181
- # 'base-hvac-programmable-thermostat-detailed.osw' => 'base.osw',
219
+ 'base-hvac-programmable-thermostat-detailed.osw' => 'base.osw',
182
220
  'base-hvac-room-ac-only.osw' => 'base.osw',
183
221
  'base-hvac-room-ac-only-33percent.osw' => 'base.osw',
184
222
  'base-hvac-setpoints.osw' => 'base.osw',
@@ -191,10 +229,14 @@ def create_osws
191
229
  'base-lighting-detailed.osw' => 'base.osw',
192
230
  # 'base-lighting-none.osw' => 'base.osw',
193
231
  'base-location-AMY-2012.osw' => 'base.osw',
194
- 'base-location-baltimore-md.osw' => 'base.osw',
232
+ 'base-location-baltimore-md.osw' => 'base-foundation-unvented-crawlspace.osw',
195
233
  'base-location-dallas-tx.osw' => 'base-foundation-slab.osw',
196
- 'base-location-duluth-mn.osw' => 'base.osw',
234
+ 'base-location-duluth-mn.osw' => 'base-foundation-unconditioned-basement.osw',
235
+ 'base-location-helena-mt.osw' => 'base.osw',
236
+ 'base-location-honolulu-hi.osw' => 'base-foundation-slab.osw',
197
237
  'base-location-miami-fl.osw' => 'base-foundation-slab.osw',
238
+ 'base-location-phoenix-az.osw' => 'base-foundation-slab.osw',
239
+ 'base-location-portland-or.osw' => 'base-foundation-vented-crawlspace.osw',
198
240
  'base-mechvent-balanced.osw' => 'base.osw',
199
241
  'base-mechvent-bath-kitchen-fans.osw' => 'base.osw',
200
242
  'base-mechvent-cfis.osw' => 'base.osw',
@@ -203,17 +245,21 @@ def create_osws
203
245
  'base-mechvent-erv.osw' => 'base.osw',
204
246
  'base-mechvent-erv-atre-asre.osw' => 'base.osw',
205
247
  'base-mechvent-exhaust.osw' => 'base.osw',
248
+ 'base-mechvent-exhaust-rated-flow-rate.osw' => 'base.osw',
206
249
  'base-mechvent-hrv.osw' => 'base.osw',
207
250
  'base-mechvent-hrv-asre.osw' => 'base.osw',
208
251
  # 'base-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
209
252
  'base-mechvent-supply.osw' => 'base.osw',
210
253
  'base-mechvent-whole-house-fan.osw' => 'base.osw',
211
254
  'base-misc-defaults.osw' => 'base.osw',
255
+ # 'base-misc-generators.osw' => 'base.osw',
212
256
  'base-misc-loads-large-uncommon.osw' => 'base.osw',
213
257
  'base-misc-loads-large-uncommon2.osw' => 'base-misc-loads-large-uncommon.osw',
214
258
  # 'base-misc-loads-none.osw' => 'base.osw',
215
259
  'base-misc-neighbor-shading.osw' => 'base.osw',
260
+ 'base-misc-shielding-of-home.osw' => 'base.osw',
216
261
  'base-misc-usage-multiplier.osw' => 'base.osw',
262
+ # 'base-multiple-buildings.osw' => 'base.osw',
217
263
  'base-pv.osw' => 'base.osw',
218
264
  'base-simcontrol-calendar-year-custom.osw' => 'base.osw',
219
265
  'base-simcontrol-daylight-saving-custom.osw' => 'base.osw',
@@ -221,6 +267,7 @@ def create_osws
221
267
  'base-simcontrol-runperiod-1-month.osw' => 'base.osw',
222
268
  'base-simcontrol-timestep-10-mins.osw' => 'base.osw',
223
269
  'base-schedules-stochastic.osw' => 'base.osw',
270
+ 'base-schedules-stochastic-vacant.osw' => 'base-schedules-stochastic.osw',
224
271
  'base-schedules-user-specified.osw' => 'base.osw',
225
272
 
226
273
  # Extra test files that don't correspond with sample files
@@ -228,13 +275,115 @@ def create_osws
228
275
  'extra-pv-roofpitch.osw' => 'base.osw',
229
276
  'extra-dhw-solar-latitude.osw' => 'base.osw',
230
277
  'extra-second-refrigerator.osw' => 'base.osw',
231
- 'extra-second-heating-system-portable-heater.osw' => 'base.osw',
232
- 'extra-second-heating-system-fireplace.osw' => 'base.osw',
278
+ 'extra-second-heating-system-portable-heater-to-heating-system.osw' => 'base.osw',
279
+ 'extra-second-heating-system-fireplace-to-heating-system.osw' => 'base-hvac-elec-resistance-only.osw',
280
+ 'extra-second-heating-system-boiler-to-heating-system.osw' => 'base-hvac-boiler-gas-central-ac-1-speed.osw',
281
+ 'extra-second-heating-system-portable-heater-to-heat-pump.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
282
+ 'extra-second-heating-system-fireplace-to-heat-pump.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
283
+ 'extra-second-heating-system-boiler-to-heat-pump.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
284
+ 'extra-enclosure-windows-shading.osw' => 'base.osw',
233
285
  'extra-enclosure-garage-partially-protruded.osw' => 'base.osw',
234
- 'extra-vacancy-6-months.osw' => 'base-schedules-stochastic.osw',
286
+ 'extra-enclosure-garage-atticroof-conditioned.osw' => 'base-enclosure-garage.osw',
287
+ 'extra-enclosure-atticroof-conditioned-eaves-gable.osw' => 'base-foundation-slab.osw',
288
+ 'extra-enclosure-atticroof-conditioned-eaves-hip.osw' => 'extra-enclosure-atticroof-conditioned-eaves-gable.osw',
235
289
  'extra-schedules-random-seed.osw' => 'base-schedules-stochastic.osw',
236
- 'extra-hvac-programmable-thermostat.osw' => 'base.osw',
237
- 'extra-plug-loads-additional-multipliers.osw' => 'base.osw',
290
+ 'extra-zero-refrigerator-kwh.osw' => 'base.osw',
291
+ 'extra-zero-extra-refrigerator-kwh.osw' => 'base.osw',
292
+ 'extra-zero-freezer-kwh.osw' => 'base.osw',
293
+ 'extra-zero-clothes-washer-kwh.osw' => 'base.osw',
294
+ 'extra-zero-dishwasher-kwh.osw' => 'base.osw',
295
+ 'extra-bldgtype-single-family-attached-atticroof-flat.osw' => 'base-bldgtype-single-family-attached.osw',
296
+ 'extra-gas-pool-heater-with-zero-kwh.osw' => 'base.osw',
297
+ 'extra-gas-hot-tub-heater-with-zero-kwh.osw' => 'base.osw',
298
+
299
+ 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
300
+ 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw' => 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw',
301
+ 'extra-bldgtype-multifamily-eaves.osw' => 'extra-bldgtype-multifamily-slab.osw',
302
+
303
+ 'extra-bldgtype-single-family-attached-slab.osw' => 'base-bldgtype-single-family-attached.osw',
304
+ 'extra-bldgtype-single-family-attached-vented-crawlspace.osw' => 'base-bldgtype-single-family-attached.osw',
305
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw' => 'base-bldgtype-single-family-attached.osw',
306
+ 'extra-bldgtype-single-family-attached-unconditioned-basement.osw' => 'base-bldgtype-single-family-attached.osw',
307
+
308
+ 'extra-bldgtype-single-family-attached-double-loaded-interior.osw' => 'base-bldgtype-single-family-attached.osw',
309
+ 'extra-bldgtype-single-family-attached-single-exterior-front.osw' => 'base-bldgtype-single-family-attached.osw',
310
+ 'extra-bldgtype-single-family-attached-double-exterior.osw' => 'base-bldgtype-single-family-attached.osw',
311
+
312
+ 'extra-bldgtype-single-family-attached-slab-middle.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
313
+ 'extra-bldgtype-single-family-attached-slab-right.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
314
+ 'extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw' => 'extra-bldgtype-single-family-attached-vented-crawlspace.osw',
315
+ 'extra-bldgtype-single-family-attached-vented-crawlspace-right.osw' => 'extra-bldgtype-single-family-attached-vented-crawlspace.osw',
316
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw' => 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw',
317
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw' => 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw',
318
+ 'extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw' => 'extra-bldgtype-single-family-attached-unconditioned-basement.osw',
319
+ 'extra-bldgtype-single-family-attached-unconditioned-basement-right.osw' => 'extra-bldgtype-single-family-attached-unconditioned-basement.osw',
320
+
321
+ 'extra-bldgtype-multifamily-slab.osw' => 'base-bldgtype-multifamily.osw',
322
+ 'extra-bldgtype-multifamily-vented-crawlspace.osw' => 'base-bldgtype-multifamily.osw',
323
+ 'extra-bldgtype-multifamily-unvented-crawlspace.osw' => 'base-bldgtype-multifamily.osw',
324
+
325
+ 'extra-bldgtype-multifamily-double-loaded-interior.osw' => 'base-bldgtype-multifamily.osw',
326
+ 'extra-bldgtype-multifamily-single-exterior-front.osw' => 'base-bldgtype-multifamily.osw',
327
+ 'extra-bldgtype-multifamily-double-exterior.osw' => 'base-bldgtype-multifamily.osw',
328
+
329
+ 'extra-bldgtype-multifamily-slab-left-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
330
+ 'extra-bldgtype-multifamily-slab-left-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
331
+ 'extra-bldgtype-multifamily-slab-left-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
332
+ 'extra-bldgtype-multifamily-slab-middle-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
333
+ 'extra-bldgtype-multifamily-slab-middle-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
334
+ 'extra-bldgtype-multifamily-slab-middle-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
335
+ 'extra-bldgtype-multifamily-slab-right-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
336
+ 'extra-bldgtype-multifamily-slab-right-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
337
+ 'extra-bldgtype-multifamily-slab-right-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
338
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
339
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
340
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
341
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
342
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
343
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
344
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
345
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
346
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
347
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
348
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
349
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
350
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
351
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
352
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
353
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
354
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
355
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
356
+
357
+ 'extra-bldgtype-multifamily-slab-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab.osw',
358
+ 'extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
359
+ 'extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
360
+ 'extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-bottom.osw',
361
+ 'extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-middle.osw',
362
+ 'extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-top.osw',
363
+ 'extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-bottom.osw',
364
+ 'extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-middle.osw',
365
+ 'extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-top.osw',
366
+ 'extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-bottom.osw',
367
+ 'extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-middle.osw',
368
+ 'extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-top.osw',
369
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw',
370
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw',
371
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-top.osw',
372
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw',
373
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw',
374
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw',
375
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw',
376
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw',
377
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-top.osw',
378
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw',
379
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw',
380
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw',
381
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw',
382
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw',
383
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw',
384
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw',
385
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw',
386
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw',
238
387
 
239
388
  'invalid_files/non-electric-heat-pump-water-heater.osw' => 'base.osw',
240
389
  'invalid_files/heating-system-and-heat-pump.osw' => 'base.osw',
@@ -249,6 +398,8 @@ def create_osws
249
398
  'invalid_files/slab-non-zero-foundation-height-above-grade.osw' => 'base.osw',
250
399
  'invalid_files/ducts-location-and-areas-not-same-type.osw' => 'base.osw',
251
400
  'invalid_files/second-heating-system-serves-majority-heat.osw' => 'base.osw',
401
+ 'invalid_files/second-heating-system-serves-total-heat-load.osw' => 'base.osw',
402
+ 'invalid_files/second-heating-system-but-no-primary-heating.osw' => 'base.osw',
252
403
  'invalid_files/single-family-attached-no-building-orientation.osw' => 'base-bldgtype-single-family-attached.osw',
253
404
  'invalid_files/multifamily-no-building-orientation.osw' => 'base-bldgtype-multifamily.osw',
254
405
  'invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'base.osw',
@@ -259,8 +410,15 @@ def create_osws
259
410
  'invalid_files/conditioned-basement-with-ceiling-insulation.osw' => 'base.osw',
260
411
  'invalid_files/conditioned-attic-with-floor-insulation.osw' => 'base.osw',
261
412
  'invalid_files/dhw-indirect-without-boiler.osw' => 'base.osw',
262
- 'invalid_files/multipliers-without-plug-loads.osw' => 'base.osw',
263
- 'invalid_files/multipliers-without-fuel-loads.osw' => 'base.osw'
413
+ 'invalid_files/multipliers-without-tv-plug-loads.osw' => 'base.osw',
414
+ 'invalid_files/multipliers-without-other-plug-loads.osw' => 'base.osw',
415
+ 'invalid_files/multipliers-without-well-pump-plug-loads.osw' => 'base.osw',
416
+ 'invalid_files/multipliers-without-vehicle-plug-loads.osw' => 'base.osw',
417
+ 'invalid_files/multipliers-without-fuel-loads.osw' => 'base.osw',
418
+ 'invalid_files/foundation-wall-insulation-greater-than-height.osw' => 'base-foundation-vented-crawlspace.osw',
419
+ 'invalid_files/conditioned-attic-with-one-floor-above-grade.osw' => 'base.osw',
420
+ 'invalid_files/zero-number-of-bedrooms.osw' => 'base.osw',
421
+ 'invalid_files/single-family-detached-with-shared-system.osw' => 'base.osw'
264
422
  }
265
423
 
266
424
  puts "Generating #{osws_files.size} OSW files..."
@@ -359,6 +517,7 @@ def get_values(osw_file, step)
359
517
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementConditioned)
360
518
  step.setArgument('geometry_foundation_height', 8.0)
361
519
  step.setArgument('geometry_foundation_height_above_grade', 1.0)
520
+ step.setArgument('geometry_rim_joist_height', 9.25)
362
521
  step.setArgument('geometry_roof_type', 'gable')
363
522
  step.setArgument('geometry_roof_pitch', '6:12')
364
523
  step.setArgument('geometry_attic_type', HPXML::AtticTypeUnvented)
@@ -366,11 +525,13 @@ def get_values(osw_file, step)
366
525
  step.setArgument('geometry_num_bedrooms', 3)
367
526
  step.setArgument('geometry_num_bathrooms', '2')
368
527
  step.setArgument('geometry_num_occupants', '3')
528
+ step.setArgument('geometry_has_flue_or_chimney', Constants.Auto)
369
529
  step.setArgument('floor_assembly_r', 0)
370
530
  step.setArgument('foundation_wall_insulation_r', 8.9)
371
531
  step.setArgument('foundation_wall_insulation_distance_to_top', 0.0)
372
- step.setArgument('foundation_wall_insulation_distance_to_bottom', 8.0)
532
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', Constants.Auto)
373
533
  step.setArgument('foundation_wall_thickness', '8.0')
534
+ step.setArgument('rim_joist_assembly_r', 23.0)
374
535
  step.setArgument('slab_perimeter_insulation_r', 0)
375
536
  step.setArgument('slab_perimeter_depth', 0)
376
537
  step.setArgument('slab_under_insulation_r', 0)
@@ -380,11 +541,9 @@ def get_values(osw_file, step)
380
541
  step.setArgument('slab_carpet_r', '0.0')
381
542
  step.setArgument('ceiling_assembly_r', 39.3)
382
543
  step.setArgument('roof_material_type', HPXML::RoofTypeAsphaltShingles)
383
- step.setArgument('roof_color', Constants.Auto)
544
+ step.setArgument('roof_color', HPXML::ColorMedium)
384
545
  step.setArgument('roof_assembly_r', 2.3)
385
- step.setArgument('roof_solar_absorptance', Constants.Auto)
386
- step.setArgument('roof_emittance', '0.92')
387
- step.setArgument('roof_radiant_barrier', 'false')
546
+ step.setArgument('roof_radiant_barrier', false)
388
547
  step.setArgument('roof_radiant_barrier_grade', '1')
389
548
  step.setArgument('neighbor_front_distance', 0)
390
549
  step.setArgument('neighbor_back_distance', 0)
@@ -396,10 +555,8 @@ def get_values(osw_file, step)
396
555
  step.setArgument('neighbor_right_height', Constants.Auto)
397
556
  step.setArgument('wall_type', HPXML::WallTypeWoodStud)
398
557
  step.setArgument('wall_siding_type', HPXML::SidingTypeWood)
399
- step.setArgument('wall_color', Constants.Auto)
558
+ step.setArgument('wall_color', HPXML::ColorMedium)
400
559
  step.setArgument('wall_assembly_r', 23)
401
- step.setArgument('wall_solar_absorptance', Constants.Auto)
402
- step.setArgument('wall_emittance', '0.92')
403
560
  step.setArgument('window_front_wwr', 0)
404
561
  step.setArgument('window_back_wwr', 0)
405
562
  step.setArgument('window_left_wwr', 0)
@@ -433,40 +590,39 @@ def get_values(osw_file, step)
433
590
  step.setArgument('air_leakage_units', HPXML::UnitsACH)
434
591
  step.setArgument('air_leakage_house_pressure', 50)
435
592
  step.setArgument('air_leakage_value', 3)
436
- step.setArgument('air_leakage_shelter_coefficient', Constants.Auto)
593
+ step.setArgument('air_leakage_shielding_of_home', Constants.Auto)
437
594
  step.setArgument('heating_system_type', HPXML::HVACTypeFurnace)
438
595
  step.setArgument('heating_system_fuel', HPXML::FuelTypeNaturalGas)
439
596
  step.setArgument('heating_system_heating_efficiency', 0.92)
440
- step.setArgument('heating_system_heating_capacity', '64000.0')
597
+ step.setArgument('heating_system_heating_capacity', '36000.0')
441
598
  step.setArgument('heating_system_fraction_heat_load_served', 1)
442
- step.setArgument('heating_system_has_flue_or_chimney', false)
443
599
  step.setArgument('cooling_system_type', HPXML::HVACTypeCentralAirConditioner)
444
- step.setArgument('cooling_system_cooling_efficiency_seer', 13.0)
445
- step.setArgument('cooling_system_cooling_efficiency_eer', 8.5)
600
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsSEER)
601
+ step.setArgument('cooling_system_cooling_efficiency', 13.0)
446
602
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeSingleStage)
447
603
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.73)
448
- step.setArgument('cooling_system_cooling_capacity', '48000.0')
604
+ step.setArgument('cooling_system_cooling_capacity', '24000.0')
449
605
  step.setArgument('cooling_system_fraction_cool_load_served', 1)
450
606
  step.setArgument('cooling_system_is_ducted', false)
451
607
  step.setArgument('heat_pump_type', 'none')
452
- step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
453
- step.setArgument('heat_pump_heating_efficiency_cop', 3.6)
454
- step.setArgument('heat_pump_cooling_efficiency_seer', 13.0)
455
- step.setArgument('heat_pump_cooling_efficiency_eer', 16.6)
608
+ step.setArgument('heat_pump_heating_efficiency_type', HPXML::UnitsHSPF)
609
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
610
+ step.setArgument('heat_pump_cooling_efficiency_type', HPXML::UnitsSEER)
611
+ step.setArgument('heat_pump_cooling_efficiency', 13.0)
456
612
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeSingleStage)
457
613
  step.setArgument('heat_pump_cooling_sensible_heat_fraction', 0.73)
458
- step.setArgument('heat_pump_heating_capacity', '64000.0')
459
- step.setArgument('heat_pump_heating_capacity_17F', Constants.Auto)
460
- step.setArgument('heat_pump_cooling_capacity', '48000.0')
614
+ step.setArgument('heat_pump_heating_capacity', '36000.0')
615
+ step.setArgument('heat_pump_heating_capacity_17_f', Constants.Auto)
616
+ step.setArgument('heat_pump_cooling_capacity', '36000.0')
461
617
  step.setArgument('heat_pump_fraction_heat_load_served', 1)
462
618
  step.setArgument('heat_pump_fraction_cool_load_served', 1)
463
619
  step.setArgument('heat_pump_backup_fuel', 'none')
464
620
  step.setArgument('heat_pump_backup_heating_efficiency', 1)
465
- step.setArgument('heat_pump_backup_heating_capacity', '34121.0')
466
- step.setArgument('setpoint_heating_weekday_temp', 68)
467
- step.setArgument('setpoint_heating_weekend_temp', 68)
468
- step.setArgument('setpoint_cooling_weekday_temp', 78)
469
- step.setArgument('setpoint_cooling_weekend_temp', 78)
621
+ step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
622
+ step.setArgument('setpoint_heating_weekday', '68')
623
+ step.setArgument('setpoint_heating_weekend', '68')
624
+ step.setArgument('setpoint_cooling_weekday', '78')
625
+ step.setArgument('setpoint_cooling_weekend', '78')
470
626
  step.setArgument('ducts_supply_leakage_units', HPXML::UnitsCFM25)
471
627
  step.setArgument('ducts_return_leakage_units', HPXML::UnitsCFM25)
472
628
  step.setArgument('ducts_supply_leakage_value', 75.0)
@@ -477,32 +633,29 @@ def get_values(osw_file, step)
477
633
  step.setArgument('ducts_return_location', HPXML::LocationAtticUnvented)
478
634
  step.setArgument('ducts_supply_surface_area', '150.0')
479
635
  step.setArgument('ducts_return_surface_area', '50.0')
480
- step.setArgument('ducts_number_of_return_registers', Constants.Auto)
636
+ step.setArgument('ducts_number_of_return_registers', '2')
481
637
  step.setArgument('heating_system_type_2', 'none')
482
638
  step.setArgument('heating_system_fuel_2', HPXML::FuelTypeElectricity)
483
639
  step.setArgument('heating_system_heating_efficiency_2', 1.0)
484
640
  step.setArgument('heating_system_heating_capacity_2', Constants.Auto)
485
641
  step.setArgument('heating_system_fraction_heat_load_served_2', 0.25)
486
- step.setArgument('heating_system_has_flue_or_chimney_2', false)
487
642
  step.setArgument('mech_vent_fan_type', 'none')
488
643
  step.setArgument('mech_vent_flow_rate', 110)
489
644
  step.setArgument('mech_vent_hours_in_operation', 24)
490
- step.setArgument('mech_vent_total_recovery_efficiency_type', 'Unadjusted')
645
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Unadjusted')
491
646
  step.setArgument('mech_vent_total_recovery_efficiency', 0.48)
492
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Unadjusted')
493
647
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.72)
494
648
  step.setArgument('mech_vent_fan_power', 30)
495
649
  step.setArgument('mech_vent_num_units_served', 1)
496
650
  step.setArgument('mech_vent_fan_type_2', 'none')
497
651
  step.setArgument('mech_vent_flow_rate_2', 110)
498
652
  step.setArgument('mech_vent_hours_in_operation_2', 24)
499
- step.setArgument('mech_vent_total_recovery_efficiency_type_2', 'Unadjusted')
653
+ step.setArgument('mech_vent_recovery_efficiency_type_2', 'Unadjusted')
500
654
  step.setArgument('mech_vent_total_recovery_efficiency_2', 0.48)
501
- step.setArgument('mech_vent_sensible_recovery_efficiency_type_2', 'Unadjusted')
502
655
  step.setArgument('mech_vent_sensible_recovery_efficiency_2', 0.72)
503
656
  step.setArgument('mech_vent_fan_power_2', 30)
504
- step.setArgument('kitchen_fans_present', false)
505
- step.setArgument('bathroom_fans_present', false)
657
+ step.setArgument('kitchen_fans_quantity', '0')
658
+ step.setArgument('bathroom_fans_quantity', '0')
506
659
  step.setArgument('whole_house_fan_present', false)
507
660
  step.setArgument('whole_house_fan_flow_rate', 4500)
508
661
  step.setArgument('whole_house_fan_power', 300)
@@ -510,14 +663,12 @@ def get_values(osw_file, step)
510
663
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeElectricity)
511
664
  step.setArgument('water_heater_location', HPXML::LocationLivingSpace)
512
665
  step.setArgument('water_heater_tank_volume', '40')
513
- step.setArgument('water_heater_heating_capacity', '18767')
514
666
  step.setArgument('water_heater_efficiency_type', 'EnergyFactor')
515
667
  step.setArgument('water_heater_efficiency', 0.95)
516
668
  step.setArgument('water_heater_recovery_efficiency', '0.76')
517
669
  step.setArgument('water_heater_standby_loss', 0)
518
670
  step.setArgument('water_heater_jacket_rvalue', 0)
519
671
  step.setArgument('water_heater_setpoint_temperature', '125')
520
- step.setArgument('water_heater_has_flue_or_chimney', false)
521
672
  step.setArgument('water_heater_num_units_served', 1)
522
673
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeStandard)
523
674
  step.setArgument('dhw_distribution_standard_piping_length', '50')
@@ -578,19 +729,15 @@ def get_values(osw_file, step)
578
729
  step.setArgument('holiday_lighting_period_begin_day_of_month', Constants.Auto)
579
730
  step.setArgument('holiday_lighting_period_end_month', Constants.Auto)
580
731
  step.setArgument('holiday_lighting_period_end_day_of_month', Constants.Auto)
581
- step.setArgument('dehumidifier_present', false)
582
- step.setArgument('dehumidifier_type', HPXML::DehumidifierTypePortable)
732
+ step.setArgument('dehumidifier_type', 'none')
583
733
  step.setArgument('dehumidifier_efficiency_type', 'EnergyFactor')
584
- step.setArgument('dehumidifier_efficiency_ef', 1.8)
585
- step.setArgument('dehumidifier_efficiency_ief', 1.5)
734
+ step.setArgument('dehumidifier_efficiency', 1.8)
586
735
  step.setArgument('dehumidifier_capacity', 40)
587
736
  step.setArgument('dehumidifier_rh_setpoint', 0.5)
588
737
  step.setArgument('dehumidifier_fraction_dehumidification_load_served', 1)
589
- step.setArgument('clothes_washer_present', true)
590
738
  step.setArgument('clothes_washer_location', HPXML::LocationLivingSpace)
591
739
  step.setArgument('clothes_washer_efficiency_type', 'IntegratedModifiedEnergyFactor')
592
- step.setArgument('clothes_washer_efficiency_mef', '1.453')
593
- step.setArgument('clothes_washer_efficiency_imef', '1.21')
740
+ step.setArgument('clothes_washer_efficiency', '1.21')
594
741
  step.setArgument('clothes_washer_rated_annual_kwh', '380.0')
595
742
  step.setArgument('clothes_washer_label_electric_rate', '0.12')
596
743
  step.setArgument('clothes_washer_label_gas_rate', '1.09')
@@ -598,39 +745,30 @@ def get_values(osw_file, step)
598
745
  step.setArgument('clothes_washer_label_usage', '6.0')
599
746
  step.setArgument('clothes_washer_capacity', '3.2')
600
747
  step.setArgument('clothes_washer_usage_multiplier', 1.0)
601
- step.setArgument('clothes_dryer_present', true)
602
748
  step.setArgument('clothes_dryer_location', HPXML::LocationLivingSpace)
603
749
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeElectricity)
604
750
  step.setArgument('clothes_dryer_efficiency_type', 'CombinedEnergyFactor')
605
- step.setArgument('clothes_dryer_efficiency_ef', 3.4615)
606
- step.setArgument('clothes_dryer_efficiency_cef', '3.73')
607
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeTimer)
751
+ step.setArgument('clothes_dryer_efficiency', '3.73')
608
752
  step.setArgument('clothes_dryer_vented_flow_rate', '150.0')
609
753
  step.setArgument('clothes_dryer_usage_multiplier', 1.0)
610
- step.setArgument('dishwasher_present', true)
611
754
  step.setArgument('dishwasher_location', HPXML::LocationLivingSpace)
612
755
  step.setArgument('dishwasher_efficiency_type', 'RatedAnnualkWh')
613
- step.setArgument('dishwasher_efficiency_kwh', '307')
614
- step.setArgument('dishwasher_efficiency_ef', 0.46)
756
+ step.setArgument('dishwasher_efficiency', '307')
615
757
  step.setArgument('dishwasher_label_electric_rate', '0.12')
616
758
  step.setArgument('dishwasher_label_gas_rate', '1.09')
617
759
  step.setArgument('dishwasher_label_annual_gas_cost', '22.32')
618
760
  step.setArgument('dishwasher_label_usage', '4.0')
619
761
  step.setArgument('dishwasher_place_setting_capacity', '12')
620
762
  step.setArgument('dishwasher_usage_multiplier', 1.0)
621
- step.setArgument('refrigerator_present', true)
622
763
  step.setArgument('refrigerator_location', HPXML::LocationLivingSpace)
623
764
  step.setArgument('refrigerator_rated_annual_kwh', '650.0')
624
765
  step.setArgument('refrigerator_usage_multiplier', 1.0)
625
- step.setArgument('extra_refrigerator_present', false)
626
- step.setArgument('extra_refrigerator_location', Constants.Auto)
766
+ step.setArgument('extra_refrigerator_location', 'none')
627
767
  step.setArgument('extra_refrigerator_rated_annual_kwh', Constants.Auto)
628
768
  step.setArgument('extra_refrigerator_usage_multiplier', 1.0)
629
- step.setArgument('freezer_present', false)
630
- step.setArgument('freezer_location', Constants.Auto)
769
+ step.setArgument('freezer_location', 'none')
631
770
  step.setArgument('freezer_rated_annual_kwh', Constants.Auto)
632
771
  step.setArgument('freezer_usage_multiplier', 1.0)
633
- step.setArgument('cooking_range_oven_present', true)
634
772
  step.setArgument('cooking_range_oven_location', HPXML::LocationLivingSpace)
635
773
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeElectricity)
636
774
  step.setArgument('cooking_range_oven_is_induction', false)
@@ -642,20 +780,16 @@ def get_values(osw_file, step)
642
780
  step.setArgument('ceiling_fan_cooling_setpoint_temp_offset', 0)
643
781
  step.setArgument('plug_loads_television_annual_kwh', '620.0')
644
782
  step.setArgument('plug_loads_television_usage_multiplier', 1.0)
645
- step.setArgument('plug_loads_television_usage_multiplier_2', 1.0)
646
783
  step.setArgument('plug_loads_other_annual_kwh', '2457.0')
647
784
  step.setArgument('plug_loads_other_frac_sensible', '0.855')
648
785
  step.setArgument('plug_loads_other_frac_latent', '0.045')
649
786
  step.setArgument('plug_loads_other_usage_multiplier', 1.0)
650
- step.setArgument('plug_loads_other_usage_multiplier_2', 1.0)
651
787
  step.setArgument('plug_loads_well_pump_present', false)
652
788
  step.setArgument('plug_loads_well_pump_annual_kwh', Constants.Auto)
653
789
  step.setArgument('plug_loads_well_pump_usage_multiplier', 0.0)
654
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 0.0)
655
790
  step.setArgument('plug_loads_vehicle_present', false)
656
791
  step.setArgument('plug_loads_vehicle_annual_kwh', Constants.Auto)
657
792
  step.setArgument('plug_loads_vehicle_usage_multiplier', 0.0)
658
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 0.0)
659
793
  step.setArgument('fuel_loads_grill_present', false)
660
794
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypeNaturalGas)
661
795
  step.setArgument('fuel_loads_grill_annual_therm', Constants.Auto)
@@ -684,121 +818,57 @@ def get_values(osw_file, step)
684
818
  step.setArgument('hot_tub_heater_annual_kwh', Constants.Auto)
685
819
  step.setArgument('hot_tub_heater_annual_therm', Constants.Auto)
686
820
  step.setArgument('hot_tub_heater_usage_multiplier', 1.0)
687
- elsif ['base-bldgtype-single-family-attached.osw'].include? osw_file
688
- step.setArgument('geometry_unit_type', HPXML::ResidentialTypeSFA)
689
- step.setArgument('geometry_cfa', 1800.0)
690
- step.setArgument('geometry_corridor_position', 'None')
691
- step.setArgument('geometry_building_num_units', 3)
692
- step.setArgument('geometry_horizontal_location', 'Left')
693
- step.setArgument('window_front_wwr', 0.18)
694
- step.setArgument('window_back_wwr', 0.18)
695
- step.setArgument('window_left_wwr', 0.18)
696
- step.setArgument('window_right_wwr', 0.18)
697
- step.setArgument('window_area_front', 0)
698
- step.setArgument('window_area_back', 0)
699
- step.setArgument('window_area_left', 0)
700
- step.setArgument('window_area_right', 0)
701
- step.setArgument('plug_loads_other_annual_kwh', '1638.0')
702
- elsif ['base-bldgtype-multifamily.osw'].include? osw_file
703
- step.setArgument('geometry_unit_type', HPXML::ResidentialTypeApartment)
704
- step.setArgument('geometry_cfa', 900.0)
705
- step.setArgument('geometry_corridor_position', 'None')
706
- step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
707
- step.setArgument('geometry_level', 'Middle')
708
- step.setArgument('geometry_horizontal_location', 'Left')
709
- step.setArgument('geometry_building_num_units', 50)
710
- step.setArgument('geometry_building_num_bedrooms', 50 * 3)
711
- step.setArgument('geometry_num_floors_above_grade', 5)
712
- step.setArgument('window_front_wwr', 0.18)
713
- step.setArgument('window_back_wwr', 0.18)
714
- step.setArgument('window_left_wwr', 0.18)
715
- step.setArgument('window_right_wwr', 0.18)
716
- step.setArgument('window_area_front', 0)
717
- step.setArgument('window_area_back', 0)
718
- step.setArgument('window_area_left', 0)
719
- step.setArgument('window_area_right', 0)
720
- step.setArgument('ducts_supply_leakage_value', 0.0)
721
- step.setArgument('ducts_return_leakage_value', 0.0)
722
- step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
723
- step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
724
- step.setArgument('ducts_supply_insulation_r', 0.0)
725
- step.setArgument('ducts_return_insulation_r', 0.0)
726
- step.setArgument('door_area', 20.0)
727
- step.setArgument('plug_loads_other_annual_kwh', '819.0')
728
- elsif ['base-appliances-coal.osw'].include? osw_file
821
+ end
822
+
823
+ # Appliances
824
+ if ['base-appliances-coal.osw'].include? osw_file
729
825
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeCoal)
730
- step.setArgument('clothes_dryer_efficiency_cef', '3.3')
731
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
826
+ step.setArgument('clothes_dryer_efficiency', '3.3')
732
827
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
733
828
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeCoal)
734
829
  elsif ['base-appliances-dehumidifier.osw'].include? osw_file
735
- step.setArgument('dehumidifier_present', true)
736
- elsif ['base-appliances-dehumidifier-50percent.osw'].include? osw_file
737
- step.setArgument('dehumidifier_fraction_dehumidification_load_served', 0.5)
830
+ step.setArgument('heating_system_heating_capacity', '24000.0')
831
+ step.setArgument('dehumidifier_type', HPXML::DehumidifierTypePortable)
738
832
  elsif ['base-appliances-dehumidifier-ief-portable.osw'].include? osw_file
739
833
  step.setArgument('dehumidifier_efficiency_type', 'IntegratedEnergyFactor')
834
+ step.setArgument('dehumidifier_efficiency', '1.5')
740
835
  elsif ['base-appliances-dehumidifier-ief-whole-home.osw'].include? osw_file
741
836
  step.setArgument('dehumidifier_type', HPXML::DehumidifierTypeWholeHome)
742
837
  elsif ['base-appliances-gas.osw'].include? osw_file
743
838
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeNaturalGas)
744
- step.setArgument('clothes_dryer_efficiency_cef', '3.3')
745
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
839
+ step.setArgument('clothes_dryer_efficiency', '3.3')
746
840
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
747
841
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeNaturalGas)
748
842
  elsif ['base-appliances-modified.osw'].include? osw_file
749
843
  step.setArgument('clothes_washer_efficiency_type', 'ModifiedEnergyFactor')
750
- step.setArgument('clothes_washer_efficiency_mef', '1.65')
844
+ step.setArgument('clothes_washer_efficiency', '1.65')
751
845
  step.setArgument('clothes_dryer_efficiency_type', 'EnergyFactor')
752
- step.setArgument('clothes_dryer_efficiency_ef', 4.29)
753
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
846
+ step.setArgument('clothes_dryer_efficiency', '4.29')
754
847
  step.setArgument('clothes_dryer_vented_flow_rate', '0.0')
755
848
  step.setArgument('dishwasher_efficiency_type', 'EnergyFactor')
756
- step.setArgument('dishwasher_efficiency_ef', 0.7)
849
+ step.setArgument('dishwasher_efficiency', 0.7)
757
850
  step.setArgument('dishwasher_place_setting_capacity', '6')
758
851
  elsif ['base-appliances-none.osw'].include? osw_file
759
- step.setArgument('clothes_washer_present', false)
760
- step.setArgument('clothes_dryer_present', false)
761
- step.setArgument('dishwasher_present', false)
762
- step.setArgument('refrigerator_present', false)
763
- step.setArgument('cooking_range_oven_present', false)
852
+ step.setArgument('clothes_washer_location', 'none')
853
+ step.setArgument('clothes_dryer_location', 'none')
854
+ step.setArgument('dishwasher_location', 'none')
855
+ step.setArgument('refrigerator_location', 'none')
856
+ step.setArgument('cooking_range_oven_location', 'none')
764
857
  elsif ['base-appliances-oil.osw'].include? osw_file
765
858
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeOil)
766
- step.setArgument('clothes_dryer_efficiency_cef', '3.3')
767
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
859
+ step.setArgument('clothes_dryer_efficiency', '3.3')
768
860
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
769
861
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeOil)
770
862
  elsif ['base-appliances-propane.osw'].include? osw_file
771
863
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypePropane)
772
- step.setArgument('clothes_dryer_efficiency_cef', '3.3')
773
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
864
+ step.setArgument('clothes_dryer_efficiency', '3.3')
774
865
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
775
866
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypePropane)
776
867
  elsif ['base-appliances-wood.osw'].include? osw_file
777
868
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeWoodCord)
778
- step.setArgument('clothes_dryer_efficiency_cef', '3.3')
779
- step.setArgument('clothes_dryer_control_type', HPXML::ClothesDryerControlTypeMoisture)
869
+ step.setArgument('clothes_dryer_efficiency', '3.3')
780
870
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
781
871
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeWoodCord)
782
- elsif ['base-atticroof-cathedral.osw'].include? osw_file
783
- step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
784
- step.setArgument('roof_assembly_r', 25.8)
785
- step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
786
- step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
787
- step.setArgument('ducts_supply_leakage_value', 0.0)
788
- step.setArgument('ducts_return_leakage_value', 0.0)
789
- elsif ['base-atticroof-conditioned.osw'].include? osw_file
790
- step.setArgument('geometry_cfa', 3600.0)
791
- step.setArgument('geometry_num_floors_above_grade', 2)
792
- step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
793
- step.setArgument('roof_assembly_r', 25.8)
794
- step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
795
- step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
796
- step.setArgument('ducts_supply_leakage_value', 0.0)
797
- step.setArgument('ducts_return_leakage_value', 0.0)
798
- step.setArgument('water_heater_location', HPXML::LocationBasementConditioned)
799
- step.setArgument('clothes_washer_location', HPXML::LocationBasementConditioned)
800
- step.setArgument('clothes_dryer_location', HPXML::LocationBasementConditioned)
801
- step.setArgument('refrigerator_location', HPXML::LocationBasementConditioned)
802
872
  elsif ['base-atticroof-flat.osw'].include? osw_file
803
873
  step.setArgument('geometry_roof_type', 'flat')
804
874
  step.setArgument('roof_assembly_r', 25.8)
@@ -807,7 +877,7 @@ def get_values(osw_file, step)
807
877
  step.setArgument('ducts_supply_location', HPXML::LocationBasementConditioned)
808
878
  step.setArgument('ducts_return_location', HPXML::LocationBasementConditioned)
809
879
  elsif ['base-atticroof-radiant-barrier.osw'].include? osw_file
810
- step.setArgument('roof_radiant_barrier', 'true')
880
+ step.setArgument('roof_radiant_barrier', true)
811
881
  step.setArgument('roof_radiant_barrier_grade', '2')
812
882
  elsif ['base-atticroof-unvented-insulated-roof.osw'].include? osw_file
813
883
  step.setArgument('ceiling_assembly_r', 2.1)
@@ -817,7 +887,93 @@ def get_values(osw_file, step)
817
887
  step.setArgument('water_heater_location', HPXML::LocationAtticVented)
818
888
  step.setArgument('ducts_supply_location', HPXML::LocationAtticVented)
819
889
  step.setArgument('ducts_return_location', HPXML::LocationAtticVented)
820
- elsif ['base-dhw-combi-tankless.osw'].include? osw_file
890
+ elsif ['base-bldgtype-single-family-attached.osw'].include? osw_file
891
+ step.setArgument('geometry_unit_type', HPXML::ResidentialTypeSFA)
892
+ step.setArgument('geometry_cfa', 1800.0)
893
+ step.setArgument('geometry_corridor_position', 'None')
894
+ step.setArgument('geometry_building_num_units', 3)
895
+ step.setArgument('geometry_horizontal_location', 'Left')
896
+ step.setArgument('window_front_wwr', 0.18)
897
+ step.setArgument('window_back_wwr', 0.18)
898
+ step.setArgument('window_left_wwr', 0.18)
899
+ step.setArgument('window_right_wwr', 0.18)
900
+ step.setArgument('window_area_front', 0)
901
+ step.setArgument('window_area_back', 0)
902
+ step.setArgument('window_area_left', 0)
903
+ step.setArgument('window_area_right', 0)
904
+ step.setArgument('heating_system_heating_capacity', '24000.0')
905
+ step.setArgument('plug_loads_other_annual_kwh', '1638.0')
906
+ elsif ['base-bldgtype-multifamily.osw'].include? osw_file
907
+ step.setArgument('geometry_unit_type', HPXML::ResidentialTypeApartment)
908
+ step.setArgument('geometry_cfa', 900.0)
909
+ step.setArgument('geometry_corridor_position', 'None')
910
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
911
+ step.setArgument('geometry_level', 'Middle')
912
+ step.setArgument('geometry_horizontal_location', 'Left')
913
+ step.setArgument('geometry_building_num_units', 6)
914
+ step.setArgument('geometry_building_num_bedrooms', 6 * 3)
915
+ step.setArgument('geometry_num_floors_above_grade', 3)
916
+ step.setArgument('window_front_wwr', 0.18)
917
+ step.setArgument('window_back_wwr', 0.18)
918
+ step.setArgument('window_left_wwr', 0.18)
919
+ step.setArgument('window_right_wwr', 0.18)
920
+ step.setArgument('window_area_front', 0)
921
+ step.setArgument('window_area_back', 0)
922
+ step.setArgument('window_area_left', 0)
923
+ step.setArgument('window_area_right', 0)
924
+ step.setArgument('heating_system_heating_capacity', '12000.0')
925
+ step.setArgument('cooling_system_cooling_capacity', '12000.0')
926
+ step.setArgument('ducts_supply_leakage_value', 0.0)
927
+ step.setArgument('ducts_return_leakage_value', 0.0)
928
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
929
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
930
+ step.setArgument('ducts_supply_insulation_r', 0.0)
931
+ step.setArgument('ducts_return_insulation_r', 0.0)
932
+ step.setArgument('ducts_number_of_return_registers', '1')
933
+ step.setArgument('door_area', 20.0)
934
+ step.setArgument('plug_loads_other_annual_kwh', '819.0')
935
+ elsif ['base-bldgtype-multifamily-shared-boiler-only-baseboard.osw'].include? osw_file
936
+ step.setArgument('heating_system_type', "Shared #{HPXML::HVACTypeBoiler} w/ Baseboard")
937
+ step.setArgument('cooling_system_type', 'none')
938
+ elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw'].include? osw_file
939
+ step.setArgument('heating_system_type', "Shared #{HPXML::HVACTypeBoiler} w/ Ductless Fan Coil")
940
+ step.setArgument('cooling_system_type', 'none')
941
+ elsif ['base-bldgtype-multifamily-shared-mechvent.osw'].include? osw_file
942
+ step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
943
+ step.setArgument('mech_vent_flow_rate', 800)
944
+ step.setArgument('mech_vent_fan_power', 240)
945
+ step.setArgument('mech_vent_num_units_served', 10)
946
+ step.setArgument('shared_mech_vent_frac_recirculation', 0.5)
947
+ step.setArgument('mech_vent_fan_type_2', HPXML::MechVentTypeExhaust)
948
+ step.setArgument('mech_vent_flow_rate_2', 72)
949
+ step.setArgument('mech_vent_fan_power_2', 26)
950
+ elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.osw'].include? osw_file
951
+ step.setArgument('shared_mech_vent_preheating_fuel', HPXML::FuelTypeNaturalGas)
952
+ step.setArgument('shared_mech_vent_preheating_efficiency', 0.92)
953
+ step.setArgument('shared_mech_vent_preheating_fraction_heat_load_served', 0.7)
954
+ step.setArgument('shared_mech_vent_precooling_fuel', HPXML::FuelTypeElectricity)
955
+ step.setArgument('shared_mech_vent_precooling_efficiency', 4.0)
956
+ step.setArgument('shared_mech_vent_precooling_fraction_cool_load_served', 0.8)
957
+ elsif ['base-bldgtype-multifamily-shared-pv.osw'].include? osw_file
958
+ step.setArgument('pv_system_num_units_served_1', 6)
959
+ step.setArgument('pv_system_location_1', HPXML::LocationGround)
960
+ step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
961
+ step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
962
+ step.setArgument('pv_system_array_azimuth_1', 225)
963
+ step.setArgument('pv_system_array_tilt_1', '30')
964
+ step.setArgument('pv_system_max_power_output_1', 30000)
965
+ step.setArgument('pv_system_inverter_efficiency_1', 0.96)
966
+ step.setArgument('pv_system_system_losses_fraction_1', 0.14)
967
+ elsif ['base-bldgtype-multifamily-shared-water-heater.osw'].include? osw_file
968
+ step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
969
+ step.setArgument('water_heater_num_units_served', 6)
970
+ step.setArgument('water_heater_tank_volume', '120')
971
+ step.setArgument('water_heater_efficiency', 0.59)
972
+ step.setArgument('water_heater_recovery_efficiency', '0.76')
973
+ end
974
+
975
+ # DHW
976
+ if ['base-dhw-combi-tankless.osw'].include? osw_file
821
977
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeCombiTankless)
822
978
  step.setArgument('water_heater_tank_volume', Constants.Auto)
823
979
  elsif ['base-dhw-combi-tankless-outside.osw'].include? osw_file
@@ -846,7 +1002,7 @@ def get_values(osw_file, step)
846
1002
  step.setArgument('water_fixtures_sink_low_flow', true)
847
1003
  elsif ['base-dhw-none.osw'].include? osw_file
848
1004
  step.setArgument('water_heater_type', 'none')
849
- step.setArgument('dishwasher_present', false)
1005
+ step.setArgument('dishwasher_location', 'none')
850
1006
  elsif ['base-dhw-recirc-demand.osw'].include? osw_file
851
1007
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
852
1008
  step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeSensor)
@@ -863,13 +1019,6 @@ def get_values(osw_file, step)
863
1019
  elsif ['base-dhw-recirc-timer.osw'].include? osw_file
864
1020
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
865
1021
  step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeTimer)
866
- elsif ['base-bldgtype-multifamily-shared-water-heater.osw'].include? osw_file
867
- step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
868
- step.setArgument('water_heater_num_units_served', 6)
869
- step.setArgument('water_heater_tank_volume', '120')
870
- step.setArgument('water_heater_heating_capacity', '40000')
871
- step.setArgument('water_heater_efficiency', 0.59)
872
- step.setArgument('water_heater_recovery_efficiency', '0.76')
873
1022
  elsif ['base-dhw-solar-direct-evacuated-tube.osw'].include? osw_file
874
1023
  step.setArgument('solar_thermal_system_type', 'hot water')
875
1024
  step.setArgument('solar_thermal_storage_volume', '60')
@@ -905,11 +1054,9 @@ def get_values(osw_file, step)
905
1054
  elsif ['base-dhw-tank-coal.osw'].include? osw_file
906
1055
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeCoal)
907
1056
  step.setArgument('water_heater_tank_volume', '50')
908
- step.setArgument('water_heater_heating_capacity', '40000')
909
1057
  step.setArgument('water_heater_efficiency', 0.59)
910
1058
  elsif ['base-dhw-tank-elec-uef.osw'].include? osw_file
911
1059
  step.setArgument('water_heater_tank_volume', '30')
912
- step.setArgument('water_heater_heating_capacity', '15354')
913
1060
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
914
1061
  step.setArgument('water_heater_efficiency', 0.93)
915
1062
  step.setArgument('water_heater_first_hour_rating', 46)
@@ -917,11 +1064,9 @@ def get_values(osw_file, step)
917
1064
  elsif ['base-dhw-tank-gas.osw'].include? osw_file
918
1065
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
919
1066
  step.setArgument('water_heater_tank_volume', '50')
920
- step.setArgument('water_heater_heating_capacity', '40000')
921
1067
  step.setArgument('water_heater_efficiency', 0.59)
922
1068
  elsif ['base-dhw-tank-gas-uef.osw'].include? osw_file
923
1069
  step.setArgument('water_heater_tank_volume', '30')
924
- step.setArgument('water_heater_heating_capacity', '30000')
925
1070
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
926
1071
  step.setArgument('water_heater_efficiency', 0.59)
927
1072
  step.setArgument('water_heater_first_hour_rating', 56)
@@ -930,29 +1075,24 @@ def get_values(osw_file, step)
930
1075
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
931
1076
  step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
932
1077
  step.setArgument('water_heater_tank_volume', '50')
933
- step.setArgument('water_heater_heating_capacity', '40000')
934
1078
  step.setArgument('water_heater_efficiency', 0.59)
935
1079
  elsif ['base-dhw-tank-heat-pump.osw'].include? osw_file
936
1080
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
937
1081
  step.setArgument('water_heater_tank_volume', '80')
938
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
939
1082
  step.setArgument('water_heater_efficiency', 2.3)
940
1083
  elsif ['base-dhw-tank-heat-pump-outside.osw'].include? osw_file
941
1084
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
942
1085
  step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
943
1086
  step.setArgument('water_heater_tank_volume', '80')
944
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
945
1087
  step.setArgument('water_heater_efficiency', 2.3)
946
1088
  elsif ['base-dhw-tank-heat-pump-uef.osw'].include? osw_file
947
1089
  step.setArgument('water_heater_tank_volume', '50')
948
- step.setArgument('water_heater_heating_capacity', '18767')
949
1090
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
950
1091
  step.setArgument('water_heater_efficiency', 3.75)
951
1092
  step.setArgument('water_heater_first_hour_rating', 60)
952
1093
  elsif ['base-dhw-tank-heat-pump-with-solar.osw'].include? osw_file
953
1094
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
954
1095
  step.setArgument('water_heater_tank_volume', '80')
955
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
956
1096
  step.setArgument('water_heater_efficiency', 2.3)
957
1097
  step.setArgument('solar_thermal_system_type', 'hot water')
958
1098
  step.setArgument('solar_thermal_collector_loop_type', HPXML::SolarThermalLoopTypeIndirect)
@@ -963,7 +1103,6 @@ def get_values(osw_file, step)
963
1103
  elsif ['base-dhw-tank-heat-pump-with-solar-fraction.osw'].include? osw_file
964
1104
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
965
1105
  step.setArgument('water_heater_tank_volume', '80')
966
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
967
1106
  step.setArgument('water_heater_efficiency', 2.3)
968
1107
  step.setArgument('solar_thermal_system_type', 'hot water')
969
1108
  step.setArgument('solar_thermal_solar_fraction', 0.65)
@@ -1013,29 +1152,28 @@ def get_values(osw_file, step)
1013
1152
  elsif ['base-dhw-tank-oil.osw'].include? osw_file
1014
1153
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeOil)
1015
1154
  step.setArgument('water_heater_tank_volume', '50')
1016
- step.setArgument('water_heater_heating_capacity', '40000')
1017
1155
  step.setArgument('water_heater_efficiency', 0.59)
1018
1156
  elsif ['base-dhw-tank-wood.osw'].include? osw_file
1019
1157
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeWoodCord)
1020
1158
  step.setArgument('water_heater_tank_volume', '50')
1021
- step.setArgument('water_heater_heating_capacity', '40000')
1022
1159
  step.setArgument('water_heater_efficiency', 0.59)
1023
- elsif ['base-enclosure-2stories.osw'].include? osw_file
1160
+ end
1161
+
1162
+ # Enclosure
1163
+ if ['base-enclosure-2stories.osw'].include? osw_file
1024
1164
  step.setArgument('geometry_cfa', 4050.0)
1025
1165
  step.setArgument('geometry_num_floors_above_grade', 2)
1026
1166
  step.setArgument('window_area_front', 216.0)
1027
1167
  step.setArgument('window_area_back', 216.0)
1028
1168
  step.setArgument('window_area_left', 144.0)
1029
1169
  step.setArgument('window_area_right', 144.0)
1170
+ step.setArgument('heating_system_heating_capacity', '48000.0')
1171
+ step.setArgument('cooling_system_cooling_capacity', '36000.0')
1172
+ step.setArgument('ducts_number_of_return_registers', '3')
1030
1173
  step.setArgument('plug_loads_other_annual_kwh', '3685.5')
1031
1174
  elsif ['base-enclosure-2stories-garage.osw'].include? osw_file
1032
1175
  step.setArgument('geometry_cfa', 3250.0)
1033
- step.setArgument('geometry_num_floors_above_grade', 2)
1034
1176
  step.setArgument('geometry_garage_width', 20.0)
1035
- step.setArgument('window_area_front', 216.0)
1036
- step.setArgument('window_area_back', 216.0)
1037
- step.setArgument('window_area_left', 144.0)
1038
- step.setArgument('window_area_right', 144.0)
1039
1177
  step.setArgument('ducts_supply_surface_area', '112.5')
1040
1178
  step.setArgument('ducts_return_surface_area', '37.5')
1041
1179
  step.setArgument('plug_loads_other_annual_kwh', '2957.5')
@@ -1043,13 +1181,11 @@ def get_values(osw_file, step)
1043
1181
  step.setArgument('geometry_num_bedrooms', 1)
1044
1182
  step.setArgument('geometry_num_bathrooms', '1')
1045
1183
  step.setArgument('geometry_num_occupants', '1')
1046
- step.setArgument('water_heater_heating_capacity', '18767')
1047
1184
  step.setArgument('plug_loads_television_annual_kwh', '482.0')
1048
1185
  elsif ['base-enclosure-beds-2.osw'].include? osw_file
1049
1186
  step.setArgument('geometry_num_bedrooms', 2)
1050
1187
  step.setArgument('geometry_num_bathrooms', '1')
1051
1188
  step.setArgument('geometry_num_occupants', '2')
1052
- step.setArgument('water_heater_heating_capacity', '18767')
1053
1189
  step.setArgument('plug_loads_television_annual_kwh', '551.0')
1054
1190
  elsif ['base-enclosure-beds-4.osw'].include? osw_file
1055
1191
  step.setArgument('geometry_num_bedrooms', 4)
@@ -1082,10 +1218,10 @@ def get_values(osw_file, step)
1082
1218
  step.setArgument('air_leakage_units', HPXML::UnitsCFM)
1083
1219
  step.setArgument('air_leakage_value', 1080)
1084
1220
  elsif ['base-enclosure-infil-flue.osw'].include? osw_file
1085
- step.setArgument('heating_system_has_flue_or_chimney', true)
1221
+ step.setArgument('geometry_has_flue_or_chimney', 'true')
1086
1222
  elsif ['base-enclosure-infil-natural-ach.osw'].include? osw_file
1087
1223
  step.setArgument('air_leakage_units', HPXML::UnitsACHNatural)
1088
- step.setArgument('air_leakage_value', 0.67)
1224
+ step.setArgument('air_leakage_value', 0.2)
1089
1225
  elsif ['base-enclosure-other-heated-space.osw'].include? osw_file
1090
1226
  step.setArgument('geometry_unit_type', HPXML::ResidentialTypeApartment)
1091
1227
  step.setArgument('ducts_supply_location', HPXML::LocationOtherHeatedSpace)
@@ -1127,23 +1263,26 @@ def get_values(osw_file, step)
1127
1263
  step.setArgument('refrigerator_location', HPXML::LocationOtherNonFreezingSpace)
1128
1264
  step.setArgument('cooking_range_oven_location', HPXML::LocationOtherNonFreezingSpace)
1129
1265
  elsif ['base-enclosure-overhangs.osw'].include? osw_file
1266
+ step.setArgument('overhangs_front_distance_to_top_of_window', 1.0)
1130
1267
  step.setArgument('overhangs_back_depth', 2.5)
1131
1268
  step.setArgument('overhangs_left_depth', 1.5)
1132
1269
  step.setArgument('overhangs_left_distance_to_top_of_window', 2.0)
1133
1270
  step.setArgument('overhangs_right_depth', 1.5)
1134
1271
  step.setArgument('overhangs_right_distance_to_top_of_window', 2.0)
1135
- elsif ['base-enclosure-skylights.osw'].include? osw_file
1136
- step.setArgument('skylight_area_front', 15)
1137
- step.setArgument('skylight_area_back', 15)
1138
1272
  elsif ['base-enclosure-windows-none.osw'].include? osw_file
1139
1273
  step.setArgument('window_area_front', 0)
1140
1274
  step.setArgument('window_area_back', 0)
1141
1275
  step.setArgument('window_area_left', 0)
1142
1276
  step.setArgument('window_area_right', 0)
1143
- elsif ['base-foundation-ambient.osw'].include? osw_file
1277
+ end
1278
+
1279
+ # Foundation
1280
+ if ['base-foundation-ambient.osw'].include? osw_file
1144
1281
  step.setArgument('geometry_cfa', 1350.0)
1145
1282
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeAmbient)
1283
+ step.setArgument('geometry_rim_joist_height', 0)
1146
1284
  step.setArgument('floor_assembly_r', 18.7)
1285
+ step.setArgument('ducts_number_of_return_registers', '1')
1147
1286
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1148
1287
  elsif ['base-foundation-conditioned-basement-slab-insulation.osw'].include? osw_file
1149
1288
  step.setArgument('slab_under_insulation_r', 10)
@@ -1162,6 +1301,7 @@ def get_values(osw_file, step)
1162
1301
  step.setArgument('slab_carpet_r', '2.5')
1163
1302
  step.setArgument('ducts_supply_location', HPXML::LocationUnderSlab)
1164
1303
  step.setArgument('ducts_return_location', HPXML::LocationUnderSlab)
1304
+ step.setArgument('ducts_number_of_return_registers', '1')
1165
1305
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1166
1306
  elsif ['base-foundation-unconditioned-basement.osw'].include? osw_file
1167
1307
  step.setArgument('geometry_cfa', 1350.0)
@@ -1169,8 +1309,10 @@ def get_values(osw_file, step)
1169
1309
  step.setArgument('floor_assembly_r', 18.7)
1170
1310
  step.setArgument('foundation_wall_insulation_r', 0)
1171
1311
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 0)
1312
+ step.setArgument('rim_joist_assembly_r', 4.0)
1172
1313
  step.setArgument('ducts_supply_location', HPXML::LocationBasementUnconditioned)
1173
1314
  step.setArgument('ducts_return_location', HPXML::LocationBasementUnconditioned)
1315
+ step.setArgument('ducts_number_of_return_registers', '1')
1174
1316
  step.setArgument('water_heater_location', HPXML::LocationBasementUnconditioned)
1175
1317
  step.setArgument('clothes_washer_location', HPXML::LocationBasementUnconditioned)
1176
1318
  step.setArgument('clothes_dryer_location', HPXML::LocationBasementUnconditioned)
@@ -1199,61 +1341,69 @@ def get_values(osw_file, step)
1199
1341
  step.setArgument('floor_assembly_r', 2.1)
1200
1342
  step.setArgument('foundation_wall_insulation_r', 8.9)
1201
1343
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4)
1344
+ step.setArgument('rim_joist_assembly_r', 23.0)
1202
1345
  elsif ['base-foundation-unvented-crawlspace.osw'].include? osw_file
1203
1346
  step.setArgument('geometry_cfa', 1350.0)
1204
1347
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
1205
1348
  step.setArgument('geometry_foundation_height', 4.0)
1206
- step.setArgument('geometry_foundation_height_above_grade', 1.0)
1207
1349
  step.setArgument('floor_assembly_r', 18.7)
1208
1350
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
1209
1351
  step.setArgument('slab_carpet_r', '2.5')
1210
1352
  step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceUnvented)
1211
1353
  step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceUnvented)
1354
+ step.setArgument('ducts_number_of_return_registers', '1')
1212
1355
  step.setArgument('water_heater_location', HPXML::LocationCrawlspaceUnvented)
1213
1356
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1214
1357
  elsif ['base-foundation-vented-crawlspace.osw'].include? osw_file
1215
1358
  step.setArgument('geometry_cfa', 1350.0)
1216
1359
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
1217
1360
  step.setArgument('geometry_foundation_height', 4.0)
1218
- step.setArgument('geometry_foundation_height_above_grade', 1.0)
1219
1361
  step.setArgument('floor_assembly_r', 18.7)
1220
1362
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
1221
1363
  step.setArgument('slab_carpet_r', '2.5')
1222
1364
  step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceVented)
1223
1365
  step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceVented)
1366
+ step.setArgument('ducts_number_of_return_registers', '1')
1224
1367
  step.setArgument('water_heater_location', HPXML::LocationCrawlspaceVented)
1225
1368
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1226
1369
  elsif ['base-foundation-walkout-basement.osw'].include? osw_file
1227
1370
  step.setArgument('geometry_foundation_height_above_grade', 5.0)
1228
1371
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
1229
- elsif ['base-hvac-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1372
+ end
1373
+
1374
+ # HVAC
1375
+ if ['base-hvac-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1230
1376
  step.setArgument('heating_system_type', 'none')
1231
1377
  step.setArgument('cooling_system_type', 'none')
1232
1378
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1233
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1234
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1379
+ step.setArgument('heat_pump_heating_capacity_17_f', '22680.0')
1235
1380
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1236
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
1381
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw'].include? osw_file
1382
+ step.setArgument('heat_pump_heating_capacity', '0.0')
1383
+ step.setArgument('heat_pump_heating_capacity_17_f', '0.0')
1384
+ step.setArgument('heat_pump_fraction_heat_load_served', 0)
1385
+ step.setArgument('heat_pump_backup_fuel', 'none')
1386
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw'].include? osw_file
1387
+ step.setArgument('heat_pump_cooling_capacity', '0.0')
1388
+ step.setArgument('heat_pump_fraction_cool_load_served', 0)
1237
1389
  elsif ['base-hvac-air-to-air-heat-pump-2-speed.osw'].include? osw_file
1238
1390
  step.setArgument('heating_system_type', 'none')
1239
1391
  step.setArgument('cooling_system_type', 'none')
1240
1392
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1241
- step.setArgument('heat_pump_heating_efficiency_hspf', 9.3)
1393
+ step.setArgument('heat_pump_heating_efficiency', 9.3)
1242
1394
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1243
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1244
- step.setArgument('heat_pump_heating_capacity_17F', '24780.0')
1245
- step.setArgument('heat_pump_cooling_efficiency_seer', 18.0)
1395
+ step.setArgument('heat_pump_heating_capacity_17_f', '21240.0')
1396
+ step.setArgument('heat_pump_cooling_efficiency', 18.0)
1246
1397
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1247
1398
  elsif ['base-hvac-air-to-air-heat-pump-var-speed.osw'].include? osw_file
1248
1399
  step.setArgument('heating_system_type', 'none')
1249
1400
  step.setArgument('cooling_system_type', 'none')
1250
1401
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1251
- step.setArgument('heat_pump_heating_efficiency_hspf', 10.0)
1402
+ step.setArgument('heat_pump_heating_efficiency', 10.0)
1252
1403
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1253
1404
  step.setArgument('heat_pump_cooling_sensible_heat_fraction', 0.78)
1254
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1255
- step.setArgument('heat_pump_heating_capacity_17F', '26880.0')
1256
- step.setArgument('heat_pump_cooling_efficiency_seer', 22.0)
1405
+ step.setArgument('heat_pump_heating_capacity_17_f', '23040.0')
1406
+ step.setArgument('heat_pump_cooling_efficiency', 22.0)
1257
1407
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1258
1408
  elsif ['base-hvac-boiler-coal-only.osw'].include? osw_file
1259
1409
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
@@ -1266,11 +1416,8 @@ def get_values(osw_file, step)
1266
1416
  step.setArgument('cooling_system_type', 'none')
1267
1417
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.osw'].include? osw_file
1268
1418
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
1269
- step.setArgument('heating_system_electric_auxiliary_energy', 200.0)
1270
- step.setArgument('ducts_number_of_return_registers', '3')
1271
1419
  elsif ['base-hvac-boiler-gas-only.osw'].include? osw_file
1272
1420
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
1273
- step.setArgument('heating_system_electric_auxiliary_energy', 200.0)
1274
1421
  step.setArgument('cooling_system_type', 'none')
1275
1422
  elsif ['base-hvac-boiler-oil-only.osw'].include? osw_file
1276
1423
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
@@ -1286,32 +1433,27 @@ def get_values(osw_file, step)
1286
1433
  step.setArgument('cooling_system_type', 'none')
1287
1434
  elsif ['base-hvac-central-ac-only-1-speed.osw'].include? osw_file
1288
1435
  step.setArgument('heating_system_type', 'none')
1289
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.45)
1290
1436
  elsif ['base-hvac-central-ac-only-2-speed.osw'].include? osw_file
1291
1437
  step.setArgument('heating_system_type', 'none')
1292
- step.setArgument('cooling_system_cooling_efficiency_seer', 18.0)
1438
+ step.setArgument('cooling_system_cooling_efficiency', 18.0)
1293
1439
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1294
1440
  elsif ['base-hvac-central-ac-only-var-speed.osw'].include? osw_file
1295
1441
  step.setArgument('heating_system_type', 'none')
1296
- step.setArgument('cooling_system_cooling_efficiency_seer', 24.0)
1442
+ step.setArgument('cooling_system_cooling_efficiency', 24.0)
1297
1443
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1298
1444
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.78)
1299
1445
  elsif ['base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw'].include? osw_file
1300
1446
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1301
- step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
1302
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1303
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1447
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
1448
+ step.setArgument('heat_pump_heating_capacity_17_f', '22680.0')
1304
1449
  step.setArgument('heat_pump_fraction_cool_load_served', 0)
1305
1450
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1306
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
1307
1451
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1308
1452
  step.setArgument('cooling_system_type', 'none')
1309
- step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
1310
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1311
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1453
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
1454
+ step.setArgument('heat_pump_heating_capacity_17_f', '22680.0')
1312
1455
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeNaturalGas)
1313
1456
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1314
- step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
1315
1457
  step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
1316
1458
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw'].include? osw_file
1317
1459
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
@@ -1319,19 +1461,17 @@ def get_values(osw_file, step)
1319
1461
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw'].include? osw_file
1320
1462
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeNaturalGas)
1321
1463
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1322
- step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
1323
1464
  step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
1324
1465
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw'].include? osw_file
1325
1466
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeNaturalGas)
1326
1467
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1327
- step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
1328
1468
  step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
1329
1469
  elsif ['base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw'].include? osw_file
1470
+ step.setArgument('heat_pump_heating_capacity', '36000.0')
1471
+ step.setArgument('heat_pump_heating_capacity_17_f', '20423.0')
1330
1472
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeNaturalGas)
1331
1473
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1332
- step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
1333
1474
  step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
1334
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1335
1475
  elsif ['base-hvac-ducts-leakage-percent.osw'].include? osw_file
1336
1476
  step.setArgument('ducts_supply_leakage_units', HPXML::UnitsPercent)
1337
1477
  step.setArgument('ducts_return_leakage_units', HPXML::UnitsPercent)
@@ -1351,28 +1491,29 @@ def get_values(osw_file, step)
1351
1491
  step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
1352
1492
  step.removeArgument('cooling_system_cooling_compressor_type')
1353
1493
  step.removeArgument('cooling_system_cooling_sensible_heat_fraction')
1354
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.3)
1355
1494
  elsif ['base-hvac-evap-cooler-only-ducted.osw'].include? osw_file
1356
1495
  step.setArgument('heating_system_type', 'none')
1357
1496
  step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
1358
1497
  step.removeArgument('cooling_system_cooling_compressor_type')
1359
1498
  step.removeArgument('cooling_system_cooling_sensible_heat_fraction')
1360
1499
  step.setArgument('cooling_system_is_ducted', true)
1500
+ step.setArgument('ducts_return_leakage_value', 0.0)
1361
1501
  elsif ['base-hvac-fireplace-wood-only.osw'].include? osw_file
1362
1502
  step.setArgument('heating_system_type', HPXML::HVACTypeFireplace)
1363
1503
  step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodCord)
1364
1504
  step.setArgument('heating_system_heating_efficiency', 0.8)
1365
- step.setArgument('heating_system_fan_power_watts', 0.0)
1366
1505
  step.setArgument('cooling_system_type', 'none')
1367
1506
  elsif ['base-hvac-fixed-heater-gas-only.osw'].include? osw_file
1368
1507
  step.setArgument('heating_system_type', HPXML::HVACTypeFixedHeater)
1369
1508
  step.setArgument('heating_system_heating_efficiency', 1.0)
1370
- step.setArgument('heating_system_fan_power_watts', 0.0)
1509
+ step.setArgument('cooling_system_type', 'none')
1371
1510
  elsif ['base-hvac-floor-furnace-propane-only.osw'].include? osw_file
1372
1511
  step.setArgument('heating_system_type', HPXML::HVACTypeFloorFurnace)
1373
1512
  step.setArgument('heating_system_fuel', HPXML::FuelTypePropane)
1374
1513
  step.setArgument('heating_system_heating_efficiency', 0.8)
1375
- step.setArgument('heating_system_fan_power_watts', 0.0)
1514
+ step.setArgument('cooling_system_type', 'none')
1515
+ elsif ['base-hvac-furnace-coal-only.osw'].include? osw_file
1516
+ step.setArgument('heating_system_fuel', HPXML::FuelTypeCoal)
1376
1517
  step.setArgument('cooling_system_type', 'none')
1377
1518
  elsif ['base-hvac-furnace-elec-central-ac-1-speed.osw'].include? osw_file
1378
1519
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
@@ -1382,17 +1523,18 @@ def get_values(osw_file, step)
1382
1523
  step.setArgument('heating_system_heating_efficiency', 1.0)
1383
1524
  step.setArgument('cooling_system_type', 'none')
1384
1525
  elsif ['base-hvac-furnace-gas-central-ac-2-speed.osw'].include? osw_file
1385
- step.setArgument('cooling_system_cooling_efficiency_seer', 18.0)
1526
+ step.setArgument('cooling_system_cooling_efficiency', 18.0)
1386
1527
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1387
1528
  elsif ['base-hvac-furnace-gas-central-ac-var-speed.osw'].include? osw_file
1388
- step.setArgument('cooling_system_cooling_efficiency_seer', 24.0)
1529
+ step.setArgument('cooling_system_cooling_efficiency', 24.0)
1389
1530
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1390
1531
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.78)
1391
1532
  elsif ['base-hvac-furnace-gas-only.osw'].include? osw_file
1392
- step.setArgument('heating_system_fan_power_watts_per_cfm', 0.45)
1393
1533
  step.setArgument('cooling_system_type', 'none')
1394
1534
  elsif ['base-hvac-furnace-gas-room-ac.osw'].include? osw_file
1395
1535
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1536
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1537
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1396
1538
  step.removeArgument('cooling_system_cooling_compressor_type')
1397
1539
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1398
1540
  elsif ['base-hvac-furnace-oil-only.osw'].include? osw_file
@@ -1407,10 +1549,9 @@ def get_values(osw_file, step)
1407
1549
  elsif ['base-hvac-mini-split-air-conditioner-only-ducted.osw'].include? osw_file
1408
1550
  step.setArgument('heating_system_type', 'none')
1409
1551
  step.setArgument('cooling_system_type', HPXML::HVACTypeMiniSplitAirConditioner)
1410
- step.setArgument('cooling_system_cooling_efficiency_seer', 19.0)
1552
+ step.setArgument('cooling_system_cooling_efficiency', 19.0)
1411
1553
  step.removeArgument('cooling_system_cooling_compressor_type')
1412
1554
  step.setArgument('cooling_system_is_ducted', true)
1413
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.2)
1414
1555
  step.setArgument('ducts_supply_leakage_value', 15.0)
1415
1556
  step.setArgument('ducts_return_leakage_value', 5.0)
1416
1557
  step.setArgument('ducts_supply_insulation_r', 0.0)
@@ -1422,25 +1563,70 @@ def get_values(osw_file, step)
1422
1563
  step.setArgument('heating_system_type', 'none')
1423
1564
  step.setArgument('cooling_system_type', 'none')
1424
1565
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpGroundToAir)
1425
- step.setArgument('heat_pump_heating_efficiency_cop', 3.6)
1426
- step.setArgument('heat_pump_cooling_efficiency_eer', 16.6)
1566
+ step.setArgument('heat_pump_heating_efficiency_type', HPXML::UnitsCOP)
1567
+ step.setArgument('heat_pump_heating_efficiency', 3.6)
1568
+ step.setArgument('heat_pump_cooling_efficiency_type', HPXML::UnitsEER)
1569
+ step.setArgument('heat_pump_cooling_efficiency', 16.6)
1427
1570
  step.removeArgument('heat_pump_cooling_compressor_type')
1428
- step.setArgument('heat_pump_heating_capacity', '42000.0')
1429
1571
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1430
- step.setArgument('heat_pump_pump_power_watts_per_ton', 30.0)
1431
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
1572
+ elsif ['base-hvac-ground-to-air-heat-pump-cooling-only.osw'].include? osw_file
1573
+ step.setArgument('heat_pump_heating_capacity', '0.0')
1574
+ step.setArgument('heat_pump_fraction_heat_load_served', 0)
1575
+ step.setArgument('heat_pump_backup_fuel', 'none')
1576
+ elsif ['base-hvac-ground-to-air-heat-pump-heating-only.osw'].include? osw_file
1577
+ step.setArgument('heat_pump_cooling_capacity', '0.0')
1578
+ step.setArgument('heat_pump_fraction_cool_load_served', 0)
1579
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1580
+ step.setArgument('heating_system_airflow_defect_ratio', 0.0)
1581
+ step.setArgument('cooling_system_airflow_defect_ratio', 0.0)
1582
+ step.setArgument('cooling_system_charge_defect_ratio', 0.0)
1583
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1584
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1585
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1586
+ elsif ['base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1587
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1588
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1589
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1590
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1591
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw'].include? osw_file
1592
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1593
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1594
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw'].include? osw_file
1595
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1596
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1597
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1598
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1599
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1600
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1601
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw'].include? osw_file
1602
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1603
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1604
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1605
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw'].include? osw_file
1606
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1607
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1608
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1609
+ elsif ['base-hvac-install-quality-all-furnace-gas-only.osw'].include? osw_file
1610
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1611
+ elsif ['base-hvac-install-quality-all-ground-to-air-heat-pump.osw'].include? osw_file
1612
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1613
+ step.setArgument('heat_pump_charge_defect_ratio', 0.0)
1614
+ elsif ['base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw'].include? osw_file
1615
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1616
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1617
+ elsif ['base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw'].include? osw_file
1618
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1619
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1432
1620
  elsif ['base-hvac-mini-split-heat-pump-ducted.osw'].include? osw_file
1433
1621
  step.setArgument('heating_system_type', 'none')
1434
1622
  step.setArgument('cooling_system_type', 'none')
1435
1623
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpMiniSplit)
1436
- step.setArgument('heat_pump_heating_capacity', '52000.0')
1437
- step.setArgument('heat_pump_heating_capacity_17F', '29500.0')
1438
- step.setArgument('heat_pump_heating_efficiency_hspf', 10.0)
1439
- step.setArgument('heat_pump_cooling_efficiency_seer', 19.0)
1624
+ step.setArgument('heat_pump_heating_capacity_17_f', '20423.0')
1625
+ step.setArgument('heat_pump_heating_efficiency', 10.0)
1626
+ step.setArgument('heat_pump_cooling_efficiency', 19.0)
1440
1627
  step.removeArgument('heat_pump_cooling_compressor_type')
1441
1628
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1442
- step.setArgument('heat_pump_mini_split_is_ducted', true)
1443
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1629
+ step.setArgument('heat_pump_is_ducted', true)
1444
1630
  step.setArgument('ducts_supply_leakage_value', 15.0)
1445
1631
  step.setArgument('ducts_return_leakage_value', 5.0)
1446
1632
  step.setArgument('ducts_supply_insulation_r', 0.0)
@@ -1448,65 +1634,73 @@ def get_values(osw_file, step)
1448
1634
  step.setArgument('ducts_return_surface_area', '10.0')
1449
1635
  elsif ['base-hvac-mini-split-heat-pump-ducted-cooling-only.osw'].include? osw_file
1450
1636
  step.setArgument('heat_pump_heating_capacity', '0')
1451
- step.setArgument('heat_pump_heating_capacity_17F', '0')
1637
+ step.setArgument('heat_pump_heating_capacity_17_f', '0')
1452
1638
  step.setArgument('heat_pump_fraction_heat_load_served', 0)
1453
1639
  step.setArgument('heat_pump_backup_fuel', 'none')
1454
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1455
1640
  elsif ['base-hvac-mini-split-heat-pump-ducted-heating-only.osw'].include? osw_file
1456
1641
  step.setArgument('heat_pump_cooling_capacity', '0')
1457
1642
  step.setArgument('heat_pump_fraction_cool_load_served', 0)
1458
1643
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1459
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1460
1644
  elsif ['base-hvac-mini-split-heat-pump-ductless.osw'].include? osw_file
1461
1645
  step.setArgument('heat_pump_backup_fuel', 'none')
1462
- step.setArgument('heat_pump_mini_split_is_ducted', false)
1646
+ step.setArgument('heat_pump_is_ducted', false)
1463
1647
  elsif ['base-hvac-none.osw'].include? osw_file
1464
1648
  step.setArgument('heating_system_type', 'none')
1465
1649
  step.setArgument('cooling_system_type', 'none')
1466
1650
  elsif ['base-hvac-portable-heater-gas-only.osw'].include? osw_file
1467
1651
  step.setArgument('heating_system_type', HPXML::HVACTypePortableHeater)
1468
1652
  step.setArgument('heating_system_heating_efficiency', 1.0)
1469
- step.setArgument('heating_system_fan_power_watts', 0.0)
1653
+ step.setArgument('cooling_system_type', 'none')
1654
+ elsif ['base-hvac-programmable-thermostat-detailed.osw'].include? osw_file
1655
+ step.setArgument('setpoint_heating_weekday', '64, 64, 64, 64, 64, 64, 64, 70, 70, 66, 66, 66, 66, 66, 66, 66, 66, 68, 68, 68, 68, 68, 64, 64')
1656
+ step.setArgument('setpoint_heating_weekend', '68, 68, 68, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70')
1657
+ step.setArgument('setpoint_cooling_weekday', '80, 80, 80, 80, 80, 80, 80, 75, 75, 80, 80, 80, 80, 80, 80, 80, 80, 78, 78, 78, 78, 78, 80, 80')
1658
+ step.setArgument('setpoint_cooling_weekend', '78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78')
1470
1659
  elsif ['base-hvac-room-ac-only.osw'].include? osw_file
1471
1660
  step.setArgument('heating_system_type', 'none')
1472
1661
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1662
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1663
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1473
1664
  step.removeArgument('cooling_system_cooling_compressor_type')
1474
1665
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1475
1666
  elsif ['base-hvac-room-ac-only-33percent.osw'].include? osw_file
1476
1667
  step.setArgument('heating_system_type', 'none')
1477
1668
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1669
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1670
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1478
1671
  step.removeArgument('cooling_system_cooling_compressor_type')
1479
1672
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1480
1673
  step.setArgument('cooling_system_fraction_cool_load_served', 0.33)
1674
+ step.setArgument('cooling_system_cooling_capacity', '8000.0')
1481
1675
  elsif ['base-hvac-setpoints.osw'].include? osw_file
1482
- step.setArgument('setpoint_heating_weekday_temp', 60.0)
1483
- step.setArgument('setpoint_heating_weekend_temp', 60.0)
1484
- step.setArgument('setpoint_cooling_weekday_temp', 80.0)
1485
- step.setArgument('setpoint_cooling_weekend_temp', 80.0)
1676
+ step.setArgument('setpoint_heating_weekday', '60')
1677
+ step.setArgument('setpoint_heating_weekend', '60')
1678
+ step.setArgument('setpoint_cooling_weekday', '80')
1679
+ step.setArgument('setpoint_cooling_weekend', '80')
1486
1680
  elsif ['base-hvac-stove-oil-only.osw'].include? osw_file
1487
1681
  step.setArgument('heating_system_type', HPXML::HVACTypeStove)
1488
1682
  step.setArgument('heating_system_fuel', HPXML::FuelTypeOil)
1489
1683
  step.setArgument('heating_system_heating_efficiency', 0.8)
1490
- step.setArgument('heating_system_fan_power_watts', 40.0)
1491
1684
  step.setArgument('cooling_system_type', 'none')
1492
1685
  elsif ['base-hvac-stove-wood-pellets-only.osw'].include? osw_file
1493
1686
  step.setArgument('heating_system_type', HPXML::HVACTypeStove)
1494
1687
  step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodPellets)
1495
1688
  step.setArgument('heating_system_heating_efficiency', 0.8)
1496
- step.setArgument('heating_system_fan_power_watts', 40.0)
1497
1689
  step.setArgument('cooling_system_type', 'none')
1498
1690
  elsif ['base-hvac-undersized.osw'].include? osw_file
1499
- step.setArgument('heating_system_heating_capacity', '6400.0')
1500
- step.setArgument('cooling_system_cooling_capacity', '4800.0')
1691
+ step.setArgument('heating_system_heating_capacity', '3600.0')
1692
+ step.setArgument('cooling_system_cooling_capacity', '2400.0')
1501
1693
  step.setArgument('ducts_supply_leakage_value', 7.5)
1502
1694
  step.setArgument('ducts_return_leakage_value', 2.5)
1503
1695
  elsif ['base-hvac-wall-furnace-elec-only.osw'].include? osw_file
1504
1696
  step.setArgument('heating_system_type', HPXML::HVACTypeWallFurnace)
1505
1697
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
1506
1698
  step.setArgument('heating_system_heating_efficiency', 1.0)
1507
- step.setArgument('heating_system_fan_power_watts', 0.0)
1508
1699
  step.setArgument('cooling_system_type', 'none')
1509
- elsif ['base-lighting-ceiling-fans.osw'].include? osw_file
1700
+ end
1701
+
1702
+ # Lighting
1703
+ if ['base-lighting-ceiling-fans.osw'].include? osw_file
1510
1704
  step.setArgument('ceiling_fan_present', true)
1511
1705
  step.setArgument('ceiling_fan_efficiency', '100.0')
1512
1706
  step.setArgument('ceiling_fan_quantity', '4')
@@ -1518,32 +1712,51 @@ def get_values(osw_file, step)
1518
1712
  step.setArgument('holiday_lighting_period_begin_day_of_month', '24')
1519
1713
  step.setArgument('holiday_lighting_period_end_month', '1')
1520
1714
  step.setArgument('holiday_lighting_period_end_day_of_month', '6')
1521
- elsif ['base-location-AMY-2012.osw'].include? osw_file
1715
+ end
1716
+
1717
+ # Location
1718
+ if ['base-location-AMY-2012.osw'].include? osw_file
1522
1719
  step.setArgument('weather_station_epw_filepath', 'US_CO_Boulder_AMY_2012.epw')
1523
1720
  elsif ['base-location-baltimore-md.osw'].include? osw_file
1524
1721
  step.setArgument('weather_station_epw_filepath', 'USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.epw')
1722
+ step.setArgument('heating_system_heating_capacity', '24000.0')
1525
1723
  elsif ['base-location-dallas-tx.osw'].include? osw_file
1526
1724
  step.setArgument('weather_station_epw_filepath', 'USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3.epw')
1725
+ step.setArgument('heating_system_heating_capacity', '24000.0')
1527
1726
  elsif ['base-location-duluth-mn.osw'].include? osw_file
1528
1727
  step.setArgument('weather_station_epw_filepath', 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw')
1728
+ elsif ['base-location-helena-mt.osw'].include? osw_file
1729
+ step.setArgument('weather_station_epw_filepath', 'USA_MT_Helena.Rgnl.AP.727720_TMY3.epw')
1730
+ step.setArgument('heating_system_heating_capacity', '48000.0')
1731
+ elsif ['base-location-honolulu-hi.osw'].include? osw_file
1732
+ step.setArgument('weather_station_epw_filepath', 'USA_HI_Honolulu.Intl.AP.911820_TMY3.epw')
1733
+ step.setArgument('heating_system_heating_capacity', '12000.0')
1529
1734
  elsif ['base-location-miami-fl.osw'].include? osw_file
1530
1735
  step.setArgument('weather_station_epw_filepath', 'USA_FL_Miami.Intl.AP.722020_TMY3.epw')
1531
- elsif ['base-mechvent-balanced.osw'].include? osw_file
1736
+ step.setArgument('heating_system_heating_capacity', '12000.0')
1737
+ elsif ['base-location-phoenix-az.osw'].include? osw_file
1738
+ step.setArgument('weather_station_epw_filepath', 'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw')
1739
+ step.setArgument('heating_system_heating_capacity', '24000.0')
1740
+ elsif ['base-location-portland-or.osw'].include? osw_file
1741
+ step.setArgument('weather_station_epw_filepath', 'USA_OR_Portland.Intl.AP.726980_TMY3.epw')
1742
+ step.setArgument('heating_system_heating_capacity', '24000.0')
1743
+ end
1744
+
1745
+ # Mechanical Ventilation
1746
+ if ['base-mechvent-balanced.osw'].include? osw_file
1532
1747
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeBalanced)
1533
1748
  step.setArgument('mech_vent_fan_power', 60)
1534
1749
  elsif ['base-mechvent-bath-kitchen-fans.osw'].include? osw_file
1535
- step.setArgument('kitchen_fans_present', true)
1536
- step.setArgument('kitchen_fans_quantity', 1)
1537
- step.setArgument('kitchen_fans_flow_rate', 100.0)
1538
- step.setArgument('kitchen_fans_hours_in_operation', 1.5)
1539
- step.setArgument('kitchen_fans_power', 30.0)
1540
- step.setArgument('kitchen_fans_start_hour', 18)
1541
- step.setArgument('bathroom_fans_present', true)
1542
- step.setArgument('bathroom_fans_quantity', 2)
1543
- step.setArgument('bathroom_fans_flow_rate', 50.0)
1544
- step.setArgument('bathroom_fans_hours_in_operation', 1.5)
1545
- step.setArgument('bathroom_fans_power', 15.0)
1546
- step.setArgument('bathroom_fans_start_hour', 7)
1750
+ step.setArgument('kitchen_fans_quantity', '1')
1751
+ step.setArgument('kitchen_fans_flow_rate', '100.0')
1752
+ step.setArgument('kitchen_fans_hours_in_operation', '1.5')
1753
+ step.setArgument('kitchen_fans_power', '30.0')
1754
+ step.setArgument('kitchen_fans_start_hour', '18')
1755
+ step.setArgument('bathroom_fans_quantity', '2')
1756
+ step.setArgument('bathroom_fans_flow_rate', '50.0')
1757
+ step.setArgument('bathroom_fans_hours_in_operation', '1.5')
1758
+ step.setArgument('bathroom_fans_power', '15.0')
1759
+ step.setArgument('bathroom_fans_start_hour', '7')
1547
1760
  elsif ['base-mechvent-cfis.osw'].include? osw_file
1548
1761
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeCFIS)
1549
1762
  step.setArgument('mech_vent_flow_rate', 330)
@@ -1559,42 +1772,30 @@ def get_values(osw_file, step)
1559
1772
  step.setArgument('mech_vent_fan_power', 60)
1560
1773
  elsif ['base-mechvent-erv-atre-asre.osw'].include? osw_file
1561
1774
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeERV)
1562
- step.setArgument('mech_vent_total_recovery_efficiency_type', 'Adjusted')
1775
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Adjusted')
1563
1776
  step.setArgument('mech_vent_total_recovery_efficiency', 0.526)
1564
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Adjusted')
1565
1777
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.79)
1566
1778
  step.setArgument('mech_vent_fan_power', 60)
1567
1779
  elsif ['base-mechvent-exhaust.osw'].include? osw_file
1568
1780
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeExhaust)
1781
+ elsif ['base-mechvent-exhaust-rated-flow-rate.osw'].include? osw_file
1782
+ step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeExhaust)
1569
1783
  elsif ['base-mechvent-hrv.osw'].include? osw_file
1570
1784
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeHRV)
1571
1785
  step.setArgument('mech_vent_fan_power', 60)
1572
1786
  elsif ['base-mechvent-hrv-asre.osw'].include? osw_file
1573
1787
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeHRV)
1574
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Adjusted')
1788
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Adjusted')
1575
1789
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.79)
1576
1790
  step.setArgument('mech_vent_fan_power', 60)
1577
- elsif ['base-bldgtype-multifamily-shared-mechvent.osw'].include? osw_file
1578
- step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
1579
- step.setArgument('mech_vent_flow_rate', 800)
1580
- step.setArgument('mech_vent_fan_power', 240)
1581
- step.setArgument('mech_vent_num_units_served', 10)
1582
- step.setArgument('shared_mech_vent_frac_recirculation', 0.5)
1583
- step.setArgument('mech_vent_fan_type_2', HPXML::MechVentTypeExhaust)
1584
- step.setArgument('mech_vent_flow_rate_2', 72)
1585
- step.setArgument('mech_vent_fan_power_2', 26)
1586
- elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.osw'].include? osw_file
1587
- step.setArgument('shared_mech_vent_preheating_fuel', HPXML::FuelTypeNaturalGas)
1588
- step.setArgument('shared_mech_vent_preheating_efficiency', 0.92)
1589
- step.setArgument('shared_mech_vent_preheating_fraction_heat_load_served', 0.7)
1590
- step.setArgument('shared_mech_vent_precooling_fuel', HPXML::FuelTypeElectricity)
1591
- step.setArgument('shared_mech_vent_precooling_efficiency', 4.0)
1592
- step.setArgument('shared_mech_vent_precooling_fraction_cool_load_served', 0.8)
1593
1791
  elsif ['base-mechvent-supply.osw'].include? osw_file
1594
1792
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
1595
1793
  elsif ['base-mechvent-whole-house-fan.osw'].include? osw_file
1596
1794
  step.setArgument('whole_house_fan_present', true)
1597
- elsif ['base-misc-defaults.osw'].include? osw_file
1795
+ end
1796
+
1797
+ # Misc
1798
+ if ['base-misc-defaults.osw'].include? osw_file
1598
1799
  step.removeArgument('simulation_control_timestep')
1599
1800
  step.removeArgument('site_type')
1600
1801
  step.setArgument('geometry_num_bathrooms', Constants.Auto)
@@ -1605,11 +1806,9 @@ def get_values(osw_file, step)
1605
1806
  step.removeArgument('roof_material_type')
1606
1807
  step.setArgument('roof_color', HPXML::ColorLight)
1607
1808
  step.removeArgument('roof_material_type')
1608
- step.setArgument('roof_emittance', Constants.Auto)
1609
- step.setArgument('roof_radiant_barrier', Constants.Auto)
1809
+ step.setArgument('roof_radiant_barrier', false)
1610
1810
  step.removeArgument('wall_siding_type')
1611
1811
  step.setArgument('wall_color', HPXML::ColorMedium)
1612
- step.setArgument('wall_emittance', Constants.Auto)
1613
1812
  step.removeArgument('window_fraction_operable')
1614
1813
  step.removeArgument('window_interior_shading_winter')
1615
1814
  step.removeArgument('window_interior_shading_summer')
@@ -1619,11 +1818,10 @@ def get_values(osw_file, step)
1619
1818
  step.setArgument('ducts_return_location', Constants.Auto)
1620
1819
  step.setArgument('ducts_supply_surface_area', Constants.Auto)
1621
1820
  step.setArgument('ducts_return_surface_area', Constants.Auto)
1622
- step.setArgument('kitchen_fans_present', true)
1623
- step.setArgument('bathroom_fans_present', true)
1821
+ step.setArgument('kitchen_fans_quantity', Constants.Auto)
1822
+ step.setArgument('bathroom_fans_quantity', Constants.Auto)
1624
1823
  step.setArgument('water_heater_location', Constants.Auto)
1625
1824
  step.setArgument('water_heater_tank_volume', Constants.Auto)
1626
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
1627
1825
  step.setArgument('water_heater_setpoint_temperature', Constants.Auto)
1628
1826
  step.setArgument('dhw_distribution_standard_piping_length', Constants.Auto)
1629
1827
  step.setArgument('dhw_distribution_pipe_r', Constants.Auto)
@@ -1635,8 +1833,7 @@ def get_values(osw_file, step)
1635
1833
  step.removeArgument('pv_system_inverter_efficiency_1')
1636
1834
  step.removeArgument('pv_system_system_losses_fraction_1')
1637
1835
  step.setArgument('clothes_washer_location', Constants.Auto)
1638
- step.setArgument('clothes_washer_efficiency_mef', Constants.Auto)
1639
- step.setArgument('clothes_washer_efficiency_imef', Constants.Auto)
1836
+ step.setArgument('clothes_washer_efficiency', Constants.Auto)
1640
1837
  step.setArgument('clothes_washer_rated_annual_kwh', Constants.Auto)
1641
1838
  step.setArgument('clothes_washer_label_electric_rate', Constants.Auto)
1642
1839
  step.setArgument('clothes_washer_label_gas_rate', Constants.Auto)
@@ -1644,11 +1841,10 @@ def get_values(osw_file, step)
1644
1841
  step.setArgument('clothes_washer_label_usage', Constants.Auto)
1645
1842
  step.setArgument('clothes_washer_capacity', Constants.Auto)
1646
1843
  step.setArgument('clothes_dryer_location', Constants.Auto)
1647
- step.setArgument('clothes_dryer_efficiency_cef', Constants.Auto)
1648
- step.setArgument('clothes_dryer_control_type', Constants.Auto)
1844
+ step.setArgument('clothes_dryer_efficiency', Constants.Auto)
1649
1845
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
1650
1846
  step.setArgument('dishwasher_location', Constants.Auto)
1651
- step.setArgument('dishwasher_efficiency_kwh', Constants.Auto)
1847
+ step.setArgument('dishwasher_efficiency', Constants.Auto)
1652
1848
  step.setArgument('dishwasher_label_electric_rate', Constants.Auto)
1653
1849
  step.setArgument('dishwasher_label_gas_rate', Constants.Auto)
1654
1850
  step.setArgument('dishwasher_label_annual_gas_cost', Constants.Auto)
@@ -1665,19 +1861,16 @@ def get_values(osw_file, step)
1665
1861
  step.setArgument('plug_loads_other_frac_sensible', Constants.Auto)
1666
1862
  step.setArgument('plug_loads_other_frac_latent', Constants.Auto)
1667
1863
  elsif ['base-misc-loads-large-uncommon.osw'].include? osw_file
1668
- step.setArgument('extra_refrigerator_present', true)
1864
+ step.setArgument('extra_refrigerator_location', Constants.Auto)
1669
1865
  step.setArgument('extra_refrigerator_rated_annual_kwh', '700.0')
1670
- step.setArgument('freezer_present', true)
1671
1866
  step.setArgument('freezer_location', HPXML::LocationLivingSpace)
1672
1867
  step.setArgument('freezer_rated_annual_kwh', '300.0')
1673
1868
  step.setArgument('plug_loads_well_pump_present', true)
1674
1869
  step.setArgument('plug_loads_well_pump_annual_kwh', '475.0')
1675
1870
  step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
1676
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
1677
1871
  step.setArgument('plug_loads_vehicle_present', true)
1678
1872
  step.setArgument('plug_loads_vehicle_annual_kwh', '1500.0')
1679
1873
  step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
1680
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
1681
1874
  step.setArgument('fuel_loads_grill_present', true)
1682
1875
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypePropane)
1683
1876
  step.setArgument('fuel_loads_grill_annual_therm', '25.0')
@@ -1699,11 +1892,17 @@ def get_values(osw_file, step)
1699
1892
  step.setArgument('hot_tub_pump_annual_kwh', '1000.0')
1700
1893
  step.setArgument('hot_tub_heater_annual_kwh', '1300.0')
1701
1894
  elsif ['base-misc-loads-large-uncommon2.osw'].include? osw_file
1702
- step.setArgument('pool_heater_type', 'none')
1895
+ step.setArgument('pool_heater_type', HPXML::TypeNone)
1703
1896
  step.setArgument('hot_tub_heater_type', HPXML::HeaterTypeHeatPump)
1704
1897
  step.setArgument('hot_tub_heater_annual_kwh', '260.0')
1705
1898
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypeOil)
1706
1899
  step.setArgument('fuel_loads_fireplace_fuel_type', HPXML::FuelTypeWoodPellets)
1900
+ elsif ['base-misc-neighbor-shading.osw'].include? osw_file
1901
+ step.setArgument('neighbor_back_distance', 10)
1902
+ step.setArgument('neighbor_front_distance', 15)
1903
+ step.setArgument('neighbor_front_height', '12')
1904
+ elsif ['base-misc-shielding-of-home.osw'].include? osw_file
1905
+ step.setArgument('air_leakage_shielding_of_home', HPXML::ShieldingWellShielded)
1707
1906
  elsif ['base-misc-usage-multiplier.osw'].include? osw_file
1708
1907
  step.setArgument('water_fixtures_usage_multiplier', 0.9)
1709
1908
  step.setArgument('lighting_usage_multiplier_interior', 0.9)
@@ -1713,7 +1912,6 @@ def get_values(osw_file, step)
1713
1912
  step.setArgument('clothes_dryer_usage_multiplier', 0.9)
1714
1913
  step.setArgument('dishwasher_usage_multiplier', 0.9)
1715
1914
  step.setArgument('refrigerator_usage_multiplier', 0.9)
1716
- step.setArgument('freezer_present', true)
1717
1915
  step.setArgument('freezer_location', HPXML::LocationLivingSpace)
1718
1916
  step.setArgument('freezer_rated_annual_kwh', '300.0')
1719
1917
  step.setArgument('freezer_usage_multiplier', 0.9)
@@ -1745,11 +1943,10 @@ def get_values(osw_file, step)
1745
1943
  step.setArgument('fuel_loads_fireplace_frac_sensible', '0.5')
1746
1944
  step.setArgument('fuel_loads_fireplace_frac_latent', '0.1')
1747
1945
  step.setArgument('fuel_loads_fireplace_usage_multiplier', 0.9)
1748
- elsif ['base-misc-neighbor-shading.osw'].include? osw_file
1749
- step.setArgument('neighbor_back_distance', 10)
1750
- step.setArgument('neighbor_front_distance', 15)
1751
- step.setArgument('neighbor_front_height', '12')
1752
- elsif ['base-pv.osw'].include? osw_file
1946
+ end
1947
+
1948
+ # PV
1949
+ if ['base-pv.osw'].include? osw_file
1753
1950
  step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
1754
1951
  step.setArgument('pv_system_location_1', HPXML::LocationRoof)
1755
1952
  step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
@@ -1758,17 +1955,10 @@ def get_values(osw_file, step)
1758
1955
  step.setArgument('pv_system_tracking_2', HPXML::PVTrackingTypeFixed)
1759
1956
  step.setArgument('pv_system_array_azimuth_2', 90)
1760
1957
  step.setArgument('pv_system_max_power_output_2', 1500)
1761
- elsif ['base-bldgtype-multifamily-shared-pv.osw'].include? osw_file
1762
- step.setArgument('pv_system_num_units_served_1', 6)
1763
- step.setArgument('pv_system_location_1', HPXML::LocationGround)
1764
- step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
1765
- step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
1766
- step.setArgument('pv_system_array_azimuth_1', 225)
1767
- step.setArgument('pv_system_array_tilt_1', '30')
1768
- step.setArgument('pv_system_max_power_output_1', 30000)
1769
- step.setArgument('pv_system_inverter_efficiency_1', 0.96)
1770
- step.setArgument('pv_system_system_losses_fraction_1', 0.14)
1771
- elsif ['base-simcontrol-calendar-year-custom.osw'].include? osw_file
1958
+ end
1959
+
1960
+ # Simulation Control
1961
+ if ['base-simcontrol-calendar-year-custom.osw'].include? osw_file
1772
1962
  step.setArgument('simulation_control_run_period_calendar_year', 2008)
1773
1963
  elsif ['base-simcontrol-daylight-saving-custom.osw'].include? osw_file
1774
1964
  step.setArgument('simulation_control_daylight_saving_enabled', true)
@@ -1778,11 +1968,6 @@ def get_values(osw_file, step)
1778
1968
  step.setArgument('simulation_control_daylight_saving_end_day_of_month', 6)
1779
1969
  elsif ['base-simcontrol-daylight-saving-disabled.osw'].include? osw_file
1780
1970
  step.setArgument('simulation_control_daylight_saving_enabled', false)
1781
- elsif ['base-schedules-stochastic.osw'].include? osw_file
1782
- step.setArgument('schedules_type', 'stochastic')
1783
- elsif ['base-schedules-user-specified.osw'].include? osw_file
1784
- step.setArgument('schedules_type', 'user-specified')
1785
- step.setArgument('schedules_path', 'BuildResidentialHPXML/tests/schedules/user-specified.csv')
1786
1971
  elsif ['base-simcontrol-runperiod-1-month.osw'].include? osw_file
1787
1972
  step.setArgument('simulation_control_run_period_begin_month', 1)
1788
1973
  step.setArgument('simulation_control_run_period_begin_day_of_month', 1)
@@ -1792,6 +1977,19 @@ def get_values(osw_file, step)
1792
1977
  step.setArgument('simulation_control_timestep', '10')
1793
1978
  end
1794
1979
 
1980
+ # Schedules
1981
+ if ['base-schedules-stochastic.osw'].include? osw_file
1982
+ step.setArgument('schedules_type', 'stochastic')
1983
+ elsif ['base-schedules-stochastic-vacant.osw'].include? osw_file
1984
+ step.setArgument('schedules_vacancy_begin_month', 1)
1985
+ step.setArgument('schedules_vacancy_begin_day_of_month', 1)
1986
+ step.setArgument('schedules_vacancy_end_month', 12)
1987
+ step.setArgument('schedules_vacancy_end_day_of_month', 31)
1988
+ elsif ['base-schedules-user-specified.osw'].include? osw_file
1989
+ step.setArgument('schedules_type', 'user-specified')
1990
+ step.setArgument('schedules_path', 'BuildResidentialHPXML/tests/schedules/user-specified.csv')
1991
+ end
1992
+
1795
1993
  # Extras
1796
1994
  if ['extra-auto.osw'].include? osw_file
1797
1995
  step.setArgument('geometry_num_occupants', Constants.Auto)
@@ -1814,8 +2012,8 @@ def get_values(osw_file, step)
1814
2012
  step.setArgument('solar_thermal_system_type', 'hot water')
1815
2013
  step.setArgument('solar_thermal_collector_tilt', 'latitude-15')
1816
2014
  elsif ['extra-second-refrigerator.osw'].include? osw_file
1817
- step.setArgument('extra_refrigerator_present', true)
1818
- elsif ['extra-second-heating-system-portable-heater.osw'].include? osw_file
2015
+ step.setArgument('extra_refrigerator_location', HPXML::LocationLivingSpace)
2016
+ elsif ['extra-second-heating-system-portable-heater-to-heating-system.osw'].include? osw_file
1819
2017
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
1820
2018
  step.setArgument('heating_system_heating_capacity', '48000.0')
1821
2019
  step.setArgument('heating_system_fraction_heat_load_served', 0.75)
@@ -1825,39 +2023,301 @@ def get_values(osw_file, step)
1825
2023
  step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
1826
2024
  step.setArgument('heating_system_type_2', HPXML::HVACTypePortableHeater)
1827
2025
  step.setArgument('heating_system_heating_capacity_2', '16000.0')
1828
- elsif ['extra-second-heating-system-fireplace.osw'].include? osw_file
1829
- step.setArgument('heating_system_type', HPXML::HVACTypeElectricResistance)
1830
- step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
2026
+ elsif ['extra-second-heating-system-fireplace-to-heating-system.osw'].include? osw_file
1831
2027
  step.setArgument('heating_system_heating_capacity', '48000.0')
1832
2028
  step.setArgument('heating_system_fraction_heat_load_served', 0.75)
1833
2029
  step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1834
2030
  step.setArgument('heating_system_heating_capacity_2', '16000.0')
2031
+ elsif ['extra-second-heating-system-boiler-to-heating-system.osw'].include? osw_file
2032
+ step.setArgument('heating_system_fraction_heat_load_served', 0.75)
2033
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeBoiler)
2034
+ elsif ['extra-second-heating-system-portable-heater-to-heat-pump.osw'].include? osw_file
2035
+ step.setArgument('heat_pump_heating_capacity', '48000.0')
2036
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
2037
+ step.setArgument('ducts_supply_leakage_value', 0.0)
2038
+ step.setArgument('ducts_return_leakage_value', 0.0)
2039
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
2040
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
2041
+ step.setArgument('heating_system_type_2', HPXML::HVACTypePortableHeater)
2042
+ step.setArgument('heating_system_heating_capacity_2', '16000.0')
2043
+ elsif ['extra-second-heating-system-fireplace-to-heat-pump.osw'].include? osw_file
2044
+ step.setArgument('heat_pump_heating_capacity', '48000.0')
2045
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
2046
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
2047
+ step.setArgument('heating_system_heating_capacity_2', '16000.0')
2048
+ elsif ['extra-second-heating-system-boiler-to-heat-pump.osw'].include? osw_file
2049
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
2050
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeBoiler)
2051
+ elsif ['extra-enclosure-windows-shading.osw'].include? osw_file
2052
+ step.setArgument('window_interior_shading_winter', 0.99)
2053
+ step.setArgument('window_interior_shading_summer', 0.01)
2054
+ step.setArgument('window_exterior_shading_winter', 0.9)
2055
+ step.setArgument('window_exterior_shading_summer', 0.1)
1835
2056
  elsif ['extra-enclosure-garage-partially-protruded.osw'].include? osw_file
1836
2057
  step.setArgument('geometry_garage_width', 12)
1837
2058
  step.setArgument('geometry_garage_protrusion', 0.5)
1838
- elsif ['extra-vacancy-6-months.osw'].include? osw_file
1839
- step.setArgument('schedules_vacancy_begin_month', 1)
1840
- step.setArgument('schedules_vacancy_begin_day_of_month', 1)
1841
- step.setArgument('schedules_vacancy_end_month', 6)
1842
- step.setArgument('schedules_vacancy_end_day_of_month', 30)
2059
+ elsif ['extra-enclosure-garage-atticroof-conditioned.osw'].include? osw_file
2060
+ step.setArgument('geometry_cfa', 4500.0)
2061
+ step.setArgument('geometry_num_floors_above_grade', 2)
2062
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2063
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-gable.osw'].include? osw_file
2064
+ step.setArgument('geometry_num_floors_above_grade', 2)
2065
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2066
+ step.setArgument('geometry_eaves_depth', 2)
2067
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-hip.osw'].include? osw_file
2068
+ step.setArgument('geometry_roof_type', 'hip')
1843
2069
  elsif ['extra-schedules-random-seed.osw'].include? osw_file
1844
2070
  step.setArgument('schedules_random_seed', 123)
1845
- elsif ['extra-hvac-programmable-thermostat.osw'].include? osw_file
1846
- step.setArgument('setpoint_heating_weekday_offset_magnitude', 4)
1847
- step.setArgument('setpoint_heating_weekend_offset_magnitude', 4)
1848
- step.setArgument('setpoint_heating_weekday_schedule', '-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1')
1849
- step.setArgument('setpoint_heating_weekend_schedule', '-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1')
1850
- step.setArgument('setpoint_cooling_weekday_offset_magnitude', 4)
1851
- step.setArgument('setpoint_cooling_weekend_offset_magnitude', 4)
1852
- step.setArgument('setpoint_cooling_weekday_schedule', '0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0')
1853
- step.setArgument('setpoint_cooling_weekend_schedule', '0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0')
1854
- elsif ['extra-plug-loads-additional-multipliers.osw'].include? osw_file
1855
- step.setArgument('plug_loads_television_usage_multiplier_2', 1.5)
1856
- step.setArgument('plug_loads_other_usage_multiplier_2', 1.5)
1857
- step.setArgument('plug_loads_well_pump_present', true)
1858
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.5)
1859
- step.setArgument('plug_loads_vehicle_present', true)
1860
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.5)
2071
+ elsif ['extra-zero-refrigerator-kwh.osw'].include? osw_file
2072
+ step.setArgument('refrigerator_rated_annual_kwh', '0')
2073
+ elsif ['extra-zero-extra-refrigerator-kwh.osw'].include? osw_file
2074
+ step.setArgument('extra_refrigerator_rated_annual_kwh', '0')
2075
+ elsif ['extra-zero-freezer-kwh.osw'].include? osw_file
2076
+ step.setArgument('freezer_rated_annual_kwh', '0')
2077
+ elsif ['extra-zero-clothes-washer-kwh.osw'].include? osw_file
2078
+ step.setArgument('clothes_washer_rated_annual_kwh', '0')
2079
+ step.setArgument('clothes_dryer_location', 'none')
2080
+ elsif ['extra-zero-dishwasher-kwh.osw'].include? osw_file
2081
+ step.setArgument('dishwasher_efficiency', '0')
2082
+ elsif ['extra-bldgtype-single-family-attached-atticroof-flat.osw'].include? osw_file
2083
+ step.setArgument('geometry_roof_type', 'flat')
2084
+ step.setArgument('ducts_supply_leakage_value', 0.0)
2085
+ step.setArgument('ducts_return_leakage_value', 0.0)
2086
+ step.setArgument('ducts_supply_location', HPXML::LocationBasementConditioned)
2087
+ step.setArgument('ducts_return_location', HPXML::LocationBasementConditioned)
2088
+ elsif ['extra-gas-pool-heater-with-zero-kwh.osw'].include? osw_file
2089
+ step.setArgument('pool_present', true)
2090
+ step.setArgument('pool_heater_type', HPXML::HeaterTypeGas)
2091
+ step.setArgument('pool_heater_annual_kwh', 0)
2092
+ elsif ['extra-gas-hot-tub-heater-with-zero-kwh.osw'].include? osw_file
2093
+ step.setArgument('hot_tub_present', true)
2094
+ step.setArgument('hot_tub_heater_type', HPXML::HeaterTypeGas)
2095
+ step.setArgument('hot_tub_heater_annual_kwh', 0)
2096
+
2097
+ elsif ['extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw'].include? osw_file
2098
+ step.setArgument('geometry_num_floors_above_grade', 2)
2099
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2100
+ step.setArgument('geometry_eaves_depth', 2)
2101
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
2102
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
2103
+ elsif ['extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw'].include? osw_file
2104
+ step.setArgument('geometry_roof_type', 'hip')
2105
+ elsif ['extra-bldgtype-multifamily-eaves.osw'].include? osw_file
2106
+ step.setArgument('geometry_eaves_depth', 2)
2107
+
2108
+ elsif ['extra-bldgtype-single-family-attached-slab.osw'].include? osw_file
2109
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
2110
+ step.setArgument('geometry_foundation_height', 0.0)
2111
+ step.setArgument('geometry_foundation_height_above_grade', 0.0)
2112
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace.osw'].include? osw_file
2113
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
2114
+ step.setArgument('geometry_foundation_height', 4.0)
2115
+ step.setArgument('floor_assembly_r', 18.7)
2116
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2117
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace.osw'].include? osw_file
2118
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
2119
+ step.setArgument('geometry_foundation_height', 4.0)
2120
+ step.setArgument('floor_assembly_r', 18.7)
2121
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2122
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement.osw'].include? osw_file
2123
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
2124
+ step.setArgument('floor_assembly_r', 18.7)
2125
+ step.setArgument('foundation_wall_insulation_r', 0)
2126
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0)
2127
+
2128
+ elsif ['extra-bldgtype-single-family-attached-double-loaded-interior.osw'].include? osw_file
2129
+ step.setArgument('geometry_building_num_units', 4)
2130
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2131
+ elsif ['extra-bldgtype-single-family-attached-single-exterior-front.osw'].include? osw_file
2132
+ step.setArgument('geometry_corridor_position', 'Single Exterior (Front)')
2133
+ elsif ['extra-bldgtype-single-family-attached-double-exterior.osw'].include? osw_file
2134
+ step.setArgument('geometry_building_num_units', 4)
2135
+ step.setArgument('geometry_corridor_position', 'Double Exterior')
2136
+
2137
+ elsif ['extra-bldgtype-single-family-attached-slab-middle.osw'].include? osw_file
2138
+ step.setArgument('geometry_horizontal_location', 'Middle')
2139
+ elsif ['extra-bldgtype-single-family-attached-slab-right.osw'].include? osw_file
2140
+ step.setArgument('geometry_horizontal_location', 'Right')
2141
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw'].include? osw_file
2142
+ step.setArgument('geometry_horizontal_location', 'Middle')
2143
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace-right.osw'].include? osw_file
2144
+ step.setArgument('geometry_horizontal_location', 'Right')
2145
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw'].include? osw_file
2146
+ step.setArgument('geometry_horizontal_location', 'Middle')
2147
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw'].include? osw_file
2148
+ step.setArgument('geometry_horizontal_location', 'Right')
2149
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw'].include? osw_file
2150
+ step.setArgument('geometry_horizontal_location', 'Middle')
2151
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement-right.osw'].include? osw_file
2152
+ step.setArgument('geometry_horizontal_location', 'Right')
2153
+
2154
+ elsif ['extra-bldgtype-multifamily-slab.osw'].include? osw_file
2155
+ step.setArgument('geometry_building_num_units', 9)
2156
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
2157
+ step.setArgument('geometry_foundation_height', 0.0)
2158
+ step.setArgument('geometry_foundation_height_above_grade', 0.0)
2159
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace.osw'].include? osw_file
2160
+ step.setArgument('geometry_building_num_units', 9)
2161
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
2162
+ step.setArgument('geometry_foundation_height', 4.0)
2163
+ step.setArgument('floor_assembly_r', 18.7)
2164
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2165
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace.osw'].include? osw_file
2166
+ step.setArgument('geometry_building_num_units', 9)
2167
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
2168
+ step.setArgument('geometry_foundation_height', 4.0)
2169
+ step.setArgument('floor_assembly_r', 18.7)
2170
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2171
+
2172
+ elsif ['extra-bldgtype-multifamily-double-loaded-interior.osw'].include? osw_file
2173
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2174
+ elsif ['extra-bldgtype-multifamily-single-exterior-front.osw'].include? osw_file
2175
+ step.setArgument('geometry_corridor_position', 'Single Exterior (Front)')
2176
+ elsif ['extra-bldgtype-multifamily-double-exterior.osw'].include? osw_file
2177
+ step.setArgument('geometry_corridor_position', 'Double Exterior')
2178
+
2179
+ elsif ['extra-bldgtype-multifamily-slab-left-bottom.osw'].include? osw_file
2180
+ step.setArgument('geometry_horizontal_location', 'Left')
2181
+ step.setArgument('geometry_level', 'Bottom')
2182
+ elsif ['extra-bldgtype-multifamily-slab-left-middle.osw'].include? osw_file
2183
+ step.setArgument('geometry_horizontal_location', 'Left')
2184
+ step.setArgument('geometry_level', 'Middle')
2185
+ elsif ['extra-bldgtype-multifamily-slab-left-top.osw'].include? osw_file
2186
+ step.setArgument('geometry_horizontal_location', 'Left')
2187
+ step.setArgument('geometry_level', 'Top')
2188
+ elsif ['extra-bldgtype-multifamily-slab-middle-bottom.osw'].include? osw_file
2189
+ step.setArgument('geometry_horizontal_location', 'Middle')
2190
+ step.setArgument('geometry_level', 'Bottom')
2191
+ elsif ['extra-bldgtype-multifamily-slab-middle-middle.osw'].include? osw_file
2192
+ step.setArgument('geometry_horizontal_location', 'Middle')
2193
+ step.setArgument('geometry_level', 'Middle')
2194
+ elsif ['extra-bldgtype-multifamily-slab-middle-top.osw'].include? osw_file
2195
+ step.setArgument('geometry_horizontal_location', 'Middle')
2196
+ step.setArgument('geometry_level', 'Top')
2197
+ elsif ['extra-bldgtype-multifamily-slab-right-bottom.osw'].include? osw_file
2198
+ step.setArgument('geometry_horizontal_location', 'Right')
2199
+ step.setArgument('geometry_level', 'Bottom')
2200
+ elsif ['extra-bldgtype-multifamily-slab-right-middle.osw'].include? osw_file
2201
+ step.setArgument('geometry_horizontal_location', 'Right')
2202
+ step.setArgument('geometry_level', 'Middle')
2203
+ elsif ['extra-bldgtype-multifamily-slab-right-top.osw'].include? osw_file
2204
+ step.setArgument('geometry_horizontal_location', 'Right')
2205
+ step.setArgument('geometry_level', 'Top')
2206
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw'].include? osw_file
2207
+ step.setArgument('geometry_horizontal_location', 'Left')
2208
+ step.setArgument('geometry_level', 'Bottom')
2209
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw'].include? osw_file
2210
+ step.setArgument('geometry_horizontal_location', 'Left')
2211
+ step.setArgument('geometry_level', 'Middle')
2212
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-top.osw'].include? osw_file
2213
+ step.setArgument('geometry_horizontal_location', 'Left')
2214
+ step.setArgument('geometry_level', 'Top')
2215
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw'].include? osw_file
2216
+ step.setArgument('geometry_horizontal_location', 'Middle')
2217
+ step.setArgument('geometry_level', 'Bottom')
2218
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw'].include? osw_file
2219
+ step.setArgument('geometry_horizontal_location', 'Middle')
2220
+ step.setArgument('geometry_level', 'Middle')
2221
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw'].include? osw_file
2222
+ step.setArgument('geometry_horizontal_location', 'Middle')
2223
+ step.setArgument('geometry_level', 'Top')
2224
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw'].include? osw_file
2225
+ step.setArgument('geometry_horizontal_location', 'Right')
2226
+ step.setArgument('geometry_level', 'Bottom')
2227
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw'].include? osw_file
2228
+ step.setArgument('geometry_horizontal_location', 'Right')
2229
+ step.setArgument('geometry_level', 'Middle')
2230
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-top.osw'].include? osw_file
2231
+ step.setArgument('geometry_horizontal_location', 'Right')
2232
+ step.setArgument('geometry_level', 'Top')
2233
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw'].include? osw_file
2234
+ step.setArgument('geometry_horizontal_location', 'Left')
2235
+ step.setArgument('geometry_level', 'Bottom')
2236
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw'].include? osw_file
2237
+ step.setArgument('geometry_horizontal_location', 'Left')
2238
+ step.setArgument('geometry_level', 'Middle')
2239
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw'].include? osw_file
2240
+ step.setArgument('geometry_horizontal_location', 'Left')
2241
+ step.setArgument('geometry_level', 'Top')
2242
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw'].include? osw_file
2243
+ step.setArgument('geometry_horizontal_location', 'Middle')
2244
+ step.setArgument('geometry_level', 'Bottom')
2245
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw'].include? osw_file
2246
+ step.setArgument('geometry_horizontal_location', 'Middle')
2247
+ step.setArgument('geometry_level', 'Middle')
2248
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw'].include? osw_file
2249
+ step.setArgument('geometry_horizontal_location', 'Middle')
2250
+ step.setArgument('geometry_level', 'Top')
2251
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw'].include? osw_file
2252
+ step.setArgument('geometry_horizontal_location', 'Right')
2253
+ step.setArgument('geometry_level', 'Bottom')
2254
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw'].include? osw_file
2255
+ step.setArgument('geometry_horizontal_location', 'Right')
2256
+ step.setArgument('geometry_level', 'Middle')
2257
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw'].include? osw_file
2258
+ step.setArgument('geometry_horizontal_location', 'Right')
2259
+ step.setArgument('geometry_level', 'Top')
2260
+
2261
+ elsif ['extra-bldgtype-multifamily-slab-double-loaded-interior.osw'].include? osw_file
2262
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2263
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw'].include? osw_file
2264
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2265
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw'].include? osw_file
2266
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2267
+ elsif ['extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw'].include? osw_file
2268
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2269
+ elsif ['extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw'].include? osw_file
2270
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2271
+ elsif ['extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw'].include? osw_file
2272
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2273
+ elsif ['extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw'].include? osw_file
2274
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2275
+ elsif ['extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw'].include? osw_file
2276
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2277
+ elsif ['extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw'].include? osw_file
2278
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2279
+ elsif ['extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw'].include? osw_file
2280
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2281
+ elsif ['extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw'].include? osw_file
2282
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2283
+ elsif ['extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw'].include? osw_file
2284
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2285
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw'].include? osw_file
2286
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2287
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw'].include? osw_file
2288
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2289
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw'].include? osw_file
2290
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2291
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw'].include? osw_file
2292
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2293
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw'].include? osw_file
2294
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2295
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw'].include? osw_file
2296
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2297
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw'].include? osw_file
2298
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2299
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw'].include? osw_file
2300
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2301
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw'].include? osw_file
2302
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2303
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw'].include? osw_file
2304
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2305
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw'].include? osw_file
2306
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2307
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw'].include? osw_file
2308
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2309
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw'].include? osw_file
2310
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2311
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw'].include? osw_file
2312
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2313
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw'].include? osw_file
2314
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2315
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw'].include? osw_file
2316
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2317
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw'].include? osw_file
2318
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2319
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw'].include? osw_file
2320
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
1861
2321
  end
1862
2322
 
1863
2323
  # Warnings/Errors
@@ -1882,6 +2342,7 @@ def get_values(osw_file, step)
1882
2342
  step.setArgument('geometry_foundation_height', 0.0)
1883
2343
  elsif ['invalid_files/single-family-attached-ambient.osw'].include? osw_file
1884
2344
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeAmbient)
2345
+ step.setArgument('geometry_rim_joist_height', 0)
1885
2346
  elsif ['invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw'].include? osw_file
1886
2347
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
1887
2348
  step.setArgument('geometry_foundation_height_above_grade', 0.0)
@@ -1899,6 +2360,12 @@ def get_values(osw_file, step)
1899
2360
  step.setArgument('heating_system_fraction_heat_load_served', 0.4)
1900
2361
  step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1901
2362
  step.setArgument('heating_system_fraction_heat_load_served_2', 0.6)
2363
+ elsif ['invalid_files/second-heating-system-serves-total-heat-load.osw'].include? osw_file
2364
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
2365
+ step.setArgument('heating_system_fraction_heat_load_served_2', 1.0)
2366
+ elsif ['invalid_files/second-heating-system-but-no-primary-heating.osw'].include? osw_file
2367
+ step.setArgument('heating_system_type', 'none')
2368
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1902
2369
  elsif ['invalid_files/single-family-attached-no-building-orientation.osw'].include? osw_file
1903
2370
  step.removeArgument('geometry_building_num_units')
1904
2371
  step.removeArgument('geometry_horizontal_location')
@@ -1910,16 +2377,20 @@ def get_values(osw_file, step)
1910
2377
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
1911
2378
  step.setArgument('geometry_foundation_height', 3.0)
1912
2379
  step.setArgument('floor_assembly_r', 10)
2380
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0.0)
1913
2381
  elsif ['invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw'].include? osw_file
1914
2382
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
1915
2383
  step.setArgument('geometry_foundation_height', 3.0)
1916
2384
  step.setArgument('floor_assembly_r', 10)
2385
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0.0)
1917
2386
  elsif ['invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw'].include? osw_file
1918
2387
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
1919
2388
  step.setArgument('floor_assembly_r', 10)
1920
2389
  elsif ['invalid_files/vented-attic-with-floor-and-roof-insulation.osw'].include? osw_file
1921
2390
  step.setArgument('geometry_attic_type', HPXML::AtticTypeVented)
1922
2391
  step.setArgument('roof_assembly_r', 10)
2392
+ step.setArgument('ducts_supply_location', HPXML::LocationAtticVented)
2393
+ step.setArgument('ducts_return_location', HPXML::LocationAtticVented)
1923
2394
  elsif ['invalid_files/unvented-attic-with-floor-and-roof-insulation.osw'].include? osw_file
1924
2395
  step.setArgument('geometry_attic_type', HPXML::AtticTypeUnvented)
1925
2396
  step.setArgument('roof_assembly_r', 10)
@@ -1927,20 +2398,36 @@ def get_values(osw_file, step)
1927
2398
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementConditioned)
1928
2399
  step.setArgument('floor_assembly_r', 10)
1929
2400
  elsif ['invalid_files/conditioned-attic-with-floor-insulation.osw'].include? osw_file
2401
+ step.setArgument('geometry_num_floors_above_grade', 2)
1930
2402
  step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2403
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
2404
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
1931
2405
  elsif ['invalid_files/dhw-indirect-without-boiler.osw'].include? osw_file
1932
2406
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeCombiStorage)
1933
- elsif ['invalid_files/multipliers-without-plug-loads.osw'].include? osw_file
2407
+ elsif ['invalid_files/multipliers-without-tv-plug-loads.osw'].include? osw_file
1934
2408
  step.setArgument('plug_loads_television_annual_kwh', '0.0')
2409
+ elsif ['invalid_files/multipliers-without-other-plug-loads.osw'].include? osw_file
1935
2410
  step.setArgument('plug_loads_other_annual_kwh', '0.0')
2411
+ elsif ['invalid_files/multipliers-without-well-pump-plug-loads.osw'].include? osw_file
2412
+ step.setArgument('plug_loads_well_pump_annual_kwh', '0.0')
1936
2413
  step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
1937
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
2414
+ elsif ['invalid_files/multipliers-without-vehicle-plug-loads.osw'].include? osw_file
2415
+ step.setArgument('plug_loads_vehicle_annual_kwh', '0.0')
1938
2416
  step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
1939
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
1940
2417
  elsif ['invalid_files/multipliers-without-fuel-loads.osw'].include? osw_file
1941
2418
  step.setArgument('fuel_loads_grill_usage_multiplier', 1.0)
1942
2419
  step.setArgument('fuel_loads_lighting_usage_multiplier', 1.0)
1943
2420
  step.setArgument('fuel_loads_fireplace_usage_multiplier', 1.0)
2421
+ elsif ['invalid_files/foundation-wall-insulation-greater-than-height.osw'].include? osw_file
2422
+ step.setArgument('floor_assembly_r', 0)
2423
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 6.0)
2424
+ elsif ['invalid_files/conditioned-attic-with-one-floor-above-grade.osw'].include? osw_file
2425
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2426
+ step.setArgument('ceiling_assembly_r', 0.0)
2427
+ elsif ['invalid_files/zero-number-of-bedrooms.osw'].include? osw_file
2428
+ step.setArgument('geometry_num_bedrooms', 0)
2429
+ elsif ['invalid_files/single-family-detached-with-shared-system.osw'].include? osw_file
2430
+ step.setArgument('heating_system_type', "Shared #{HPXML::HVACTypeBoiler} w/ Baseboard")
1944
2431
  end
1945
2432
  return step
1946
2433
  end
@@ -1950,6 +2437,7 @@ def create_hpxmls
1950
2437
  require_relative 'HPXMLtoOpenStudio/resources/constants'
1951
2438
  require_relative 'HPXMLtoOpenStudio/resources/hotwater_appliances'
1952
2439
  require_relative 'HPXMLtoOpenStudio/resources/hpxml'
2440
+ require_relative 'HPXMLtoOpenStudio/resources/location'
1953
2441
  require_relative 'HPXMLtoOpenStudio/resources/misc_loads'
1954
2442
  require_relative 'HPXMLtoOpenStudio/resources/waterheater'
1955
2443
  require_relative 'HPXMLtoOpenStudio/resources/xmlhelper'
@@ -1989,14 +2477,19 @@ def create_hpxmls
1989
2477
  'ASHRAE_Standard_140/L304XC.xml' => 'ASHRAE_Standard_140/L302XC.xml',
1990
2478
  'ASHRAE_Standard_140/L324XC.xml' => 'ASHRAE_Standard_140/L322XC.xml',
1991
2479
 
2480
+ 'invalid_files/boiler-invalid-afue.xml' => 'base-hvac-boiler-oil-only.xml',
1992
2481
  'invalid_files/cfis-with-hydronic-distribution.xml' => 'base-hvac-boiler-gas-only.xml',
1993
2482
  'invalid_files/clothes-washer-location.xml' => 'base.xml',
1994
2483
  'invalid_files/clothes-dryer-location.xml' => 'base.xml',
1995
2484
  'invalid_files/cooking-range-location.xml' => 'base.xml',
2485
+ 'invalid_files/dehumidifier-fraction-served.xml' => 'base-appliances-dehumidifier-multiple.xml',
2486
+ 'invalid_files/dehumidifier-setpoints.xml' => 'base-appliances-dehumidifier-multiple.xml',
1996
2487
  'invalid_files/dhw-frac-load-served.xml' => 'base-dhw-multiple.xml',
1997
2488
  'invalid_files/dhw-invalid-ef-tank.xml' => 'base.xml',
1998
2489
  'invalid_files/dhw-invalid-uef-tank-heat-pump.xml' => 'base-dhw-tank-heat-pump-uef.xml',
1999
2490
  'invalid_files/dishwasher-location.xml' => 'base.xml',
2491
+ 'invalid_files/duct-leakage-cfm25.xml' => 'base.xml',
2492
+ 'invalid_files/duct-leakage-percent.xml' => 'base.xml',
2000
2493
  'invalid_files/duct-location.xml' => 'base.xml',
2001
2494
  'invalid_files/duct-location-unconditioned-space.xml' => 'base.xml',
2002
2495
  'invalid_files/duplicate-id.xml' => 'base.xml',
@@ -2004,14 +2497,19 @@ def create_hpxmls
2004
2497
  'invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml' => 'base-foundation-unconditioned-basement.xml',
2005
2498
  'invalid_files/enclosure-basement-missing-slab.xml' => 'base-foundation-unconditioned-basement.xml',
2006
2499
  'invalid_files/enclosure-floor-area-exceeds-cfa.xml' => 'base.xml',
2500
+ 'invalid_files/enclosure-floor-area-exceeds-cfa2.xml' => 'base-bldgtype-multifamily.xml',
2007
2501
  'invalid_files/enclosure-garage-missing-exterior-wall.xml' => 'base-enclosure-garage.xml',
2008
2502
  'invalid_files/enclosure-garage-missing-roof-ceiling.xml' => 'base-enclosure-garage.xml',
2009
2503
  'invalid_files/enclosure-garage-missing-slab.xml' => 'base-enclosure-garage.xml',
2010
2504
  'invalid_files/enclosure-living-missing-ceiling-roof.xml' => 'base.xml',
2011
2505
  'invalid_files/enclosure-living-missing-exterior-wall.xml' => 'base.xml',
2012
- 'invalid_files/enclosure-living-missing-floor-slab.xml' => 'base.xml',
2506
+ 'invalid_files/enclosure-living-missing-floor-slab.xml' => 'base-foundation-slab.xml',
2507
+ 'invalid_files/frac-sensible-fuel-load.xml' => 'base-misc-loads-large-uncommon.xml',
2508
+ 'invalid_files/frac-sensible-plug-load.xml' => 'base-misc-loads-large-uncommon.xml',
2509
+ 'invalid_files/frac-total-fuel-load.xml' => 'base-misc-loads-large-uncommon.xml',
2510
+ 'invalid_files/frac-total-plug-load.xml' => 'base-misc-loads-large-uncommon.xml',
2511
+ 'invalid_files/furnace-invalid-afue.xml' => 'base.xml',
2013
2512
  'invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2014
- 'invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2015
2513
  'invalid_files/hvac-invalid-distribution-system-type.xml' => 'base.xml',
2016
2514
  'invalid_files/hvac-distribution-multiple-attached-cooling.xml' => 'base-hvac-multiple.xml',
2017
2515
  'invalid_files/hvac-distribution-multiple-attached-heating.xml' => 'base-hvac-multiple.xml',
@@ -2020,6 +2518,10 @@ def create_hpxmls
2020
2518
  'invalid_files/hvac-dse-multiple-attached-heating.xml' => 'base-hvac-dse.xml',
2021
2519
  'invalid_files/hvac-frac-load-served.xml' => 'base-hvac-multiple.xml',
2022
2520
  'invalid_files/hvac-inconsistent-fan-powers.xml' => 'base.xml',
2521
+ 'invalid_files/hvac-shared-negative-seer-eq.xml' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
2522
+ 'invalid_files/generator-number-of-bedrooms-served.xml' => 'base-bldgtype-multifamily-shared-generator.xml',
2523
+ 'invalid_files/generator-output-greater-than-consumption.xml' => 'base-misc-generators.xml',
2524
+ 'invalid_files/invalid-assembly-effective-rvalue.xml' => 'base.xml',
2023
2525
  'invalid_files/invalid-datatype-boolean.xml' => 'base.xml',
2024
2526
  'invalid_files/invalid-datatype-float.xml' => 'base.xml',
2025
2527
  'invalid_files/invalid-datatype-integer.xml' => 'base.xml',
@@ -2027,12 +2529,20 @@ def create_hpxmls
2027
2529
  'invalid_files/invalid-epw-filepath.xml' => 'base.xml',
2028
2530
  'invalid_files/invalid-facility-type-equipment.xml' => 'base-bldgtype-multifamily-shared-laundry-room.xml',
2029
2531
  'invalid_files/invalid-facility-type-surfaces.xml' => 'base.xml',
2532
+ 'invalid_files/invalid-foundation-wall-properties.xml' => 'base-foundation-unconditioned-basement-wall-insulation.xml',
2533
+ 'invalid_files/invalid-id.xml' => 'base-enclosure-skylights.xml',
2534
+ 'invalid_files/invalid-id2.xml' => 'base-enclosure-skylights.xml',
2535
+ 'invalid_files/invalid-infiltration-volume.xml' => 'base.xml',
2030
2536
  'invalid_files/invalid-input-parameters.xml' => 'base.xml',
2031
2537
  'invalid_files/invalid-neighbor-shading-azimuth.xml' => 'base-misc-neighbor-shading.xml',
2538
+ 'invalid_files/invalid-number-of-bedrooms-served.xml' => 'base-bldgtype-multifamily-shared-pv.xml',
2539
+ 'invalid_files/invalid-number-of-conditioned-floors.xml' => 'base.xml',
2540
+ 'invalid_files/invalid-number-of-units-served.xml' => 'base-bldgtype-multifamily-shared-water-heater.xml',
2032
2541
  'invalid_files/invalid-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
2033
2542
  'invalid_files/invalid-relatedhvac-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2034
2543
  'invalid_files/invalid-runperiod.xml' => 'base.xml',
2035
2544
  'invalid_files/invalid-schema-version.xml' => 'base.xml',
2545
+ 'invalid_files/invalid-shared-vent-in-unit-flowrate.xml' => 'base-bldgtype-multifamily-shared-mechvent.xml',
2036
2546
  'invalid_files/invalid-timestep.xml' => 'base.xml',
2037
2547
  'invalid_files/invalid-window-height.xml' => 'base-enclosure-overhangs.xml',
2038
2548
  'invalid_files/lighting-fractions.xml' => 'base.xml',
@@ -2041,6 +2551,10 @@ def create_hpxmls
2041
2551
  'invalid_files/multifamily-reference-duct.xml' => 'base.xml',
2042
2552
  'invalid_files/multifamily-reference-surface.xml' => 'base.xml',
2043
2553
  'invalid_files/multifamily-reference-water-heater.xml' => 'base.xml',
2554
+ 'invalid_files/multiple-buildings-without-building-id.xml' => 'base.xml',
2555
+ 'invalid_files/multiple-buildings-wrong-building-id.xml' => 'base.xml',
2556
+ 'invalid_files/multiple-shared-cooling-systems.xml' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
2557
+ 'invalid_files/multiple-shared-heating-systems.xml' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
2044
2558
  'invalid_files/net-area-negative-roof.xml' => 'base-enclosure-skylights.xml',
2045
2559
  'invalid_files/net-area-negative-wall.xml' => 'base.xml',
2046
2560
  'invalid_files/num-bedrooms-exceeds-limit.xml' => 'base.xml',
@@ -2048,7 +2562,7 @@ def create_hpxmls
2048
2562
  'invalid_files/refrigerator-location.xml' => 'base.xml',
2049
2563
  'invalid_files/repeated-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
2050
2564
  'invalid_files/repeated-relatedhvac-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2051
- 'invalid_files/slab-zero-exposed-perimeter.xml' => 'base.xml',
2565
+ 'invalid_files/solar-fraction-one.xml' => 'base-dhw-solar-fraction.xml',
2052
2566
  'invalid_files/solar-thermal-system-with-combi-tankless.xml' => 'base-dhw-combi-tankless.xml',
2053
2567
  'invalid_files/solar-thermal-system-with-desuperheater.xml' => 'base-dhw-desuperheater.xml',
2054
2568
  'invalid_files/solar-thermal-system-with-dhw-indirect.xml' => 'base-dhw-combi-tankless.xml',
@@ -2068,9 +2582,9 @@ def create_hpxmls
2068
2582
  'invalid_files/refrigerators-no-primary.xml' => 'base.xml',
2069
2583
  'base-appliances-coal.xml' => 'base.xml',
2070
2584
  'base-appliances-dehumidifier.xml' => 'base-location-dallas-tx.xml',
2071
- 'base-appliances-dehumidifier-50percent.xml' => 'base-appliances-dehumidifier.xml',
2072
2585
  'base-appliances-dehumidifier-ief-portable.xml' => 'base-appliances-dehumidifier.xml',
2073
2586
  'base-appliances-dehumidifier-ief-whole-home.xml' => 'base-appliances-dehumidifier-ief-portable.xml',
2587
+ 'base-appliances-dehumidifier-multiple.xml' => 'base-appliances-dehumidifier.xml',
2074
2588
  'base-appliances-gas.xml' => 'base.xml',
2075
2589
  'base-appliances-modified.xml' => 'base.xml',
2076
2590
  'base-appliances-none.xml' => 'base.xml',
@@ -2181,10 +2695,12 @@ def create_hpxmls
2181
2695
  'base-enclosure-overhangs.xml' => 'base.xml',
2182
2696
  'base-enclosure-rooftypes.xml' => 'base.xml',
2183
2697
  'base-enclosure-skylights.xml' => 'base.xml',
2698
+ 'base-enclosure-skylights-shading.xml' => 'base-enclosure-skylights.xml',
2184
2699
  'base-enclosure-split-level.xml' => 'base-foundation-slab.xml',
2185
- 'base-enclosure-split-surfaces.xml' => 'base-enclosure-skylights.xml',
2700
+ 'base-enclosure-split-surfaces.xml' => 'base-enclosure-skylights.xml', # Surfaces should collapse via HPXML.collapse_enclosure_surfaces()
2701
+ 'base-enclosure-split-surfaces2.xml' => 'base-enclosure-skylights.xml', # Surfaces should NOT collapse via HPXML.collapse_enclosure_surfaces()
2186
2702
  'base-enclosure-walltypes.xml' => 'base.xml',
2187
- 'base-enclosure-windows-interior-shading.xml' => 'base.xml',
2703
+ 'base-enclosure-windows-shading.xml' => 'base.xml',
2188
2704
  'base-enclosure-windows-none.xml' => 'base.xml',
2189
2705
  'base-foundation-multiple.xml' => 'base-foundation-unconditioned-basement.xml',
2190
2706
  'base-foundation-ambient.xml' => 'base.xml',
@@ -2199,9 +2715,50 @@ def create_hpxmls
2199
2715
  'base-foundation-vented-crawlspace.xml' => 'base.xml',
2200
2716
  'base-foundation-walkout-basement.xml' => 'base.xml',
2201
2717
  'base-foundation-complex.xml' => 'base.xml',
2718
+ 'base-foundation-basement-garage.xml' => 'base.xml',
2202
2719
  'base-hvac-air-to-air-heat-pump-1-speed.xml' => 'base.xml',
2720
+ 'base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2721
+ 'base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2203
2722
  'base-hvac-air-to-air-heat-pump-2-speed.xml' => 'base.xml',
2204
2723
  'base-hvac-air-to-air-heat-pump-var-speed.xml' => 'base.xml',
2724
+ 'base-hvac-autosize.xml' => 'base.xml',
2725
+ 'base-hvac-autosize-air-to-air-heat-pump-1-speed.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2726
+ 'base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml',
2727
+ 'base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml',
2728
+ 'base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-air-to-air-heat-pump-1-speed.xml',
2729
+ 'base-hvac-autosize-air-to-air-heat-pump-2-speed.xml' => 'base-hvac-air-to-air-heat-pump-2-speed.xml',
2730
+ 'base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-air-to-air-heat-pump-2-speed.xml',
2731
+ 'base-hvac-autosize-air-to-air-heat-pump-var-speed.xml' => 'base-hvac-air-to-air-heat-pump-var-speed.xml',
2732
+ 'base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-air-to-air-heat-pump-var-speed.xml',
2733
+ 'base-hvac-autosize-boiler-elec-only.xml' => 'base-hvac-boiler-elec-only.xml',
2734
+ 'base-hvac-autosize-boiler-gas-central-ac-1-speed.xml' => 'base-hvac-boiler-gas-central-ac-1-speed.xml',
2735
+ 'base-hvac-autosize-boiler-gas-only.xml' => 'base-hvac-boiler-gas-only.xml',
2736
+ 'base-hvac-autosize-central-ac-only-1-speed.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2737
+ 'base-hvac-autosize-central-ac-only-2-speed.xml' => 'base-hvac-central-ac-only-2-speed.xml',
2738
+ 'base-hvac-autosize-central-ac-only-var-speed.xml' => 'base-hvac-central-ac-only-var-speed.xml',
2739
+ 'base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml' => 'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml',
2740
+ 'base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml' => 'base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml',
2741
+ 'base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml' => 'base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml',
2742
+ 'base-hvac-autosize-elec-resistance-only.xml' => 'base-hvac-elec-resistance-only.xml',
2743
+ 'base-hvac-autosize-evap-cooler-furnace-gas.xml' => 'base-hvac-evap-cooler-furnace-gas.xml',
2744
+ 'base-hvac-autosize-floor-furnace-propane-only.xml' => 'base-hvac-floor-furnace-propane-only.xml',
2745
+ 'base-hvac-autosize-furnace-elec-only.xml' => 'base-hvac-furnace-elec-only.xml',
2746
+ 'base-hvac-autosize-furnace-gas-central-ac-2-speed.xml' => 'base-hvac-furnace-gas-central-ac-2-speed.xml',
2747
+ 'base-hvac-autosize-furnace-gas-central-ac-var-speed.xml' => 'base-hvac-furnace-gas-central-ac-var-speed.xml',
2748
+ 'base-hvac-autosize-furnace-gas-only.xml' => 'base-hvac-furnace-gas-only.xml',
2749
+ 'base-hvac-autosize-furnace-gas-room-ac.xml' => 'base-hvac-furnace-gas-room-ac.xml',
2750
+ 'base-hvac-autosize-ground-to-air-heat-pump.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2751
+ 'base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml' => 'base-hvac-ground-to-air-heat-pump-cooling-only.xml',
2752
+ 'base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml' => 'base-hvac-ground-to-air-heat-pump-heating-only.xml',
2753
+ 'base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-ground-to-air-heat-pump.xml',
2754
+ 'base-hvac-autosize-mini-split-heat-pump-ducted.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2755
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml' => 'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml',
2756
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml' => 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml',
2757
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-mini-split-heat-pump-ducted.xml',
2758
+ 'base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2759
+ 'base-hvac-autosize-room-ac-only.xml' => 'base-hvac-room-ac-only.xml',
2760
+ 'base-hvac-autosize-stove-oil-only.xml' => 'base-hvac-stove-oil-only.xml',
2761
+ 'base-hvac-autosize-wall-furnace-elec-only.xml' => 'base-hvac-wall-furnace-elec-only.xml',
2205
2762
  'base-hvac-boiler-coal-only.xml' => 'base.xml',
2206
2763
  'base-hvac-boiler-elec-only.xml' => 'base.xml',
2207
2764
  'base-hvac-boiler-gas-central-ac-1-speed.xml' => 'base.xml',
@@ -2239,15 +2796,29 @@ def create_hpxmls
2239
2796
  'base-hvac-furnace-wood-only.xml' => 'base.xml',
2240
2797
  'base-hvac-furnace-x3-dse.xml' => 'base.xml',
2241
2798
  'base-hvac-ground-to-air-heat-pump.xml' => 'base.xml',
2242
- 'base-hvac-ideal-air.xml' => 'base.xml',
2799
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2800
+ 'base-hvac-ground-to-air-heat-pump-heating-only.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2801
+ 'base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2802
+ 'base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2803
+ 'base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2804
+ 'base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2805
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2806
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml' => 'base-hvac-air-to-air-heat-pump-2-speed.xml',
2807
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml' => 'base-hvac-air-to-air-heat-pump-var-speed.xml',
2808
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2809
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml' => 'base-hvac-furnace-gas-central-ac-2-speed.xml',
2810
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml' => 'base-hvac-furnace-gas-central-ac-var-speed.xml',
2811
+ 'base-hvac-install-quality-all-furnace-gas-only.xml' => 'base-hvac-furnace-gas-only.xml',
2812
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2813
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2814
+ 'base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2243
2815
  'base-hvac-mini-split-air-conditioner-only-ducted.xml' => 'base.xml',
2244
2816
  'base-hvac-mini-split-air-conditioner-only-ductless.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2245
2817
  'base-hvac-mini-split-heat-pump-ducted.xml' => 'base.xml',
2246
- 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2247
2818
  'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2819
+ 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2248
2820
  'base-hvac-mini-split-heat-pump-ductless.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2249
2821
  'base-hvac-multiple.xml' => 'base.xml',
2250
- 'base-hvac-multiple2.xml' => 'base.xml',
2251
2822
  'base-hvac-none.xml' => 'base.xml',
2252
2823
  'base-hvac-portable-heater-gas-only.xml' => 'base.xml',
2253
2824
  'base-hvac-programmable-thermostat.xml' => 'base.xml',
@@ -2264,10 +2835,14 @@ def create_hpxmls
2264
2835
  'base-lighting-detailed.xml' => 'base.xml',
2265
2836
  'base-lighting-none.xml' => 'base.xml',
2266
2837
  'base-location-AMY-2012.xml' => 'base.xml',
2267
- 'base-location-baltimore-md.xml' => 'base.xml',
2838
+ 'base-location-baltimore-md.xml' => 'base-foundation-unvented-crawlspace.xml',
2268
2839
  'base-location-dallas-tx.xml' => 'base-foundation-slab.xml',
2269
- 'base-location-duluth-mn.xml' => 'base.xml',
2840
+ 'base-location-duluth-mn.xml' => 'base-foundation-unconditioned-basement.xml',
2841
+ 'base-location-helena-mt.xml' => 'base.xml',
2842
+ 'base-location-honolulu-hi.xml' => 'base-foundation-slab.xml',
2270
2843
  'base-location-miami-fl.xml' => 'base-foundation-slab.xml',
2844
+ 'base-location-phoenix-az.xml' => 'base-foundation-slab.xml',
2845
+ 'base-location-portland-or.xml' => 'base-foundation-vented-crawlspace.xml',
2271
2846
  'base-mechvent-balanced.xml' => 'base.xml',
2272
2847
  'base-mechvent-bath-kitchen-fans.xml' => 'base.xml',
2273
2848
  'base-mechvent-cfis.xml' => 'base.xml',
@@ -2288,8 +2863,9 @@ def create_hpxmls
2288
2863
  'base-misc-loads-large-uncommon2.xml' => 'base-misc-loads-large-uncommon.xml',
2289
2864
  'base-misc-loads-none.xml' => 'base.xml',
2290
2865
  'base-misc-neighbor-shading.xml' => 'base.xml',
2291
- 'base-misc-shelter-coefficient.xml' => 'base.xml',
2866
+ 'base-misc-shielding-of-home.xml' => 'base.xml',
2292
2867
  'base-misc-usage-multiplier.xml' => 'base.xml',
2868
+ 'base-multiple-buildings.xml' => 'base.xml',
2293
2869
  'base-pv.xml' => 'base.xml',
2294
2870
  'base-simcontrol-calendar-year-custom.xml' => 'base.xml',
2295
2871
  'base-simcontrol-daylight-saving-custom.xml' => 'base.xml',
@@ -2297,42 +2873,8 @@ def create_hpxmls
2297
2873
  'base-simcontrol-runperiod-1-month.xml' => 'base.xml',
2298
2874
  'base-simcontrol-timestep-10-mins.xml' => 'base.xml',
2299
2875
  'base-schedules-stochastic.xml' => 'base.xml',
2876
+ 'base-schedules-stochastic-vacant.xml' => 'base-schedules-stochastic.xml',
2300
2877
  'base-schedules-user-specified.xml' => 'base.xml',
2301
-
2302
- 'hvac_autosizing/base-autosize.xml' => 'base.xml',
2303
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2304
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml' => 'hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml',
2305
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml' => 'base-hvac-air-to-air-heat-pump-2-speed.xml',
2306
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml' => 'hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml',
2307
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml' => 'base-hvac-air-to-air-heat-pump-var-speed.xml',
2308
- 'hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml' => 'hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml',
2309
- 'hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml' => 'base-hvac-boiler-elec-only.xml',
2310
- 'hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml' => 'base-hvac-boiler-gas-central-ac-1-speed.xml',
2311
- 'hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml' => 'base-hvac-boiler-gas-only.xml',
2312
- 'hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2313
- 'hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml' => 'base-hvac-central-ac-only-2-speed.xml',
2314
- 'hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml' => 'base-hvac-central-ac-only-var-speed.xml',
2315
- 'hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml' => 'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml',
2316
- 'hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml' => 'base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml',
2317
- 'hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml' => 'base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml',
2318
- 'hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml' => 'base-hvac-elec-resistance-only.xml',
2319
- 'hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml' => 'base-hvac-evap-cooler-furnace-gas.xml',
2320
- 'hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml' => 'base-hvac-floor-furnace-propane-only.xml',
2321
- 'hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml' => 'base-hvac-furnace-elec-only.xml',
2322
- 'hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml' => 'base-hvac-furnace-gas-central-ac-2-speed.xml',
2323
- 'hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml' => 'base-hvac-furnace-gas-central-ac-var-speed.xml',
2324
- 'hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml' => 'base-hvac-furnace-gas-only.xml',
2325
- 'hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml' => 'base-hvac-furnace-gas-room-ac.xml',
2326
- 'hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2327
- 'hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml' => 'hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml',
2328
- 'hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2329
- 'hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml' => 'hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml',
2330
- 'hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml' => 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml',
2331
- 'hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml' => 'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml',
2332
- 'hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2333
- 'hvac_autosizing/base-hvac-room-ac-only-autosize.xml' => 'base-hvac-room-ac-only.xml',
2334
- 'hvac_autosizing/base-hvac-stove-oil-only-autosize.xml' => 'base-hvac-stove-oil-only.xml',
2335
- 'hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml' => 'base-hvac-wall-furnace-elec-only.xml',
2336
2878
  }
2337
2879
 
2338
2880
  puts "Generating #{hpxmls_files.size} HPXML files..."
@@ -2418,6 +2960,9 @@ def create_hpxmls
2418
2960
  elsif ['invalid_files/invalid-schema-version.xml'].include? derivative
2419
2961
  root = XMLHelper.get_element(hpxml_doc, '/HPXML')
2420
2962
  XMLHelper.add_attribute(root, 'schemaVersion', '2.3')
2963
+ elsif ['invalid_files/invalid-id2.xml'].include? derivative
2964
+ element = XMLHelper.get_element(hpxml_doc, '/HPXML/Building/BuildingDetails/Enclosure/Skylights/Skylight/SystemIdentifier')
2965
+ XMLHelper.delete_attribute(element, 'id')
2421
2966
  end
2422
2967
 
2423
2968
  if derivative.include? 'ASHRAE_Standard_140'
@@ -2428,6 +2973,20 @@ def create_hpxmls
2428
2973
 
2429
2974
  XMLHelper.write_file(hpxml_doc, hpxml_path)
2430
2975
 
2976
+ if ['base-multiple-buildings.xml',
2977
+ 'invalid_files/multiple-buildings-without-building-id.xml',
2978
+ 'invalid_files/multiple-buildings-wrong-building-id.xml'].include? derivative
2979
+ # HPXML class doesn't support multiple buildings, so we'll stitch together manually.
2980
+ hpxml_element = XMLHelper.get_element(hpxml_doc, '/HPXML')
2981
+ building_element = XMLHelper.get_element(hpxml_element, 'Building')
2982
+ for i in 2..3
2983
+ new_building_element = Marshal.load(Marshal.dump(building_element))
2984
+ XMLHelper.add_attribute(XMLHelper.get_element(new_building_element, 'BuildingID'), 'id', "MyBuilding#{i}")
2985
+ hpxml_element.children << new_building_element
2986
+ end
2987
+ XMLHelper.write_file(hpxml_doc, hpxml_path)
2988
+ end
2989
+
2431
2990
  if not hpxml_path.include? 'invalid_files'
2432
2991
  # Validate file against HPXML schema
2433
2992
  schemas_dir = File.absolute_path(File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio/resources'))
@@ -2435,6 +2994,7 @@ def create_hpxmls
2435
2994
  if errors.size > 0
2436
2995
  fail "ERRORS: #{errors}"
2437
2996
  end
2997
+
2438
2998
  # Check for errors
2439
2999
  errors = hpxml.check_for_errors()
2440
3000
  if errors.size > 0
@@ -2518,6 +3078,8 @@ def set_hpxml_header(hpxml_file, hpxml)
2518
3078
  hpxml.header.timestep = nil
2519
3079
  elsif ['base-schedules-stochastic.xml'].include? hpxml_file
2520
3080
  hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/stochastic.csv'
3081
+ elsif ['base-schedules-stochastic-vacant.xml'].include? hpxml_file
3082
+ hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/vacant.csv'
2521
3083
  elsif ['base-schedules-user-specified.xml'].include? hpxml_file
2522
3084
  hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/user-specified.csv'
2523
3085
  elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
@@ -2529,8 +3091,8 @@ def set_hpxml_site(hpxml_file, hpxml)
2529
3091
  if ['base.xml'].include? hpxml_file
2530
3092
  hpxml.site.fuels = [HPXML::FuelTypeElectricity, HPXML::FuelTypeNaturalGas]
2531
3093
  hpxml.site.site_type = HPXML::SiteTypeSuburban
2532
- elsif ['base-misc-shelter-coefficient.xml'].include? hpxml_file
2533
- hpxml.site.shelter_coefficient = 0.8
3094
+ elsif ['base-misc-shielding-of-home.xml'].include? hpxml_file
3095
+ hpxml.site.shielding_of_home = HPXML::ShieldingWellShielded
2534
3096
  elsif ['base-misc-defaults.xml'].include? hpxml_file
2535
3097
  hpxml.site.site_type = nil
2536
3098
  elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
@@ -2559,7 +3121,6 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2559
3121
  hpxml.building_construction.conditioned_floor_area = 1539
2560
3122
  hpxml.building_construction.conditioned_building_volume = 12312
2561
3123
  hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFD
2562
- hpxml.building_construction.use_only_ideal_air_system = true
2563
3124
  elsif ['ASHRAE_Standard_140/L322XC.xml'].include? hpxml_file
2564
3125
  hpxml.building_construction.number_of_conditioned_floors = 2
2565
3126
  hpxml.building_construction.conditioned_floor_area = 3078
@@ -2601,8 +3162,6 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2601
3162
  hpxml.building_construction.number_of_conditioned_floors -= 1
2602
3163
  hpxml.building_construction.conditioned_floor_area -= 1350
2603
3164
  hpxml.building_construction.conditioned_building_volume -= 1350 * 8
2604
- elsif ['base-hvac-ideal-air.xml'].include? hpxml_file
2605
- hpxml.building_construction.use_only_ideal_air_system = true
2606
3165
  elsif ['base-atticroof-conditioned.xml'].include? hpxml_file
2607
3166
  hpxml.building_construction.number_of_conditioned_floors += 1
2608
3167
  hpxml.building_construction.number_of_conditioned_floors_above_grade += 1
@@ -2615,7 +3174,8 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2615
3174
  hpxml.building_construction.number_of_conditioned_floors_above_grade += 1
2616
3175
  hpxml.building_construction.conditioned_floor_area += 1350
2617
3176
  hpxml.building_construction.conditioned_building_volume += 1350 * 8
2618
- elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
3177
+ elsif ['base-enclosure-2stories-garage.xml',
3178
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
2619
3179
  hpxml.building_construction.conditioned_floor_area -= 400 * 2
2620
3180
  hpxml.building_construction.conditioned_building_volume -= 400 * 2 * 8
2621
3181
  elsif ['base-misc-defaults.xml'].include? hpxml_file
@@ -2628,12 +3188,16 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2628
3188
  hpxml.building_construction.number_of_conditioned_floors = 1.5
2629
3189
  hpxml.building_construction.number_of_conditioned_floors_above_grade = 1.5
2630
3190
  elsif ['invalid_files/enclosure-floor-area-exceeds-cfa.xml'].include? hpxml_file
2631
- hpxml.building_construction.conditioned_floor_area /= 5.0
3191
+ hpxml.building_construction.conditioned_floor_area = 1348.8
3192
+ elsif ['invalid_files/enclosure-floor-area-exceeds-cfa2.xml'].include? hpxml_file
3193
+ hpxml.building_construction.conditioned_floor_area = 898.8
2632
3194
  elsif ['invalid_files/num-bedrooms-exceeds-limit.xml'].include? hpxml_file
2633
3195
  hpxml.building_construction.number_of_bedrooms = 40
2634
3196
  elsif ['invalid_files/invalid-facility-type-equipment.xml',
2635
3197
  'invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
2636
3198
  hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFD
3199
+ elsif ['invalid_files/invalid-number-of-conditioned-floors.xml'].include? hpxml_file
3200
+ hpxml.building_construction.number_of_conditioned_floors_above_grade = hpxml.building_construction.number_of_conditioned_floors + 1
2637
3201
  end
2638
3202
  end
2639
3203
 
@@ -2657,30 +3221,50 @@ def set_hpxml_climate_and_risk_zones(hpxml_file, hpxml)
2657
3221
  hpxml.climate_and_risk_zones.weather_station_name = 'Las Vegas, NV'
2658
3222
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3.epw'
2659
3223
  elsif ['base.xml'].include? hpxml_file
2660
- hpxml.climate_and_risk_zones.iecc_zone = '5B'
3224
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(725650)
2661
3225
  hpxml.climate_and_risk_zones.weather_station_name = 'Denver, CO'
2662
3226
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_CO_Denver.Intl.AP.725650_TMY3.epw'
2663
3227
  hpxml.header.state_code = 'CO'
2664
3228
  elsif ['base-location-baltimore-md.xml'].include? hpxml_file
2665
- hpxml.climate_and_risk_zones.iecc_zone = '4A'
3229
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(724060)
2666
3230
  hpxml.climate_and_risk_zones.weather_station_name = 'Baltimore, MD'
2667
3231
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.epw'
2668
3232
  hpxml.header.state_code = 'MD'
2669
3233
  elsif ['base-location-dallas-tx.xml'].include? hpxml_file
2670
- hpxml.climate_and_risk_zones.iecc_zone = '3A'
3234
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722590)
2671
3235
  hpxml.climate_and_risk_zones.weather_station_name = 'Dallas, TX'
2672
3236
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3.epw'
2673
3237
  hpxml.header.state_code = 'TX'
2674
3238
  elsif ['base-location-duluth-mn.xml'].include? hpxml_file
2675
- hpxml.climate_and_risk_zones.iecc_zone = '7'
3239
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(727450)
2676
3240
  hpxml.climate_and_risk_zones.weather_station_name = 'Duluth, MN'
2677
3241
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw'
2678
3242
  hpxml.header.state_code = 'MN'
3243
+ elsif ['base-location-helena-mt.xml'].include? hpxml_file
3244
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(727720)
3245
+ hpxml.climate_and_risk_zones.weather_station_name = 'Helena, MT'
3246
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MT_Helena.Rgnl.AP.727720_TMY3.epw'
3247
+ hpxml.header.state_code = 'MT'
3248
+ elsif ['base-location-honolulu-hi.xml'].include? hpxml_file
3249
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(911820)
3250
+ hpxml.climate_and_risk_zones.weather_station_name = 'Honolulu, HI'
3251
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_HI_Honolulu.Intl.AP.911820_TMY3.epw'
3252
+ hpxml.header.state_code = 'HI'
2679
3253
  elsif ['base-location-miami-fl.xml'].include? hpxml_file
2680
- hpxml.climate_and_risk_zones.iecc_zone = '1A'
3254
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722020)
2681
3255
  hpxml.climate_and_risk_zones.weather_station_name = 'Miami, FL'
2682
3256
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_FL_Miami.Intl.AP.722020_TMY3.epw'
2683
3257
  hpxml.header.state_code = 'FL'
3258
+ elsif ['base-location-phoenix-az.xml'].include? hpxml_file
3259
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722780)
3260
+ hpxml.climate_and_risk_zones.weather_station_name = 'Phoenix, AZ'
3261
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw'
3262
+ hpxml.header.state_code = 'AZ'
3263
+ elsif ['base-location-portland-or.xml'].include? hpxml_file
3264
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(726980)
3265
+ hpxml.climate_and_risk_zones.weather_station_name = 'Portland, OR'
3266
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_OR_Portland.Intl.AP.726980_TMY3.epw'
3267
+ hpxml.header.state_code = 'OR'
2684
3268
  elsif ['base-location-AMY-2012.xml'].include? hpxml_file
2685
3269
  hpxml.climate_and_risk_zones.weather_station_name = 'Boulder, CO'
2686
3270
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'US_CO_Boulder_AMY_2012.epw'
@@ -2694,12 +3278,16 @@ end
2694
3278
  def set_hpxml_air_infiltration_measurements(hpxml_file, hpxml)
2695
3279
  infil_volume = hpxml.building_construction.conditioned_building_volume
2696
3280
  if ['ASHRAE_Standard_140/L100AC.xml',
2697
- 'ASHRAE_Standard_140/L100AL.xml',
2698
- 'base-enclosure-infil-natural-ach.xml'].include? hpxml_file
3281
+ 'ASHRAE_Standard_140/L100AL.xml'].include? hpxml_file
2699
3282
  hpxml.air_infiltration_measurements.clear
2700
3283
  hpxml.air_infiltration_measurements.add(id: 'InfiltrationMeasurement',
2701
3284
  unit_of_measure: HPXML::UnitsACHNatural,
2702
3285
  air_leakage: 0.67)
3286
+ elsif ['base-enclosure-infil-natural-ach.xml'].include? hpxml_file
3287
+ hpxml.air_infiltration_measurements.clear
3288
+ hpxml.air_infiltration_measurements.add(id: 'InfiltrationMeasurement',
3289
+ unit_of_measure: HPXML::UnitsACHNatural,
3290
+ air_leakage: 0.2)
2703
3291
  elsif ['ASHRAE_Standard_140/L322XC.xml'].include? hpxml_file
2704
3292
  hpxml.air_infiltration_measurements[0].air_leakage = 0.335
2705
3293
  elsif ['ASHRAE_Standard_140/L110AC.xml',
@@ -2729,6 +3317,8 @@ def set_hpxml_air_infiltration_measurements(hpxml_file, hpxml)
2729
3317
  end
2730
3318
  if ['base-misc-defaults.xml'].include? hpxml_file
2731
3319
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
3320
+ elsif ['invalid_files/invalid-infiltration-volume.xml'].include? hpxml_file
3321
+ hpxml.air_infiltration_measurements[0].infiltration_volume = infil_volume * 0.25
2732
3322
  else
2733
3323
  hpxml.air_infiltration_measurements[0].infiltration_volume = infil_volume
2734
3324
  end
@@ -2899,16 +3489,21 @@ def set_hpxml_roofs(hpxml_file, hpxml)
2899
3489
  elsif ['base-atticroof-cathedral.xml'].include? hpxml_file
2900
3490
  hpxml.roofs[0].interior_adjacent_to = HPXML::LocationLivingSpace
2901
3491
  hpxml.roofs[0].insulation_assembly_r_value = 25.8
2902
- elsif ['base-enclosure-garage.xml'].include? hpxml_file
3492
+ elsif ['base-enclosure-garage.xml',
3493
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
2903
3494
  hpxml.roofs[0].area += 670
2904
3495
  elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
2905
3496
  hpxml.roofs[0].insulation_assembly_r_value = 25.8
2906
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
3497
+ elsif ['base-enclosure-split-surfaces.xml',
3498
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
2907
3499
  for n in 1..hpxml.roofs.size
2908
3500
  hpxml.roofs[n - 1].area /= 9.0
2909
3501
  for i in 2..9
2910
3502
  hpxml.roofs << hpxml.roofs[n - 1].dup
2911
3503
  hpxml.roofs[-1].id += i.to_s
3504
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
3505
+ hpxml.roofs[-1].insulation_assembly_r_value += 0.01 * i
3506
+ end
2912
3507
  end
2913
3508
  end
2914
3509
  hpxml.roofs << hpxml.roofs[-1].dup
@@ -2986,6 +3581,15 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
2986
3581
  solar_absorptance: 0.7,
2987
3582
  emittance: 0.92,
2988
3583
  insulation_assembly_r_value: 23.0)
3584
+ elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
3585
+ hpxml.rim_joists[-1].area = 66
3586
+ hpxml.rim_joists.add(id: 'RimJoistOther',
3587
+ exterior_adjacent_to: HPXML::LocationBasementConditioned,
3588
+ interior_adjacent_to: HPXML::LocationBasementConditioned,
3589
+ area: 28,
3590
+ solar_absorptance: 0.7,
3591
+ emittance: 0.92,
3592
+ insulation_assembly_r_value: 4.0)
2989
3593
  elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
2990
3594
  hpxml.rim_joists.clear
2991
3595
  elsif ['base-enclosure-walltypes.xml'].include? hpxml_file
@@ -3011,7 +3615,7 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3011
3615
  elsif ['base-foundation-unconditioned-basement.xml'].include? hpxml_file
3012
3616
  for i in 0..hpxml.rim_joists.size - 1
3013
3617
  hpxml.rim_joists[i].interior_adjacent_to = HPXML::LocationBasementUnconditioned
3014
- hpxml.rim_joists[i].insulation_assembly_r_value = 2.3
3618
+ hpxml.rim_joists[i].insulation_assembly_r_value = 4.0
3015
3619
  end
3016
3620
  elsif ['base-foundation-unconditioned-basement-wall-insulation.xml'].include? hpxml_file
3017
3621
  for i in 0..hpxml.rim_joists.size - 1
@@ -3035,7 +3639,9 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3035
3639
  area: 81,
3036
3640
  solar_absorptance: 0.7,
3037
3641
  emittance: 0.92,
3038
- insulation_assembly_r_value: 2.3)
3642
+ insulation_assembly_r_value: 4.0)
3643
+ elsif ['base-enclosure-garage.xml'].include? hpxml_file
3644
+ hpxml.rim_joists[-1].area = 116
3039
3645
  elsif ['base-enclosure-2stories.xml'].include? hpxml_file
3040
3646
  hpxml.rim_joists.add(id: 'RimJoist2ndStory',
3041
3647
  exterior_adjacent_to: HPXML::LocationOutside,
@@ -3045,12 +3651,16 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3045
3651
  solar_absorptance: 0.7,
3046
3652
  emittance: 0.92,
3047
3653
  insulation_assembly_r_value: 23.0)
3048
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
3654
+ elsif ['base-enclosure-split-surfaces.xml',
3655
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3049
3656
  for n in 1..hpxml.rim_joists.size
3050
3657
  hpxml.rim_joists[n - 1].area /= 9.0
3051
3658
  for i in 2..9
3052
3659
  hpxml.rim_joists << hpxml.rim_joists[n - 1].dup
3053
3660
  hpxml.rim_joists[-1].id += i.to_s
3661
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
3662
+ hpxml.rim_joists[-1].insulation_assembly_r_value += 0.01 * i
3663
+ end
3054
3664
  end
3055
3665
  end
3056
3666
  hpxml.rim_joists << hpxml.rim_joists[-1].dup
@@ -3421,12 +4031,16 @@ def set_hpxml_walls(hpxml_file, hpxml)
3421
4031
  elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
3422
4032
  hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
3423
4033
  hpxml.walls[-1].insulation_assembly_r_value = 23
3424
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4034
+ elsif ['base-enclosure-split-surfaces.xml',
4035
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3425
4036
  for n in 1..hpxml.walls.size
3426
4037
  hpxml.walls[n - 1].area /= 9.0
3427
4038
  for i in 2..9
3428
4039
  hpxml.walls << hpxml.walls[n - 1].dup
3429
4040
  hpxml.walls[-1].id += i.to_s
4041
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4042
+ hpxml.walls[-1].insulation_assembly_r_value += 0.01 * i
4043
+ end
3430
4044
  end
3431
4045
  end
3432
4046
  hpxml.walls << hpxml.walls[-1].dup
@@ -3444,14 +4058,34 @@ def set_hpxml_walls(hpxml_file, hpxml)
3444
4058
  area: 294,
3445
4059
  solar_absorptance: 0.7,
3446
4060
  emittance: 0.92,
3447
- insulation_assembly_r_value: 4.0)
3448
- elsif ['base-misc-defaults.xml'].include? hpxml_file
3449
- hpxml.walls.each do |wall|
3450
- wall.siding = nil
3451
- wall.solar_absorptance = nil
3452
- wall.color = HPXML::ColorMedium
3453
- wall.emittance = nil
3454
- end
4061
+ insulation_assembly_r_value: 4.0)
4062
+ elsif ['invalid_files/invalid-assembly-effective-rvalue.xml'].include? hpxml_file
4063
+ hpxml.walls[0].insulation_assembly_r_value = 0
4064
+ elsif ['base-misc-defaults.xml'].include? hpxml_file
4065
+ hpxml.walls.each do |wall|
4066
+ wall.siding = nil
4067
+ wall.solar_absorptance = nil
4068
+ wall.color = HPXML::ColorMedium
4069
+ wall.emittance = nil
4070
+ end
4071
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
4072
+ hpxml.walls.add(id: 'WallGarageBasement',
4073
+ exterior_adjacent_to: HPXML::LocationGarage,
4074
+ interior_adjacent_to: HPXML::LocationBasementConditioned,
4075
+ wall_type: HPXML::WallTypeWoodStud,
4076
+ area: 320,
4077
+ solar_absorptance: 0.7,
4078
+ emittance: 0.92,
4079
+ insulation_assembly_r_value: 23)
4080
+ hpxml.walls.add(id: 'WallGarageExterior',
4081
+ exterior_adjacent_to: HPXML::LocationOutside,
4082
+ interior_adjacent_to: HPXML::LocationGarage,
4083
+ wall_type: HPXML::WallTypeWoodStud,
4084
+ siding: HPXML::SidingTypeWood,
4085
+ area: 320,
4086
+ solar_absorptance: 0.7,
4087
+ emittance: 0.92,
4088
+ insulation_assembly_r_value: 4)
3455
4089
  end
3456
4090
  hpxml.walls.each do |wall|
3457
4091
  next unless wall.is_interior
@@ -3741,19 +4375,21 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
3741
4375
  insulation_exterior_distance_to_top: 0,
3742
4376
  insulation_exterior_distance_to_bottom: 4,
3743
4377
  insulation_exterior_r_value: 8.9)
3744
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4378
+ elsif ['base-enclosure-split-surfaces.xml',
4379
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3745
4380
  for n in 1..hpxml.foundation_walls.size
3746
4381
  hpxml.foundation_walls[n - 1].area /= 9.0
3747
4382
  for i in 2..9
3748
4383
  hpxml.foundation_walls << hpxml.foundation_walls[n - 1].dup
3749
4384
  hpxml.foundation_walls[-1].id += i.to_s
4385
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4386
+ hpxml.foundation_walls[-1].insulation_exterior_r_value += 0.01 * i
4387
+ end
3750
4388
  end
3751
4389
  end
3752
4390
  hpxml.foundation_walls << hpxml.foundation_walls[-1].dup
3753
4391
  hpxml.foundation_walls[-1].id = 'TinyFoundationWall'
3754
4392
  hpxml.foundation_walls[-1].area = 0.05
3755
- elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
3756
- hpxml.foundation_walls[-1].area = 880
3757
4393
  elsif ['base-misc-defaults.xml'].include? hpxml_file
3758
4394
  hpxml.foundation_walls.each do |fwall|
3759
4395
  fwall.thickness = nil
@@ -3774,6 +4410,10 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
3774
4410
  insulation_exterior_r_value: 0)
3775
4411
  elsif ['invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml'].include? hpxml_file
3776
4412
  hpxml.foundation_walls[0].delete
4413
+ elsif ['invalid_files/invalid-foundation-wall-properties.xml'].include? hpxml_file
4414
+ hpxml.foundation_walls[0].insulation_interior_distance_to_top = 12
4415
+ hpxml.foundation_walls[0].insulation_interior_distance_to_bottom = 10
4416
+ hpxml.foundation_walls[0].depth_below_grade = 9
3777
4417
  end
3778
4418
  end
3779
4419
 
@@ -3893,6 +4533,12 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3893
4533
  interior_adjacent_to: HPXML::LocationLivingSpace,
3894
4534
  area: 400,
3895
4535
  insulation_assembly_r_value: 39.3)
4536
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
4537
+ hpxml.frame_floors.add(id: 'FloorAbovegarage',
4538
+ exterior_adjacent_to: HPXML::LocationGarage,
4539
+ interior_adjacent_to: HPXML::LocationLivingSpace,
4540
+ area: 400,
4541
+ insulation_assembly_r_value: 39.3)
3896
4542
  elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
3897
4543
  hpxml.frame_floors[0].insulation_assembly_r_value = 2.1
3898
4544
  elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
@@ -3915,12 +4561,16 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3915
4561
  area: 150,
3916
4562
  insulation_assembly_r_value: 2.1,
3917
4563
  other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
3918
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4564
+ elsif ['base-enclosure-split-surfaces.xml',
4565
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3919
4566
  for n in 1..hpxml.frame_floors.size
3920
4567
  hpxml.frame_floors[n - 1].area /= 9.0
3921
4568
  for i in 2..9
3922
4569
  hpxml.frame_floors << hpxml.frame_floors[n - 1].dup
3923
4570
  hpxml.frame_floors[-1].id += i.to_s
4571
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4572
+ hpxml.frame_floors[-1].insulation_assembly_r_value += 0.01 * i
4573
+ end
3924
4574
  end
3925
4575
  end
3926
4576
  hpxml.frame_floors << hpxml.frame_floors[-1].dup
@@ -3938,8 +4588,10 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3938
4588
  'invalid_files/enclosure-garage-missing-roof-ceiling.xml'].include? hpxml_file
3939
4589
  hpxml.frame_floors[1].delete
3940
4590
  elsif ['invalid_files/multifamily-reference-surface.xml'].include? hpxml_file
3941
- hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
3942
- hpxml.frame_floors[0].other_space_above_or_below = HPXML::FrameFloorOtherSpaceAbove
4591
+ hpxml.frame_floors << hpxml.frame_floors[0].dup
4592
+ hpxml.frame_floors[1].id += '2'
4593
+ hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
4594
+ hpxml.frame_floors[1].other_space_above_or_below = HPXML::FrameFloorOtherSpaceAbove
3943
4595
  elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
3944
4596
  hpxml.frame_floors.add(id: 'FloorOther',
3945
4597
  exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
@@ -4042,7 +4694,8 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4042
4694
  carpet_r_value: 0)
4043
4695
  elsif ['base-foundation-ambient.xml'].include? hpxml_file
4044
4696
  hpxml.slabs.clear
4045
- elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
4697
+ elsif ['base-enclosure-2stories-garage.xml',
4698
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
4046
4699
  hpxml.slabs[0].area -= 400
4047
4700
  hpxml.slabs[0].exposed_perimeter -= 40
4048
4701
  hpxml.slabs.add(id: 'SlabUnderGarage',
@@ -4106,13 +4759,18 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4106
4759
  under_slab_insulation_r_value: 0,
4107
4760
  carpet_fraction: 0,
4108
4761
  carpet_r_value: 0)
4109
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4762
+ elsif ['base-enclosure-split-surfaces.xml',
4763
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4110
4764
  for n in 1..hpxml.slabs.size
4111
4765
  hpxml.slabs[n - 1].area /= 9.0
4112
4766
  hpxml.slabs[n - 1].exposed_perimeter /= 9.0
4113
4767
  for i in 2..9
4114
4768
  hpxml.slabs << hpxml.slabs[n - 1].dup
4115
4769
  hpxml.slabs[-1].id += i.to_s
4770
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4771
+ hpxml.slabs[-1].perimeter_insulation_depth += 0.01 * i
4772
+ hpxml.slabs[-1].perimeter_insulation_r_value += 0.01 * i
4773
+ end
4116
4774
  end
4117
4775
  end
4118
4776
  hpxml.slabs << hpxml.slabs[-1].dup
@@ -4124,11 +4782,6 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4124
4782
  slab.carpet_fraction = nil
4125
4783
  slab.carpet_fraction = nil
4126
4784
  end
4127
- elsif ['invalid_files/mismatched-slab-and-foundation-wall.xml'].include? hpxml_file
4128
- hpxml.slabs[0].interior_adjacent_to = HPXML::LocationBasementUnconditioned
4129
- hpxml.slabs[0].depth_below_grade = 7.0
4130
- elsif ['invalid_files/slab-zero-exposed-perimeter.xml'].include? hpxml_file
4131
- hpxml.slabs[0].exposed_perimeter = 0
4132
4785
  elsif ['invalid_files/enclosure-living-missing-floor-slab.xml',
4133
4786
  'invalid_files/enclosure-basement-missing-slab.xml'].include? hpxml_file
4134
4787
  hpxml.slabs[0].delete
@@ -4298,17 +4951,26 @@ def set_hpxml_windows(hpxml_file, hpxml)
4298
4951
  hpxml.windows[0].overhangs_depth = 2.5
4299
4952
  hpxml.windows[0].overhangs_distance_to_top_of_window = 0
4300
4953
  hpxml.windows[0].overhangs_distance_to_bottom_of_window = 4
4954
+ hpxml.windows[1].overhangs_depth = 0
4955
+ hpxml.windows[1].overhangs_distance_to_top_of_window = 1
4956
+ hpxml.windows[1].overhangs_distance_to_bottom_of_window = 5
4301
4957
  hpxml.windows[2].overhangs_depth = 1.5
4302
4958
  hpxml.windows[2].overhangs_distance_to_top_of_window = 2
4303
4959
  hpxml.windows[2].overhangs_distance_to_bottom_of_window = 6
4304
4960
  hpxml.windows[3].overhangs_depth = 1.5
4305
4961
  hpxml.windows[3].overhangs_distance_to_top_of_window = 2
4306
4962
  hpxml.windows[3].overhangs_distance_to_bottom_of_window = 7
4307
- elsif ['base-enclosure-windows-interior-shading.xml'].include? hpxml_file
4963
+ elsif ['base-enclosure-windows-shading.xml'].include? hpxml_file
4964
+ hpxml.windows[1].exterior_shading_factor_summer = 0.1
4965
+ hpxml.windows[1].exterior_shading_factor_winter = 0.9
4308
4966
  hpxml.windows[1].interior_shading_factor_summer = 0.01
4309
4967
  hpxml.windows[1].interior_shading_factor_winter = 0.99
4968
+ hpxml.windows[2].exterior_shading_factor_summer = 0.5
4969
+ hpxml.windows[2].exterior_shading_factor_winter = 0.5
4310
4970
  hpxml.windows[2].interior_shading_factor_summer = 0.5
4311
4971
  hpxml.windows[2].interior_shading_factor_winter = 0.5
4972
+ hpxml.windows[3].exterior_shading_factor_summer = 0.0
4973
+ hpxml.windows[3].exterior_shading_factor_winter = 1.0
4312
4974
  hpxml.windows[3].interior_shading_factor_summer = 0.0
4313
4975
  hpxml.windows[3].interior_shading_factor_winter = 1.0
4314
4976
  elsif ['base-enclosure-windows-none.xml'].include? hpxml_file
@@ -4403,7 +5065,8 @@ def set_hpxml_windows(hpxml_file, hpxml)
4403
5065
  end
4404
5066
  elsif ['invalid_files/unattached-window.xml'].include? hpxml_file
4405
5067
  hpxml.windows[0].wall_idref = 'foobar'
4406
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
5068
+ elsif ['base-enclosure-split-surfaces.xml',
5069
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4407
5070
  area_adjustments = []
4408
5071
  for n in 1..hpxml.windows.size
4409
5072
  hpxml.windows[n - 1].area /= 9.0
@@ -4415,6 +5078,11 @@ def set_hpxml_windows(hpxml_file, hpxml)
4415
5078
  if i >= 4
4416
5079
  hpxml.windows[-1].fraction_operable = 1.0
4417
5080
  end
5081
+ next unless hpxml_file == 'base-enclosure-split-surfaces2.xml'
5082
+
5083
+ hpxml.windows[-1].ufactor += 0.01 * i
5084
+ hpxml.windows[-1].interior_shading_factor_summer -= 0.02 * i
5085
+ hpxml.windows[-1].interior_shading_factor_winter -= 0.01 * i
4418
5086
  end
4419
5087
  end
4420
5088
  hpxml.windows << hpxml.windows[-1].dup
@@ -4482,7 +5150,7 @@ end
4482
5150
  def set_hpxml_skylights(hpxml_file, hpxml)
4483
5151
  if ['base-enclosure-skylights.xml'].include? hpxml_file
4484
5152
  hpxml.skylights.add(id: 'SkylightNorth',
4485
- area: 45,
5153
+ area: 15,
4486
5154
  azimuth: 0,
4487
5155
  ufactor: 0.33,
4488
5156
  shgc: 0.45,
@@ -4490,24 +5158,41 @@ def set_hpxml_skylights(hpxml_file, hpxml)
4490
5158
  interior_shading_factor_winter: 1.0,
4491
5159
  roof_idref: 'Roof')
4492
5160
  hpxml.skylights.add(id: 'SkylightSouth',
4493
- area: 45,
5161
+ area: 15,
4494
5162
  azimuth: 180,
4495
5163
  ufactor: 0.35,
4496
5164
  shgc: 0.47,
4497
5165
  interior_shading_factor_summer: 1.0,
4498
5166
  interior_shading_factor_winter: 1.0,
4499
5167
  roof_idref: 'Roof')
5168
+ elsif ['base-enclosure-skylights-shading.xml'].include? hpxml_file
5169
+ hpxml.skylights[0].exterior_shading_factor_summer = 0.1
5170
+ hpxml.skylights[0].exterior_shading_factor_winter = 0.9
5171
+ hpxml.skylights[0].interior_shading_factor_summer = 0.01
5172
+ hpxml.skylights[0].interior_shading_factor_winter = 0.99
5173
+ hpxml.skylights[1].exterior_shading_factor_summer = 0.5
5174
+ hpxml.skylights[1].exterior_shading_factor_winter = 0.0
5175
+ hpxml.skylights[1].interior_shading_factor_summer = 0.5
5176
+ hpxml.skylights[1].interior_shading_factor_winter = 1.0
4500
5177
  elsif ['invalid_files/net-area-negative-roof.xml'].include? hpxml_file
4501
5178
  hpxml.skylights[0].area = 4000
4502
5179
  elsif ['invalid_files/unattached-skylight.xml'].include? hpxml_file
4503
5180
  hpxml.skylights[0].roof_idref = 'foobar'
4504
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
5181
+ elsif ['invalid_files/invalid-id.xml'].include? hpxml_file
5182
+ hpxml.skylights[0].id = ''
5183
+ elsif ['base-enclosure-split-surfaces.xml',
5184
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4505
5185
  for n in 1..hpxml.skylights.size
4506
5186
  hpxml.skylights[n - 1].area /= 9.0
4507
5187
  for i in 2..9
4508
5188
  hpxml.skylights << hpxml.skylights[n - 1].dup
4509
5189
  hpxml.skylights[-1].id += i.to_s
4510
5190
  hpxml.skylights[-1].roof_idref += i.to_s if i % 2 == 0
5191
+ next unless hpxml_file == 'base-enclosure-split-surfaces2.xml'
5192
+
5193
+ hpxml.skylights[-1].ufactor += 0.01 * i
5194
+ hpxml.skylights[-1].interior_shading_factor_summer -= 0.02 * i
5195
+ hpxml.skylights[-1].interior_shading_factor_winter -= 0.01 * i
4511
5196
  end
4512
5197
  end
4513
5198
  hpxml.skylights << hpxml.skylights[-1].dup
@@ -4554,6 +5239,17 @@ def set_hpxml_doors(hpxml_file, hpxml)
4554
5239
  area: 70,
4555
5240
  azimuth: 180,
4556
5241
  r_value: 4.4)
5242
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
5243
+ hpxml.doors.add(id: 'GarageDoorSouth',
5244
+ wall_idref: 'WallGarageExterior',
5245
+ area: 70,
5246
+ azimuth: 180,
5247
+ r_value: 4.4)
5248
+ hpxml.doors.add(id: 'GarageDoorBasement',
5249
+ wall_idref: 'WallGarageBasement',
5250
+ area: 4,
5251
+ azimuth: 0,
5252
+ r_value: 4.4)
4557
5253
  elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
4558
5254
  hpxml.doors.add(id: 'DoorOtherHeatedSpace',
4559
5255
  wall_idref: 'WallOtherHeatedSpace',
@@ -4576,7 +5272,8 @@ def set_hpxml_doors(hpxml_file, hpxml)
4576
5272
  r_value: 4.4)
4577
5273
  elsif ['invalid_files/unattached-door.xml'].include? hpxml_file
4578
5274
  hpxml.doors[0].wall_idref = 'foobar'
4579
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
5275
+ elsif ['base-enclosure-split-surfaces.xml',
5276
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4580
5277
  area_adjustments = []
4581
5278
  for n in 1..hpxml.doors.size
4582
5279
  hpxml.doors[n - 1].area /= 9.0
@@ -4584,6 +5281,9 @@ def set_hpxml_doors(hpxml_file, hpxml)
4584
5281
  hpxml.doors << hpxml.doors[n - 1].dup
4585
5282
  hpxml.doors[-1].id += i.to_s
4586
5283
  hpxml.doors[-1].wall_idref += i.to_s
5284
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
5285
+ hpxml.doors[-1].r_value += 0.01 * i
5286
+ end
4587
5287
  end
4588
5288
  end
4589
5289
  hpxml.doors << hpxml.doors[-1].dup
@@ -4610,7 +5310,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4610
5310
  distribution_system_idref: 'HVACDistribution',
4611
5311
  heating_system_type: HPXML::HVACTypeFurnace,
4612
5312
  heating_system_fuel: HPXML::FuelTypeNaturalGas,
4613
- heating_capacity: 64000,
5313
+ heating_capacity: 36000,
4614
5314
  heating_efficiency_afue: 0.92,
4615
5315
  fraction_heat_load_served: 1)
4616
5316
  elsif ['base-hvac-air-to-air-heat-pump-1-speed.xml',
@@ -4624,19 +5324,16 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4624
5324
  'base-hvac-ground-to-air-heat-pump.xml',
4625
5325
  'base-hvac-mini-split-heat-pump-ducted.xml',
4626
5326
  'base-hvac-mini-split-air-conditioner-only-ducted.xml',
4627
- 'base-hvac-ideal-air.xml',
4628
5327
  'base-hvac-none.xml',
4629
5328
  'base-hvac-room-ac-only.xml',
4630
5329
  'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
4631
5330
  'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml',
4632
5331
  'invalid_files/orphaned-hvac-distribution.xml'].include? hpxml_file
4633
5332
  hpxml.heating_systems.clear
4634
- elsif ['base-hvac-furnace-gas-only.xml'].include? hpxml_file
4635
- hpxml.heating_systems[0].fan_watts_per_cfm = 0.45
4636
5333
  elsif ['base-hvac-boiler-elec-only.xml'].include? hpxml_file
4637
5334
  hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
4638
5335
  hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
4639
- hpxml.heating_systems[0].heating_efficiency_afue = 1
5336
+ hpxml.heating_systems[0].heating_efficiency_afue = 1.0
4640
5337
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml',
4641
5338
  'base-hvac-boiler-gas-only.xml'].include? hpxml_file
4642
5339
  hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
@@ -4721,35 +5418,6 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4721
5418
  heating_efficiency_afue: 0.8,
4722
5419
  fraction_heat_load_served: 0.1,
4723
5420
  fan_watts: 0.0)
4724
- elsif ['base-hvac-multiple2.xml'].include? hpxml_file
4725
- hpxml.heating_systems.clear
4726
- hpxml.heating_systems.add(id: 'HeatingSystem',
4727
- distribution_system_idref: 'HVACDistribution',
4728
- heating_system_type: HPXML::HVACTypeFurnace,
4729
- heating_system_fuel: HPXML::FuelTypeElectricity,
4730
- heating_capacity: 6400,
4731
- heating_efficiency_afue: 1,
4732
- fraction_heat_load_served: 0.2)
4733
- hpxml.heating_systems.add(id: 'HeatingSystem2',
4734
- distribution_system_idref: 'HVACDistribution2',
4735
- heating_system_type: HPXML::HVACTypeFurnace,
4736
- heating_system_fuel: HPXML::FuelTypeElectricity,
4737
- heating_capacity: 6400,
4738
- heating_efficiency_afue: 0.92,
4739
- fraction_heat_load_served: 0.2)
4740
- hpxml.heating_systems.add(id: 'HeatingSystem3',
4741
- distribution_system_idref: 'HVACDistribution3',
4742
- heating_system_type: HPXML::HVACTypeBoiler,
4743
- heating_system_fuel: HPXML::FuelTypeElectricity,
4744
- heating_capacity: 6400,
4745
- heating_efficiency_afue: 1,
4746
- fraction_heat_load_served: 0.2)
4747
- hpxml.heating_systems.add(id: 'HeatingSystem4',
4748
- heating_system_type: HPXML::HVACTypeElectricResistance,
4749
- heating_system_fuel: HPXML::FuelTypeElectricity,
4750
- heating_capacity: 3200,
4751
- heating_efficiency_percent: 1,
4752
- fraction_heat_load_served: 0.1)
4753
5421
  elsif ['base-mechvent-multiple.xml',
4754
5422
  'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
4755
5423
  hpxml.heating_systems[0].heating_capacity /= 2.0
@@ -4822,7 +5490,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4822
5490
  end
4823
5491
  elsif ['base-hvac-furnace-elec-central-ac-1-speed.xml'].include? hpxml_file
4824
5492
  hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
4825
- hpxml.heating_systems[0].heating_efficiency_afue = 1
5493
+ hpxml.heating_systems[0].heating_efficiency_afue = 1.0
4826
5494
  elsif ['invalid_files/unattached-hvac-distribution.xml'].include? hpxml_file
4827
5495
  hpxml.heating_systems[0].distribution_system_idref = 'foobar'
4828
5496
  elsif ['invalid_files/hvac-invalid-distribution-system-type.xml'].include? hpxml_file
@@ -4845,14 +5513,45 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4845
5513
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
4846
5514
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
4847
5515
  hpxml.heating_systems[0].fan_coil_watts = 150
4848
- elsif ['base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml',
4849
- 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml'].include? hpxml_file
4850
- hpxml.heating_systems[0].wlhp_heating_efficiency_cop = 4.4
4851
5516
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml'].include? hpxml_file
4852
5517
  hpxml.heating_systems[0].fan_coil_watts = nil
4853
5518
  hpxml.heating_systems[0].shared_loop_watts = nil
4854
5519
  hpxml.heating_systems[0].electric_auxiliary_energy = 500.0
4855
- elsif hpxml_file.include?('hvac_autosizing') && (not hpxml.heating_systems.nil?) && (hpxml.heating_systems.size > 0)
5520
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5521
+ hpxml.heating_systems[0].airflow_defect_ratio = 0.0
5522
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5523
+ hpxml.heating_systems[0].airflow_defect_ratio = -0.25
5524
+ elsif ['base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5525
+ hpxml.heating_systems[0].fan_watts_per_cfm = 0.365
5526
+ elsif ['base-hvac-install-quality-all-furnace-gas-only.xml',
5527
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml',
5528
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml',
5529
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml'].include? hpxml_file
5530
+ hpxml.heating_systems[0].fan_watts_per_cfm = 0.365
5531
+ hpxml.heating_systems[0].airflow_defect_ratio = -0.25
5532
+ elsif ['invalid_files/multiple-shared-heating-systems.xml'].include? hpxml_file
5533
+ hpxml.heating_systems[0].fraction_heat_load_served = 0.5
5534
+ hpxml.heating_systems << hpxml.heating_systems[0].dup
5535
+ hpxml.heating_systems[1].id += '2'
5536
+ hpxml.heating_systems[1].distribution_system_idref += '2'
5537
+ elsif ['invalid_files/boiler-invalid-afue.xml',
5538
+ 'invalid_files/furnace-invalid-afue.xml'].include? hpxml_file
5539
+ hpxml.heating_systems[0].heating_efficiency_afue *= 100.0
5540
+ elsif ['base-location-honolulu-hi.xml',
5541
+ 'base-location-miami-fl.xml',
5542
+ 'base-bldgtype-multifamily.xml'].include? hpxml_file
5543
+ hpxml.heating_systems[0].heating_capacity = 12000
5544
+ elsif ['base-location-dallas-tx.xml',
5545
+ 'base-location-baltimore-md.xml',
5546
+ 'base-location-phoenix-az.xml',
5547
+ 'base-location-portland-or.xml',
5548
+ 'base-bldgtype-single-family-attached.xml'].include? hpxml_file
5549
+ hpxml.heating_systems[0].heating_capacity = 24000
5550
+ elsif ['base-location-helena-mt.xml',
5551
+ 'base-enclosure-2stories.xml',
5552
+ 'base-enclosure-2stories-garage.xml'].include? hpxml_file
5553
+ hpxml.heating_systems[0].heating_capacity = 48000
5554
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.heating_systems.nil?) && (hpxml.heating_systems.size > 0)
4856
5555
  hpxml.heating_systems[0].heating_capacity = nil
4857
5556
  end
4858
5557
  end
@@ -4863,7 +5562,7 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4863
5562
  distribution_system_idref: 'HVACDistribution',
4864
5563
  cooling_system_type: HPXML::HVACTypeCentralAirConditioner,
4865
5564
  cooling_system_fuel: HPXML::FuelTypeElectricity,
4866
- cooling_capacity: 48000,
5565
+ cooling_capacity: 24000,
4867
5566
  fraction_cool_load_served: 1,
4868
5567
  cooling_efficiency_seer: 13,
4869
5568
  cooling_shr: 0.73,
@@ -4879,6 +5578,7 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4879
5578
  'base-hvac-boiler-wood-only.xml',
4880
5579
  'base-hvac-elec-resistance-only.xml',
4881
5580
  'base-hvac-fireplace-wood-only.xml',
5581
+ 'base-hvac-fixed-heater-gas-only.xml',
4882
5582
  'base-hvac-floor-furnace-propane-only.xml',
4883
5583
  'base-hvac-furnace-coal-only.xml',
4884
5584
  'base-hvac-furnace-elec-only.xml',
@@ -4888,16 +5588,14 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4888
5588
  'base-hvac-furnace-wood-only.xml',
4889
5589
  'base-hvac-ground-to-air-heat-pump.xml',
4890
5590
  'base-hvac-mini-split-heat-pump-ducted.xml',
4891
- 'base-hvac-ideal-air.xml',
4892
5591
  'base-hvac-none.xml',
5592
+ 'base-hvac-portable-heater-gas-only.xml',
4893
5593
  'base-hvac-stove-oil-only.xml',
4894
5594
  'base-hvac-stove-wood-pellets-only.xml',
4895
5595
  'base-hvac-wall-furnace-elec-only.xml',
4896
5596
  'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
4897
5597
  'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'].include? hpxml_file
4898
5598
  hpxml.cooling_systems.clear
4899
- elsif ['base-hvac-central-ac-only-1-speed.xml'].include? hpxml_file
4900
- hpxml.cooling_systems[0].fan_watts_per_cfm = 0.45
4901
5599
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
4902
5600
  hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
4903
5601
  elsif ['base-hvac-furnace-gas-central-ac-2-speed.xml',
@@ -4915,7 +5613,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4915
5613
  hpxml.cooling_systems[0].cooling_efficiency_seer = 19
4916
5614
  hpxml.cooling_systems[0].cooling_shr = 0.73
4917
5615
  hpxml.cooling_systems[0].compressor_type = nil
4918
- hpxml.cooling_systems[0].fan_watts_per_cfm = 0.2
4919
5616
  elsif ['base-hvac-mini-split-air-conditioner-only-ductless.xml'].include? hpxml_file
4920
5617
  hpxml.cooling_systems[0].distribution_system_idref = nil
4921
5618
  elsif ['base-hvac-furnace-gas-room-ac.xml',
@@ -4928,24 +5625,19 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4928
5625
  hpxml.cooling_systems[0].compressor_type = nil
4929
5626
  elsif ['base-hvac-room-ac-only-33percent.xml'].include? hpxml_file
4930
5627
  hpxml.cooling_systems[0].fraction_cool_load_served = 0.33
5628
+ hpxml.cooling_systems[0].cooling_capacity /= 3.0
4931
5629
  elsif ['base-hvac-evap-cooler-only-ducted.xml',
4932
5630
  'base-hvac-evap-cooler-furnace-gas.xml',
4933
- 'base-hvac-evap-cooler-only.xml',
4934
- 'hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml'].include? hpxml_file
5631
+ 'base-hvac-evap-cooler-only.xml'].include? hpxml_file
4935
5632
  hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeEvaporativeCooler
4936
5633
  hpxml.cooling_systems[0].cooling_efficiency_seer = nil
4937
5634
  hpxml.cooling_systems[0].cooling_efficiency_eer = nil
4938
- hpxml.cooling_systems[0].cooling_capacity = nil
4939
5635
  hpxml.cooling_systems[0].cooling_shr = nil
4940
5636
  hpxml.cooling_systems[0].compressor_type = nil
4941
5637
  if ['base-hvac-evap-cooler-furnace-gas.xml',
4942
- 'hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml',
4943
5638
  'base-hvac-evap-cooler-only.xml'].include? hpxml_file
4944
5639
  hpxml.cooling_systems[0].distribution_system_idref = nil
4945
5640
  end
4946
- if ['base-hvac-evap-cooler-only.xml'].include? hpxml_file
4947
- hpxml.cooling_systems[0].fan_watts_per_cfm = 0.3
4948
- end
4949
5641
  elsif ['base-hvac-multiple.xml'].include? hpxml_file
4950
5642
  hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
4951
5643
  hpxml.cooling_systems[0].fraction_cool_load_served = 0.2
@@ -4957,18 +5649,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4957
5649
  fraction_cool_load_served: 0.2,
4958
5650
  cooling_efficiency_eer: 8.5,
4959
5651
  cooling_shr: 0.65)
4960
- elsif ['base-hvac-multiple2.xml'].include? hpxml_file
4961
- hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution'
4962
- hpxml.cooling_systems[0].fraction_cool_load_served = 0.25
4963
- hpxml.cooling_systems[0].cooling_capacity *= 0.25
4964
- hpxml.cooling_systems.add(id: 'CoolingSystem2',
4965
- distribution_system_idref: 'HVACDistribution2',
4966
- cooling_system_type: HPXML::HVACTypeCentralAirConditioner,
4967
- cooling_system_fuel: HPXML::FuelTypeElectricity,
4968
- cooling_capacity: 9600,
4969
- fraction_cool_load_served: 0.25,
4970
- cooling_efficiency_seer: 13,
4971
- cooling_shr: 0.65)
4972
5652
  elsif ['base-mechvent-multiple.xml',
4973
5653
  'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
4974
5654
  hpxml.cooling_systems[0].fraction_cool_load_served /= 2.0
@@ -4986,8 +5666,22 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4986
5666
  hpxml.cooling_systems[0].fan_watts_per_cfm = 0.55
4987
5667
  elsif ['base-hvac-undersized.xml'].include? hpxml_file
4988
5668
  hpxml.cooling_systems[0].cooling_capacity /= 10.0
4989
- elsif ['base-hvac-flowrate.xml'].include? hpxml_file
4990
- hpxml.cooling_systems[0].cooling_cfm = hpxml.cooling_systems[0].cooling_capacity * 360.0 / 12000.0
5669
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5670
+ hpxml.cooling_systems[0].airflow_defect_ratio = 0.0
5671
+ hpxml.cooling_systems[0].charge_defect_ratio = 0.0
5672
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5673
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.25
5674
+ elsif ['base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5675
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.25
5676
+ elsif ['base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5677
+ hpxml.cooling_systems[0].fan_watts_per_cfm = 0.365
5678
+ elsif ['base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml',
5679
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml',
5680
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml',
5681
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml'].include? hpxml_file
5682
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.25
5683
+ hpxml.cooling_systems[0].fan_watts_per_cfm = 0.365
5684
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.25
4991
5685
  elsif ['base-misc-defaults.xml'].include? hpxml_file
4992
5686
  hpxml.cooling_systems[0].cooling_shr = nil
4993
5687
  hpxml.cooling_systems[0].compressor_type = nil
@@ -5003,10 +5697,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
5003
5697
  hpxml.cooling_systems[0].cooling_efficiency_kw_per_ton = 0.9
5004
5698
  hpxml.cooling_systems[0].cooling_shr = nil
5005
5699
  hpxml.cooling_systems[0].shared_loop_watts = 600
5006
- if hpxml_file.include? 'water-loop-heat-pump'
5007
- hpxml.cooling_systems[0].wlhp_cooling_capacity = 24000
5008
- hpxml.cooling_systems[0].wlhp_cooling_efficiency_eer = 12.8
5009
- end
5010
5700
  elsif ['base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml',
5011
5701
  'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml'].include? hpxml_file
5012
5702
  hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeCoolingTower
@@ -5015,7 +5705,19 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
5015
5705
  elsif ['base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
5016
5706
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
5017
5707
  hpxml.cooling_systems[0].fan_coil_watts = 150
5018
- elsif hpxml_file.include?('hvac_autosizing') && (not hpxml.cooling_systems.nil?) && (hpxml.cooling_systems.size > 0)
5708
+ elsif ['invalid_files/multiple-shared-cooling-systems.xml'].include? hpxml_file
5709
+ hpxml.cooling_systems[0].fraction_cool_load_served = 0.5
5710
+ hpxml.cooling_systems << hpxml.cooling_systems[0].dup
5711
+ hpxml.cooling_systems[1].id += '2'
5712
+ hpxml.cooling_systems[1].distribution_system_idref += '2'
5713
+ elsif ['invalid_files/hvac-shared-negative-seer-eq.xml'].include? hpxml_file
5714
+ hpxml.cooling_systems[0].shared_loop_watts *= 100.0
5715
+ elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
5716
+ hpxml.cooling_systems[0].cooling_capacity = 12000
5717
+ elsif ['base-enclosure-2stories.xml',
5718
+ 'base-enclosure-2stories-garage.xml'].include? hpxml_file
5719
+ hpxml.cooling_systems[0].cooling_capacity = 36000
5720
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.cooling_systems.nil?) && (hpxml.cooling_systems.size > 0)
5019
5721
  hpxml.cooling_systems[0].cooling_capacity = nil
5020
5722
  end
5021
5723
  end
@@ -5027,19 +5729,18 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5027
5729
  distribution_system_idref: 'HVACDistribution',
5028
5730
  heat_pump_type: HPXML::HVACTypeHeatPumpAirToAir,
5029
5731
  heat_pump_fuel: HPXML::FuelTypeElectricity,
5030
- heating_capacity: 42000,
5031
- cooling_capacity: 48000,
5732
+ heating_capacity: 36000,
5733
+ cooling_capacity: 36000,
5032
5734
  backup_heating_fuel: HPXML::FuelTypeElectricity,
5033
- backup_heating_capacity: 34121,
5735
+ backup_heating_capacity: 36000,
5034
5736
  backup_heating_efficiency_percent: 1.0,
5035
5737
  fraction_heat_load_served: 1,
5036
5738
  fraction_cool_load_served: 1,
5037
5739
  heating_efficiency_hspf: 7.7,
5038
5740
  cooling_efficiency_seer: 13,
5039
- heating_capacity_17F: 42000 * 0.630, # Based on OAT slope of default curves
5741
+ heating_capacity_17F: 36000 * 0.630, # Based on OAT slope of default curves
5040
5742
  cooling_shr: 0.73,
5041
- compressor_type: HPXML::HVACCompressorTypeSingleStage,
5042
- fan_watts_per_cfm: 0.45)
5743
+ compressor_type: HPXML::HVACCompressorTypeSingleStage)
5043
5744
  if hpxml_file == 'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml'
5044
5745
  hpxml.heat_pumps[0].fraction_cool_load_served = 0
5045
5746
  end
@@ -5048,16 +5749,16 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5048
5749
  distribution_system_idref: 'HVACDistribution',
5049
5750
  heat_pump_type: HPXML::HVACTypeHeatPumpAirToAir,
5050
5751
  heat_pump_fuel: HPXML::FuelTypeElectricity,
5051
- heating_capacity: 42000,
5052
- cooling_capacity: 48000,
5752
+ heating_capacity: 36000,
5753
+ cooling_capacity: 36000,
5053
5754
  backup_heating_fuel: HPXML::FuelTypeElectricity,
5054
- backup_heating_capacity: 34121,
5755
+ backup_heating_capacity: 36000,
5055
5756
  backup_heating_efficiency_percent: 1.0,
5056
5757
  fraction_heat_load_served: 1,
5057
5758
  fraction_cool_load_served: 1,
5058
5759
  heating_efficiency_hspf: 9.3,
5059
5760
  cooling_efficiency_seer: 18,
5060
- heating_capacity_17F: 42000 * 0.590, # Based on OAT slope of default curves
5761
+ heating_capacity_17F: 36000 * 0.590, # Based on OAT slope of default curves
5061
5762
  cooling_shr: 0.73,
5062
5763
  compressor_type: HPXML::HVACCompressorTypeTwoStage)
5063
5764
  elsif ['base-hvac-air-to-air-heat-pump-var-speed.xml'].include? hpxml_file
@@ -5065,16 +5766,16 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5065
5766
  distribution_system_idref: 'HVACDistribution',
5066
5767
  heat_pump_type: HPXML::HVACTypeHeatPumpAirToAir,
5067
5768
  heat_pump_fuel: HPXML::FuelTypeElectricity,
5068
- heating_capacity: 42000,
5069
- cooling_capacity: 48000,
5769
+ heating_capacity: 36000,
5770
+ cooling_capacity: 36000,
5070
5771
  backup_heating_fuel: HPXML::FuelTypeElectricity,
5071
- backup_heating_capacity: 34121,
5772
+ backup_heating_capacity: 36000,
5072
5773
  backup_heating_efficiency_percent: 1.0,
5073
5774
  fraction_heat_load_served: 1,
5074
5775
  fraction_cool_load_served: 1,
5075
5776
  heating_efficiency_hspf: 10,
5076
5777
  cooling_efficiency_seer: 22,
5077
- heating_capacity_17F: 42000 * 0.640, # Based on OAT slope of default curves
5778
+ heating_capacity_17F: 36000 * 0.640, # Based on OAT slope of default curves
5078
5779
  cooling_shr: 0.78,
5079
5780
  compressor_type: HPXML::HVACCompressorTypeVariableSpeed)
5080
5781
  elsif ['base-hvac-ground-to-air-heat-pump.xml',
@@ -5083,22 +5784,26 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5083
5784
  distribution_system_idref: 'HVACDistribution',
5084
5785
  heat_pump_type: HPXML::HVACTypeHeatPumpGroundToAir,
5085
5786
  heat_pump_fuel: HPXML::FuelTypeElectricity,
5086
- heating_capacity: 42000,
5087
- cooling_capacity: 48000,
5088
5787
  backup_heating_fuel: HPXML::FuelTypeElectricity,
5089
- backup_heating_capacity: 34121,
5090
5788
  backup_heating_efficiency_percent: 1.0,
5091
5789
  fraction_heat_load_served: 1,
5092
5790
  fraction_cool_load_served: 1,
5093
5791
  heating_efficiency_cop: 3.6,
5094
5792
  cooling_efficiency_eer: 16.6,
5095
5793
  cooling_shr: 0.73,
5096
- pump_watts_per_ton: 30.0,
5097
- fan_watts_per_cfm: 0.45)
5794
+ pump_watts_per_ton: 30.0)
5098
5795
  if hpxml_file == 'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'
5099
5796
  hpxml.heat_pumps[-1].is_shared_system = true
5100
5797
  hpxml.heat_pumps[-1].number_of_units_served = 6
5101
5798
  hpxml.heat_pumps[-1].shared_loop_watts = 600
5799
+ hpxml.heat_pumps[-1].pump_watts_per_ton = 0.0
5800
+ hpxml.heat_pumps[-1].heating_capacity = 12000
5801
+ hpxml.heat_pumps[-1].cooling_capacity = 12000
5802
+ hpxml.heat_pumps[-1].backup_heating_capacity = 12000
5803
+ else
5804
+ hpxml.heat_pumps[-1].heating_capacity = 36000
5805
+ hpxml.heat_pumps[-1].cooling_capacity = 36000
5806
+ hpxml.heat_pumps[-1].backup_heating_capacity = 36000
5102
5807
  end
5103
5808
  elsif ['base-hvac-mini-split-heat-pump-ducted.xml'].include? hpxml_file
5104
5809
  f = 1.0 - (1.0 - 0.25) / (47.0 + 5.0) * (47.0 - 17.0)
@@ -5106,35 +5811,42 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5106
5811
  distribution_system_idref: 'HVACDistribution',
5107
5812
  heat_pump_type: HPXML::HVACTypeHeatPumpMiniSplit,
5108
5813
  heat_pump_fuel: HPXML::FuelTypeElectricity,
5109
- heating_capacity: 52000,
5110
- cooling_capacity: 48000,
5814
+ heating_capacity: 36000,
5815
+ cooling_capacity: 36000,
5111
5816
  backup_heating_fuel: HPXML::FuelTypeElectricity,
5112
- backup_heating_capacity: 34121,
5817
+ backup_heating_capacity: 36000,
5113
5818
  backup_heating_efficiency_percent: 1.0,
5114
5819
  fraction_heat_load_served: 1,
5115
5820
  fraction_cool_load_served: 1,
5116
5821
  heating_efficiency_hspf: 10,
5117
5822
  cooling_efficiency_seer: 19,
5118
- heating_capacity_17F: 52000 * f,
5119
- cooling_shr: 0.73,
5120
- fan_watts_per_cfm: 0.2)
5121
- elsif ['base-hvac-mini-split-heat-pump-ducted-heating-only.xml'].include? hpxml_file
5823
+ heating_capacity_17F: (36000 * f).round(0),
5824
+ cooling_shr: 0.73)
5825
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml',
5826
+ 'base-hvac-ground-to-air-heat-pump-heating-only.xml',
5827
+ 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml'].include? hpxml_file
5122
5828
  hpxml.heat_pumps[0].cooling_capacity = 0
5123
5829
  hpxml.heat_pumps[0].fraction_cool_load_served = 0
5124
- elsif ['base-hvac-mini-split-heat-pump-ducted-cooling-only.xml'].include? hpxml_file
5830
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml',
5831
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.xml',
5832
+ 'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml'].include? hpxml_file
5125
5833
  hpxml.heat_pumps[0].heating_capacity = 0
5126
- hpxml.heat_pumps[0].heating_capacity_17F = 0
5834
+ if not ['base-hvac-ground-to-air-heat-pump-cooling-only.xml'].include? hpxml_file
5835
+ hpxml.heat_pumps[0].heating_capacity_17F = 0
5836
+ end
5127
5837
  hpxml.heat_pumps[0].fraction_heat_load_served = 0
5128
5838
  hpxml.heat_pumps[0].backup_heating_fuel = nil
5839
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
5840
+ hpxml.heat_pumps[0].backup_heating_efficiency_percent = nil
5129
5841
  elsif ['base-hvac-mini-split-heat-pump-ductless.xml'].include? hpxml_file
5130
5842
  hpxml.heat_pumps[0].distribution_system_idref = nil
5131
5843
  hpxml.heat_pumps[0].backup_heating_fuel = nil
5844
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
5845
+ hpxml.heat_pumps[0].backup_heating_efficiency_percent = nil
5132
5846
  elsif ['invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml'].include? hpxml_file
5133
5847
  hpxml.heat_pumps[0].cooling_capacity = nil
5134
5848
  hpxml.heat_pumps[0].heating_capacity = nil
5135
5849
  hpxml.heat_pumps[0].heating_capacity_17F = 25000
5136
- elsif ['invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml'].include? hpxml_file
5137
- hpxml.heat_pumps[0].backup_heating_capacity = nil
5138
5850
  elsif ['base-hvac-multiple.xml'].include? hpxml_file
5139
5851
  hpxml.heat_pumps.add(id: 'HeatPump',
5140
5852
  distribution_system_idref: 'HVACDistribution5',
@@ -5182,38 +5894,21 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5182
5894
  cooling_efficiency_seer: 19,
5183
5895
  heating_capacity_17F: 4800 * f,
5184
5896
  cooling_shr: 0.73)
5185
- elsif ['base-hvac-multiple2.xml'].include? hpxml_file
5186
- hpxml.heat_pumps.add(id: 'HeatPump',
5187
- distribution_system_idref: 'HVACDistribution4',
5188
- heat_pump_type: HPXML::HVACTypeHeatPumpAirToAir,
5189
- heat_pump_fuel: HPXML::FuelTypeElectricity,
5190
- heating_capacity: 4800,
5191
- cooling_capacity: 4800,
5192
- backup_heating_fuel: HPXML::FuelTypeElectricity,
5193
- backup_heating_capacity: 3412,
5194
- backup_heating_efficiency_percent: 1.0,
5195
- fraction_heat_load_served: 0.1,
5196
- fraction_cool_load_served: 0.2,
5197
- heating_efficiency_hspf: 7.7,
5198
- cooling_efficiency_seer: 13,
5199
- heating_capacity_17F: 4800 * 0.630, # Based on OAT slope of default curves
5200
- cooling_shr: 0.73,
5201
- compressor_type: HPXML::HVACCompressorTypeSingleStage)
5202
- hpxml.heat_pumps.add(id: 'HeatPump2',
5203
- distribution_system_idref: 'HVACDistribution5',
5204
- heat_pump_type: HPXML::HVACTypeHeatPumpGroundToAir,
5205
- heat_pump_fuel: HPXML::FuelTypeElectricity,
5206
- heating_capacity: 4800,
5207
- cooling_capacity: 4800,
5208
- backup_heating_fuel: HPXML::FuelTypeElectricity,
5209
- backup_heating_capacity: 3412,
5210
- backup_heating_efficiency_percent: 1.0,
5211
- fraction_heat_load_served: 0.1,
5212
- fraction_cool_load_served: 0.2,
5213
- heating_efficiency_cop: 3.6,
5214
- cooling_efficiency_eer: 16.6,
5215
- cooling_shr: 0.73,
5216
- pump_watts_per_ton: 30.0)
5897
+ elsif ['base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml',
5898
+ 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml',
5899
+ 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml'].include? hpxml_file
5900
+ hpxml.heat_pumps.add(id: 'WLHP',
5901
+ distribution_system_idref: 'HVACDistributionWLHP',
5902
+ heat_pump_type: HPXML::HVACTypeHeatPumpWaterLoopToAir,
5903
+ heat_pump_fuel: HPXML::FuelTypeElectricity)
5904
+ if hpxml_file.include? 'boiler'
5905
+ hpxml.heat_pumps[-1].heating_capacity = 24000
5906
+ hpxml.heat_pumps[-1].heating_efficiency_cop = 4.4
5907
+ end
5908
+ if hpxml_file.include? 'chiller'
5909
+ hpxml.heat_pumps[-1].cooling_capacity = 24000
5910
+ hpxml.heat_pumps[-1].cooling_efficiency_eer = 12.8
5911
+ end
5217
5912
  elsif ['invalid_files/hvac-distribution-multiple-attached-heating.xml'].include? hpxml_file
5218
5913
  hpxml.heat_pumps[0].distribution_system_idref = 'HVACDistribution'
5219
5914
  elsif ['invalid_files/hvac-distribution-multiple-attached-cooling.xml'].include? hpxml_file
@@ -5230,7 +5925,19 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5230
5925
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml'].include? hpxml_file
5231
5926
  hpxml.heat_pumps[0].backup_heating_fuel = HPXML::FuelTypeElectricity
5232
5927
  hpxml.heat_pumps[0].backup_heating_efficiency_afue = 1.0
5233
- elsif hpxml_file.include?('hvac_autosizing') && (not hpxml.heat_pumps.nil?) && (hpxml.heat_pumps.size > 0)
5928
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml',
5929
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml',
5930
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml',
5931
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml',
5932
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml'].include? hpxml_file
5933
+ hpxml.heat_pumps[0].airflow_defect_ratio = -0.25
5934
+ hpxml.heat_pumps[0].fan_watts_per_cfm = 0.365
5935
+ if hpxml_file != 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml'
5936
+ hpxml.heat_pumps[0].charge_defect_ratio = -0.25
5937
+ else
5938
+ hpxml.heat_pumps[0].charge_defect_ratio = 0.0
5939
+ end
5940
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.heat_pumps.nil?) && (hpxml.heat_pumps.size > 0)
5234
5941
  hpxml.heat_pumps[0].cooling_capacity = nil
5235
5942
  hpxml.heat_pumps[0].heating_capacity = nil
5236
5943
  hpxml.heat_pumps[0].heating_capacity_17F = nil
@@ -5263,9 +5970,9 @@ def set_hpxml_hvac_control(hpxml_file, hpxml)
5263
5970
  hpxml.hvac_controls[0].control_type = HPXML::HVACControlTypeProgrammable
5264
5971
  hpxml.hvac_controls[0].heating_setpoint_temp = nil
5265
5972
  hpxml.hvac_controls[0].cooling_setpoint_temp = nil
5266
- hpxml.hvac_controls[0].weekday_heating_setpoints = '64, 64, 64, 64, 64, 64, 64, 74, 74, 66, 66, 66, 66, 66, 66, 66, 66, 68, 68, 68, 68, 68, 64, 64'
5267
- hpxml.hvac_controls[0].weekend_heating_setpoints = '74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74'
5268
- hpxml.hvac_controls[0].weekday_cooling_setpoints = '82, 82, 82, 82, 82, 82, 82, 72, 72, 80, 80, 80, 80, 80, 80, 80, 80, 78, 78, 78, 78, 78, 82, 82'
5973
+ hpxml.hvac_controls[0].weekday_heating_setpoints = '64, 64, 64, 64, 64, 64, 64, 70, 70, 66, 66, 66, 66, 66, 66, 66, 66, 68, 68, 68, 68, 68, 64, 64'
5974
+ hpxml.hvac_controls[0].weekend_heating_setpoints = '68, 68, 68, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70'
5975
+ hpxml.hvac_controls[0].weekday_cooling_setpoints = '80, 80, 80, 80, 80, 80, 80, 75, 75, 80, 80, 80, 80, 80, 80, 80, 80, 78, 78, 78, 78, 78, 80, 80'
5269
5976
  hpxml.hvac_controls[0].weekend_cooling_setpoints = '78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78'
5270
5977
  elsif ['base-hvac-setpoints.xml'].include? hpxml_file
5271
5978
  hpxml.hvac_controls[0].heating_setpoint_temp = 60
@@ -5278,7 +5985,8 @@ end
5278
5985
  def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5279
5986
  if ['base.xml'].include? hpxml_file
5280
5987
  hpxml.hvac_distributions.add(id: 'HVACDistribution',
5281
- distribution_system_type: HPXML::HVACDistributionTypeAir)
5988
+ distribution_system_type: HPXML::HVACDistributionTypeAir,
5989
+ air_type: HPXML::AirTypeRegularVelocity)
5282
5990
  hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5283
5991
  duct_leakage_units: HPXML::UnitsCFM25,
5284
5992
  duct_leakage_value: 75,
@@ -5321,8 +6029,8 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5321
6029
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
5322
6030
  'base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
5323
6031
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
5324
- hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronicAndAir
5325
- hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeFanCoil
6032
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeAir
6033
+ hpxml.hvac_distributions[0].air_type = HPXML::AirTypeFanCoil
5326
6034
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
5327
6035
  hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronic
5328
6036
  hpxml.hvac_distributions[0].hydronic_type = HPXML::HydronicTypeBaseboard
@@ -5330,7 +6038,7 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5330
6038
  hpxml.hvac_distributions[0].ducts.clear
5331
6039
  hpxml.hvac_distributions.add(id: 'HVACDistribution2',
5332
6040
  distribution_system_type: HPXML::HVACDistributionTypeAir,
5333
- number_of_return_registers: 3)
6041
+ air_type: HPXML::AirTypeRegularVelocity)
5334
6042
  hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5335
6043
  duct_leakage_units: HPXML::UnitsCFM25,
5336
6044
  duct_leakage_value: 75,
@@ -5352,9 +6060,10 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5352
6060
  'base-hvac-evap-cooler-only.xml',
5353
6061
  'base-hvac-fireplace-wood-only.xml',
5354
6062
  'base-hvac-floor-furnace-propane-only.xml',
5355
- 'base-hvac-ideal-air.xml',
6063
+ 'base-hvac-fixed-heater-gas-only.xml',
5356
6064
  'base-hvac-mini-split-heat-pump-ductless.xml',
5357
6065
  'base-hvac-mini-split-air-conditioner-only-ductless.xml',
6066
+ 'base-hvac-portable-heater-gas-only.xml',
5358
6067
  'base-hvac-room-ac-only.xml',
5359
6068
  'base-hvac-stove-oil-only.xml',
5360
6069
  'base-hvac-stove-wood-pellets-only.xml',
@@ -5363,7 +6072,8 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5363
6072
  elsif ['base-hvac-multiple.xml'].include? hpxml_file
5364
6073
  hpxml.hvac_distributions.clear
5365
6074
  hpxml.hvac_distributions.add(id: 'HVACDistribution',
5366
- distribution_system_type: HPXML::HVACDistributionTypeAir)
6075
+ distribution_system_type: HPXML::HVACDistributionTypeAir,
6076
+ air_type: HPXML::AirTypeRegularVelocity)
5367
6077
  hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5368
6078
  duct_leakage_units: HPXML::UnitsCFM25,
5369
6079
  duct_leakage_value: 75,
@@ -5400,43 +6110,6 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5400
6110
  hpxml.hvac_distributions[-1].id = 'HVACDistribution5'
5401
6111
  hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
5402
6112
  hpxml.hvac_distributions[-1].id = 'HVACDistribution6'
5403
- elsif ['base-hvac-multiple2.xml'].include? hpxml_file
5404
- hpxml.hvac_distributions.clear
5405
- hpxml.hvac_distributions.add(id: 'HVACDistribution',
5406
- distribution_system_type: HPXML::HVACDistributionTypeAir)
5407
- hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5408
- duct_leakage_units: HPXML::UnitsCFM25,
5409
- duct_leakage_value: 75,
5410
- duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5411
- hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
5412
- duct_leakage_units: HPXML::UnitsCFM25,
5413
- duct_leakage_value: 25,
5414
- duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5415
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeSupply,
5416
- duct_insulation_r_value: 8,
5417
- duct_location: HPXML::LocationAtticUnvented,
5418
- duct_surface_area: 75)
5419
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeSupply,
5420
- duct_insulation_r_value: 8,
5421
- duct_location: HPXML::LocationOutside,
5422
- duct_surface_area: 75)
5423
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeReturn,
5424
- duct_insulation_r_value: 4,
5425
- duct_location: HPXML::LocationAtticUnvented,
5426
- duct_surface_area: 25)
5427
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeReturn,
5428
- duct_insulation_r_value: 4,
5429
- duct_location: HPXML::LocationOutside,
5430
- duct_surface_area: 25)
5431
- hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
5432
- hpxml.hvac_distributions[-1].id = 'HVACDistribution2'
5433
- hpxml.hvac_distributions.add(id: 'HVACDistribution3',
5434
- distribution_system_type: HPXML::HVACDistributionTypeHydronic,
5435
- hydronic_type: HPXML::HydronicTypeBaseboard)
5436
- hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
5437
- hpxml.hvac_distributions[-1].id = 'HVACDistribution4'
5438
- hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
5439
- hpxml.hvac_distributions[-1].id = 'HVACDistribution5'
5440
6113
  elsif ['base-mechvent-multiple.xml',
5441
6114
  'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
5442
6115
  hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
@@ -5464,8 +6137,10 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5464
6137
  hpxml.hvac_distributions[0].ducts[0].duct_surface_area = 30
5465
6138
  hpxml.hvac_distributions[0].ducts[1].duct_surface_area = 10
5466
6139
  elsif ['base-hvac-evap-cooler-only-ducted.xml'].include? hpxml_file
5467
- hpxml.hvac_distributions[0].duct_leakage_measurements.pop
6140
+ hpxml.hvac_distributions[0].duct_leakage_measurements[-1].duct_leakage_value = 0.0
5468
6141
  hpxml.hvac_distributions[0].ducts.pop
6142
+ elsif ['invalid_files/hvac-distribution-return-duct-leakage-missing.xml'].include? hpxml_file
6143
+ hpxml.hvac_distributions[0].duct_leakage_measurements.pop
5469
6144
  elsif ['base-hvac-ducts-leakage-percent.xml'].include? hpxml_file
5470
6145
  hpxml.hvac_distributions[0].duct_leakage_measurements.clear
5471
6146
  hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
@@ -5539,8 +6214,8 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5539
6214
  if hpxml_file == 'base-atticroof-conditioned.xml'
5540
6215
  # Test leakage to outside when all ducts in conditioned space
5541
6216
  # (e.g., ducts may be in floor cavities which have leaky rims)
5542
- hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = 1.5
5543
- hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = 1.5
6217
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = 50.0
6218
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = 100.0
5544
6219
  end
5545
6220
  elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
5546
6221
  hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherHousingUnit
@@ -5560,29 +6235,32 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5560
6235
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml',
5561
6236
  'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml',
5562
6237
  'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml'].include? hpxml_file
5563
- hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronicAndAir
5564
6238
  if hpxml_file.include? 'fan-coil'
5565
- hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeFanCoil
6239
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeAir
6240
+ hpxml.hvac_distributions[0].air_type = HPXML::AirTypeFanCoil
5566
6241
  elsif hpxml_file.include? 'water-loop-heat-pump'
5567
- hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeWaterLoopHeatPump
5568
- hpxml.hvac_distributions[0].number_of_return_registers = 3
6242
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronic
6243
+ hpxml.hvac_distributions[0].hydronic_type = HPXML::HydronicTypeWaterLoop
6244
+ hpxml.hvac_distributions.add(id: 'HVACDistributionWLHP',
6245
+ distribution_system_type: HPXML::HVACDistributionTypeAir,
6246
+ air_type: HPXML::AirTypeRegularVelocity)
5569
6247
  end
5570
- hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5571
- duct_leakage_units: HPXML::UnitsCFM25,
5572
- duct_leakage_value: 15,
5573
- duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5574
- hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
5575
- duct_leakage_units: HPXML::UnitsCFM25,
5576
- duct_leakage_value: 10,
5577
- duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5578
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeSupply,
5579
- duct_insulation_r_value: 0,
5580
- duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
5581
- duct_surface_area: 50)
5582
- hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeReturn,
5583
- duct_insulation_r_value: 0,
5584
- duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
5585
- duct_surface_area: 20)
6248
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
6249
+ duct_leakage_units: HPXML::UnitsCFM25,
6250
+ duct_leakage_value: 15,
6251
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
6252
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
6253
+ duct_leakage_units: HPXML::UnitsCFM25,
6254
+ duct_leakage_value: 10,
6255
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
6256
+ hpxml.hvac_distributions[-1].ducts.add(duct_type: HPXML::DuctTypeSupply,
6257
+ duct_insulation_r_value: 0,
6258
+ duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
6259
+ duct_surface_area: 50)
6260
+ hpxml.hvac_distributions[-1].ducts.add(duct_type: HPXML::DuctTypeReturn,
6261
+ duct_insulation_r_value: 0,
6262
+ duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
6263
+ duct_surface_area: 20)
5586
6264
  elsif ['invalid_files/hvac-invalid-distribution-system-type.xml'].include? hpxml_file
5587
6265
  hpxml.hvac_distributions.add(id: 'HVACDistribution2',
5588
6266
  distribution_system_type: HPXML::HVACDistributionTypeHydronic,
@@ -5601,13 +6279,6 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5601
6279
  duct.duct_location = nil
5602
6280
  end
5603
6281
  end
5604
- elsif ['invalid_files/missing-duct-location-and-surface-area.xml'].include? hpxml_file
5605
- hpxml.hvac_distributions.each do |hvac_distribution|
5606
- next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
5607
-
5608
- hvac_distribution.ducts[1].duct_surface_area = nil
5609
- hvac_distribution.ducts[1].duct_location = nil
5610
- end
5611
6282
  elsif ['invalid_files/missing-duct-location.xml'].include? hpxml_file
5612
6283
  hpxml.hvac_distributions.each do |hvac_distribution|
5613
6284
  next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
@@ -5616,20 +6287,47 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5616
6287
  end
5617
6288
  elsif ['invalid_files/multifamily-reference-duct.xml'].include? hpxml_file
5618
6289
  hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherMultifamilyBufferSpace
6290
+ elsif ['invalid_files/multiple-shared-cooling-systems.xml',
6291
+ 'invalid_files/multiple-shared-heating-systems.xml'].include? hpxml_file
6292
+ hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
6293
+ hpxml.hvac_distributions[-1].id += '2'
6294
+ elsif ['invalid_files/duct-leakage-cfm25.xml'].include? hpxml_file
6295
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = -2.0
6296
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = -2.0
6297
+ elsif ['invalid_files/duct-leakage-percent.xml'].include? hpxml_file
6298
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_units = HPXML::UnitsPercent
6299
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_units = HPXML::UnitsPercent
5619
6300
  end
5620
6301
 
5621
6302
  # Set ConditionedFloorAreaServed
5622
- n_air_dists = hpxml.hvac_distributions.select { |d| [HPXML::HVACDistributionTypeAir, HPXML::HVACDistributionTypeHydronicAndAir].include? d.distribution_system_type }.size
5623
- hpxml.hvac_distributions.each do |hvac_distribution|
5624
- if [HPXML::HVACDistributionTypeAir, HPXML::HVACDistributionTypeHydronicAndAir].include? hvac_distribution.distribution_system_type
5625
-
5626
- hvac_distribution.conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area / n_air_dists
5627
- else
5628
- hvac_distribution.conditioned_floor_area_served = nil
6303
+ if not hpxml_file.include?('invalid_files')
6304
+ n_htg_systems = (hpxml.heating_systems + hpxml.heat_pumps).select { |h| h.fraction_heat_load_served.to_f > 0 }.size
6305
+ n_clg_systems = (hpxml.cooling_systems + hpxml.heat_pumps).select { |h| h.fraction_cool_load_served.to_f > 0 }.size
6306
+ hpxml.hvac_distributions.each do |hvac_distribution|
6307
+ if [HPXML::HVACDistributionTypeAir].include?(hvac_distribution.distribution_system_type) && (hvac_distribution.ducts.size > 0)
6308
+ n_hvac_systems = [n_htg_systems, n_clg_systems].max
6309
+ hvac_distribution.conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area / n_hvac_systems
6310
+ else
6311
+ hvac_distribution.conditioned_floor_area_served = nil
6312
+ end
5629
6313
  end
6314
+ elsif ['invalid_files/invalid-distribution-cfa-served.xml'].include? hpxml_file
6315
+ hpxml.hvac_distributions[0].conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area + 1.1
5630
6316
  end
5631
- if ['invalid_files/invalid-distribution-cfa-served.xml'].include? hpxml_file
5632
- hpxml.hvac_distributions[0].conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area + 0.1
6317
+
6318
+ # Set number of return registers
6319
+ if not ['base-misc-defaults.xml'].include? hpxml_file
6320
+ hpxml.hvac_distributions.each do |hvac_distribution|
6321
+ hvac_distribution.number_of_return_registers = nil
6322
+ next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
6323
+
6324
+ if hvac_distribution.ducts.select { |d| d.duct_type == HPXML::DuctTypeReturn }.size > 0
6325
+ hvac_distribution.number_of_return_registers = hpxml.building_construction.number_of_conditioned_floors.ceil
6326
+ elsif hvac_distribution.ducts.select { |d| d.duct_type == HPXML::DuctTypeSupply }.size > 0
6327
+ # E.g., evap cooler w/ only supply ducts
6328
+ hvac_distribution.number_of_return_registers = 0
6329
+ end
6330
+ end
5633
6331
  end
5634
6332
  end
5635
6333
 
@@ -5757,6 +6455,9 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
5757
6455
  hours_in_operation: 24,
5758
6456
  fan_power: 26,
5759
6457
  used_for_whole_building_ventilation: true)
6458
+ elsif ['invalid_files/invalid-shared-vent-in-unit-flowrate.xml'].include? hpxml_file
6459
+ hpxml.ventilation_fans[0].in_unit_flow_rate = 80
6460
+ hpxml.ventilation_fans[0].rated_flow_rate = 80
5760
6461
  elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.xml'].include? hpxml_file
5761
6462
  hpxml.ventilation_fans[0].preheating_fuel = HPXML::FuelTypeNaturalGas
5762
6463
  hpxml.ventilation_fans[0].preheating_efficiency_cop = 0.92
@@ -5857,36 +6558,36 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
5857
6558
  used_for_seasonal_cooling_load_reduction: true)
5858
6559
  hpxml.ventilation_fans.add(id: 'Supply',
5859
6560
  fan_type: HPXML::MechVentTypeSupply,
5860
- tested_flow_rate: 110,
6561
+ tested_flow_rate: 27.5,
5861
6562
  hours_in_operation: 24,
5862
- fan_power: 30,
6563
+ fan_power: 7.5,
5863
6564
  used_for_whole_building_ventilation: true)
5864
6565
  hpxml.ventilation_fans.add(id: 'Exhaust',
5865
6566
  fan_type: HPXML::MechVentTypeExhaust,
5866
- tested_flow_rate: 50,
6567
+ tested_flow_rate: 12.5,
5867
6568
  hours_in_operation: 14,
5868
- fan_power: 10,
6569
+ fan_power: 2.5,
5869
6570
  used_for_whole_building_ventilation: true)
5870
6571
  hpxml.ventilation_fans.add(id: 'Balanced',
5871
6572
  fan_type: HPXML::MechVentTypeBalanced,
5872
- tested_flow_rate: 110,
6573
+ tested_flow_rate: 27.5,
5873
6574
  hours_in_operation: 24,
5874
- fan_power: 60,
6575
+ fan_power: 15,
5875
6576
  used_for_whole_building_ventilation: true)
5876
6577
  hpxml.ventilation_fans.add(id: 'ERV',
5877
6578
  fan_type: HPXML::MechVentTypeERV,
5878
- tested_flow_rate: 50,
6579
+ tested_flow_rate: 12.5,
5879
6580
  hours_in_operation: 24,
5880
6581
  total_recovery_efficiency: 0.48,
5881
6582
  sensible_recovery_efficiency: 0.72,
5882
- fan_power: 30,
6583
+ fan_power: 6.25,
5883
6584
  used_for_whole_building_ventilation: true)
5884
6585
  hpxml.ventilation_fans.add(id: 'HRV',
5885
6586
  fan_type: HPXML::MechVentTypeHRV,
5886
- tested_flow_rate: 60,
6587
+ tested_flow_rate: 15,
5887
6588
  hours_in_operation: 24,
5888
6589
  sensible_recovery_efficiency: 0.72,
5889
- fan_power: 30,
6590
+ fan_power: 7.5,
5890
6591
  used_for_whole_building_ventilation: true)
5891
6592
  hpxml.ventilation_fans.reverse_each do |vent_fan|
5892
6593
  vent_fan.fan_power /= 2.0
@@ -5899,16 +6600,16 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
5899
6600
  end
5900
6601
  hpxml.ventilation_fans.add(id: 'CFIS',
5901
6602
  fan_type: HPXML::MechVentTypeCFIS,
5902
- tested_flow_rate: 160,
6603
+ tested_flow_rate: 40,
5903
6604
  hours_in_operation: 8,
5904
- fan_power: 150,
6605
+ fan_power: 37.5,
5905
6606
  used_for_whole_building_ventilation: true,
5906
6607
  distribution_system_idref: 'HVACDistribution')
5907
6608
  hpxml.ventilation_fans.add(id: 'CFIS_2',
5908
6609
  fan_type: HPXML::MechVentTypeCFIS,
5909
- tested_flow_rate: 170,
6610
+ tested_flow_rate: 42.5,
5910
6611
  hours_in_operation: 8,
5911
- fan_power: 150,
6612
+ fan_power: 37.5,
5912
6613
  used_for_whole_building_ventilation: true,
5913
6614
  distribution_system_idref: 'HVACDistribution2')
5914
6615
  end
@@ -6175,6 +6876,8 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
6175
6876
  hpxml.water_heating_systems[0].energy_factor = 1.0
6176
6877
  elsif ['invalid_files/dhw-invalid-uef-tank-heat-pump.xml'].include? hpxml_file
6177
6878
  hpxml.water_heating_systems[0].uniform_energy_factor = 1.0
6879
+ elsif ['invalid_files/invalid-number-of-units-served.xml'].include? hpxml_file
6880
+ hpxml.water_heating_systems[0].number_of_units_served = 1
6178
6881
  end
6179
6882
  end
6180
6883
 
@@ -6325,6 +7028,8 @@ def set_hpxml_solar_thermal_system(hpxml_file, hpxml)
6325
7028
  water_heating_system_idref: 'WaterHeater')
6326
7029
  elsif ['invalid_files/unattached-solar-thermal-system.xml'].include? hpxml_file
6327
7030
  hpxml.solar_thermal_systems[0].water_heating_system_idref = 'foobar'
7031
+ elsif ['invalid_files/solar-fraction-one.xml'].include? hpxml_file
7032
+ hpxml.solar_thermal_systems[0].solar_fraction = 1.0
6328
7033
  end
6329
7034
  end
6330
7035
 
@@ -6366,6 +7071,8 @@ def set_hpxml_pv_systems(hpxml_file, hpxml)
6366
7071
  inverter_efficiency: 0.96,
6367
7072
  system_losses_fraction: 0.14,
6368
7073
  number_of_bedrooms_served: 18)
7074
+ elsif ['invalid_files/invalid-number-of-bedrooms-served.xml'].include? hpxml_file
7075
+ hpxml.pv_systems[0].number_of_bedrooms_served = hpxml.building_construction.number_of_bedrooms
6369
7076
  end
6370
7077
  end
6371
7078
 
@@ -6376,7 +7083,7 @@ def set_hpxml_generators(hpxml_file, hpxml)
6376
7083
  annual_consumption_kbtu: 8500,
6377
7084
  annual_output_kwh: 500)
6378
7085
  hpxml.generators.add(id: 'Generator2',
6379
- fuel_type: HPXML::FuelTypePropane,
7086
+ fuel_type: HPXML::FuelTypeOil,
6380
7087
  annual_consumption_kbtu: 8500,
6381
7088
  annual_output_kwh: 500)
6382
7089
  elsif ['base-bldgtype-multifamily-shared-generator.xml'].include? hpxml_file
@@ -6386,6 +7093,10 @@ def set_hpxml_generators(hpxml_file, hpxml)
6386
7093
  annual_consumption_kbtu: 85000,
6387
7094
  annual_output_kwh: 5000,
6388
7095
  number_of_bedrooms_served: 18)
7096
+ elsif ['invalid_files/generator-output-greater-than-consumption.xml'].include? hpxml_file
7097
+ hpxml.generators[0].annual_consumption_kbtu = 1500
7098
+ elsif ['invalid_files/generator-number-of-bedrooms-served.xml'].include? hpxml_file
7099
+ hpxml.generators[0].number_of_bedrooms_served = hpxml.building_construction.number_of_bedrooms
6389
7100
  end
6390
7101
  end
6391
7102
 
@@ -6454,7 +7165,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6454
7165
  location: HPXML::LocationLivingSpace,
6455
7166
  fuel_type: HPXML::FuelTypeElectricity,
6456
7167
  combined_energy_factor: 3.73,
6457
- control_type: HPXML::ClothesDryerControlTypeTimer,
6458
7168
  is_vented: true,
6459
7169
  vented_flow_rate: 150)
6460
7170
  elsif ['base-appliances-none.xml',
@@ -6477,7 +7187,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6477
7187
  location: HPXML::LocationLivingSpace,
6478
7188
  fuel_type: HPXML::FuelTypeElectricity,
6479
7189
  energy_factor: HotWaterAndAppliances.calc_clothes_dryer_ef_from_cef(cef).round(2),
6480
- control_type: HPXML::ClothesDryerControlTypeMoisture,
6481
7190
  is_vented: false)
6482
7191
  elsif ['base-appliances-coal.xml',
6483
7192
  'base-appliances-gas.xml',
@@ -6487,8 +7196,7 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6487
7196
  hpxml.clothes_dryers.clear
6488
7197
  hpxml.clothes_dryers.add(id: 'ClothesDryer',
6489
7198
  location: HPXML::LocationLivingSpace,
6490
- combined_energy_factor: 3.30,
6491
- control_type: HPXML::ClothesDryerControlTypeMoisture)
7199
+ combined_energy_factor: 3.30)
6492
7200
  if hpxml_file == 'base-appliances-coal.xml'
6493
7201
  hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeCoal
6494
7202
  elsif hpxml_file == 'base-appliances-gas.xml'
@@ -6511,7 +7219,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6511
7219
  hpxml.clothes_dryers[0].location = nil
6512
7220
  hpxml.clothes_dryers[0].energy_factor = nil
6513
7221
  hpxml.clothes_dryers[0].combined_energy_factor = nil
6514
- hpxml.clothes_dryers[0].control_type = nil
6515
7222
  hpxml.clothes_dryers[0].is_vented = nil
6516
7223
  hpxml.clothes_dryers[0].vented_flow_rate = nil
6517
7224
  elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
@@ -6675,14 +7382,26 @@ def set_hpxml_dehumidifier(hpxml_file, hpxml)
6675
7382
  capacity: 40,
6676
7383
  energy_factor: 1.8,
6677
7384
  rh_setpoint: 0.5,
6678
- fraction_served: 1.0)
6679
- elsif ['base-appliances-dehumidifier-50percent.xml'].include? hpxml_file
6680
- hpxml.dehumidifiers[0].fraction_served = 0.5
7385
+ fraction_served: 1.0,
7386
+ location: HPXML::LocationLivingSpace)
6681
7387
  elsif ['base-appliances-dehumidifier-ief-portable.xml'].include? hpxml_file
6682
7388
  hpxml.dehumidifiers[0].energy_factor = nil
6683
7389
  hpxml.dehumidifiers[0].integrated_energy_factor = 1.5
6684
7390
  elsif ['base-appliances-dehumidifier-ief-whole-home.xml'].include? hpxml_file
6685
7391
  hpxml.dehumidifiers[0].type = HPXML::DehumidifierTypeWholeHome
7392
+ elsif ['base-appliances-dehumidifier-multiple.xml'].include? hpxml_file
7393
+ hpxml.dehumidifiers[0].fraction_served = 0.5
7394
+ hpxml.dehumidifiers.add(id: 'Dehumidifier2',
7395
+ type: HPXML::DehumidifierTypePortable,
7396
+ capacity: 30,
7397
+ energy_factor: 1.6,
7398
+ rh_setpoint: 0.5,
7399
+ fraction_served: 0.25,
7400
+ location: HPXML::LocationLivingSpace)
7401
+ elsif ['invalid_files/dehumidifier-setpoints.xml'].include? hpxml_file
7402
+ hpxml.dehumidifiers[1].rh_setpoint = 0.55
7403
+ elsif ['invalid_files/dehumidifier-fraction-served.xml'].include? hpxml_file
7404
+ hpxml.dehumidifiers[1].fraction_served = 0.6
6686
7405
  end
6687
7406
  end
6688
7407
 
@@ -6812,16 +7531,18 @@ def set_hpxml_pools(hpxml_file, hpxml)
6812
7531
  if ['base-misc-loads-large-uncommon.xml',
6813
7532
  'base-misc-usage-multiplier.xml'].include? hpxml_file
6814
7533
  hpxml.pools.add(id: 'Pool',
7534
+ type: HPXML::TypeUnknown,
7535
+ pump_type: HPXML::TypeUnknown,
7536
+ pump_kwh_per_year: 2700,
7537
+ pump_weekday_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
7538
+ pump_weekend_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
7539
+ pump_monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154',
6815
7540
  heater_type: HPXML::HeaterTypeGas,
6816
7541
  heater_load_units: HPXML::UnitsThermPerYear,
6817
7542
  heater_load_value: 500,
6818
- pump_kwh_per_year: 2700,
6819
7543
  heater_weekday_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
6820
7544
  heater_weekend_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
6821
- heater_monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154',
6822
- pump_weekday_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
6823
- pump_weekend_fractions: '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003',
6824
- pump_monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
7545
+ heater_monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
6825
7546
  if hpxml_file == 'base-misc-usage-multiplier.xml'
6826
7547
  hpxml.pools.each do |pool|
6827
7548
  pool.pump_usage_multiplier = 0.9
@@ -6829,11 +7550,7 @@ def set_hpxml_pools(hpxml_file, hpxml)
6829
7550
  end
6830
7551
  end
6831
7552
  elsif ['base-misc-loads-large-uncommon2.xml'].include? hpxml_file
6832
- hpxml.pools[0].heater_type = nil
6833
- hpxml.pools[0].heater_load_value = nil
6834
- hpxml.pools[0].heater_weekday_fractions = nil
6835
- hpxml.pools[0].heater_weekend_fractions = nil
6836
- hpxml.pools[0].heater_monthly_multipliers = nil
7553
+ hpxml.pools[0].heater_type = HPXML::TypeNone
6837
7554
  end
6838
7555
  end
6839
7556
 
@@ -6841,16 +7558,18 @@ def set_hpxml_hot_tubs(hpxml_file, hpxml)
6841
7558
  if ['base-misc-loads-large-uncommon.xml',
6842
7559
  'base-misc-usage-multiplier.xml'].include? hpxml_file
6843
7560
  hpxml.hot_tubs.add(id: 'HotTub',
7561
+ type: HPXML::TypeUnknown,
7562
+ pump_type: HPXML::TypeUnknown,
7563
+ pump_kwh_per_year: 1000,
7564
+ pump_weekday_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
7565
+ pump_weekend_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
7566
+ pump_monthly_multipliers: '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837',
6844
7567
  heater_type: HPXML::HeaterTypeElectricResistance,
6845
7568
  heater_load_units: HPXML::UnitsKwhPerYear,
6846
7569
  heater_load_value: 1300,
6847
- pump_kwh_per_year: 1000,
6848
7570
  heater_weekday_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
6849
7571
  heater_weekend_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
6850
- heater_monthly_multipliers: '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921',
6851
- pump_weekday_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
6852
- pump_weekend_fractions: '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024',
6853
- pump_monthly_multipliers: '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
7572
+ heater_monthly_multipliers: '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
6854
7573
  if hpxml_file == 'base-misc-usage-multiplier.xml'
6855
7574
  hpxml.hot_tubs.each do |hot_tub|
6856
7575
  hot_tub.pump_usage_multiplier = 0.9
@@ -6937,6 +7656,10 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
6937
7656
  weekday_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
6938
7657
  weekend_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
6939
7658
  monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
7659
+ elsif ['invalid_files/frac-sensible-plug-load.xml'].include? hpxml_file
7660
+ hpxml.plug_loads[0].frac_sensible = -0.1
7661
+ elsif ['invalid_files/frac-total-plug-load.xml'].include? hpxml_file
7662
+ hpxml.plug_loads[0].frac_latent = 1.0 - hpxml.plug_loads[0].frac_sensible + 0.1
6940
7663
  else
6941
7664
  cfa = hpxml.building_construction.conditioned_floor_area
6942
7665
  nbeds = hpxml.building_construction.number_of_bedrooms
@@ -6995,6 +7718,11 @@ def set_hpxml_fuel_loads(hpxml_file, hpxml)
6995
7718
  elsif ['base-misc-loads-large-uncommon2.xml'].include? hpxml_file
6996
7719
  hpxml.fuel_loads[0].fuel_type = HPXML::FuelTypeOil
6997
7720
  hpxml.fuel_loads[2].fuel_type = HPXML::FuelTypeWoodPellets
7721
+ elsif ['invalid_files/frac-sensible-fuel-load.xml'].include? hpxml_file
7722
+ hpxml.fuel_loads[0].frac_sensible = -0.1
7723
+ elsif ['invalid_files/frac-total-fuel-load.xml'].include? hpxml_file
7724
+ hpxml.fuel_loads[0].frac_sensible = 0.8
7725
+ hpxml.fuel_loads[0].frac_latent = 1.0 - hpxml.fuel_loads[0].frac_sensible + 0.1
6998
7726
  end
6999
7727
  end
7000
7728
 
@@ -7190,12 +7918,53 @@ def create_schematron_hpxml_validator(hpxml_docs)
7190
7918
  end
7191
7919
  end
7192
7920
 
7921
+ # Add ID/IDref checks
7922
+ # TODO: Dynamically obtain these lists
7923
+ id_names = ['SystemIdentifier',
7924
+ 'BuildingID']
7925
+ idref_names = ['AttachedToRoof',
7926
+ 'AttachedToFrameFloor',
7927
+ 'AttachedToSlab',
7928
+ 'AttachedToFoundationWall',
7929
+ 'AttachedToWall',
7930
+ 'DistributionSystem',
7931
+ 'AttachedToHVACDistributionSystem',
7932
+ 'RelatedHVACSystem',
7933
+ 'ConnectedTo']
7934
+ elements_in_sample_files.each do |element_xpath|
7935
+ element_name = element_xpath.split('/')[-1].gsub('h:', '')
7936
+ context_xpath = "/#{element_xpath.split('/')[0..-2].join('/')}"
7937
+ if id_names.include? element_name
7938
+ rule = rules[context_xpath]
7939
+ if rule.nil?
7940
+ # Need new rule
7941
+ rule = XMLHelper.add_element(pattern, 'sch:rule')
7942
+ XMLHelper.add_attribute(rule, 'context', context_xpath)
7943
+ rules[context_xpath] = rule
7944
+ end
7945
+ assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected id attribute for #{element_name}", :string)
7946
+ XMLHelper.add_attribute(assertion, 'role', 'ERROR')
7947
+ XMLHelper.add_attribute(assertion, 'test', "count(h:#{element_name}[@id]) = 1 or not (h:#{element_name})")
7948
+ elsif idref_names.include? element_name
7949
+ rule = rules[context_xpath]
7950
+ if rule.nil?
7951
+ # Need new rule
7952
+ rule = XMLHelper.add_element(pattern, 'sch:rule')
7953
+ XMLHelper.add_attribute(rule, 'context', context_xpath)
7954
+ rules[context_xpath] = rule
7955
+ end
7956
+ assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected idref attribute for #{element_name}", :string)
7957
+ XMLHelper.add_attribute(assertion, 'role', 'ERROR')
7958
+ XMLHelper.add_attribute(assertion, 'test', "count(h:#{element_name}[@idref]) = 1 or not(h:#{element_name})")
7959
+ end
7960
+ end
7961
+
7193
7962
  XMLHelper.write_file(hpxml_validator, File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio', 'resources', 'HPXMLvalidator.xml'))
7194
7963
  end
7195
7964
 
7196
7965
  def get_element_full_xpaths(element_xpaths, complex_type_or_group_dict, element_xpath, element_type)
7197
7966
  if not complex_type_or_group_dict.keys.include? element_type
7198
- return element_xpaths[element_xpath] = element_type
7967
+ element_xpaths[element_xpath] = element_type
7199
7968
  else
7200
7969
  complex_type_or_group = deep_copy_object(complex_type_or_group_dict[element_type])
7201
7970
  complex_type_or_group.each do |k, v|
@@ -7316,13 +8085,18 @@ if ARGV[0].to_sym == :create_release_zips
7316
8085
  File.delete(zip_path) if File.exist? zip_path
7317
8086
  end
7318
8087
 
7319
- # Only include files under git version control
7320
- command = 'git ls-files'
7321
- begin
7322
- git_files = `#{command}`
7323
- rescue
7324
- puts "Command failed: '#{command}'. Perhaps git needs to be installed?"
7325
- exit!
8088
+ if ENV['CI']
8089
+ # CI doesn't have git, so default to everything
8090
+ git_files = Dir['**/*.*']
8091
+ else
8092
+ # Only include files under git version control
8093
+ command = 'git ls-files'
8094
+ begin
8095
+ git_files = `#{command}`
8096
+ rescue
8097
+ puts "Command failed: '#{command}'. Perhaps git needs to be installed?"
8098
+ exit!
8099
+ end
7326
8100
  end
7327
8101
 
7328
8102
  files = ['HPXMLtoOpenStudio/measure.*',
@@ -7336,21 +8110,11 @@ if ARGV[0].to_sym == :create_release_zips
7336
8110
  'workflow/sample_files/*.xml',
7337
8111
  'workflow/tests/*.rb',
7338
8112
  'workflow/tests/ASHRAE_Standard_140/*.xml',
8113
+ 'workflow/tests/base_results/*.csv',
7339
8114
  'documentation/index.html',
7340
8115
  'documentation/_static/**/*.*']
7341
8116
 
7342
8117
  if not ENV['CI']
7343
- # Run ASHRAE 140 files
7344
- puts 'Running ASHRAE 140 tests (this will take a minute)...'
7345
- command = "#{OpenStudio.getOpenStudioCLI} workflow/tests/hpxml_translator_test.rb --name=test_ashrae_140 > log.txt"
7346
- system(command)
7347
- results_csv_path = 'workflow/tests/results/results_ashrae_140.csv'
7348
- if not File.exist? results_csv_path
7349
- puts 'ASHRAE 140 results CSV file not generated. Aborting...'
7350
- exit!
7351
- end
7352
- File.delete('log.txt')
7353
-
7354
8118
  # Generate documentation
7355
8119
  puts 'Generating documentation...'
7356
8120
  command = 'sphinx-build -b singlehtml docs/source documentation'
@@ -7389,9 +8153,6 @@ if ARGV[0].to_sym == :create_release_zips
7389
8153
  release_map.each do |zip_path, include_all_epws|
7390
8154
  puts "Creating #{zip_path}..."
7391
8155
  zip = OpenStudio::ZipFile.new(zip_path, false)
7392
- if not ENV['CI']
7393
- zip.addFile(results_csv_path, File.join('OpenStudio-HPXML', results_csv_path))
7394
- end
7395
8156
  files.each do |f|
7396
8157
  Dir[f].each do |file|
7397
8158
  if file.start_with? 'documentation'