urbanopt-cli 0.5.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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)