urbanopt-cli 0.5.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (907) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -2
  3. data/CHANGELOG.md +43 -1
  4. data/CMakeLists.txt +14 -14
  5. data/FindOpenStudioSDK.cmake +11 -6
  6. data/Gemfile +11 -5
  7. data/LICENSE.md +11 -1
  8. data/Rakefile +16 -6
  9. data/example_files/Gemfile +8 -8
  10. data/example_files/example_project_combined.json +100 -5
  11. data/example_files/example_project_with_streets.json +826 -0
  12. data/example_files/mappers/Baseline.rb +107 -59
  13. data/example_files/mappers/CreateBar.rb +17 -7
  14. data/example_files/mappers/EvCharging.rb +20 -10
  15. data/example_files/mappers/Floorspace.rb +17 -7
  16. data/example_files/mappers/HighEfficiency.rb +20 -8
  17. data/example_files/mappers/HighEfficiencyCreateBar.rb +19 -8
  18. data/example_files/mappers/HighEfficiencyFloorspace.rb +19 -8
  19. data/example_files/mappers/ThermalStorage.rb +16 -6
  20. data/example_files/measures/BuildResidentialModel/measure.rb +249 -134
  21. data/example_files/reopt/base_assumptions.json +2 -2
  22. data/example_files/reopt/multiPV_assumptions.json +4 -3
  23. data/example_files/residential/clothes_dryer.tsv +7 -7
  24. data/example_files/residential/clothes_washer.tsv +1 -1
  25. data/example_files/residential/cooling_system.tsv +42 -22
  26. data/example_files/residential/dishwasher.tsv +1 -1
  27. data/example_files/residential/exhaust.tsv +3 -0
  28. data/example_files/residential/heat_pump.tsv +62 -40
  29. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +2 -1
  30. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +116 -0
  31. data/example_files/resources/hpxml-measures/.gitignore +1 -8
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +746 -1236
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1550 -1215
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
  35. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +432 -343
  36. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +134 -91
  37. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
  38. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
  40. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
  41. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +36 -60
  42. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +35 -59
  43. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +35 -59
  44. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +35 -59
  45. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +36 -60
  46. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +36 -60
  47. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +41 -65
  48. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +36 -60
  49. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +36 -60
  50. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +36 -60
  51. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +36 -60
  52. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +36 -60
  53. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +36 -60
  54. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +36 -60
  55. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
  56. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
  57. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +39 -63
  58. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +39 -63
  59. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +39 -63
  60. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +39 -63
  61. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +39 -63
  62. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +36 -60
  63. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +36 -61
  64. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +36 -61
  65. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +36 -60
  66. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +36 -61
  67. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +36 -61
  68. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +36 -61
  69. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +36 -61
  70. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +36 -60
  71. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +36 -60
  72. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +36 -60
  73. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +36 -61
  74. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +36 -60
  75. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +37 -61
  76. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +36 -60
  77. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +36 -60
  78. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +36 -60
  79. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +36 -60
  80. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +36 -60
  81. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +36 -60
  82. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +36 -60
  83. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +36 -60
  84. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +36 -60
  85. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +36 -60
  86. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +36 -60
  87. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +36 -60
  88. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +36 -60
  89. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +36 -60
  90. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +36 -60
  91. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +36 -60
  92. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +36 -60
  93. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +36 -60
  94. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +36 -60
  95. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +36 -60
  96. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +36 -60
  97. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +36 -60
  98. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +36 -60
  99. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +36 -60
  100. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +36 -60
  101. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +36 -60
  102. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +36 -60
  103. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +36 -60
  104. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +36 -60
  105. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +36 -60
  106. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +36 -60
  107. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +36 -60
  108. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +36 -60
  109. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +36 -60
  110. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +36 -60
  111. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +36 -60
  112. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +36 -60
  113. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +36 -60
  114. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +36 -60
  115. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +36 -60
  116. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +36 -60
  117. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +36 -60
  118. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +37 -61
  119. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +37 -61
  120. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +36 -60
  121. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +36 -60
  122. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +36 -60
  123. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +36 -60
  124. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +35 -59
  125. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +35 -59
  126. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +35 -59
  127. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +35 -59
  128. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +35 -59
  129. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
  130. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
  131. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +36 -61
  132. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +36 -60
  133. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +36 -60
  134. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +36 -60
  135. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +36 -60
  136. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +36 -61
  137. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +36 -61
  138. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +36 -60
  139. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +36 -60
  140. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +36 -60
  141. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +36 -61
  142. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +36 -60
  143. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +36 -60
  144. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +36 -62
  145. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +35 -60
  146. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +35 -60
  147. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +35 -59
  148. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +35 -59
  149. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +36 -61
  150. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +36 -60
  151. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +36 -60
  152. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +36 -60
  153. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +37 -61
  154. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +36 -61
  155. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +36 -61
  156. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +37 -62
  157. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +36 -61
  158. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
  159. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +36 -60
  160. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +36 -60
  161. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +36 -60
  162. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +36 -60
  163. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +36 -61
  164. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +36 -60
  165. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +36 -60
  166. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +36 -60
  167. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +36 -60
  168. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
  169. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
  170. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +36 -62
  171. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +41 -63
  172. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
  173. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
  174. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
  175. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
  176. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
  177. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
  178. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
  179. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
  180. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
  181. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
  182. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
  183. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
  184. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +36 -61
  185. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +36 -61
  186. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +36 -61
  187. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +36 -61
  188. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +37 -62
  189. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +37 -62
  190. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +36 -60
  191. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +37 -62
  192. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
  193. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +36 -60
  194. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +36 -60
  195. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +36 -60
  196. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +36 -61
  197. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +36 -61
  198. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +36 -60
  199. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +36 -61
  200. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +36 -60
  201. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +36 -60
  202. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +36 -60
  203. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +45 -69
  204. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +36 -60
  205. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +49 -73
  206. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
  207. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-location-honolulu-hi.osw} +39 -63
  208. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +36 -60
  209. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
  210. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
  211. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +36 -60
  212. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +44 -70
  213. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +37 -61
  214. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +36 -60
  215. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +36 -60
  216. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +36 -60
  217. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
  218. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +36 -60
  219. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +36 -60
  220. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +36 -60
  221. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +36 -60
  222. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +36 -60
  223. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +34 -58
  224. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +34 -58
  225. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +34 -58
  226. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +36 -60
  227. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
  228. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +35 -59
  229. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +36 -60
  230. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +39 -63
  231. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +36 -60
  232. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +36 -60
  233. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +36 -60
  234. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +36 -60
  235. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +36 -60
  236. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +36 -60
  237. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +36 -60
  238. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +36 -60
  239. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +60 -57
  240. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +36 -60
  241. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
  242. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
  243. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
  244. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
  245. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
  246. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
  247. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
  248. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
  249. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
  250. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
  251. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
  252. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
  253. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
  254. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
  255. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
  256. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
  257. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
  258. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
  259. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
  260. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
  261. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
  262. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
  263. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
  264. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
  265. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
  266. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  267. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
  268. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  269. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
  270. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  271. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
  272. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  273. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
  274. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  275. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
  276. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  277. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
  278. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  279. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
  280. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  281. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
  282. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  283. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
  284. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
  285. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
  286. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
  287. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
  288. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
  289. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
  290. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
  291. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
  292. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
  293. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
  294. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
  295. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
  296. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
  297. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
  298. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
  299. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
  300. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
  301. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
  302. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
  303. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
  304. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
  305. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
  306. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
  307. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +339 -0
  308. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
  309. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
  310. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
  311. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
  312. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
  313. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
  314. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
  315. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
  316. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
  317. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
  318. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
  319. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
  320. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
  321. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
  322. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
  323. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +36 -60
  324. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
  325. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
  326. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
  327. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +36 -60
  328. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
  329. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
  330. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
  331. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +36 -60
  332. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +36 -60
  333. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
  334. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
  335. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
  336. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +38 -62
  337. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
  338. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +36 -60
  339. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +36 -60
  340. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
  341. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
  342. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
  343. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
  344. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
  345. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +39 -63
  346. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
  347. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +36 -60
  348. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +36 -60
  349. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +36 -60
  350. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +36 -60
  351. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
  352. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +36 -60
  353. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +39 -63
  354. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +39 -63
  355. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +38 -62
  356. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +36 -60
  357. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
  358. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +40 -64
  359. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
  360. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
  361. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +36 -60
  362. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +36 -60
  363. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +36 -60
  364. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
  365. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +36 -60
  366. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
  367. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +36 -60
  368. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +36 -60
  369. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +36 -60
  370. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +36 -60
  371. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +337 -0
  372. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +36 -60
  373. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +36 -60
  374. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +36 -60
  375. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
  376. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +38 -62
  377. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
  378. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
  379. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
  380. data/example_files/resources/hpxml-measures/Changelog.md +249 -0
  381. data/example_files/resources/hpxml-measures/Gemfile +3 -4
  382. data/example_files/resources/hpxml-measures/Gemfile.lock +27 -32
  383. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +318 -1283
  384. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +167 -121
  385. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +7 -97
  386. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +600 -203
  387. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +21 -28
  388. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
  389. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +112 -177
  390. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +16 -180
  391. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +543 -94
  392. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  393. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +4 -7
  394. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +410 -14
  395. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
  396. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +782 -460
  397. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +455 -107
  398. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1466 -1403
  399. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1391 -1467
  400. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
  401. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
  402. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +85 -13
  403. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
  404. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -33
  405. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +3 -4
  406. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +43 -7
  407. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +24 -7
  408. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
  409. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  410. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +4 -4
  411. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +32 -30
  412. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +6 -29
  413. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +523 -635
  414. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
  415. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -1
  416. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -2
  417. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +297 -7
  418. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +0 -1
  419. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -1
  420. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -1
  421. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -1
  422. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -1
  423. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -1
  424. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +26 -3
  425. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -1
  426. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
  427. data/example_files/resources/hpxml-measures/README.md +4 -5
  428. data/example_files/resources/hpxml-measures/Rakefile +1 -2
  429. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +140 -47
  430. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +351 -495
  431. data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +260 -189
  432. data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
  433. data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +3 -3
  434. data/example_files/resources/hpxml-measures/docs/source/intro.rst +4 -105
  435. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +538 -396
  436. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +158 -130
  437. data/example_files/resources/hpxml-measures/tasks.rb +1497 -736
  438. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
  439. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
  440. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
  441. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
  442. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
  443. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
  444. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
  445. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
  446. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
  447. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +36 -5
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +4 -3
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +5 -3
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +5 -3
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +535 -0
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +5 -3
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +4 -3
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +4 -3
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +4 -2
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +4 -3
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +4 -3
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +4 -3
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +4 -3
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +6 -5
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +4 -3
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +4 -3
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +4 -3
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +4 -3
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +4 -3
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +4 -3
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +4 -3
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +4 -3
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +4 -3
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +3 -5
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +28 -18
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +28 -18
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +3 -5
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +3 -5
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +23 -11
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +3 -5
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +23 -12
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +23 -12
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +4 -3
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +6 -6
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +4 -3
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +8 -5
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +4 -3
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +4 -3
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +4 -3
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +4 -3
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +4 -3
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +4 -3
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +17 -4
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +1 -2
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +1 -2
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +3 -2
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +564 -564
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +4 -3
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +3 -5
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +3 -2
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +3 -5
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +4 -3
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +1 -2
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +1 -2
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +1 -2
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +1 -2
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +1 -2
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +4 -3
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +4 -3
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +4 -3
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +1 -2
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +4 -3
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +1 -2
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +4 -2
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +4 -3
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +4 -3
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +4 -3
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +4 -3
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +4 -3
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +4 -3
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +4 -3
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +4 -3
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +4 -3
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +4 -3
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +4 -3
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +4 -3
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +4 -3
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +4 -3
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +4 -3
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +4 -3
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +4 -3
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +4 -3
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +4 -3
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +4 -3
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +4 -3
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +4 -3
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +4 -3
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +4 -3
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +4 -3
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +4 -3
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +4 -3
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +4 -3
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +4 -3
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +4 -3
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +4 -3
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +5 -4
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +4 -3
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +4 -3
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +4 -3
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +4 -3
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +4 -3
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +4 -3
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +4 -3
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +4 -3
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +4 -3
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +4 -3
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +5 -4
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +9 -3
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +4 -3
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +601 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +6 -5
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +4 -3
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +22 -21
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2475 -0
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +4 -3
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +4 -3
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +577 -561
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +4 -3
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +644 -0
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +4 -3
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +4 -3
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +4 -3
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +6 -5
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +4 -3
  577. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +5 -4
  578. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +5 -4
  579. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +4 -3
  580. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +5 -4
  581. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +4 -3
  582. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +4 -3
  583. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +4 -3
  584. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +556 -0
  585. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +562 -0
  586. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +6 -8
  587. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +6 -5
  588. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +6 -5
  589. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +553 -0
  590. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +558 -0
  591. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +2 -4
  592. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +558 -0
  593. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +560 -559
  594. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +557 -556
  595. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +560 -559
  596. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +557 -556
  597. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
  598. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +569 -569
  599. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
  600. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +2 -4
  601. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +547 -546
  602. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +547 -546
  603. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +2 -7
  604. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +2 -4
  605. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +2 -4
  606. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
  607. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +553 -552
  608. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
  609. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +547 -546
  610. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +560 -559
  611. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +560 -559
  612. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +548 -0
  613. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +558 -557
  614. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +555 -0
  615. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +560 -0
  616. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +562 -562
  617. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +559 -559
  618. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +547 -0
  619. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +2 -4
  620. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +2 -4
  621. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +2 -4
  622. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +557 -0
  623. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
  624. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
  625. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
  626. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +560 -559
  627. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +1 -2
  628. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +1 -2
  629. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +4 -4
  630. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +1 -2
  631. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +1 -2
  632. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +1 -2
  633. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +1 -2
  634. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +3 -5
  635. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +3 -2
  636. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +3 -2
  637. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +7 -12
  638. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +2 -3
  639. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +5 -7
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +5 -7
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +5 -4
  642. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +5 -4
  643. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +5 -7
  644. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +4 -3
  645. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +1 -2
  646. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +4 -2
  647. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +11 -1
  648. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
  649. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
  650. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +512 -563
  651. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
  652. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +548 -547
  653. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +4 -3
  654. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +3 -2
  655. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +4 -3
  656. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +4 -3
  657. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +548 -550
  658. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +4 -3
  659. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +3 -2
  660. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +3 -2
  661. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +3 -2
  662. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +4 -5
  663. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +557 -0
  664. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +563 -0
  665. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +562 -562
  666. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +568 -561
  667. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +566 -559
  668. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +567 -0
  669. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +567 -0
  670. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +571 -564
  671. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +572 -0
  672. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +572 -0
  673. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +552 -549
  674. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +566 -0
  675. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +552 -548
  676. data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +565 -558
  677. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +569 -0
  678. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +566 -0
  679. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +570 -0
  680. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +3 -5
  681. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +1 -5
  682. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +3 -5
  683. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +5 -7
  684. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +6 -8
  685. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +3 -7
  686. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +920 -913
  687. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
  688. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +512 -563
  689. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +7 -6
  690. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +4 -3
  691. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +1 -2
  692. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +1 -2
  693. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +4 -3
  694. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
  695. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
  696. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +4 -3
  697. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +4 -3
  698. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
  699. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +4 -3
  700. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +4 -3
  701. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +4 -3
  702. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +4 -3
  703. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +37 -25
  704. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +4 -3
  705. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +37 -25
  706. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +563 -0
  707. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +517 -0
  708. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +4 -3
  709. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +517 -0
  710. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +577 -0
  711. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +4 -3
  712. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +4 -3
  713. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +2 -3
  714. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +11 -1
  715. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +4 -3
  716. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +4 -3
  717. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +4 -3
  718. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +4 -3
  719. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +4 -3
  720. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +4 -3
  721. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +4 -3
  722. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +32 -29
  723. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +4 -3
  724. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +4 -3
  725. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +4 -2
  726. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +5 -4
  727. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +8 -3
  728. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +12 -3
  729. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +4 -3
  730. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +4 -3
  731. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +564 -0
  732. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +8 -3
  733. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1657 -0
  734. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +4 -3
  735. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +564 -0
  736. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +4 -3
  737. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +4 -3
  738. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +4 -3
  739. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +4 -3
  740. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +4 -3
  741. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +4 -3
  742. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +4 -3
  743. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +4 -3
  744. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
  745. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +1 -2
  746. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +4 -3
  747. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +4 -3
  748. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +4 -3
  749. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → invalid_files/dehumidifier-fraction-served.xml} +534 -523
  750. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +535 -0
  751. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +1 -2
  752. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +4 -3
  753. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +4 -3
  754. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +4 -3
  755. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +563 -0
  756. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +563 -0
  757. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +4 -3
  758. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +4 -3
  759. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +4 -3
  760. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +4 -3
  761. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +5 -4
  762. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +5 -4
  763. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +7 -6
  764. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +448 -0
  765. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +4 -3
  766. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +4 -3
  767. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +4 -3
  768. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +4 -3
  769. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +4 -3
  770. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +14 -60
  771. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +760 -0
  772. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +759 -0
  773. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +761 -0
  774. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +759 -0
  775. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +563 -0
  776. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +460 -0
  777. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +579 -0
  778. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +3 -5
  779. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +920 -913
  780. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +920 -913
  781. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +3 -7
  782. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +3 -4
  783. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +3 -4
  784. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +920 -913
  785. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +4 -3
  786. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +4 -3
  787. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
  788. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +563 -0
  789. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +4 -3
  790. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +4 -3
  791. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +4 -3
  792. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +4 -3
  793. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +5 -4
  794. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +4 -3
  795. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +4 -3
  796. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +4 -3
  797. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +574 -0
  798. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +591 -0
  799. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +591 -0
  800. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +563 -0
  801. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +4 -3
  802. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +4 -3
  803. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +465 -0
  804. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +563 -0
  805. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +451 -0
  806. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +3 -5
  807. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +1 -2
  808. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +4 -3
  809. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +4 -3
  810. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +473 -0
  811. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +4 -3
  812. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +9 -3
  813. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +4 -3
  814. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +916 -909
  815. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +4 -3
  816. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +4 -3
  817. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +4 -3
  818. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +15 -4
  819. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +4 -3
  820. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1657 -0
  821. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1657 -0
  822. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
  823. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
  824. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +5 -4
  825. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +4 -3
  826. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +4 -3
  827. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +3 -2
  828. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +4 -3
  829. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +4 -3
  830. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +4 -3
  831. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +3 -5
  832. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +1 -2
  833. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +571 -0
  834. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +1 -2
  835. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +3 -5
  836. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +1 -2
  837. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +4 -3
  838. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +4 -3
  839. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +4 -3
  840. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +4 -3
  841. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +4 -3
  842. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +6 -5
  843. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +4 -3
  844. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +4 -3
  845. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +4 -3
  846. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +4 -3
  847. data/example_files/resources/hpxml-measures/workflow/template.osw +5 -1
  848. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
  849. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
  850. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
  851. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
  852. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
  853. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
  854. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
  855. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
  856. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
  857. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
  858. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
  859. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
  860. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
  861. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
  862. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
  863. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
  864. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
  865. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
  866. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
  867. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
  868. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
  869. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
  870. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
  871. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
  872. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
  873. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
  874. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +294 -0
  875. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
  876. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
  877. data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
  878. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +324 -382
  879. data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
  880. data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
  881. data/example_files/visualization/input_visualization_feature.html +13 -14
  882. data/example_files/visualization/input_visualization_scenario.html +14 -9
  883. data/lib/uo_cli.rb +293 -60
  884. data/lib/uo_cli/version.rb +17 -7
  885. data/requirements.txt +2 -0
  886. data/scripts/setup-env-gitbash.sh +4 -4
  887. data/scripts/setup-env-unix.sh +4 -4
  888. data/scripts/setup-env.bat +3 -3
  889. data/scripts/setup-env.ps1 +3 -3
  890. data/uo_cli.gemspec +10 -7
  891. metadata +320 -82
  892. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
  893. data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
  894. data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
  895. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
  896. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
  897. data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
  898. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
  899. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
  900. data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
  901. data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
  902. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
  903. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -74
  904. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
  905. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +0 -109
  906. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -835
  907. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +0 -563
@@ -1,16 +1,33 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SimControls
4
- def self.apply(model, header)
4
+ def self.apply(model, hpxml)
5
5
  sim = model.getSimulationControl
6
6
  sim.setRunSimulationforSizingPeriods(false)
7
7
 
8
8
  tstep = model.getTimestep
9
- tstep.setNumberOfTimestepsPerHour(60 / header.timestep)
9
+ tstep.setNumberOfTimestepsPerHour(60 / hpxml.header.timestep)
10
10
 
11
11
  shad = model.getShadowCalculation
12
- shad.setShadingCalculationUpdateFrequency(20)
13
12
  shad.setMaximumFiguresInShadowOverlapCalculations(200)
13
+ # Use EnergyPlus default of 20 days for update frequency; it is a reasonable balance
14
+ # between speed and accuracy (e.g., sun position, picking up any change in window
15
+ # interior shading transmittance, etc.).
16
+ shad.setShadingCalculationUpdateFrequency(20)
17
+
18
+ has_windows_varying_transmittance = false
19
+ hpxml.windows.each do |window|
20
+ sf_summer = window.interior_shading_factor_summer * window.exterior_shading_factor_summer
21
+ sf_winter = window.interior_shading_factor_winter * window.exterior_shading_factor_winter
22
+ next if sf_summer == sf_winter
23
+
24
+ has_windows_varying_transmittance = true
25
+ end
26
+ if has_windows_varying_transmittance
27
+ # Detailed diffuse algorithm is required for window interior shading with varying
28
+ # transmittance schedules
29
+ shad.setSkyDiffuseModelingAlgorithm('DetailedSkyDiffuseModeling')
30
+ end
14
31
 
15
32
  outsurf = model.getOutsideSurfaceConvectionAlgorithm
16
33
  outsurf.setAlgorithm('DOE-2')
@@ -25,9 +42,9 @@ class SimControls
25
42
  convlim.setMinimumSystemTimestep(0)
26
43
 
27
44
  run_period = model.getRunPeriod
28
- run_period.setBeginMonth(header.sim_begin_month)
29
- run_period.setBeginDayOfMonth(header.sim_begin_day)
30
- run_period.setEndMonth(header.sim_end_month)
31
- run_period.setEndDayOfMonth(header.sim_end_day)
45
+ run_period.setBeginMonth(hpxml.header.sim_begin_month)
46
+ run_period.setBeginDayOfMonth(hpxml.header.sim_begin_day)
47
+ run_period.setEndMonth(hpxml.header.sim_end_month)
48
+ run_period.setEndDayOfMonth(hpxml.header.sim_end_day)
32
49
  end
33
50
  end
@@ -167,6 +167,8 @@ class UnitConversions
167
167
  return x + 273.15
168
168
  elsif key == ['f', 'c']
169
169
  return (x - 32.0) / 1.8
170
+ elsif key == ['f', 'k']
171
+ return (x - 32.0) / 1.8 + 273.15
170
172
  elsif key == ['f', 'r']
171
173
  return x + 459.67
172
174
  elsif key == ['k', 'c']
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Version
4
- OS_HPXML_Version = '1.0.0' # Version of the OS-HPXML workflow
5
- OS_Version = '3.1.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
4
+ OS_HPXML_Version = '1.1.0' # Version of the OS-HPXML workflow
5
+ OS_Version = '3.2.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
6
6
  HPXML_Version = '3.0' # HPXML schemaVersion
7
7
 
8
8
  def self.check_openstudio_version
@@ -183,6 +183,7 @@ class Waterheater
183
183
  if water_heating_system.standby_loss <= 0
184
184
  fail 'A negative indirect water heater standby loss was calculated, double check water heater inputs.'
185
185
  end
186
+
186
187
  act_vol = calc_storage_tank_actual_vol(water_heating_system.tank_volume, nil)
187
188
  a_side = calc_tank_areas(act_vol)[1]
188
189
  ua = calc_indirect_ua_with_standbyloss(act_vol, water_heating_system, a_side, solar_fraction)
@@ -1192,10 +1193,11 @@ class Waterheater
1192
1193
  ef = calc_ef_from_uef(water_heating_system)
1193
1194
  end
1194
1195
  if ef >= 0.75
1195
- return 0.778114 * ef + 0.276679
1196
+ re = 0.561 * ef + 0.439
1196
1197
  else
1197
- return 0.252117 * ef + 0.607997
1198
+ re = 0.252 * ef + 0.608
1198
1199
  end
1200
+ return re
1199
1201
  end
1200
1202
  end
1201
1203
 
@@ -1398,8 +1400,6 @@ class Waterheater
1398
1400
  location_hierarchy = [HPXML::LocationBasementConditioned,
1399
1401
  HPXML::LocationBasementUnconditioned,
1400
1402
  HPXML::LocationLivingSpace]
1401
- else
1402
- fail "Unexpected IECC climate zone: '#{iecc_zone}'."
1403
1403
  end
1404
1404
  location_hierarchy.each do |space_type|
1405
1405
  if hpxml.has_space_type(space_type)
@@ -8,11 +8,11 @@ class XMLHelper
8
8
  parent.children << added
9
9
  if not value.nil?
10
10
  if datatype == :integer
11
- value = to_integer(value)
11
+ value = to_integer(value, parent, element_name)
12
12
  elsif datatype == :float
13
- value = to_float(value)
13
+ value = to_float(value, parent, element_name)
14
14
  elsif datatype == :boolean
15
- value = to_boolean(value)
15
+ value = to_boolean(value, parent, element_name)
16
16
  elsif datatype != :string
17
17
  # If value provided, datatype required
18
18
  fail 'Unexpected datatype.'
@@ -58,30 +58,24 @@ class XMLHelper
58
58
 
59
59
  # Returns the value of 'element_name' in the parent element or nil.
60
60
  def self.get_value(parent, element_name, datatype)
61
- value, isdefaulted = get_value_and_defaulted(parent, element_name, datatype)
62
- return value
63
- end
64
-
65
- def self.get_value_and_defaulted(parent, element_name, datatype)
66
61
  element = parent.at_xpath(element_name)
67
62
  if element.nil?
68
63
  return
69
64
  end
65
+
70
66
  value = element.text
71
67
 
72
68
  if datatype == :integer
73
- value = to_integer_or_nil(value)
69
+ value = to_integer_or_nil(value, parent, element_name)
74
70
  elsif datatype == :float
75
- value = to_float_or_nil(value)
71
+ value = to_float_or_nil(value, parent, element_name)
76
72
  elsif datatype == :boolean
77
- value = to_boolean_or_nil(value)
73
+ value = to_boolean_or_nil(value, parent, element_name)
78
74
  elsif datatype != :string
79
75
  fail 'Unexpected datatype.'
80
76
  end
81
77
 
82
- isdefaulted = get_attribute_value(element, 'dataSource') == 'software'
83
-
84
- return value, isdefaulted
78
+ return value
85
79
  end
86
80
 
87
81
  # Returns the value(s) of 'element_name' in the parent element or [].
@@ -91,11 +85,11 @@ class XMLHelper
91
85
  value = value.text
92
86
 
93
87
  if datatype == :integer
94
- value = to_integer_or_nil(value)
88
+ value = to_integer_or_nil(value, parent, element_name)
95
89
  elsif datatype == :float
96
- value = to_float_or_nil(value)
90
+ value = to_float_or_nil(value, parent, element_name)
97
91
  elsif datatype == :boolean
98
- value = to_boolean_or_nil(value)
92
+ value = to_boolean_or_nil(value, parent, element_name)
99
93
  elsif datatype != :string
100
94
  fail 'Unexpected datatype.'
101
95
  end
@@ -148,6 +142,12 @@ class XMLHelper
148
142
  return element.get(attr_name)
149
143
  end
150
144
 
145
+ def self.delete_attribute(element, attr_name)
146
+ return if element.nil?
147
+
148
+ element.unset(attr_name)
149
+ end
150
+
151
151
  def self.validate(doc, xsd_path, runner = nil)
152
152
  if Gem::Specification::find_all_by_name('nokogiri').any?
153
153
  require 'nokogiri'
@@ -222,28 +222,28 @@ class XMLHelper
222
222
  end
223
223
  end
224
224
 
225
- def to_float(value)
225
+ def to_float(value, parent, element_name)
226
226
  begin
227
227
  return Float(value)
228
228
  rescue
229
- fail "Cannot convert '#{value}' to float."
229
+ fail "Cannot convert '#{value}' to float for #{parent.name}/#{element_name}."
230
230
  end
231
231
  end
232
232
 
233
- def to_integer(value)
233
+ def to_integer(value, parent, element_name)
234
234
  begin
235
235
  value = Float(value)
236
236
  rescue
237
- fail "Cannot convert '#{value}' to integer."
237
+ fail "Cannot convert '#{value}' to integer for #{parent.name}/#{element_name}."
238
238
  end
239
239
  if value % 1 == 0
240
240
  return Integer(value)
241
241
  else
242
- fail "Cannot convert '#{value}' to integer."
242
+ fail "Cannot convert '#{value}' to integer for #{parent.name}/#{element_name}."
243
243
  end
244
244
  end
245
245
 
246
- def to_boolean(value)
246
+ def to_boolean(value, parent = nil, element_name = nil)
247
247
  if value.is_a? TrueClass
248
248
  return true
249
249
  elsif value.is_a? FalseClass
@@ -254,23 +254,25 @@ def to_boolean(value)
254
254
  return false
255
255
  end
256
256
 
257
- fail "Cannot convert '#{value}' to boolean."
257
+ if (not parent.nil?) && (not element_name.nil?)
258
+ fail "Cannot convert '#{value}' to boolean for #{parent.name}/#{element_name}."
259
+ end
258
260
  end
259
261
 
260
- def to_float_or_nil(value)
262
+ def to_float_or_nil(value, parent, element_name)
261
263
  return if value.nil?
262
264
 
263
- return to_float(value)
265
+ return to_float(value, parent, element_name)
264
266
  end
265
267
 
266
- def to_integer_or_nil(value)
268
+ def to_integer_or_nil(value, parent, element_name)
267
269
  return if value.nil?
268
270
 
269
- return to_integer(value)
271
+ return to_integer(value, parent, element_name)
270
272
  end
271
273
 
272
- def to_boolean_or_nil(value)
274
+ def to_boolean_or_nil(value, parent, element_name)
273
275
  return if value.nil?
274
276
 
275
- return to_boolean(value)
277
+ return to_boolean(value, parent, element_name)
276
278
  end
@@ -3,42 +3,16 @@
3
3
  require_relative '../resources/minitest_helper'
4
4
  require 'openstudio'
5
5
  require 'openstudio/measure/ShowRunnerOutput'
6
- require 'minitest/autorun'
7
6
  require 'fileutils'
8
7
  require_relative '../measure.rb'
9
8
  require_relative '../resources/util.rb'
9
+ require_relative 'util.rb'
10
10
 
11
11
  class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
12
12
  def sample_files_dir
13
13
  return File.join(File.dirname(__FILE__), '..', '..', 'workflow', 'sample_files')
14
14
  end
15
15
 
16
- def get_ems_values(ems_objects, name)
17
- values = {}
18
- ems_objects.each do |ems_object|
19
- next unless ems_object.name.to_s.include? name.gsub(' ', '_')
20
-
21
- ems_object.lines.each do |line|
22
- next unless line.downcase.start_with? 'set'
23
-
24
- lhs, rhs = line.split('=')
25
- lhs = lhs.gsub('Set', '').gsub('set', '').strip
26
- rhs = rhs.gsub(',', '').gsub(';', '').strip
27
- values[lhs] = [] if values[lhs].nil?
28
- # eg. "Q = Q + 1.5"
29
- if rhs.include? '+'
30
- rhs_els = rhs.split('+')
31
- rhs = rhs_els.map { |s| s.to_f }.sum(0.0)
32
- else
33
- rhs = rhs.to_f
34
- end
35
- values[lhs] << rhs
36
- end
37
- end
38
- assert_operator(values.size, :>, 0)
39
- return values
40
- end
41
-
42
16
  def get_eed_for_ventilation(model, ee_name)
43
17
  eeds = []
44
18
  model.getElectricEquipmentDefinitions.each do |eed|
@@ -92,7 +66,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
92
66
  # Check infiltration/ventilation program
93
67
  program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program")
94
68
  assert_in_epsilon(0.0436, program_values['c'].sum, 0.01)
95
- assert_in_epsilon(0.0818, program_values['Cs'].sum, 0.01)
69
+ assert_in_epsilon(0.0661, program_values['Cs'].sum, 0.01)
96
70
  assert_in_epsilon(0.1323, program_values['Cw'].sum, 0.01)
97
71
  end
98
72
 
@@ -127,7 +101,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
127
101
 
128
102
  # Check infiltration/ventilation program
129
103
  program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program")
130
- assert_in_epsilon(0.3028, program_values['c'].sum, 0.01)
104
+ assert_in_epsilon(0.0904, program_values['c'].sum, 0.01)
131
105
  assert_in_epsilon(0.0573, program_values['Cs'].sum, 0.01)
132
106
  assert_in_epsilon(0.1446, program_values['Cw'].sum, 0.01)
133
107
  end
@@ -599,6 +573,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
599
573
  model = OpenStudio::Model::Model.new
600
574
 
601
575
  # get arguments
576
+ args_hash['output_dir'] = 'tests'
602
577
  arguments = measure.arguments(model)
603
578
  argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
604
579
 
@@ -623,6 +598,8 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
623
598
 
624
599
  hpxml = HPXML.new(hpxml_path: args_hash['hpxml_path'])
625
600
 
601
+ File.delete(File.join(File.dirname(__FILE__), 'in.xml'))
602
+
626
603
  return model, hpxml
627
604
  end
628
605
  end
@@ -3,7 +3,6 @@
3
3
  require_relative '../resources/minitest_helper'
4
4
  require 'openstudio'
5
5
  require 'openstudio/measure/ShowRunnerOutput'
6
- require 'minitest/autorun'
7
6
  require 'fileutils'
8
7
  require_relative '../measure.rb'
9
8
  require_relative '../resources/util.rb'
@@ -12,7 +11,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
12
11
  ConstantDaySchedule = '0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1'
13
12
  ConstantMonthSchedule = '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1'
14
13
 
15
- def before_setup
14
+ def setup
16
15
  @root_path = File.absolute_path(File.join(File.dirname(__FILE__), '..', '..'))
17
16
  @sample_files_path = File.join(@root_path, 'workflow', 'sample_files')
18
17
  @tmp_hpxml_path = File.join(@sample_files_path, 'tmp.xml')
@@ -25,7 +24,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
25
24
  @args_hash['output_dir'] = File.absolute_path(@tmp_output_path)
26
25
  end
27
26
 
28
- def after_teardown
27
+ def teardown
29
28
  File.delete(@tmp_hpxml_path) if File.exist? @tmp_hpxml_path
30
29
  FileUtils.rm_rf(@tmp_output_path)
31
30
  end
@@ -48,7 +47,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
48
47
  hpxml.header.allow_increased_fixed_capacities = true
49
48
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
50
49
  hpxml_default = _test_measure()
51
- _test_default_header_values(hpxml_default, false, 30, 2, 2, 11, 11, 2008, false, 3, 3, 10, 10, false, true)
50
+ _test_default_header_values(hpxml_default, 30, 2, 2, 11, 11, 2008, false, 3, 3, 10, 10, false, true)
52
51
 
53
52
  # Test defaults - DST not in weather file
54
53
  hpxml.header.timestep = nil
@@ -66,7 +65,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
66
65
  hpxml.header.allow_increased_fixed_capacities = nil
67
66
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
68
67
  hpxml_default = _test_measure()
69
- _test_default_header_values(hpxml_default, true, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, true, false)
68
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, true, false)
70
69
 
71
70
  # Test defaults - DST in weather file
72
71
  hpxml = _create_hpxml('base-location-AMY-2012.xml')
@@ -85,24 +84,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
85
84
  hpxml.header.allow_increased_fixed_capacities = nil
86
85
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
87
86
  hpxml_default = _test_measure()
88
- _test_default_header_values(hpxml_default, true, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, true, false)
87
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, true, false)
89
88
  end
90
89
 
91
90
  def test_site
92
91
  # Test inputs not overridden by defaults
93
92
  hpxml = _create_hpxml('base.xml')
94
93
  hpxml.site.site_type = HPXML::SiteTypeRural
95
- hpxml.site.shelter_coefficient = 0.3
94
+ hpxml.site.shielding_of_home = HPXML::ShieldingExposed
96
95
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
97
96
  hpxml_default = _test_measure()
98
- _test_default_site_values(hpxml_default, false, HPXML::SiteTypeRural, 0.3)
97
+ _test_default_site_values(hpxml_default, HPXML::SiteTypeRural, HPXML::ShieldingExposed)
99
98
 
100
99
  # Test defaults
101
100
  hpxml.site.site_type = nil
102
- hpxml.site.shelter_coefficient = nil
101
+ hpxml.site.shielding_of_home = nil
103
102
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
104
103
  hpxml_default = _test_measure()
105
- _test_default_site_values(hpxml_default, true, HPXML::SiteTypeSuburban, 0.5)
104
+ _test_default_site_values(hpxml_default, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal)
106
105
  end
107
106
 
108
107
  def test_occupancy
@@ -111,13 +110,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
111
110
  hpxml.building_occupancy.number_of_residents = 1
112
111
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
113
112
  hpxml_default = _test_measure()
114
- _test_default_occupancy_values(hpxml_default, false, 1)
113
+ _test_default_occupancy_values(hpxml_default, 1)
115
114
 
116
115
  # Test defaults
117
116
  hpxml.building_occupancy.number_of_residents = nil
118
117
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
119
118
  hpxml_default = _test_measure()
120
- _test_default_occupancy_values(hpxml_default, true, 3)
119
+ _test_default_occupancy_values(hpxml_default, 3)
121
120
  end
122
121
 
123
122
  def test_building_construction
@@ -128,7 +127,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
128
127
  hpxml.building_construction.average_ceiling_height = 7
129
128
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
130
129
  hpxml_default = _test_measure()
131
- _test_default_building_construction_values(hpxml_default, false, 20000, 7, true, 4)
130
+ _test_default_building_construction_values(hpxml_default, 20000, 7, true, 4)
132
131
 
133
132
  # Test defaults
134
133
  hpxml.building_construction.conditioned_building_volume = nil
@@ -137,21 +136,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
137
136
  hpxml.building_construction.number_of_bathrooms = nil
138
137
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
139
138
  hpxml_default = _test_measure()
140
- _test_default_building_construction_values(hpxml_default, true, 21600, 8, false, 2)
139
+ _test_default_building_construction_values(hpxml_default, 21600, 8, false, 2)
141
140
 
142
141
  # Test defaults w/ average ceiling height
143
142
  hpxml.building_construction.conditioned_building_volume = nil
144
143
  hpxml.building_construction.average_ceiling_height = 10
145
144
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
146
145
  hpxml_default = _test_measure()
147
- _test_default_building_construction_values(hpxml_default, true, 27000, 10, false, 2)
146
+ _test_default_building_construction_values(hpxml_default, 27000, 10, false, 2)
148
147
 
149
148
  # Test defaults w/ average ceiling height
150
- hpxml.building_construction.conditioned_building_volume = 27000
149
+ hpxml.building_construction.conditioned_building_volume = 20000
151
150
  hpxml.building_construction.average_ceiling_height = nil
152
151
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
153
152
  hpxml_default = _test_measure()
154
- _test_default_building_construction_values(hpxml_default, true, 27000, 10, false, 2)
153
+ _test_default_building_construction_values(hpxml_default, 20000, 7.4, false, 2)
155
154
  end
156
155
 
157
156
  def test_infiltration
@@ -160,20 +159,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
160
159
  hpxml.air_infiltration_measurements[0].infiltration_volume = 25000
161
160
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
162
161
  hpxml_default = _test_measure()
163
- _test_default_infiltration_values(hpxml_default, false, 25000)
162
+ _test_default_infiltration_values(hpxml_default, 25000)
164
163
 
165
164
  # Test defaults w/ conditioned basement
166
165
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
167
166
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
168
167
  hpxml_default = _test_measure()
169
- _test_default_infiltration_values(hpxml_default, true, 2700 * 8)
168
+ _test_default_infiltration_values(hpxml_default, 2700 * 8)
170
169
 
171
170
  # Test defaults w/o conditioned basement
172
171
  hpxml = _create_hpxml('base-foundation-slab.xml')
173
172
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
174
173
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
175
174
  hpxml_default = _test_measure()
176
- _test_default_infiltration_values(hpxml_default, true, 1350 * 8)
175
+ _test_default_infiltration_values(hpxml_default, 1350 * 8)
177
176
  end
178
177
 
179
178
  def test_attics
@@ -182,13 +181,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
182
181
  hpxml.attics[0].vented_attic_sla = 0.001
183
182
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
184
183
  hpxml_default = _test_measure()
185
- _test_default_attic_values(hpxml_default, false, 0.001)
184
+ _test_default_attic_values(hpxml_default, 0.001)
186
185
 
187
186
  # Test defaults
188
187
  hpxml.attics[0].vented_attic_sla = nil
189
188
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
190
189
  hpxml_default = _test_measure()
191
- _test_default_attic_values(hpxml_default, true, 1.0 / 300.0)
190
+ _test_default_attic_values(hpxml_default, 1.0 / 300.0)
192
191
  end
193
192
 
194
193
  def test_foundations
@@ -197,13 +196,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
197
196
  hpxml.foundations[0].vented_crawlspace_sla = 0.001
198
197
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
199
198
  hpxml_default = _test_measure()
200
- _test_default_foundation_values(hpxml_default, false, 0.001)
199
+ _test_default_foundation_values(hpxml_default, 0.001)
201
200
 
202
201
  # Test defaults
203
202
  hpxml.foundations[0].vented_crawlspace_sla = nil
204
203
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
205
204
  hpxml_default = _test_measure()
206
- _test_default_foundation_values(hpxml_default, true, 1.0 / 150.0)
205
+ _test_default_foundation_values(hpxml_default, 1.0 / 150.0)
207
206
  end
208
207
 
209
208
  def test_roofs
@@ -215,7 +214,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
215
214
  hpxml.roofs[0].emittance = 0.88
216
215
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
217
216
  hpxml_default = _test_measure()
218
- _test_default_roof_values(hpxml_default, false, HPXML::RoofTypeMetal, 0.77, HPXML::ColorDark, 0.88, true)
217
+ _test_default_roof_values(hpxml_default, HPXML::RoofTypeMetal, 0.77, HPXML::ColorDark, 0.88, true)
219
218
 
220
219
  # Test defaults w/ RoofColor
221
220
  hpxml.roofs[0].roof_type = nil
@@ -225,14 +224,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
225
224
  hpxml.roofs[0].radiant_barrier = nil
226
225
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
227
226
  hpxml_default = _test_measure()
228
- _test_default_roof_values(hpxml_default, true, HPXML::RoofTypeAsphaltShingles, 0.75, HPXML::ColorLight, 0.90, false)
227
+ _test_default_roof_values(hpxml_default, HPXML::RoofTypeAsphaltShingles, 0.75, HPXML::ColorLight, 0.90, false)
229
228
 
230
229
  # Test defaults w/ SolarAbsorptance
231
230
  hpxml.roofs[0].solar_absorptance = 0.99
232
231
  hpxml.roofs[0].roof_color = nil
233
232
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
234
233
  hpxml_default = _test_measure()
235
- _test_default_roof_values(hpxml_default, true, HPXML::RoofTypeAsphaltShingles, 0.99, HPXML::ColorDark, 0.90, false)
234
+ _test_default_roof_values(hpxml_default, HPXML::RoofTypeAsphaltShingles, 0.99, HPXML::ColorDark, 0.90, false)
236
235
  end
237
236
 
238
237
  def test_rim_joists
@@ -244,7 +243,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
244
243
  hpxml.rim_joists[0].emittance = 0.88
245
244
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
246
245
  hpxml_default = _test_measure()
247
- _test_default_rim_joist_values(hpxml_default, false, HPXML::SidingTypeBrick, 0.55, HPXML::ColorLight, 0.88)
246
+ _test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeBrick, 0.55, HPXML::ColorLight, 0.88)
248
247
 
249
248
  # Test defaults w/ Color
250
249
  hpxml.rim_joists[0].siding = nil
@@ -253,14 +252,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
253
252
  hpxml.rim_joists[0].emittance = nil
254
253
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
255
254
  hpxml_default = _test_measure()
256
- _test_default_rim_joist_values(hpxml_default, true, HPXML::SidingTypeWood, 0.95, HPXML::ColorDark, 0.90)
255
+ _test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeWood, 0.95, HPXML::ColorDark, 0.90)
257
256
 
258
257
  # Test defaults w/ SolarAbsorptance
259
258
  hpxml.rim_joists[0].solar_absorptance = 0.99
260
259
  hpxml.rim_joists[0].color = nil
261
260
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
262
261
  hpxml_default = _test_measure()
263
- _test_default_rim_joist_values(hpxml_default, true, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
262
+ _test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
264
263
  end
265
264
 
266
265
  def test_walls
@@ -272,7 +271,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
272
271
  hpxml.walls[0].emittance = 0.88
273
272
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
274
273
  hpxml_default = _test_measure()
275
- _test_default_wall_values(hpxml_default, false, HPXML::SidingTypeFiberCement, 0.66, HPXML::ColorDark, 0.88)
274
+ _test_default_wall_values(hpxml_default, HPXML::SidingTypeFiberCement, 0.66, HPXML::ColorDark, 0.88)
276
275
 
277
276
  # Test defaults W/ Color
278
277
  hpxml.walls[0].siding = nil
@@ -281,14 +280,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
281
280
  hpxml.walls[0].emittance = nil
282
281
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
283
282
  hpxml_default = _test_measure()
284
- _test_default_wall_values(hpxml_default, true, HPXML::SidingTypeWood, 0.5, HPXML::ColorLight, 0.90)
283
+ _test_default_wall_values(hpxml_default, HPXML::SidingTypeWood, 0.5, HPXML::ColorLight, 0.90)
285
284
 
286
285
  # Test defaults W/ SolarAbsorptance
287
286
  hpxml.walls[0].solar_absorptance = 0.99
288
287
  hpxml.walls[0].color = nil
289
288
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
290
289
  hpxml_default = _test_measure()
291
- _test_default_wall_values(hpxml_default, true, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
290
+ _test_default_wall_values(hpxml_default, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
292
291
  end
293
292
 
294
293
  def test_foundation_walls
@@ -297,13 +296,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
297
296
  hpxml.foundation_walls[0].thickness = 7.0
298
297
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
299
298
  hpxml_default = _test_measure()
300
- _test_default_foundation_wall_values(hpxml_default, false, 7.0)
299
+ _test_default_foundation_wall_values(hpxml_default, 7.0)
301
300
 
302
301
  # Test defaults
303
302
  hpxml.foundation_walls[0].thickness = nil
304
303
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
305
304
  hpxml_default = _test_measure()
306
- _test_default_foundation_wall_values(hpxml_default, true, 8.0)
305
+ _test_default_foundation_wall_values(hpxml_default, 8.0)
307
306
  end
308
307
 
309
308
  def test_slabs
@@ -314,7 +313,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
314
313
  hpxml.slabs[0].carpet_fraction = 0.5
315
314
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
316
315
  hpxml_default = _test_measure()
317
- _test_default_slab_values(hpxml_default, false, 7.0, 1.1, 0.5)
316
+ _test_default_slab_values(hpxml_default, 7.0, 1.1, 0.5)
318
317
 
319
318
  # Test defaults w/ conditioned basement
320
319
  hpxml.slabs[0].thickness = nil
@@ -322,7 +321,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
322
321
  hpxml.slabs[0].carpet_fraction = nil
323
322
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
324
323
  hpxml_default = _test_measure()
325
- _test_default_slab_values(hpxml_default, true, 4.0, 2.0, 0.8)
324
+ _test_default_slab_values(hpxml_default, 4.0, 2.0, 0.8)
326
325
 
327
326
  # Test defaults w/ crawlspace
328
327
  hpxml = _create_hpxml('base-foundation-unvented-crawlspace.xml')
@@ -331,55 +330,63 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
331
330
  hpxml.slabs[0].carpet_fraction = nil
332
331
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
333
332
  hpxml_default = _test_measure()
334
- _test_default_slab_values(hpxml_default, true, 0.0, 0.0, 0.0)
333
+ _test_default_slab_values(hpxml_default, 0.0, 0.0, 0.0)
335
334
  end
336
335
 
337
336
  def test_windows
338
337
  # Test inputs not overridden by defaults
339
- hpxml = _create_hpxml('base-enclosure-windows-interior-shading.xml')
338
+ hpxml = _create_hpxml('base-enclosure-windows-shading.xml')
340
339
  hpxml.windows.each do |window|
341
340
  window.fraction_operable = 0.5
341
+ window.exterior_shading_factor_summer = 0.44
342
+ window.exterior_shading_factor_winter = 0.55
342
343
  window.interior_shading_factor_summer = 0.66
343
344
  window.interior_shading_factor_winter = 0.77
344
345
  end
345
346
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
346
347
  hpxml_default = _test_measure()
347
348
  n_windows = hpxml_default.windows.size
348
- _test_default_window_values(hpxml_default, false, [0.66] * n_windows, [0.77] * n_windows, [0.5] * n_windows)
349
+ _test_default_window_values(hpxml_default, [0.44] * n_windows, [0.55] * n_windows, [0.66] * n_windows, [0.77] * n_windows, [0.5] * n_windows)
349
350
 
350
351
  # Test defaults
351
352
  hpxml.windows.each do |window|
352
353
  window.fraction_operable = nil
354
+ window.exterior_shading_factor_summer = nil
355
+ window.exterior_shading_factor_winter = nil
353
356
  window.interior_shading_factor_summer = nil
354
357
  window.interior_shading_factor_winter = nil
355
358
  end
356
359
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
357
360
  hpxml_default = _test_measure()
358
361
  n_windows = hpxml_default.windows.size
359
- _test_default_window_values(hpxml_default, true, [0.7] * n_windows, [0.85] * n_windows, [0.67] * n_windows)
362
+ _test_default_window_values(hpxml_default, [1.0] * n_windows, [1.0] * n_windows, [0.7] * n_windows, [0.85] * n_windows, [0.67] * n_windows)
360
363
  end
361
364
 
362
365
  def test_skylights
363
366
  # Test inputs not overridden by defaults
364
367
  hpxml = _create_hpxml('base-enclosure-skylights.xml')
365
368
  hpxml.skylights.each do |skylight|
369
+ skylight.exterior_shading_factor_summer = 0.44
370
+ skylight.exterior_shading_factor_winter = 0.55
366
371
  skylight.interior_shading_factor_summer = 0.66
367
372
  skylight.interior_shading_factor_winter = 0.77
368
373
  end
369
374
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
370
375
  hpxml_default = _test_measure()
371
376
  n_skylights = hpxml_default.skylights.size
372
- _test_default_skylight_values(hpxml_default, false, [0.66] * n_skylights, [0.77] * n_skylights)
377
+ _test_default_skylight_values(hpxml_default, [0.44] * n_skylights, [0.55] * n_skylights, [0.66] * n_skylights, [0.77] * n_skylights)
373
378
 
374
379
  # Test defaults
375
380
  hpxml.skylights.each do |skylight|
381
+ skylight.exterior_shading_factor_summer = nil
382
+ skylight.exterior_shading_factor_winter = nil
376
383
  skylight.interior_shading_factor_summer = nil
377
384
  skylight.interior_shading_factor_winter = nil
378
385
  end
379
386
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
380
387
  hpxml_default = _test_measure()
381
388
  n_skylights = hpxml_default.skylights.size
382
- _test_default_skylight_values(hpxml_default, true, [1.0] * n_skylights, [1.0] * n_skylights)
389
+ _test_default_skylight_values(hpxml_default, [1.0] * n_skylights, [1.0] * n_skylights, [1.0] * n_skylights, [1.0] * n_skylights)
383
390
  end
384
391
 
385
392
  def test_central_air_conditioners
@@ -388,32 +395,55 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
388
395
  hpxml.cooling_systems[0].cooling_shr = 0.88
389
396
  hpxml.cooling_systems[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed
390
397
  hpxml.cooling_systems[0].fan_watts_per_cfm = 0.66
398
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.11
399
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
400
+ hpxml.cooling_systems[0].cooling_capacity = 12345
391
401
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
392
402
  hpxml_default = _test_measure()
393
- _test_default_central_air_conditioner_values(hpxml_default, false, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66)
403
+ _test_default_central_air_conditioner_values(hpxml_default, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345)
394
404
 
395
405
  # Test defaults
396
406
  hpxml.cooling_systems[0].cooling_shr = nil
397
407
  hpxml.cooling_systems[0].compressor_type = nil
398
408
  hpxml.cooling_systems[0].fan_watts_per_cfm = nil
409
+ hpxml.cooling_systems[0].charge_defect_ratio = nil
410
+ hpxml.cooling_systems[0].airflow_defect_ratio = nil
411
+ hpxml.cooling_systems[0].cooling_capacity = nil
399
412
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
400
413
  hpxml_default = _test_measure()
401
- _test_default_central_air_conditioner_values(hpxml_default, true, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5)
414
+ _test_default_central_air_conditioner_values(hpxml_default, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil)
402
415
  end
403
416
 
404
417
  def test_room_air_conditioners
405
418
  # Test inputs not overridden by defaults
406
419
  hpxml = _create_hpxml('base-hvac-room-ac-only.xml')
407
420
  hpxml.cooling_systems[0].cooling_shr = 0.88
421
+ hpxml.cooling_systems[0].cooling_capacity = 12345
408
422
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
409
423
  hpxml_default = _test_measure()
410
- _test_default_room_air_conditioner_values(hpxml_default, false, 0.88)
424
+ _test_default_room_air_conditioner_values(hpxml_default, 0.88, 12345)
411
425
 
412
426
  # Test defaults
413
427
  hpxml.cooling_systems[0].cooling_shr = nil
428
+ hpxml.cooling_systems[0].cooling_capacity = nil
414
429
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
415
430
  hpxml_default = _test_measure()
416
- _test_default_room_air_conditioner_values(hpxml_default, true, 0.65)
431
+ _test_default_room_air_conditioner_values(hpxml_default, 0.65, nil)
432
+ end
433
+
434
+ def test_evaporative_coolers
435
+ # Test inputs not overridden by defaults
436
+ hpxml = _create_hpxml('base-hvac-evap-cooler-only.xml')
437
+ hpxml.cooling_systems[0].cooling_capacity = 12345
438
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
439
+ hpxml_default = _test_measure()
440
+ _test_default_evap_cooler_values(hpxml_default, 12345)
441
+
442
+ # Test defaults
443
+ hpxml.cooling_systems[0].cooling_capacity = nil
444
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
445
+ hpxml_default = _test_measure()
446
+ _test_default_evap_cooler_values(hpxml_default, nil)
417
447
  end
418
448
 
419
449
  def test_mini_split_air_conditioners
@@ -421,76 +451,101 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
421
451
  hpxml = _create_hpxml('base-hvac-mini-split-air-conditioner-only-ducted.xml')
422
452
  hpxml.cooling_systems[0].cooling_shr = 0.78
423
453
  hpxml.cooling_systems[0].fan_watts_per_cfm = 0.66
454
+ hpxml.cooling_systems[0].charge_defect_ratio = -0.11
455
+ hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
456
+ hpxml.cooling_systems[0].cooling_capacity = 12345
424
457
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
425
458
  hpxml_default = _test_measure()
426
- _test_default_mini_split_air_conditioner_values(hpxml_default, false, 0.78, 0.66)
459
+ _test_default_mini_split_air_conditioner_values(hpxml_default, 0.78, 0.66, -0.11, -0.22, 12345)
427
460
 
428
461
  # Test defaults
429
462
  hpxml.cooling_systems[0].cooling_shr = nil
430
463
  hpxml.cooling_systems[0].fan_watts_per_cfm = nil
464
+ hpxml.cooling_systems[0].charge_defect_ratio = nil
465
+ hpxml.cooling_systems[0].airflow_defect_ratio = nil
466
+ hpxml.cooling_systems[0].cooling_capacity = nil
431
467
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
432
468
  hpxml_default = _test_measure()
433
- _test_default_mini_split_air_conditioner_values(hpxml_default, true, 0.73, 0.18)
469
+ _test_default_mini_split_air_conditioner_values(hpxml_default, 0.73, 0.18, 0, 0, nil)
434
470
  end
435
471
 
436
472
  def test_furnaces
437
473
  # Test inputs not overridden by defaults
438
474
  hpxml = _create_hpxml('base.xml')
439
475
  hpxml.heating_systems[0].fan_watts_per_cfm = 0.66
476
+ hpxml.heating_systems[0].airflow_defect_ratio = -0.22
477
+ hpxml.heating_systems[0].heating_capacity = 12345
440
478
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
441
479
  hpxml_default = _test_measure()
442
- _test_default_furnace_values(hpxml_default, false, 0.66)
480
+ _test_default_furnace_values(hpxml_default, 0.66, -0.22, 12345)
443
481
 
444
482
  # Test defaults
445
483
  hpxml.heating_systems[0].fan_watts_per_cfm = nil
484
+ hpxml.heating_systems[0].airflow_defect_ratio = nil
485
+ hpxml.heating_systems[0].heating_capacity = nil
446
486
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
447
487
  hpxml_default = _test_measure()
448
- _test_default_furnace_values(hpxml_default, true, 0.375)
488
+ _test_default_furnace_values(hpxml_default, 0.375, 0, nil)
489
+
490
+ # Test defaults w/ gravity distribution system
491
+ hpxml = _create_hpxml('base-hvac-furnace-gas-only.xml')
492
+ hpxml.heating_systems[0].distribution_system.air_type = HPXML::AirTypeGravity
493
+ hpxml.heating_systems[0].fan_watts_per_cfm = nil
494
+ hpxml.heating_systems[0].airflow_defect_ratio = nil
495
+ hpxml.heating_systems[0].heating_capacity = nil
496
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
497
+ hpxml_default = _test_measure()
498
+ _test_default_furnace_values(hpxml_default, 0.0, 0, nil)
449
499
  end
450
500
 
451
501
  def test_wall_furnaces
452
502
  # Test inputs not overridden by defaults
453
503
  hpxml = _create_hpxml('base-hvac-wall-furnace-elec-only.xml')
454
504
  hpxml.heating_systems[0].fan_watts = 22
505
+ hpxml.heating_systems[0].heating_capacity = 12345
455
506
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
456
507
  hpxml_default = _test_measure()
457
- _test_default_wall_furnace_values(hpxml_default, false, 22)
508
+ _test_default_wall_furnace_values(hpxml_default, 22, 12345)
458
509
 
459
510
  # Test defaults
460
511
  hpxml.heating_systems[0].fan_watts = nil
512
+ hpxml.heating_systems[0].heating_capacity = nil
461
513
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
462
514
  hpxml_default = _test_measure()
463
- _test_default_wall_furnace_values(hpxml_default, true, 0)
515
+ _test_default_wall_furnace_values(hpxml_default, 0, nil)
464
516
  end
465
517
 
466
518
  def test_floor_furnaces
467
519
  # Test inputs not overridden by defaults
468
520
  hpxml = _create_hpxml('base-hvac-floor-furnace-propane-only.xml')
469
521
  hpxml.heating_systems[0].fan_watts = 22
522
+ hpxml.heating_systems[0].heating_capacity = 12345
470
523
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
471
524
  hpxml_default = _test_measure()
472
- _test_default_floor_furnace_values(hpxml_default, false, 22)
525
+ _test_default_floor_furnace_values(hpxml_default, 22, 12345)
473
526
 
474
527
  # Test defaults
475
528
  hpxml.heating_systems[0].fan_watts = nil
476
529
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
477
530
  hpxml_default = _test_measure()
478
- _test_default_floor_furnace_values(hpxml_default, true, 0)
531
+ _test_default_floor_furnace_values(hpxml_default, 0, nil)
479
532
  end
480
533
 
481
534
  def test_boilers
482
535
  # Test inputs not overridden by defaults (in-unit boiler)
483
536
  hpxml = _create_hpxml('base-hvac-boiler-gas-only.xml')
484
537
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
538
+ hpxml.heating_systems[0].heating_capacity = 12345
485
539
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
486
540
  hpxml_default = _test_measure()
487
- _test_default_boiler_values(hpxml_default, false, 99.9)
541
+ _test_default_boiler_values(hpxml_default, 99.9, 12345)
488
542
 
489
543
  # Test defaults w/ in-unit boiler
490
544
  hpxml.heating_systems[0].electric_auxiliary_energy = nil
545
+ hpxml.heating_systems[0].heating_capacity = nil
491
546
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
492
547
  hpxml_default = _test_measure()
493
- _test_default_boiler_values(hpxml_default, true, 170.0)
548
+ _test_default_boiler_values(hpxml_default, 170.0, nil)
494
549
 
495
550
  # Test inputs not overridden by defaults (shared boiler)
496
551
  hpxml = _create_hpxml('base-bldgtype-multifamily-shared-boiler-only-baseboard.xml')
@@ -498,73 +553,81 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
498
553
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
499
554
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
500
555
  hpxml_default = _test_measure()
501
- _test_default_boiler_values(hpxml_default, false, 99.9)
556
+ _test_default_boiler_values(hpxml_default, 99.9, nil)
502
557
 
503
558
  # Test defaults w/ shared boiler
504
559
  hpxml.heating_systems[0].electric_auxiliary_energy = nil
505
560
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
506
561
  hpxml_default = _test_measure()
507
- _test_default_boiler_values(hpxml_default, true, 220.0)
562
+ _test_default_boiler_values(hpxml_default, 220.0, nil)
508
563
  end
509
564
 
510
565
  def test_stoves
511
566
  # Test inputs not overridden by defaults
512
567
  hpxml = _create_hpxml('base-hvac-stove-oil-only.xml')
513
568
  hpxml.heating_systems[0].fan_watts = 22
569
+ hpxml.heating_systems[0].heating_capacity = 12345
514
570
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
515
571
  hpxml_default = _test_measure()
516
- _test_default_stove_values(hpxml_default, false, 22)
572
+ _test_default_stove_values(hpxml_default, 22, 12345)
517
573
 
518
574
  # Test defaults
519
575
  hpxml.heating_systems[0].fan_watts = nil
576
+ hpxml.heating_systems[0].heating_capacity = nil
520
577
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
521
578
  hpxml_default = _test_measure()
522
- _test_default_stove_values(hpxml_default, true, 40)
579
+ _test_default_stove_values(hpxml_default, 40, nil)
523
580
  end
524
581
 
525
582
  def test_portable_heaters
526
583
  # Test inputs not overridden by defaults
527
584
  hpxml = _create_hpxml('base-hvac-portable-heater-gas-only.xml')
528
585
  hpxml.heating_systems[0].fan_watts = 22
586
+ hpxml.heating_systems[0].heating_capacity = 12345
529
587
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
530
588
  hpxml_default = _test_measure()
531
- _test_default_portable_heater_values(hpxml_default, false, 22)
589
+ _test_default_portable_heater_values(hpxml_default, 22, 12345)
532
590
 
533
591
  # Test defaults
534
592
  hpxml.heating_systems[0].fan_watts = nil
593
+ hpxml.heating_systems[0].heating_capacity = nil
535
594
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
536
595
  hpxml_default = _test_measure()
537
- _test_default_portable_heater_values(hpxml_default, true, 0)
596
+ _test_default_portable_heater_values(hpxml_default, 0, nil)
538
597
  end
539
598
 
540
599
  def test_fixed_heaters
541
600
  # Test inputs not overridden by defaults
542
601
  hpxml = _create_hpxml('base-hvac-fixed-heater-gas-only.xml')
543
602
  hpxml.heating_systems[0].fan_watts = 22
603
+ hpxml.heating_systems[0].heating_capacity = 12345
544
604
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
545
605
  hpxml_default = _test_measure()
546
- _test_default_fixed_heater_values(hpxml_default, false, 22)
606
+ _test_default_fixed_heater_values(hpxml_default, 22, 12345)
547
607
 
548
608
  # Test defaults
549
609
  hpxml.heating_systems[0].fan_watts = nil
610
+ hpxml.heating_systems[0].heating_capacity = nil
550
611
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
551
612
  hpxml_default = _test_measure()
552
- _test_default_fixed_heater_values(hpxml_default, true, 0)
613
+ _test_default_fixed_heater_values(hpxml_default, 0, nil)
553
614
  end
554
615
 
555
616
  def test_fireplaces
556
617
  # Test inputs not overridden by defaults
557
618
  hpxml = _create_hpxml('base-hvac-fireplace-wood-only.xml')
558
619
  hpxml.heating_systems[0].fan_watts = 22
620
+ hpxml.heating_systems[0].heating_capacity = 12345
559
621
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
560
622
  hpxml_default = _test_measure()
561
- _test_default_fireplace_values(hpxml_default, false, 22)
623
+ _test_default_fireplace_values(hpxml_default, 22, 12345)
562
624
 
563
625
  # Test defaults
564
626
  hpxml.heating_systems[0].fan_watts = nil
627
+ hpxml.heating_systems[0].heating_capacity = nil
565
628
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
566
629
  hpxml_default = _test_measure()
567
- _test_default_fireplace_values(hpxml_default, true, 0)
630
+ _test_default_fireplace_values(hpxml_default, 0, nil)
568
631
  end
569
632
 
570
633
  def test_air_source_heat_pumps
@@ -573,17 +636,29 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
573
636
  hpxml.heat_pumps[0].cooling_shr = 0.88
574
637
  hpxml.heat_pumps[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed
575
638
  hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
639
+ hpxml.heat_pumps[0].charge_defect_ratio = -0.11
640
+ hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
641
+ hpxml.heat_pumps[0].cooling_capacity = 12345
642
+ hpxml.heat_pumps[0].heating_capacity = 23456
643
+ hpxml.heat_pumps[0].heating_capacity_17F = 9876
644
+ hpxml.heat_pumps[0].backup_heating_capacity = 34567
576
645
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
577
646
  hpxml_default = _test_measure()
578
- _test_default_air_to_air_heat_pump_values(hpxml_default, false, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66)
647
+ _test_default_air_to_air_heat_pump_values(hpxml_default, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567)
579
648
 
580
649
  # Test defaults
581
650
  hpxml.heat_pumps[0].cooling_shr = nil
582
651
  hpxml.heat_pumps[0].compressor_type = nil
583
652
  hpxml.heat_pumps[0].fan_watts_per_cfm = nil
653
+ hpxml.heat_pumps[0].charge_defect_ratio = nil
654
+ hpxml.heat_pumps[0].airflow_defect_ratio = nil
655
+ hpxml.heat_pumps[0].cooling_capacity = nil
656
+ hpxml.heat_pumps[0].heating_capacity = nil
657
+ hpxml.heat_pumps[0].heating_capacity_17F = nil
658
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
584
659
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
585
660
  hpxml_default = _test_measure()
586
- _test_default_air_to_air_heat_pump_values(hpxml_default, true, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5)
661
+ _test_default_air_to_air_heat_pump_values(hpxml_default, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil)
587
662
  end
588
663
 
589
664
  def test_mini_split_heat_pumps
@@ -591,33 +666,82 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
591
666
  hpxml = _create_hpxml('base-hvac-mini-split-heat-pump-ducted.xml')
592
667
  hpxml.heat_pumps[0].cooling_shr = 0.78
593
668
  hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
669
+ hpxml.heat_pumps[0].charge_defect_ratio = -0.11
670
+ hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
671
+ hpxml.heat_pumps[0].cooling_capacity = 12345
672
+ hpxml.heat_pumps[0].heating_capacity = 23456
673
+ hpxml.heat_pumps[0].heating_capacity_17F = 9876
674
+ hpxml.heat_pumps[0].backup_heating_capacity = 34567
594
675
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
595
676
  hpxml_default = _test_measure()
596
- _test_default_mini_split_heat_pump_values(hpxml_default, false, 0.78, 0.66)
677
+ _test_default_mini_split_heat_pump_values(hpxml_default, 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567)
597
678
 
598
679
  # Test defaults
599
680
  hpxml.heat_pumps[0].cooling_shr = nil
600
681
  hpxml.heat_pumps[0].fan_watts_per_cfm = nil
682
+ hpxml.heat_pumps[0].charge_defect_ratio = nil
683
+ hpxml.heat_pumps[0].airflow_defect_ratio = nil
684
+ hpxml.heat_pumps[0].cooling_capacity = nil
685
+ hpxml.heat_pumps[0].heating_capacity = nil
686
+ hpxml.heat_pumps[0].heating_capacity_17F = nil
687
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
601
688
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
602
689
  hpxml_default = _test_measure()
603
- _test_default_mini_split_heat_pump_values(hpxml_default, true, 0.73, 0.18)
690
+ _test_default_mini_split_heat_pump_values(hpxml_default, 0.73, 0.18, 0, 0, nil, nil, nil, nil)
604
691
  end
605
692
 
606
- def test_ground_to_air_heat_pumps
693
+ def test_ground_source_heat_pumps
607
694
  # Test inputs not overridden by defaults
608
695
  hpxml = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml')
609
696
  hpxml.heat_pumps[0].pump_watts_per_ton = 9.9
610
- hpxml.heat_pumps[0].fan_watts_per_cfm = 0.99
697
+ hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
698
+ hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
699
+ hpxml.heat_pumps[0].cooling_capacity = 12345
700
+ hpxml.heat_pumps[0].heating_capacity = 23456
701
+ hpxml.heat_pumps[0].backup_heating_capacity = 34567
611
702
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
612
703
  hpxml_default = _test_measure()
613
- _test_default_ground_to_air_heat_pump_values(hpxml_default, false, 9.9, 0.99)
704
+ _test_default_ground_to_air_heat_pump_values(hpxml_default, 9.9, 0.66, -0.22, 12345, 23456, 34567)
614
705
 
615
706
  # Test defaults
616
707
  hpxml.heat_pumps[0].pump_watts_per_ton = nil
617
708
  hpxml.heat_pumps[0].fan_watts_per_cfm = nil
709
+ hpxml.heat_pumps[0].airflow_defect_ratio = nil
710
+ hpxml.heat_pumps[0].cooling_capacity = nil
711
+ hpxml.heat_pumps[0].heating_capacity = nil
712
+ hpxml.heat_pumps[0].backup_heating_capacity = nil
618
713
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
619
714
  hpxml_default = _test_measure()
620
- _test_default_ground_to_air_heat_pump_values(hpxml_default, true, 30.0, 0.375)
715
+ _test_default_ground_to_air_heat_pump_values(hpxml_default, 30.0, 0.375, 0, nil, nil, nil)
716
+ end
717
+
718
+ def test_hvac_increased_hardsized_equipment
719
+ # Test hard-sized capacities are increased for air conditioner + furnace
720
+ hpxml = _create_hpxml('base-hvac-undersized-allow-increased-fixed-capacities.xml')
721
+ htg_cap = hpxml.heating_systems[0].heating_capacity
722
+ clg_cap = hpxml.cooling_systems[0].cooling_capacity
723
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
724
+ hpxml_default = _test_measure()
725
+ assert(hpxml_default.heating_systems[0].heating_capacity > htg_cap)
726
+ assert(hpxml_default.cooling_systems[0].cooling_capacity > clg_cap)
727
+
728
+ # Test hard-sized capacities are increased for heat pump
729
+ hpxml = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed.xml')
730
+ hpxml.header.allow_increased_fixed_capacities = true
731
+ hpxml.heat_pumps[0].heating_capacity /= 10.0
732
+ hpxml.heat_pumps[0].heating_capacity_17F /= 10.0
733
+ hpxml.heat_pumps[0].backup_heating_capacity /= 10.0
734
+ hpxml.heat_pumps[0].cooling_capacity /= 10.0
735
+ htg_cap = hpxml.heat_pumps[0].heating_capacity
736
+ htg_17f_cap = hpxml.heat_pumps[0].heating_capacity_17F
737
+ htg_bak_cap = hpxml.heat_pumps[0].backup_heating_capacity
738
+ clg_cap = hpxml.heat_pumps[0].cooling_capacity
739
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
740
+ hpxml_default = _test_measure()
741
+ assert(hpxml_default.heat_pumps[0].heating_capacity > htg_cap)
742
+ assert(hpxml_default.heat_pumps[0].heating_capacity_17F > htg_17f_cap)
743
+ assert(hpxml_default.heat_pumps[0].backup_heating_capacity > htg_bak_cap)
744
+ assert(hpxml_default.heat_pumps[0].cooling_capacity > clg_cap)
621
745
  end
622
746
 
623
747
  def test_hvac_controls
@@ -627,20 +751,19 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
627
751
  hpxml.hvac_controls[0].cooling_setup_start_hour = 12
628
752
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
629
753
  hpxml_default = _test_measure()
630
- _test_default_hvac_control_values(hpxml_default, false, 12, 12)
754
+ _test_default_hvac_control_values(hpxml_default, 12, 12)
631
755
 
632
756
  # Test defaults
633
757
  hpxml.hvac_controls[0].heating_setback_start_hour = nil
634
758
  hpxml.hvac_controls[0].cooling_setup_start_hour = nil
635
759
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
636
760
  hpxml_default = _test_measure()
637
- _test_default_hvac_control_values(hpxml_default, true, 23, 9)
761
+ _test_default_hvac_control_values(hpxml_default, 23, 9)
638
762
  end
639
763
 
640
764
  def test_hvac_distribution
641
765
  # Test inputs not overridden by defaults
642
766
  hpxml = _create_hpxml('base.xml')
643
- hpxml.hvac_distributions[0].number_of_return_registers = hpxml.building_construction.number_of_conditioned_floors
644
767
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
645
768
  hpxml_default = _test_measure()
646
769
  expected_supply_locations = ['attic - unvented']
@@ -648,7 +771,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
648
771
  expected_supply_areas = [150.0]
649
772
  expected_return_areas = [50.0]
650
773
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
651
- _test_default_duct_values(hpxml_default, false, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
774
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
652
775
 
653
776
  # Test defaults w/ conditioned basement
654
777
  hpxml.hvac_distributions[0].number_of_return_registers = nil
@@ -665,7 +788,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
665
788
  expected_supply_areas = [729.0]
666
789
  expected_return_areas = [270.0]
667
790
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
668
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
791
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
669
792
 
670
793
  # Test defaults w/ multiple foundations
671
794
  hpxml = _create_hpxml('base-foundation-multiple.xml')
@@ -682,7 +805,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
682
805
  expected_supply_areas = [364.5]
683
806
  expected_return_areas = [67.5]
684
807
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
685
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
808
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
686
809
 
687
810
  # Test defaults w/ foundation exposed to ambient
688
811
  hpxml = _create_hpxml('base-foundation-ambient.xml')
@@ -699,7 +822,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
699
822
  expected_supply_areas = [364.5]
700
823
  expected_return_areas = [67.5]
701
824
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
702
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
825
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
703
826
 
704
827
  # Test defaults w/ building/unit adjacent to other housing unit
705
828
  hpxml = _create_hpxml('base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml')
@@ -716,7 +839,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
716
839
  expected_supply_areas = [243.0]
717
840
  expected_return_areas = [45.0]
718
841
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
719
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
842
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
720
843
 
721
844
  # Test defaults w/ 2-story building
722
845
  hpxml = _create_hpxml('base-enclosure-2stories.xml')
@@ -733,7 +856,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
733
856
  expected_supply_areas = [820.13, 273.38]
734
857
  expected_return_areas = [455.63, 151.88]
735
858
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
736
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
859
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
737
860
 
738
861
  # Test defaults w/ 1-story building & multiple HVAC systems
739
862
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -747,10 +870,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
747
870
  hpxml_default = _test_measure()
748
871
  expected_supply_locations = ['basement - conditioned', 'basement - conditioned'] * hpxml_default.hvac_distributions.size
749
872
  expected_return_locations = ['basement - conditioned', 'basement - conditioned'] * hpxml_default.hvac_distributions.size
750
- expected_supply_areas = [91.125, 91.125] * hpxml_default.hvac_distributions.size
751
- expected_return_areas = [33.75, 33.75] * hpxml_default.hvac_distributions.size
873
+ expected_supply_areas = [36.45, 36.45] * hpxml_default.hvac_distributions.size
874
+ expected_return_areas = [13.5, 13.5] * hpxml_default.hvac_distributions.size
752
875
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
753
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
876
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
754
877
 
755
878
  # Test defaults w/ 2-story building & multiple HVAC systems
756
879
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -765,10 +888,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
765
888
  hpxml_default = _test_measure()
766
889
  expected_supply_locations = ['basement - conditioned', 'basement - conditioned', 'living space', 'living space'] * hpxml_default.hvac_distributions.size
767
890
  expected_return_locations = ['basement - conditioned', 'basement - conditioned', 'living space', 'living space'] * hpxml_default.hvac_distributions.size
768
- expected_supply_areas = [68.34, 68.34, 22.78, 22.78] * hpxml_default.hvac_distributions.size
769
- expected_return_areas = [25.31, 25.31, 8.44, 8.44] * hpxml_default.hvac_distributions.size
891
+ expected_supply_areas = [27.34, 27.34, 9.11, 9.11] * hpxml_default.hvac_distributions.size
892
+ expected_return_areas = [10.13, 10.13, 3.38, 3.38] * hpxml_default.hvac_distributions.size
770
893
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
771
- _test_default_duct_values(hpxml_default, true, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
894
+ _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
772
895
  end
773
896
 
774
897
  def test_mech_ventilation_fans
@@ -782,7 +905,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
782
905
  vent_fan.hours_in_operation = 22.0
783
906
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
784
907
  hpxml_default = _test_measure()
785
- _test_default_mech_vent_values(hpxml_default, false, true, 22.0)
908
+ _test_default_mech_vent_values(hpxml_default, true, 22.0)
786
909
 
787
910
  # Test defaults
788
911
  vent_fan.rated_flow_rate = nil
@@ -794,7 +917,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
794
917
  vent_fan.hours_in_operation = nil
795
918
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
796
919
  hpxml_default = _test_measure()
797
- _test_default_mech_vent_values(hpxml_default, true, false, 24.0)
920
+ _test_default_mech_vent_values(hpxml_default, false, 24.0)
798
921
 
799
922
  # Test inputs not overridden by defaults w/ CFIS
800
923
  hpxml = _create_hpxml('base-mechvent-cfis.xml')
@@ -803,14 +926,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
803
926
  vent_fan.hours_in_operation = 12.0
804
927
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
805
928
  hpxml_default = _test_measure()
806
- _test_default_mech_vent_values(hpxml_default, false, false, 12.0)
929
+ _test_default_mech_vent_values(hpxml_default, false, 12.0)
807
930
 
808
931
  # Test defaults w/ CFIS
809
932
  vent_fan.is_shared_system = nil
810
933
  vent_fan.hours_in_operation = nil
811
934
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
812
935
  hpxml_default = _test_measure()
813
- _test_default_mech_vent_values(hpxml_default, true, false, 8.0)
936
+ _test_default_mech_vent_values(hpxml_default, false, 8.0)
814
937
  end
815
938
 
816
939
  def test_local_ventilation_fans
@@ -830,8 +953,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
830
953
  bath_fan.hours_in_operation = 3
831
954
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
832
955
  hpxml_default = _test_measure()
833
- _test_default_kitchen_fan_values(hpxml_default, false, 2, 300, 2, 20, 12)
834
- _test_default_bath_fan_values(hpxml_default, false, 3, 80, 3, 33, 6)
956
+ _test_default_kitchen_fan_values(hpxml_default, 2, 300, 2, 20, 12)
957
+ _test_default_bath_fan_values(hpxml_default, 3, 80, 3, 33, 6)
835
958
 
836
959
  # Test defaults
837
960
  kitchen_fan.rated_flow_rate = nil
@@ -846,8 +969,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
846
969
  bath_fan.hours_in_operation = nil
847
970
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
848
971
  hpxml_default = _test_measure()
849
- _test_default_kitchen_fan_values(hpxml_default, true, 1, 100, 1, 30, 18)
850
- _test_default_bath_fan_values(hpxml_default, true, 2, 50, 1, 15, 7)
972
+ _test_default_kitchen_fan_values(hpxml_default, 1, 100, 1, 30, 18)
973
+ _test_default_bath_fan_values(hpxml_default, 2, 50, 1, 15, 7)
851
974
  end
852
975
 
853
976
  def test_storage_water_heaters
@@ -865,7 +988,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
865
988
  end
866
989
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
867
990
  hpxml_default = _test_measure()
868
- _test_default_storage_water_heater_values(hpxml_default, false,
991
+ _test_default_storage_water_heater_values(hpxml_default,
869
992
  [true, 15000.0, 40.0, 0.95, HPXML::LocationLivingSpace, 111])
870
993
 
871
994
  # Test defaults w/ 3-bedroom house & electric storage water heater
@@ -879,7 +1002,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
879
1002
  end
880
1003
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
881
1004
  hpxml_default = _test_measure()
882
- _test_default_storage_water_heater_values(hpxml_default, true,
1005
+ _test_default_storage_water_heater_values(hpxml_default,
883
1006
  [false, 18766.7, 50.0, 0.98, HPXML::LocationBasementConditioned, 125])
884
1007
 
885
1008
  # Test defaults w/ 5-bedroom house & electric storage water heater
@@ -894,7 +1017,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
894
1017
  end
895
1018
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
896
1019
  hpxml_default = _test_measure()
897
- _test_default_storage_water_heater_values(hpxml_default, true,
1020
+ _test_default_storage_water_heater_values(hpxml_default,
898
1021
  [false, 18766.7, 66.0, 0.98, HPXML::LocationBasementConditioned, 125])
899
1022
 
900
1023
  # Test defaults w/ 3-bedroom house & 2 storage water heaters (1 electric and 1 natural gas)
@@ -911,7 +1034,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
911
1034
  end
912
1035
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
913
1036
  hpxml_default = _test_measure()
914
- _test_default_storage_water_heater_values(hpxml_default, true,
1037
+ _test_default_storage_water_heater_values(hpxml_default,
915
1038
  [false, 15354.6, 50.0, 0.98, HPXML::LocationBasementConditioned, 125],
916
1039
  [false, 36000.0, 40.0, 0.756, HPXML::LocationBasementConditioned, 125])
917
1040
  end
@@ -922,13 +1045,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
922
1045
  hpxml.water_heating_systems[0].performance_adjustment = 0.88
923
1046
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
924
1047
  hpxml_default = _test_measure()
925
- _test_default_tankless_water_heater_values(hpxml_default, false, [0.88])
1048
+ _test_default_tankless_water_heater_values(hpxml_default, [0.88])
926
1049
 
927
1050
  # Test defaults w/ EF
928
1051
  hpxml.water_heating_systems[0].performance_adjustment = nil
929
1052
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
930
1053
  hpxml_default = _test_measure()
931
- _test_default_tankless_water_heater_values(hpxml_default, true, [0.92])
1054
+ _test_default_tankless_water_heater_values(hpxml_default, [0.92])
932
1055
 
933
1056
  # Test defaults w/ UEF
934
1057
  hpxml.water_heating_systems[0].energy_factor = nil
@@ -936,7 +1059,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
936
1059
  hpxml.water_heating_systems[0].first_hour_rating = 5.7
937
1060
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
938
1061
  hpxml_default = _test_measure()
939
- _test_default_tankless_water_heater_values(hpxml_default, true, [0.94])
1062
+ _test_default_tankless_water_heater_values(hpxml_default, [0.94])
940
1063
  end
941
1064
 
942
1065
  def test_hot_water_distribution
@@ -945,7 +1068,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
945
1068
  hpxml.hot_water_distributions[0].pipe_r_value = 2.5
946
1069
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
947
1070
  hpxml_default = _test_measure()
948
- _test_default_standard_distribution_values(hpxml_default, false, 50.0, 2.5)
1071
+ _test_default_standard_distribution_values(hpxml_default, 50.0, 2.5)
949
1072
 
950
1073
  # Test inputs not overridden by defaults -- recirculation
951
1074
  hpxml = _create_hpxml('base-dhw-recirc-demand.xml')
@@ -953,14 +1076,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
953
1076
  hpxml.hot_water_distributions[0].pipe_r_value = 2.5
954
1077
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
955
1078
  hpxml_default = _test_measure()
956
- _test_default_recirc_distribution_values(hpxml_default, false, 50.0, 50.0, 65.0, 2.5)
1079
+ _test_default_recirc_distribution_values(hpxml_default, 50.0, 50.0, 65.0, 2.5)
957
1080
 
958
1081
  # Test inputs not overridden by defaults -- shared recirculation
959
1082
  hpxml = _create_hpxml('base-bldgtype-multifamily-shared-water-heater-recirc.xml')
960
1083
  hpxml.hot_water_distributions[0].shared_recirculation_pump_power = 333.0
961
1084
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
962
1085
  hpxml_default = _test_measure()
963
- _test_default_shared_recirc_distribution_values(hpxml_default, false, 333.0)
1086
+ _test_default_shared_recirc_distribution_values(hpxml_default, 333.0)
964
1087
 
965
1088
  # Test defaults w/ conditioned basement
966
1089
  hpxml = _create_hpxml('base.xml')
@@ -968,7 +1091,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
968
1091
  hpxml.hot_water_distributions[0].pipe_r_value = nil
969
1092
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
970
1093
  hpxml_default = _test_measure()
971
- _test_default_standard_distribution_values(hpxml_default, true, 93.48, 0.0)
1094
+ _test_default_standard_distribution_values(hpxml_default, 93.48, 0.0)
972
1095
 
973
1096
  # Test defaults w/ unconditioned basement
974
1097
  hpxml = _create_hpxml('base-foundation-unconditioned-basement.xml')
@@ -976,7 +1099,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
976
1099
  hpxml.hot_water_distributions[0].pipe_r_value = nil
977
1100
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
978
1101
  hpxml_default = _test_measure()
979
- _test_default_standard_distribution_values(hpxml_default, true, 88.48, 0.0)
1102
+ _test_default_standard_distribution_values(hpxml_default, 88.48, 0.0)
980
1103
 
981
1104
  # Test defaults w/ 2-story building
982
1105
  hpxml = _create_hpxml('base-enclosure-2stories.xml')
@@ -984,7 +1107,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
984
1107
  hpxml.hot_water_distributions[0].pipe_r_value = nil
985
1108
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
986
1109
  hpxml_default = _test_measure()
987
- _test_default_standard_distribution_values(hpxml_default, true, 103.48, 0.0)
1110
+ _test_default_standard_distribution_values(hpxml_default, 103.48, 0.0)
988
1111
 
989
1112
  # Test defaults w/ recirculation & conditioned basement
990
1113
  hpxml = _create_hpxml('base-dhw-recirc-demand.xml')
@@ -994,7 +1117,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
994
1117
  hpxml.hot_water_distributions[0].pipe_r_value = nil
995
1118
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
996
1119
  hpxml_default = _test_measure()
997
- _test_default_recirc_distribution_values(hpxml_default, true, 166.96, 10.0, 50.0, 0.0)
1120
+ _test_default_recirc_distribution_values(hpxml_default, 166.96, 10.0, 50.0, 0.0)
998
1121
 
999
1122
  # Test defaults w/ recirculation & unconditioned basement
1000
1123
  hpxml = _create_hpxml('base-foundation-unconditioned-basement.xml')
@@ -1004,7 +1127,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1004
1127
  recirculation_control_type: HPXML::DHWRecirControlTypeSensor)
1005
1128
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1006
1129
  hpxml_default = _test_measure()
1007
- _test_default_recirc_distribution_values(hpxml_default, true, 156.96, 10.0, 50.0, 0.0)
1130
+ _test_default_recirc_distribution_values(hpxml_default, 156.96, 10.0, 50.0, 0.0)
1008
1131
 
1009
1132
  # Test defaults w/ recirculation & 2-story building
1010
1133
  hpxml = _create_hpxml('base-enclosure-2stories.xml')
@@ -1014,14 +1137,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1014
1137
  recirculation_control_type: HPXML::DHWRecirControlTypeSensor)
1015
1138
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1016
1139
  hpxml_default = _test_measure()
1017
- _test_default_recirc_distribution_values(hpxml_default, true, 186.96, 10.0, 50.0, 0.0)
1140
+ _test_default_recirc_distribution_values(hpxml_default, 186.96, 10.0, 50.0, 0.0)
1018
1141
 
1019
1142
  # Test defaults w/ shared recirculation
1020
1143
  hpxml = _create_hpxml('base-bldgtype-multifamily-shared-water-heater-recirc.xml')
1021
1144
  hpxml.hot_water_distributions[0].shared_recirculation_pump_power = nil
1022
1145
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1023
1146
  hpxml_default = _test_measure()
1024
- _test_default_shared_recirc_distribution_values(hpxml_default, true, 220.0)
1147
+ _test_default_shared_recirc_distribution_values(hpxml_default, 220.0)
1025
1148
  end
1026
1149
 
1027
1150
  def test_water_fixtures
@@ -1030,13 +1153,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1030
1153
  hpxml.water_heating.water_fixtures_usage_multiplier = 2.0
1031
1154
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1032
1155
  hpxml_default = _test_measure()
1033
- _test_default_water_fixture_values(hpxml_default, false, 2.0)
1156
+ _test_default_water_fixture_values(hpxml_default, 2.0)
1034
1157
 
1035
1158
  # Test defaults
1036
1159
  hpxml.water_heating.water_fixtures_usage_multiplier = nil
1037
1160
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1038
1161
  hpxml_default = _test_measure()
1039
- _test_default_water_fixture_values(hpxml_default, true, 1.0)
1162
+ _test_default_water_fixture_values(hpxml_default, 1.0)
1040
1163
  end
1041
1164
 
1042
1165
  def test_solar_thermal_systems
@@ -1045,20 +1168,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1045
1168
  hpxml.solar_thermal_systems[0].storage_volume = 55.0
1046
1169
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1047
1170
  hpxml_default = _test_measure()
1048
- _test_default_solar_thermal_values(hpxml_default, false, 55.0)
1171
+ _test_default_solar_thermal_values(hpxml_default, 55.0)
1049
1172
 
1050
1173
  # Test defaults w/ collector area of 40 sqft
1051
1174
  hpxml.solar_thermal_systems[0].storage_volume = nil
1052
1175
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1053
1176
  hpxml_default = _test_measure()
1054
- _test_default_solar_thermal_values(hpxml_default, true, 60.0)
1177
+ _test_default_solar_thermal_values(hpxml_default, 60.0)
1055
1178
 
1056
1179
  # Test defaults w/ collector area of 100 sqft
1057
1180
  hpxml.solar_thermal_systems[0].collector_area = 100.0
1058
1181
  hpxml.solar_thermal_systems[0].storage_volume = nil
1059
1182
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1060
1183
  hpxml_default = _test_measure()
1061
- _test_default_solar_thermal_values(hpxml_default, true, 150.0)
1184
+ _test_default_solar_thermal_values(hpxml_default, 150.0)
1062
1185
  end
1063
1186
 
1064
1187
  def test_pv_systems
@@ -1076,7 +1199,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1076
1199
  end
1077
1200
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1078
1201
  hpxml_default = _test_measure()
1079
- _test_default_pv_system_values(hpxml_default, false, 0.90, 0.20, true, HPXML::LocationGround, HPXML::PVTrackingType1Axis, HPXML::PVModuleTypePremium)
1202
+ _test_default_pv_system_values(hpxml_default, 0.90, 0.20, true, HPXML::LocationGround, HPXML::PVTrackingType1Axis, HPXML::PVModuleTypePremium)
1080
1203
 
1081
1204
  # Test defaults w/o year modules manufactured
1082
1205
  hpxml.pv_systems.each do |pv|
@@ -1089,7 +1212,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1089
1212
  end
1090
1213
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1091
1214
  hpxml_default = _test_measure()
1092
- _test_default_pv_system_values(hpxml_default, true, 0.96, 0.14, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
1215
+ _test_default_pv_system_values(hpxml_default, 0.96, 0.14, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
1093
1216
 
1094
1217
  # Test defaults w/ year modules manufactured
1095
1218
  hpxml.pv_systems.each do |pv|
@@ -1097,7 +1220,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1097
1220
  end
1098
1221
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1099
1222
  hpxml_default = _test_measure()
1100
- _test_default_pv_system_values(hpxml_default, true, 0.96, 0.182, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
1223
+ _test_default_pv_system_values(hpxml_default, 0.96, 0.186, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
1101
1224
  end
1102
1225
 
1103
1226
  def test_generators
@@ -1110,7 +1233,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1110
1233
  end
1111
1234
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1112
1235
  hpxml_default = _test_measure()
1113
- _test_default_generator_values(hpxml_default, false, true)
1236
+ _test_default_generator_values(hpxml_default, true)
1114
1237
 
1115
1238
  # Test defaults
1116
1239
  hpxml.generators.each do |generator|
@@ -1118,7 +1241,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1118
1241
  end
1119
1242
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1120
1243
  hpxml_default = _test_measure()
1121
- _test_default_generator_values(hpxml_default, true, false)
1244
+ _test_default_generator_values(hpxml_default, false)
1122
1245
  end
1123
1246
 
1124
1247
  def test_clothes_washers
@@ -1134,7 +1257,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1134
1257
  hpxml.clothes_washers[0].water_heating_system_idref = hpxml.water_heating_systems[0].id
1135
1258
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1136
1259
  hpxml_default = _test_measure()
1137
- _test_default_clothes_washer_values(hpxml_default, false, true, HPXML::LocationBasementConditioned, 1.21, 380.0, 0.12, 1.09, 27.0, 3.2, 6.0, 1.5)
1260
+ _test_default_clothes_washer_values(hpxml_default, true, HPXML::LocationBasementConditioned, 1.21, 380.0, 0.12, 1.09, 27.0, 3.2, 6.0, 1.5)
1138
1261
 
1139
1262
  # Test defaults
1140
1263
  hpxml.clothes_washers[0].is_shared_appliance = nil
@@ -1149,7 +1272,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1149
1272
  hpxml.clothes_washers[0].usage_multiplier = nil
1150
1273
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1151
1274
  hpxml_default = _test_measure()
1152
- _test_default_clothes_washer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, 1.0, 400.0, 0.12, 1.09, 27.0, 3.0, 6.0, 1.0)
1275
+ _test_default_clothes_washer_values(hpxml_default, false, HPXML::LocationLivingSpace, 1.0, 400.0, 0.12, 1.09, 27.0, 3.0, 6.0, 1.0)
1153
1276
 
1154
1277
  # Test defaults before 301-2019 Addendum A
1155
1278
  hpxml = _create_hpxml('base.xml')
@@ -1166,7 +1289,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1166
1289
  hpxml.clothes_washers[0].usage_multiplier = nil
1167
1290
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1168
1291
  hpxml_default = _test_measure()
1169
- _test_default_clothes_washer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, 0.331, 704.0, 0.08, 0.58, 23.0, 2.874, 999, 1.0)
1292
+ _test_default_clothes_washer_values(hpxml_default, false, HPXML::LocationLivingSpace, 0.331, 704.0, 0.08, 0.58, 23.0, 2.874, 999, 1.0)
1170
1293
  end
1171
1294
 
1172
1295
  def test_clothes_dryers
@@ -1178,41 +1301,39 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1178
1301
  hpxml.water_heating_systems[0].fraction_dhw_load_served = 0
1179
1302
  hpxml.clothes_dryers[0].location = HPXML::LocationBasementConditioned
1180
1303
  hpxml.clothes_dryers[0].is_shared_appliance = true
1181
- hpxml.clothes_dryers[0].control_type = HPXML::ClothesDryerControlTypeMoisture
1182
1304
  hpxml.clothes_dryers[0].combined_energy_factor = 3.33
1183
1305
  hpxml.clothes_dryers[0].usage_multiplier = 1.1
1184
1306
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1185
1307
  hpxml_default = _test_measure()
1186
- _test_default_clothes_dryer_values(hpxml_default, false, true, HPXML::LocationBasementConditioned, HPXML::ClothesDryerControlTypeMoisture, 3.33, 1.1)
1308
+ _test_default_clothes_dryer_values(hpxml_default, true, HPXML::LocationBasementConditioned, 3.33, 1.1)
1187
1309
 
1188
1310
  # Test defaults w/ electric clothes dryer
1189
1311
  hpxml.clothes_dryers[0].location = nil
1190
1312
  hpxml.clothes_dryers[0].is_shared_appliance = nil
1191
- hpxml.clothes_dryers[0].control_type = nil
1192
1313
  hpxml.clothes_dryers[0].combined_energy_factor = nil
1193
1314
  hpxml.clothes_dryers[0].usage_multiplier = nil
1194
1315
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1195
1316
  hpxml_default = _test_measure()
1196
- _test_default_clothes_dryer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, HPXML::ClothesDryerControlTypeTimer, 3.01, 1.0)
1317
+ _test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 3.01, 1.0)
1197
1318
 
1198
1319
  # Test defaults w/ gas clothes dryer
1199
1320
  hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeNaturalGas
1200
1321
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1201
1322
  hpxml_default = _test_measure()
1202
- _test_default_clothes_dryer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, HPXML::ClothesDryerControlTypeTimer, 3.01, 1.0)
1323
+ _test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 3.01, 1.0)
1203
1324
 
1204
1325
  # Test defaults w/ electric clothes dryer before 301-2019 Addendum A
1205
1326
  hpxml.header.eri_calculation_version = '2019'
1206
1327
  hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeElectricity
1207
1328
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1208
1329
  hpxml_default = _test_measure()
1209
- _test_default_clothes_dryer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, HPXML::ClothesDryerControlTypeTimer, 2.62, 1.0)
1330
+ _test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 2.62, 1.0)
1210
1331
 
1211
1332
  # Test defaults w/ gas clothes dryer before 301-2019 Addendum A
1212
1333
  hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeNaturalGas
1213
1334
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1214
1335
  hpxml_default = _test_measure()
1215
- _test_default_clothes_dryer_values(hpxml_default, true, false, HPXML::LocationLivingSpace, HPXML::ClothesDryerControlTypeTimer, 2.32, 1.0)
1336
+ _test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 2.32, 1.0)
1216
1337
  end
1217
1338
 
1218
1339
  def test_clothes_dryer_exhaust
@@ -1224,21 +1345,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1224
1345
  clothes_dryer.vented_flow_rate = 200
1225
1346
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1226
1347
  hpxml_default = _test_measure()
1227
- _test_default_clothes_dryer_exhaust_values(hpxml_default, false, true, 200)
1348
+ _test_default_clothes_dryer_exhaust_values(hpxml_default, true, 200)
1228
1349
 
1229
1350
  # Test inputs not overridden by defaults w/ unvented dryer
1230
1351
  clothes_dryer.is_vented = false
1231
1352
  clothes_dryer.vented_flow_rate = nil
1232
1353
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1233
1354
  hpxml_default = _test_measure()
1234
- _test_default_clothes_dryer_exhaust_values(hpxml_default, false, false, nil)
1355
+ _test_default_clothes_dryer_exhaust_values(hpxml_default, false, nil)
1235
1356
 
1236
1357
  # Test defaults
1237
1358
  clothes_dryer.is_vented = nil
1238
1359
  clothes_dryer.vented_flow_rate = nil
1239
1360
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1240
1361
  hpxml_default = _test_measure()
1241
- _test_default_clothes_dryer_exhaust_values(hpxml_default, true, true, 100)
1362
+ _test_default_clothes_dryer_exhaust_values(hpxml_default, true, 100)
1242
1363
  end
1243
1364
 
1244
1365
  def test_dishwashers
@@ -1254,7 +1375,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1254
1375
  hpxml.dishwashers[0].water_heating_system_idref = hpxml.water_heating_systems[0].id
1255
1376
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1256
1377
  hpxml_default = _test_measure()
1257
- _test_default_dishwasher_values(hpxml_default, false, true, HPXML::LocationBasementConditioned, 307.0, 0.12, 1.09, 22.32, 4.0, 12, 1.3)
1378
+ _test_default_dishwasher_values(hpxml_default, true, HPXML::LocationBasementConditioned, 307.0, 0.12, 1.09, 22.32, 4.0, 12, 1.3)
1258
1379
 
1259
1380
  # Test defaults
1260
1381
  hpxml.dishwashers[0].is_shared_appliance = nil
@@ -1268,13 +1389,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1268
1389
  hpxml.dishwashers[0].usage_multiplier = nil
1269
1390
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1270
1391
  hpxml_default = _test_measure()
1271
- _test_default_dishwasher_values(hpxml_default, true, false, HPXML::LocationLivingSpace, 467.0, 0.12, 1.09, 33.12, 4.0, 12, 1.0)
1392
+ _test_default_dishwasher_values(hpxml_default, false, HPXML::LocationLivingSpace, 467.0, 0.12, 1.09, 33.12, 4.0, 12, 1.0)
1272
1393
 
1273
1394
  # Test defaults before 301-2019 Addendum A
1274
1395
  hpxml.header.eri_calculation_version = '2019'
1275
1396
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1276
1397
  hpxml_default = _test_measure()
1277
- _test_default_dishwasher_values(hpxml_default, true, false, HPXML::LocationLivingSpace, 467.0, 999, 999, 999, 999, 12, 1.0)
1398
+ _test_default_dishwasher_values(hpxml_default, false, HPXML::LocationLivingSpace, 467.0, 999, 999, 999, 999, 12, 1.0)
1278
1399
  end
1279
1400
 
1280
1401
  def test_refrigerators
@@ -1287,7 +1408,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1287
1408
  hpxml.refrigerators[0].monthly_multipliers = ConstantMonthSchedule
1288
1409
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1289
1410
  hpxml_default = _test_measure()
1290
- _test_default_refrigerator_values(hpxml_default, false, HPXML::LocationBasementConditioned, 650.0, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1411
+ _test_default_refrigerator_values(hpxml_default, HPXML::LocationBasementConditioned, 650.0, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1291
1412
 
1292
1413
  # Test defaults
1293
1414
  hpxml.refrigerators[0].location = nil
@@ -1298,20 +1419,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1298
1419
  hpxml.refrigerators[0].monthly_multipliers = nil
1299
1420
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1300
1421
  hpxml_default = _test_measure()
1301
- _test_default_refrigerator_values(hpxml_default, true, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1422
+ _test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1302
1423
 
1303
1424
  # Test defaults w/ refrigerator in 5-bedroom house
1304
1425
  hpxml.building_construction.number_of_bedrooms = 5
1305
1426
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1306
1427
  hpxml_default = _test_measure()
1307
- _test_default_refrigerator_values(hpxml_default, true, HPXML::LocationLivingSpace, 727.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1428
+ _test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 727.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1308
1429
 
1309
1430
  # Test defaults before 301-2019 Addendum A
1310
1431
  hpxml.header.eri_calculation_version = '2019'
1311
1432
  hpxml.building_construction.number_of_bedrooms = 3
1312
1433
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1313
1434
  hpxml_default = _test_measure()
1314
- _test_default_refrigerator_values(hpxml_default, true, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1435
+ _test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1315
1436
  end
1316
1437
 
1317
1438
  def test_extra_refrigerators
@@ -1327,7 +1448,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1327
1448
  end
1328
1449
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1329
1450
  hpxml_default = _test_measure()
1330
- _test_default_extra_refrigerators_values(hpxml_default, false, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1451
+ _test_default_extra_refrigerators_values(hpxml_default, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1331
1452
 
1332
1453
  # Test defaults
1333
1454
  hpxml.refrigerators.each do |refrigerator|
@@ -1340,7 +1461,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1340
1461
  end
1341
1462
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1342
1463
  hpxml_default = _test_measure()
1343
- _test_default_extra_refrigerators_values(hpxml_default, true, HPXML::LocationBasementConditioned, 244.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1464
+ _test_default_extra_refrigerators_values(hpxml_default, HPXML::LocationBasementConditioned, 244.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1344
1465
  end
1345
1466
 
1346
1467
  def test_freezers
@@ -1356,7 +1477,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1356
1477
  end
1357
1478
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1358
1479
  hpxml_default = _test_measure()
1359
- _test_default_freezers_values(hpxml_default, false, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1480
+ _test_default_freezers_values(hpxml_default, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1360
1481
 
1361
1482
  # Test defaults
1362
1483
  hpxml.freezers.each do |freezer|
@@ -1369,7 +1490,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1369
1490
  end
1370
1491
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1371
1492
  hpxml_default = _test_measure()
1372
- _test_default_freezers_values(hpxml_default, true, HPXML::LocationBasementConditioned, 320.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1493
+ _test_default_freezers_values(hpxml_default, HPXML::LocationBasementConditioned, 320.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1373
1494
  end
1374
1495
 
1375
1496
  def test_cooking_ranges
@@ -1383,7 +1504,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1383
1504
  hpxml.cooking_ranges[0].monthly_multipliers = ConstantMonthSchedule
1384
1505
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1385
1506
  hpxml_default = _test_measure()
1386
- _test_default_cooking_range_values(hpxml_default, false, HPXML::LocationBasementConditioned, true, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1507
+ _test_default_cooking_range_values(hpxml_default, HPXML::LocationBasementConditioned, true, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1387
1508
 
1388
1509
  # Test defaults
1389
1510
  hpxml.cooking_ranges[0].location = nil
@@ -1394,13 +1515,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1394
1515
  hpxml.cooking_ranges[0].monthly_multipliers = nil
1395
1516
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1396
1517
  hpxml_default = _test_measure()
1397
- _test_default_cooking_range_values(hpxml_default, true, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1518
+ _test_default_cooking_range_values(hpxml_default, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1398
1519
 
1399
1520
  # Test defaults before 301-2019 Addendum A
1400
1521
  hpxml.header.eri_calculation_version = '2019'
1401
1522
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1402
1523
  hpxml_default = _test_measure()
1403
- _test_default_cooking_range_values(hpxml_default, true, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1524
+ _test_default_cooking_range_values(hpxml_default, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1404
1525
  end
1405
1526
 
1406
1527
  def test_ovens
@@ -1409,19 +1530,19 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1409
1530
  hpxml.ovens[0].is_convection = true
1410
1531
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1411
1532
  hpxml_default = _test_measure()
1412
- _test_default_oven_values(hpxml_default, false, true)
1533
+ _test_default_oven_values(hpxml_default, true)
1413
1534
 
1414
1535
  # Test defaults
1415
1536
  hpxml.ovens[0].is_convection = nil
1416
1537
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1417
1538
  hpxml_default = _test_measure()
1418
- _test_default_oven_values(hpxml_default, true, false)
1539
+ _test_default_oven_values(hpxml_default, false)
1419
1540
 
1420
1541
  # Test defaults before 301-2019 Addendum A
1421
1542
  hpxml.header.eri_calculation_version = '2019'
1422
1543
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1423
1544
  hpxml_default = _test_measure()
1424
- _test_default_oven_values(hpxml_default, true, false)
1545
+ _test_default_oven_values(hpxml_default, false)
1425
1546
  end
1426
1547
 
1427
1548
  def test_lighting
@@ -1449,7 +1570,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1449
1570
  hpxml.lighting.holiday_weekend_fractions = ConstantDaySchedule
1450
1571
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1451
1572
  hpxml_default = _test_measure()
1452
- _test_default_lighting_values(hpxml_default, false, 2.0, 2.0, 2.0,
1573
+ _test_default_lighting_values(hpxml_default, 2.0, 2.0, 2.0,
1453
1574
  { int_wk_sch: ConstantDaySchedule,
1454
1575
  int_wknd_sch: ConstantDaySchedule,
1455
1576
  int_month_mult: ConstantMonthSchedule,
@@ -1483,7 +1604,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1483
1604
  hpxml.lighting.holiday_exists = nil
1484
1605
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1485
1606
  hpxml_default = _test_measure()
1486
- _test_default_lighting_values(hpxml_default, true, 1.0, 1.0, 1.0,
1607
+ _test_default_lighting_values(hpxml_default, 1.0, 1.0, 1.0,
1487
1608
  { ext_wk_sch: '0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.035, 0.034, 0.033, 0.028, 0.022, 0.015, 0.012, 0.011, 0.011, 0.012, 0.019, 0.037, 0.049, 0.065, 0.091, 0.105, 0.091, 0.063',
1488
1609
  ext_wknd_sch: '0.046, 0.046, 0.045, 0.045, 0.046, 0.045, 0.044, 0.041, 0.036, 0.03, 0.024, 0.016, 0.012, 0.011, 0.011, 0.012, 0.019, 0.038, 0.048, 0.06, 0.083, 0.098, 0.085, 0.059',
1489
1610
  ext_month_mult: '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248' })
@@ -1495,7 +1616,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1495
1616
  hpxml.lighting.exterior_usage_multiplier = nil
1496
1617
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1497
1618
  hpxml_default = _test_measure()
1498
- _test_default_lighting_values(hpxml_default, true, 1.0, 1.0, 1.0,
1619
+ _test_default_lighting_values(hpxml_default, 1.0, 1.0, 1.0,
1499
1620
  { ext_wk_sch: '0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.035, 0.034, 0.033, 0.028, 0.022, 0.015, 0.012, 0.011, 0.011, 0.012, 0.019, 0.037, 0.049, 0.065, 0.091, 0.105, 0.091, 0.063',
1500
1621
  ext_wknd_sch: '0.046, 0.046, 0.045, 0.045, 0.046, 0.045, 0.044, 0.041, 0.036, 0.03, 0.024, 0.016, 0.012, 0.011, 0.011, 0.012, 0.019, 0.038, 0.048, 0.06, 0.083, 0.098, 0.085, 0.059',
1501
1622
  ext_month_mult: '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248',
@@ -1511,7 +1632,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1511
1632
  hpxml.ceiling_fans[0].efficiency = 100
1512
1633
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1513
1634
  hpxml_default = _test_measure()
1514
- _test_default_ceiling_fan_values(hpxml_default, false, 2, 100)
1635
+ _test_default_ceiling_fan_values(hpxml_default, 2, 100)
1515
1636
 
1516
1637
  # Test defaults
1517
1638
  hpxml.ceiling_fans.each do |ceiling_fan|
@@ -1520,7 +1641,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1520
1641
  end
1521
1642
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1522
1643
  hpxml_default = _test_measure()
1523
- _test_default_ceiling_fan_values(hpxml_default, true, 4, 70.4)
1644
+ _test_default_ceiling_fan_values(hpxml_default, 4, 70.4)
1524
1645
  end
1525
1646
 
1526
1647
  def test_pools
@@ -1540,8 +1661,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1540
1661
  pool.pump_monthly_multipliers = ConstantMonthSchedule
1541
1662
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1542
1663
  hpxml_default = _test_measure()
1543
- _test_default_pool_heater_values(hpxml_default, false, HPXML::UnitsKwhPerYear, 1000, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1544
- _test_default_pool_pump_values(hpxml_default, false, 3000, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1664
+ _test_default_pool_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 1000, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1665
+ _test_default_pool_pump_values(hpxml_default, 3000, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1545
1666
 
1546
1667
  # Test defaults
1547
1668
  pool = hpxml.pools[0]
@@ -1558,8 +1679,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1558
1679
  pool.pump_monthly_multipliers = nil
1559
1680
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1560
1681
  hpxml_default = _test_measure()
1561
- _test_default_pool_heater_values(hpxml_default, true, HPXML::UnitsThermPerYear, 236, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1562
- _test_default_pool_pump_values(hpxml_default, true, 2496, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1682
+ _test_default_pool_heater_values(hpxml_default, HPXML::UnitsThermPerYear, 236, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1683
+ _test_default_pool_pump_values(hpxml_default, 2496, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1563
1684
 
1564
1685
  # Test defaults 2
1565
1686
  hpxml = _create_hpxml('base-misc-loads-large-uncommon2.xml')
@@ -1577,8 +1698,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1577
1698
  pool.pump_monthly_multipliers = nil
1578
1699
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1579
1700
  hpxml_default = _test_measure()
1580
- _test_default_pool_heater_values(hpxml_default, true, nil, nil, nil, nil, nil, nil)
1581
- _test_default_pool_pump_values(hpxml_default, true, 2496, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1701
+ _test_default_pool_heater_values(hpxml_default, nil, nil, nil, nil, nil, nil)
1702
+ _test_default_pool_pump_values(hpxml_default, 2496, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1582
1703
  end
1583
1704
 
1584
1705
  def test_hot_tubs
@@ -1598,8 +1719,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1598
1719
  hot_tub.pump_monthly_multipliers = ConstantMonthSchedule
1599
1720
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1600
1721
  hpxml_default = _test_measure()
1601
- _test_default_hot_tub_heater_values(hpxml_default, false, HPXML::UnitsThermPerYear, 1000, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1602
- _test_default_hot_tub_pump_values(hpxml_default, false, 3000, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1722
+ _test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsThermPerYear, 1000, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1723
+ _test_default_hot_tub_pump_values(hpxml_default, 3000, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1603
1724
 
1604
1725
  # Test defaults
1605
1726
  hot_tub = hpxml.hot_tubs[0]
@@ -1616,8 +1737,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1616
1737
  hot_tub.pump_monthly_multipliers = nil
1617
1738
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1618
1739
  hpxml_default = _test_measure()
1619
- _test_default_hot_tub_heater_values(hpxml_default, true, HPXML::UnitsKwhPerYear, 1125, 1.0, '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', '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', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1620
- _test_default_hot_tub_pump_values(hpxml_default, true, 1111, 1.0, '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', '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', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
1740
+ _test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 1125, 1.0, '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', '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', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1741
+ _test_default_hot_tub_pump_values(hpxml_default, 1111, 1.0, '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', '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', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
1621
1742
 
1622
1743
  # Test defaults 2
1623
1744
  hpxml = _create_hpxml('base-misc-loads-large-uncommon2.xml')
@@ -1635,8 +1756,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1635
1756
  hot_tub.pump_monthly_multipliers = nil
1636
1757
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1637
1758
  hpxml_default = _test_measure()
1638
- _test_default_hot_tub_heater_values(hpxml_default, true, HPXML::UnitsKwhPerYear, 225, 1.0, '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', '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', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1639
- _test_default_hot_tub_pump_values(hpxml_default, true, 1111, 1.0, '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', '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', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
1759
+ _test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 225, 1.0, '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', '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', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
1760
+ _test_default_hot_tub_pump_values(hpxml_default, 1111, 1.0, '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', '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', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
1640
1761
  end
1641
1762
 
1642
1763
  def test_plug_loads
@@ -1676,10 +1797,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1676
1797
  wellpump_pl.monthly_multipliers = ConstantMonthSchedule
1677
1798
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1678
1799
  hpxml_default = _test_measure()
1679
- _test_default_plug_load_values(hpxml_default, false, HPXML::PlugLoadTypeTelevision, 1000, 0.6, 0.3, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1680
- _test_default_plug_load_values(hpxml_default, false, HPXML::PlugLoadTypeOther, 2000, 0.5, 0.4, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1681
- _test_default_plug_load_values(hpxml_default, false, HPXML::PlugLoadTypeElectricVehicleCharging, 4000, 0.4, 0.5, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1682
- _test_default_plug_load_values(hpxml_default, false, HPXML::PlugLoadTypeWellPump, 3000, 0.3, 0.6, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1800
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeTelevision, 1000, 0.6, 0.3, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1801
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeOther, 2000, 0.5, 0.4, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1802
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeElectricVehicleCharging, 4000, 0.4, 0.5, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1803
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeWellPump, 3000, 0.3, 0.6, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1683
1804
 
1684
1805
  # Test defaults
1685
1806
  hpxml.plug_loads.each do |plug_load|
@@ -1693,10 +1814,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1693
1814
  end
1694
1815
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1695
1816
  hpxml_default = _test_measure()
1696
- _test_default_plug_load_values(hpxml_default, true, HPXML::PlugLoadTypeTelevision, 620, 1.0, 0.0, 1.0, '0.037, 0.018, 0.009, 0.007, 0.011, 0.018, 0.029, 0.040, 0.049, 0.058, 0.065, 0.072, 0.076, 0.086, 0.091, 0.102, 0.127, 0.156, 0.210, 0.294, 0.363, 0.344, 0.208, 0.090', '0.044, 0.022, 0.012, 0.008, 0.011, 0.014, 0.024, 0.043, 0.071, 0.094, 0.112, 0.123, 0.132, 0.156, 0.178, 0.196, 0.206, 0.213, 0.251, 0.330, 0.388, 0.358, 0.226, 0.103', '1.137, 1.129, 0.961, 0.969, 0.961, 0.993, 0.996, 0.96, 0.993, 0.867, 0.86, 1.137')
1697
- _test_default_plug_load_values(hpxml_default, true, HPXML::PlugLoadTypeOther, 2457, 0.855, 0.045, 1.0, '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248')
1698
- _test_default_plug_load_values(hpxml_default, true, HPXML::PlugLoadTypeElectricVehicleCharging, 1667, 0.0, 0.0, 1.0, '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1')
1699
- _test_default_plug_load_values(hpxml_default, true, HPXML::PlugLoadTypeWellPump, 441, 0.0, 0.0, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1817
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeTelevision, 620, 1.0, 0.0, 1.0, '0.037, 0.018, 0.009, 0.007, 0.011, 0.018, 0.029, 0.040, 0.049, 0.058, 0.065, 0.072, 0.076, 0.086, 0.091, 0.102, 0.127, 0.156, 0.210, 0.294, 0.363, 0.344, 0.208, 0.090', '0.044, 0.022, 0.012, 0.008, 0.011, 0.014, 0.024, 0.043, 0.071, 0.094, 0.112, 0.123, 0.132, 0.156, 0.178, 0.196, 0.206, 0.213, 0.251, 0.330, 0.388, 0.358, 0.226, 0.103', '1.137, 1.129, 0.961, 0.969, 0.961, 0.993, 0.996, 0.96, 0.993, 0.867, 0.86, 1.137')
1818
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeOther, 2457, 0.855, 0.045, 1.0, '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248')
1819
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeElectricVehicleCharging, 1667, 0.0, 0.0, 1.0, '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1')
1820
+ _test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeWellPump, 441, 0.0, 0.0, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1700
1821
  end
1701
1822
 
1702
1823
  def test_fuel_loads
@@ -1728,9 +1849,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1728
1849
  gf_fl.monthly_multipliers = ConstantMonthSchedule
1729
1850
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1730
1851
  hpxml_default = _test_measure()
1731
- _test_default_fuel_load_values(hpxml_default, false, HPXML::FuelLoadTypeGrill, 1000, 0.6, 0.3, 0.9, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1732
- _test_default_fuel_load_values(hpxml_default, false, HPXML::FuelLoadTypeLighting, 2000, 0.5, 0.4, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1733
- _test_default_fuel_load_values(hpxml_default, false, HPXML::FuelLoadTypeFireplace, 3000, 0.4, 0.5, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1852
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeGrill, 1000, 0.6, 0.3, 0.9, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1853
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeLighting, 2000, 0.5, 0.4, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1854
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 3000, 0.4, 0.5, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
1734
1855
 
1735
1856
  # Test defaults
1736
1857
  hpxml.fuel_loads.each do |fuel_load|
@@ -1744,9 +1865,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1744
1865
  end
1745
1866
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1746
1867
  hpxml_default = _test_measure()
1747
- _test_default_fuel_load_values(hpxml_default, true, HPXML::FuelLoadTypeGrill, 33, 0.0, 0.0, 1.0, '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1748
- _test_default_fuel_load_values(hpxml_default, true, HPXML::FuelLoadTypeLighting, 20, 0.0, 0.0, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1749
- _test_default_fuel_load_values(hpxml_default, true, HPXML::FuelLoadTypeFireplace, 67, 0.5, 0.1, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1868
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeGrill, 33, 0.0, 0.0, 1.0, '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
1869
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeLighting, 20, 0.0, 0.0, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1870
+ _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 67, 0.5, 0.1, 1.0, '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', '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', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
1750
1871
  end
1751
1872
 
1752
1873
  def _test_measure()
@@ -1784,879 +1905,710 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1784
1905
  return hpxml_default
1785
1906
  end
1786
1907
 
1787
- def _test_default_header_values(hpxml, isdefaulted, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
1908
+ def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
1788
1909
  dst_enabled, dst_begin_month, dst_begin_day, dst_end_month, dst_end_day,
1789
1910
  use_max_load_for_heat_pumps, allow_increased_fixed_capacities)
1790
1911
  assert_equal(tstep, hpxml.header.timestep)
1791
- assert_equal(isdefaulted, hpxml.header.timestep_isdefaulted)
1792
-
1793
1912
  assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
1794
- assert_equal(isdefaulted, hpxml.header.sim_begin_month_isdefaulted)
1795
-
1796
1913
  assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
1797
- assert_equal(isdefaulted, hpxml.header.sim_begin_day_isdefaulted)
1798
-
1799
1914
  assert_equal(sim_end_month, hpxml.header.sim_end_month)
1800
- assert_equal(isdefaulted, hpxml.header.sim_end_month_isdefaulted)
1801
-
1802
1915
  assert_equal(sim_end_day, hpxml.header.sim_end_day)
1803
- assert_equal(isdefaulted, hpxml.header.sim_end_day_isdefaulted)
1804
-
1805
1916
  assert_equal(sim_calendar_year, hpxml.header.sim_calendar_year)
1806
- assert_equal(isdefaulted, hpxml.header.sim_calendar_year_isdefaulted)
1807
-
1808
1917
  assert_equal(dst_enabled, hpxml.header.dst_enabled)
1809
- assert_equal(isdefaulted, hpxml.header.dst_enabled_isdefaulted)
1810
-
1811
1918
  assert_equal(dst_begin_month, hpxml.header.dst_begin_month)
1812
- assert_equal(isdefaulted, hpxml.header.dst_begin_month_isdefaulted)
1813
-
1814
1919
  assert_equal(dst_begin_day, hpxml.header.dst_begin_day)
1815
- assert_equal(isdefaulted, hpxml.header.dst_begin_day_isdefaulted)
1816
-
1817
1920
  assert_equal(dst_end_month, hpxml.header.dst_end_month)
1818
- assert_equal(isdefaulted, hpxml.header.dst_end_month_isdefaulted)
1819
-
1820
1921
  assert_equal(dst_end_day, hpxml.header.dst_end_day)
1821
- assert_equal(isdefaulted, hpxml.header.dst_end_day_isdefaulted)
1822
-
1823
1922
  assert_equal(use_max_load_for_heat_pumps, hpxml.header.use_max_load_for_heat_pumps)
1824
- assert_equal(isdefaulted, hpxml.header.use_max_load_for_heat_pumps_isdefaulted)
1825
-
1826
1923
  assert_equal(allow_increased_fixed_capacities, hpxml.header.allow_increased_fixed_capacities)
1827
- assert_equal(isdefaulted, hpxml.header.allow_increased_fixed_capacities_isdefaulted)
1828
1924
  end
1829
1925
 
1830
- def _test_default_site_values(hpxml, isdefaulted, site_type, shelter_coefficient)
1926
+ def _test_default_site_values(hpxml, site_type, shielding_of_home)
1831
1927
  assert_equal(site_type, hpxml.site.site_type)
1832
- assert_equal(isdefaulted, hpxml.site.site_type_isdefaulted)
1833
-
1834
- assert_equal(shelter_coefficient, hpxml.site.shelter_coefficient)
1835
- assert_equal(isdefaulted, hpxml.site.shelter_coefficient_isdefaulted)
1928
+ assert_equal(shielding_of_home, hpxml.site.shielding_of_home)
1836
1929
  end
1837
1930
 
1838
- def _test_default_occupancy_values(hpxml, isdefaulted, num_occupants)
1931
+ def _test_default_occupancy_values(hpxml, num_occupants)
1839
1932
  assert_equal(num_occupants, hpxml.building_occupancy.number_of_residents)
1840
- assert_equal(isdefaulted, hpxml.building_occupancy.number_of_residents_isdefaulted)
1841
1933
  end
1842
1934
 
1843
- def _test_default_building_construction_values(hpxml, isdefaulted, building_volume, average_ceiling_height, has_flue_or_chimney, n_bathrooms)
1935
+ def _test_default_building_construction_values(hpxml, building_volume, average_ceiling_height, has_flue_or_chimney, n_bathrooms)
1844
1936
  assert_equal(building_volume, hpxml.building_construction.conditioned_building_volume)
1845
- assert_equal(average_ceiling_height, hpxml.building_construction.average_ceiling_height)
1846
- if isdefaulted
1847
- assert_equal(isdefaulted, hpxml.building_construction.conditioned_building_volume_isdefaulted || hpxml.building_construction.average_ceiling_height_isdefaulted)
1848
- else
1849
- assert_equal(isdefaulted, hpxml.building_construction.conditioned_building_volume_isdefaulted)
1850
- assert_equal(isdefaulted, hpxml.building_construction.average_ceiling_height_isdefaulted)
1851
- end
1852
-
1937
+ assert_in_epsilon(average_ceiling_height, hpxml.building_construction.average_ceiling_height, 0.01)
1853
1938
  assert_equal(has_flue_or_chimney, hpxml.building_construction.has_flue_or_chimney)
1854
- assert_equal(isdefaulted, hpxml.building_construction.has_flue_or_chimney_isdefaulted)
1855
-
1856
1939
  assert_equal(n_bathrooms, hpxml.building_construction.number_of_bathrooms)
1857
- assert_equal(isdefaulted, hpxml.building_construction.number_of_bathrooms_isdefaulted)
1858
1940
  end
1859
1941
 
1860
- def _test_default_infiltration_values(hpxml, isdefaulted, volume)
1942
+ def _test_default_infiltration_values(hpxml, volume)
1861
1943
  air_infiltration_measurement = hpxml.air_infiltration_measurements[0]
1862
1944
 
1863
1945
  assert_equal(volume, air_infiltration_measurement.infiltration_volume)
1864
- assert_equal(isdefaulted, air_infiltration_measurement.infiltration_volume_isdefaulted)
1865
1946
  end
1866
1947
 
1867
- def _test_default_attic_values(hpxml, isdefaulted, sla)
1948
+ def _test_default_attic_values(hpxml, sla)
1868
1949
  attic = hpxml.attics[0]
1869
1950
 
1870
- assert_equal(sla, attic.vented_attic_sla)
1871
- assert_equal(isdefaulted, attic.vented_attic_sla_isdefaulted)
1951
+ assert_in_epsilon(sla, attic.vented_attic_sla, 0.001)
1872
1952
  end
1873
1953
 
1874
- def _test_default_foundation_values(hpxml, isdefaulted, sla)
1954
+ def _test_default_foundation_values(hpxml, sla)
1875
1955
  foundation = hpxml.foundations[0]
1876
1956
 
1877
- assert_equal(sla, foundation.vented_crawlspace_sla)
1878
- assert_equal(isdefaulted, foundation.vented_crawlspace_sla_isdefaulted)
1957
+ assert_in_epsilon(sla, foundation.vented_crawlspace_sla, 0.001)
1879
1958
  end
1880
1959
 
1881
- def _test_default_roof_values(hpxml, isdefaulted, roof_type, solar_absorptance, roof_color, emittance, radiant_barrier)
1960
+ def _test_default_roof_values(hpxml, roof_type, solar_absorptance, roof_color, emittance, radiant_barrier)
1882
1961
  roof = hpxml.roofs[0]
1883
1962
 
1884
1963
  assert_equal(roof_type, roof.roof_type)
1885
- assert_equal(isdefaulted, roof.roof_type_isdefaulted)
1886
-
1887
1964
  assert_equal(solar_absorptance, roof.solar_absorptance)
1888
1965
  assert_equal(roof_color, roof.roof_color)
1889
- if isdefaulted
1890
- assert_equal(isdefaulted, roof.solar_absorptance_isdefaulted || roof.roof_color_isdefaulted)
1891
- else
1892
- assert_equal(isdefaulted, roof.solar_absorptance_isdefaulted)
1893
- assert_equal(isdefaulted, roof.roof_color_isdefaulted)
1894
- end
1895
-
1896
1966
  assert_equal(emittance, roof.emittance)
1897
- assert_equal(isdefaulted, roof.emittance_isdefaulted)
1898
-
1899
1967
  assert_equal(radiant_barrier, roof.radiant_barrier)
1900
- assert_equal(isdefaulted, roof.radiant_barrier_isdefaulted)
1901
1968
  end
1902
1969
 
1903
- def _test_default_rim_joist_values(hpxml, isdefaulted, siding, solar_absorptance, color, emittance)
1970
+ def _test_default_rim_joist_values(hpxml, siding, solar_absorptance, color, emittance)
1904
1971
  rim_joist = hpxml.rim_joists[0]
1905
1972
 
1906
1973
  assert_equal(siding, rim_joist.siding)
1907
- assert_equal(isdefaulted, rim_joist.siding_isdefaulted)
1908
-
1909
1974
  assert_equal(solar_absorptance, rim_joist.solar_absorptance)
1910
1975
  assert_equal(color, rim_joist.color)
1911
- if isdefaulted
1912
- assert_equal(isdefaulted, rim_joist.solar_absorptance_isdefaulted || rim_joist.color_isdefaulted)
1913
- else
1914
- assert_equal(isdefaulted, rim_joist.solar_absorptance_isdefaulted)
1915
- assert_equal(isdefaulted, rim_joist.color_isdefaulted)
1916
- end
1917
-
1918
1976
  assert_equal(emittance, rim_joist.emittance)
1919
- assert_equal(isdefaulted, rim_joist.emittance_isdefaulted)
1920
1977
  end
1921
1978
 
1922
- def _test_default_wall_values(hpxml, isdefaulted, siding, solar_absorptance, color, emittance)
1979
+ def _test_default_wall_values(hpxml, siding, solar_absorptance, color, emittance)
1923
1980
  wall = hpxml.walls[0]
1924
1981
 
1925
1982
  assert_equal(siding, wall.siding)
1926
- assert_equal(isdefaulted, wall.siding_isdefaulted)
1927
-
1928
1983
  assert_equal(solar_absorptance, wall.solar_absorptance)
1929
1984
  assert_equal(color, wall.color)
1930
- if isdefaulted
1931
- assert_equal(isdefaulted, wall.solar_absorptance_isdefaulted || wall.color_isdefaulted)
1932
- else
1933
- assert_equal(isdefaulted, wall.solar_absorptance_isdefaulted)
1934
- assert_equal(isdefaulted, wall.color_isdefaulted)
1935
- end
1936
-
1937
1985
  assert_equal(emittance, wall.emittance)
1938
- assert_equal(isdefaulted, wall.emittance_isdefaulted)
1939
1986
  end
1940
1987
 
1941
- def _test_default_foundation_wall_values(hpxml, isdefaulted, thickness)
1988
+ def _test_default_foundation_wall_values(hpxml, thickness)
1942
1989
  foundation_wall = hpxml.foundation_walls[0]
1943
1990
 
1944
1991
  assert_equal(thickness, foundation_wall.thickness)
1945
- assert_equal(isdefaulted, foundation_wall.thickness_isdefaulted)
1946
1992
  end
1947
1993
 
1948
- def _test_default_slab_values(hpxml, isdefaulted, thickness, carpet_r_value, carpet_fraction)
1994
+ def _test_default_slab_values(hpxml, thickness, carpet_r_value, carpet_fraction)
1949
1995
  slab = hpxml.slabs[0]
1950
1996
 
1951
1997
  assert_equal(thickness, slab.thickness)
1952
- assert_equal(isdefaulted, slab.thickness_isdefaulted)
1953
-
1954
1998
  assert_equal(carpet_r_value, slab.carpet_r_value)
1955
- assert_equal(isdefaulted, slab.carpet_r_value_isdefaulted)
1956
-
1957
1999
  assert_equal(carpet_fraction, slab.carpet_fraction)
1958
- assert_equal(isdefaulted, slab.carpet_fraction_isdefaulted)
1959
2000
  end
1960
2001
 
1961
- def _test_default_window_values(hpxml, isdefaulted, summer_shade_coeffs, winter_shade_coeffs, fraction_operable)
1962
- assert_equal(summer_shade_coeffs.size, hpxml.windows.size)
2002
+ def _test_default_window_values(hpxml, ext_summer_sfs, ext_winter_sfs, int_summer_sfs, int_winter_sfs, fraction_operable)
2003
+ assert_equal(ext_summer_sfs.size, hpxml.windows.size)
1963
2004
  hpxml.windows.each_with_index do |window, idx|
1964
- assert_equal(summer_shade_coeffs[idx], window.interior_shading_factor_summer)
1965
- assert_equal(isdefaulted, window.interior_shading_factor_summer_isdefaulted)
1966
-
1967
- assert_equal(winter_shade_coeffs[idx], window.interior_shading_factor_winter)
1968
- assert_equal(isdefaulted, window.interior_shading_factor_winter_isdefaulted)
1969
-
2005
+ assert_equal(ext_summer_sfs[idx], window.exterior_shading_factor_summer)
2006
+ assert_equal(ext_winter_sfs[idx], window.exterior_shading_factor_winter)
2007
+ assert_equal(int_summer_sfs[idx], window.interior_shading_factor_summer)
2008
+ assert_equal(int_winter_sfs[idx], window.interior_shading_factor_winter)
1970
2009
  assert_equal(fraction_operable[idx], window.fraction_operable)
1971
- assert_equal(isdefaulted, window.fraction_operable_isdefaulted)
1972
2010
  end
1973
2011
  end
1974
2012
 
1975
- def _test_default_skylight_values(hpxml, isdefaulted, summer_shade_coeffs, winter_shade_coeffs)
1976
- assert_equal(summer_shade_coeffs.size, hpxml.skylights.size)
2013
+ def _test_default_skylight_values(hpxml, ext_summer_sfs, ext_winter_sfs, int_summer_sfs, int_winter_sfs)
2014
+ assert_equal(ext_summer_sfs.size, hpxml.skylights.size)
1977
2015
  hpxml.skylights.each_with_index do |skylight, idx|
1978
- assert_equal(summer_shade_coeffs[idx], skylight.interior_shading_factor_summer)
1979
- assert_equal(isdefaulted, skylight.interior_shading_factor_summer_isdefaulted)
1980
-
1981
- assert_equal(winter_shade_coeffs[idx], skylight.interior_shading_factor_winter)
1982
- assert_equal(isdefaulted, skylight.interior_shading_factor_winter_isdefaulted)
2016
+ assert_equal(ext_summer_sfs[idx], skylight.exterior_shading_factor_summer)
2017
+ assert_equal(ext_winter_sfs[idx], skylight.exterior_shading_factor_winter)
2018
+ assert_equal(int_summer_sfs[idx], skylight.interior_shading_factor_summer)
2019
+ assert_equal(int_winter_sfs[idx], skylight.interior_shading_factor_winter)
1983
2020
  end
1984
2021
  end
1985
2022
 
1986
- def _test_default_central_air_conditioner_values(hpxml, isdefaulted, shr, compressor_type, fan_watts_per_cfm)
2023
+ def _test_default_central_air_conditioner_values(hpxml, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
2024
+ airflow_defect_ratio, cooling_capacity)
1987
2025
  cooling_system = hpxml.cooling_systems[0]
1988
2026
 
1989
2027
  assert_equal(shr, cooling_system.cooling_shr)
1990
- assert_equal(isdefaulted, cooling_system.cooling_shr_isdefaulted)
1991
-
1992
2028
  assert_equal(compressor_type, cooling_system.compressor_type)
1993
- assert_equal(isdefaulted, cooling_system.compressor_type_isdefaulted)
1994
-
1995
2029
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
1996
- assert_equal(isdefaulted, cooling_system.fan_watts_per_cfm_isdefaulted)
2030
+ assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
2031
+ assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
2032
+ if cooling_capacity.nil?
2033
+ assert(cooling_system.cooling_capacity > 0)
2034
+ else
2035
+ assert_equal(cooling_system.cooling_capacity, cooling_capacity)
2036
+ end
1997
2037
  end
1998
2038
 
1999
- def _test_default_room_air_conditioner_values(hpxml, isdefaulted, shr)
2039
+ def _test_default_room_air_conditioner_values(hpxml, shr, cooling_capacity)
2000
2040
  cooling_system = hpxml.cooling_systems[0]
2001
2041
 
2002
2042
  assert_equal(shr, cooling_system.cooling_shr)
2003
- assert_equal(isdefaulted, cooling_system.cooling_shr_isdefaulted)
2043
+ if cooling_capacity.nil?
2044
+ assert(cooling_system.cooling_capacity > 0)
2045
+ else
2046
+ assert_equal(cooling_system.cooling_capacity, cooling_capacity)
2047
+ end
2004
2048
  end
2005
2049
 
2006
- def _test_default_mini_split_air_conditioner_values(hpxml, isdefaulted, shr, fan_watts_per_cfm)
2050
+ def _test_default_evap_cooler_values(hpxml, cooling_capacity)
2007
2051
  cooling_system = hpxml.cooling_systems[0]
2008
2052
 
2009
- assert_equal(shr, cooling_system.cooling_shr)
2010
- assert_equal(isdefaulted, cooling_system.cooling_shr_isdefaulted)
2053
+ if cooling_capacity.nil?
2054
+ assert(cooling_system.cooling_capacity > 0)
2055
+ else
2056
+ assert_equal(cooling_system.cooling_capacity, cooling_capacity)
2057
+ end
2058
+ end
2059
+
2060
+ def _test_default_mini_split_air_conditioner_values(hpxml, shr, fan_watts_per_cfm, charge_defect_ratio,
2061
+ airflow_defect_ratio, cooling_capacity)
2062
+ cooling_system = hpxml.cooling_systems[0]
2011
2063
 
2064
+ assert_equal(shr, cooling_system.cooling_shr)
2012
2065
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
2013
- assert_equal(isdefaulted, cooling_system.fan_watts_per_cfm_isdefaulted)
2066
+ assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
2067
+ assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
2068
+ if cooling_capacity.nil?
2069
+ assert(cooling_system.cooling_capacity > 0)
2070
+ else
2071
+ assert_equal(cooling_system.cooling_capacity, cooling_capacity)
2072
+ end
2014
2073
  end
2015
2074
 
2016
- def _test_default_furnace_values(hpxml, isdefaulted, fan_watts_per_cfm)
2075
+ def _test_default_furnace_values(hpxml, fan_watts_per_cfm, airflow_defect_ratio,
2076
+ heating_capacity)
2017
2077
  heating_system = hpxml.heating_systems[0]
2018
2078
 
2019
2079
  assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm)
2020
- assert_equal(isdefaulted, heating_system.fan_watts_per_cfm_isdefaulted)
2080
+ assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio)
2081
+ if heating_capacity.nil?
2082
+ assert(heating_system.heating_capacity > 0)
2083
+ else
2084
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2085
+ end
2021
2086
  end
2022
2087
 
2023
- def _test_default_wall_furnace_values(hpxml, isdefaulted, fan_watts)
2088
+ def _test_default_wall_furnace_values(hpxml, fan_watts, heating_capacity)
2024
2089
  heating_system = hpxml.heating_systems[0]
2025
2090
 
2026
2091
  assert_equal(fan_watts, heating_system.fan_watts)
2027
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2092
+ if heating_capacity.nil?
2093
+ assert(heating_system.heating_capacity > 0)
2094
+ else
2095
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2096
+ end
2028
2097
  end
2029
2098
 
2030
- def _test_default_floor_furnace_values(hpxml, isdefaulted, fan_watts)
2099
+ def _test_default_floor_furnace_values(hpxml, fan_watts, heating_capacity)
2031
2100
  heating_system = hpxml.heating_systems[0]
2032
2101
 
2033
2102
  assert_equal(fan_watts, heating_system.fan_watts)
2034
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2103
+ if heating_capacity.nil?
2104
+ assert(heating_system.heating_capacity > 0)
2105
+ else
2106
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2107
+ end
2035
2108
  end
2036
2109
 
2037
- def _test_default_stove_values(hpxml, isdefaulted, fan_watts)
2110
+ def _test_default_boiler_values(hpxml, eae, heating_capacity)
2038
2111
  heating_system = hpxml.heating_systems[0]
2039
2112
 
2040
- assert_equal(fan_watts, heating_system.fan_watts)
2041
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2113
+ assert_equal(eae, heating_system.electric_auxiliary_energy)
2114
+ if heating_capacity.nil?
2115
+ assert(heating_system.heating_capacity > 0)
2116
+ else
2117
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2118
+ end
2042
2119
  end
2043
2120
 
2044
- def _test_default_portable_heater_values(hpxml, isdefaulted, fan_watts)
2121
+ def _test_default_stove_values(hpxml, fan_watts, heating_capacity)
2045
2122
  heating_system = hpxml.heating_systems[0]
2046
2123
 
2047
2124
  assert_equal(fan_watts, heating_system.fan_watts)
2048
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2125
+ if heating_capacity.nil?
2126
+ assert(heating_system.heating_capacity > 0)
2127
+ else
2128
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2129
+ end
2049
2130
  end
2050
2131
 
2051
- def _test_default_fixed_heater_values(hpxml, isdefaulted, fan_watts)
2132
+ def _test_default_portable_heater_values(hpxml, fan_watts, heating_capacity)
2052
2133
  heating_system = hpxml.heating_systems[0]
2053
2134
 
2054
2135
  assert_equal(fan_watts, heating_system.fan_watts)
2055
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2136
+ if heating_capacity.nil?
2137
+ assert(heating_system.heating_capacity > 0)
2138
+ else
2139
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2140
+ end
2056
2141
  end
2057
2142
 
2058
- def _test_default_fireplace_values(hpxml, isdefaulted, fan_watts)
2143
+ def _test_default_fixed_heater_values(hpxml, fan_watts, heating_capacity)
2059
2144
  heating_system = hpxml.heating_systems[0]
2060
2145
 
2061
2146
  assert_equal(fan_watts, heating_system.fan_watts)
2062
- assert_equal(isdefaulted, heating_system.fan_watts_isdefaulted)
2147
+ if heating_capacity.nil?
2148
+ assert(heating_system.heating_capacity > 0)
2149
+ else
2150
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2151
+ end
2063
2152
  end
2064
2153
 
2065
- def _test_default_boiler_values(hpxml, isdefaulted, eae)
2154
+ def _test_default_fireplace_values(hpxml, fan_watts, heating_capacity)
2066
2155
  heating_system = hpxml.heating_systems[0]
2067
2156
 
2068
- assert_equal(eae, heating_system.electric_auxiliary_energy)
2069
- assert_equal(isdefaulted, heating_system.electric_auxiliary_energy_isdefaulted)
2157
+ assert_equal(fan_watts, heating_system.fan_watts)
2158
+ if heating_capacity.nil?
2159
+ assert(heating_system.heating_capacity > 0)
2160
+ else
2161
+ assert_equal(heating_system.heating_capacity, heating_capacity)
2162
+ end
2070
2163
  end
2071
2164
 
2072
- def _test_default_air_to_air_heat_pump_values(hpxml, isdefaulted, shr, compressor_type, fan_watts_per_cfm)
2165
+ def _test_default_air_to_air_heat_pump_values(hpxml, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
2166
+ airflow_defect_ratio, cooling_capacity, heating_capacity,
2167
+ heating_capacity_17F, backup_heating_capacity)
2073
2168
  heat_pump = hpxml.heat_pumps[0]
2074
2169
 
2075
2170
  assert_equal(shr, heat_pump.cooling_shr)
2076
- assert_equal(isdefaulted, heat_pump.cooling_shr_isdefaulted)
2077
-
2078
2171
  assert_equal(compressor_type, heat_pump.compressor_type)
2079
- assert_equal(isdefaulted, heat_pump.compressor_type_isdefaulted)
2080
-
2081
2172
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
2082
- assert_equal(isdefaulted, heat_pump.fan_watts_per_cfm_isdefaulted)
2173
+ assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
2174
+ assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
2175
+ if cooling_capacity.nil?
2176
+ assert(heat_pump.cooling_capacity > 0)
2177
+ else
2178
+ assert_equal(heat_pump.cooling_capacity, cooling_capacity)
2179
+ end
2180
+ if heating_capacity.nil?
2181
+ assert(heat_pump.heating_capacity > 0)
2182
+ else
2183
+ assert_equal(heat_pump.heating_capacity, heating_capacity)
2184
+ end
2185
+ if heating_capacity_17F.nil?
2186
+ # assert(heat_pump.heating_capacity_17F > 0) # FUTURE
2187
+ else
2188
+ assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
2189
+ end
2190
+ if backup_heating_capacity.nil?
2191
+ assert(heat_pump.backup_heating_capacity > 0)
2192
+ else
2193
+ assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
2194
+ end
2083
2195
  end
2084
2196
 
2085
- def _test_default_mini_split_heat_pump_values(hpxml, isdefaulted, shr, fan_watts_per_cfm)
2197
+ def _test_default_mini_split_heat_pump_values(hpxml, shr, fan_watts_per_cfm, charge_defect_ratio,
2198
+ airflow_defect_ratio, cooling_capacity, heating_capacity,
2199
+ heating_capacity_17F, backup_heating_capacity)
2086
2200
  heat_pump = hpxml.heat_pumps[0]
2087
2201
 
2088
2202
  assert_equal(shr, heat_pump.cooling_shr)
2089
- assert_equal(isdefaulted, heat_pump.cooling_shr_isdefaulted)
2090
-
2091
2203
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
2092
- assert_equal(isdefaulted, heat_pump.fan_watts_per_cfm_isdefaulted)
2204
+ assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
2205
+ assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
2206
+ if cooling_capacity.nil?
2207
+ assert(heat_pump.cooling_capacity > 0)
2208
+ else
2209
+ assert_equal(heat_pump.cooling_capacity, cooling_capacity)
2210
+ end
2211
+ if heating_capacity.nil?
2212
+ assert(heat_pump.heating_capacity > 0)
2213
+ else
2214
+ assert_equal(heat_pump.heating_capacity, heating_capacity)
2215
+ end
2216
+ if heating_capacity_17F.nil?
2217
+ # assert(heat_pump.heating_capacity_17F > 0) # FUTURE
2218
+ else
2219
+ assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
2220
+ end
2221
+ if backup_heating_capacity.nil?
2222
+ assert(heat_pump.backup_heating_capacity > 0)
2223
+ else
2224
+ assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
2225
+ end
2093
2226
  end
2094
2227
 
2095
- def _test_default_ground_to_air_heat_pump_values(hpxml, isdefaulted, pump_watts_per_ton, fan_watts_per_cfm)
2228
+ def _test_default_ground_to_air_heat_pump_values(hpxml, pump_watts_per_ton, fan_watts_per_cfm,
2229
+ airflow_defect_ratio, cooling_capacity, heating_capacity,
2230
+ backup_heating_capacity)
2231
+
2096
2232
  heat_pump = hpxml.heat_pumps[0]
2097
2233
 
2098
2234
  assert_equal(pump_watts_per_ton, heat_pump.pump_watts_per_ton)
2099
- assert_equal(isdefaulted, heat_pump.pump_watts_per_ton_isdefaulted)
2100
-
2101
2235
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
2102
- assert_equal(isdefaulted, heat_pump.fan_watts_per_cfm_isdefaulted)
2236
+ assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
2237
+ if cooling_capacity.nil?
2238
+ assert(heat_pump.cooling_capacity > 0)
2239
+ else
2240
+ assert_equal(heat_pump.cooling_capacity, cooling_capacity)
2241
+ end
2242
+ if heating_capacity.nil?
2243
+ assert(heat_pump.heating_capacity > 0)
2244
+ else
2245
+ assert_equal(heat_pump.heating_capacity, heating_capacity)
2246
+ end
2247
+ if backup_heating_capacity.nil?
2248
+ assert(heat_pump.backup_heating_capacity > 0)
2249
+ else
2250
+ assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
2251
+ end
2103
2252
  end
2104
2253
 
2105
- def _test_default_hvac_control_values(hpxml, isdefaulted, htg_setback_start_hr, clg_setup_start_hr)
2254
+ def _test_default_hvac_control_values(hpxml, htg_setback_start_hr, clg_setup_start_hr)
2106
2255
  hvac_control = hpxml.hvac_controls[0]
2107
2256
 
2108
2257
  assert_equal(htg_setback_start_hr, hvac_control.heating_setback_start_hour)
2109
- assert_equal(isdefaulted, hvac_control.heating_setback_start_hour_isdefaulted)
2110
-
2111
2258
  assert_equal(clg_setup_start_hr, hvac_control.cooling_setup_start_hour)
2112
- assert_equal(isdefaulted, hvac_control.cooling_setup_start_hour_isdefaulted)
2113
2259
  end
2114
2260
 
2115
- def _test_default_duct_values(hpxml, isdefaulted, supply_locations, return_locations, supply_areas, return_areas, n_return_registers)
2261
+ def _test_default_duct_values(hpxml, supply_locations, return_locations, supply_areas, return_areas, n_return_registers)
2116
2262
  supply_duct_idx = 0
2117
2263
  return_duct_idx = 0
2118
2264
  hpxml.hvac_distributions.each do |hvac_distribution|
2119
- next unless [HPXML::HVACDistributionTypeAir, HPXML::HVACDistributionTypeHydronicAndAir].include? hvac_distribution.distribution_system_type
2265
+ next unless [HPXML::HVACDistributionTypeAir].include? hvac_distribution.distribution_system_type
2120
2266
 
2121
2267
  assert_equal(n_return_registers, hvac_distribution.number_of_return_registers)
2122
- assert_equal(isdefaulted, hvac_distribution.number_of_return_registers_isdefaulted)
2123
-
2124
2268
  hvac_distribution.ducts.each do |duct|
2125
2269
  if duct.duct_type == HPXML::DuctTypeSupply
2126
2270
  assert_equal(supply_locations[supply_duct_idx], duct.duct_location)
2127
- assert_equal(isdefaulted, duct.duct_location_isdefaulted)
2128
-
2129
2271
  assert_in_epsilon(supply_areas[supply_duct_idx], duct.duct_surface_area, 0.01)
2130
- assert_equal(isdefaulted, duct.duct_surface_area_isdefaulted)
2131
-
2132
2272
  supply_duct_idx += 1
2133
2273
  elsif duct.duct_type == HPXML::DuctTypeReturn
2134
2274
  assert_equal(return_locations[return_duct_idx], duct.duct_location)
2135
- assert_equal(isdefaulted, duct.duct_location_isdefaulted)
2136
-
2137
2275
  assert_in_epsilon(return_areas[return_duct_idx], duct.duct_surface_area, 0.01)
2138
- assert_equal(isdefaulted, duct.duct_surface_area_isdefaulted)
2139
-
2140
2276
  return_duct_idx += 1
2141
2277
  end
2142
2278
  end
2143
2279
  end
2144
2280
  end
2145
2281
 
2146
- def _test_default_mech_vent_values(hpxml, isdefaulted, is_shared_system, hours_in_operation)
2282
+ def _test_default_mech_vent_values(hpxml, is_shared_system, hours_in_operation)
2147
2283
  vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
2148
2284
 
2149
2285
  assert_equal(is_shared_system, vent_fan.is_shared_system)
2150
- assert_equal(isdefaulted, vent_fan.is_shared_system_isdefaulted)
2151
-
2152
2286
  assert_equal(hours_in_operation, vent_fan.hours_in_operation)
2153
- assert_equal(isdefaulted, vent_fan.hours_in_operation_isdefaulted)
2154
2287
  end
2155
2288
 
2156
- def _test_default_kitchen_fan_values(hpxml, isdefaulted, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
2289
+ def _test_default_kitchen_fan_values(hpxml, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
2157
2290
  kitchen_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }[0]
2158
2291
 
2159
2292
  assert_equal(quantity, kitchen_fan.quantity)
2160
- assert_equal(isdefaulted, kitchen_fan.quantity_isdefaulted)
2161
-
2162
2293
  assert_equal(rated_flow_rate, kitchen_fan.rated_flow_rate)
2163
- assert_equal(isdefaulted, kitchen_fan.rated_flow_rate_isdefaulted)
2164
-
2165
2294
  assert_equal(hours_in_operation, kitchen_fan.hours_in_operation)
2166
- assert_equal(isdefaulted, kitchen_fan.hours_in_operation_isdefaulted)
2167
-
2168
2295
  assert_equal(fan_power, kitchen_fan.fan_power)
2169
- assert_equal(isdefaulted, kitchen_fan.fan_power_isdefaulted)
2170
-
2171
2296
  assert_equal(start_hour, kitchen_fan.start_hour)
2172
- assert_equal(isdefaulted, kitchen_fan.start_hour_isdefaulted)
2173
2297
  end
2174
2298
 
2175
- def _test_default_bath_fan_values(hpxml, isdefaulted, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
2299
+ def _test_default_bath_fan_values(hpxml, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
2176
2300
  bath_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }[0]
2177
2301
 
2178
2302
  assert_equal(quantity, bath_fan.quantity)
2179
- assert_equal(isdefaulted, bath_fan.quantity_isdefaulted)
2180
-
2181
2303
  assert_equal(rated_flow_rate, bath_fan.rated_flow_rate)
2182
- assert_equal(isdefaulted, bath_fan.rated_flow_rate_isdefaulted)
2183
-
2184
2304
  assert_equal(hours_in_operation, bath_fan.hours_in_operation)
2185
- assert_equal(isdefaulted, bath_fan.hours_in_operation_isdefaulted)
2186
-
2187
2305
  assert_equal(fan_power, bath_fan.fan_power)
2188
- assert_equal(isdefaulted, bath_fan.fan_power_isdefaulted)
2189
-
2190
2306
  assert_equal(start_hour, bath_fan.start_hour)
2191
- assert_equal(isdefaulted, bath_fan.start_hour_isdefaulted)
2192
2307
  end
2193
2308
 
2194
- def _test_default_storage_water_heater_values(hpxml, isdefaulted, *expected_wh_values)
2309
+ def _test_default_storage_water_heater_values(hpxml, *expected_wh_values)
2195
2310
  storage_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeStorage }
2196
2311
  assert_equal(expected_wh_values.size, storage_water_heaters.size)
2197
2312
  storage_water_heaters.each_with_index do |wh_system, idx|
2198
2313
  is_shared, heating_capacity, tank_volume, recovery_efficiency, location = expected_wh_values[idx]
2199
2314
 
2200
2315
  assert_equal(is_shared, wh_system.is_shared_system)
2201
- assert_equal(isdefaulted, wh_system.is_shared_system_isdefaulted)
2202
-
2203
2316
  assert_in_epsilon(heating_capacity, wh_system.heating_capacity, 0.01)
2204
- assert_equal(isdefaulted, wh_system.heating_capacity_isdefaulted)
2205
-
2206
2317
  assert_equal(tank_volume, wh_system.tank_volume)
2207
- assert_equal(isdefaulted, wh_system.tank_volume_isdefaulted)
2208
-
2209
2318
  assert_in_epsilon(recovery_efficiency, wh_system.recovery_efficiency, 0.01)
2210
- assert_equal(isdefaulted, wh_system.recovery_efficiency_isdefaulted)
2211
-
2212
2319
  assert_equal(location, wh_system.location)
2213
- assert_equal(isdefaulted, wh_system.location_isdefaulted)
2214
2320
  end
2215
2321
  end
2216
2322
 
2217
- def _test_default_tankless_water_heater_values(hpxml, isdefaulted, *expected_wh_values)
2323
+ def _test_default_tankless_water_heater_values(hpxml, *expected_wh_values)
2218
2324
  tankless_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeTankless }
2219
2325
  assert_equal(expected_wh_values.size, tankless_water_heaters.size)
2220
2326
  tankless_water_heaters.each_with_index do |wh_system, idx|
2221
2327
  performance_adjustment, = expected_wh_values[idx]
2222
2328
 
2223
2329
  assert_equal(performance_adjustment, wh_system.performance_adjustment)
2224
- assert_equal(isdefaulted, wh_system.performance_adjustment_isdefaulted)
2225
2330
  end
2226
2331
  end
2227
2332
 
2228
- def _test_default_standard_distribution_values(hpxml, isdefaulted, piping_length, pipe_r_value)
2333
+ def _test_default_standard_distribution_values(hpxml, piping_length, pipe_r_value)
2229
2334
  hot_water_distribution = hpxml.hot_water_distributions[0]
2230
2335
 
2231
2336
  assert_in_epsilon(piping_length, hot_water_distribution.standard_piping_length, 0.01)
2232
- assert_equal(isdefaulted, hot_water_distribution.standard_piping_length_isdefaulted)
2233
-
2234
2337
  assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
2235
- assert_equal(isdefaulted, hot_water_distribution.pipe_r_value_isdefaulted)
2236
2338
  end
2237
2339
 
2238
- def _test_default_recirc_distribution_values(hpxml, isdefaulted, piping_length, branch_piping_length, pump_power, pipe_r_value)
2340
+ def _test_default_recirc_distribution_values(hpxml, piping_length, branch_piping_length, pump_power, pipe_r_value)
2239
2341
  hot_water_distribution = hpxml.hot_water_distributions[0]
2240
2342
 
2241
2343
  assert_in_epsilon(piping_length, hot_water_distribution.recirculation_piping_length, 0.01)
2242
- assert_equal(isdefaulted, hot_water_distribution.recirculation_piping_length_isdefaulted)
2243
-
2244
2344
  assert_in_epsilon(branch_piping_length, hot_water_distribution.recirculation_branch_piping_length, 0.01)
2245
- assert_equal(isdefaulted, hot_water_distribution.recirculation_branch_piping_length_isdefaulted)
2246
-
2247
2345
  assert_in_epsilon(pump_power, hot_water_distribution.recirculation_pump_power, 0.01)
2248
- assert_equal(isdefaulted, hot_water_distribution.recirculation_pump_power_isdefaulted)
2249
-
2250
2346
  assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
2251
- assert_equal(isdefaulted, hot_water_distribution.pipe_r_value_isdefaulted)
2252
2347
  end
2253
2348
 
2254
- def _test_default_shared_recirc_distribution_values(hpxml, isdefaulted, pump_power)
2349
+ def _test_default_shared_recirc_distribution_values(hpxml, pump_power)
2255
2350
  hot_water_distribution = hpxml.hot_water_distributions[0]
2256
2351
 
2257
2352
  assert_in_epsilon(pump_power, hot_water_distribution.shared_recirculation_pump_power, 0.01)
2258
- assert_equal(isdefaulted, hot_water_distribution.shared_recirculation_pump_power_isdefaulted)
2259
2353
  end
2260
2354
 
2261
- def _test_default_water_fixture_values(hpxml, isdefaulted, usage_multiplier)
2355
+ def _test_default_water_fixture_values(hpxml, usage_multiplier)
2262
2356
  assert_equal(usage_multiplier, hpxml.water_heating.water_fixtures_usage_multiplier)
2263
- assert_equal(isdefaulted, hpxml.water_heating.water_fixtures_usage_multiplier_isdefaulted)
2264
2357
  end
2265
2358
 
2266
- def _test_default_solar_thermal_values(hpxml, isdefaulted, storage_volume)
2359
+ def _test_default_solar_thermal_values(hpxml, storage_volume)
2267
2360
  solar_thermal_system = hpxml.solar_thermal_systems[0]
2268
2361
 
2269
2362
  assert_equal(storage_volume, solar_thermal_system.storage_volume)
2270
- assert_equal(isdefaulted, solar_thermal_system.storage_volume_isdefaulted)
2271
2363
  end
2272
2364
 
2273
- def _test_default_pv_system_values(hpxml, isdefaulted, interver_efficiency, system_loss_frac, is_shared_system, location, tracking, module_type)
2365
+ def _test_default_pv_system_values(hpxml, interver_efficiency, system_loss_frac, is_shared_system, location, tracking, module_type)
2274
2366
  hpxml.pv_systems.each_with_index do |pv, idx|
2275
2367
  assert_equal(is_shared_system, pv.is_shared_system)
2276
- assert_equal(isdefaulted, pv.is_shared_system_isdefaulted)
2277
-
2278
2368
  assert_equal(interver_efficiency, pv.inverter_efficiency)
2279
- assert_equal(isdefaulted, pv.inverter_efficiency_isdefaulted)
2280
-
2281
2369
  assert_in_epsilon(system_loss_frac, pv.system_losses_fraction, 0.01)
2282
- assert_equal(isdefaulted, pv.system_losses_fraction_isdefaulted)
2283
-
2284
2370
  assert_equal(location, pv.location)
2285
- assert_equal(isdefaulted, pv.location_isdefaulted)
2286
-
2287
2371
  assert_equal(tracking, pv.tracking)
2288
- assert_equal(isdefaulted, pv.tracking_isdefaulted)
2289
-
2290
2372
  assert_equal(module_type, pv.module_type)
2291
- assert_equal(isdefaulted, pv.module_type_isdefaulted)
2292
2373
  end
2293
2374
  end
2294
2375
 
2295
- def _test_default_generator_values(hpxml, isdefaulted, is_shared_system)
2376
+ def _test_default_generator_values(hpxml, is_shared_system)
2296
2377
  hpxml.generators.each_with_index do |generator, idx|
2297
2378
  assert_equal(is_shared_system, generator.is_shared_system)
2298
- assert_equal(isdefaulted, generator.is_shared_system_isdefaulted)
2299
2379
  end
2300
2380
  end
2301
2381
 
2302
- def _test_default_clothes_washer_values(hpxml, isdefaulted, is_shared, location, imef, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, capacity, label_usage, usage_multiplier)
2382
+ def _test_default_clothes_washer_values(hpxml, is_shared, location, imef, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, capacity, label_usage, usage_multiplier)
2303
2383
  clothes_washer = hpxml.clothes_washers[0]
2304
2384
 
2305
2385
  assert_equal(is_shared, clothes_washer.is_shared_appliance)
2306
- assert_equal(isdefaulted, clothes_washer.is_shared_appliance_isdefaulted)
2307
-
2308
2386
  assert_equal(location, clothes_washer.location)
2309
- assert_equal(isdefaulted, clothes_washer.location_isdefaulted)
2310
-
2311
2387
  assert_equal(imef, clothes_washer.integrated_modified_energy_factor)
2312
- assert_equal(isdefaulted, clothes_washer.integrated_modified_energy_factor_isdefaulted)
2313
-
2314
2388
  assert_equal(rated_annual_kwh, clothes_washer.rated_annual_kwh)
2315
- assert_equal(isdefaulted, clothes_washer.rated_annual_kwh_isdefaulted)
2316
-
2317
2389
  assert_equal(label_electric_rate, clothes_washer.label_electric_rate)
2318
- assert_equal(isdefaulted, clothes_washer.label_electric_rate_isdefaulted)
2319
-
2320
2390
  assert_equal(label_gas_rate, clothes_washer.label_gas_rate)
2321
- assert_equal(isdefaulted, clothes_washer.label_gas_rate_isdefaulted)
2322
-
2323
2391
  assert_equal(label_annual_gas_cost, clothes_washer.label_annual_gas_cost)
2324
- assert_equal(isdefaulted, clothes_washer.label_annual_gas_cost_isdefaulted)
2325
-
2326
2392
  assert_equal(capacity, clothes_washer.capacity)
2327
- assert_equal(isdefaulted, clothes_washer.capacity_isdefaulted)
2328
-
2329
2393
  assert_equal(label_usage, clothes_washer.label_usage)
2330
- assert_equal(isdefaulted, clothes_washer.label_usage_isdefaulted)
2331
-
2332
2394
  assert_equal(usage_multiplier, clothes_washer.usage_multiplier)
2333
- assert_equal(isdefaulted, clothes_washer.usage_multiplier_isdefaulted)
2334
2395
  end
2335
2396
 
2336
- def _test_default_clothes_dryer_values(hpxml, isdefaulted, is_shared, location, control_type, cef, usage_multiplier)
2397
+ def _test_default_clothes_dryer_values(hpxml, is_shared, location, cef, usage_multiplier)
2337
2398
  clothes_dryer = hpxml.clothes_dryers[0]
2338
2399
 
2339
2400
  assert_equal(is_shared, clothes_dryer.is_shared_appliance)
2340
- assert_equal(isdefaulted, clothes_dryer.is_shared_appliance_isdefaulted)
2341
-
2342
2401
  assert_equal(location, clothes_dryer.location)
2343
- assert_equal(isdefaulted, clothes_dryer.location_isdefaulted)
2344
-
2345
- assert_equal(control_type, clothes_dryer.control_type)
2346
- assert_equal(isdefaulted, clothes_dryer.control_type_isdefaulted)
2347
-
2348
2402
  assert_equal(cef, clothes_dryer.combined_energy_factor)
2349
- assert_equal(isdefaulted, clothes_dryer.combined_energy_factor_isdefaulted)
2350
-
2351
2403
  assert_equal(usage_multiplier, clothes_dryer.usage_multiplier)
2352
- assert_equal(isdefaulted, clothes_dryer.usage_multiplier_isdefaulted)
2353
2404
  end
2354
2405
 
2355
- def _test_default_clothes_dryer_exhaust_values(hpxml, isdefaulted, is_vented, vented_flow_rate)
2406
+ def _test_default_clothes_dryer_exhaust_values(hpxml, is_vented, vented_flow_rate)
2356
2407
  clothes_dryer = hpxml.clothes_dryers[0]
2357
2408
 
2358
2409
  assert_equal(is_vented, clothes_dryer.is_vented)
2359
- assert_equal(isdefaulted, clothes_dryer.is_vented_isdefaulted)
2360
-
2361
2410
  if vented_flow_rate.nil?
2362
2411
  assert_nil(clothes_dryer.vented_flow_rate)
2363
2412
  else
2364
2413
  assert_equal(vented_flow_rate, clothes_dryer.vented_flow_rate)
2365
- assert_equal(isdefaulted, clothes_dryer.vented_flow_rate_isdefaulted)
2366
2414
  end
2367
2415
  end
2368
2416
 
2369
- def _test_default_dishwasher_values(hpxml, isdefaulted, is_shared, location, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, label_usage, place_setting_capacity, usage_multiplier)
2417
+ def _test_default_dishwasher_values(hpxml, is_shared, location, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, label_usage, place_setting_capacity, usage_multiplier)
2370
2418
  dishwasher = hpxml.dishwashers[0]
2371
2419
 
2372
2420
  assert_equal(is_shared, dishwasher.is_shared_appliance)
2373
- assert_equal(isdefaulted, dishwasher.is_shared_appliance_isdefaulted)
2374
-
2375
2421
  assert_equal(location, dishwasher.location)
2376
- assert_equal(isdefaulted, dishwasher.location_isdefaulted)
2377
-
2378
2422
  assert_equal(rated_annual_kwh, dishwasher.rated_annual_kwh)
2379
- assert_equal(isdefaulted, dishwasher.rated_annual_kwh_isdefaulted)
2380
-
2381
2423
  assert_equal(label_electric_rate, dishwasher.label_electric_rate)
2382
- assert_equal(isdefaulted, dishwasher.label_electric_rate_isdefaulted)
2383
-
2384
2424
  assert_equal(label_gas_rate, dishwasher.label_gas_rate)
2385
- assert_equal(isdefaulted, dishwasher.label_gas_rate_isdefaulted)
2386
-
2387
2425
  assert_equal(label_annual_gas_cost, dishwasher.label_annual_gas_cost)
2388
- assert_equal(isdefaulted, dishwasher.label_annual_gas_cost_isdefaulted)
2389
-
2390
2426
  assert_equal(label_usage, dishwasher.label_usage)
2391
- assert_equal(isdefaulted, dishwasher.label_usage_isdefaulted)
2392
-
2393
2427
  assert_equal(place_setting_capacity, dishwasher.place_setting_capacity)
2394
- assert_equal(isdefaulted, dishwasher.place_setting_capacity_isdefaulted)
2395
-
2396
2428
  assert_equal(usage_multiplier, dishwasher.usage_multiplier)
2397
- assert_equal(isdefaulted, dishwasher.usage_multiplier_isdefaulted)
2398
2429
  end
2399
2430
 
2400
- def _test_default_refrigerator_values(hpxml, isdefaulted, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2431
+ def _test_default_refrigerator_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2401
2432
  hpxml.refrigerators.each do |refrigerator|
2402
2433
  next unless refrigerator.primary_indicator
2403
2434
 
2404
2435
  assert_equal(location, refrigerator.location)
2405
- assert_equal(isdefaulted, refrigerator.location_isdefaulted)
2406
-
2407
2436
  assert_equal(rated_annual_kwh, refrigerator.rated_annual_kwh)
2408
- assert_equal(isdefaulted, refrigerator.rated_annual_kwh_isdefaulted)
2409
-
2410
2437
  assert_equal(usage_multiplier, refrigerator.usage_multiplier)
2411
- assert_equal(isdefaulted, refrigerator.usage_multiplier_isdefaulted)
2412
-
2413
2438
  if weekday_sch.nil?
2414
2439
  assert_nil(refrigerator.weekday_fractions)
2415
2440
  else
2416
2441
  assert_equal(weekday_sch, refrigerator.weekday_fractions)
2417
- assert_equal(isdefaulted, refrigerator.weekday_fractions_isdefaulted)
2418
2442
  end
2419
-
2420
2443
  if weekend_sch.nil?
2421
2444
  assert_nil(refrigerator.weekend_fractions)
2422
2445
  else
2423
2446
  assert_equal(weekend_sch, refrigerator.weekend_fractions)
2424
- assert_equal(isdefaulted, refrigerator.weekend_fractions_isdefaulted)
2425
2447
  end
2426
-
2427
2448
  if monthly_mults.nil?
2428
2449
  assert_nil(refrigerator.monthly_multipliers)
2429
2450
  else
2430
2451
  assert_equal(monthly_mults, refrigerator.monthly_multipliers)
2431
- assert_equal(isdefaulted, refrigerator.monthly_multipliers_isdefaulted)
2432
2452
  end
2433
2453
  end
2434
2454
  end
2435
2455
 
2436
- def _test_default_extra_refrigerators_values(hpxml, isdefaulted, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2456
+ def _test_default_extra_refrigerators_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2437
2457
  hpxml.refrigerators.each do |refrigerator|
2438
2458
  next if refrigerator.primary_indicator
2439
2459
 
2440
2460
  assert_equal(location, refrigerator.location)
2441
- assert_equal(isdefaulted, refrigerator.location_isdefaulted)
2442
-
2443
2461
  assert_in_epsilon(rated_annual_kwh, refrigerator.rated_annual_kwh, 0.01)
2444
- assert_equal(isdefaulted, refrigerator.rated_annual_kwh_isdefaulted)
2445
-
2446
2462
  assert_equal(usage_multiplier, refrigerator.usage_multiplier)
2447
- assert_equal(isdefaulted, refrigerator.usage_multiplier_isdefaulted)
2448
-
2449
2463
  if weekday_sch.nil?
2450
2464
  assert_nil(refrigerator.weekday_fractions)
2451
2465
  else
2452
2466
  assert_equal(weekday_sch, refrigerator.weekday_fractions)
2453
- assert_equal(isdefaulted, refrigerator.weekday_fractions_isdefaulted)
2454
2467
  end
2455
-
2456
2468
  if weekend_sch.nil?
2457
2469
  assert_nil(refrigerator.weekend_fractions)
2458
2470
  else
2459
2471
  assert_equal(weekend_sch, refrigerator.weekend_fractions)
2460
- assert_equal(isdefaulted, refrigerator.weekend_fractions_isdefaulted)
2461
2472
  end
2462
-
2463
2473
  if monthly_mults.nil?
2464
2474
  assert_nil(refrigerator.monthly_multipliers)
2465
2475
  else
2466
2476
  assert_equal(monthly_mults, refrigerator.monthly_multipliers)
2467
- assert_equal(isdefaulted, refrigerator.monthly_multipliers_isdefaulted)
2468
2477
  end
2469
2478
  end
2470
2479
  end
2471
2480
 
2472
- def _test_default_freezers_values(hpxml, isdefaulted, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2481
+ def _test_default_freezers_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2473
2482
  hpxml.freezers.each do |freezer|
2474
2483
  assert_equal(location, freezer.location)
2475
- assert_equal(isdefaulted, freezer.location_isdefaulted)
2476
-
2477
2484
  assert_in_epsilon(rated_annual_kwh, freezer.rated_annual_kwh, 0.01)
2478
- assert_equal(isdefaulted, freezer.rated_annual_kwh_isdefaulted)
2479
-
2480
2485
  assert_equal(usage_multiplier, freezer.usage_multiplier)
2481
- assert_equal(isdefaulted, freezer.usage_multiplier_isdefaulted)
2482
-
2483
2486
  if weekday_sch.nil?
2484
2487
  assert_nil(freezer.weekday_fractions)
2485
2488
  else
2486
2489
  assert_equal(weekday_sch, freezer.weekday_fractions)
2487
- assert_equal(isdefaulted, freezer.weekday_fractions_isdefaulted)
2488
2490
  end
2489
-
2490
2491
  if weekend_sch.nil?
2491
2492
  assert_nil(freezer.weekend_fractions)
2492
2493
  else
2493
2494
  assert_equal(weekend_sch, freezer.weekend_fractions)
2494
- assert_equal(isdefaulted, freezer.weekend_fractions_isdefaulted)
2495
2495
  end
2496
-
2497
2496
  if monthly_mults.nil?
2498
2497
  assert_nil(freezer.monthly_multipliers)
2499
2498
  else
2500
2499
  assert_equal(monthly_mults, freezer.monthly_multipliers)
2501
- assert_equal(isdefaulted, freezer.monthly_multipliers_isdefaulted)
2502
2500
  end
2503
2501
  end
2504
2502
  end
2505
2503
 
2506
- def _test_default_cooking_range_values(hpxml, isdefaulted, location, is_induction, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2504
+ def _test_default_cooking_range_values(hpxml, location, is_induction, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2507
2505
  cooking_range = hpxml.cooking_ranges[0]
2508
2506
 
2509
2507
  assert_equal(location, cooking_range.location)
2510
- assert_equal(isdefaulted, cooking_range.location_isdefaulted)
2511
-
2512
2508
  assert_equal(is_induction, cooking_range.is_induction)
2513
- assert_equal(isdefaulted, cooking_range.is_induction_isdefaulted)
2514
-
2515
2509
  assert_equal(usage_multiplier, cooking_range.usage_multiplier)
2516
- assert_equal(isdefaulted, cooking_range.usage_multiplier_isdefaulted)
2517
-
2518
2510
  if weekday_sch.nil?
2519
2511
  assert_nil(cooking_range.weekday_fractions)
2520
2512
  else
2521
2513
  assert_equal(weekday_sch, cooking_range.weekday_fractions)
2522
- assert_equal(isdefaulted, cooking_range.weekday_fractions_isdefaulted)
2523
2514
  end
2524
-
2525
2515
  if weekend_sch.nil?
2526
2516
  assert_nil(cooking_range.weekend_fractions)
2527
2517
  else
2528
2518
  assert_equal(weekend_sch, cooking_range.weekend_fractions)
2529
- assert_equal(isdefaulted, cooking_range.weekend_fractions_isdefaulted)
2530
2519
  end
2531
-
2532
2520
  if monthly_mults.nil?
2533
2521
  assert_nil(cooking_range.monthly_multipliers)
2534
2522
  else
2535
2523
  assert_equal(monthly_mults, cooking_range.monthly_multipliers)
2536
- assert_equal(isdefaulted, cooking_range.monthly_multipliers_isdefaulted)
2537
2524
  end
2538
2525
  end
2539
2526
 
2540
- def _test_default_oven_values(hpxml, isdefaulted, is_convection)
2527
+ def _test_default_oven_values(hpxml, is_convection)
2541
2528
  oven = hpxml.ovens[0]
2542
2529
 
2543
2530
  assert_equal(is_convection, oven.is_convection)
2544
- assert_equal(isdefaulted, oven.is_convection_isdefaulted)
2545
2531
  end
2546
2532
 
2547
- def _test_default_lighting_values(hpxml, isdefaulted, interior_usage_multiplier, garage_usage_multiplier, exterior_usage_multiplier, schedules = {})
2533
+ def _test_default_lighting_values(hpxml, interior_usage_multiplier, garage_usage_multiplier, exterior_usage_multiplier, schedules = {})
2548
2534
  assert_equal(interior_usage_multiplier, hpxml.lighting.interior_usage_multiplier)
2549
- assert_equal(isdefaulted, hpxml.lighting.interior_usage_multiplier_isdefaulted)
2550
-
2551
2535
  assert_equal(garage_usage_multiplier, hpxml.lighting.garage_usage_multiplier)
2552
- assert_equal(isdefaulted, hpxml.lighting.garage_usage_multiplier_isdefaulted)
2553
-
2554
2536
  assert_equal(exterior_usage_multiplier, hpxml.lighting.exterior_usage_multiplier)
2555
- assert_equal(isdefaulted, hpxml.lighting.exterior_usage_multiplier_isdefaulted)
2556
-
2557
2537
  if not schedules[:grg_wk_sch].nil?
2558
2538
  assert_equal(schedules[:grg_wk_sch], hpxml.lighting.garage_weekday_fractions)
2559
- assert_equal(isdefaulted, hpxml.lighting.garage_weekday_fractions_isdefaulted)
2560
2539
  else
2561
2540
  assert_nil(hpxml.lighting.garage_weekday_fractions)
2562
2541
  end
2563
-
2564
2542
  if not schedules[:grg_wknd_sch].nil?
2565
2543
  assert_equal(schedules[:grg_wknd_sch], hpxml.lighting.garage_weekend_fractions)
2566
- assert_equal(isdefaulted, hpxml.lighting.garage_weekend_fractions_isdefaulted)
2567
2544
  else
2568
2545
  assert_nil(hpxml.lighting.garage_weekend_fractions)
2569
2546
  end
2570
-
2571
2547
  if not schedules[:grg_month_mult].nil?
2572
2548
  assert_equal(schedules[:grg_month_mult], hpxml.lighting.garage_monthly_multipliers)
2573
- assert_equal(isdefaulted, hpxml.lighting.garage_monthly_multipliers_isdefaulted)
2574
2549
  else
2575
2550
  assert_nil(hpxml.lighting.garage_monthly_multipliers)
2576
2551
  end
2577
-
2578
2552
  if not schedules[:ext_wk_sch].nil?
2579
2553
  assert_equal(schedules[:ext_wk_sch], hpxml.lighting.exterior_weekday_fractions)
2580
- assert_equal(isdefaulted, hpxml.lighting.exterior_weekday_fractions_isdefaulted)
2581
2554
  else
2582
2555
  assert_nil(hpxml.lighting.exterior_weekday_fractions)
2583
2556
  end
2584
-
2585
2557
  if not schedules[:ext_wknd_sch].nil?
2586
2558
  assert_equal(schedules[:ext_wknd_sch], hpxml.lighting.exterior_weekend_fractions)
2587
- assert_equal(isdefaulted, hpxml.lighting.exterior_weekend_fractions_isdefaulted)
2588
2559
  else
2589
2560
  assert_nil(hpxml.lighting.exterior_weekday_fractions)
2590
2561
  end
2591
-
2592
2562
  if not schedules[:ext_month_mult].nil?
2593
2563
  assert_equal(schedules[:ext_month_mult], hpxml.lighting.exterior_monthly_multipliers)
2594
- assert_equal(isdefaulted, hpxml.lighting.exterior_monthly_multipliers_isdefaulted)
2595
2564
  else
2596
2565
  assert_nil(hpxml.lighting.exterior_monthly_multipliers)
2597
2566
  end
2598
-
2599
2567
  if not schedules[:hol_kwh_per_day].nil?
2600
2568
  assert_equal(schedules[:hol_kwh_per_day], hpxml.lighting.holiday_kwh_per_day)
2601
- assert_equal(isdefaulted, hpxml.lighting.holiday_kwh_per_day_isdefaulted)
2602
2569
  else
2603
2570
  assert_nil(hpxml.lighting.holiday_kwh_per_day)
2604
2571
  end
2605
-
2606
2572
  if not schedules[:hol_begin_month].nil?
2607
2573
  assert_equal(schedules[:hol_begin_month], hpxml.lighting.holiday_period_begin_month)
2608
- assert_equal(isdefaulted, hpxml.lighting.holiday_period_begin_month_isdefaulted)
2609
2574
  else
2610
2575
  assert_nil(hpxml.lighting.holiday_period_begin_month)
2611
2576
  end
2612
-
2613
2577
  if not schedules[:hol_begin_day].nil?
2614
2578
  assert_equal(schedules[:hol_begin_day], hpxml.lighting.holiday_period_begin_day)
2615
- assert_equal(isdefaulted, hpxml.lighting.holiday_period_begin_day_isdefaulted)
2616
2579
  else
2617
2580
  assert_nil(hpxml.lighting.holiday_period_begin_day)
2618
2581
  end
2619
-
2620
2582
  if not schedules[:hol_end_month].nil?
2621
2583
  assert_equal(schedules[:hol_end_month], hpxml.lighting.holiday_period_end_month)
2622
- assert_equal(isdefaulted, hpxml.lighting.holiday_period_end_month_isdefaulted)
2623
2584
  else
2624
2585
  assert_nil(hpxml.lighting.holiday_period_end_month)
2625
2586
  end
2626
-
2627
2587
  if not schedules[:hol_end_day].nil?
2628
2588
  assert_equal(schedules[:hol_end_day], hpxml.lighting.holiday_period_end_day)
2629
- assert_equal(isdefaulted, hpxml.lighting.holiday_period_end_day_isdefaulted)
2630
2589
  else
2631
2590
  assert_nil(hpxml.lighting.holiday_period_end_day)
2632
2591
  end
2633
-
2634
2592
  if not schedules[:hol_wk_sch].nil?
2635
2593
  assert_equal(schedules[:hol_wk_sch], hpxml.lighting.holiday_weekday_fractions)
2636
- assert_equal(isdefaulted, hpxml.lighting.holiday_weekday_fractions_isdefaulted)
2637
2594
  else
2638
2595
  assert_nil(hpxml.lighting.holiday_weekday_fractions)
2639
2596
  end
2640
-
2641
2597
  if not schedules[:hol_wknd_sch].nil?
2642
2598
  assert_equal(schedules[:hol_wknd_sch], hpxml.lighting.holiday_weekend_fractions)
2643
- assert_equal(isdefaulted, hpxml.lighting.holiday_weekend_fractions_isdefaulted)
2644
2599
  else
2645
2600
  assert_nil(hpxml.lighting.holiday_weekend_fractions)
2646
2601
  end
2647
2602
  end
2648
2603
 
2649
- def _test_default_ceiling_fan_values(hpxml, isdefaulted, quantity, efficiency)
2604
+ def _test_default_ceiling_fan_values(hpxml, quantity, efficiency)
2650
2605
  ceiling_fan = hpxml.ceiling_fans[0]
2651
2606
 
2652
2607
  assert_equal(quantity, ceiling_fan.quantity)
2653
- assert_equal(isdefaulted, ceiling_fan.quantity_isdefaulted)
2654
-
2655
2608
  assert_in_epsilon(efficiency, ceiling_fan.efficiency, 0.01)
2656
- assert_equal(isdefaulted, ceiling_fan.efficiency_isdefaulted)
2657
2609
  end
2658
2610
 
2659
- def _test_default_pool_heater_values(hpxml, isdefaulted, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2611
+ def _test_default_pool_heater_values(hpxml, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2660
2612
  pool = hpxml.pools[0]
2661
2613
 
2662
2614
  if load_units.nil?
@@ -2664,63 +2616,44 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2664
2616
  else
2665
2617
  assert_equal(load_units, pool.heater_load_units)
2666
2618
  end
2667
-
2668
2619
  if load_value.nil?
2669
2620
  assert_nil(pool.heater_load_value)
2670
2621
  else
2671
2622
  assert_in_epsilon(load_value, pool.heater_load_value, 0.01)
2672
- assert_equal(isdefaulted, pool.heater_load_value_isdefaulted)
2673
2623
  end
2674
-
2675
2624
  if usage_multiplier.nil?
2676
2625
  assert_nil(pool.heater_usage_multiplier)
2677
2626
  else
2678
2627
  assert_equal(usage_multiplier, pool.heater_usage_multiplier)
2679
- assert_equal(isdefaulted, pool.heater_usage_multiplier_isdefaulted)
2680
2628
  end
2681
-
2682
2629
  if weekday_sch.nil?
2683
2630
  assert_nil(pool.heater_weekday_fractions)
2684
2631
  else
2685
2632
  assert_equal(weekday_sch, pool.heater_weekday_fractions)
2686
- assert_equal(isdefaulted, pool.heater_weekday_fractions_isdefaulted)
2687
2633
  end
2688
-
2689
2634
  if weekend_sch.nil?
2690
2635
  assert_nil(pool.heater_weekend_fractions)
2691
2636
  else
2692
2637
  assert_equal(weekend_sch, pool.heater_weekend_fractions)
2693
- assert_equal(isdefaulted, pool.heater_weekend_fractions_isdefaulted)
2694
2638
  end
2695
-
2696
2639
  if monthly_mults.nil?
2697
2640
  assert_nil(pool.heater_monthly_multipliers)
2698
2641
  else
2699
2642
  assert_equal(monthly_mults, pool.heater_monthly_multipliers)
2700
- assert_equal(isdefaulted, pool.heater_monthly_multipliers_isdefaulted)
2701
2643
  end
2702
2644
  end
2703
2645
 
2704
- def _test_default_pool_pump_values(hpxml, isdefaulted, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2646
+ def _test_default_pool_pump_values(hpxml, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2705
2647
  pool = hpxml.pools[0]
2706
2648
 
2707
2649
  assert_in_epsilon(kWh_per_year, pool.pump_kwh_per_year, 0.01)
2708
- assert_equal(isdefaulted, pool.pump_kwh_per_year_isdefaulted)
2709
-
2710
2650
  assert_equal(usage_multiplier, pool.pump_usage_multiplier)
2711
- assert_equal(isdefaulted, pool.pump_usage_multiplier_isdefaulted)
2712
-
2713
2651
  assert_equal(weekday_sch, pool.pump_weekday_fractions)
2714
- assert_equal(isdefaulted, pool.pump_weekday_fractions_isdefaulted)
2715
-
2716
2652
  assert_equal(weekend_sch, pool.pump_weekend_fractions)
2717
- assert_equal(isdefaulted, pool.pump_weekend_fractions_isdefaulted)
2718
-
2719
2653
  assert_equal(monthly_mults, pool.pump_monthly_multipliers)
2720
- assert_equal(isdefaulted, pool.pump_monthly_multipliers_isdefaulted)
2721
2654
  end
2722
2655
 
2723
- def _test_default_hot_tub_heater_values(hpxml, isdefaulted, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2656
+ def _test_default_hot_tub_heater_values(hpxml, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2724
2657
  hot_tub = hpxml.hot_tubs[0]
2725
2658
 
2726
2659
  if load_units.nil?
@@ -2728,110 +2661,65 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2728
2661
  else
2729
2662
  assert_equal(load_units, hot_tub.heater_load_units)
2730
2663
  end
2731
-
2732
2664
  if load_value.nil?
2733
2665
  assert_nil(hot_tub.heater_load_value)
2734
2666
  else
2735
2667
  assert_in_epsilon(load_value, hot_tub.heater_load_value, 0.01)
2736
- assert_equal(isdefaulted, hot_tub.heater_load_value_isdefaulted)
2737
2668
  end
2738
-
2739
2669
  if usage_multiplier.nil?
2740
2670
  assert_nil(hot_tub.heater_usage_multiplier)
2741
2671
  else
2742
2672
  assert_equal(usage_multiplier, hot_tub.heater_usage_multiplier)
2743
- assert_equal(isdefaulted, hot_tub.heater_usage_multiplier_isdefaulted)
2744
2673
  end
2745
-
2746
2674
  if weekday_sch.nil?
2747
2675
  assert_nil(hot_tub.heater_weekday_fractions)
2748
2676
  else
2749
2677
  assert_equal(weekday_sch, hot_tub.heater_weekday_fractions)
2750
- assert_equal(isdefaulted, hot_tub.heater_weekday_fractions_isdefaulted)
2751
2678
  end
2752
-
2753
2679
  if weekend_sch.nil?
2754
2680
  assert_nil(hot_tub.heater_weekend_fractions)
2755
2681
  else
2756
2682
  assert_equal(weekend_sch, hot_tub.heater_weekend_fractions)
2757
- assert_equal(isdefaulted, hot_tub.heater_weekend_fractions_isdefaulted)
2758
2683
  end
2759
-
2760
2684
  if monthly_mults.nil?
2761
2685
  assert_nil(hot_tub.heater_monthly_multipliers)
2762
2686
  else
2763
2687
  assert_equal(monthly_mults, hot_tub.heater_monthly_multipliers)
2764
- assert_equal(isdefaulted, hot_tub.heater_monthly_multipliers_isdefaulted)
2765
2688
  end
2766
2689
  end
2767
2690
 
2768
- def _test_default_hot_tub_pump_values(hpxml, isdefaulted, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2691
+ def _test_default_hot_tub_pump_values(hpxml, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2769
2692
  hot_tub = hpxml.hot_tubs[0]
2770
2693
 
2771
2694
  assert_in_epsilon(kWh_per_year, hot_tub.pump_kwh_per_year, 0.01)
2772
- assert_equal(isdefaulted, hot_tub.pump_kwh_per_year_isdefaulted)
2773
-
2774
2695
  assert_equal(usage_multiplier, hot_tub.pump_usage_multiplier)
2775
- assert_equal(isdefaulted, hot_tub.pump_usage_multiplier_isdefaulted)
2776
-
2777
2696
  assert_equal(weekday_sch, hot_tub.pump_weekday_fractions)
2778
- assert_equal(isdefaulted, hot_tub.pump_weekday_fractions_isdefaulted)
2779
-
2780
2697
  assert_equal(weekend_sch, hot_tub.pump_weekend_fractions)
2781
- assert_equal(isdefaulted, hot_tub.pump_weekend_fractions_isdefaulted)
2782
-
2783
2698
  assert_equal(monthly_mults, hot_tub.pump_monthly_multipliers)
2784
- assert_equal(isdefaulted, hot_tub.pump_monthly_multipliers_isdefaulted)
2785
2699
  end
2786
2700
 
2787
- def _test_default_plug_load_values(hpxml, isdefaulted, load_type, kWh_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2701
+ def _test_default_plug_load_values(hpxml, load_type, kWh_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2788
2702
  pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == load_type }[0]
2789
2703
 
2790
2704
  assert_in_epsilon(kWh_per_year, pl.kWh_per_year, 0.01)
2791
- assert_equal(isdefaulted, pl.kWh_per_year_isdefaulted)
2792
-
2793
2705
  assert_equal(usage_multiplier, pl.usage_multiplier)
2794
- assert_equal(isdefaulted, pl.usage_multiplier_isdefaulted)
2795
-
2796
2706
  assert_in_epsilon(frac_sensible, pl.frac_sensible, 0.01)
2797
- assert_equal(isdefaulted, pl.frac_sensible_isdefaulted)
2798
-
2799
2707
  assert_in_epsilon(frac_latent, pl.frac_latent, 0.01)
2800
- assert_equal(isdefaulted, pl.frac_latent_isdefaulted)
2801
-
2802
2708
  assert_equal(weekday_sch, pl.weekday_fractions)
2803
- assert_equal(isdefaulted, pl.weekday_fractions_isdefaulted)
2804
-
2805
2709
  assert_equal(weekend_sch, pl.weekend_fractions)
2806
- assert_equal(isdefaulted, pl.weekend_fractions_isdefaulted)
2807
-
2808
2710
  assert_equal(monthly_mults, pl.monthly_multipliers)
2809
- assert_equal(isdefaulted, pl.monthly_multipliers_isdefaulted)
2810
2711
  end
2811
2712
 
2812
- def _test_default_fuel_load_values(hpxml, isdefaulted, load_type, therm_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2713
+ def _test_default_fuel_load_values(hpxml, load_type, therm_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
2813
2714
  fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == load_type }[0]
2814
2715
 
2815
2716
  assert_in_epsilon(therm_per_year, fl.therm_per_year, 0.01)
2816
- assert_equal(isdefaulted, fl.therm_per_year_isdefaulted)
2817
-
2818
2717
  assert_equal(usage_multiplier, fl.usage_multiplier)
2819
- assert_equal(isdefaulted, fl.usage_multiplier_isdefaulted)
2820
-
2821
2718
  assert_in_epsilon(frac_sensible, fl.frac_sensible, 0.01)
2822
- assert_equal(isdefaulted, fl.frac_sensible_isdefaulted)
2823
-
2824
2719
  assert_in_epsilon(frac_latent, fl.frac_latent, 0.01)
2825
- assert_equal(isdefaulted, fl.frac_latent_isdefaulted)
2826
-
2827
2720
  assert_equal(weekday_sch, fl.weekday_fractions)
2828
- assert_equal(isdefaulted, fl.weekday_fractions_isdefaulted)
2829
-
2830
2721
  assert_equal(weekend_sch, fl.weekend_fractions)
2831
- assert_equal(isdefaulted, fl.weekend_fractions_isdefaulted)
2832
-
2833
2722
  assert_equal(monthly_mults, fl.monthly_multipliers)
2834
- assert_equal(isdefaulted, fl.monthly_multipliers_isdefaulted)
2835
2723
  end
2836
2724
 
2837
2725
  def _create_hpxml(hpxml_name)