urbanopt-cli 0.5.1 → 0.5.2

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