urbanopt-cli 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (871) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -1
  3. data/CMakeLists.txt +8 -8
  4. data/LICENSE.md +11 -1
  5. data/Rakefile +16 -6
  6. data/example_files/example_project_combined.json +100 -5
  7. data/example_files/mappers/Baseline.rb +31 -18
  8. data/example_files/mappers/CreateBar.rb +16 -6
  9. data/example_files/mappers/EvCharging.rb +20 -10
  10. data/example_files/mappers/Floorspace.rb +16 -6
  11. data/example_files/mappers/HighEfficiencyCreateBar.rb +16 -6
  12. data/example_files/mappers/HighEfficiencyFloorspace.rb +16 -6
  13. data/example_files/mappers/ThermalStorage.rb +16 -6
  14. data/example_files/measures/BuildResidentialModel/measure.rb +211 -129
  15. data/example_files/residential/clothes_dryer.tsv +7 -7
  16. data/example_files/residential/clothes_washer.tsv +1 -1
  17. data/example_files/residential/cooling_system.tsv +42 -22
  18. data/example_files/residential/dishwasher.tsv +1 -1
  19. data/example_files/residential/exhaust.tsv +3 -0
  20. data/example_files/residential/heat_pump.tsv +62 -40
  21. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -0
  22. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +23 -0
  23. data/example_files/resources/hpxml-measures/.gitignore +1 -8
  24. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +633 -1188
  25. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1524 -1211
  26. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
  27. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +424 -335
  28. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +104 -62
  29. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
  30. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +31 -55
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +30 -54
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +30 -54
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +30 -54
  35. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +30 -54
  36. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +31 -55
  37. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +31 -55
  38. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +36 -60
  39. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +31 -55
  40. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +31 -55
  41. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +31 -55
  42. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +31 -55
  43. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +31 -55
  44. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +31 -55
  45. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +31 -55
  46. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +31 -55
  47. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +31 -55
  48. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +31 -55
  49. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +31 -55
  50. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +31 -55
  51. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +31 -55
  52. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +31 -56
  53. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +31 -56
  54. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +31 -55
  55. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +31 -56
  56. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +31 -56
  57. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +31 -56
  58. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +31 -56
  59. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +31 -55
  60. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +31 -55
  61. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +31 -55
  62. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +31 -56
  63. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +31 -55
  64. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +32 -56
  65. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +31 -55
  66. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +31 -55
  67. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +31 -55
  68. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +31 -55
  69. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +31 -55
  70. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +31 -55
  71. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +31 -55
  72. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +31 -55
  73. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +31 -55
  74. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +31 -55
  75. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +31 -55
  76. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +31 -55
  77. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +31 -55
  78. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +31 -55
  79. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +31 -55
  80. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +31 -55
  81. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +31 -55
  82. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +31 -55
  83. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +31 -55
  84. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +31 -55
  85. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +31 -55
  86. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +31 -55
  87. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +31 -55
  88. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +31 -55
  89. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +31 -55
  90. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +31 -55
  91. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +31 -55
  92. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +31 -55
  93. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +31 -55
  94. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +31 -55
  95. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +31 -55
  96. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +31 -55
  97. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +31 -55
  98. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +31 -55
  99. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +31 -55
  100. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +31 -55
  101. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +31 -55
  102. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +31 -55
  103. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +31 -55
  104. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +31 -55
  105. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +31 -55
  106. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +31 -55
  107. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +31 -55
  108. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +32 -56
  109. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +31 -55
  110. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +31 -55
  111. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +31 -55
  112. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +31 -55
  113. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +30 -54
  114. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +30 -54
  115. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +30 -54
  116. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +30 -54
  117. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +30 -54
  118. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
  119. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
  120. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +31 -56
  121. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +31 -55
  122. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +31 -55
  123. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +31 -55
  124. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +31 -55
  125. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +31 -56
  126. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +31 -56
  127. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +31 -55
  128. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +31 -55
  129. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +31 -55
  130. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +31 -56
  131. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +31 -55
  132. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +31 -55
  133. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +31 -57
  134. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +31 -56
  135. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +31 -56
  136. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +31 -55
  137. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +31 -55
  138. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +32 -57
  139. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +31 -55
  140. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +31 -55
  141. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +31 -55
  142. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +32 -56
  143. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +31 -56
  144. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +31 -56
  145. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +31 -56
  146. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +31 -56
  147. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
  148. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +31 -55
  149. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +31 -55
  150. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +31 -55
  151. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +31 -55
  152. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +31 -56
  153. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +31 -55
  154. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +31 -55
  155. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +31 -55
  156. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +31 -55
  157. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
  158. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
  159. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +31 -57
  160. 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} +36 -58
  161. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
  162. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
  163. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
  164. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
  165. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
  166. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
  167. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
  168. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
  169. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
  170. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
  171. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
  172. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
  173. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +31 -56
  174. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +31 -56
  175. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +32 -57
  176. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +32 -57
  177. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +32 -57
  178. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +32 -57
  179. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +31 -55
  180. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +31 -56
  181. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
  182. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +31 -55
  183. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +31 -55
  184. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +31 -55
  185. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +31 -56
  186. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +31 -56
  187. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +31 -55
  188. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +31 -56
  189. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +31 -55
  190. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +31 -55
  191. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +31 -55
  192. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +40 -64
  193. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +31 -55
  194. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +44 -68
  195. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
  196. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
  197. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +31 -55
  198. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
  199. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
  200. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +31 -55
  201. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +39 -65
  202. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +32 -56
  203. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +31 -55
  204. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +31 -55
  205. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +31 -55
  206. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
  207. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +31 -55
  208. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +31 -55
  209. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +31 -55
  210. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +31 -55
  211. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +31 -55
  212. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +29 -53
  213. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +29 -53
  214. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +29 -53
  215. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +31 -55
  216. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
  217. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +30 -54
  218. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +31 -55
  219. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +34 -58
  220. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +31 -55
  221. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +31 -55
  222. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +31 -55
  223. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +31 -55
  224. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +31 -55
  225. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +31 -55
  226. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +31 -55
  227. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +31 -55
  228. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +57 -56
  229. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +31 -55
  230. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
  231. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
  232. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
  233. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
  234. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
  235. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
  236. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
  237. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
  238. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
  239. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
  240. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
  241. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
  242. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
  243. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
  244. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
  245. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
  246. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
  247. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
  248. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
  249. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
  250. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
  251. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
  252. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
  253. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
  254. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
  255. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  256. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
  257. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  258. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
  259. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  260. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
  261. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  262. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
  263. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  264. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
  265. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  266. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
  267. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  268. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
  269. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  270. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
  271. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  272. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
  273. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
  274. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
  275. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  276. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
  277. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  278. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
  279. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  280. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
  281. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  282. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
  283. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  284. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
  285. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  286. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
  287. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  288. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
  289. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  290. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
  291. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  292. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
  293. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
  294. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
  295. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
  296. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
  297. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
  298. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
  299. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
  300. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
  301. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
  302. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
  303. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
  304. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
  305. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
  306. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
  307. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
  308. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
  309. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
  310. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
  311. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +31 -55
  312. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
  313. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
  314. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
  315. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +31 -55
  316. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
  317. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +31 -55
  318. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +31 -55
  319. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
  320. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
  321. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
  322. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +34 -58
  323. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
  324. 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} +32 -56
  325. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +31 -55
  326. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
  327. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
  328. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
  329. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
  330. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
  331. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +34 -58
  332. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
  333. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +31 -55
  334. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +31 -55
  335. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +31 -55
  336. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +31 -55
  337. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
  338. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +31 -55
  339. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +31 -55
  340. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +31 -55
  341. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +31 -55
  342. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +31 -55
  343. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
  344. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +35 -59
  345. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
  346. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
  347. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +31 -55
  348. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +31 -55
  349. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +31 -55
  350. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
  351. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +31 -55
  352. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
  353. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +31 -55
  354. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +31 -55
  355. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +31 -55
  356. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +31 -55
  357. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +31 -55
  358. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +31 -55
  359. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +31 -55
  360. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
  361. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +33 -57
  362. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
  363. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
  364. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
  365. data/example_files/resources/hpxml-measures/Changelog.md +238 -0
  366. data/example_files/resources/hpxml-measures/Gemfile +4 -2
  367. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +265 -838
  368. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +135 -114
  369. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +5 -97
  370. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +573 -193
  371. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +2 -28
  372. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
  373. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +107 -176
  374. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -180
  375. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +481 -94
  376. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +2 -6
  377. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +23 -11
  378. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
  379. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +735 -453
  380. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +417 -105
  381. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1377 -1335
  382. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1393 -1467
  383. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
  384. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
  385. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +64 -3
  386. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +2 -22
  387. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -3
  388. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +15 -6
  389. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +7 -1
  390. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
  391. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +1 -1
  392. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +3 -4
  393. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +31 -30
  394. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +4 -1
  395. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +62 -16
  396. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +507 -628
  397. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -0
  398. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -1
  399. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +321 -6
  400. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -0
  401. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -0
  402. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -0
  403. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -0
  404. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -0
  405. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +25 -1
  406. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -0
  407. data/example_files/resources/hpxml-measures/README.md +4 -4
  408. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +111 -37
  409. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +318 -490
  410. data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +237 -183
  411. data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
  412. data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +2 -2
  413. data/example_files/resources/hpxml-measures/docs/source/intro.rst +3 -105
  414. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +476 -351
  415. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +154 -130
  416. data/example_files/resources/hpxml-measures/tasks.rb +1287 -511
  417. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
  418. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
  419. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
  420. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
  421. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
  422. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
  423. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
  424. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
  425. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +23 -5
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +1 -1
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +2 -1
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +2 -1
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +2 -1
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +534 -0
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +2 -1
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +1 -1
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +1 -1
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +1 -0
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +1 -1
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +1 -1
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +1 -1
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +1 -1
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +3 -3
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +1 -1
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +1 -1
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +1 -1
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +1 -1
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +1 -1
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +1 -1
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +1 -1
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +1 -1
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +1 -1
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +20 -4
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +27 -18
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +27 -18
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +20 -4
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +20 -4
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +22 -11
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +20 -4
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +22 -12
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +22 -12
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +1 -1
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +2 -3
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +1 -1
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +2 -1
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +1 -1
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +1 -1
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +1 -1
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +1 -1
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +1 -1
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +1 -1
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +14 -2
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +0 -1
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +0 -1
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +1 -1
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +563 -564
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +1 -1
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +1 -4
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +1 -1
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +1 -4
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +1 -1
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +0 -1
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +0 -1
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +0 -1
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +0 -1
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +0 -1
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +1 -1
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +1 -1
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +1 -1
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +0 -1
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +1 -1
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +0 -1
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +1 -0
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +1 -1
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +1 -1
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +1 -1
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +1 -1
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +1 -1
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +1 -1
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +1 -1
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +1 -1
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +1 -1
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +1 -1
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +1 -1
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +1 -1
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +1 -1
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +1 -1
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +1 -1
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +1 -1
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +1 -1
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +1 -1
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +1 -1
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +1 -1
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +1 -1
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +1 -1
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +1 -1
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +1 -1
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +1 -1
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +1 -1
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +1 -1
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +1 -1
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +1 -1
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +1 -1
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +1 -1
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +2 -2
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +1 -1
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +1 -1
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +1 -1
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +1 -1
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +1 -1
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +1 -1
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +1 -1
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +1 -1
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +1 -1
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +1 -1
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +1 -1
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +6 -1
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +1 -1
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +600 -0
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +1 -1
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +1 -1
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +1 -1
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2474 -0
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +1 -1
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +1 -1
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +576 -561
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +1 -1
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +643 -0
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +1 -1
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +1 -1
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +1 -1
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +3 -3
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +1 -1
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +2 -2
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +2 -2
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +1 -1
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +2 -2
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +1 -1
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +1 -1
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +1 -1
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +555 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +561 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +1 -4
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +1 -1
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +1 -1
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +552 -0
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +557 -0
  570. 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} +1 -4
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed.xml} +1 -4
  572. 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} +559 -559
  573. 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} +556 -556
  574. 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-manual-s-oversize-allowances.xml} +559 -556
  575. 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.xml} +556 -559
  576. 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
  577. 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} +568 -569
  578. 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
  579. 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} +1 -4
  580. 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} +546 -546
  581. 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} +546 -546
  582. 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} +1 -7
  583. 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} +1 -4
  584. 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} +1 -4
  585. 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
  586. 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} +552 -552
  587. 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
  588. 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} +546 -546
  589. 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} +559 -559
  590. 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} +559 -559
  591. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +547 -0
  592. 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} +557 -557
  593. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +554 -0
  594. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +559 -0
  595. 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} +561 -562
  596. 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} +558 -559
  597. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +546 -0
  598. 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} +1 -4
  599. 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} +1 -4
  600. 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} +1 -4
  601. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +556 -0
  602. 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
  603. 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
  604. 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
  605. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +559 -559
  606. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +0 -1
  607. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +0 -1
  608. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +1 -2
  609. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +0 -1
  610. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +0 -1
  611. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +0 -1
  612. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +0 -1
  613. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +1 -4
  614. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +1 -1
  615. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +1 -1
  616. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +1 -7
  617. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +0 -1
  618. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +1 -4
  619. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +1 -4
  620. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +1 -1
  621. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +1 -1
  622. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +1 -4
  623. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +1 -1
  624. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +0 -1
  625. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +2 -1
  626. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -1
  627. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
  628. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
  629. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +563 -563
  630. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
  631. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +547 -547
  632. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +1 -1
  633. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +1 -1
  634. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +1 -1
  635. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +1 -1
  636. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +547 -550
  637. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +1 -1
  638. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +1 -1
  639. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +1 -1
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +1 -1
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +0 -1
  642. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +556 -0
  643. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +562 -0
  644. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +561 -562
  645. 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} +567 -561
  646. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +565 -562
  647. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +566 -0
  648. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +566 -0
  649. 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} +570 -564
  650. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +571 -0
  651. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +571 -0
  652. 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} +551 -549
  653. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +565 -0
  654. 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} +551 -548
  655. 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} +564 -558
  656. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +568 -0
  657. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +565 -0
  658. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +569 -0
  659. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +1 -4
  660. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +0 -4
  661. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +1 -4
  662. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +1 -4
  663. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +1 -4
  664. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +0 -4
  665. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +916 -913
  666. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +837 -834
  667. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
  668. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +563 -563
  669. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +1 -1
  670. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +1 -1
  671. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +0 -1
  672. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +0 -1
  673. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +1 -1
  674. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
  675. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
  676. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +1 -1
  677. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +1 -1
  678. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
  679. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +1 -1
  680. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +1 -1
  681. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -1
  682. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +1 -1
  683. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +34 -23
  684. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +1 -1
  685. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +34 -23
  686. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +562 -0
  687. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +516 -0
  688. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +1 -1
  689. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +516 -0
  690. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +576 -0
  691. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +1 -1
  692. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +1 -1
  693. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +0 -1
  694. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -1
  695. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +1 -1
  696. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +1 -1
  697. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +1 -1
  698. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +1 -1
  699. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +1 -1
  700. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +1 -1
  701. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +1 -1
  702. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +2 -1
  703. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +1 -1
  704. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +1 -1
  705. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +1 -0
  706. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +1 -1
  707. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +5 -1
  708. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +9 -1
  709. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +1 -1
  710. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +1 -1
  711. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +563 -0
  712. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +5 -1
  713. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1654 -0
  714. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +1 -1
  715. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +563 -0
  716. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +1 -1
  717. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +1 -1
  718. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +1 -1
  719. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +1 -1
  720. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +1 -1
  721. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +1 -1
  722. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +1 -1
  723. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +1 -1
  724. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
  725. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +0 -1
  726. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +1 -1
  727. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +1 -1
  728. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +1 -1
  729. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +534 -0
  730. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +534 -0
  731. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +0 -1
  732. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +1 -1
  733. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +1 -1
  734. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +1 -1
  735. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +562 -0
  736. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +562 -0
  737. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +1 -1
  738. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +1 -1
  739. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +1 -1
  740. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +1 -1
  741. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +2 -2
  742. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +2 -2
  743. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +4 -4
  744. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +447 -0
  745. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +1 -1
  746. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +1 -1
  747. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +1 -1
  748. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +1 -1
  749. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +1 -1
  750. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +11 -58
  751. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +759 -0
  752. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +758 -0
  753. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +760 -0
  754. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +758 -0
  755. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +562 -0
  756. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +459 -0
  757. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +578 -0
  758. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +1 -4
  759. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +916 -913
  760. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +916 -913
  761. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +2 -7
  762. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +0 -1
  763. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +0 -1
  764. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +916 -913
  765. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +1 -1
  766. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +1 -1
  767. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +562 -0
  768. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +1 -1
  769. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +1 -1
  770. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +1 -1
  771. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +1 -1
  772. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +2 -2
  773. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +1 -1
  774. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +1 -1
  775. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +1 -1
  776. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +573 -0
  777. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +590 -0
  778. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +590 -0
  779. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +562 -0
  780. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +1 -1
  781. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +1 -1
  782. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +464 -0
  783. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +562 -0
  784. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +450 -0
  785. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +1 -4
  786. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +0 -1
  787. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +1 -1
  788. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +1 -1
  789. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +472 -0
  790. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +1 -1
  791. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +6 -1
  792. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +1 -1
  793. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +912 -909
  794. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +1 -1
  795. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +1 -1
  796. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +1 -1
  797. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +12 -2
  798. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +1 -1
  799. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1654 -0
  800. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1654 -0
  801. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
  802. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
  803. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +1 -1
  804. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +1 -1
  805. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +1 -1
  806. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +1 -1
  807. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +1 -1
  808. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +1 -1
  809. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +1 -1
  810. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +1 -4
  811. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +0 -1
  812. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +0 -1
  813. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +1 -4
  814. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +0 -1
  815. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +1 -1
  816. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +1 -1
  817. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +1 -1
  818. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +1 -1
  819. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +1 -1
  820. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +1 -1
  821. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +1 -1
  822. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +1 -1
  823. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +1 -1
  824. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +1 -1
  825. data/example_files/resources/hpxml-measures/workflow/template.osw +4 -1
  826. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
  827. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
  828. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
  829. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
  830. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
  831. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
  832. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
  833. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
  834. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
  835. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
  836. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
  837. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
  838. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
  839. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
  840. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
  841. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
  842. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
  843. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
  844. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
  845. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
  846. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
  847. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
  848. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
  849. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
  850. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
  851. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
  852. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +232 -360
  853. data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
  854. data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
  855. data/lib/uo_cli.rb +187 -44
  856. data/lib/uo_cli/version.rb +17 -7
  857. data/requirements.txt +2 -0
  858. data/uo_cli.gemspec +2 -2
  859. metadata +248 -64
  860. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
  861. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
  862. data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
  863. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
  864. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
  865. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
  866. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
  867. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
  868. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
  869. data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
  870. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
  871. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
@@ -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)
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
@@ -193,7 +210,7 @@ Annual Component Building Loads
193
210
 
194
211
  Component loads represent the estimated contribution of different building components to the annual heating/cooling building loads.
195
212
  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:
213
+ Current component loads disaggregated by Heating/Cooling are listed below.
197
214
 
198
215
  ================================================= =========================================================================================================
199
216
  Type Notes
@@ -220,7 +237,7 @@ Current component loads disaggregated by Heating/Cooling are:
220
237
  Annual Hot Water Uses
221
238
  ~~~~~~~~~~~~~~~~~~~~~
222
239
 
223
- Current annual hot water uses are:
240
+ Current annual hot water uses are listed below.
224
241
 
225
242
  =================================== ====================
226
243
  Type Notes
@@ -231,14 +248,15 @@ Current annual hot water uses are:
231
248
  Hot Water: Distribution Waste (gal)
232
249
  =================================== ====================
233
250
 
251
+ .. _timeseries_outputs:
234
252
 
235
253
  Timeseries Outputs
236
254
  ------------------
237
255
 
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.
256
+ OpenStudio-HPXML can optionally generate a timeseries output file.
257
+ The timeseries output file is called results_timeseries.csv (or results_timeseries.json) and co-located with the EnergyPlus output.
240
258
 
241
- Depending on the outputs requested, CSV files may include:
259
+ Depending on the outputs requested, the file may include:
242
260
 
243
261
  =================================== ==================================================================================================================================
244
262
  Type Notes
@@ -248,7 +266,13 @@ Depending on the outputs requested, CSV files may include:
248
266
  Hot Water Uses Water use for each end use type (in gallons).
249
267
  Total Loads Heating, cooling, and hot water loads (in kBtu) for the building.
250
268
  Component Loads Heating and cooling loads (in kBtu) disaggregated by component (e.g., Walls, Windows, Infiltration, Ducts, etc.).
269
+ Unmet Loads Unmet heating and cooling loads (in kBtu) for the building.
251
270
  Zone Temperatures Average temperatures (in deg-F) for each space modeled (e.g., living space, attic, garage, basement, crawlspace, etc.).
252
271
  Airflows Airflow rates (in cfm) for infiltration, mechanical ventilation (including clothes dryer exhaust), natural ventilation, whole house fans.
253
272
  Weather Weather file data including outdoor temperatures, relative humidity, wind speed, and solar.
254
273
  =================================== ==================================================================================================================================
274
+
275
+ 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).
276
+
277
+ Timestamps in the output use the end-of-hour (or end-of-day for daily frequency, etc.) convention.
278
+ Most outputs will be summed over the hour (e.g., energy) but some will be averaged over the hour (e.g., temperatures, airflows).
@@ -17,6 +17,7 @@ def create_osws
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
19
  'base-appliances-dehumidifier-50percent.osw' => 'base-appliances-dehumidifier.osw',
20
+ # 'base-appliances-dehumidifier-multiple.osw' => 'base-appliances-dehumidifier-50percent.osw',
20
21
  'base-appliances-gas.osw' => 'base.osw',
21
22
  'base-appliances-modified.osw' => 'base.osw',
22
23
  'base-appliances-none.osw' => 'base.osw',
@@ -29,20 +30,37 @@ def create_osws
29
30
  'base-atticroof-radiant-barrier.osw' => 'base-location-dallas-tx.osw',
30
31
  'base-atticroof-unvented-insulated-roof.osw' => 'base.osw',
31
32
  'base-atticroof-vented.osw' => 'base.osw',
33
+ 'base-bldgtype-single-family-attached.osw' => 'base.osw',
32
34
  'base-bldgtype-multifamily.osw' => 'base.osw',
33
35
  # 'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
34
36
  # 'base-bldgtype-multifamily-adjacent-to-multiple.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
35
37
  # 'base-bldgtype-multifamily-adjacent-to-non-freezing-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
36
38
  # 'base-bldgtype-multifamily-adjacent-to-other-heated-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
37
39
  # '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
40
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw' => 'base-bldgtype-multifamily.osw',
41
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw',
42
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.osw',
43
+ # 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.osw',
44
+ # 'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.osw',
45
+ # 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw' => 'base-bldgtype-multifamily.osw',
46
+ # 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw',
47
+ # 'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw',
48
+ # 'base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.osw' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw',
49
+ # 'base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.osw',
50
+ # 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw' => 'base-bldgtype-multifamily.osw',
51
+ # 'base-bldgtype-multifamily-shared-chiller-only-fan-coil.osw' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw',
52
+ # 'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.osw' => 'base-bldgtype-multifamily-shared-chiller-only-fan-coil.osw',
53
+ # 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.osw',
54
+ # 'base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.osw' => 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.osw',
55
+ # 'base-bldgtype-multifamily-shared-generator.osw' => 'base-bldgtype-multifamily.osw',
56
+ # 'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.osw' => 'base-bldgtype-multifamily.osw',
57
+ # 'base-bldgtype-multifamily-shared-laundry-room.osw' => 'base-bldgtype-multifamily.osw', # Not going to support shared laundry room
39
58
  'base-bldgtype-multifamily-shared-mechvent.osw' => 'base-bldgtype-multifamily.osw',
40
59
  # 'base-bldgtype-multifamily-shared-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
41
60
  'base-bldgtype-multifamily-shared-mechvent-preconditioning.osw' => 'base-bldgtype-multifamily-shared-mechvent.osw',
42
61
  'base-bldgtype-multifamily-shared-pv.osw' => 'base-bldgtype-multifamily.osw',
43
62
  'base-bldgtype-multifamily-shared-water-heater.osw' => 'base-bldgtype-multifamily.osw',
44
63
  # '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
64
  'base-dhw-combi-tankless.osw' => 'base-dhw-indirect.osw',
47
65
  'base-dhw-combi-tankless-outside.osw' => 'base-dhw-combi-tankless.osw',
48
66
  # 'base-dhw-desuperheater.osw' => 'base.osw', # Not supporting desuperheater for now
@@ -96,7 +114,7 @@ def create_osws
96
114
  'base-dhw-tank-oil.osw' => 'base.osw',
97
115
  'base-dhw-tank-wood.osw' => 'base.osw',
98
116
  'base-enclosure-2stories.osw' => 'base.osw',
99
- 'base-enclosure-2stories-garage.osw' => 'base.osw',
117
+ 'base-enclosure-2stories-garage.osw' => 'base-enclosure-2stories.osw',
100
118
  'base-enclosure-beds-1.osw' => 'base.osw',
101
119
  'base-enclosure-beds-2.osw' => 'base.osw',
102
120
  'base-enclosure-beds-4.osw' => 'base.osw',
@@ -110,11 +128,14 @@ def create_osws
110
128
  'base-enclosure-overhangs.osw' => 'base.osw',
111
129
  # 'base-enclosure-rooftypes.osw' => 'base.osw',
112
130
  # 'base-enclosure-skylights.osw' => 'base.osw', # There are no front roof surfaces, but 15.0 ft^2 of skylights were specified.
131
+ # 'base-enclosure-skylights-shading.osw' => 'base-enclosure-skylights.osw", # Not going to support interior/exterior shading by facade
113
132
  # 'base-enclosure-split-surfaces.osw' => 'base.osw',
133
+ # 'base-enclosure-split-surfaces2.osw' => 'base.osw',
114
134
  # 'base-enclosure-walltypes.osw' => 'base.osw',
115
- # 'base-enclosure-windows-interior-shading.osw' => 'base.osw', # Not going to support interior shading by facade
135
+ # 'base-enclosure-windows-shading.osw' => 'base.osw', # Not going to support interior/exterior shading by facade
116
136
  'base-enclosure-windows-none.osw' => 'base.osw',
117
137
  'base-foundation-ambient.osw' => 'base.osw',
138
+ # 'base-foundation-basement-garage.osw' => 'base.osw',
118
139
  # 'base-foundation-complex.osw' => 'base.osw', # Not going to support multiple foundation types
119
140
  'base-foundation-conditioned-basement-slab-insulation.osw' => 'base.osw',
120
141
  # 'base-foundation-conditioned-basement-wall-interior-insulation.osw' => 'base.osw',
@@ -128,6 +149,8 @@ def create_osws
128
149
  'base-foundation-vented-crawlspace.osw' => 'base.osw',
129
150
  # 'base-foundation-walkout-basement.osw' => 'base.osw', # 1 kiva object instead of 4
130
151
  'base-hvac-air-to-air-heat-pump-1-speed.osw' => 'base.osw',
152
+ 'base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
153
+ 'base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
131
154
  'base-hvac-air-to-air-heat-pump-2-speed.osw' => 'base.osw',
132
155
  'base-hvac-air-to-air-heat-pump-var-speed.osw' => 'base.osw',
133
156
  'base-hvac-boiler-coal-only.osw' => 'base.osw',
@@ -155,6 +178,7 @@ def create_osws
155
178
  'base-hvac-fireplace-wood-only.osw' => 'base.osw',
156
179
  'base-hvac-fixed-heater-gas-only.osw' => 'base.osw',
157
180
  'base-hvac-floor-furnace-propane-only.osw' => 'base.osw',
181
+ 'base-hvac-furnace-coal-only.osw' => 'base.osw',
158
182
  'base-hvac-furnace-elec-central-ac-1-speed.osw' => 'base.osw',
159
183
  'base-hvac-furnace-elec-only.osw' => 'base.osw',
160
184
  'base-hvac-furnace-gas-central-ac-2-speed.osw' => 'base.osw',
@@ -166,7 +190,23 @@ def create_osws
166
190
  'base-hvac-furnace-wood-only.osw' => 'base.osw',
167
191
  # 'base-hvac-furnace-x3-dse.osw' => 'base.osw', # Not going to support DSE
168
192
  'base-hvac-ground-to-air-heat-pump.osw' => 'base.osw',
193
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
194
+ 'base-hvac-ground-to-air-heat-pump-heating-only.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
169
195
  # 'base-hvac-ideal-air.osw' => 'base.osw',
196
+ 'base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
197
+ 'base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
198
+ 'base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
199
+ # 'base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
200
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
201
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw' => 'base-hvac-air-to-air-heat-pump-2-speed.osw',
202
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw' => 'base-hvac-air-to-air-heat-pump-var-speed.osw',
203
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw' => 'base.osw',
204
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw' => 'base-hvac-furnace-gas-central-ac-2-speed.osw',
205
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw' => 'base-hvac-furnace-gas-central-ac-var-speed.osw',
206
+ 'base-hvac-install-quality-all-furnace-gas-only.osw' => 'base-hvac-furnace-gas-only.osw',
207
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
208
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
209
+ 'base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw' => 'base-hvac-mini-split-air-conditioner-only-ducted.osw',
170
210
  'base-hvac-mini-split-air-conditioner-only-ducted.osw' => 'base.osw',
171
211
  'base-hvac-mini-split-air-conditioner-only-ductless.osw' => 'base-hvac-mini-split-air-conditioner-only-ducted.osw',
172
212
  'base-hvac-mini-split-heat-pump-ducted.osw' => 'base.osw',
@@ -178,7 +218,7 @@ def create_osws
178
218
  'base-hvac-none.osw' => 'base.osw',
179
219
  'base-hvac-portable-heater-gas-only.osw' => 'base.osw',
180
220
  # 'base-hvac-programmable-thermostat.osw' => 'base.osw',
181
- # 'base-hvac-programmable-thermostat-detailed.osw' => 'base.osw',
221
+ 'base-hvac-programmable-thermostat-detailed.osw' => 'base.osw',
182
222
  'base-hvac-room-ac-only.osw' => 'base.osw',
183
223
  'base-hvac-room-ac-only-33percent.osw' => 'base.osw',
184
224
  'base-hvac-setpoints.osw' => 'base.osw',
@@ -191,10 +231,14 @@ def create_osws
191
231
  'base-lighting-detailed.osw' => 'base.osw',
192
232
  # 'base-lighting-none.osw' => 'base.osw',
193
233
  'base-location-AMY-2012.osw' => 'base.osw',
194
- 'base-location-baltimore-md.osw' => 'base.osw',
234
+ 'base-location-baltimore-md.osw' => 'base-foundation-unvented-crawlspace.osw',
195
235
  'base-location-dallas-tx.osw' => 'base-foundation-slab.osw',
196
- 'base-location-duluth-mn.osw' => 'base.osw',
236
+ 'base-location-duluth-mn.osw' => 'base-foundation-unconditioned-basement.osw',
237
+ 'base-location-helena-mt.osw' => 'base.osw',
238
+ 'base-location-honolulu-hi.osw' => 'base-foundation-slab.osw',
197
239
  'base-location-miami-fl.osw' => 'base-foundation-slab.osw',
240
+ 'base-location-phoenix-az.osw' => 'base-foundation-slab.osw',
241
+ 'base-location-portland-or.osw' => 'base-foundation-vented-crawlspace.osw',
198
242
  'base-mechvent-balanced.osw' => 'base.osw',
199
243
  'base-mechvent-bath-kitchen-fans.osw' => 'base.osw',
200
244
  'base-mechvent-cfis.osw' => 'base.osw',
@@ -203,17 +247,21 @@ def create_osws
203
247
  'base-mechvent-erv.osw' => 'base.osw',
204
248
  'base-mechvent-erv-atre-asre.osw' => 'base.osw',
205
249
  'base-mechvent-exhaust.osw' => 'base.osw',
250
+ 'base-mechvent-exhaust-rated-flow-rate.osw' => 'base.osw',
206
251
  'base-mechvent-hrv.osw' => 'base.osw',
207
252
  'base-mechvent-hrv-asre.osw' => 'base.osw',
208
253
  # 'base-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
209
254
  'base-mechvent-supply.osw' => 'base.osw',
210
255
  'base-mechvent-whole-house-fan.osw' => 'base.osw',
211
256
  'base-misc-defaults.osw' => 'base.osw',
257
+ # 'base-misc-generators.osw' => 'base.osw',
212
258
  'base-misc-loads-large-uncommon.osw' => 'base.osw',
213
259
  'base-misc-loads-large-uncommon2.osw' => 'base-misc-loads-large-uncommon.osw',
214
260
  # 'base-misc-loads-none.osw' => 'base.osw',
215
261
  'base-misc-neighbor-shading.osw' => 'base.osw',
262
+ 'base-misc-shielding-of-home.osw' => 'base.osw',
216
263
  'base-misc-usage-multiplier.osw' => 'base.osw',
264
+ # 'base-multiple-buildings.osw' => 'base.osw',
217
265
  'base-pv.osw' => 'base.osw',
218
266
  'base-simcontrol-calendar-year-custom.osw' => 'base.osw',
219
267
  'base-simcontrol-daylight-saving-custom.osw' => 'base.osw',
@@ -221,6 +269,7 @@ def create_osws
221
269
  'base-simcontrol-runperiod-1-month.osw' => 'base.osw',
222
270
  'base-simcontrol-timestep-10-mins.osw' => 'base.osw',
223
271
  'base-schedules-stochastic.osw' => 'base.osw',
272
+ 'base-schedules-stochastic-vacant.osw' => 'base-schedules-stochastic.osw',
224
273
  'base-schedules-user-specified.osw' => 'base.osw',
225
274
 
226
275
  # Extra test files that don't correspond with sample files
@@ -228,13 +277,112 @@ def create_osws
228
277
  'extra-pv-roofpitch.osw' => 'base.osw',
229
278
  'extra-dhw-solar-latitude.osw' => 'base.osw',
230
279
  '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',
280
+ 'extra-second-heating-system-portable-heater-to-heating-system.osw' => 'base.osw',
281
+ 'extra-second-heating-system-fireplace-to-heating-system.osw' => 'base-hvac-elec-resistance-only.osw',
282
+ 'extra-second-heating-system-boiler-to-heating-system.osw' => 'base-hvac-boiler-gas-central-ac-1-speed.osw',
283
+ 'extra-second-heating-system-portable-heater-to-heat-pump.osw' => 'base-hvac-air-to-air-heat-pump-1-speed.osw',
284
+ 'extra-second-heating-system-fireplace-to-heat-pump.osw' => 'base-hvac-mini-split-heat-pump-ducted.osw',
285
+ 'extra-second-heating-system-boiler-to-heat-pump.osw' => 'base-hvac-ground-to-air-heat-pump.osw',
286
+ 'extra-enclosure-windows-shading.osw' => 'base.osw',
233
287
  'extra-enclosure-garage-partially-protruded.osw' => 'base.osw',
234
- 'extra-vacancy-6-months.osw' => 'base-schedules-stochastic.osw',
288
+ 'extra-enclosure-garage-atticroof-conditioned.osw' => 'base-enclosure-garage.osw',
289
+ 'extra-enclosure-atticroof-conditioned-eaves-gable.osw' => 'base-foundation-slab.osw',
290
+ 'extra-enclosure-atticroof-conditioned-eaves-hip.osw' => 'extra-enclosure-atticroof-conditioned-eaves-gable.osw',
235
291
  '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',
292
+ 'extra-zero-refrigerator-kwh.osw' => 'base.osw',
293
+ 'extra-zero-extra-refrigerator-kwh.osw' => 'base.osw',
294
+ 'extra-zero-freezer-kwh.osw' => 'base.osw',
295
+ 'extra-zero-clothes-washer-kwh.osw' => 'base.osw',
296
+ 'extra-zero-dishwasher-kwh.osw' => 'base.osw',
297
+
298
+ 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
299
+ 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw' => 'extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw',
300
+ 'extra-bldgtype-multifamily-eaves.osw' => 'extra-bldgtype-multifamily-slab.osw',
301
+
302
+ 'extra-bldgtype-single-family-attached-slab.osw' => 'base-bldgtype-single-family-attached.osw',
303
+ 'extra-bldgtype-single-family-attached-vented-crawlspace.osw' => 'base-bldgtype-single-family-attached.osw',
304
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw' => 'base-bldgtype-single-family-attached.osw',
305
+ 'extra-bldgtype-single-family-attached-unconditioned-basement.osw' => 'base-bldgtype-single-family-attached.osw',
306
+
307
+ 'extra-bldgtype-single-family-attached-double-loaded-interior.osw' => 'base-bldgtype-single-family-attached.osw',
308
+ 'extra-bldgtype-single-family-attached-single-exterior-front.osw' => 'base-bldgtype-single-family-attached.osw',
309
+ 'extra-bldgtype-single-family-attached-double-exterior.osw' => 'base-bldgtype-single-family-attached.osw',
310
+
311
+ 'extra-bldgtype-single-family-attached-slab-middle.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
312
+ 'extra-bldgtype-single-family-attached-slab-right.osw' => 'extra-bldgtype-single-family-attached-slab.osw',
313
+ 'extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw' => 'extra-bldgtype-single-family-attached-vented-crawlspace.osw',
314
+ 'extra-bldgtype-single-family-attached-vented-crawlspace-right.osw' => 'extra-bldgtype-single-family-attached-vented-crawlspace.osw',
315
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw' => 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw',
316
+ 'extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw' => 'extra-bldgtype-single-family-attached-unvented-crawlspace.osw',
317
+ 'extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw' => 'extra-bldgtype-single-family-attached-unconditioned-basement.osw',
318
+ 'extra-bldgtype-single-family-attached-unconditioned-basement-right.osw' => 'extra-bldgtype-single-family-attached-unconditioned-basement.osw',
319
+
320
+ 'extra-bldgtype-multifamily-slab.osw' => 'base-bldgtype-multifamily.osw',
321
+ 'extra-bldgtype-multifamily-vented-crawlspace.osw' => 'base-bldgtype-multifamily.osw',
322
+ 'extra-bldgtype-multifamily-unvented-crawlspace.osw' => 'base-bldgtype-multifamily.osw',
323
+
324
+ 'extra-bldgtype-multifamily-double-loaded-interior.osw' => 'base-bldgtype-multifamily.osw',
325
+ 'extra-bldgtype-multifamily-single-exterior-front.osw' => 'base-bldgtype-multifamily.osw',
326
+ 'extra-bldgtype-multifamily-double-exterior.osw' => 'base-bldgtype-multifamily.osw',
327
+
328
+ 'extra-bldgtype-multifamily-slab-left-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
329
+ 'extra-bldgtype-multifamily-slab-left-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
330
+ 'extra-bldgtype-multifamily-slab-left-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
331
+ 'extra-bldgtype-multifamily-slab-middle-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
332
+ 'extra-bldgtype-multifamily-slab-middle-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
333
+ 'extra-bldgtype-multifamily-slab-middle-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
334
+ 'extra-bldgtype-multifamily-slab-right-bottom.osw' => 'extra-bldgtype-multifamily-slab.osw',
335
+ 'extra-bldgtype-multifamily-slab-right-middle.osw' => 'extra-bldgtype-multifamily-slab.osw',
336
+ 'extra-bldgtype-multifamily-slab-right-top.osw' => 'extra-bldgtype-multifamily-slab.osw',
337
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
338
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
339
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
340
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
341
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
342
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
343
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
344
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
345
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-top.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
346
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
347
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
348
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
349
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
350
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
351
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
352
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
353
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
354
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
355
+
356
+ 'extra-bldgtype-multifamily-slab-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab.osw',
357
+ 'extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace.osw',
358
+ 'extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace.osw',
359
+ 'extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-bottom.osw',
360
+ 'extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-middle.osw',
361
+ 'extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-left-top.osw',
362
+ 'extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-bottom.osw',
363
+ 'extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-middle.osw',
364
+ 'extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-middle-top.osw',
365
+ 'extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-bottom.osw',
366
+ 'extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-middle.osw',
367
+ 'extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-slab-right-top.osw',
368
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw',
369
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw',
370
+ 'extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-left-top.osw',
371
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw',
372
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw',
373
+ 'extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw',
374
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw',
375
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw',
376
+ 'extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-vented-crawlspace-right-top.osw',
377
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw',
378
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw',
379
+ 'extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw',
380
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw',
381
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw',
382
+ 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw',
383
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw',
384
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw',
385
+ 'extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw' => 'extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw',
238
386
 
239
387
  'invalid_files/non-electric-heat-pump-water-heater.osw' => 'base.osw',
240
388
  'invalid_files/heating-system-and-heat-pump.osw' => 'base.osw',
@@ -249,6 +397,8 @@ def create_osws
249
397
  'invalid_files/slab-non-zero-foundation-height-above-grade.osw' => 'base.osw',
250
398
  'invalid_files/ducts-location-and-areas-not-same-type.osw' => 'base.osw',
251
399
  'invalid_files/second-heating-system-serves-majority-heat.osw' => 'base.osw',
400
+ 'invalid_files/second-heating-system-serves-total-heat-load.osw' => 'base.osw',
401
+ 'invalid_files/second-heating-system-but-no-primary-heating.osw' => 'base.osw',
252
402
  'invalid_files/single-family-attached-no-building-orientation.osw' => 'base-bldgtype-single-family-attached.osw',
253
403
  'invalid_files/multifamily-no-building-orientation.osw' => 'base-bldgtype-multifamily.osw',
254
404
  'invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'base.osw',
@@ -259,8 +409,14 @@ def create_osws
259
409
  'invalid_files/conditioned-basement-with-ceiling-insulation.osw' => 'base.osw',
260
410
  'invalid_files/conditioned-attic-with-floor-insulation.osw' => 'base.osw',
261
411
  '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'
412
+ 'invalid_files/multipliers-without-tv-plug-loads.osw' => 'base.osw',
413
+ 'invalid_files/multipliers-without-other-plug-loads.osw' => 'base.osw',
414
+ 'invalid_files/multipliers-without-well-pump-plug-loads.osw' => 'base.osw',
415
+ 'invalid_files/multipliers-without-vehicle-plug-loads.osw' => 'base.osw',
416
+ 'invalid_files/multipliers-without-fuel-loads.osw' => 'base.osw',
417
+ 'invalid_files/foundation-wall-insulation-greater-than-height.osw' => 'base-foundation-vented-crawlspace.osw',
418
+ 'invalid_files/conditioned-attic-with-one-floor-above-grade.osw' => 'base.osw',
419
+ 'invalid_files/zero-number-of-bedrooms.osw' => 'base.osw'
264
420
  }
265
421
 
266
422
  puts "Generating #{osws_files.size} OSW files..."
@@ -359,6 +515,7 @@ def get_values(osw_file, step)
359
515
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementConditioned)
360
516
  step.setArgument('geometry_foundation_height', 8.0)
361
517
  step.setArgument('geometry_foundation_height_above_grade', 1.0)
518
+ step.setArgument('geometry_rim_joist_height', 9.25)
362
519
  step.setArgument('geometry_roof_type', 'gable')
363
520
  step.setArgument('geometry_roof_pitch', '6:12')
364
521
  step.setArgument('geometry_attic_type', HPXML::AtticTypeUnvented)
@@ -366,11 +523,13 @@ def get_values(osw_file, step)
366
523
  step.setArgument('geometry_num_bedrooms', 3)
367
524
  step.setArgument('geometry_num_bathrooms', '2')
368
525
  step.setArgument('geometry_num_occupants', '3')
526
+ step.setArgument('geometry_has_flue_or_chimney', Constants.Auto)
369
527
  step.setArgument('floor_assembly_r', 0)
370
528
  step.setArgument('foundation_wall_insulation_r', 8.9)
371
529
  step.setArgument('foundation_wall_insulation_distance_to_top', 0.0)
372
- step.setArgument('foundation_wall_insulation_distance_to_bottom', 8.0)
530
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', Constants.Auto)
373
531
  step.setArgument('foundation_wall_thickness', '8.0')
532
+ step.setArgument('rim_joist_assembly_r', 23.0)
374
533
  step.setArgument('slab_perimeter_insulation_r', 0)
375
534
  step.setArgument('slab_perimeter_depth', 0)
376
535
  step.setArgument('slab_under_insulation_r', 0)
@@ -380,11 +539,9 @@ def get_values(osw_file, step)
380
539
  step.setArgument('slab_carpet_r', '0.0')
381
540
  step.setArgument('ceiling_assembly_r', 39.3)
382
541
  step.setArgument('roof_material_type', HPXML::RoofTypeAsphaltShingles)
383
- step.setArgument('roof_color', Constants.Auto)
542
+ step.setArgument('roof_color', HPXML::ColorMedium)
384
543
  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')
544
+ step.setArgument('roof_radiant_barrier', false)
388
545
  step.setArgument('roof_radiant_barrier_grade', '1')
389
546
  step.setArgument('neighbor_front_distance', 0)
390
547
  step.setArgument('neighbor_back_distance', 0)
@@ -396,10 +553,8 @@ def get_values(osw_file, step)
396
553
  step.setArgument('neighbor_right_height', Constants.Auto)
397
554
  step.setArgument('wall_type', HPXML::WallTypeWoodStud)
398
555
  step.setArgument('wall_siding_type', HPXML::SidingTypeWood)
399
- step.setArgument('wall_color', Constants.Auto)
556
+ step.setArgument('wall_color', HPXML::ColorMedium)
400
557
  step.setArgument('wall_assembly_r', 23)
401
- step.setArgument('wall_solar_absorptance', Constants.Auto)
402
- step.setArgument('wall_emittance', '0.92')
403
558
  step.setArgument('window_front_wwr', 0)
404
559
  step.setArgument('window_back_wwr', 0)
405
560
  step.setArgument('window_left_wwr', 0)
@@ -433,40 +588,39 @@ def get_values(osw_file, step)
433
588
  step.setArgument('air_leakage_units', HPXML::UnitsACH)
434
589
  step.setArgument('air_leakage_house_pressure', 50)
435
590
  step.setArgument('air_leakage_value', 3)
436
- step.setArgument('air_leakage_shelter_coefficient', Constants.Auto)
591
+ step.setArgument('air_leakage_shielding_of_home', Constants.Auto)
437
592
  step.setArgument('heating_system_type', HPXML::HVACTypeFurnace)
438
593
  step.setArgument('heating_system_fuel', HPXML::FuelTypeNaturalGas)
439
594
  step.setArgument('heating_system_heating_efficiency', 0.92)
440
595
  step.setArgument('heating_system_heating_capacity', '64000.0')
441
596
  step.setArgument('heating_system_fraction_heat_load_served', 1)
442
- step.setArgument('heating_system_has_flue_or_chimney', false)
443
597
  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)
598
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsSEER)
599
+ step.setArgument('cooling_system_cooling_efficiency', 13.0)
446
600
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeSingleStage)
447
601
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.73)
448
602
  step.setArgument('cooling_system_cooling_capacity', '48000.0')
449
603
  step.setArgument('cooling_system_fraction_cool_load_served', 1)
450
604
  step.setArgument('cooling_system_is_ducted', false)
451
605
  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)
606
+ step.setArgument('heat_pump_heating_efficiency_type', HPXML::UnitsHSPF)
607
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
608
+ step.setArgument('heat_pump_cooling_efficiency_type', HPXML::UnitsSEER)
609
+ step.setArgument('heat_pump_cooling_efficiency', 13.0)
456
610
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeSingleStage)
457
611
  step.setArgument('heat_pump_cooling_sensible_heat_fraction', 0.73)
458
612
  step.setArgument('heat_pump_heating_capacity', '64000.0')
459
- step.setArgument('heat_pump_heating_capacity_17F', Constants.Auto)
613
+ step.setArgument('heat_pump_heating_capacity_17_f', Constants.Auto)
460
614
  step.setArgument('heat_pump_cooling_capacity', '48000.0')
461
615
  step.setArgument('heat_pump_fraction_heat_load_served', 1)
462
616
  step.setArgument('heat_pump_fraction_cool_load_served', 1)
463
617
  step.setArgument('heat_pump_backup_fuel', 'none')
464
618
  step.setArgument('heat_pump_backup_heating_efficiency', 1)
465
619
  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)
620
+ step.setArgument('setpoint_heating_weekday', '68')
621
+ step.setArgument('setpoint_heating_weekend', '68')
622
+ step.setArgument('setpoint_cooling_weekday', '78')
623
+ step.setArgument('setpoint_cooling_weekend', '78')
470
624
  step.setArgument('ducts_supply_leakage_units', HPXML::UnitsCFM25)
471
625
  step.setArgument('ducts_return_leakage_units', HPXML::UnitsCFM25)
472
626
  step.setArgument('ducts_supply_leakage_value', 75.0)
@@ -477,32 +631,29 @@ def get_values(osw_file, step)
477
631
  step.setArgument('ducts_return_location', HPXML::LocationAtticUnvented)
478
632
  step.setArgument('ducts_supply_surface_area', '150.0')
479
633
  step.setArgument('ducts_return_surface_area', '50.0')
480
- step.setArgument('ducts_number_of_return_registers', Constants.Auto)
634
+ step.setArgument('ducts_number_of_return_registers', '2')
481
635
  step.setArgument('heating_system_type_2', 'none')
482
636
  step.setArgument('heating_system_fuel_2', HPXML::FuelTypeElectricity)
483
637
  step.setArgument('heating_system_heating_efficiency_2', 1.0)
484
638
  step.setArgument('heating_system_heating_capacity_2', Constants.Auto)
485
639
  step.setArgument('heating_system_fraction_heat_load_served_2', 0.25)
486
- step.setArgument('heating_system_has_flue_or_chimney_2', false)
487
640
  step.setArgument('mech_vent_fan_type', 'none')
488
641
  step.setArgument('mech_vent_flow_rate', 110)
489
642
  step.setArgument('mech_vent_hours_in_operation', 24)
490
- step.setArgument('mech_vent_total_recovery_efficiency_type', 'Unadjusted')
643
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Unadjusted')
491
644
  step.setArgument('mech_vent_total_recovery_efficiency', 0.48)
492
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Unadjusted')
493
645
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.72)
494
646
  step.setArgument('mech_vent_fan_power', 30)
495
647
  step.setArgument('mech_vent_num_units_served', 1)
496
648
  step.setArgument('mech_vent_fan_type_2', 'none')
497
649
  step.setArgument('mech_vent_flow_rate_2', 110)
498
650
  step.setArgument('mech_vent_hours_in_operation_2', 24)
499
- step.setArgument('mech_vent_total_recovery_efficiency_type_2', 'Unadjusted')
651
+ step.setArgument('mech_vent_recovery_efficiency_type_2', 'Unadjusted')
500
652
  step.setArgument('mech_vent_total_recovery_efficiency_2', 0.48)
501
- step.setArgument('mech_vent_sensible_recovery_efficiency_type_2', 'Unadjusted')
502
653
  step.setArgument('mech_vent_sensible_recovery_efficiency_2', 0.72)
503
654
  step.setArgument('mech_vent_fan_power_2', 30)
504
- step.setArgument('kitchen_fans_present', false)
505
- step.setArgument('bathroom_fans_present', false)
655
+ step.setArgument('kitchen_fans_quantity', '0')
656
+ step.setArgument('bathroom_fans_quantity', '0')
506
657
  step.setArgument('whole_house_fan_present', false)
507
658
  step.setArgument('whole_house_fan_flow_rate', 4500)
508
659
  step.setArgument('whole_house_fan_power', 300)
@@ -510,14 +661,12 @@ def get_values(osw_file, step)
510
661
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeElectricity)
511
662
  step.setArgument('water_heater_location', HPXML::LocationLivingSpace)
512
663
  step.setArgument('water_heater_tank_volume', '40')
513
- step.setArgument('water_heater_heating_capacity', '18767')
514
664
  step.setArgument('water_heater_efficiency_type', 'EnergyFactor')
515
665
  step.setArgument('water_heater_efficiency', 0.95)
516
666
  step.setArgument('water_heater_recovery_efficiency', '0.76')
517
667
  step.setArgument('water_heater_standby_loss', 0)
518
668
  step.setArgument('water_heater_jacket_rvalue', 0)
519
669
  step.setArgument('water_heater_setpoint_temperature', '125')
520
- step.setArgument('water_heater_has_flue_or_chimney', false)
521
670
  step.setArgument('water_heater_num_units_served', 1)
522
671
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeStandard)
523
672
  step.setArgument('dhw_distribution_standard_piping_length', '50')
@@ -578,19 +727,15 @@ def get_values(osw_file, step)
578
727
  step.setArgument('holiday_lighting_period_begin_day_of_month', Constants.Auto)
579
728
  step.setArgument('holiday_lighting_period_end_month', Constants.Auto)
580
729
  step.setArgument('holiday_lighting_period_end_day_of_month', Constants.Auto)
581
- step.setArgument('dehumidifier_present', false)
582
- step.setArgument('dehumidifier_type', HPXML::DehumidifierTypePortable)
730
+ step.setArgument('dehumidifier_type', 'none')
583
731
  step.setArgument('dehumidifier_efficiency_type', 'EnergyFactor')
584
- step.setArgument('dehumidifier_efficiency_ef', 1.8)
585
- step.setArgument('dehumidifier_efficiency_ief', 1.5)
732
+ step.setArgument('dehumidifier_efficiency', 1.8)
586
733
  step.setArgument('dehumidifier_capacity', 40)
587
734
  step.setArgument('dehumidifier_rh_setpoint', 0.5)
588
735
  step.setArgument('dehumidifier_fraction_dehumidification_load_served', 1)
589
- step.setArgument('clothes_washer_present', true)
590
736
  step.setArgument('clothes_washer_location', HPXML::LocationLivingSpace)
591
737
  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')
738
+ step.setArgument('clothes_washer_efficiency', '1.21')
594
739
  step.setArgument('clothes_washer_rated_annual_kwh', '380.0')
595
740
  step.setArgument('clothes_washer_label_electric_rate', '0.12')
596
741
  step.setArgument('clothes_washer_label_gas_rate', '1.09')
@@ -598,39 +743,30 @@ def get_values(osw_file, step)
598
743
  step.setArgument('clothes_washer_label_usage', '6.0')
599
744
  step.setArgument('clothes_washer_capacity', '3.2')
600
745
  step.setArgument('clothes_washer_usage_multiplier', 1.0)
601
- step.setArgument('clothes_dryer_present', true)
602
746
  step.setArgument('clothes_dryer_location', HPXML::LocationLivingSpace)
603
747
  step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeElectricity)
604
748
  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)
749
+ step.setArgument('clothes_dryer_efficiency', '3.73')
608
750
  step.setArgument('clothes_dryer_vented_flow_rate', '150.0')
609
751
  step.setArgument('clothes_dryer_usage_multiplier', 1.0)
610
- step.setArgument('dishwasher_present', true)
611
752
  step.setArgument('dishwasher_location', HPXML::LocationLivingSpace)
612
753
  step.setArgument('dishwasher_efficiency_type', 'RatedAnnualkWh')
613
- step.setArgument('dishwasher_efficiency_kwh', '307')
614
- step.setArgument('dishwasher_efficiency_ef', 0.46)
754
+ step.setArgument('dishwasher_efficiency', '307')
615
755
  step.setArgument('dishwasher_label_electric_rate', '0.12')
616
756
  step.setArgument('dishwasher_label_gas_rate', '1.09')
617
757
  step.setArgument('dishwasher_label_annual_gas_cost', '22.32')
618
758
  step.setArgument('dishwasher_label_usage', '4.0')
619
759
  step.setArgument('dishwasher_place_setting_capacity', '12')
620
760
  step.setArgument('dishwasher_usage_multiplier', 1.0)
621
- step.setArgument('refrigerator_present', true)
622
761
  step.setArgument('refrigerator_location', HPXML::LocationLivingSpace)
623
762
  step.setArgument('refrigerator_rated_annual_kwh', '650.0')
624
763
  step.setArgument('refrigerator_usage_multiplier', 1.0)
625
- step.setArgument('extra_refrigerator_present', false)
626
- step.setArgument('extra_refrigerator_location', Constants.Auto)
764
+ step.setArgument('extra_refrigerator_location', 'none')
627
765
  step.setArgument('extra_refrigerator_rated_annual_kwh', Constants.Auto)
628
766
  step.setArgument('extra_refrigerator_usage_multiplier', 1.0)
629
- step.setArgument('freezer_present', false)
630
- step.setArgument('freezer_location', Constants.Auto)
767
+ step.setArgument('freezer_location', 'none')
631
768
  step.setArgument('freezer_rated_annual_kwh', Constants.Auto)
632
769
  step.setArgument('freezer_usage_multiplier', 1.0)
633
- step.setArgument('cooking_range_oven_present', true)
634
770
  step.setArgument('cooking_range_oven_location', HPXML::LocationLivingSpace)
635
771
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeElectricity)
636
772
  step.setArgument('cooking_range_oven_is_induction', false)
@@ -642,20 +778,16 @@ def get_values(osw_file, step)
642
778
  step.setArgument('ceiling_fan_cooling_setpoint_temp_offset', 0)
643
779
  step.setArgument('plug_loads_television_annual_kwh', '620.0')
644
780
  step.setArgument('plug_loads_television_usage_multiplier', 1.0)
645
- step.setArgument('plug_loads_television_usage_multiplier_2', 1.0)
646
781
  step.setArgument('plug_loads_other_annual_kwh', '2457.0')
647
782
  step.setArgument('plug_loads_other_frac_sensible', '0.855')
648
783
  step.setArgument('plug_loads_other_frac_latent', '0.045')
649
784
  step.setArgument('plug_loads_other_usage_multiplier', 1.0)
650
- step.setArgument('plug_loads_other_usage_multiplier_2', 1.0)
651
785
  step.setArgument('plug_loads_well_pump_present', false)
652
786
  step.setArgument('plug_loads_well_pump_annual_kwh', Constants.Auto)
653
787
  step.setArgument('plug_loads_well_pump_usage_multiplier', 0.0)
654
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 0.0)
655
788
  step.setArgument('plug_loads_vehicle_present', false)
656
789
  step.setArgument('plug_loads_vehicle_annual_kwh', Constants.Auto)
657
790
  step.setArgument('plug_loads_vehicle_usage_multiplier', 0.0)
658
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 0.0)
659
791
  step.setArgument('fuel_loads_grill_present', false)
660
792
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypeNaturalGas)
661
793
  step.setArgument('fuel_loads_grill_annual_therm', Constants.Auto)
@@ -684,121 +816,55 @@ def get_values(osw_file, step)
684
816
  step.setArgument('hot_tub_heater_annual_kwh', Constants.Auto)
685
817
  step.setArgument('hot_tub_heater_annual_therm', Constants.Auto)
686
818
  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
819
  elsif ['base-appliances-coal.osw'].include? osw_file
729
820
  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)
821
+ step.setArgument('clothes_dryer_efficiency', '3.3')
732
822
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
733
823
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeCoal)
734
824
  elsif ['base-appliances-dehumidifier.osw'].include? osw_file
735
- step.setArgument('dehumidifier_present', true)
825
+ step.setArgument('dehumidifier_type', HPXML::DehumidifierTypePortable)
736
826
  elsif ['base-appliances-dehumidifier-50percent.osw'].include? osw_file
737
827
  step.setArgument('dehumidifier_fraction_dehumidification_load_served', 0.5)
738
828
  elsif ['base-appliances-dehumidifier-ief-portable.osw'].include? osw_file
739
829
  step.setArgument('dehumidifier_efficiency_type', 'IntegratedEnergyFactor')
830
+ step.setArgument('dehumidifier_efficiency', '1.5')
740
831
  elsif ['base-appliances-dehumidifier-ief-whole-home.osw'].include? osw_file
741
832
  step.setArgument('dehumidifier_type', HPXML::DehumidifierTypeWholeHome)
742
833
  elsif ['base-appliances-gas.osw'].include? osw_file
743
834
  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)
835
+ step.setArgument('clothes_dryer_efficiency', '3.3')
746
836
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
747
837
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeNaturalGas)
748
838
  elsif ['base-appliances-modified.osw'].include? osw_file
749
839
  step.setArgument('clothes_washer_efficiency_type', 'ModifiedEnergyFactor')
750
- step.setArgument('clothes_washer_efficiency_mef', '1.65')
840
+ step.setArgument('clothes_washer_efficiency', '1.65')
751
841
  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)
842
+ step.setArgument('clothes_dryer_efficiency', '4.29')
754
843
  step.setArgument('clothes_dryer_vented_flow_rate', '0.0')
755
844
  step.setArgument('dishwasher_efficiency_type', 'EnergyFactor')
756
- step.setArgument('dishwasher_efficiency_ef', 0.7)
845
+ step.setArgument('dishwasher_efficiency', 0.7)
757
846
  step.setArgument('dishwasher_place_setting_capacity', '6')
758
847
  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)
848
+ step.setArgument('clothes_washer_location', 'none')
849
+ step.setArgument('clothes_dryer_location', 'none')
850
+ step.setArgument('dishwasher_location', 'none')
851
+ step.setArgument('refrigerator_location', 'none')
852
+ step.setArgument('cooking_range_oven_location', 'none')
764
853
  elsif ['base-appliances-oil.osw'].include? osw_file
765
854
  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)
855
+ step.setArgument('clothes_dryer_efficiency', '3.3')
768
856
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
769
857
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypeOil)
770
858
  elsif ['base-appliances-propane.osw'].include? osw_file
771
859
  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)
860
+ step.setArgument('clothes_dryer_efficiency', '3.3')
774
861
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
775
862
  step.setArgument('cooking_range_oven_fuel_type', HPXML::FuelTypePropane)
776
863
  elsif ['base-appliances-wood.osw'].include? osw_file
777
864
  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)
865
+ step.setArgument('clothes_dryer_efficiency', '3.3')
780
866
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
781
867
  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
868
  elsif ['base-atticroof-flat.osw'].include? osw_file
803
869
  step.setArgument('geometry_roof_type', 'flat')
804
870
  step.setArgument('roof_assembly_r', 25.8)
@@ -807,7 +873,7 @@ def get_values(osw_file, step)
807
873
  step.setArgument('ducts_supply_location', HPXML::LocationBasementConditioned)
808
874
  step.setArgument('ducts_return_location', HPXML::LocationBasementConditioned)
809
875
  elsif ['base-atticroof-radiant-barrier.osw'].include? osw_file
810
- step.setArgument('roof_radiant_barrier', 'true')
876
+ step.setArgument('roof_radiant_barrier', true)
811
877
  step.setArgument('roof_radiant_barrier_grade', '2')
812
878
  elsif ['base-atticroof-unvented-insulated-roof.osw'].include? osw_file
813
879
  step.setArgument('ceiling_assembly_r', 2.1)
@@ -817,6 +883,80 @@ def get_values(osw_file, step)
817
883
  step.setArgument('water_heater_location', HPXML::LocationAtticVented)
818
884
  step.setArgument('ducts_supply_location', HPXML::LocationAtticVented)
819
885
  step.setArgument('ducts_return_location', HPXML::LocationAtticVented)
886
+ elsif ['base-bldgtype-single-family-attached.osw'].include? osw_file
887
+ step.setArgument('geometry_unit_type', HPXML::ResidentialTypeSFA)
888
+ step.setArgument('geometry_cfa', 1800.0)
889
+ step.setArgument('geometry_corridor_position', 'None')
890
+ step.setArgument('geometry_building_num_units', 3)
891
+ step.setArgument('geometry_horizontal_location', 'Left')
892
+ step.setArgument('window_front_wwr', 0.18)
893
+ step.setArgument('window_back_wwr', 0.18)
894
+ step.setArgument('window_left_wwr', 0.18)
895
+ step.setArgument('window_right_wwr', 0.18)
896
+ step.setArgument('window_area_front', 0)
897
+ step.setArgument('window_area_back', 0)
898
+ step.setArgument('window_area_left', 0)
899
+ step.setArgument('window_area_right', 0)
900
+ step.setArgument('plug_loads_other_annual_kwh', '1638.0')
901
+ elsif ['base-bldgtype-multifamily.osw'].include? osw_file
902
+ step.setArgument('geometry_unit_type', HPXML::ResidentialTypeApartment)
903
+ step.setArgument('geometry_cfa', 900.0)
904
+ step.setArgument('geometry_corridor_position', 'None')
905
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
906
+ step.setArgument('geometry_level', 'Middle')
907
+ step.setArgument('geometry_horizontal_location', 'Left')
908
+ step.setArgument('geometry_building_num_units', 50)
909
+ step.setArgument('geometry_building_num_bedrooms', 50 * 3)
910
+ step.setArgument('geometry_num_floors_above_grade', 5)
911
+ step.setArgument('window_front_wwr', 0.18)
912
+ step.setArgument('window_back_wwr', 0.18)
913
+ step.setArgument('window_left_wwr', 0.18)
914
+ step.setArgument('window_right_wwr', 0.18)
915
+ step.setArgument('window_area_front', 0)
916
+ step.setArgument('window_area_back', 0)
917
+ step.setArgument('window_area_left', 0)
918
+ step.setArgument('window_area_right', 0)
919
+ step.setArgument('ducts_supply_leakage_value', 0.0)
920
+ step.setArgument('ducts_return_leakage_value', 0.0)
921
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
922
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
923
+ step.setArgument('ducts_supply_insulation_r', 0.0)
924
+ step.setArgument('ducts_return_insulation_r', 0.0)
925
+ step.setArgument('ducts_number_of_return_registers', '1')
926
+ step.setArgument('door_area', 20.0)
927
+ step.setArgument('plug_loads_other_annual_kwh', '819.0')
928
+ elsif ['base-bldgtype-multifamily-shared-mechvent.osw'].include? osw_file
929
+ step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
930
+ step.setArgument('mech_vent_flow_rate', 800)
931
+ step.setArgument('mech_vent_fan_power', 240)
932
+ step.setArgument('mech_vent_num_units_served', 10)
933
+ step.setArgument('shared_mech_vent_frac_recirculation', 0.5)
934
+ step.setArgument('mech_vent_fan_type_2', HPXML::MechVentTypeExhaust)
935
+ step.setArgument('mech_vent_flow_rate_2', 72)
936
+ step.setArgument('mech_vent_fan_power_2', 26)
937
+ elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.osw'].include? osw_file
938
+ step.setArgument('shared_mech_vent_preheating_fuel', HPXML::FuelTypeNaturalGas)
939
+ step.setArgument('shared_mech_vent_preheating_efficiency', 0.92)
940
+ step.setArgument('shared_mech_vent_preheating_fraction_heat_load_served', 0.7)
941
+ step.setArgument('shared_mech_vent_precooling_fuel', HPXML::FuelTypeElectricity)
942
+ step.setArgument('shared_mech_vent_precooling_efficiency', 4.0)
943
+ step.setArgument('shared_mech_vent_precooling_fraction_cool_load_served', 0.8)
944
+ elsif ['base-bldgtype-multifamily-shared-pv.osw'].include? osw_file
945
+ step.setArgument('pv_system_num_units_served_1', 6)
946
+ step.setArgument('pv_system_location_1', HPXML::LocationGround)
947
+ step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
948
+ step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
949
+ step.setArgument('pv_system_array_azimuth_1', 225)
950
+ step.setArgument('pv_system_array_tilt_1', '30')
951
+ step.setArgument('pv_system_max_power_output_1', 30000)
952
+ step.setArgument('pv_system_inverter_efficiency_1', 0.96)
953
+ step.setArgument('pv_system_system_losses_fraction_1', 0.14)
954
+ elsif ['base-bldgtype-multifamily-shared-water-heater.osw'].include? osw_file
955
+ step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
956
+ step.setArgument('water_heater_num_units_served', 6)
957
+ step.setArgument('water_heater_tank_volume', '120')
958
+ step.setArgument('water_heater_efficiency', 0.59)
959
+ step.setArgument('water_heater_recovery_efficiency', '0.76')
820
960
  elsif ['base-dhw-combi-tankless.osw'].include? osw_file
821
961
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeCombiTankless)
822
962
  step.setArgument('water_heater_tank_volume', Constants.Auto)
@@ -846,7 +986,7 @@ def get_values(osw_file, step)
846
986
  step.setArgument('water_fixtures_sink_low_flow', true)
847
987
  elsif ['base-dhw-none.osw'].include? osw_file
848
988
  step.setArgument('water_heater_type', 'none')
849
- step.setArgument('dishwasher_present', false)
989
+ step.setArgument('dishwasher_location', 'none')
850
990
  elsif ['base-dhw-recirc-demand.osw'].include? osw_file
851
991
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
852
992
  step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeSensor)
@@ -863,13 +1003,6 @@ def get_values(osw_file, step)
863
1003
  elsif ['base-dhw-recirc-timer.osw'].include? osw_file
864
1004
  step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
865
1005
  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
1006
  elsif ['base-dhw-solar-direct-evacuated-tube.osw'].include? osw_file
874
1007
  step.setArgument('solar_thermal_system_type', 'hot water')
875
1008
  step.setArgument('solar_thermal_storage_volume', '60')
@@ -905,11 +1038,9 @@ def get_values(osw_file, step)
905
1038
  elsif ['base-dhw-tank-coal.osw'].include? osw_file
906
1039
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeCoal)
907
1040
  step.setArgument('water_heater_tank_volume', '50')
908
- step.setArgument('water_heater_heating_capacity', '40000')
909
1041
  step.setArgument('water_heater_efficiency', 0.59)
910
1042
  elsif ['base-dhw-tank-elec-uef.osw'].include? osw_file
911
1043
  step.setArgument('water_heater_tank_volume', '30')
912
- step.setArgument('water_heater_heating_capacity', '15354')
913
1044
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
914
1045
  step.setArgument('water_heater_efficiency', 0.93)
915
1046
  step.setArgument('water_heater_first_hour_rating', 46)
@@ -917,11 +1048,9 @@ def get_values(osw_file, step)
917
1048
  elsif ['base-dhw-tank-gas.osw'].include? osw_file
918
1049
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
919
1050
  step.setArgument('water_heater_tank_volume', '50')
920
- step.setArgument('water_heater_heating_capacity', '40000')
921
1051
  step.setArgument('water_heater_efficiency', 0.59)
922
1052
  elsif ['base-dhw-tank-gas-uef.osw'].include? osw_file
923
1053
  step.setArgument('water_heater_tank_volume', '30')
924
- step.setArgument('water_heater_heating_capacity', '30000')
925
1054
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
926
1055
  step.setArgument('water_heater_efficiency', 0.59)
927
1056
  step.setArgument('water_heater_first_hour_rating', 56)
@@ -930,29 +1059,24 @@ def get_values(osw_file, step)
930
1059
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
931
1060
  step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
932
1061
  step.setArgument('water_heater_tank_volume', '50')
933
- step.setArgument('water_heater_heating_capacity', '40000')
934
1062
  step.setArgument('water_heater_efficiency', 0.59)
935
1063
  elsif ['base-dhw-tank-heat-pump.osw'].include? osw_file
936
1064
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
937
1065
  step.setArgument('water_heater_tank_volume', '80')
938
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
939
1066
  step.setArgument('water_heater_efficiency', 2.3)
940
1067
  elsif ['base-dhw-tank-heat-pump-outside.osw'].include? osw_file
941
1068
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
942
1069
  step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
943
1070
  step.setArgument('water_heater_tank_volume', '80')
944
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
945
1071
  step.setArgument('water_heater_efficiency', 2.3)
946
1072
  elsif ['base-dhw-tank-heat-pump-uef.osw'].include? osw_file
947
1073
  step.setArgument('water_heater_tank_volume', '50')
948
- step.setArgument('water_heater_heating_capacity', '18767')
949
1074
  step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
950
1075
  step.setArgument('water_heater_efficiency', 3.75)
951
1076
  step.setArgument('water_heater_first_hour_rating', 60)
952
1077
  elsif ['base-dhw-tank-heat-pump-with-solar.osw'].include? osw_file
953
1078
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
954
1079
  step.setArgument('water_heater_tank_volume', '80')
955
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
956
1080
  step.setArgument('water_heater_efficiency', 2.3)
957
1081
  step.setArgument('solar_thermal_system_type', 'hot water')
958
1082
  step.setArgument('solar_thermal_collector_loop_type', HPXML::SolarThermalLoopTypeIndirect)
@@ -963,7 +1087,6 @@ def get_values(osw_file, step)
963
1087
  elsif ['base-dhw-tank-heat-pump-with-solar-fraction.osw'].include? osw_file
964
1088
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
965
1089
  step.setArgument('water_heater_tank_volume', '80')
966
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
967
1090
  step.setArgument('water_heater_efficiency', 2.3)
968
1091
  step.setArgument('solar_thermal_system_type', 'hot water')
969
1092
  step.setArgument('solar_thermal_solar_fraction', 0.65)
@@ -1013,12 +1136,10 @@ def get_values(osw_file, step)
1013
1136
  elsif ['base-dhw-tank-oil.osw'].include? osw_file
1014
1137
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeOil)
1015
1138
  step.setArgument('water_heater_tank_volume', '50')
1016
- step.setArgument('water_heater_heating_capacity', '40000')
1017
1139
  step.setArgument('water_heater_efficiency', 0.59)
1018
1140
  elsif ['base-dhw-tank-wood.osw'].include? osw_file
1019
1141
  step.setArgument('water_heater_fuel_type', HPXML::FuelTypeWoodCord)
1020
1142
  step.setArgument('water_heater_tank_volume', '50')
1021
- step.setArgument('water_heater_heating_capacity', '40000')
1022
1143
  step.setArgument('water_heater_efficiency', 0.59)
1023
1144
  elsif ['base-enclosure-2stories.osw'].include? osw_file
1024
1145
  step.setArgument('geometry_cfa', 4050.0)
@@ -1027,15 +1148,11 @@ def get_values(osw_file, step)
1027
1148
  step.setArgument('window_area_back', 216.0)
1028
1149
  step.setArgument('window_area_left', 144.0)
1029
1150
  step.setArgument('window_area_right', 144.0)
1151
+ step.setArgument('ducts_number_of_return_registers', '3')
1030
1152
  step.setArgument('plug_loads_other_annual_kwh', '3685.5')
1031
1153
  elsif ['base-enclosure-2stories-garage.osw'].include? osw_file
1032
1154
  step.setArgument('geometry_cfa', 3250.0)
1033
- step.setArgument('geometry_num_floors_above_grade', 2)
1034
1155
  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
1156
  step.setArgument('ducts_supply_surface_area', '112.5')
1040
1157
  step.setArgument('ducts_return_surface_area', '37.5')
1041
1158
  step.setArgument('plug_loads_other_annual_kwh', '2957.5')
@@ -1043,13 +1160,11 @@ def get_values(osw_file, step)
1043
1160
  step.setArgument('geometry_num_bedrooms', 1)
1044
1161
  step.setArgument('geometry_num_bathrooms', '1')
1045
1162
  step.setArgument('geometry_num_occupants', '1')
1046
- step.setArgument('water_heater_heating_capacity', '18767')
1047
1163
  step.setArgument('plug_loads_television_annual_kwh', '482.0')
1048
1164
  elsif ['base-enclosure-beds-2.osw'].include? osw_file
1049
1165
  step.setArgument('geometry_num_bedrooms', 2)
1050
1166
  step.setArgument('geometry_num_bathrooms', '1')
1051
1167
  step.setArgument('geometry_num_occupants', '2')
1052
- step.setArgument('water_heater_heating_capacity', '18767')
1053
1168
  step.setArgument('plug_loads_television_annual_kwh', '551.0')
1054
1169
  elsif ['base-enclosure-beds-4.osw'].include? osw_file
1055
1170
  step.setArgument('geometry_num_bedrooms', 4)
@@ -1082,7 +1197,7 @@ def get_values(osw_file, step)
1082
1197
  step.setArgument('air_leakage_units', HPXML::UnitsCFM)
1083
1198
  step.setArgument('air_leakage_value', 1080)
1084
1199
  elsif ['base-enclosure-infil-flue.osw'].include? osw_file
1085
- step.setArgument('heating_system_has_flue_or_chimney', true)
1200
+ step.setArgument('geometry_has_flue_or_chimney', 'true')
1086
1201
  elsif ['base-enclosure-infil-natural-ach.osw'].include? osw_file
1087
1202
  step.setArgument('air_leakage_units', HPXML::UnitsACHNatural)
1088
1203
  step.setArgument('air_leakage_value', 0.67)
@@ -1127,14 +1242,12 @@ def get_values(osw_file, step)
1127
1242
  step.setArgument('refrigerator_location', HPXML::LocationOtherNonFreezingSpace)
1128
1243
  step.setArgument('cooking_range_oven_location', HPXML::LocationOtherNonFreezingSpace)
1129
1244
  elsif ['base-enclosure-overhangs.osw'].include? osw_file
1245
+ step.setArgument('overhangs_front_distance_to_top_of_window', 1.0)
1130
1246
  step.setArgument('overhangs_back_depth', 2.5)
1131
1247
  step.setArgument('overhangs_left_depth', 1.5)
1132
1248
  step.setArgument('overhangs_left_distance_to_top_of_window', 2.0)
1133
1249
  step.setArgument('overhangs_right_depth', 1.5)
1134
1250
  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
1251
  elsif ['base-enclosure-windows-none.osw'].include? osw_file
1139
1252
  step.setArgument('window_area_front', 0)
1140
1253
  step.setArgument('window_area_back', 0)
@@ -1143,7 +1256,9 @@ def get_values(osw_file, step)
1143
1256
  elsif ['base-foundation-ambient.osw'].include? osw_file
1144
1257
  step.setArgument('geometry_cfa', 1350.0)
1145
1258
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeAmbient)
1259
+ step.setArgument('geometry_rim_joist_height', 0)
1146
1260
  step.setArgument('floor_assembly_r', 18.7)
1261
+ step.setArgument('ducts_number_of_return_registers', '1')
1147
1262
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1148
1263
  elsif ['base-foundation-conditioned-basement-slab-insulation.osw'].include? osw_file
1149
1264
  step.setArgument('slab_under_insulation_r', 10)
@@ -1162,6 +1277,7 @@ def get_values(osw_file, step)
1162
1277
  step.setArgument('slab_carpet_r', '2.5')
1163
1278
  step.setArgument('ducts_supply_location', HPXML::LocationUnderSlab)
1164
1279
  step.setArgument('ducts_return_location', HPXML::LocationUnderSlab)
1280
+ step.setArgument('ducts_number_of_return_registers', '1')
1165
1281
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1166
1282
  elsif ['base-foundation-unconditioned-basement.osw'].include? osw_file
1167
1283
  step.setArgument('geometry_cfa', 1350.0)
@@ -1169,8 +1285,10 @@ def get_values(osw_file, step)
1169
1285
  step.setArgument('floor_assembly_r', 18.7)
1170
1286
  step.setArgument('foundation_wall_insulation_r', 0)
1171
1287
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 0)
1288
+ step.setArgument('rim_joist_assembly_r', 4.0)
1172
1289
  step.setArgument('ducts_supply_location', HPXML::LocationBasementUnconditioned)
1173
1290
  step.setArgument('ducts_return_location', HPXML::LocationBasementUnconditioned)
1291
+ step.setArgument('ducts_number_of_return_registers', '1')
1174
1292
  step.setArgument('water_heater_location', HPXML::LocationBasementUnconditioned)
1175
1293
  step.setArgument('clothes_washer_location', HPXML::LocationBasementUnconditioned)
1176
1294
  step.setArgument('clothes_dryer_location', HPXML::LocationBasementUnconditioned)
@@ -1199,28 +1317,29 @@ def get_values(osw_file, step)
1199
1317
  step.setArgument('floor_assembly_r', 2.1)
1200
1318
  step.setArgument('foundation_wall_insulation_r', 8.9)
1201
1319
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4)
1320
+ step.setArgument('rim_joist_assembly_r', 23.0)
1202
1321
  elsif ['base-foundation-unvented-crawlspace.osw'].include? osw_file
1203
1322
  step.setArgument('geometry_cfa', 1350.0)
1204
1323
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
1205
1324
  step.setArgument('geometry_foundation_height', 4.0)
1206
- step.setArgument('geometry_foundation_height_above_grade', 1.0)
1207
1325
  step.setArgument('floor_assembly_r', 18.7)
1208
1326
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
1209
1327
  step.setArgument('slab_carpet_r', '2.5')
1210
1328
  step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceUnvented)
1211
1329
  step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceUnvented)
1330
+ step.setArgument('ducts_number_of_return_registers', '1')
1212
1331
  step.setArgument('water_heater_location', HPXML::LocationCrawlspaceUnvented)
1213
1332
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1214
1333
  elsif ['base-foundation-vented-crawlspace.osw'].include? osw_file
1215
1334
  step.setArgument('geometry_cfa', 1350.0)
1216
1335
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
1217
1336
  step.setArgument('geometry_foundation_height', 4.0)
1218
- step.setArgument('geometry_foundation_height_above_grade', 1.0)
1219
1337
  step.setArgument('floor_assembly_r', 18.7)
1220
1338
  step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
1221
1339
  step.setArgument('slab_carpet_r', '2.5')
1222
1340
  step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceVented)
1223
1341
  step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceVented)
1342
+ step.setArgument('ducts_number_of_return_registers', '1')
1224
1343
  step.setArgument('water_heater_location', HPXML::LocationCrawlspaceVented)
1225
1344
  step.setArgument('plug_loads_other_annual_kwh', '1228.5')
1226
1345
  elsif ['base-foundation-walkout-basement.osw'].include? osw_file
@@ -1231,29 +1350,36 @@ def get_values(osw_file, step)
1231
1350
  step.setArgument('cooling_system_type', 'none')
1232
1351
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1233
1352
  step.setArgument('heat_pump_heating_capacity', '42000.0')
1234
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1353
+ step.setArgument('heat_pump_heating_capacity_17_f', '26460.0')
1235
1354
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1236
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
1355
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw'].include? osw_file
1356
+ step.setArgument('heat_pump_heating_capacity', '0.0')
1357
+ step.setArgument('heat_pump_heating_capacity_17_f', '0.0')
1358
+ step.setArgument('heat_pump_fraction_heat_load_served', 0)
1359
+ step.setArgument('heat_pump_backup_fuel', 'none')
1360
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw'].include? osw_file
1361
+ step.setArgument('heat_pump_cooling_capacity', '0.0')
1362
+ step.setArgument('heat_pump_fraction_cool_load_served', 0)
1237
1363
  elsif ['base-hvac-air-to-air-heat-pump-2-speed.osw'].include? osw_file
1238
1364
  step.setArgument('heating_system_type', 'none')
1239
1365
  step.setArgument('cooling_system_type', 'none')
1240
1366
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1241
- step.setArgument('heat_pump_heating_efficiency_hspf', 9.3)
1367
+ step.setArgument('heat_pump_heating_efficiency', 9.3)
1242
1368
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1243
1369
  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)
1370
+ step.setArgument('heat_pump_heating_capacity_17_f', '24780.0')
1371
+ step.setArgument('heat_pump_cooling_efficiency', 18.0)
1246
1372
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1247
1373
  elsif ['base-hvac-air-to-air-heat-pump-var-speed.osw'].include? osw_file
1248
1374
  step.setArgument('heating_system_type', 'none')
1249
1375
  step.setArgument('cooling_system_type', 'none')
1250
1376
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1251
- step.setArgument('heat_pump_heating_efficiency_hspf', 10.0)
1377
+ step.setArgument('heat_pump_heating_efficiency', 10.0)
1252
1378
  step.setArgument('heat_pump_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1253
1379
  step.setArgument('heat_pump_cooling_sensible_heat_fraction', 0.78)
1254
1380
  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)
1381
+ step.setArgument('heat_pump_heating_capacity_17_f', '26880.0')
1382
+ step.setArgument('heat_pump_cooling_efficiency', 22.0)
1257
1383
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1258
1384
  elsif ['base-hvac-boiler-coal-only.osw'].include? osw_file
1259
1385
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
@@ -1266,11 +1392,8 @@ def get_values(osw_file, step)
1266
1392
  step.setArgument('cooling_system_type', 'none')
1267
1393
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.osw'].include? osw_file
1268
1394
  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
1395
  elsif ['base-hvac-boiler-gas-only.osw'].include? osw_file
1272
1396
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
1273
- step.setArgument('heating_system_electric_auxiliary_energy', 200.0)
1274
1397
  step.setArgument('cooling_system_type', 'none')
1275
1398
  elsif ['base-hvac-boiler-oil-only.osw'].include? osw_file
1276
1399
  step.setArgument('heating_system_type', HPXML::HVACTypeBoiler)
@@ -1286,29 +1409,27 @@ def get_values(osw_file, step)
1286
1409
  step.setArgument('cooling_system_type', 'none')
1287
1410
  elsif ['base-hvac-central-ac-only-1-speed.osw'].include? osw_file
1288
1411
  step.setArgument('heating_system_type', 'none')
1289
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.45)
1290
1412
  elsif ['base-hvac-central-ac-only-2-speed.osw'].include? osw_file
1291
1413
  step.setArgument('heating_system_type', 'none')
1292
- step.setArgument('cooling_system_cooling_efficiency_seer', 18.0)
1414
+ step.setArgument('cooling_system_cooling_efficiency', 18.0)
1293
1415
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1294
1416
  elsif ['base-hvac-central-ac-only-var-speed.osw'].include? osw_file
1295
1417
  step.setArgument('heating_system_type', 'none')
1296
- step.setArgument('cooling_system_cooling_efficiency_seer', 24.0)
1418
+ step.setArgument('cooling_system_cooling_efficiency', 24.0)
1297
1419
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1298
1420
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.78)
1299
1421
  elsif ['base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw'].include? osw_file
1300
1422
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
1301
- step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
1423
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
1302
1424
  step.setArgument('heat_pump_heating_capacity', '42000.0')
1303
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1425
+ step.setArgument('heat_pump_heating_capacity_17_f', '26460.0')
1304
1426
  step.setArgument('heat_pump_fraction_cool_load_served', 0)
1305
1427
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1306
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
1307
1428
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1308
1429
  step.setArgument('cooling_system_type', 'none')
1309
- step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
1430
+ step.setArgument('heat_pump_heating_efficiency', 7.7)
1310
1431
  step.setArgument('heat_pump_heating_capacity', '42000.0')
1311
- step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
1432
+ step.setArgument('heat_pump_heating_capacity_17_f', '26460.0')
1312
1433
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeNaturalGas)
1313
1434
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1314
1435
  step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
@@ -1331,7 +1452,6 @@ def get_values(osw_file, step)
1331
1452
  step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
1332
1453
  step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
1333
1454
  step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
1334
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1335
1455
  elsif ['base-hvac-ducts-leakage-percent.osw'].include? osw_file
1336
1456
  step.setArgument('ducts_supply_leakage_units', HPXML::UnitsPercent)
1337
1457
  step.setArgument('ducts_return_leakage_units', HPXML::UnitsPercent)
@@ -1351,28 +1471,28 @@ def get_values(osw_file, step)
1351
1471
  step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
1352
1472
  step.removeArgument('cooling_system_cooling_compressor_type')
1353
1473
  step.removeArgument('cooling_system_cooling_sensible_heat_fraction')
1354
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.3)
1355
1474
  elsif ['base-hvac-evap-cooler-only-ducted.osw'].include? osw_file
1356
1475
  step.setArgument('heating_system_type', 'none')
1357
1476
  step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
1358
1477
  step.removeArgument('cooling_system_cooling_compressor_type')
1359
1478
  step.removeArgument('cooling_system_cooling_sensible_heat_fraction')
1360
1479
  step.setArgument('cooling_system_is_ducted', true)
1480
+ step.setArgument('ducts_return_leakage_value', 0.0)
1361
1481
  elsif ['base-hvac-fireplace-wood-only.osw'].include? osw_file
1362
1482
  step.setArgument('heating_system_type', HPXML::HVACTypeFireplace)
1363
1483
  step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodCord)
1364
1484
  step.setArgument('heating_system_heating_efficiency', 0.8)
1365
- step.setArgument('heating_system_fan_power_watts', 0.0)
1366
1485
  step.setArgument('cooling_system_type', 'none')
1367
1486
  elsif ['base-hvac-fixed-heater-gas-only.osw'].include? osw_file
1368
1487
  step.setArgument('heating_system_type', HPXML::HVACTypeFixedHeater)
1369
1488
  step.setArgument('heating_system_heating_efficiency', 1.0)
1370
- step.setArgument('heating_system_fan_power_watts', 0.0)
1371
1489
  elsif ['base-hvac-floor-furnace-propane-only.osw'].include? osw_file
1372
1490
  step.setArgument('heating_system_type', HPXML::HVACTypeFloorFurnace)
1373
1491
  step.setArgument('heating_system_fuel', HPXML::FuelTypePropane)
1374
1492
  step.setArgument('heating_system_heating_efficiency', 0.8)
1375
- step.setArgument('heating_system_fan_power_watts', 0.0)
1493
+ step.setArgument('cooling_system_type', 'none')
1494
+ elsif ['base-hvac-furnace-coal-only.osw'].include? osw_file
1495
+ step.setArgument('heating_system_fuel', HPXML::FuelTypeCoal)
1376
1496
  step.setArgument('cooling_system_type', 'none')
1377
1497
  elsif ['base-hvac-furnace-elec-central-ac-1-speed.osw'].include? osw_file
1378
1498
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
@@ -1382,17 +1502,18 @@ def get_values(osw_file, step)
1382
1502
  step.setArgument('heating_system_heating_efficiency', 1.0)
1383
1503
  step.setArgument('cooling_system_type', 'none')
1384
1504
  elsif ['base-hvac-furnace-gas-central-ac-2-speed.osw'].include? osw_file
1385
- step.setArgument('cooling_system_cooling_efficiency_seer', 18.0)
1505
+ step.setArgument('cooling_system_cooling_efficiency', 18.0)
1386
1506
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeTwoStage)
1387
1507
  elsif ['base-hvac-furnace-gas-central-ac-var-speed.osw'].include? osw_file
1388
- step.setArgument('cooling_system_cooling_efficiency_seer', 24.0)
1508
+ step.setArgument('cooling_system_cooling_efficiency', 24.0)
1389
1509
  step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
1390
1510
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.78)
1391
1511
  elsif ['base-hvac-furnace-gas-only.osw'].include? osw_file
1392
- step.setArgument('heating_system_fan_power_watts_per_cfm', 0.45)
1393
1512
  step.setArgument('cooling_system_type', 'none')
1394
1513
  elsif ['base-hvac-furnace-gas-room-ac.osw'].include? osw_file
1395
1514
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1515
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1516
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1396
1517
  step.removeArgument('cooling_system_cooling_compressor_type')
1397
1518
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1398
1519
  elsif ['base-hvac-furnace-oil-only.osw'].include? osw_file
@@ -1407,10 +1528,9 @@ def get_values(osw_file, step)
1407
1528
  elsif ['base-hvac-mini-split-air-conditioner-only-ducted.osw'].include? osw_file
1408
1529
  step.setArgument('heating_system_type', 'none')
1409
1530
  step.setArgument('cooling_system_type', HPXML::HVACTypeMiniSplitAirConditioner)
1410
- step.setArgument('cooling_system_cooling_efficiency_seer', 19.0)
1531
+ step.setArgument('cooling_system_cooling_efficiency', 19.0)
1411
1532
  step.removeArgument('cooling_system_cooling_compressor_type')
1412
1533
  step.setArgument('cooling_system_is_ducted', true)
1413
- step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.2)
1414
1534
  step.setArgument('ducts_supply_leakage_value', 15.0)
1415
1535
  step.setArgument('ducts_return_leakage_value', 5.0)
1416
1536
  step.setArgument('ducts_supply_insulation_r', 0.0)
@@ -1422,25 +1542,72 @@ def get_values(osw_file, step)
1422
1542
  step.setArgument('heating_system_type', 'none')
1423
1543
  step.setArgument('cooling_system_type', 'none')
1424
1544
  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)
1545
+ step.setArgument('heat_pump_heating_efficiency_type', HPXML::UnitsCOP)
1546
+ step.setArgument('heat_pump_heating_efficiency', 3.6)
1547
+ step.setArgument('heat_pump_cooling_efficiency_type', HPXML::UnitsEER)
1548
+ step.setArgument('heat_pump_cooling_efficiency', 16.6)
1427
1549
  step.removeArgument('heat_pump_cooling_compressor_type')
1428
1550
  step.setArgument('heat_pump_heating_capacity', '42000.0')
1429
1551
  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)
1552
+ elsif ['base-hvac-ground-to-air-heat-pump-cooling-only.osw'].include? osw_file
1553
+ step.setArgument('heat_pump_heating_capacity', '0.0')
1554
+ step.setArgument('heat_pump_fraction_heat_load_served', 0)
1555
+ step.setArgument('heat_pump_backup_fuel', 'none')
1556
+ elsif ['base-hvac-ground-to-air-heat-pump-heating-only.osw'].include? osw_file
1557
+ step.setArgument('heat_pump_cooling_capacity', '0.0')
1558
+ step.setArgument('heat_pump_fraction_cool_load_served', 0)
1559
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1560
+ step.setArgument('heating_system_airflow_defect_ratio', 0.0)
1561
+ step.setArgument('cooling_system_airflow_defect_ratio', 0.0)
1562
+ step.setArgument('cooling_system_charge_defect_ratio', 0.0)
1563
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1564
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1565
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1566
+ elsif ['base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1567
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1568
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw'].include? osw_file
1569
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1570
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1571
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw'].include? osw_file
1572
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1573
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1574
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw'].include? osw_file
1575
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1576
+ step.setArgument('heat_pump_charge_defect_ratio', -0.25)
1577
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw'].include? osw_file
1578
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1579
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1580
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1581
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw'].include? osw_file
1582
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1583
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1584
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1585
+ elsif ['base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw'].include? osw_file
1586
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1587
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1588
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1589
+ elsif ['base-hvac-install-quality-all-furnace-gas-only.osw'].include? osw_file
1590
+ step.setArgument('heating_system_airflow_defect_ratio', -0.25)
1591
+ elsif ['base-hvac-install-quality-all-ground-to-air-heat-pump.osw'].include? osw_file
1592
+ step.setArgument('heat_pump_airflow_defect_ratio', -0.25)
1593
+ step.setArgument('heat_pump_charge_defect_ratio', 0.0)
1594
+ elsif ['base-hvac-install-quality-all-mini-split-heat-pump-ducted.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-mini-split-air-conditioner-only-ducted.osw'].include? osw_file
1598
+ step.setArgument('cooling_system_airflow_defect_ratio', -0.25)
1599
+ step.setArgument('cooling_system_charge_defect_ratio', -0.25)
1432
1600
  elsif ['base-hvac-mini-split-heat-pump-ducted.osw'].include? osw_file
1433
1601
  step.setArgument('heating_system_type', 'none')
1434
1602
  step.setArgument('cooling_system_type', 'none')
1435
1603
  step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpMiniSplit)
1436
1604
  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)
1605
+ step.setArgument('heat_pump_heating_capacity_17_f', '29500.0')
1606
+ step.setArgument('heat_pump_heating_efficiency', 10.0)
1607
+ step.setArgument('heat_pump_cooling_efficiency', 19.0)
1440
1608
  step.removeArgument('heat_pump_cooling_compressor_type')
1441
1609
  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)
1610
+ step.setArgument('heat_pump_is_ducted', true)
1444
1611
  step.setArgument('ducts_supply_leakage_value', 15.0)
1445
1612
  step.setArgument('ducts_return_leakage_value', 5.0)
1446
1613
  step.setArgument('ducts_supply_insulation_r', 0.0)
@@ -1448,52 +1615,56 @@ def get_values(osw_file, step)
1448
1615
  step.setArgument('ducts_return_surface_area', '10.0')
1449
1616
  elsif ['base-hvac-mini-split-heat-pump-ducted-cooling-only.osw'].include? osw_file
1450
1617
  step.setArgument('heat_pump_heating_capacity', '0')
1451
- step.setArgument('heat_pump_heating_capacity_17F', '0')
1618
+ step.setArgument('heat_pump_heating_capacity_17_f', '0')
1452
1619
  step.setArgument('heat_pump_fraction_heat_load_served', 0)
1453
1620
  step.setArgument('heat_pump_backup_fuel', 'none')
1454
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1455
1621
  elsif ['base-hvac-mini-split-heat-pump-ducted-heating-only.osw'].include? osw_file
1456
1622
  step.setArgument('heat_pump_cooling_capacity', '0')
1457
1623
  step.setArgument('heat_pump_fraction_cool_load_served', 0)
1458
1624
  step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
1459
- step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
1460
1625
  elsif ['base-hvac-mini-split-heat-pump-ductless.osw'].include? osw_file
1461
1626
  step.setArgument('heat_pump_backup_fuel', 'none')
1462
- step.setArgument('heat_pump_mini_split_is_ducted', false)
1627
+ step.setArgument('heat_pump_is_ducted', false)
1463
1628
  elsif ['base-hvac-none.osw'].include? osw_file
1464
1629
  step.setArgument('heating_system_type', 'none')
1465
1630
  step.setArgument('cooling_system_type', 'none')
1466
1631
  elsif ['base-hvac-portable-heater-gas-only.osw'].include? osw_file
1467
1632
  step.setArgument('heating_system_type', HPXML::HVACTypePortableHeater)
1468
1633
  step.setArgument('heating_system_heating_efficiency', 1.0)
1469
- step.setArgument('heating_system_fan_power_watts', 0.0)
1634
+ elsif ['base-hvac-programmable-thermostat-detailed.osw'].include? osw_file
1635
+ step.setArgument('setpoint_heating_weekday', '64, 64, 64, 64, 64, 64, 64, 74, 74, 66, 66, 66, 66, 66, 66, 66, 66, 68, 68, 68, 68, 68, 64, 64')
1636
+ step.setArgument('setpoint_heating_weekend', '74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74')
1637
+ step.setArgument('setpoint_cooling_weekday', '82, 82, 82, 82, 82, 82, 82, 72, 72, 80, 80, 80, 80, 80, 80, 80, 80, 78, 78, 78, 78, 78, 82, 82')
1638
+ 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
1639
  elsif ['base-hvac-room-ac-only.osw'].include? osw_file
1471
1640
  step.setArgument('heating_system_type', 'none')
1472
1641
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1642
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1643
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1473
1644
  step.removeArgument('cooling_system_cooling_compressor_type')
1474
1645
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1475
1646
  elsif ['base-hvac-room-ac-only-33percent.osw'].include? osw_file
1476
1647
  step.setArgument('heating_system_type', 'none')
1477
1648
  step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
1649
+ step.setArgument('cooling_system_cooling_efficiency_type', HPXML::UnitsEER)
1650
+ step.setArgument('cooling_system_cooling_efficiency', 8.5)
1478
1651
  step.removeArgument('cooling_system_cooling_compressor_type')
1479
1652
  step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
1480
1653
  step.setArgument('cooling_system_fraction_cool_load_served', 0.33)
1481
1654
  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)
1655
+ step.setArgument('setpoint_heating_weekday', '60')
1656
+ step.setArgument('setpoint_heating_weekend', '60')
1657
+ step.setArgument('setpoint_cooling_weekday', '80')
1658
+ step.setArgument('setpoint_cooling_weekend', '80')
1486
1659
  elsif ['base-hvac-stove-oil-only.osw'].include? osw_file
1487
1660
  step.setArgument('heating_system_type', HPXML::HVACTypeStove)
1488
1661
  step.setArgument('heating_system_fuel', HPXML::FuelTypeOil)
1489
1662
  step.setArgument('heating_system_heating_efficiency', 0.8)
1490
- step.setArgument('heating_system_fan_power_watts', 40.0)
1491
1663
  step.setArgument('cooling_system_type', 'none')
1492
1664
  elsif ['base-hvac-stove-wood-pellets-only.osw'].include? osw_file
1493
1665
  step.setArgument('heating_system_type', HPXML::HVACTypeStove)
1494
1666
  step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodPellets)
1495
1667
  step.setArgument('heating_system_heating_efficiency', 0.8)
1496
- step.setArgument('heating_system_fan_power_watts', 40.0)
1497
1668
  step.setArgument('cooling_system_type', 'none')
1498
1669
  elsif ['base-hvac-undersized.osw'].include? osw_file
1499
1670
  step.setArgument('heating_system_heating_capacity', '6400.0')
@@ -1504,7 +1675,6 @@ def get_values(osw_file, step)
1504
1675
  step.setArgument('heating_system_type', HPXML::HVACTypeWallFurnace)
1505
1676
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
1506
1677
  step.setArgument('heating_system_heating_efficiency', 1.0)
1507
- step.setArgument('heating_system_fan_power_watts', 0.0)
1508
1678
  step.setArgument('cooling_system_type', 'none')
1509
1679
  elsif ['base-lighting-ceiling-fans.osw'].include? osw_file
1510
1680
  step.setArgument('ceiling_fan_present', true)
@@ -1526,24 +1696,30 @@ def get_values(osw_file, step)
1526
1696
  step.setArgument('weather_station_epw_filepath', 'USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3.epw')
1527
1697
  elsif ['base-location-duluth-mn.osw'].include? osw_file
1528
1698
  step.setArgument('weather_station_epw_filepath', 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw')
1699
+ elsif ['base-location-helena-mt.osw'].include? osw_file
1700
+ step.setArgument('weather_station_epw_filepath', 'USA_MT_Helena.Rgnl.AP.727720_TMY3.epw')
1701
+ elsif ['base-location-honolulu-hi.osw'].include? osw_file
1702
+ step.setArgument('weather_station_epw_filepath', 'USA_HI_Honolulu.Intl.AP.911820_TMY3.epw')
1529
1703
  elsif ['base-location-miami-fl.osw'].include? osw_file
1530
1704
  step.setArgument('weather_station_epw_filepath', 'USA_FL_Miami.Intl.AP.722020_TMY3.epw')
1705
+ elsif ['base-location-phoenix-az.osw'].include? osw_file
1706
+ step.setArgument('weather_station_epw_filepath', 'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw')
1707
+ elsif ['base-location-portland-or.osw'].include? osw_file
1708
+ step.setArgument('weather_station_epw_filepath', 'USA_OR_Portland.Intl.AP.726980_TMY3.epw')
1531
1709
  elsif ['base-mechvent-balanced.osw'].include? osw_file
1532
1710
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeBalanced)
1533
1711
  step.setArgument('mech_vent_fan_power', 60)
1534
1712
  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)
1713
+ step.setArgument('kitchen_fans_quantity', '1')
1714
+ step.setArgument('kitchen_fans_flow_rate', '100.0')
1715
+ step.setArgument('kitchen_fans_hours_in_operation', '1.5')
1716
+ step.setArgument('kitchen_fans_power', '30.0')
1717
+ step.setArgument('kitchen_fans_start_hour', '18')
1718
+ step.setArgument('bathroom_fans_quantity', '2')
1719
+ step.setArgument('bathroom_fans_flow_rate', '50.0')
1720
+ step.setArgument('bathroom_fans_hours_in_operation', '1.5')
1721
+ step.setArgument('bathroom_fans_power', '15.0')
1722
+ step.setArgument('bathroom_fans_start_hour', '7')
1547
1723
  elsif ['base-mechvent-cfis.osw'].include? osw_file
1548
1724
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeCFIS)
1549
1725
  step.setArgument('mech_vent_flow_rate', 330)
@@ -1559,37 +1735,22 @@ def get_values(osw_file, step)
1559
1735
  step.setArgument('mech_vent_fan_power', 60)
1560
1736
  elsif ['base-mechvent-erv-atre-asre.osw'].include? osw_file
1561
1737
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeERV)
1562
- step.setArgument('mech_vent_total_recovery_efficiency_type', 'Adjusted')
1738
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Adjusted')
1563
1739
  step.setArgument('mech_vent_total_recovery_efficiency', 0.526)
1564
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Adjusted')
1565
1740
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.79)
1566
1741
  step.setArgument('mech_vent_fan_power', 60)
1567
1742
  elsif ['base-mechvent-exhaust.osw'].include? osw_file
1568
1743
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeExhaust)
1744
+ elsif ['base-mechvent-exhaust-rated-flow-rate.osw'].include? osw_file
1745
+ step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeExhaust)
1569
1746
  elsif ['base-mechvent-hrv.osw'].include? osw_file
1570
1747
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeHRV)
1571
1748
  step.setArgument('mech_vent_fan_power', 60)
1572
1749
  elsif ['base-mechvent-hrv-asre.osw'].include? osw_file
1573
1750
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeHRV)
1574
- step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Adjusted')
1751
+ step.setArgument('mech_vent_recovery_efficiency_type', 'Adjusted')
1575
1752
  step.setArgument('mech_vent_sensible_recovery_efficiency', 0.79)
1576
1753
  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
1754
  elsif ['base-mechvent-supply.osw'].include? osw_file
1594
1755
  step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
1595
1756
  elsif ['base-mechvent-whole-house-fan.osw'].include? osw_file
@@ -1605,11 +1766,9 @@ def get_values(osw_file, step)
1605
1766
  step.removeArgument('roof_material_type')
1606
1767
  step.setArgument('roof_color', HPXML::ColorLight)
1607
1768
  step.removeArgument('roof_material_type')
1608
- step.setArgument('roof_emittance', Constants.Auto)
1609
- step.setArgument('roof_radiant_barrier', Constants.Auto)
1769
+ step.setArgument('roof_radiant_barrier', false)
1610
1770
  step.removeArgument('wall_siding_type')
1611
1771
  step.setArgument('wall_color', HPXML::ColorMedium)
1612
- step.setArgument('wall_emittance', Constants.Auto)
1613
1772
  step.removeArgument('window_fraction_operable')
1614
1773
  step.removeArgument('window_interior_shading_winter')
1615
1774
  step.removeArgument('window_interior_shading_summer')
@@ -1619,11 +1778,10 @@ def get_values(osw_file, step)
1619
1778
  step.setArgument('ducts_return_location', Constants.Auto)
1620
1779
  step.setArgument('ducts_supply_surface_area', Constants.Auto)
1621
1780
  step.setArgument('ducts_return_surface_area', Constants.Auto)
1622
- step.setArgument('kitchen_fans_present', true)
1623
- step.setArgument('bathroom_fans_present', true)
1781
+ step.setArgument('kitchen_fans_quantity', Constants.Auto)
1782
+ step.setArgument('bathroom_fans_quantity', Constants.Auto)
1624
1783
  step.setArgument('water_heater_location', Constants.Auto)
1625
1784
  step.setArgument('water_heater_tank_volume', Constants.Auto)
1626
- step.setArgument('water_heater_heating_capacity', Constants.Auto)
1627
1785
  step.setArgument('water_heater_setpoint_temperature', Constants.Auto)
1628
1786
  step.setArgument('dhw_distribution_standard_piping_length', Constants.Auto)
1629
1787
  step.setArgument('dhw_distribution_pipe_r', Constants.Auto)
@@ -1635,8 +1793,7 @@ def get_values(osw_file, step)
1635
1793
  step.removeArgument('pv_system_inverter_efficiency_1')
1636
1794
  step.removeArgument('pv_system_system_losses_fraction_1')
1637
1795
  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)
1796
+ step.setArgument('clothes_washer_efficiency', Constants.Auto)
1640
1797
  step.setArgument('clothes_washer_rated_annual_kwh', Constants.Auto)
1641
1798
  step.setArgument('clothes_washer_label_electric_rate', Constants.Auto)
1642
1799
  step.setArgument('clothes_washer_label_gas_rate', Constants.Auto)
@@ -1644,11 +1801,10 @@ def get_values(osw_file, step)
1644
1801
  step.setArgument('clothes_washer_label_usage', Constants.Auto)
1645
1802
  step.setArgument('clothes_washer_capacity', Constants.Auto)
1646
1803
  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)
1804
+ step.setArgument('clothes_dryer_efficiency', Constants.Auto)
1649
1805
  step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
1650
1806
  step.setArgument('dishwasher_location', Constants.Auto)
1651
- step.setArgument('dishwasher_efficiency_kwh', Constants.Auto)
1807
+ step.setArgument('dishwasher_efficiency', Constants.Auto)
1652
1808
  step.setArgument('dishwasher_label_electric_rate', Constants.Auto)
1653
1809
  step.setArgument('dishwasher_label_gas_rate', Constants.Auto)
1654
1810
  step.setArgument('dishwasher_label_annual_gas_cost', Constants.Auto)
@@ -1665,19 +1821,16 @@ def get_values(osw_file, step)
1665
1821
  step.setArgument('plug_loads_other_frac_sensible', Constants.Auto)
1666
1822
  step.setArgument('plug_loads_other_frac_latent', Constants.Auto)
1667
1823
  elsif ['base-misc-loads-large-uncommon.osw'].include? osw_file
1668
- step.setArgument('extra_refrigerator_present', true)
1824
+ step.setArgument('extra_refrigerator_location', Constants.Auto)
1669
1825
  step.setArgument('extra_refrigerator_rated_annual_kwh', '700.0')
1670
- step.setArgument('freezer_present', true)
1671
1826
  step.setArgument('freezer_location', HPXML::LocationLivingSpace)
1672
1827
  step.setArgument('freezer_rated_annual_kwh', '300.0')
1673
1828
  step.setArgument('plug_loads_well_pump_present', true)
1674
1829
  step.setArgument('plug_loads_well_pump_annual_kwh', '475.0')
1675
1830
  step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
1676
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
1677
1831
  step.setArgument('plug_loads_vehicle_present', true)
1678
1832
  step.setArgument('plug_loads_vehicle_annual_kwh', '1500.0')
1679
1833
  step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
1680
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
1681
1834
  step.setArgument('fuel_loads_grill_present', true)
1682
1835
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypePropane)
1683
1836
  step.setArgument('fuel_loads_grill_annual_therm', '25.0')
@@ -1699,11 +1852,17 @@ def get_values(osw_file, step)
1699
1852
  step.setArgument('hot_tub_pump_annual_kwh', '1000.0')
1700
1853
  step.setArgument('hot_tub_heater_annual_kwh', '1300.0')
1701
1854
  elsif ['base-misc-loads-large-uncommon2.osw'].include? osw_file
1702
- step.setArgument('pool_heater_type', 'none')
1855
+ step.setArgument('pool_heater_type', HPXML::TypeNone)
1703
1856
  step.setArgument('hot_tub_heater_type', HPXML::HeaterTypeHeatPump)
1704
1857
  step.setArgument('hot_tub_heater_annual_kwh', '260.0')
1705
1858
  step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypeOil)
1706
1859
  step.setArgument('fuel_loads_fireplace_fuel_type', HPXML::FuelTypeWoodPellets)
1860
+ elsif ['base-misc-neighbor-shading.osw'].include? osw_file
1861
+ step.setArgument('neighbor_back_distance', 10)
1862
+ step.setArgument('neighbor_front_distance', 15)
1863
+ step.setArgument('neighbor_front_height', '12')
1864
+ elsif ['base-misc-shielding-of-home.osw'].include? osw_file
1865
+ step.setArgument('air_leakage_shielding_of_home', HPXML::ShieldingWellShielded)
1707
1866
  elsif ['base-misc-usage-multiplier.osw'].include? osw_file
1708
1867
  step.setArgument('water_fixtures_usage_multiplier', 0.9)
1709
1868
  step.setArgument('lighting_usage_multiplier_interior', 0.9)
@@ -1713,7 +1872,6 @@ def get_values(osw_file, step)
1713
1872
  step.setArgument('clothes_dryer_usage_multiplier', 0.9)
1714
1873
  step.setArgument('dishwasher_usage_multiplier', 0.9)
1715
1874
  step.setArgument('refrigerator_usage_multiplier', 0.9)
1716
- step.setArgument('freezer_present', true)
1717
1875
  step.setArgument('freezer_location', HPXML::LocationLivingSpace)
1718
1876
  step.setArgument('freezer_rated_annual_kwh', '300.0')
1719
1877
  step.setArgument('freezer_usage_multiplier', 0.9)
@@ -1745,10 +1903,6 @@ def get_values(osw_file, step)
1745
1903
  step.setArgument('fuel_loads_fireplace_frac_sensible', '0.5')
1746
1904
  step.setArgument('fuel_loads_fireplace_frac_latent', '0.1')
1747
1905
  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
1906
  elsif ['base-pv.osw'].include? osw_file
1753
1907
  step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
1754
1908
  step.setArgument('pv_system_location_1', HPXML::LocationRoof)
@@ -1758,16 +1912,6 @@ def get_values(osw_file, step)
1758
1912
  step.setArgument('pv_system_tracking_2', HPXML::PVTrackingTypeFixed)
1759
1913
  step.setArgument('pv_system_array_azimuth_2', 90)
1760
1914
  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
1915
  elsif ['base-simcontrol-calendar-year-custom.osw'].include? osw_file
1772
1916
  step.setArgument('simulation_control_run_period_calendar_year', 2008)
1773
1917
  elsif ['base-simcontrol-daylight-saving-custom.osw'].include? osw_file
@@ -1780,6 +1924,11 @@ def get_values(osw_file, step)
1780
1924
  step.setArgument('simulation_control_daylight_saving_enabled', false)
1781
1925
  elsif ['base-schedules-stochastic.osw'].include? osw_file
1782
1926
  step.setArgument('schedules_type', 'stochastic')
1927
+ elsif ['base-schedules-stochastic-vacant.osw'].include? osw_file
1928
+ step.setArgument('schedules_vacancy_begin_month', 1)
1929
+ step.setArgument('schedules_vacancy_begin_day_of_month', 1)
1930
+ step.setArgument('schedules_vacancy_end_month', 12)
1931
+ step.setArgument('schedules_vacancy_end_day_of_month', 31)
1783
1932
  elsif ['base-schedules-user-specified.osw'].include? osw_file
1784
1933
  step.setArgument('schedules_type', 'user-specified')
1785
1934
  step.setArgument('schedules_path', 'BuildResidentialHPXML/tests/schedules/user-specified.csv')
@@ -1814,8 +1963,8 @@ def get_values(osw_file, step)
1814
1963
  step.setArgument('solar_thermal_system_type', 'hot water')
1815
1964
  step.setArgument('solar_thermal_collector_tilt', 'latitude-15')
1816
1965
  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
1966
+ step.setArgument('extra_refrigerator_location', HPXML::LocationLivingSpace)
1967
+ elsif ['extra-second-heating-system-portable-heater-to-heating-system.osw'].include? osw_file
1819
1968
  step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
1820
1969
  step.setArgument('heating_system_heating_capacity', '48000.0')
1821
1970
  step.setArgument('heating_system_fraction_heat_load_served', 0.75)
@@ -1825,39 +1974,284 @@ def get_values(osw_file, step)
1825
1974
  step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
1826
1975
  step.setArgument('heating_system_type_2', HPXML::HVACTypePortableHeater)
1827
1976
  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)
1977
+ elsif ['extra-second-heating-system-fireplace-to-heating-system.osw'].include? osw_file
1831
1978
  step.setArgument('heating_system_heating_capacity', '48000.0')
1832
1979
  step.setArgument('heating_system_fraction_heat_load_served', 0.75)
1833
1980
  step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1834
1981
  step.setArgument('heating_system_heating_capacity_2', '16000.0')
1982
+ elsif ['extra-second-heating-system-boiler-to-heating-system.osw'].include? osw_file
1983
+ step.setArgument('heating_system_fraction_heat_load_served', 0.75)
1984
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeBoiler)
1985
+ elsif ['extra-second-heating-system-portable-heater-to-heat-pump.osw'].include? osw_file
1986
+ step.setArgument('heat_pump_heating_capacity', '48000.0')
1987
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
1988
+ step.setArgument('ducts_supply_leakage_value', 0.0)
1989
+ step.setArgument('ducts_return_leakage_value', 0.0)
1990
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
1991
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
1992
+ step.setArgument('heating_system_type_2', HPXML::HVACTypePortableHeater)
1993
+ step.setArgument('heating_system_heating_capacity_2', '16000.0')
1994
+ elsif ['extra-second-heating-system-fireplace-to-heat-pump.osw'].include? osw_file
1995
+ step.setArgument('heat_pump_heating_capacity', '48000.0')
1996
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
1997
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1998
+ step.setArgument('heating_system_heating_capacity_2', '16000.0')
1999
+ elsif ['extra-second-heating-system-boiler-to-heat-pump.osw'].include? osw_file
2000
+ step.setArgument('heat_pump_fraction_heat_load_served', 0.75)
2001
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeBoiler)
2002
+ elsif ['extra-enclosure-windows-shading.osw'].include? osw_file
2003
+ step.setArgument('window_interior_shading_winter', 0.99)
2004
+ step.setArgument('window_interior_shading_summer', 0.01)
2005
+ step.setArgument('window_exterior_shading_winter', 0.9)
2006
+ step.setArgument('window_exterior_shading_summer', 0.1)
1835
2007
  elsif ['extra-enclosure-garage-partially-protruded.osw'].include? osw_file
1836
2008
  step.setArgument('geometry_garage_width', 12)
1837
2009
  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)
2010
+ elsif ['extra-enclosure-garage-atticroof-conditioned.osw'].include? osw_file
2011
+ step.setArgument('geometry_cfa', 4500.0)
2012
+ step.setArgument('geometry_num_floors_above_grade', 2)
2013
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2014
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-gable.osw'].include? osw_file
2015
+ step.setArgument('geometry_num_floors_above_grade', 2)
2016
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2017
+ step.setArgument('geometry_eaves_depth', 2)
2018
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-hip.osw'].include? osw_file
2019
+ step.setArgument('geometry_roof_type', 'hip')
1843
2020
  elsif ['extra-schedules-random-seed.osw'].include? osw_file
1844
2021
  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)
2022
+ elsif ['extra-zero-refrigerator-kwh.osw'].include? osw_file
2023
+ step.setArgument('refrigerator_rated_annual_kwh', '0')
2024
+ elsif ['extra-zero-extra-refrigerator-kwh.osw'].include? osw_file
2025
+ step.setArgument('extra_refrigerator_rated_annual_kwh', '0')
2026
+ elsif ['extra-zero-freezer-kwh.osw'].include? osw_file
2027
+ step.setArgument('freezer_rated_annual_kwh', '0')
2028
+ elsif ['extra-zero-clothes-washer-kwh.osw'].include? osw_file
2029
+ step.setArgument('clothes_washer_rated_annual_kwh', '0')
2030
+ step.setArgument('clothes_dryer_location', 'none')
2031
+ elsif ['extra-zero-dishwasher-kwh.osw'].include? osw_file
2032
+ step.setArgument('dishwasher_efficiency', '0')
2033
+
2034
+ elsif ['extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw'].include? osw_file
2035
+ step.setArgument('geometry_num_floors_above_grade', 2)
2036
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2037
+ step.setArgument('geometry_eaves_depth', 2)
2038
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
2039
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
2040
+ elsif ['extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw'].include? osw_file
2041
+ step.setArgument('geometry_roof_type', 'hip')
2042
+ elsif ['extra-bldgtype-multifamily-eaves.osw'].include? osw_file
2043
+ step.setArgument('geometry_eaves_depth', 2)
2044
+
2045
+ elsif ['extra-bldgtype-single-family-attached-slab.osw'].include? osw_file
2046
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
2047
+ step.setArgument('geometry_foundation_height', 0.0)
2048
+ step.setArgument('geometry_foundation_height_above_grade', 0.0)
2049
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace.osw'].include? osw_file
2050
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
2051
+ step.setArgument('geometry_foundation_height', 4.0)
2052
+ step.setArgument('floor_assembly_r', 18.7)
2053
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2054
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace.osw'].include? osw_file
2055
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
2056
+ step.setArgument('geometry_foundation_height', 4.0)
2057
+ step.setArgument('floor_assembly_r', 18.7)
2058
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2059
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement.osw'].include? osw_file
2060
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
2061
+ step.setArgument('floor_assembly_r', 18.7)
2062
+ step.setArgument('foundation_wall_insulation_r', 0)
2063
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0)
2064
+
2065
+ elsif ['extra-bldgtype-single-family-attached-double-loaded-interior.osw'].include? osw_file
2066
+ step.setArgument('geometry_building_num_units', 4)
2067
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2068
+ elsif ['extra-bldgtype-single-family-attached-single-exterior-front.osw'].include? osw_file
2069
+ step.setArgument('geometry_corridor_position', 'Single Exterior (Front)')
2070
+ elsif ['extra-bldgtype-single-family-attached-double-exterior.osw'].include? osw_file
2071
+ step.setArgument('geometry_building_num_units', 4)
2072
+ step.setArgument('geometry_corridor_position', 'Double Exterior')
2073
+
2074
+ elsif ['extra-bldgtype-single-family-attached-slab-middle.osw'].include? osw_file
2075
+ step.setArgument('geometry_horizontal_location', 'Middle')
2076
+ elsif ['extra-bldgtype-single-family-attached-slab-right.osw'].include? osw_file
2077
+ step.setArgument('geometry_horizontal_location', 'Right')
2078
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw'].include? osw_file
2079
+ step.setArgument('geometry_horizontal_location', 'Middle')
2080
+ elsif ['extra-bldgtype-single-family-attached-vented-crawlspace-right.osw'].include? osw_file
2081
+ step.setArgument('geometry_horizontal_location', 'Right')
2082
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw'].include? osw_file
2083
+ step.setArgument('geometry_horizontal_location', 'Middle')
2084
+ elsif ['extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw'].include? osw_file
2085
+ step.setArgument('geometry_horizontal_location', 'Right')
2086
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw'].include? osw_file
2087
+ step.setArgument('geometry_horizontal_location', 'Middle')
2088
+ elsif ['extra-bldgtype-single-family-attached-unconditioned-basement-right.osw'].include? osw_file
2089
+ step.setArgument('geometry_horizontal_location', 'Right')
2090
+
2091
+ elsif ['extra-bldgtype-multifamily-slab.osw'].include? osw_file
2092
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
2093
+ step.setArgument('geometry_foundation_height', 0.0)
2094
+ step.setArgument('geometry_foundation_height_above_grade', 0.0)
2095
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace.osw'].include? osw_file
2096
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
2097
+ step.setArgument('geometry_foundation_height', 4.0)
2098
+ step.setArgument('floor_assembly_r', 18.7)
2099
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2100
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace.osw'].include? osw_file
2101
+ step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
2102
+ step.setArgument('geometry_foundation_height', 4.0)
2103
+ step.setArgument('floor_assembly_r', 18.7)
2104
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
2105
+
2106
+ elsif ['extra-bldgtype-multifamily-double-loaded-interior.osw'].include? osw_file
2107
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2108
+ elsif ['extra-bldgtype-multifamily-single-exterior-front.osw'].include? osw_file
2109
+ step.setArgument('geometry_corridor_position', 'Single Exterior (Front)')
2110
+ elsif ['extra-bldgtype-multifamily-double-exterior.osw'].include? osw_file
2111
+ step.setArgument('geometry_corridor_position', 'Double Exterior')
2112
+
2113
+ elsif ['extra-bldgtype-multifamily-slab-left-bottom.osw'].include? osw_file
2114
+ step.setArgument('geometry_horizontal_location', 'Left')
2115
+ step.setArgument('geometry_level', 'Bottom')
2116
+ elsif ['extra-bldgtype-multifamily-slab-left-middle.osw'].include? osw_file
2117
+ step.setArgument('geometry_horizontal_location', 'Left')
2118
+ step.setArgument('geometry_level', 'Middle')
2119
+ elsif ['extra-bldgtype-multifamily-slab-left-top.osw'].include? osw_file
2120
+ step.setArgument('geometry_horizontal_location', 'Left')
2121
+ step.setArgument('geometry_level', 'Top')
2122
+ elsif ['extra-bldgtype-multifamily-slab-middle-bottom.osw'].include? osw_file
2123
+ step.setArgument('geometry_horizontal_location', 'Middle')
2124
+ step.setArgument('geometry_level', 'Bottom')
2125
+ elsif ['extra-bldgtype-multifamily-slab-middle-middle.osw'].include? osw_file
2126
+ step.setArgument('geometry_horizontal_location', 'Middle')
2127
+ step.setArgument('geometry_level', 'Middle')
2128
+ elsif ['extra-bldgtype-multifamily-slab-middle-top.osw'].include? osw_file
2129
+ step.setArgument('geometry_horizontal_location', 'Middle')
2130
+ step.setArgument('geometry_level', 'Top')
2131
+ elsif ['extra-bldgtype-multifamily-slab-right-bottom.osw'].include? osw_file
2132
+ step.setArgument('geometry_horizontal_location', 'Right')
2133
+ step.setArgument('geometry_level', 'Bottom')
2134
+ elsif ['extra-bldgtype-multifamily-slab-right-middle.osw'].include? osw_file
2135
+ step.setArgument('geometry_horizontal_location', 'Right')
2136
+ step.setArgument('geometry_level', 'Middle')
2137
+ elsif ['extra-bldgtype-multifamily-slab-right-top.osw'].include? osw_file
2138
+ step.setArgument('geometry_horizontal_location', 'Right')
2139
+ step.setArgument('geometry_level', 'Top')
2140
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw'].include? osw_file
2141
+ step.setArgument('geometry_horizontal_location', 'Left')
2142
+ step.setArgument('geometry_level', 'Bottom')
2143
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw'].include? osw_file
2144
+ step.setArgument('geometry_horizontal_location', 'Left')
2145
+ step.setArgument('geometry_level', 'Middle')
2146
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-top.osw'].include? osw_file
2147
+ step.setArgument('geometry_horizontal_location', 'Left')
2148
+ step.setArgument('geometry_level', 'Top')
2149
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw'].include? osw_file
2150
+ step.setArgument('geometry_horizontal_location', 'Middle')
2151
+ step.setArgument('geometry_level', 'Bottom')
2152
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw'].include? osw_file
2153
+ step.setArgument('geometry_horizontal_location', 'Middle')
2154
+ step.setArgument('geometry_level', 'Middle')
2155
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw'].include? osw_file
2156
+ step.setArgument('geometry_horizontal_location', 'Middle')
2157
+ step.setArgument('geometry_level', 'Top')
2158
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw'].include? osw_file
2159
+ step.setArgument('geometry_horizontal_location', 'Right')
2160
+ step.setArgument('geometry_level', 'Bottom')
2161
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw'].include? osw_file
2162
+ step.setArgument('geometry_horizontal_location', 'Right')
2163
+ step.setArgument('geometry_level', 'Middle')
2164
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-top.osw'].include? osw_file
2165
+ step.setArgument('geometry_horizontal_location', 'Right')
2166
+ step.setArgument('geometry_level', 'Top')
2167
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw'].include? osw_file
2168
+ step.setArgument('geometry_horizontal_location', 'Left')
2169
+ step.setArgument('geometry_level', 'Bottom')
2170
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw'].include? osw_file
2171
+ step.setArgument('geometry_horizontal_location', 'Left')
2172
+ step.setArgument('geometry_level', 'Middle')
2173
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw'].include? osw_file
2174
+ step.setArgument('geometry_horizontal_location', 'Left')
2175
+ step.setArgument('geometry_level', 'Top')
2176
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw'].include? osw_file
2177
+ step.setArgument('geometry_horizontal_location', 'Middle')
2178
+ step.setArgument('geometry_level', 'Bottom')
2179
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw'].include? osw_file
2180
+ step.setArgument('geometry_horizontal_location', 'Middle')
2181
+ step.setArgument('geometry_level', 'Middle')
2182
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw'].include? osw_file
2183
+ step.setArgument('geometry_horizontal_location', 'Middle')
2184
+ step.setArgument('geometry_level', 'Top')
2185
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw'].include? osw_file
2186
+ step.setArgument('geometry_horizontal_location', 'Right')
2187
+ step.setArgument('geometry_level', 'Bottom')
2188
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw'].include? osw_file
2189
+ step.setArgument('geometry_horizontal_location', 'Right')
2190
+ step.setArgument('geometry_level', 'Middle')
2191
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw'].include? osw_file
2192
+ step.setArgument('geometry_horizontal_location', 'Right')
2193
+ step.setArgument('geometry_level', 'Top')
2194
+
2195
+ elsif ['extra-bldgtype-multifamily-slab-double-loaded-interior.osw'].include? osw_file
2196
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2197
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw'].include? osw_file
2198
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2199
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw'].include? osw_file
2200
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2201
+ elsif ['extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw'].include? osw_file
2202
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2203
+ elsif ['extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw'].include? osw_file
2204
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2205
+ elsif ['extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw'].include? osw_file
2206
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2207
+ elsif ['extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw'].include? osw_file
2208
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2209
+ elsif ['extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw'].include? osw_file
2210
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2211
+ elsif ['extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw'].include? osw_file
2212
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2213
+ elsif ['extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw'].include? osw_file
2214
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2215
+ elsif ['extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw'].include? osw_file
2216
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2217
+ elsif ['extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw'].include? osw_file
2218
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2219
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw'].include? osw_file
2220
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2221
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw'].include? osw_file
2222
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2223
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw'].include? osw_file
2224
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2225
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw'].include? osw_file
2226
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2227
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw'].include? osw_file
2228
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2229
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw'].include? osw_file
2230
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2231
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw'].include? osw_file
2232
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2233
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw'].include? osw_file
2234
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2235
+ elsif ['extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw'].include? osw_file
2236
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2237
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw'].include? osw_file
2238
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2239
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw'].include? osw_file
2240
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2241
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw'].include? osw_file
2242
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2243
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw'].include? osw_file
2244
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2245
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw'].include? osw_file
2246
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2247
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw'].include? osw_file
2248
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2249
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw'].include? osw_file
2250
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2251
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw'].include? osw_file
2252
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
2253
+ elsif ['extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw'].include? osw_file
2254
+ step.setArgument('geometry_corridor_position', 'Double-Loaded Interior')
1861
2255
  end
1862
2256
 
1863
2257
  # Warnings/Errors
@@ -1882,6 +2276,7 @@ def get_values(osw_file, step)
1882
2276
  step.setArgument('geometry_foundation_height', 0.0)
1883
2277
  elsif ['invalid_files/single-family-attached-ambient.osw'].include? osw_file
1884
2278
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeAmbient)
2279
+ step.setArgument('geometry_rim_joist_height', 0)
1885
2280
  elsif ['invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw'].include? osw_file
1886
2281
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
1887
2282
  step.setArgument('geometry_foundation_height_above_grade', 0.0)
@@ -1899,6 +2294,12 @@ def get_values(osw_file, step)
1899
2294
  step.setArgument('heating_system_fraction_heat_load_served', 0.4)
1900
2295
  step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1901
2296
  step.setArgument('heating_system_fraction_heat_load_served_2', 0.6)
2297
+ elsif ['invalid_files/second-heating-system-serves-total-heat-load.osw'].include? osw_file
2298
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
2299
+ step.setArgument('heating_system_fraction_heat_load_served_2', 1.0)
2300
+ elsif ['invalid_files/second-heating-system-but-no-primary-heating.osw'].include? osw_file
2301
+ step.setArgument('heating_system_type', 'none')
2302
+ step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
1902
2303
  elsif ['invalid_files/single-family-attached-no-building-orientation.osw'].include? osw_file
1903
2304
  step.removeArgument('geometry_building_num_units')
1904
2305
  step.removeArgument('geometry_horizontal_location')
@@ -1910,16 +2311,20 @@ def get_values(osw_file, step)
1910
2311
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
1911
2312
  step.setArgument('geometry_foundation_height', 3.0)
1912
2313
  step.setArgument('floor_assembly_r', 10)
2314
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0.0)
1913
2315
  elsif ['invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw'].include? osw_file
1914
2316
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
1915
2317
  step.setArgument('geometry_foundation_height', 3.0)
1916
2318
  step.setArgument('floor_assembly_r', 10)
2319
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 0.0)
1917
2320
  elsif ['invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw'].include? osw_file
1918
2321
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
1919
2322
  step.setArgument('floor_assembly_r', 10)
1920
2323
  elsif ['invalid_files/vented-attic-with-floor-and-roof-insulation.osw'].include? osw_file
1921
2324
  step.setArgument('geometry_attic_type', HPXML::AtticTypeVented)
1922
2325
  step.setArgument('roof_assembly_r', 10)
2326
+ step.setArgument('ducts_supply_location', HPXML::LocationAtticVented)
2327
+ step.setArgument('ducts_return_location', HPXML::LocationAtticVented)
1923
2328
  elsif ['invalid_files/unvented-attic-with-floor-and-roof-insulation.osw'].include? osw_file
1924
2329
  step.setArgument('geometry_attic_type', HPXML::AtticTypeUnvented)
1925
2330
  step.setArgument('roof_assembly_r', 10)
@@ -1927,20 +2332,34 @@ def get_values(osw_file, step)
1927
2332
  step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementConditioned)
1928
2333
  step.setArgument('floor_assembly_r', 10)
1929
2334
  elsif ['invalid_files/conditioned-attic-with-floor-insulation.osw'].include? osw_file
2335
+ step.setArgument('geometry_num_floors_above_grade', 2)
1930
2336
  step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2337
+ step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
2338
+ step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
1931
2339
  elsif ['invalid_files/dhw-indirect-without-boiler.osw'].include? osw_file
1932
2340
  step.setArgument('water_heater_type', HPXML::WaterHeaterTypeCombiStorage)
1933
- elsif ['invalid_files/multipliers-without-plug-loads.osw'].include? osw_file
2341
+ elsif ['invalid_files/multipliers-without-tv-plug-loads.osw'].include? osw_file
1934
2342
  step.setArgument('plug_loads_television_annual_kwh', '0.0')
2343
+ elsif ['invalid_files/multipliers-without-other-plug-loads.osw'].include? osw_file
1935
2344
  step.setArgument('plug_loads_other_annual_kwh', '0.0')
2345
+ elsif ['invalid_files/multipliers-without-well-pump-plug-loads.osw'].include? osw_file
2346
+ step.setArgument('plug_loads_well_pump_annual_kwh', '0.0')
1936
2347
  step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
1937
- step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
2348
+ elsif ['invalid_files/multipliers-without-vehicle-plug-loads.osw'].include? osw_file
2349
+ step.setArgument('plug_loads_vehicle_annual_kwh', '0.0')
1938
2350
  step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
1939
- step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
1940
2351
  elsif ['invalid_files/multipliers-without-fuel-loads.osw'].include? osw_file
1941
2352
  step.setArgument('fuel_loads_grill_usage_multiplier', 1.0)
1942
2353
  step.setArgument('fuel_loads_lighting_usage_multiplier', 1.0)
1943
2354
  step.setArgument('fuel_loads_fireplace_usage_multiplier', 1.0)
2355
+ elsif ['invalid_files/foundation-wall-insulation-greater-than-height.osw'].include? osw_file
2356
+ step.setArgument('floor_assembly_r', 0)
2357
+ step.setArgument('foundation_wall_insulation_distance_to_bottom', 6.0)
2358
+ elsif ['invalid_files/conditioned-attic-with-one-floor-above-grade.osw'].include? osw_file
2359
+ step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
2360
+ step.setArgument('ceiling_assembly_r', 0.0)
2361
+ elsif ['invalid_files/zero-number-of-bedrooms.osw'].include? osw_file
2362
+ step.setArgument('geometry_num_bedrooms', 0)
1944
2363
  end
1945
2364
  return step
1946
2365
  end
@@ -1950,6 +2369,7 @@ def create_hpxmls
1950
2369
  require_relative 'HPXMLtoOpenStudio/resources/constants'
1951
2370
  require_relative 'HPXMLtoOpenStudio/resources/hotwater_appliances'
1952
2371
  require_relative 'HPXMLtoOpenStudio/resources/hpxml'
2372
+ require_relative 'HPXMLtoOpenStudio/resources/location'
1953
2373
  require_relative 'HPXMLtoOpenStudio/resources/misc_loads'
1954
2374
  require_relative 'HPXMLtoOpenStudio/resources/waterheater'
1955
2375
  require_relative 'HPXMLtoOpenStudio/resources/xmlhelper'
@@ -1989,14 +2409,19 @@ def create_hpxmls
1989
2409
  'ASHRAE_Standard_140/L304XC.xml' => 'ASHRAE_Standard_140/L302XC.xml',
1990
2410
  'ASHRAE_Standard_140/L324XC.xml' => 'ASHRAE_Standard_140/L322XC.xml',
1991
2411
 
2412
+ 'invalid_files/boiler-invalid-afue.xml' => 'base-hvac-boiler-oil-only.xml',
1992
2413
  'invalid_files/cfis-with-hydronic-distribution.xml' => 'base-hvac-boiler-gas-only.xml',
1993
2414
  'invalid_files/clothes-washer-location.xml' => 'base.xml',
1994
2415
  'invalid_files/clothes-dryer-location.xml' => 'base.xml',
1995
2416
  'invalid_files/cooking-range-location.xml' => 'base.xml',
2417
+ 'invalid_files/dehumidifier-fraction-served.xml' => 'base-appliances-dehumidifier-multiple.xml',
2418
+ 'invalid_files/dehumidifier-setpoints.xml' => 'base-appliances-dehumidifier-multiple.xml',
1996
2419
  'invalid_files/dhw-frac-load-served.xml' => 'base-dhw-multiple.xml',
1997
2420
  'invalid_files/dhw-invalid-ef-tank.xml' => 'base.xml',
1998
2421
  'invalid_files/dhw-invalid-uef-tank-heat-pump.xml' => 'base-dhw-tank-heat-pump-uef.xml',
1999
2422
  'invalid_files/dishwasher-location.xml' => 'base.xml',
2423
+ 'invalid_files/duct-leakage-cfm25.xml' => 'base.xml',
2424
+ 'invalid_files/duct-leakage-percent.xml' => 'base.xml',
2000
2425
  'invalid_files/duct-location.xml' => 'base.xml',
2001
2426
  'invalid_files/duct-location-unconditioned-space.xml' => 'base.xml',
2002
2427
  'invalid_files/duplicate-id.xml' => 'base.xml',
@@ -2004,14 +2429,19 @@ def create_hpxmls
2004
2429
  'invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml' => 'base-foundation-unconditioned-basement.xml',
2005
2430
  'invalid_files/enclosure-basement-missing-slab.xml' => 'base-foundation-unconditioned-basement.xml',
2006
2431
  'invalid_files/enclosure-floor-area-exceeds-cfa.xml' => 'base.xml',
2432
+ 'invalid_files/enclosure-floor-area-exceeds-cfa2.xml' => 'base-bldgtype-multifamily.xml',
2007
2433
  'invalid_files/enclosure-garage-missing-exterior-wall.xml' => 'base-enclosure-garage.xml',
2008
2434
  'invalid_files/enclosure-garage-missing-roof-ceiling.xml' => 'base-enclosure-garage.xml',
2009
2435
  'invalid_files/enclosure-garage-missing-slab.xml' => 'base-enclosure-garage.xml',
2010
2436
  'invalid_files/enclosure-living-missing-ceiling-roof.xml' => 'base.xml',
2011
2437
  'invalid_files/enclosure-living-missing-exterior-wall.xml' => 'base.xml',
2012
- 'invalid_files/enclosure-living-missing-floor-slab.xml' => 'base.xml',
2438
+ 'invalid_files/enclosure-living-missing-floor-slab.xml' => 'base-foundation-slab.xml',
2439
+ 'invalid_files/frac-sensible-fuel-load.xml' => 'base-misc-loads-large-uncommon.xml',
2440
+ 'invalid_files/frac-sensible-plug-load.xml' => 'base-misc-loads-large-uncommon.xml',
2441
+ 'invalid_files/frac-total-fuel-load.xml' => 'base-misc-loads-large-uncommon.xml',
2442
+ 'invalid_files/frac-total-plug-load.xml' => 'base-misc-loads-large-uncommon.xml',
2443
+ 'invalid_files/furnace-invalid-afue.xml' => 'base.xml',
2013
2444
  '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
2445
  'invalid_files/hvac-invalid-distribution-system-type.xml' => 'base.xml',
2016
2446
  'invalid_files/hvac-distribution-multiple-attached-cooling.xml' => 'base-hvac-multiple.xml',
2017
2447
  'invalid_files/hvac-distribution-multiple-attached-heating.xml' => 'base-hvac-multiple.xml',
@@ -2020,6 +2450,9 @@ def create_hpxmls
2020
2450
  'invalid_files/hvac-dse-multiple-attached-heating.xml' => 'base-hvac-dse.xml',
2021
2451
  'invalid_files/hvac-frac-load-served.xml' => 'base-hvac-multiple.xml',
2022
2452
  'invalid_files/hvac-inconsistent-fan-powers.xml' => 'base.xml',
2453
+ 'invalid_files/generator-number-of-bedrooms-served.xml' => 'base-bldgtype-multifamily-shared-generator.xml',
2454
+ 'invalid_files/generator-output-greater-than-consumption.xml' => 'base-misc-generators.xml',
2455
+ 'invalid_files/invalid-assembly-effective-rvalue.xml' => 'base.xml',
2023
2456
  'invalid_files/invalid-datatype-boolean.xml' => 'base.xml',
2024
2457
  'invalid_files/invalid-datatype-float.xml' => 'base.xml',
2025
2458
  'invalid_files/invalid-datatype-integer.xml' => 'base.xml',
@@ -2027,12 +2460,20 @@ def create_hpxmls
2027
2460
  'invalid_files/invalid-epw-filepath.xml' => 'base.xml',
2028
2461
  'invalid_files/invalid-facility-type-equipment.xml' => 'base-bldgtype-multifamily-shared-laundry-room.xml',
2029
2462
  'invalid_files/invalid-facility-type-surfaces.xml' => 'base.xml',
2463
+ 'invalid_files/invalid-foundation-wall-properties.xml' => 'base-foundation-unconditioned-basement-wall-insulation.xml',
2464
+ 'invalid_files/invalid-id.xml' => 'base-enclosure-skylights.xml',
2465
+ 'invalid_files/invalid-id2.xml' => 'base-enclosure-skylights.xml',
2466
+ 'invalid_files/invalid-infiltration-volume.xml' => 'base.xml',
2030
2467
  'invalid_files/invalid-input-parameters.xml' => 'base.xml',
2031
2468
  'invalid_files/invalid-neighbor-shading-azimuth.xml' => 'base-misc-neighbor-shading.xml',
2469
+ 'invalid_files/invalid-number-of-bedrooms-served.xml' => 'base-bldgtype-multifamily-shared-pv.xml',
2470
+ 'invalid_files/invalid-number-of-conditioned-floors.xml' => 'base.xml',
2471
+ 'invalid_files/invalid-number-of-units-served.xml' => 'base-bldgtype-multifamily-shared-water-heater.xml',
2032
2472
  'invalid_files/invalid-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
2033
2473
  'invalid_files/invalid-relatedhvac-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2034
2474
  'invalid_files/invalid-runperiod.xml' => 'base.xml',
2035
2475
  'invalid_files/invalid-schema-version.xml' => 'base.xml',
2476
+ 'invalid_files/invalid-shared-vent-in-unit-flowrate.xml' => 'base-bldgtype-multifamily-shared-mechvent.xml',
2036
2477
  'invalid_files/invalid-timestep.xml' => 'base.xml',
2037
2478
  'invalid_files/invalid-window-height.xml' => 'base-enclosure-overhangs.xml',
2038
2479
  'invalid_files/lighting-fractions.xml' => 'base.xml',
@@ -2041,6 +2482,10 @@ def create_hpxmls
2041
2482
  'invalid_files/multifamily-reference-duct.xml' => 'base.xml',
2042
2483
  'invalid_files/multifamily-reference-surface.xml' => 'base.xml',
2043
2484
  'invalid_files/multifamily-reference-water-heater.xml' => 'base.xml',
2485
+ 'invalid_files/multiple-buildings-without-building-id.xml' => 'base.xml',
2486
+ 'invalid_files/multiple-buildings-wrong-building-id.xml' => 'base.xml',
2487
+ 'invalid_files/multiple-shared-cooling-systems.xml' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
2488
+ 'invalid_files/multiple-shared-heating-systems.xml' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
2044
2489
  'invalid_files/net-area-negative-roof.xml' => 'base-enclosure-skylights.xml',
2045
2490
  'invalid_files/net-area-negative-wall.xml' => 'base.xml',
2046
2491
  'invalid_files/num-bedrooms-exceeds-limit.xml' => 'base.xml',
@@ -2048,7 +2493,6 @@ def create_hpxmls
2048
2493
  'invalid_files/refrigerator-location.xml' => 'base.xml',
2049
2494
  'invalid_files/repeated-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
2050
2495
  'invalid_files/repeated-relatedhvac-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2051
- 'invalid_files/slab-zero-exposed-perimeter.xml' => 'base.xml',
2052
2496
  'invalid_files/solar-thermal-system-with-combi-tankless.xml' => 'base-dhw-combi-tankless.xml',
2053
2497
  'invalid_files/solar-thermal-system-with-desuperheater.xml' => 'base-dhw-desuperheater.xml',
2054
2498
  'invalid_files/solar-thermal-system-with-dhw-indirect.xml' => 'base-dhw-combi-tankless.xml',
@@ -2071,6 +2515,7 @@ def create_hpxmls
2071
2515
  'base-appliances-dehumidifier-50percent.xml' => 'base-appliances-dehumidifier.xml',
2072
2516
  'base-appliances-dehumidifier-ief-portable.xml' => 'base-appliances-dehumidifier.xml',
2073
2517
  'base-appliances-dehumidifier-ief-whole-home.xml' => 'base-appliances-dehumidifier-ief-portable.xml',
2518
+ 'base-appliances-dehumidifier-multiple.xml' => 'base-appliances-dehumidifier-50percent.xml',
2074
2519
  'base-appliances-gas.xml' => 'base.xml',
2075
2520
  'base-appliances-modified.xml' => 'base.xml',
2076
2521
  'base-appliances-none.xml' => 'base.xml',
@@ -2181,10 +2626,12 @@ def create_hpxmls
2181
2626
  'base-enclosure-overhangs.xml' => 'base.xml',
2182
2627
  'base-enclosure-rooftypes.xml' => 'base.xml',
2183
2628
  'base-enclosure-skylights.xml' => 'base.xml',
2629
+ 'base-enclosure-skylights-shading.xml' => 'base-enclosure-skylights.xml',
2184
2630
  'base-enclosure-split-level.xml' => 'base-foundation-slab.xml',
2185
- 'base-enclosure-split-surfaces.xml' => 'base-enclosure-skylights.xml',
2631
+ 'base-enclosure-split-surfaces.xml' => 'base-enclosure-skylights.xml', # Surfaces should collapse via HPXML.collapse_enclosure_surfaces()
2632
+ 'base-enclosure-split-surfaces2.xml' => 'base-enclosure-skylights.xml', # Surfaces should NOT collapse via HPXML.collapse_enclosure_surfaces()
2186
2633
  'base-enclosure-walltypes.xml' => 'base.xml',
2187
- 'base-enclosure-windows-interior-shading.xml' => 'base.xml',
2634
+ 'base-enclosure-windows-shading.xml' => 'base.xml',
2188
2635
  'base-enclosure-windows-none.xml' => 'base.xml',
2189
2636
  'base-foundation-multiple.xml' => 'base-foundation-unconditioned-basement.xml',
2190
2637
  'base-foundation-ambient.xml' => 'base.xml',
@@ -2199,9 +2646,50 @@ def create_hpxmls
2199
2646
  'base-foundation-vented-crawlspace.xml' => 'base.xml',
2200
2647
  'base-foundation-walkout-basement.xml' => 'base.xml',
2201
2648
  'base-foundation-complex.xml' => 'base.xml',
2649
+ 'base-foundation-basement-garage.xml' => 'base.xml',
2202
2650
  'base-hvac-air-to-air-heat-pump-1-speed.xml' => 'base.xml',
2651
+ 'base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2652
+ 'base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2203
2653
  'base-hvac-air-to-air-heat-pump-2-speed.xml' => 'base.xml',
2204
2654
  'base-hvac-air-to-air-heat-pump-var-speed.xml' => 'base.xml',
2655
+ 'base-hvac-autosize.xml' => 'base.xml',
2656
+ 'base-hvac-autosize-air-to-air-heat-pump-1-speed.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2657
+ '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',
2658
+ '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',
2659
+ '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',
2660
+ 'base-hvac-autosize-air-to-air-heat-pump-2-speed.xml' => 'base-hvac-air-to-air-heat-pump-2-speed.xml',
2661
+ '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',
2662
+ 'base-hvac-autosize-air-to-air-heat-pump-var-speed.xml' => 'base-hvac-air-to-air-heat-pump-var-speed.xml',
2663
+ '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',
2664
+ 'base-hvac-autosize-boiler-elec-only.xml' => 'base-hvac-boiler-elec-only.xml',
2665
+ 'base-hvac-autosize-boiler-gas-central-ac-1-speed.xml' => 'base-hvac-boiler-gas-central-ac-1-speed.xml',
2666
+ 'base-hvac-autosize-boiler-gas-only.xml' => 'base-hvac-boiler-gas-only.xml',
2667
+ 'base-hvac-autosize-central-ac-only-1-speed.xml' => 'base-hvac-central-ac-only-1-speed.xml',
2668
+ 'base-hvac-autosize-central-ac-only-2-speed.xml' => 'base-hvac-central-ac-only-2-speed.xml',
2669
+ 'base-hvac-autosize-central-ac-only-var-speed.xml' => 'base-hvac-central-ac-only-var-speed.xml',
2670
+ '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',
2671
+ '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',
2672
+ 'base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml' => 'base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml',
2673
+ 'base-hvac-autosize-elec-resistance-only.xml' => 'base-hvac-elec-resistance-only.xml',
2674
+ 'base-hvac-autosize-evap-cooler-furnace-gas.xml' => 'base-hvac-evap-cooler-furnace-gas.xml',
2675
+ 'base-hvac-autosize-floor-furnace-propane-only.xml' => 'base-hvac-floor-furnace-propane-only.xml',
2676
+ 'base-hvac-autosize-furnace-elec-only.xml' => 'base-hvac-furnace-elec-only.xml',
2677
+ 'base-hvac-autosize-furnace-gas-central-ac-2-speed.xml' => 'base-hvac-furnace-gas-central-ac-2-speed.xml',
2678
+ 'base-hvac-autosize-furnace-gas-central-ac-var-speed.xml' => 'base-hvac-furnace-gas-central-ac-var-speed.xml',
2679
+ 'base-hvac-autosize-furnace-gas-only.xml' => 'base-hvac-furnace-gas-only.xml',
2680
+ 'base-hvac-autosize-furnace-gas-room-ac.xml' => 'base-hvac-furnace-gas-room-ac.xml',
2681
+ 'base-hvac-autosize-ground-to-air-heat-pump.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2682
+ 'base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml' => 'base-hvac-ground-to-air-heat-pump-cooling-only.xml',
2683
+ 'base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml' => 'base-hvac-ground-to-air-heat-pump-heating-only.xml',
2684
+ 'base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-ground-to-air-heat-pump.xml',
2685
+ 'base-hvac-autosize-mini-split-heat-pump-ducted.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2686
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml' => 'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml',
2687
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml' => 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml',
2688
+ 'base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml' => 'base-hvac-autosize-mini-split-heat-pump-ducted.xml',
2689
+ 'base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2690
+ 'base-hvac-autosize-room-ac-only.xml' => 'base-hvac-room-ac-only.xml',
2691
+ 'base-hvac-autosize-stove-oil-only.xml' => 'base-hvac-stove-oil-only.xml',
2692
+ 'base-hvac-autosize-wall-furnace-elec-only.xml' => 'base-hvac-wall-furnace-elec-only.xml',
2205
2693
  'base-hvac-boiler-coal-only.xml' => 'base.xml',
2206
2694
  'base-hvac-boiler-elec-only.xml' => 'base.xml',
2207
2695
  'base-hvac-boiler-gas-central-ac-1-speed.xml' => 'base.xml',
@@ -2239,12 +2727,27 @@ def create_hpxmls
2239
2727
  'base-hvac-furnace-wood-only.xml' => 'base.xml',
2240
2728
  'base-hvac-furnace-x3-dse.xml' => 'base.xml',
2241
2729
  'base-hvac-ground-to-air-heat-pump.xml' => 'base.xml',
2242
- 'base-hvac-ideal-air.xml' => 'base.xml',
2730
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2731
+ 'base-hvac-ground-to-air-heat-pump-heating-only.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2732
+ 'base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2733
+ 'base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2734
+ 'base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2735
+ 'base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2736
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml' => 'base-hvac-air-to-air-heat-pump-1-speed.xml',
2737
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml' => 'base-hvac-air-to-air-heat-pump-2-speed.xml',
2738
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml' => 'base-hvac-air-to-air-heat-pump-var-speed.xml',
2739
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml' => 'base.xml',
2740
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml' => 'base-hvac-furnace-gas-central-ac-2-speed.xml',
2741
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml' => 'base-hvac-furnace-gas-central-ac-var-speed.xml',
2742
+ 'base-hvac-install-quality-all-furnace-gas-only.xml' => 'base-hvac-furnace-gas-only.xml',
2743
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml' => 'base-hvac-ground-to-air-heat-pump.xml',
2744
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2745
+ 'base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2243
2746
  'base-hvac-mini-split-air-conditioner-only-ducted.xml' => 'base.xml',
2244
2747
  'base-hvac-mini-split-air-conditioner-only-ductless.xml' => 'base-hvac-mini-split-air-conditioner-only-ducted.xml',
2245
2748
  '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
2749
  'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2750
+ 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2248
2751
  'base-hvac-mini-split-heat-pump-ductless.xml' => 'base-hvac-mini-split-heat-pump-ducted.xml',
2249
2752
  'base-hvac-multiple.xml' => 'base.xml',
2250
2753
  'base-hvac-multiple2.xml' => 'base.xml',
@@ -2264,10 +2767,14 @@ def create_hpxmls
2264
2767
  'base-lighting-detailed.xml' => 'base.xml',
2265
2768
  'base-lighting-none.xml' => 'base.xml',
2266
2769
  'base-location-AMY-2012.xml' => 'base.xml',
2267
- 'base-location-baltimore-md.xml' => 'base.xml',
2770
+ 'base-location-baltimore-md.xml' => 'base-foundation-unvented-crawlspace.xml',
2268
2771
  'base-location-dallas-tx.xml' => 'base-foundation-slab.xml',
2269
- 'base-location-duluth-mn.xml' => 'base.xml',
2772
+ 'base-location-duluth-mn.xml' => 'base-foundation-unconditioned-basement.xml',
2773
+ 'base-location-helena-mt.xml' => 'base.xml',
2774
+ 'base-location-honolulu-hi.xml' => 'base-foundation-slab.xml',
2270
2775
  'base-location-miami-fl.xml' => 'base-foundation-slab.xml',
2776
+ 'base-location-phoenix-az.xml' => 'base-foundation-slab.xml',
2777
+ 'base-location-portland-or.xml' => 'base-foundation-vented-crawlspace.xml',
2271
2778
  'base-mechvent-balanced.xml' => 'base.xml',
2272
2779
  'base-mechvent-bath-kitchen-fans.xml' => 'base.xml',
2273
2780
  'base-mechvent-cfis.xml' => 'base.xml',
@@ -2288,8 +2795,9 @@ def create_hpxmls
2288
2795
  'base-misc-loads-large-uncommon2.xml' => 'base-misc-loads-large-uncommon.xml',
2289
2796
  'base-misc-loads-none.xml' => 'base.xml',
2290
2797
  'base-misc-neighbor-shading.xml' => 'base.xml',
2291
- 'base-misc-shelter-coefficient.xml' => 'base.xml',
2798
+ 'base-misc-shielding-of-home.xml' => 'base.xml',
2292
2799
  'base-misc-usage-multiplier.xml' => 'base.xml',
2800
+ 'base-multiple-buildings.xml' => 'base.xml',
2293
2801
  'base-pv.xml' => 'base.xml',
2294
2802
  'base-simcontrol-calendar-year-custom.xml' => 'base.xml',
2295
2803
  'base-simcontrol-daylight-saving-custom.xml' => 'base.xml',
@@ -2297,42 +2805,8 @@ def create_hpxmls
2297
2805
  'base-simcontrol-runperiod-1-month.xml' => 'base.xml',
2298
2806
  'base-simcontrol-timestep-10-mins.xml' => 'base.xml',
2299
2807
  'base-schedules-stochastic.xml' => 'base.xml',
2808
+ 'base-schedules-stochastic-vacant.xml' => 'base-schedules-stochastic.xml',
2300
2809
  '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
2810
  }
2337
2811
 
2338
2812
  puts "Generating #{hpxmls_files.size} HPXML files..."
@@ -2418,6 +2892,9 @@ def create_hpxmls
2418
2892
  elsif ['invalid_files/invalid-schema-version.xml'].include? derivative
2419
2893
  root = XMLHelper.get_element(hpxml_doc, '/HPXML')
2420
2894
  XMLHelper.add_attribute(root, 'schemaVersion', '2.3')
2895
+ elsif ['invalid_files/invalid-id2.xml'].include? derivative
2896
+ element = XMLHelper.get_element(hpxml_doc, '/HPXML/Building/BuildingDetails/Enclosure/Skylights/Skylight/SystemIdentifier')
2897
+ XMLHelper.delete_attribute(element, 'id')
2421
2898
  end
2422
2899
 
2423
2900
  if derivative.include? 'ASHRAE_Standard_140'
@@ -2428,6 +2905,20 @@ def create_hpxmls
2428
2905
 
2429
2906
  XMLHelper.write_file(hpxml_doc, hpxml_path)
2430
2907
 
2908
+ if ['base-multiple-buildings.xml',
2909
+ 'invalid_files/multiple-buildings-without-building-id.xml',
2910
+ 'invalid_files/multiple-buildings-wrong-building-id.xml'].include? derivative
2911
+ # HPXML class doesn't support multiple buildings, so we'll stitch together manually.
2912
+ hpxml_element = XMLHelper.get_element(hpxml_doc, '/HPXML')
2913
+ building_element = XMLHelper.get_element(hpxml_element, 'Building')
2914
+ for i in 2..3
2915
+ new_building_element = Marshal.load(Marshal.dump(building_element))
2916
+ XMLHelper.add_attribute(XMLHelper.get_element(new_building_element, 'BuildingID'), 'id', "MyBuilding#{i}")
2917
+ hpxml_element.children << new_building_element
2918
+ end
2919
+ XMLHelper.write_file(hpxml_doc, hpxml_path)
2920
+ end
2921
+
2431
2922
  if not hpxml_path.include? 'invalid_files'
2432
2923
  # Validate file against HPXML schema
2433
2924
  schemas_dir = File.absolute_path(File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio/resources'))
@@ -2518,6 +3009,8 @@ def set_hpxml_header(hpxml_file, hpxml)
2518
3009
  hpxml.header.timestep = nil
2519
3010
  elsif ['base-schedules-stochastic.xml'].include? hpxml_file
2520
3011
  hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/stochastic.csv'
3012
+ elsif ['base-schedules-stochastic-vacant.xml'].include? hpxml_file
3013
+ hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/vacant.csv'
2521
3014
  elsif ['base-schedules-user-specified.xml'].include? hpxml_file
2522
3015
  hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/user-specified.csv'
2523
3016
  elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
@@ -2529,8 +3022,8 @@ def set_hpxml_site(hpxml_file, hpxml)
2529
3022
  if ['base.xml'].include? hpxml_file
2530
3023
  hpxml.site.fuels = [HPXML::FuelTypeElectricity, HPXML::FuelTypeNaturalGas]
2531
3024
  hpxml.site.site_type = HPXML::SiteTypeSuburban
2532
- elsif ['base-misc-shelter-coefficient.xml'].include? hpxml_file
2533
- hpxml.site.shelter_coefficient = 0.8
3025
+ elsif ['base-misc-shielding-of-home.xml'].include? hpxml_file
3026
+ hpxml.site.shielding_of_home = HPXML::ShieldingWellShielded
2534
3027
  elsif ['base-misc-defaults.xml'].include? hpxml_file
2535
3028
  hpxml.site.site_type = nil
2536
3029
  elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
@@ -2559,7 +3052,6 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2559
3052
  hpxml.building_construction.conditioned_floor_area = 1539
2560
3053
  hpxml.building_construction.conditioned_building_volume = 12312
2561
3054
  hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFD
2562
- hpxml.building_construction.use_only_ideal_air_system = true
2563
3055
  elsif ['ASHRAE_Standard_140/L322XC.xml'].include? hpxml_file
2564
3056
  hpxml.building_construction.number_of_conditioned_floors = 2
2565
3057
  hpxml.building_construction.conditioned_floor_area = 3078
@@ -2601,8 +3093,6 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2601
3093
  hpxml.building_construction.number_of_conditioned_floors -= 1
2602
3094
  hpxml.building_construction.conditioned_floor_area -= 1350
2603
3095
  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
3096
  elsif ['base-atticroof-conditioned.xml'].include? hpxml_file
2607
3097
  hpxml.building_construction.number_of_conditioned_floors += 1
2608
3098
  hpxml.building_construction.number_of_conditioned_floors_above_grade += 1
@@ -2615,7 +3105,8 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2615
3105
  hpxml.building_construction.number_of_conditioned_floors_above_grade += 1
2616
3106
  hpxml.building_construction.conditioned_floor_area += 1350
2617
3107
  hpxml.building_construction.conditioned_building_volume += 1350 * 8
2618
- elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
3108
+ elsif ['base-enclosure-2stories-garage.xml',
3109
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
2619
3110
  hpxml.building_construction.conditioned_floor_area -= 400 * 2
2620
3111
  hpxml.building_construction.conditioned_building_volume -= 400 * 2 * 8
2621
3112
  elsif ['base-misc-defaults.xml'].include? hpxml_file
@@ -2628,12 +3119,16 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
2628
3119
  hpxml.building_construction.number_of_conditioned_floors = 1.5
2629
3120
  hpxml.building_construction.number_of_conditioned_floors_above_grade = 1.5
2630
3121
  elsif ['invalid_files/enclosure-floor-area-exceeds-cfa.xml'].include? hpxml_file
2631
- hpxml.building_construction.conditioned_floor_area /= 5.0
3122
+ hpxml.building_construction.conditioned_floor_area = 1348.8
3123
+ elsif ['invalid_files/enclosure-floor-area-exceeds-cfa2.xml'].include? hpxml_file
3124
+ hpxml.building_construction.conditioned_floor_area = 898.8
2632
3125
  elsif ['invalid_files/num-bedrooms-exceeds-limit.xml'].include? hpxml_file
2633
3126
  hpxml.building_construction.number_of_bedrooms = 40
2634
3127
  elsif ['invalid_files/invalid-facility-type-equipment.xml',
2635
3128
  'invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
2636
3129
  hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFD
3130
+ elsif ['invalid_files/invalid-number-of-conditioned-floors.xml'].include? hpxml_file
3131
+ hpxml.building_construction.number_of_conditioned_floors_above_grade = hpxml.building_construction.number_of_conditioned_floors + 1
2637
3132
  end
2638
3133
  end
2639
3134
 
@@ -2657,30 +3152,50 @@ def set_hpxml_climate_and_risk_zones(hpxml_file, hpxml)
2657
3152
  hpxml.climate_and_risk_zones.weather_station_name = 'Las Vegas, NV'
2658
3153
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3.epw'
2659
3154
  elsif ['base.xml'].include? hpxml_file
2660
- hpxml.climate_and_risk_zones.iecc_zone = '5B'
3155
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(725650)
2661
3156
  hpxml.climate_and_risk_zones.weather_station_name = 'Denver, CO'
2662
3157
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_CO_Denver.Intl.AP.725650_TMY3.epw'
2663
3158
  hpxml.header.state_code = 'CO'
2664
3159
  elsif ['base-location-baltimore-md.xml'].include? hpxml_file
2665
- hpxml.climate_and_risk_zones.iecc_zone = '4A'
3160
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(724060)
2666
3161
  hpxml.climate_and_risk_zones.weather_station_name = 'Baltimore, MD'
2667
3162
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3.epw'
2668
3163
  hpxml.header.state_code = 'MD'
2669
3164
  elsif ['base-location-dallas-tx.xml'].include? hpxml_file
2670
- hpxml.climate_and_risk_zones.iecc_zone = '3A'
3165
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722590)
2671
3166
  hpxml.climate_and_risk_zones.weather_station_name = 'Dallas, TX'
2672
3167
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3.epw'
2673
3168
  hpxml.header.state_code = 'TX'
2674
3169
  elsif ['base-location-duluth-mn.xml'].include? hpxml_file
2675
- hpxml.climate_and_risk_zones.iecc_zone = '7'
3170
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(727450)
2676
3171
  hpxml.climate_and_risk_zones.weather_station_name = 'Duluth, MN'
2677
3172
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MN_Duluth.Intl.AP.727450_TMY3.epw'
2678
3173
  hpxml.header.state_code = 'MN'
3174
+ elsif ['base-location-helena-mt.xml'].include? hpxml_file
3175
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(727720)
3176
+ hpxml.climate_and_risk_zones.weather_station_name = 'Helena, MT'
3177
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_MT_Helena.Rgnl.AP.727720_TMY3.epw'
3178
+ hpxml.header.state_code = 'MT'
3179
+ elsif ['base-location-honolulu-hi.xml'].include? hpxml_file
3180
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(911820)
3181
+ hpxml.climate_and_risk_zones.weather_station_name = 'Honolulu, HI'
3182
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_HI_Honolulu.Intl.AP.911820_TMY3.epw'
3183
+ hpxml.header.state_code = 'HI'
2679
3184
  elsif ['base-location-miami-fl.xml'].include? hpxml_file
2680
- hpxml.climate_and_risk_zones.iecc_zone = '1A'
3185
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722020)
2681
3186
  hpxml.climate_and_risk_zones.weather_station_name = 'Miami, FL'
2682
3187
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_FL_Miami.Intl.AP.722020_TMY3.epw'
2683
3188
  hpxml.header.state_code = 'FL'
3189
+ elsif ['base-location-phoenix-az.xml'].include? hpxml_file
3190
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(722780)
3191
+ hpxml.climate_and_risk_zones.weather_station_name = 'Phoenix, AZ'
3192
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw'
3193
+ hpxml.header.state_code = 'AZ'
3194
+ elsif ['base-location-portland-or.xml'].include? hpxml_file
3195
+ hpxml.climate_and_risk_zones.iecc_zone = Location.get_climate_zone_iecc(726980)
3196
+ hpxml.climate_and_risk_zones.weather_station_name = 'Portland, OR'
3197
+ hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'USA_OR_Portland.Intl.AP.726980_TMY3.epw'
3198
+ hpxml.header.state_code = 'OR'
2684
3199
  elsif ['base-location-AMY-2012.xml'].include? hpxml_file
2685
3200
  hpxml.climate_and_risk_zones.weather_station_name = 'Boulder, CO'
2686
3201
  hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'US_CO_Boulder_AMY_2012.epw'
@@ -2729,6 +3244,8 @@ def set_hpxml_air_infiltration_measurements(hpxml_file, hpxml)
2729
3244
  end
2730
3245
  if ['base-misc-defaults.xml'].include? hpxml_file
2731
3246
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
3247
+ elsif ['invalid_files/invalid-infiltration-volume.xml'].include? hpxml_file
3248
+ hpxml.air_infiltration_measurements[0].infiltration_volume = infil_volume * 0.25
2732
3249
  else
2733
3250
  hpxml.air_infiltration_measurements[0].infiltration_volume = infil_volume
2734
3251
  end
@@ -2899,16 +3416,21 @@ def set_hpxml_roofs(hpxml_file, hpxml)
2899
3416
  elsif ['base-atticroof-cathedral.xml'].include? hpxml_file
2900
3417
  hpxml.roofs[0].interior_adjacent_to = HPXML::LocationLivingSpace
2901
3418
  hpxml.roofs[0].insulation_assembly_r_value = 25.8
2902
- elsif ['base-enclosure-garage.xml'].include? hpxml_file
3419
+ elsif ['base-enclosure-garage.xml',
3420
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
2903
3421
  hpxml.roofs[0].area += 670
2904
3422
  elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
2905
3423
  hpxml.roofs[0].insulation_assembly_r_value = 25.8
2906
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
3424
+ elsif ['base-enclosure-split-surfaces.xml',
3425
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
2907
3426
  for n in 1..hpxml.roofs.size
2908
3427
  hpxml.roofs[n - 1].area /= 9.0
2909
3428
  for i in 2..9
2910
3429
  hpxml.roofs << hpxml.roofs[n - 1].dup
2911
3430
  hpxml.roofs[-1].id += i.to_s
3431
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
3432
+ hpxml.roofs[-1].insulation_assembly_r_value += 0.01 * i
3433
+ end
2912
3434
  end
2913
3435
  end
2914
3436
  hpxml.roofs << hpxml.roofs[-1].dup
@@ -2986,6 +3508,15 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
2986
3508
  solar_absorptance: 0.7,
2987
3509
  emittance: 0.92,
2988
3510
  insulation_assembly_r_value: 23.0)
3511
+ elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
3512
+ hpxml.rim_joists[-1].area = 66
3513
+ hpxml.rim_joists.add(id: 'RimJoistOther',
3514
+ exterior_adjacent_to: HPXML::LocationBasementConditioned,
3515
+ interior_adjacent_to: HPXML::LocationBasementConditioned,
3516
+ area: 28,
3517
+ solar_absorptance: 0.7,
3518
+ emittance: 0.92,
3519
+ insulation_assembly_r_value: 4.0)
2989
3520
  elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
2990
3521
  hpxml.rim_joists.clear
2991
3522
  elsif ['base-enclosure-walltypes.xml'].include? hpxml_file
@@ -3011,7 +3542,7 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3011
3542
  elsif ['base-foundation-unconditioned-basement.xml'].include? hpxml_file
3012
3543
  for i in 0..hpxml.rim_joists.size - 1
3013
3544
  hpxml.rim_joists[i].interior_adjacent_to = HPXML::LocationBasementUnconditioned
3014
- hpxml.rim_joists[i].insulation_assembly_r_value = 2.3
3545
+ hpxml.rim_joists[i].insulation_assembly_r_value = 4.0
3015
3546
  end
3016
3547
  elsif ['base-foundation-unconditioned-basement-wall-insulation.xml'].include? hpxml_file
3017
3548
  for i in 0..hpxml.rim_joists.size - 1
@@ -3035,7 +3566,9 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3035
3566
  area: 81,
3036
3567
  solar_absorptance: 0.7,
3037
3568
  emittance: 0.92,
3038
- insulation_assembly_r_value: 2.3)
3569
+ insulation_assembly_r_value: 4.0)
3570
+ elsif ['base-enclosure-garage.xml'].include? hpxml_file
3571
+ hpxml.rim_joists[-1].area = 116
3039
3572
  elsif ['base-enclosure-2stories.xml'].include? hpxml_file
3040
3573
  hpxml.rim_joists.add(id: 'RimJoist2ndStory',
3041
3574
  exterior_adjacent_to: HPXML::LocationOutside,
@@ -3045,12 +3578,16 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
3045
3578
  solar_absorptance: 0.7,
3046
3579
  emittance: 0.92,
3047
3580
  insulation_assembly_r_value: 23.0)
3048
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
3581
+ elsif ['base-enclosure-split-surfaces.xml',
3582
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3049
3583
  for n in 1..hpxml.rim_joists.size
3050
3584
  hpxml.rim_joists[n - 1].area /= 9.0
3051
3585
  for i in 2..9
3052
3586
  hpxml.rim_joists << hpxml.rim_joists[n - 1].dup
3053
3587
  hpxml.rim_joists[-1].id += i.to_s
3588
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
3589
+ hpxml.rim_joists[-1].insulation_assembly_r_value += 0.01 * i
3590
+ end
3054
3591
  end
3055
3592
  end
3056
3593
  hpxml.rim_joists << hpxml.rim_joists[-1].dup
@@ -3421,12 +3958,16 @@ def set_hpxml_walls(hpxml_file, hpxml)
3421
3958
  elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
3422
3959
  hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
3423
3960
  hpxml.walls[-1].insulation_assembly_r_value = 23
3424
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
3961
+ elsif ['base-enclosure-split-surfaces.xml',
3962
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3425
3963
  for n in 1..hpxml.walls.size
3426
3964
  hpxml.walls[n - 1].area /= 9.0
3427
3965
  for i in 2..9
3428
3966
  hpxml.walls << hpxml.walls[n - 1].dup
3429
3967
  hpxml.walls[-1].id += i.to_s
3968
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
3969
+ hpxml.walls[-1].insulation_assembly_r_value += 0.01 * i
3970
+ end
3430
3971
  end
3431
3972
  end
3432
3973
  hpxml.walls << hpxml.walls[-1].dup
@@ -3445,6 +3986,8 @@ def set_hpxml_walls(hpxml_file, hpxml)
3445
3986
  solar_absorptance: 0.7,
3446
3987
  emittance: 0.92,
3447
3988
  insulation_assembly_r_value: 4.0)
3989
+ elsif ['invalid_files/invalid-assembly-effective-rvalue.xml'].include? hpxml_file
3990
+ hpxml.walls[0].insulation_assembly_r_value = 0
3448
3991
  elsif ['base-misc-defaults.xml'].include? hpxml_file
3449
3992
  hpxml.walls.each do |wall|
3450
3993
  wall.siding = nil
@@ -3452,6 +3995,24 @@ def set_hpxml_walls(hpxml_file, hpxml)
3452
3995
  wall.color = HPXML::ColorMedium
3453
3996
  wall.emittance = nil
3454
3997
  end
3998
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
3999
+ hpxml.walls.add(id: 'WallGarageBasement',
4000
+ exterior_adjacent_to: HPXML::LocationGarage,
4001
+ interior_adjacent_to: HPXML::LocationBasementConditioned,
4002
+ wall_type: HPXML::WallTypeWoodStud,
4003
+ area: 320,
4004
+ solar_absorptance: 0.7,
4005
+ emittance: 0.92,
4006
+ insulation_assembly_r_value: 23)
4007
+ hpxml.walls.add(id: 'WallGarageExterior',
4008
+ exterior_adjacent_to: HPXML::LocationOutside,
4009
+ interior_adjacent_to: HPXML::LocationGarage,
4010
+ wall_type: HPXML::WallTypeWoodStud,
4011
+ siding: HPXML::SidingTypeWood,
4012
+ area: 320,
4013
+ solar_absorptance: 0.7,
4014
+ emittance: 0.92,
4015
+ insulation_assembly_r_value: 4)
3455
4016
  end
3456
4017
  hpxml.walls.each do |wall|
3457
4018
  next unless wall.is_interior
@@ -3741,19 +4302,21 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
3741
4302
  insulation_exterior_distance_to_top: 0,
3742
4303
  insulation_exterior_distance_to_bottom: 4,
3743
4304
  insulation_exterior_r_value: 8.9)
3744
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4305
+ elsif ['base-enclosure-split-surfaces.xml',
4306
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3745
4307
  for n in 1..hpxml.foundation_walls.size
3746
4308
  hpxml.foundation_walls[n - 1].area /= 9.0
3747
4309
  for i in 2..9
3748
4310
  hpxml.foundation_walls << hpxml.foundation_walls[n - 1].dup
3749
4311
  hpxml.foundation_walls[-1].id += i.to_s
4312
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4313
+ hpxml.foundation_walls[-1].insulation_exterior_r_value += 0.01 * i
4314
+ end
3750
4315
  end
3751
4316
  end
3752
4317
  hpxml.foundation_walls << hpxml.foundation_walls[-1].dup
3753
4318
  hpxml.foundation_walls[-1].id = 'TinyFoundationWall'
3754
4319
  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
4320
  elsif ['base-misc-defaults.xml'].include? hpxml_file
3758
4321
  hpxml.foundation_walls.each do |fwall|
3759
4322
  fwall.thickness = nil
@@ -3774,6 +4337,10 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
3774
4337
  insulation_exterior_r_value: 0)
3775
4338
  elsif ['invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml'].include? hpxml_file
3776
4339
  hpxml.foundation_walls[0].delete
4340
+ elsif ['invalid_files/invalid-foundation-wall-properties.xml'].include? hpxml_file
4341
+ hpxml.foundation_walls[0].insulation_interior_distance_to_top = 12
4342
+ hpxml.foundation_walls[0].insulation_interior_distance_to_bottom = 10
4343
+ hpxml.foundation_walls[0].depth_below_grade = 9
3777
4344
  end
3778
4345
  end
3779
4346
 
@@ -3893,6 +4460,12 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3893
4460
  interior_adjacent_to: HPXML::LocationLivingSpace,
3894
4461
  area: 400,
3895
4462
  insulation_assembly_r_value: 39.3)
4463
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
4464
+ hpxml.frame_floors.add(id: 'FloorAbovegarage',
4465
+ exterior_adjacent_to: HPXML::LocationGarage,
4466
+ interior_adjacent_to: HPXML::LocationLivingSpace,
4467
+ area: 400,
4468
+ insulation_assembly_r_value: 39.3)
3896
4469
  elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
3897
4470
  hpxml.frame_floors[0].insulation_assembly_r_value = 2.1
3898
4471
  elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
@@ -3915,12 +4488,16 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3915
4488
  area: 150,
3916
4489
  insulation_assembly_r_value: 2.1,
3917
4490
  other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
3918
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4491
+ elsif ['base-enclosure-split-surfaces.xml',
4492
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
3919
4493
  for n in 1..hpxml.frame_floors.size
3920
4494
  hpxml.frame_floors[n - 1].area /= 9.0
3921
4495
  for i in 2..9
3922
4496
  hpxml.frame_floors << hpxml.frame_floors[n - 1].dup
3923
4497
  hpxml.frame_floors[-1].id += i.to_s
4498
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4499
+ hpxml.frame_floors[-1].insulation_assembly_r_value += 0.01 * i
4500
+ end
3924
4501
  end
3925
4502
  end
3926
4503
  hpxml.frame_floors << hpxml.frame_floors[-1].dup
@@ -3938,8 +4515,10 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
3938
4515
  'invalid_files/enclosure-garage-missing-roof-ceiling.xml'].include? hpxml_file
3939
4516
  hpxml.frame_floors[1].delete
3940
4517
  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
4518
+ hpxml.frame_floors << hpxml.frame_floors[0].dup
4519
+ hpxml.frame_floors[1].id += '2'
4520
+ hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
4521
+ hpxml.frame_floors[1].other_space_above_or_below = HPXML::FrameFloorOtherSpaceAbove
3943
4522
  elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
3944
4523
  hpxml.frame_floors.add(id: 'FloorOther',
3945
4524
  exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
@@ -4042,7 +4621,8 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4042
4621
  carpet_r_value: 0)
4043
4622
  elsif ['base-foundation-ambient.xml'].include? hpxml_file
4044
4623
  hpxml.slabs.clear
4045
- elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
4624
+ elsif ['base-enclosure-2stories-garage.xml',
4625
+ 'base-foundation-basement-garage.xml'].include? hpxml_file
4046
4626
  hpxml.slabs[0].area -= 400
4047
4627
  hpxml.slabs[0].exposed_perimeter -= 40
4048
4628
  hpxml.slabs.add(id: 'SlabUnderGarage',
@@ -4106,13 +4686,18 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4106
4686
  under_slab_insulation_r_value: 0,
4107
4687
  carpet_fraction: 0,
4108
4688
  carpet_r_value: 0)
4109
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4689
+ elsif ['base-enclosure-split-surfaces.xml',
4690
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4110
4691
  for n in 1..hpxml.slabs.size
4111
4692
  hpxml.slabs[n - 1].area /= 9.0
4112
4693
  hpxml.slabs[n - 1].exposed_perimeter /= 9.0
4113
4694
  for i in 2..9
4114
4695
  hpxml.slabs << hpxml.slabs[n - 1].dup
4115
4696
  hpxml.slabs[-1].id += i.to_s
4697
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
4698
+ hpxml.slabs[-1].perimeter_insulation_depth += 0.01 * i
4699
+ hpxml.slabs[-1].perimeter_insulation_r_value += 0.01 * i
4700
+ end
4116
4701
  end
4117
4702
  end
4118
4703
  hpxml.slabs << hpxml.slabs[-1].dup
@@ -4124,11 +4709,6 @@ def set_hpxml_slabs(hpxml_file, hpxml)
4124
4709
  slab.carpet_fraction = nil
4125
4710
  slab.carpet_fraction = nil
4126
4711
  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
4712
  elsif ['invalid_files/enclosure-living-missing-floor-slab.xml',
4133
4713
  'invalid_files/enclosure-basement-missing-slab.xml'].include? hpxml_file
4134
4714
  hpxml.slabs[0].delete
@@ -4298,17 +4878,26 @@ def set_hpxml_windows(hpxml_file, hpxml)
4298
4878
  hpxml.windows[0].overhangs_depth = 2.5
4299
4879
  hpxml.windows[0].overhangs_distance_to_top_of_window = 0
4300
4880
  hpxml.windows[0].overhangs_distance_to_bottom_of_window = 4
4881
+ hpxml.windows[1].overhangs_depth = 0
4882
+ hpxml.windows[1].overhangs_distance_to_top_of_window = 1
4883
+ hpxml.windows[1].overhangs_distance_to_bottom_of_window = 5
4301
4884
  hpxml.windows[2].overhangs_depth = 1.5
4302
4885
  hpxml.windows[2].overhangs_distance_to_top_of_window = 2
4303
4886
  hpxml.windows[2].overhangs_distance_to_bottom_of_window = 6
4304
4887
  hpxml.windows[3].overhangs_depth = 1.5
4305
4888
  hpxml.windows[3].overhangs_distance_to_top_of_window = 2
4306
4889
  hpxml.windows[3].overhangs_distance_to_bottom_of_window = 7
4307
- elsif ['base-enclosure-windows-interior-shading.xml'].include? hpxml_file
4890
+ elsif ['base-enclosure-windows-shading.xml'].include? hpxml_file
4891
+ hpxml.windows[1].exterior_shading_factor_summer = 0.1
4892
+ hpxml.windows[1].exterior_shading_factor_winter = 0.9
4308
4893
  hpxml.windows[1].interior_shading_factor_summer = 0.01
4309
4894
  hpxml.windows[1].interior_shading_factor_winter = 0.99
4895
+ hpxml.windows[2].exterior_shading_factor_summer = 0.5
4896
+ hpxml.windows[2].exterior_shading_factor_winter = 0.5
4310
4897
  hpxml.windows[2].interior_shading_factor_summer = 0.5
4311
4898
  hpxml.windows[2].interior_shading_factor_winter = 0.5
4899
+ hpxml.windows[3].exterior_shading_factor_summer = 0.0
4900
+ hpxml.windows[3].exterior_shading_factor_winter = 1.0
4312
4901
  hpxml.windows[3].interior_shading_factor_summer = 0.0
4313
4902
  hpxml.windows[3].interior_shading_factor_winter = 1.0
4314
4903
  elsif ['base-enclosure-windows-none.xml'].include? hpxml_file
@@ -4403,7 +4992,8 @@ def set_hpxml_windows(hpxml_file, hpxml)
4403
4992
  end
4404
4993
  elsif ['invalid_files/unattached-window.xml'].include? hpxml_file
4405
4994
  hpxml.windows[0].wall_idref = 'foobar'
4406
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
4995
+ elsif ['base-enclosure-split-surfaces.xml',
4996
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4407
4997
  area_adjustments = []
4408
4998
  for n in 1..hpxml.windows.size
4409
4999
  hpxml.windows[n - 1].area /= 9.0
@@ -4415,6 +5005,10 @@ def set_hpxml_windows(hpxml_file, hpxml)
4415
5005
  if i >= 4
4416
5006
  hpxml.windows[-1].fraction_operable = 1.0
4417
5007
  end
5008
+ next unless hpxml_file == 'base-enclosure-split-surfaces2.xml'
5009
+ hpxml.windows[-1].ufactor += 0.01 * i
5010
+ hpxml.windows[-1].interior_shading_factor_summer -= 0.02 * i
5011
+ hpxml.windows[-1].interior_shading_factor_winter -= 0.01 * i
4418
5012
  end
4419
5013
  end
4420
5014
  hpxml.windows << hpxml.windows[-1].dup
@@ -4497,17 +5091,33 @@ def set_hpxml_skylights(hpxml_file, hpxml)
4497
5091
  interior_shading_factor_summer: 1.0,
4498
5092
  interior_shading_factor_winter: 1.0,
4499
5093
  roof_idref: 'Roof')
5094
+ elsif ['base-enclosure-skylights-shading.xml'].include? hpxml_file
5095
+ hpxml.skylights[0].exterior_shading_factor_summer = 0.1
5096
+ hpxml.skylights[0].exterior_shading_factor_winter = 0.9
5097
+ hpxml.skylights[0].interior_shading_factor_summer = 0.01
5098
+ hpxml.skylights[0].interior_shading_factor_winter = 0.99
5099
+ hpxml.skylights[1].exterior_shading_factor_summer = 0.5
5100
+ hpxml.skylights[1].exterior_shading_factor_winter = 0.0
5101
+ hpxml.skylights[1].interior_shading_factor_summer = 0.5
5102
+ hpxml.skylights[1].interior_shading_factor_winter = 1.0
4500
5103
  elsif ['invalid_files/net-area-negative-roof.xml'].include? hpxml_file
4501
5104
  hpxml.skylights[0].area = 4000
4502
5105
  elsif ['invalid_files/unattached-skylight.xml'].include? hpxml_file
4503
5106
  hpxml.skylights[0].roof_idref = 'foobar'
4504
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
5107
+ elsif ['invalid_files/invalid-id.xml'].include? hpxml_file
5108
+ hpxml.skylights[0].id = ''
5109
+ elsif ['base-enclosure-split-surfaces.xml',
5110
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4505
5111
  for n in 1..hpxml.skylights.size
4506
5112
  hpxml.skylights[n - 1].area /= 9.0
4507
5113
  for i in 2..9
4508
5114
  hpxml.skylights << hpxml.skylights[n - 1].dup
4509
5115
  hpxml.skylights[-1].id += i.to_s
4510
5116
  hpxml.skylights[-1].roof_idref += i.to_s if i % 2 == 0
5117
+ next unless hpxml_file == 'base-enclosure-split-surfaces2.xml'
5118
+ hpxml.skylights[-1].ufactor += 0.01 * i
5119
+ hpxml.skylights[-1].interior_shading_factor_summer -= 0.02 * i
5120
+ hpxml.skylights[-1].interior_shading_factor_winter -= 0.01 * i
4511
5121
  end
4512
5122
  end
4513
5123
  hpxml.skylights << hpxml.skylights[-1].dup
@@ -4554,6 +5164,17 @@ def set_hpxml_doors(hpxml_file, hpxml)
4554
5164
  area: 70,
4555
5165
  azimuth: 180,
4556
5166
  r_value: 4.4)
5167
+ elsif ['base-foundation-basement-garage.xml'].include? hpxml_file
5168
+ hpxml.doors.add(id: 'GarageDoorSouth',
5169
+ wall_idref: 'WallGarageExterior',
5170
+ area: 70,
5171
+ azimuth: 180,
5172
+ r_value: 4.4)
5173
+ hpxml.doors.add(id: 'GarageDoorBasement',
5174
+ wall_idref: 'WallGarageBasement',
5175
+ area: 4,
5176
+ azimuth: 0,
5177
+ r_value: 4.4)
4557
5178
  elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
4558
5179
  hpxml.doors.add(id: 'DoorOtherHeatedSpace',
4559
5180
  wall_idref: 'WallOtherHeatedSpace',
@@ -4576,7 +5197,8 @@ def set_hpxml_doors(hpxml_file, hpxml)
4576
5197
  r_value: 4.4)
4577
5198
  elsif ['invalid_files/unattached-door.xml'].include? hpxml_file
4578
5199
  hpxml.doors[0].wall_idref = 'foobar'
4579
- elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
5200
+ elsif ['base-enclosure-split-surfaces.xml',
5201
+ 'base-enclosure-split-surfaces2.xml'].include? hpxml_file
4580
5202
  area_adjustments = []
4581
5203
  for n in 1..hpxml.doors.size
4582
5204
  hpxml.doors[n - 1].area /= 9.0
@@ -4584,6 +5206,9 @@ def set_hpxml_doors(hpxml_file, hpxml)
4584
5206
  hpxml.doors << hpxml.doors[n - 1].dup
4585
5207
  hpxml.doors[-1].id += i.to_s
4586
5208
  hpxml.doors[-1].wall_idref += i.to_s
5209
+ if hpxml_file == 'base-enclosure-split-surfaces2.xml'
5210
+ hpxml.doors[-1].r_value += 0.01 * i
5211
+ end
4587
5212
  end
4588
5213
  end
4589
5214
  hpxml.doors << hpxml.doors[-1].dup
@@ -4624,19 +5249,16 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4624
5249
  'base-hvac-ground-to-air-heat-pump.xml',
4625
5250
  'base-hvac-mini-split-heat-pump-ducted.xml',
4626
5251
  'base-hvac-mini-split-air-conditioner-only-ducted.xml',
4627
- 'base-hvac-ideal-air.xml',
4628
5252
  'base-hvac-none.xml',
4629
5253
  'base-hvac-room-ac-only.xml',
4630
5254
  'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
4631
5255
  'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml',
4632
5256
  'invalid_files/orphaned-hvac-distribution.xml'].include? hpxml_file
4633
5257
  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
5258
  elsif ['base-hvac-boiler-elec-only.xml'].include? hpxml_file
4637
5259
  hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
4638
5260
  hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
4639
- hpxml.heating_systems[0].heating_efficiency_afue = 1
5261
+ hpxml.heating_systems[0].heating_efficiency_afue = 1.0
4640
5262
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml',
4641
5263
  'base-hvac-boiler-gas-only.xml'].include? hpxml_file
4642
5264
  hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
@@ -4845,14 +5467,31 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
4845
5467
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
4846
5468
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
4847
5469
  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
5470
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml'].include? hpxml_file
4852
5471
  hpxml.heating_systems[0].fan_coil_watts = nil
4853
5472
  hpxml.heating_systems[0].shared_loop_watts = nil
4854
5473
  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)
5474
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5475
+ hpxml.heating_systems[0].airflow_defect_ratio = 0.0
5476
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5477
+ hpxml.heating_systems[0].airflow_defect_ratio = -0.25
5478
+ elsif ['base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5479
+ hpxml.heating_systems[0].fan_watts_per_cfm = 0.365
5480
+ elsif ['base-hvac-install-quality-all-furnace-gas-only.xml',
5481
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml',
5482
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml',
5483
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml'].include? hpxml_file
5484
+ hpxml.heating_systems[0].fan_watts_per_cfm = 0.365
5485
+ hpxml.heating_systems[0].airflow_defect_ratio = -0.25
5486
+ elsif ['invalid_files/multiple-shared-heating-systems.xml'].include? hpxml_file
5487
+ hpxml.heating_systems[0].fraction_heat_load_served = 0.5
5488
+ hpxml.heating_systems << hpxml.heating_systems[0].dup
5489
+ hpxml.heating_systems[1].id += '2'
5490
+ hpxml.heating_systems[1].distribution_system_idref += '2'
5491
+ elsif ['invalid_files/boiler-invalid-afue.xml',
5492
+ 'invalid_files/furnace-invalid-afue.xml'].include? hpxml_file
5493
+ hpxml.heating_systems[0].heating_efficiency_afue *= 100.0
5494
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.heating_systems.nil?) && (hpxml.heating_systems.size > 0)
4856
5495
  hpxml.heating_systems[0].heating_capacity = nil
4857
5496
  end
4858
5497
  end
@@ -4888,7 +5527,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4888
5527
  'base-hvac-furnace-wood-only.xml',
4889
5528
  'base-hvac-ground-to-air-heat-pump.xml',
4890
5529
  'base-hvac-mini-split-heat-pump-ducted.xml',
4891
- 'base-hvac-ideal-air.xml',
4892
5530
  'base-hvac-none.xml',
4893
5531
  'base-hvac-stove-oil-only.xml',
4894
5532
  'base-hvac-stove-wood-pellets-only.xml',
@@ -4896,8 +5534,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4896
5534
  'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
4897
5535
  'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'].include? hpxml_file
4898
5536
  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
5537
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
4902
5538
  hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
4903
5539
  elsif ['base-hvac-furnace-gas-central-ac-2-speed.xml',
@@ -4915,7 +5551,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4915
5551
  hpxml.cooling_systems[0].cooling_efficiency_seer = 19
4916
5552
  hpxml.cooling_systems[0].cooling_shr = 0.73
4917
5553
  hpxml.cooling_systems[0].compressor_type = nil
4918
- hpxml.cooling_systems[0].fan_watts_per_cfm = 0.2
4919
5554
  elsif ['base-hvac-mini-split-air-conditioner-only-ductless.xml'].include? hpxml_file
4920
5555
  hpxml.cooling_systems[0].distribution_system_idref = nil
4921
5556
  elsif ['base-hvac-furnace-gas-room-ac.xml',
@@ -4930,22 +5565,16 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4930
5565
  hpxml.cooling_systems[0].fraction_cool_load_served = 0.33
4931
5566
  elsif ['base-hvac-evap-cooler-only-ducted.xml',
4932
5567
  '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
5568
+ 'base-hvac-evap-cooler-only.xml'].include? hpxml_file
4935
5569
  hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeEvaporativeCooler
4936
5570
  hpxml.cooling_systems[0].cooling_efficiency_seer = nil
4937
5571
  hpxml.cooling_systems[0].cooling_efficiency_eer = nil
4938
- hpxml.cooling_systems[0].cooling_capacity = nil
4939
5572
  hpxml.cooling_systems[0].cooling_shr = nil
4940
5573
  hpxml.cooling_systems[0].compressor_type = nil
4941
5574
  if ['base-hvac-evap-cooler-furnace-gas.xml',
4942
- 'hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml',
4943
5575
  'base-hvac-evap-cooler-only.xml'].include? hpxml_file
4944
5576
  hpxml.cooling_systems[0].distribution_system_idref = nil
4945
5577
  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
5578
  elsif ['base-hvac-multiple.xml'].include? hpxml_file
4950
5579
  hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
4951
5580
  hpxml.cooling_systems[0].fraction_cool_load_served = 0.2
@@ -4986,8 +5615,22 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
4986
5615
  hpxml.cooling_systems[0].fan_watts_per_cfm = 0.55
4987
5616
  elsif ['base-hvac-undersized.xml'].include? hpxml_file
4988
5617
  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
5618
+ elsif ['base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5619
+ hpxml.cooling_systems[0].airflow_defect_ratio = 0.0
5620
+ hpxml.cooling_systems[0].charge_defect_ratio = 0.0
5621
+ elsif ['base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5622
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.25
5623
+ elsif ['base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5624
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.25
5625
+ elsif ['base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml'].include? hpxml_file
5626
+ hpxml.cooling_systems[0].fan_watts_per_cfm = 0.365
5627
+ elsif ['base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml',
5628
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml',
5629
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml',
5630
+ 'base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml'].include? hpxml_file
5631
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.25
5632
+ hpxml.cooling_systems[0].fan_watts_per_cfm = 0.365
5633
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.25
4991
5634
  elsif ['base-misc-defaults.xml'].include? hpxml_file
4992
5635
  hpxml.cooling_systems[0].cooling_shr = nil
4993
5636
  hpxml.cooling_systems[0].compressor_type = nil
@@ -5003,10 +5646,6 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
5003
5646
  hpxml.cooling_systems[0].cooling_efficiency_kw_per_ton = 0.9
5004
5647
  hpxml.cooling_systems[0].cooling_shr = nil
5005
5648
  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
5649
  elsif ['base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml',
5011
5650
  'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml'].include? hpxml_file
5012
5651
  hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeCoolingTower
@@ -5015,7 +5654,12 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
5015
5654
  elsif ['base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
5016
5655
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
5017
5656
  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)
5657
+ elsif ['invalid_files/multiple-shared-cooling-systems.xml'].include? hpxml_file
5658
+ hpxml.cooling_systems[0].fraction_cool_load_served = 0.5
5659
+ hpxml.cooling_systems << hpxml.cooling_systems[0].dup
5660
+ hpxml.cooling_systems[1].id += '2'
5661
+ hpxml.cooling_systems[1].distribution_system_idref += '2'
5662
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.cooling_systems.nil?) && (hpxml.cooling_systems.size > 0)
5019
5663
  hpxml.cooling_systems[0].cooling_capacity = nil
5020
5664
  end
5021
5665
  end
@@ -5038,8 +5682,7 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5038
5682
  cooling_efficiency_seer: 13,
5039
5683
  heating_capacity_17F: 42000 * 0.630, # Based on OAT slope of default curves
5040
5684
  cooling_shr: 0.73,
5041
- compressor_type: HPXML::HVACCompressorTypeSingleStage,
5042
- fan_watts_per_cfm: 0.45)
5685
+ compressor_type: HPXML::HVACCompressorTypeSingleStage)
5043
5686
  if hpxml_file == 'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml'
5044
5687
  hpxml.heat_pumps[0].fraction_cool_load_served = 0
5045
5688
  end
@@ -5093,12 +5736,12 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5093
5736
  heating_efficiency_cop: 3.6,
5094
5737
  cooling_efficiency_eer: 16.6,
5095
5738
  cooling_shr: 0.73,
5096
- pump_watts_per_ton: 30.0,
5097
- fan_watts_per_cfm: 0.45)
5739
+ pump_watts_per_ton: 30.0)
5098
5740
  if hpxml_file == 'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'
5099
5741
  hpxml.heat_pumps[-1].is_shared_system = true
5100
5742
  hpxml.heat_pumps[-1].number_of_units_served = 6
5101
5743
  hpxml.heat_pumps[-1].shared_loop_watts = 600
5744
+ hpxml.heat_pumps[-1].pump_watts_per_ton = 0.0
5102
5745
  end
5103
5746
  elsif ['base-hvac-mini-split-heat-pump-ducted.xml'].include? hpxml_file
5104
5747
  f = 1.0 - (1.0 - 0.25) / (47.0 + 5.0) * (47.0 - 17.0)
@@ -5116,25 +5759,32 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5116
5759
  heating_efficiency_hspf: 10,
5117
5760
  cooling_efficiency_seer: 19,
5118
5761
  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
5762
+ cooling_shr: 0.73)
5763
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml',
5764
+ 'base-hvac-ground-to-air-heat-pump-heating-only.xml',
5765
+ 'base-hvac-mini-split-heat-pump-ducted-heating-only.xml'].include? hpxml_file
5122
5766
  hpxml.heat_pumps[0].cooling_capacity = 0
5123
5767
  hpxml.heat_pumps[0].fraction_cool_load_served = 0
5124
- elsif ['base-hvac-mini-split-heat-pump-ducted-cooling-only.xml'].include? hpxml_file
5768
+ elsif ['base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml',
5769
+ 'base-hvac-ground-to-air-heat-pump-cooling-only.xml',
5770
+ 'base-hvac-mini-split-heat-pump-ducted-cooling-only.xml'].include? hpxml_file
5125
5771
  hpxml.heat_pumps[0].heating_capacity = 0
5126
- hpxml.heat_pumps[0].heating_capacity_17F = 0
5772
+ if not ['base-hvac-ground-to-air-heat-pump-cooling-only.xml'].include? hpxml_file
5773
+ hpxml.heat_pumps[0].heating_capacity_17F = 0
5774
+ end
5127
5775
  hpxml.heat_pumps[0].fraction_heat_load_served = 0
5128
5776
  hpxml.heat_pumps[0].backup_heating_fuel = nil
5777
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
5778
+ hpxml.heat_pumps[0].backup_heating_efficiency_percent = nil
5129
5779
  elsif ['base-hvac-mini-split-heat-pump-ductless.xml'].include? hpxml_file
5130
5780
  hpxml.heat_pumps[0].distribution_system_idref = nil
5131
5781
  hpxml.heat_pumps[0].backup_heating_fuel = nil
5782
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
5783
+ hpxml.heat_pumps[0].backup_heating_efficiency_percent = nil
5132
5784
  elsif ['invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml'].include? hpxml_file
5133
5785
  hpxml.heat_pumps[0].cooling_capacity = nil
5134
5786
  hpxml.heat_pumps[0].heating_capacity = nil
5135
5787
  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
5788
  elsif ['base-hvac-multiple.xml'].include? hpxml_file
5139
5789
  hpxml.heat_pumps.add(id: 'HeatPump',
5140
5790
  distribution_system_idref: 'HVACDistribution5',
@@ -5214,6 +5864,21 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5214
5864
  cooling_efficiency_eer: 16.6,
5215
5865
  cooling_shr: 0.73,
5216
5866
  pump_watts_per_ton: 30.0)
5867
+ elsif ['base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml',
5868
+ 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml',
5869
+ 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml'].include? hpxml_file
5870
+ hpxml.heat_pumps.add(id: 'WLHP',
5871
+ distribution_system_idref: 'HVACDistributionWLHP',
5872
+ heat_pump_type: HPXML::HVACTypeHeatPumpWaterLoopToAir,
5873
+ heat_pump_fuel: HPXML::FuelTypeElectricity)
5874
+ if hpxml_file.include? 'boiler'
5875
+ hpxml.heat_pumps[-1].heating_capacity = 24000
5876
+ hpxml.heat_pumps[-1].heating_efficiency_cop = 4.4
5877
+ end
5878
+ if hpxml_file.include? 'chiller'
5879
+ hpxml.heat_pumps[-1].cooling_capacity = 24000
5880
+ hpxml.heat_pumps[-1].cooling_efficiency_eer = 12.8
5881
+ end
5217
5882
  elsif ['invalid_files/hvac-distribution-multiple-attached-heating.xml'].include? hpxml_file
5218
5883
  hpxml.heat_pumps[0].distribution_system_idref = 'HVACDistribution'
5219
5884
  elsif ['invalid_files/hvac-distribution-multiple-attached-cooling.xml'].include? hpxml_file
@@ -5230,7 +5895,19 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
5230
5895
  elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml'].include? hpxml_file
5231
5896
  hpxml.heat_pumps[0].backup_heating_fuel = HPXML::FuelTypeElectricity
5232
5897
  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)
5898
+ elsif ['base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml',
5899
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml',
5900
+ 'base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml',
5901
+ 'base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml',
5902
+ 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml'].include? hpxml_file
5903
+ hpxml.heat_pumps[0].airflow_defect_ratio = -0.25
5904
+ hpxml.heat_pumps[0].fan_watts_per_cfm = 0.365
5905
+ if hpxml_file != 'base-hvac-install-quality-all-ground-to-air-heat-pump.xml'
5906
+ hpxml.heat_pumps[0].charge_defect_ratio = -0.25
5907
+ else
5908
+ hpxml.heat_pumps[0].charge_defect_ratio = 0.0
5909
+ end
5910
+ elsif hpxml_file.include?('base-hvac-autosize') && (not hpxml.heat_pumps.nil?) && (hpxml.heat_pumps.size > 0)
5234
5911
  hpxml.heat_pumps[0].cooling_capacity = nil
5235
5912
  hpxml.heat_pumps[0].heating_capacity = nil
5236
5913
  hpxml.heat_pumps[0].heating_capacity_17F = nil
@@ -5321,16 +5998,23 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5321
5998
  elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
5322
5999
  'base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
5323
6000
  '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
6001
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeAir
6002
+ hpxml.hvac_distributions[0].air_type = HPXML::AirTypeFanCoil
6003
+ hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
6004
+ duct_leakage_units: HPXML::UnitsCFM25,
6005
+ duct_leakage_value: 0,
6006
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
6007
+ hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
6008
+ duct_leakage_units: HPXML::UnitsCFM25,
6009
+ duct_leakage_value: 0,
6010
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5326
6011
  elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
5327
6012
  hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronic
5328
6013
  hpxml.hvac_distributions[0].hydronic_type = HPXML::HydronicTypeBaseboard
5329
6014
  hpxml.hvac_distributions[0].duct_leakage_measurements.clear
5330
6015
  hpxml.hvac_distributions[0].ducts.clear
5331
6016
  hpxml.hvac_distributions.add(id: 'HVACDistribution2',
5332
- distribution_system_type: HPXML::HVACDistributionTypeAir,
5333
- number_of_return_registers: 3)
6017
+ distribution_system_type: HPXML::HVACDistributionTypeAir)
5334
6018
  hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
5335
6019
  duct_leakage_units: HPXML::UnitsCFM25,
5336
6020
  duct_leakage_value: 75,
@@ -5352,7 +6036,6 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5352
6036
  'base-hvac-evap-cooler-only.xml',
5353
6037
  'base-hvac-fireplace-wood-only.xml',
5354
6038
  'base-hvac-floor-furnace-propane-only.xml',
5355
- 'base-hvac-ideal-air.xml',
5356
6039
  'base-hvac-mini-split-heat-pump-ductless.xml',
5357
6040
  'base-hvac-mini-split-air-conditioner-only-ductless.xml',
5358
6041
  'base-hvac-room-ac-only.xml',
@@ -5464,8 +6147,10 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5464
6147
  hpxml.hvac_distributions[0].ducts[0].duct_surface_area = 30
5465
6148
  hpxml.hvac_distributions[0].ducts[1].duct_surface_area = 10
5466
6149
  elsif ['base-hvac-evap-cooler-only-ducted.xml'].include? hpxml_file
5467
- hpxml.hvac_distributions[0].duct_leakage_measurements.pop
6150
+ hpxml.hvac_distributions[0].duct_leakage_measurements[-1].duct_leakage_value = 0.0
5468
6151
  hpxml.hvac_distributions[0].ducts.pop
6152
+ elsif ['invalid_files/hvac-distribution-return-duct-leakage-missing.xml'].include? hpxml_file
6153
+ hpxml.hvac_distributions[0].duct_leakage_measurements.pop
5469
6154
  elsif ['base-hvac-ducts-leakage-percent.xml'].include? hpxml_file
5470
6155
  hpxml.hvac_distributions[0].duct_leakage_measurements.clear
5471
6156
  hpxml.hvac_distributions[0].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
@@ -5539,8 +6224,8 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5539
6224
  if hpxml_file == 'base-atticroof-conditioned.xml'
5540
6225
  # Test leakage to outside when all ducts in conditioned space
5541
6226
  # (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
6227
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = 50.0
6228
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = 100.0
5544
6229
  end
5545
6230
  elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
5546
6231
  hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherHousingUnit
@@ -5560,29 +6245,33 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5560
6245
  'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml',
5561
6246
  'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml',
5562
6247
  'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml'].include? hpxml_file
5563
- hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronicAndAir
5564
6248
  if hpxml_file.include? 'fan-coil'
5565
- hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeFanCoil
6249
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeAir
6250
+ hpxml.hvac_distributions[0].air_type = HPXML::AirTypeFanCoil
6251
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = 15
6252
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = 10
5566
6253
  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
6254
+ hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronic
6255
+ hpxml.hvac_distributions[0].hydronic_type = HPXML::HydronicTypeWaterLoop
6256
+ hpxml.hvac_distributions.add(id: 'HVACDistributionWLHP',
6257
+ distribution_system_type: HPXML::HVACDistributionTypeAir)
6258
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
6259
+ duct_leakage_units: HPXML::UnitsCFM25,
6260
+ duct_leakage_value: 15,
6261
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
6262
+ hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
6263
+ duct_leakage_units: HPXML::UnitsCFM25,
6264
+ duct_leakage_value: 10,
6265
+ duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
5569
6266
  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)
6267
+ hpxml.hvac_distributions[-1].ducts.add(duct_type: HPXML::DuctTypeSupply,
6268
+ duct_insulation_r_value: 0,
6269
+ duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
6270
+ duct_surface_area: 50)
6271
+ hpxml.hvac_distributions[-1].ducts.add(duct_type: HPXML::DuctTypeReturn,
6272
+ duct_insulation_r_value: 0,
6273
+ duct_location: HPXML::LocationOtherMultifamilyBufferSpace,
6274
+ duct_surface_area: 20)
5586
6275
  elsif ['invalid_files/hvac-invalid-distribution-system-type.xml'].include? hpxml_file
5587
6276
  hpxml.hvac_distributions.add(id: 'HVACDistribution2',
5588
6277
  distribution_system_type: HPXML::HVACDistributionTypeHydronic,
@@ -5601,13 +6290,6 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5601
6290
  duct.duct_location = nil
5602
6291
  end
5603
6292
  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
6293
  elsif ['invalid_files/missing-duct-location.xml'].include? hpxml_file
5612
6294
  hpxml.hvac_distributions.each do |hvac_distribution|
5613
6295
  next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
@@ -5616,20 +6298,39 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
5616
6298
  end
5617
6299
  elsif ['invalid_files/multifamily-reference-duct.xml'].include? hpxml_file
5618
6300
  hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherMultifamilyBufferSpace
6301
+ elsif ['invalid_files/multiple-shared-cooling-systems.xml',
6302
+ 'invalid_files/multiple-shared-heating-systems.xml'].include? hpxml_file
6303
+ hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
6304
+ hpxml.hvac_distributions[-1].id += '2'
6305
+ elsif ['invalid_files/duct-leakage-cfm25.xml'].include? hpxml_file
6306
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = -2.0
6307
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = -2.0
6308
+ elsif ['invalid_files/duct-leakage-percent.xml'].include? hpxml_file
6309
+ hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_units = HPXML::UnitsPercent
6310
+ hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_units = HPXML::UnitsPercent
5619
6311
  end
5620
6312
 
5621
6313
  # Set ConditionedFloorAreaServed
5622
- n_air_dists = hpxml.hvac_distributions.select { |d| [HPXML::HVACDistributionTypeAir, HPXML::HVACDistributionTypeHydronicAndAir].include? d.distribution_system_type }.size
6314
+ n_air_dists = hpxml.hvac_distributions.select { |d| [HPXML::HVACDistributionTypeAir].include? d.distribution_system_type }.size
5623
6315
  hpxml.hvac_distributions.each do |hvac_distribution|
5624
- if [HPXML::HVACDistributionTypeAir, HPXML::HVACDistributionTypeHydronicAndAir].include? hvac_distribution.distribution_system_type
5625
-
6316
+ if [HPXML::HVACDistributionTypeAir].include? hvac_distribution.distribution_system_type
5626
6317
  hvac_distribution.conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area / n_air_dists
5627
6318
  else
5628
6319
  hvac_distribution.conditioned_floor_area_served = nil
5629
6320
  end
5630
6321
  end
5631
6322
  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
6323
+ hpxml.hvac_distributions[0].conditioned_floor_area_served = hpxml.building_construction.conditioned_floor_area + 1.1
6324
+ end
6325
+
6326
+ # Set number of return registers
6327
+ if not ['base-misc-defaults.xml'].include? hpxml_file
6328
+ hpxml.hvac_distributions.each do |hvac_distribution|
6329
+ next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
6330
+ next unless hvac_distribution.ducts.select { |d| d.duct_type == HPXML::DuctTypeReturn }.size > 0
6331
+
6332
+ hvac_distribution.number_of_return_registers = hpxml.building_construction.number_of_conditioned_floors.ceil
6333
+ end
5633
6334
  end
5634
6335
  end
5635
6336
 
@@ -5757,6 +6458,9 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
5757
6458
  hours_in_operation: 24,
5758
6459
  fan_power: 26,
5759
6460
  used_for_whole_building_ventilation: true)
6461
+ elsif ['invalid_files/invalid-shared-vent-in-unit-flowrate.xml'].include? hpxml_file
6462
+ hpxml.ventilation_fans[0].in_unit_flow_rate = 80
6463
+ hpxml.ventilation_fans[0].rated_flow_rate = 80
5760
6464
  elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.xml'].include? hpxml_file
5761
6465
  hpxml.ventilation_fans[0].preheating_fuel = HPXML::FuelTypeNaturalGas
5762
6466
  hpxml.ventilation_fans[0].preheating_efficiency_cop = 0.92
@@ -6175,6 +6879,8 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
6175
6879
  hpxml.water_heating_systems[0].energy_factor = 1.0
6176
6880
  elsif ['invalid_files/dhw-invalid-uef-tank-heat-pump.xml'].include? hpxml_file
6177
6881
  hpxml.water_heating_systems[0].uniform_energy_factor = 1.0
6882
+ elsif ['invalid_files/invalid-number-of-units-served.xml'].include? hpxml_file
6883
+ hpxml.water_heating_systems[0].number_of_units_served = 1
6178
6884
  end
6179
6885
  end
6180
6886
 
@@ -6366,6 +7072,8 @@ def set_hpxml_pv_systems(hpxml_file, hpxml)
6366
7072
  inverter_efficiency: 0.96,
6367
7073
  system_losses_fraction: 0.14,
6368
7074
  number_of_bedrooms_served: 18)
7075
+ elsif ['invalid_files/invalid-number-of-bedrooms-served.xml'].include? hpxml_file
7076
+ hpxml.pv_systems[0].number_of_bedrooms_served = hpxml.building_construction.number_of_bedrooms
6369
7077
  end
6370
7078
  end
6371
7079
 
@@ -6386,6 +7094,10 @@ def set_hpxml_generators(hpxml_file, hpxml)
6386
7094
  annual_consumption_kbtu: 85000,
6387
7095
  annual_output_kwh: 5000,
6388
7096
  number_of_bedrooms_served: 18)
7097
+ elsif ['invalid_files/generator-output-greater-than-consumption.xml'].include? hpxml_file
7098
+ hpxml.generators[0].annual_consumption_kbtu = 1500
7099
+ elsif ['invalid_files/generator-number-of-bedrooms-served.xml'].include? hpxml_file
7100
+ hpxml.generators[0].number_of_bedrooms_served = hpxml.building_construction.number_of_bedrooms
6389
7101
  end
6390
7102
  end
6391
7103
 
@@ -6454,7 +7166,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6454
7166
  location: HPXML::LocationLivingSpace,
6455
7167
  fuel_type: HPXML::FuelTypeElectricity,
6456
7168
  combined_energy_factor: 3.73,
6457
- control_type: HPXML::ClothesDryerControlTypeTimer,
6458
7169
  is_vented: true,
6459
7170
  vented_flow_rate: 150)
6460
7171
  elsif ['base-appliances-none.xml',
@@ -6477,7 +7188,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6477
7188
  location: HPXML::LocationLivingSpace,
6478
7189
  fuel_type: HPXML::FuelTypeElectricity,
6479
7190
  energy_factor: HotWaterAndAppliances.calc_clothes_dryer_ef_from_cef(cef).round(2),
6480
- control_type: HPXML::ClothesDryerControlTypeMoisture,
6481
7191
  is_vented: false)
6482
7192
  elsif ['base-appliances-coal.xml',
6483
7193
  'base-appliances-gas.xml',
@@ -6487,8 +7197,7 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6487
7197
  hpxml.clothes_dryers.clear
6488
7198
  hpxml.clothes_dryers.add(id: 'ClothesDryer',
6489
7199
  location: HPXML::LocationLivingSpace,
6490
- combined_energy_factor: 3.30,
6491
- control_type: HPXML::ClothesDryerControlTypeMoisture)
7200
+ combined_energy_factor: 3.30)
6492
7201
  if hpxml_file == 'base-appliances-coal.xml'
6493
7202
  hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeCoal
6494
7203
  elsif hpxml_file == 'base-appliances-gas.xml'
@@ -6511,7 +7220,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
6511
7220
  hpxml.clothes_dryers[0].location = nil
6512
7221
  hpxml.clothes_dryers[0].energy_factor = nil
6513
7222
  hpxml.clothes_dryers[0].combined_energy_factor = nil
6514
- hpxml.clothes_dryers[0].control_type = nil
6515
7223
  hpxml.clothes_dryers[0].is_vented = nil
6516
7224
  hpxml.clothes_dryers[0].vented_flow_rate = nil
6517
7225
  elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
@@ -6675,7 +7383,8 @@ def set_hpxml_dehumidifier(hpxml_file, hpxml)
6675
7383
  capacity: 40,
6676
7384
  energy_factor: 1.8,
6677
7385
  rh_setpoint: 0.5,
6678
- fraction_served: 1.0)
7386
+ fraction_served: 1.0,
7387
+ location: HPXML::LocationLivingSpace)
6679
7388
  elsif ['base-appliances-dehumidifier-50percent.xml'].include? hpxml_file
6680
7389
  hpxml.dehumidifiers[0].fraction_served = 0.5
6681
7390
  elsif ['base-appliances-dehumidifier-ief-portable.xml'].include? hpxml_file
@@ -6683,6 +7392,18 @@ def set_hpxml_dehumidifier(hpxml_file, hpxml)
6683
7392
  hpxml.dehumidifiers[0].integrated_energy_factor = 1.5
6684
7393
  elsif ['base-appliances-dehumidifier-ief-whole-home.xml'].include? hpxml_file
6685
7394
  hpxml.dehumidifiers[0].type = HPXML::DehumidifierTypeWholeHome
7395
+ elsif ['base-appliances-dehumidifier-multiple.xml'].include? hpxml_file
7396
+ hpxml.dehumidifiers.add(id: 'Dehumidifier2',
7397
+ type: HPXML::DehumidifierTypePortable,
7398
+ capacity: 30,
7399
+ energy_factor: 1.6,
7400
+ rh_setpoint: 0.5,
7401
+ fraction_served: 0.25,
7402
+ location: HPXML::LocationLivingSpace)
7403
+ elsif ['invalid_files/dehumidifier-setpoints.xml'].include? hpxml_file
7404
+ hpxml.dehumidifiers[1].rh_setpoint = 0.55
7405
+ elsif ['invalid_files/dehumidifier-fraction-served.xml'].include? hpxml_file
7406
+ hpxml.dehumidifiers[1].fraction_served = 0.6
6686
7407
  end
6687
7408
  end
6688
7409
 
@@ -6812,16 +7533,18 @@ def set_hpxml_pools(hpxml_file, hpxml)
6812
7533
  if ['base-misc-loads-large-uncommon.xml',
6813
7534
  'base-misc-usage-multiplier.xml'].include? hpxml_file
6814
7535
  hpxml.pools.add(id: 'Pool',
7536
+ type: HPXML::TypeUnknown,
7537
+ pump_type: HPXML::TypeUnknown,
7538
+ pump_kwh_per_year: 2700,
7539
+ 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',
7540
+ 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',
7541
+ 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
7542
  heater_type: HPXML::HeaterTypeGas,
6816
7543
  heater_load_units: HPXML::UnitsThermPerYear,
6817
7544
  heater_load_value: 500,
6818
- pump_kwh_per_year: 2700,
6819
7545
  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
7546
  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')
7547
+ 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
7548
  if hpxml_file == 'base-misc-usage-multiplier.xml'
6826
7549
  hpxml.pools.each do |pool|
6827
7550
  pool.pump_usage_multiplier = 0.9
@@ -6829,11 +7552,7 @@ def set_hpxml_pools(hpxml_file, hpxml)
6829
7552
  end
6830
7553
  end
6831
7554
  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
7555
+ hpxml.pools[0].heater_type = HPXML::TypeNone
6837
7556
  end
6838
7557
  end
6839
7558
 
@@ -6841,16 +7560,18 @@ def set_hpxml_hot_tubs(hpxml_file, hpxml)
6841
7560
  if ['base-misc-loads-large-uncommon.xml',
6842
7561
  'base-misc-usage-multiplier.xml'].include? hpxml_file
6843
7562
  hpxml.hot_tubs.add(id: 'HotTub',
7563
+ type: HPXML::TypeUnknown,
7564
+ pump_type: HPXML::TypeUnknown,
7565
+ pump_kwh_per_year: 1000,
7566
+ 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',
7567
+ 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',
7568
+ 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
7569
  heater_type: HPXML::HeaterTypeElectricResistance,
6845
7570
  heater_load_units: HPXML::UnitsKwhPerYear,
6846
7571
  heater_load_value: 1300,
6847
- pump_kwh_per_year: 1000,
6848
7572
  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
7573
  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')
7574
+ 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
7575
  if hpxml_file == 'base-misc-usage-multiplier.xml'
6855
7576
  hpxml.hot_tubs.each do |hot_tub|
6856
7577
  hot_tub.pump_usage_multiplier = 0.9
@@ -6937,6 +7658,10 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
6937
7658
  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
7659
  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
7660
  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')
7661
+ elsif ['invalid_files/frac-sensible-plug-load.xml'].include? hpxml_file
7662
+ hpxml.plug_loads[0].frac_sensible = -0.1
7663
+ elsif ['invalid_files/frac-total-plug-load.xml'].include? hpxml_file
7664
+ hpxml.plug_loads[0].frac_latent = 1.0 - hpxml.plug_loads[0].frac_sensible + 0.1
6940
7665
  else
6941
7666
  cfa = hpxml.building_construction.conditioned_floor_area
6942
7667
  nbeds = hpxml.building_construction.number_of_bedrooms
@@ -6995,6 +7720,11 @@ def set_hpxml_fuel_loads(hpxml_file, hpxml)
6995
7720
  elsif ['base-misc-loads-large-uncommon2.xml'].include? hpxml_file
6996
7721
  hpxml.fuel_loads[0].fuel_type = HPXML::FuelTypeOil
6997
7722
  hpxml.fuel_loads[2].fuel_type = HPXML::FuelTypeWoodPellets
7723
+ elsif ['invalid_files/frac-sensible-fuel-load.xml'].include? hpxml_file
7724
+ hpxml.fuel_loads[0].frac_sensible = -0.1
7725
+ elsif ['invalid_files/frac-total-fuel-load.xml'].include? hpxml_file
7726
+ hpxml.fuel_loads[0].frac_sensible = 0.8
7727
+ hpxml.fuel_loads[0].frac_latent = 1.0 - hpxml.fuel_loads[0].frac_sensible + 0.1
6998
7728
  end
6999
7729
  end
7000
7730
 
@@ -7190,12 +7920,53 @@ def create_schematron_hpxml_validator(hpxml_docs)
7190
7920
  end
7191
7921
  end
7192
7922
 
7923
+ # Add ID/IDref checks
7924
+ # TODO: Dynamically obtain these lists
7925
+ id_names = ['SystemIdentifier',
7926
+ 'BuildingID']
7927
+ idref_names = ['AttachedToRoof',
7928
+ 'AttachedToFrameFloor',
7929
+ 'AttachedToSlab',
7930
+ 'AttachedToFoundationWall',
7931
+ 'AttachedToWall',
7932
+ 'DistributionSystem',
7933
+ 'AttachedToHVACDistributionSystem',
7934
+ 'RelatedHVACSystem',
7935
+ 'ConnectedTo']
7936
+ elements_in_sample_files.each do |element_xpath|
7937
+ element_name = element_xpath.split('/')[-1].gsub('h:', '')
7938
+ context_xpath = "/#{element_xpath.split('/')[0..-2].join('/')}"
7939
+ if id_names.include? element_name
7940
+ rule = rules[context_xpath]
7941
+ if rule.nil?
7942
+ # Need new rule
7943
+ rule = XMLHelper.add_element(pattern, 'sch:rule')
7944
+ XMLHelper.add_attribute(rule, 'context', context_xpath)
7945
+ rules[context_xpath] = rule
7946
+ end
7947
+ assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected id attribute for #{element_name}", :string)
7948
+ XMLHelper.add_attribute(assertion, 'role', 'ERROR')
7949
+ XMLHelper.add_attribute(assertion, 'test', "count(h:#{element_name}[@id]) = 1 or not (h:#{element_name})")
7950
+ elsif idref_names.include? element_name
7951
+ rule = rules[context_xpath]
7952
+ if rule.nil?
7953
+ # Need new rule
7954
+ rule = XMLHelper.add_element(pattern, 'sch:rule')
7955
+ XMLHelper.add_attribute(rule, 'context', context_xpath)
7956
+ rules[context_xpath] = rule
7957
+ end
7958
+ assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected idref attribute for #{element_name}", :string)
7959
+ XMLHelper.add_attribute(assertion, 'role', 'ERROR')
7960
+ XMLHelper.add_attribute(assertion, 'test', "count(h:#{element_name}[@idref]) = 1 or not(h:#{element_name})")
7961
+ end
7962
+ end
7963
+
7193
7964
  XMLHelper.write_file(hpxml_validator, File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio', 'resources', 'HPXMLvalidator.xml'))
7194
7965
  end
7195
7966
 
7196
7967
  def get_element_full_xpaths(element_xpaths, complex_type_or_group_dict, element_xpath, element_type)
7197
7968
  if not complex_type_or_group_dict.keys.include? element_type
7198
- return element_xpaths[element_xpath] = element_type
7969
+ element_xpaths[element_xpath] = element_type
7199
7970
  else
7200
7971
  complex_type_or_group = deep_copy_object(complex_type_or_group_dict[element_type])
7201
7972
  complex_type_or_group.each do |k, v|
@@ -7316,13 +8087,18 @@ if ARGV[0].to_sym == :create_release_zips
7316
8087
  File.delete(zip_path) if File.exist? zip_path
7317
8088
  end
7318
8089
 
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!
8090
+ if ENV['CI']
8091
+ # CI doesn't have git, so default to everything
8092
+ git_files = Dir['**/*.*']
8093
+ else
8094
+ # Only include files under git version control
8095
+ command = 'git ls-files'
8096
+ begin
8097
+ git_files = `#{command}`
8098
+ rescue
8099
+ puts "Command failed: '#{command}'. Perhaps git needs to be installed?"
8100
+ exit!
8101
+ end
7326
8102
  end
7327
8103
 
7328
8104
  files = ['HPXMLtoOpenStudio/measure.*',