urbanopt-cli 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +6 -5
  3. data/CHANGELOG.md +16 -2
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +8 -7
  6. data/LICENSE.md +18 -15
  7. data/README.md +2 -1
  8. data/Rakefile +2 -37
  9. data/example_files/Gemfile +10 -8
  10. data/example_files/mappers/Baseline.rb +170 -191
  11. data/example_files/mappers/ChilledWaterStorage.rb +8 -30
  12. data/example_files/mappers/ClassProject.rb +2 -27
  13. data/example_files/mappers/CreateBar.rb +2 -28
  14. data/example_files/mappers/EvCharging.rb +2 -27
  15. data/example_files/mappers/FlexibleHotWater.rb +2 -27
  16. data/example_files/mappers/Floorspace.rb +2 -27
  17. data/example_files/mappers/HighEfficiency.rb +2 -27
  18. data/example_files/mappers/HighEfficiencyCreateBar.rb +2 -27
  19. data/example_files/mappers/HighEfficiencyFloorspace.rb +2 -27
  20. data/example_files/mappers/PeakHoursMelsShedding.rb +4 -27
  21. data/example_files/mappers/PeakHoursThermostatAdjust.rb +4 -27
  22. data/example_files/mappers/ThermalStorage.rb +2 -28
  23. data/example_files/measures/BuildResidentialModel/measure.rb +30 -60
  24. data/example_files/measures/BuildResidentialModel/measure.xml +253 -84
  25. data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
  26. data/example_files/python_deps/dependencies.json +3 -3
  27. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
  28. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +28 -19
  29. data/example_files/resources/hpxml-measures/.gitignore +0 -997
  30. data/example_files/resources/hpxml-measures/.readthedocs.yml +9 -0
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +476 -230
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +244 -75
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +42 -15
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +24 -9
  35. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +11 -33
  36. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +23 -50
  37. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/README.md +2 -2
  38. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/constants.rb +119 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +67 -290
  40. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.md +6 -5
  41. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +78 -349
  42. data/example_files/resources/hpxml-measures/Changelog.md +80 -10
  43. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +212 -144
  44. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +164 -170
  45. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +238 -167
  46. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +1 -1
  47. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -4
  48. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +36 -6
  49. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +33 -0
  50. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  51. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +9 -7
  52. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +79 -61
  53. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +387 -124
  54. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +427 -196
  55. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +11515 -2
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/README.md +1 -0
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +224 -85
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +334 -319
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +572 -838
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +162 -68
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +4 -20
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +12 -10
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +34 -37
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +8 -101
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +31 -40
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -1
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-non-stochastic.csv +8761 -0
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-10-mins.csv +52561 -52561
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic.csv +8761 -8761
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +384 -155
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +1 -1
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/util.rb +2 -2
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +68 -90
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +34 -223
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -1
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +16 -4
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +94 -40
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +765 -302
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +119 -69
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +8 -8
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +51 -11
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +196 -9
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +36 -13
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -3
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +571 -61
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +190 -81
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +11 -11
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +188 -50
  92. data/example_files/resources/hpxml-measures/README.md +3 -3
  93. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +659 -815
  94. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +301 -1112
  95. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +605 -350
  96. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +18 -14
  97. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +15 -15
  98. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +13 -3
  99. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +3 -3
  100. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +894 -596
  101. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +127 -76
  102. data/example_files/resources/hpxml-measures/tasks.rb +185 -2802
  103. data/example_files/resources/hpxml-measures/workflow/hpxml_inputs.json +3401 -0
  104. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +0 -1
  105. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +0 -1
  106. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +0 -1
  107. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +0 -1
  108. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +0 -1
  109. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +1 -3
  110. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +0 -1
  111. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +1 -3
  112. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +0 -1
  113. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +1 -3
  114. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +0 -1
  115. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +0 -1
  116. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +0 -1
  117. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +0 -1
  118. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +0 -1
  119. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +3 -4
  120. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +17 -4
  121. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +2 -3
  122. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +3 -4
  123. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +3 -4
  124. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +4 -5
  125. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +3 -4
  126. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +3 -4
  127. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +3 -4
  128. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +3 -4
  129. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +1 -1
  130. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +1 -1
  131. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +1 -1
  132. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +1 -1
  133. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +0 -1
  134. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +4 -5
  135. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +3 -3
  136. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +3 -3
  137. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +3 -4
  138. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +3 -3
  139. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +3 -4
  140. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +3 -3
  141. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +3 -4
  142. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +3 -3
  143. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +3 -4
  144. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +0 -1
  145. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +0 -1
  146. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +0 -1
  147. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +0 -1
  148. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +0 -1
  149. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +1 -0
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +1 -0
  151. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +12 -8
  152. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +10 -40
  153. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +10 -40
  154. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +10 -40
  155. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +10 -40
  156. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +10 -40
  157. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +10 -40
  158. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +10 -40
  159. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +10 -40
  160. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +10 -40
  161. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +10 -40
  162. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +10 -40
  163. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +10 -40
  164. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +10 -40
  165. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +10 -40
  166. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +9 -39
  167. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +9 -39
  168. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +10 -40
  169. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +10 -40
  170. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +10 -40
  171. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +10 -40
  172. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +10 -40
  173. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-2stories.xml → base-bldgtype-attached-2stories.xml} +610 -639
  174. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-atticroof-cathedral.xml → base-bldgtype-attached-atticroof-cathedral.xml} +558 -587
  175. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-attached-infil-compartmentalization-test.xml +611 -0
  176. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached.xml → base-bldgtype-attached.xml} +610 -639
  177. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +10 -39
  178. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +10 -39
  179. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +10 -39
  180. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +10 -39
  181. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +10 -39
  182. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-infil-compartmentalization-test.xml +462 -0
  183. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-multifamily-calctype-operational.xml → base-bldgtype-multifamily-residents-1.xml} +453 -480
  184. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +10 -39
  185. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +10 -39
  186. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +10 -39
  187. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +10 -39
  188. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +10 -39
  189. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +10 -39
  190. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +10 -39
  191. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +10 -39
  192. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +10 -39
  193. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +10 -39
  194. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +10 -39
  195. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +10 -39
  196. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +10 -39
  197. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +10 -39
  198. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +10 -39
  199. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +11 -40
  200. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +10 -39
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +10 -39
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +10 -39
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +10 -39
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +10 -39
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +10 -39
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +15 -40
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +10 -39
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +10 -39
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +10 -39
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +10 -40
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +10 -40
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +10 -40
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +10 -40
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +10 -40
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +10 -40
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +10 -40
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +10 -40
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +10 -40
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +10 -40
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +10 -40
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +10 -40
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +10 -40
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +10 -40
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +10 -40
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +10 -40
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +10 -40
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +10 -40
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +10 -40
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +10 -40
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +10 -40
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +10 -40
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +10 -40
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +10 -40
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +10 -40
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +10 -40
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +10 -40
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +10 -40
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +10 -40
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +10 -40
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +10 -40
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +10 -40
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +10 -40
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +10 -40
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +10 -40
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +10 -40
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +10 -40
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +10 -40
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +10 -40
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +10 -40
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +10 -40
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +11 -43
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +10 -40
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +10 -40
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +10 -40
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +10 -40
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +10 -40
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +10 -40
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +10 -40
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +10 -40
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +10 -40
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +10 -40
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +10 -40
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +10 -40
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +10 -40
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +10 -40
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +10 -40
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +10 -40
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +10 -40
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +10 -40
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +19 -25
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +10 -40
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +10 -40
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +10 -40
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +10 -40
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +10 -40
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +10 -40
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +10 -40
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +18 -24
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +11 -41
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +11 -41
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +10 -40
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ela.xml +549 -0
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +13 -43
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +10 -40
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-cfm.xml +552 -0
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +10 -40
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +10 -40
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +17 -47
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +10 -40
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +10 -40
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +10 -40
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +10 -40
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +10 -40
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +10 -40
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +10 -40
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +10 -40
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +10 -40
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +10 -40
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading-seasons.xml +559 -0
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +10 -40
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +10 -40
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +10 -40
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +19 -25
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +10 -40
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +10 -40
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-insulation.xml +10 -40
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +10 -40
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +10 -40
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +10 -40
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +10 -40
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +10 -40
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +10 -40
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +10 -40
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +10 -40
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +10 -40
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +10 -40
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosized-backup.xml +557 -0
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +16 -41
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml} +552 -583
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +16 -41
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml → base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml} +562 -586
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +16 -41
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +16 -41
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +16 -41
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +587 -0
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +17 -42
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +16 -41
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +16 -41
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +16 -41
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +10 -40
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +10 -40
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +10 -40
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +10 -40
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +10 -40
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +10 -40
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +10 -40
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +10 -40
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +10 -40
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +10 -40
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +10 -40
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +10 -40
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +10 -40
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +10 -40
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +10 -40
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +10 -40
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +10 -40
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +10 -40
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +10 -40
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +10 -40
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +10 -40
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +11 -41
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +11 -41
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +11 -41
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted-backup-hardsized.xml +553 -0
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +11 -41
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +10 -40
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +10 -40
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +10 -40
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +10 -40
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +10 -40
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +10 -40
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +10 -40
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +10 -40
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +10 -40
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +10 -40
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +10 -40
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +10 -40
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +10 -40
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +10 -40
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +10 -40
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +10 -40
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +10 -40
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +10 -40
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +10 -40
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-baseboard.xml +519 -0
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +10 -40
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +10 -40
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +10 -40
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +16 -40
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +16 -40
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +16 -40
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +10 -40
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +10 -40
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +16 -40
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +16 -40
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +16 -40
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-sizing-controls.xml +566 -0
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +10 -40
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +10 -40
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +10 -40
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +10 -40
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +10 -40
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +10 -40
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only-pilot.xml +513 -0
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +10 -40
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +10 -40
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +10 -40
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +10 -40
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +10 -40
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +10 -40
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +10 -40
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +10 -40
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +16 -41
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-crankcase-heater-40w.xml +556 -0
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +10 -40
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +560 -0
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +17 -42
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +17 -42
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +17 -42
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +17 -42
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +10 -40
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +10 -40
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-buried.xml +555 -0
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-effective-rvalue.xml +553 -0
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +10 -40
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +10 -40
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +10 -40
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +10 -40
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -40
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +10 -40
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +10 -40
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +10 -40
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only-pilot-light.xml +506 -0
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +10 -40
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +10 -40
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +10 -40
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +10 -40
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +10 -40
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +10 -40
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +10 -40
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-pilot.xml +542 -0
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +10 -40
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +10 -40
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +10 -40
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +10 -40
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +10 -40
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +10 -40
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +10 -40
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +10 -40
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +10 -40
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +14 -41
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +14 -41
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +14 -41
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +10 -40
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +10 -40
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +10 -40
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +10 -40
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +10 -40
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +10 -40
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +14 -41
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +10 -40
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +10 -40
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +16 -41
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +16 -41
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +16 -41
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +525 -0
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +564 -0
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +16 -41
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +506 -0
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -41
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +10 -40
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +10 -40
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +10 -40
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +10 -40
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-natural-gas.xml +10 -40
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +10 -40
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +513 -0
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +16 -40
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +10 -40
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +10 -40
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +10 -40
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +10 -40
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +10 -40
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +16 -40
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +10 -40
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +10 -40
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +10 -40
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +10 -40
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +10 -40
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +10 -40
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +10 -40
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +10 -40
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +10 -40
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +11 -41
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +10 -40
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-kwh-per-year.xml +529 -0
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-mixed.xml +537 -0
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none-ceiling-fans.xml +516 -0
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -7
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +10 -40
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +10 -40
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +10 -40
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +10 -40
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +10 -40
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +10 -40
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +10 -40
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +10 -40
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +10 -40
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +10 -40
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +10 -40
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +12 -42
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +10 -40
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +10 -40
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -40
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +10 -40
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +10 -40
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +10 -40
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +10 -40
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +10 -40
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +10 -40
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +10 -40
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +10 -40
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +10 -40
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +14 -44
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +10 -40
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +10 -40
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +10 -38
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +10 -40
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +16 -42
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +16 -42
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +16 -42
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +10 -40
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +14 -37
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +16 -42
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +12 -42
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +12 -42
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +12 -42
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +10 -40
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +10 -38
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +10 -38
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +10 -40
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading-bldgtype-multifamily.xml +509 -0
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +10 -40
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +10 -40
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +10 -41
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +30 -138
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +16 -42
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +24 -26
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-round-trip-efficiency.xml +16 -42
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +16 -42
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +16 -42
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +18 -44
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +18 -44
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +18 -44
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +16 -42
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0-runperiod-1-month.xml +560 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0.xml +556 -0
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon.xml → base-residents-1-misc-loads-large-uncommon.xml} +616 -644
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon2.xml → base-residents-1-misc-loads-large-uncommon2.xml} +616 -644
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational.xml → base-residents-1.xml} +547 -575
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-defaults.xml → base-residents-5.xml} +515 -539
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +10 -40
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +10 -40
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml +565 -0
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-schedules-detailed-occupancy-smooth.xml → base-schedules-detailed-occupancy-stochastic-vacancy-year-round.xml} +563 -583
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +21 -41
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +10 -40
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +10 -40
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +10 -40
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +10 -40
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml +565 -0
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml +565 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +620 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy-year-round.xml +619 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +619 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +10 -38
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +10 -40
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +10 -40
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +10 -40
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +10 -40
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-temperature-capacitance-multiplier.xml +10 -40
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +10 -40
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +10 -40
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +10 -40
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-30-mins.xml +10 -40
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +10 -37
  577. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +16 -4
  578. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +16 -3
  579. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +16 -3
  580. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +16 -2
  581. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Long_Residence.xml +386 -0
  582. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Vatilo_Residence.xml +381 -0
  583. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Victor_Residence.xml +370 -0
  584. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +2 -2
  585. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +2 -5
  586. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +2 -5
  587. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +2 -5
  588. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +2 -5
  589. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +2 -5
  590. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +2 -5
  591. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +2 -5
  592. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +2 -5
  593. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +2 -5
  594. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +2 -5
  595. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +2 -5
  596. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +2 -5
  597. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +2 -5
  598. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +2 -5
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +2 -5
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +2 -12
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +2 -12
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +2 -5
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +2 -5
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +2 -5
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +2 -5
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +2 -5
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +2 -5
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -9
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -9
  610. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +475 -444
  611. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +475 -444
  612. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +177 -112
  613. data/example_files/resources/meta_measure.rb +2 -27
  614. data/example_files/xml_building/17/README.md +3 -3
  615. data/lib/uo_cli/version.rb +3 -38
  616. data/lib/uo_cli.rb +3 -38
  617. data/uo_cli.gemspec +6 -7
  618. metadata +70 -51
  619. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.json +0 -388
  620. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +0 -6136
  621. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +0 -4846
  622. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-smooth.csv +0 -8761
  623. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-vacancy.csv +0 -8761
  624. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +0 -35
  625. data/example_files/resources/hpxml-measures/weather/USA_CO_Colorado.Springs-Peterson.Field.724660_TMY3-cache.csv +0 -35
  626. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +0 -35
  627. data/example_files/resources/hpxml-measures/weather/USA_DE_Wilmington-New.Castle.County.AP.724089_TMY3-cache.csv +0 -35
  628. data/example_files/resources/hpxml-measures/weather/USA_FL_Miami.Intl.AP.722020_TMY3-cache.csv +0 -35
  629. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +0 -35
  630. data/example_files/resources/hpxml-measures/weather/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3-cache.csv +0 -35
  631. data/example_files/resources/hpxml-measures/weather/USA_MN_Duluth.Intl.AP.727450_TMY3-cache.csv +0 -35
  632. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +0 -35
  633. data/example_files/resources/hpxml-measures/weather/USA_NC_Charlotte-Douglas.Intl.AP.723140_TMY3-cache.csv +0 -35
  634. data/example_files/resources/hpxml-measures/weather/USA_NJ_Cape.May.County.AP.745966_TMY3-cache.csv +0 -35
  635. data/example_files/resources/hpxml-measures/weather/USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3-cache.csv +0 -35
  636. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +0 -35
  637. data/example_files/resources/hpxml-measures/weather/USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3-cache.csv +0 -35
  638. data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +0 -35
  639. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +0 -35
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +0 -2508
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +0 -2508
@@ -47,13 +47,25 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
47
47
  hpxml.header.allow_increased_fixed_capacities = true
48
48
  hpxml.header.state_code = 'CA'
49
49
  hpxml.header.time_zone_utc_offset = -8
50
- hpxml.header.occupancy_calculation_type = HPXML::OccupancyCalculationTypeOperational
51
50
  hpxml.header.temperature_capacitance_multiplier = 1.5
52
51
  hpxml.header.natvent_days_per_week = 7
53
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
54
- hpxml_default = _test_measure()
55
- _test_default_header_values(hpxml_default, 30, 2, 2, 11, 11, 2009, false, 3, 3, 10, 10, HPXML::HeatPumpSizingMaxLoad,
56
- true, 'CA', -8, HPXML::OccupancyCalculationTypeOperational, 1.5, 7)
52
+ hpxml.header.unavailable_periods.add(column_name: 'Power Outage', begin_month: 1, begin_day: 1, begin_hour: 3, end_month: 12, end_day: 31, end_hour: 4, natvent_availability: HPXML::ScheduleUnavailable)
53
+ hpxml.header.shading_summer_begin_month = 2
54
+ hpxml.header.shading_summer_begin_day = 3
55
+ hpxml.header.shading_summer_end_month = 4
56
+ hpxml.header.shading_summer_end_day = 5
57
+ hpxml.header.manualj_heating_design_temp = 0.0
58
+ hpxml.header.manualj_cooling_design_temp = 100.0
59
+ hpxml.header.manualj_heating_setpoint = 68.0
60
+ hpxml.header.manualj_cooling_setpoint = 78.0
61
+ hpxml.header.manualj_humidity_setpoint = 0.44
62
+ hpxml.header.manualj_internal_loads_sensible = 1600.0
63
+ hpxml.header.manualj_internal_loads_latent = 60.0
64
+ hpxml.header.manualj_num_occupants = 8
65
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
66
+ hpxml_default = _test_measure()
67
+ _test_default_header_values(hpxml_default, 30, 2, 2, 11, 11, 2009, false, 3, 3, 10, 10, HPXML::HeatPumpSizingMaxLoad, true, 'CA',
68
+ -8, 1.5, 7, 3, 4, HPXML::ScheduleUnavailable, 2, 3, 4, 5, 0.0, 100.0, 68.0, 78.0, 0.44, 1600.0, 60.0, 8)
57
69
 
58
70
  # Test defaults - DST not in weather file
59
71
  hpxml.header.timestep = nil
@@ -71,13 +83,27 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
71
83
  hpxml.header.allow_increased_fixed_capacities = nil
72
84
  hpxml.header.state_code = nil
73
85
  hpxml.header.time_zone_utc_offset = nil
74
- hpxml.header.occupancy_calculation_type = nil
75
86
  hpxml.header.temperature_capacitance_multiplier = nil
76
87
  hpxml.header.natvent_days_per_week = nil
77
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
78
- hpxml_default = _test_measure()
79
- _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, HPXML::HeatPumpSizingHERS,
80
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
88
+ hpxml.header.unavailable_periods[-1].begin_hour = nil
89
+ hpxml.header.unavailable_periods[-1].end_hour = nil
90
+ hpxml.header.unavailable_periods[-1].natvent_availability = nil
91
+ hpxml.header.shading_summer_begin_month = nil
92
+ hpxml.header.shading_summer_begin_day = nil
93
+ hpxml.header.shading_summer_end_month = nil
94
+ hpxml.header.shading_summer_end_day = nil
95
+ hpxml.header.manualj_heating_design_temp = nil
96
+ hpxml.header.manualj_cooling_design_temp = nil
97
+ hpxml.header.manualj_heating_setpoint = nil
98
+ hpxml.header.manualj_cooling_setpoint = nil
99
+ hpxml.header.manualj_humidity_setpoint = nil
100
+ hpxml.header.manualj_internal_loads_sensible = nil
101
+ hpxml.header.manualj_internal_loads_latent = nil
102
+ hpxml.header.manualj_num_occupants = nil
103
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
104
+ hpxml_default = _test_measure()
105
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, HPXML::HeatPumpSizingHERS, false, 'CO',
106
+ -7, 1.0, 3, 0, 24, HPXML::ScheduleRegular, 5, 1, 10, 31, 6.8, 91.8, 70.0, 75.0, 0.5, 2400.0, 0.0, 4)
81
107
 
82
108
  # Test defaults - DST in weather file
83
109
  hpxml = _create_hpxml('base-location-AMY-2012.xml')
@@ -96,21 +122,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
96
122
  hpxml.header.allow_increased_fixed_capacities = nil
97
123
  hpxml.header.state_code = nil
98
124
  hpxml.header.time_zone_utc_offset = nil
99
- hpxml.header.occupancy_calculation_type = nil
100
125
  hpxml.header.temperature_capacitance_multiplier = nil
126
+ hpxml.header.shading_summer_begin_month = nil
127
+ hpxml.header.shading_summer_begin_day = nil
128
+ hpxml.header.shading_summer_end_month = nil
129
+ hpxml.header.shading_summer_end_day = nil
101
130
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
102
131
  hpxml_default = _test_measure()
103
- _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil,
104
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
132
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil, false, 'CO',
133
+ -7, 1.0, 3, nil, nil, nil, 5, 1, 9, 30, 10.2, 91.4, 70.0, 75.0, 0.5, 2400.0, 0.0, 4)
105
134
 
106
135
  # Test defaults - calendar year override by AMY year
107
136
  hpxml.header.sim_calendar_year = 2020
108
137
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
109
138
  hpxml_default = _test_measure()
110
- _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil,
111
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
139
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil, false, 'CO',
140
+ -7, 1.0, 3, nil, nil, nil, 5, 1, 9, 30, 10.2, 91.4, 70.0, 75.0, 0.5, 2400.0, 0.0, 4)
112
141
 
113
- # Test defaults - invalid state code
142
+ # Test defaults - southern hemisphere, invalid state code
114
143
  hpxml = _create_hpxml('base-location-capetown-zaf.xml')
115
144
  hpxml.header.timestep = nil
116
145
  hpxml.header.sim_begin_month = nil
@@ -127,12 +156,15 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
127
156
  hpxml.header.allow_increased_fixed_capacities = nil
128
157
  hpxml.header.state_code = nil
129
158
  hpxml.header.time_zone_utc_offset = nil
130
- hpxml.header.occupancy_calculation_type = nil
131
159
  hpxml.header.temperature_capacitance_multiplier = nil
160
+ hpxml.header.shading_summer_begin_month = nil
161
+ hpxml.header.shading_summer_begin_day = nil
162
+ hpxml.header.shading_summer_end_month = nil
163
+ hpxml.header.shading_summer_end_day = nil
132
164
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
133
165
  hpxml_default = _test_measure()
134
- _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, nil,
135
- false, nil, 2, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
166
+ _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, nil, false, nil,
167
+ 2, 1.0, 3, nil, nil, nil, 12, 1, 4, 30, 41.0, 84.4, 70.0, 75.0, 0.5, 2400.0, 0.0, 4)
136
168
  end
137
169
 
138
170
  def test_emissions_factors
@@ -329,77 +361,74 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
329
361
  def test_occupancy
330
362
  # Test inputs not overridden by defaults
331
363
  hpxml = _create_hpxml('base.xml')
332
- hpxml.building_occupancy.number_of_residents = 1
333
364
  hpxml.building_occupancy.weekday_fractions = ConstantDaySchedule
334
365
  hpxml.building_occupancy.weekend_fractions = ConstantDaySchedule
335
366
  hpxml.building_occupancy.monthly_multipliers = ConstantMonthSchedule
336
367
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
337
368
  hpxml_default = _test_measure()
338
- _test_default_occupancy_values(hpxml_default, 1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
369
+ _test_default_occupancy_values(hpxml_default, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
339
370
 
340
371
  # Test defaults
341
- hpxml.building_occupancy.number_of_residents = nil
342
372
  hpxml.building_occupancy.weekday_fractions = nil
343
373
  hpxml.building_occupancy.weekend_fractions = nil
344
374
  hpxml.building_occupancy.monthly_multipliers = nil
345
375
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
346
376
  hpxml_default = _test_measure()
347
- _test_default_occupancy_values(hpxml_default, 3, Schedule.OccupantsWeekdayFractions, Schedule.OccupantsWeekendFractions, Schedule.OccupantsMonthlyMultipliers)
377
+ _test_default_occupancy_values(hpxml_default, Schedule.OccupantsWeekdayFractions, Schedule.OccupantsWeekendFractions, Schedule.OccupantsMonthlyMultipliers)
348
378
  end
349
379
 
350
380
  def test_building_construction
351
381
  # Test inputs not overridden by defaults
352
- hpxml = _create_hpxml('base-enclosure-infil-flue.xml')
382
+ hpxml = _create_hpxml('base.xml')
353
383
  hpxml.building_construction.number_of_bathrooms = 4
354
384
  hpxml.building_construction.conditioned_building_volume = 20000
355
385
  hpxml.building_construction.average_ceiling_height = 7
356
386
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
357
387
  hpxml_default = _test_measure()
358
- _test_default_building_construction_values(hpxml_default, 20000, 7, true, 4)
388
+ _test_default_building_construction_values(hpxml_default, 20000, 7, 4)
359
389
 
360
390
  # Test defaults
361
391
  hpxml.building_construction.conditioned_building_volume = nil
362
392
  hpxml.building_construction.average_ceiling_height = nil
363
- hpxml.building_construction.has_flue_or_chimney = nil
364
393
  hpxml.building_construction.number_of_bathrooms = nil
365
394
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
366
395
  hpxml_default = _test_measure()
367
- _test_default_building_construction_values(hpxml_default, 21600, 8, false, 2)
396
+ _test_default_building_construction_values(hpxml_default, 21600, 8, 2)
368
397
 
369
398
  # Test defaults w/ average ceiling height
370
399
  hpxml.building_construction.conditioned_building_volume = nil
371
400
  hpxml.building_construction.average_ceiling_height = 10
372
401
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
373
402
  hpxml_default = _test_measure()
374
- _test_default_building_construction_values(hpxml_default, 27000, 10, false, 2)
403
+ _test_default_building_construction_values(hpxml_default, 27000, 10, 2)
375
404
 
376
405
  # Test defaults w/ conditioned building volume
377
406
  hpxml.building_construction.conditioned_building_volume = 20000
378
407
  hpxml.building_construction.average_ceiling_height = nil
379
408
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
380
409
  hpxml_default = _test_measure()
381
- _test_default_building_construction_values(hpxml_default, 20000, 7.4, false, 2)
410
+ _test_default_building_construction_values(hpxml_default, 20000, 7.4, 2)
382
411
 
383
412
  # Test defaults w/ infiltration volume
384
413
  hpxml.building_construction.conditioned_building_volume = nil
385
414
  hpxml.air_infiltration_measurements[0].infiltration_volume = 25650
386
415
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
387
416
  hpxml_default = _test_measure()
388
- _test_default_building_construction_values(hpxml_default, 21600, 8, false, 2)
417
+ _test_default_building_construction_values(hpxml_default, 21600, 8, 2)
389
418
 
390
419
  # Test defaults w/ infiltration volume
391
420
  hpxml.building_construction.conditioned_building_volume = nil
392
421
  hpxml.air_infiltration_measurements[0].infiltration_volume = 18000
393
422
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
394
423
  hpxml_default = _test_measure()
395
- _test_default_building_construction_values(hpxml_default, 18000, 6.67, false, 2)
424
+ _test_default_building_construction_values(hpxml_default, 18000, 6.67, 2)
396
425
 
397
426
  # Test defaults w/ conditioned crawlspace
398
427
  hpxml = _create_hpxml('base-foundation-conditioned-crawlspace.xml')
399
428
  hpxml.building_construction.conditioned_building_volume = nil
400
429
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
401
430
  hpxml_default = _test_measure()
402
- _test_default_building_construction_values(hpxml_default, 16200, 8, false, 2)
431
+ _test_default_building_construction_values(hpxml_default, 16200, 8, 2)
403
432
  end
404
433
 
405
434
  def test_climate_and_risk_zones
@@ -428,29 +457,80 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
428
457
  # Test inputs not overridden by defaults
429
458
  hpxml = _create_hpxml('base.xml')
430
459
  hpxml.air_infiltration_measurements[0].infiltration_volume = 25000
460
+ hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space = true
431
461
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
432
462
  hpxml_default = _test_measure()
433
- _test_default_infiltration_values(hpxml_default.air_infiltration_measurements[0], 25000)
463
+ _test_default_infiltration_values(hpxml_default, 25000, true)
434
464
 
435
465
  # Test defaults w/ conditioned basement
436
466
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
467
+ hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space = nil
437
468
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
438
469
  hpxml_default = _test_measure()
439
- _test_default_infiltration_values(hpxml_default.air_infiltration_measurements[0], 2700 * 8)
470
+ _test_default_infiltration_values(hpxml_default, 2700 * 8, false)
471
+
472
+ # Test defaults w/ conditioned basement and atmospheric water heater w/ flue
473
+ hpxml.water_heating_systems[0].fuel_type = HPXML::FuelTypeNaturalGas
474
+ hpxml.water_heating_systems[0].energy_factor = 0.6
475
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
476
+ hpxml_default = _test_measure()
477
+ _test_default_infiltration_values(hpxml_default, 2700 * 8, true)
440
478
 
441
479
  # Test defaults w/o conditioned basement
442
480
  hpxml = _create_hpxml('base-foundation-slab.xml')
443
481
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
444
482
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
445
483
  hpxml_default = _test_measure()
446
- _test_default_infiltration_values(hpxml_default.air_infiltration_measurements[0], 1350 * 8)
484
+ _test_default_infiltration_values(hpxml_default, 1350 * 8, false)
447
485
 
448
486
  # Test defaults w/ conditioned crawlspace
449
487
  hpxml = _create_hpxml('base-foundation-conditioned-crawlspace.xml')
450
488
  hpxml.air_infiltration_measurements[0].infiltration_volume = nil
451
489
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
452
490
  hpxml_default = _test_measure()
453
- _test_default_infiltration_values(hpxml_default.air_infiltration_measurements[0], 1350 * 12)
491
+ _test_default_infiltration_values(hpxml_default, 1350 * 12, false)
492
+ end
493
+
494
+ def test_infiltration_compartmentaliztion_test_adjustment
495
+ # Test single-family detached
496
+ hpxml = _create_hpxml('base.xml')
497
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitTotal
498
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
499
+ hpxml_default = _test_measure()
500
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], nil)
501
+
502
+ # Test single-family attached not overridden by defaults
503
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
504
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitTotal
505
+ hpxml.air_infiltration_measurements[0].a_ext = 0.5
506
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
507
+ hpxml_default = _test_measure()
508
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], 0.5)
509
+
510
+ # Test single-family attached defaults
511
+ hpxml.air_infiltration_measurements[0].a_ext = nil
512
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
513
+ hpxml_default = _test_measure()
514
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], 0.840)
515
+
516
+ hpxml.attics[0].within_infiltration_volume = true
517
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
518
+ hpxml_default = _test_measure()
519
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], 0.817)
520
+
521
+ # Test multifamily not overridden by defaults
522
+ hpxml = _create_hpxml('base-bldgtype-multifamily.xml')
523
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitTotal
524
+ hpxml.air_infiltration_measurements[0].a_ext = 0.5
525
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
526
+ hpxml_default = _test_measure()
527
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], 0.5)
528
+
529
+ # Test multifamily defaults
530
+ hpxml.air_infiltration_measurements[0].a_ext = nil
531
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
532
+ hpxml_default = _test_measure()
533
+ _test_default_infiltration_compartmentalization_test_values(hpxml_default.air_infiltration_measurements[0], 0.247)
454
534
  end
455
535
 
456
536
  def test_attics
@@ -1044,16 +1124,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1044
1124
  hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
1045
1125
  hpxml.cooling_systems[0].cooling_capacity = 12345
1046
1126
  hpxml.cooling_systems[0].cooling_efficiency_seer = 12.0
1127
+ hpxml.cooling_systems[0].crankcase_heater_watts = 40.0
1047
1128
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1048
1129
  hpxml_default = _test_measure()
1049
- _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0)
1130
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0, 40.0)
1050
1131
 
1051
1132
  # Test defaults - SEER2
1052
1133
  hpxml.cooling_systems[0].cooling_efficiency_seer = nil
1053
1134
  hpxml.cooling_systems[0].cooling_efficiency_seer2 = 11.4
1054
1135
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1055
1136
  hpxml_default = _test_measure()
1056
- _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0)
1137
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0, 40.0)
1057
1138
 
1058
1139
  # Test defaults
1059
1140
  hpxml.cooling_systems[0].cooling_shr = nil
@@ -1062,9 +1143,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1062
1143
  hpxml.cooling_systems[0].charge_defect_ratio = nil
1063
1144
  hpxml.cooling_systems[0].airflow_defect_ratio = nil
1064
1145
  hpxml.cooling_systems[0].cooling_capacity = nil
1146
+ hpxml.cooling_systems[0].crankcase_heater_watts = nil
1065
1147
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1066
1148
  hpxml_default = _test_measure()
1067
- _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, 12.0)
1149
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, 12.0, 50.0)
1068
1150
  end
1069
1151
 
1070
1152
  def test_room_air_conditioners
@@ -1072,16 +1154,18 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1072
1154
  hpxml = _create_hpxml('base-hvac-room-ac-only.xml')
1073
1155
  hpxml.cooling_systems[0].cooling_shr = 0.88
1074
1156
  hpxml.cooling_systems[0].cooling_capacity = 12345
1157
+ hpxml.cooling_systems[0].crankcase_heater_watts = 40.0
1075
1158
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1076
1159
  hpxml_default = _test_measure()
1077
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.88, 12345)
1160
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.88, 12345, 40.0)
1078
1161
 
1079
1162
  # Test defaults
1080
1163
  hpxml.cooling_systems[0].cooling_shr = nil
1081
1164
  hpxml.cooling_systems[0].cooling_capacity = nil
1165
+ hpxml.cooling_systems[0].crankcase_heater_watts = nil
1082
1166
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1083
1167
  hpxml_default = _test_measure()
1084
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil)
1168
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil, 0.0)
1085
1169
  end
1086
1170
 
1087
1171
  def test_evaporative_coolers
@@ -1107,9 +1191,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1107
1191
  hpxml.cooling_systems[0].charge_defect_ratio = -0.11
1108
1192
  hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
1109
1193
  hpxml.cooling_systems[0].cooling_capacity = 12345
1194
+ hpxml.cooling_systems[0].crankcase_heater_watts = 40.0
1110
1195
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1111
1196
  hpxml_default = _test_measure()
1112
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.78, 0.66, -0.11, -0.22, 12345, 19.0)
1197
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.78, 0.66, -0.11, -0.22, 12345, 19.0, 40.0)
1113
1198
 
1114
1199
  # Test defaults
1115
1200
  hpxml.cooling_systems[0].cooling_shr = nil
@@ -1117,22 +1202,23 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1117
1202
  hpxml.cooling_systems[0].charge_defect_ratio = nil
1118
1203
  hpxml.cooling_systems[0].airflow_defect_ratio = nil
1119
1204
  hpxml.cooling_systems[0].cooling_capacity = nil
1205
+ hpxml.cooling_systems[0].crankcase_heater_watts = nil
1120
1206
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1121
1207
  hpxml_default = _test_measure()
1122
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.18, 0, 0, nil, 19.0)
1208
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.18, 0, 0, nil, 19.0, 50.0)
1123
1209
 
1124
1210
  # Test defaults w/ ductless
1125
1211
  hpxml.cooling_systems[0].distribution_system.delete
1126
1212
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1127
1213
  hpxml_default = _test_measure()
1128
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 19.0)
1214
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 19.0, 50.0)
1129
1215
 
1130
1216
  # Test defaults w/ ductless - SEER2
1131
1217
  hpxml.cooling_systems[0].cooling_efficiency_seer = nil
1132
1218
  hpxml.cooling_systems[0].cooling_efficiency_seer2 = 13.3
1133
1219
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1134
1220
  hpxml_default = _test_measure()
1135
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 13.3)
1221
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 13.3, 50.0)
1136
1222
  end
1137
1223
 
1138
1224
  def test_ptac
@@ -1140,16 +1226,18 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1140
1226
  hpxml = _create_hpxml('base-hvac-ptac-with-heating-electricity.xml')
1141
1227
  hpxml.cooling_systems[0].cooling_shr = 0.75
1142
1228
  hpxml.cooling_systems[0].cooling_capacity = 12345
1229
+ hpxml.cooling_systems[0].crankcase_heater_watts = 40.0
1143
1230
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1144
1231
  hpxml_default = _test_measure()
1145
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.75, 12345)
1232
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.75, 12345, 40.0)
1146
1233
 
1147
1234
  # Test defaults
1148
1235
  hpxml.cooling_systems[0].cooling_shr = nil
1149
1236
  hpxml.cooling_systems[0].cooling_capacity = nil
1237
+ hpxml.cooling_systems[0].crankcase_heater_watts = nil
1150
1238
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1151
1239
  hpxml_default = _test_measure()
1152
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil)
1240
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil, 0.0)
1153
1241
  end
1154
1242
 
1155
1243
  def test_furnaces
@@ -1158,17 +1246,26 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1158
1246
  hpxml.heating_systems[0].fan_watts_per_cfm = 0.66
1159
1247
  hpxml.heating_systems[0].airflow_defect_ratio = -0.22
1160
1248
  hpxml.heating_systems[0].heating_capacity = 12345
1249
+ hpxml.heating_systems[0].pilot_light = true
1250
+ hpxml.heating_systems[0].pilot_light_btuh = 999
1161
1251
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1162
1252
  hpxml_default = _test_measure()
1163
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.66, -0.22, 12345)
1253
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.66, -0.22, 12345, true, 999)
1164
1254
 
1165
1255
  # Test defaults
1166
1256
  hpxml.heating_systems[0].fan_watts_per_cfm = nil
1167
1257
  hpxml.heating_systems[0].airflow_defect_ratio = nil
1168
1258
  hpxml.heating_systems[0].heating_capacity = nil
1259
+ hpxml.heating_systems[0].pilot_light_btuh = nil
1260
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1261
+ hpxml_default = _test_measure()
1262
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.375, 0, nil, true, 500)
1263
+
1264
+ # Test defaults w/o pilot
1265
+ hpxml.heating_systems[0].pilot_light = nil
1169
1266
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1170
1267
  hpxml_default = _test_measure()
1171
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.375, 0, nil)
1268
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.375, 0, nil, false, nil)
1172
1269
 
1173
1270
  # Test defaults w/ gravity distribution system
1174
1271
  hpxml = _create_hpxml('base-hvac-furnace-gas-only.xml')
@@ -1178,7 +1275,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1178
1275
  hpxml.heating_systems[0].heating_capacity = nil
1179
1276
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1180
1277
  hpxml_default = _test_measure()
1181
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.0, 0, nil)
1278
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.0, 0, nil, false, nil)
1182
1279
  end
1183
1280
 
1184
1281
  def test_wall_furnaces
@@ -1196,6 +1293,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1196
1293
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1197
1294
  hpxml_default = _test_measure()
1198
1295
  _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 0, nil)
1296
+
1297
+ # Test defaults w/o pilot
1298
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1299
+ hpxml_default = _test_measure()
1300
+ _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 0, nil)
1199
1301
  end
1200
1302
 
1201
1303
  def test_floor_furnaces
@@ -1203,15 +1305,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1203
1305
  hpxml = _create_hpxml('base-hvac-floor-furnace-propane-only.xml')
1204
1306
  hpxml.heating_systems[0].fan_watts = 22
1205
1307
  hpxml.heating_systems[0].heating_capacity = 12345
1308
+ hpxml.heating_systems[0].pilot_light = true
1309
+ hpxml.heating_systems[0].pilot_light_btuh = 999
1206
1310
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1207
1311
  hpxml_default = _test_measure()
1208
- _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 22, 12345)
1312
+ _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 22, 12345, true, 999)
1209
1313
 
1210
1314
  # Test defaults
1211
1315
  hpxml.heating_systems[0].fan_watts = nil
1316
+ hpxml.heating_systems[0].pilot_light_btuh = nil
1212
1317
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1213
1318
  hpxml_default = _test_measure()
1214
- _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 0, nil)
1319
+ _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 0, nil, true, 500)
1320
+
1321
+ # Test defaults w/o pilot
1322
+ hpxml.heating_systems[0].pilot_light = nil
1323
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1324
+ hpxml_default = _test_measure()
1325
+ _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 0, nil, false, nil)
1215
1326
  end
1216
1327
 
1217
1328
  def test_boilers
@@ -1219,16 +1330,19 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1219
1330
  hpxml = _create_hpxml('base-hvac-boiler-gas-only.xml')
1220
1331
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
1221
1332
  hpxml.heating_systems[0].heating_capacity = 12345
1333
+ hpxml.heating_systems[0].pilot_light = true
1334
+ hpxml.heating_systems[0].pilot_light_btuh = 999
1222
1335
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1223
1336
  hpxml_default = _test_measure()
1224
- _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, 12345)
1337
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, 12345, true, 999)
1225
1338
 
1226
1339
  # Test defaults w/ in-unit boiler
1227
1340
  hpxml.heating_systems[0].electric_auxiliary_energy = nil
1228
1341
  hpxml.heating_systems[0].heating_capacity = nil
1342
+ hpxml.heating_systems[0].pilot_light_btuh = nil
1229
1343
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1230
1344
  hpxml_default = _test_measure()
1231
- _test_default_boiler_values(hpxml_default.heating_systems[0], 170.0, nil)
1345
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 170.0, nil, true, 500)
1232
1346
 
1233
1347
  # Test inputs not overridden by defaults (shared boiler)
1234
1348
  hpxml = _create_hpxml('base-bldgtype-multifamily-shared-boiler-only-baseboard.xml')
@@ -1236,13 +1350,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1236
1350
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
1237
1351
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1238
1352
  hpxml_default = _test_measure()
1239
- _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, nil)
1240
-
1241
- # Test defaults w/ shared boiler
1242
- hpxml.heating_systems[0].electric_auxiliary_energy = nil
1243
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1244
- hpxml_default = _test_measure()
1245
- _test_default_boiler_values(hpxml_default.heating_systems[0], 220.0, nil)
1353
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, nil, false, nil)
1246
1354
  end
1247
1355
 
1248
1356
  def test_stoves
@@ -1250,16 +1358,25 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1250
1358
  hpxml = _create_hpxml('base-hvac-stove-oil-only.xml')
1251
1359
  hpxml.heating_systems[0].fan_watts = 22
1252
1360
  hpxml.heating_systems[0].heating_capacity = 12345
1361
+ hpxml.heating_systems[0].pilot_light = true
1362
+ hpxml.heating_systems[0].pilot_light_btuh = 999
1253
1363
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1254
1364
  hpxml_default = _test_measure()
1255
- _test_default_stove_values(hpxml_default.heating_systems[0], 22, 12345)
1365
+ _test_default_stove_values(hpxml_default.heating_systems[0], 22, 12345, true, 999)
1256
1366
 
1257
1367
  # Test defaults
1258
1368
  hpxml.heating_systems[0].fan_watts = nil
1259
1369
  hpxml.heating_systems[0].heating_capacity = nil
1370
+ hpxml.heating_systems[0].pilot_light_btuh = nil
1371
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1372
+ hpxml_default = _test_measure()
1373
+ _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil, true, 500)
1374
+
1375
+ # Test defaults w/o pilot
1376
+ hpxml.heating_systems[0].pilot_light = nil
1260
1377
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1261
1378
  hpxml_default = _test_measure()
1262
- _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil)
1379
+ _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil, false, nil)
1263
1380
  end
1264
1381
 
1265
1382
  def test_portable_heaters
@@ -1301,16 +1418,25 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1301
1418
  hpxml = _create_hpxml('base-hvac-fireplace-wood-only.xml')
1302
1419
  hpxml.heating_systems[0].fan_watts = 22
1303
1420
  hpxml.heating_systems[0].heating_capacity = 12345
1421
+ hpxml.heating_systems[0].pilot_light = true
1422
+ hpxml.heating_systems[0].pilot_light_btuh = 999
1304
1423
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1305
1424
  hpxml_default = _test_measure()
1306
- _test_default_fireplace_values(hpxml_default.heating_systems[0], 22, 12345)
1425
+ _test_default_fireplace_values(hpxml_default.heating_systems[0], 22, 12345, true, 999)
1307
1426
 
1308
1427
  # Test defaults
1309
1428
  hpxml.heating_systems[0].fan_watts = nil
1310
1429
  hpxml.heating_systems[0].heating_capacity = nil
1430
+ hpxml.heating_systems[0].pilot_light_btuh = nil
1431
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1432
+ hpxml_default = _test_measure()
1433
+ _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil, true, 500)
1434
+
1435
+ # Test defaults w/o pilot
1436
+ hpxml.heating_systems[0].pilot_light = nil
1311
1437
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1312
1438
  hpxml_default = _test_measure()
1313
- _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil)
1439
+ _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil, false, nil)
1314
1440
  end
1315
1441
 
1316
1442
  def test_air_source_heat_pumps
@@ -1323,14 +1449,23 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1323
1449
  hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
1324
1450
  hpxml.heat_pumps[0].cooling_capacity = 12345
1325
1451
  hpxml.heat_pumps[0].heating_capacity = 23456
1326
- hpxml.heat_pumps[0].heating_capacity_17F = 9876
1327
1452
  hpxml.heat_pumps[0].backup_heating_capacity = 34567
1328
1453
  hpxml.heat_pumps[0].cooling_efficiency_seer = 14.0
1329
1454
  hpxml.heat_pumps[0].heating_efficiency_hspf = 8.0
1330
- hpxml.heat_pumps[0].backup_heating_lockout_temp = 20.0
1455
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = 0.1
1456
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = 2.0
1457
+ hpxml.heat_pumps[0].crankcase_heater_watts = 40.0
1331
1458
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1332
1459
  hpxml_default = _test_measure()
1333
- _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, 20.0)
1460
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, nil, 34567, 14.0, 8.0, 0.1, 2.0, 40.0)
1461
+
1462
+ # Test w/ heating capacity 17F
1463
+ hpxml.heat_pumps[0].heating_capacity_17F = 9876
1464
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = nil
1465
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = nil
1466
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1467
+ hpxml_default = _test_measure()
1468
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0)
1334
1469
 
1335
1470
  # Test defaults - SEER2/HSPF2
1336
1471
  hpxml.heat_pumps[0].cooling_efficiency_seer = nil
@@ -1339,7 +1474,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1339
1474
  hpxml.heat_pumps[0].heating_efficiency_hspf2 = 6.8
1340
1475
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1341
1476
  hpxml_default = _test_measure()
1342
- _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, 20.0)
1477
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, nil, nil, 40.0)
1343
1478
 
1344
1479
  # Test defaults
1345
1480
  hpxml.heat_pumps[0].cooling_shr = nil
@@ -1351,10 +1486,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1351
1486
  hpxml.heat_pumps[0].heating_capacity = nil
1352
1487
  hpxml.heat_pumps[0].heating_capacity_17F = nil
1353
1488
  hpxml.heat_pumps[0].backup_heating_capacity = nil
1354
- hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1489
+ hpxml.heat_pumps[0].crankcase_heater_watts = nil
1355
1490
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1356
1491
  hpxml_default = _test_measure()
1357
- _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil, 14.0, 8.0, 40.0)
1492
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil, 14.0, 8.0, 0.425, 5.0, 50.0)
1358
1493
  end
1359
1494
 
1360
1495
  def test_pthp
@@ -1363,20 +1498,31 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1363
1498
  hpxml.heat_pumps[0].cooling_shr = 0.88
1364
1499
  hpxml.heat_pumps[0].cooling_capacity = 12345
1365
1500
  hpxml.heat_pumps[0].heating_capacity = 23456
1366
- hpxml.heat_pumps[0].backup_heating_lockout_temp = 20.0
1501
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = 0.1
1502
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = 2.0
1503
+ hpxml.heat_pumps[0].crankcase_heater_watts = 40.0
1367
1504
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1368
1505
  hpxml_default = _test_measure()
1369
- _test_default_pthp_values(hpxml_default.heat_pumps[0], 0.88, 12345, 23456, 20.0)
1506
+ _test_default_pthp_values(hpxml_default.heat_pumps[0], 0.88, 12345, 23456, nil, 0.1, 2.0, 40.0)
1507
+
1508
+ # Test w/ heating capacity 17F
1509
+ hpxml.heat_pumps[0].heating_capacity_17F = 9876
1510
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = nil
1511
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = nil
1512
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1513
+ hpxml_default = _test_measure()
1514
+ _test_default_pthp_values(hpxml_default.heat_pumps[0], 0.88, 12345, 23456, 9876, nil, nil, 40.0)
1370
1515
 
1371
1516
  # Test defaults
1372
1517
  hpxml.heat_pumps[0].cooling_shr = nil
1373
1518
  hpxml.heat_pumps[0].cooling_capacity = nil
1374
1519
  hpxml.heat_pumps[0].heating_capacity = nil
1375
1520
  hpxml.heat_pumps[0].backup_heating_capacity = nil
1376
- hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1521
+ hpxml.heat_pumps[0].heating_capacity_17F = nil
1522
+ hpxml.heat_pumps[0].crankcase_heater_watts = nil
1377
1523
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1378
1524
  hpxml_default = _test_measure()
1379
- _test_default_pthp_values(hpxml_default.heat_pumps[0], 0.65, nil, nil, 40.0)
1525
+ _test_default_pthp_values(hpxml_default.heat_pumps[0], 0.65, nil, nil, nil, 0.425, 5.0, 0.0)
1380
1526
  end
1381
1527
 
1382
1528
  def test_mini_split_heat_pumps
@@ -1388,12 +1534,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1388
1534
  hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
1389
1535
  hpxml.heat_pumps[0].cooling_capacity = 12345
1390
1536
  hpxml.heat_pumps[0].heating_capacity = 23456
1391
- hpxml.heat_pumps[0].heating_capacity_17F = 9876
1392
1537
  hpxml.heat_pumps[0].backup_heating_capacity = 34567
1393
- hpxml.heat_pumps[0].backup_heating_lockout_temp = 20.0
1538
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = 0.1
1539
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = 2.0
1540
+ hpxml.heat_pumps[0].crankcase_heater_watts = 40.0
1394
1541
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1395
1542
  hpxml_default = _test_measure()
1396
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 19.0, 10.0, 20.0)
1543
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, nil, 34567, 19.0, 10.0, 0.1, 2.0, 40.0)
1544
+
1545
+ # Test w/ heating capacity 17F
1546
+ hpxml.heat_pumps[0].heating_capacity_17F = 9876
1547
+ hpxml.heat_pumps[0].heating_capacity_retention_fraction = nil
1548
+ hpxml.heat_pumps[0].heating_capacity_retention_temp = nil
1549
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1550
+ hpxml_default = _test_measure()
1551
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 19.0, 10.0, nil, nil, 40.0)
1397
1552
 
1398
1553
  # Test defaults
1399
1554
  hpxml.heat_pumps[0].cooling_shr = nil
@@ -1404,16 +1559,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1404
1559
  hpxml.heat_pumps[0].heating_capacity = nil
1405
1560
  hpxml.heat_pumps[0].heating_capacity_17F = nil
1406
1561
  hpxml.heat_pumps[0].backup_heating_capacity = nil
1407
- hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1562
+ hpxml.heat_pumps[0].crankcase_heater_watts = nil
1408
1563
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1409
1564
  hpxml_default = _test_measure()
1410
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.18, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 40.0)
1565
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.18, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.5, 5.0, 50.0)
1411
1566
 
1412
- # Test defaults w/ ductless
1567
+ # Test defaults w/ ductless and no backup
1413
1568
  hpxml.heat_pumps[0].distribution_system.delete
1414
1569
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1415
1570
  hpxml_default = _test_measure()
1416
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 40.0)
1571
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 0.5, 5.0, 50.0)
1417
1572
 
1418
1573
  # Test defaults w/ ductless - SEER2/HSPF2
1419
1574
  hpxml.heat_pumps[0].cooling_efficiency_seer = nil
@@ -1422,7 +1577,78 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1422
1577
  hpxml.heat_pumps[0].heating_efficiency_hspf2 = 6.8
1423
1578
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1424
1579
  hpxml_default = _test_measure()
1425
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 13.3, 7.56, 40.0)
1580
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 13.3, 7.56, 0.5, 5.0, 50.0)
1581
+ end
1582
+
1583
+ def test_heat_pump_temperatures
1584
+ # Test inputs not overridden by defaults - ASHP w/ electric backup
1585
+ hpxml = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed.xml')
1586
+ hpxml.heat_pumps[0].compressor_lockout_temp = -2.0
1587
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = 44.0
1588
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1589
+ hpxml_default = _test_measure()
1590
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], -2.0, 44.0, nil)
1591
+
1592
+ # Test defaults
1593
+ hpxml.heat_pumps[0].compressor_lockout_temp = nil
1594
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1595
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1596
+ hpxml_default = _test_measure()
1597
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], 0.0, 40.0, nil)
1598
+
1599
+ # Test inputs not overridden by defaults - MSHP w/o backup
1600
+ hpxml = _create_hpxml('base-hvac-mini-split-heat-pump-ductless.xml')
1601
+ hpxml.heat_pumps[0].compressor_lockout_temp = 33.0
1602
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1603
+ hpxml_default = _test_measure()
1604
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], 33.0, nil, nil)
1605
+
1606
+ # Test defaults
1607
+ hpxml.heat_pumps[0].compressor_lockout_temp = nil
1608
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1609
+ hpxml_default = _test_measure()
1610
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], -20.0, nil, nil)
1611
+
1612
+ # Test inputs not overridden by defaults - MSHP w/ electric backup
1613
+ hpxml = _create_hpxml('base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml')
1614
+ hpxml.heat_pumps[0].compressor_lockout_temp = -2.0
1615
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = 44.0
1616
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1617
+ hpxml_default = _test_measure()
1618
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], -2.0, 44.0, nil)
1619
+
1620
+ # Test defaults
1621
+ hpxml.heat_pumps[0].compressor_lockout_temp = nil
1622
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1623
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1624
+ hpxml_default = _test_measure()
1625
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], -20.0, 40.0, nil)
1626
+
1627
+ # Test inputs not overridden by defaults - HP w/ fuel backup
1628
+ ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml',
1629
+ 'base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml',
1630
+ 'base-hvac-mini-split-heat-pump-ductless-backup-stove.xml'].each do |hpxml_name|
1631
+ hpxml = _create_hpxml(hpxml_name)
1632
+ hpxml.heat_pumps[0].backup_heating_switchover_temp = 33.0
1633
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1634
+ hpxml_default = _test_measure()
1635
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], nil, nil, 33.0)
1636
+
1637
+ # Test inputs not overridden by defaults - HP w/ integrated/separate fuel backup, lockout temps
1638
+ hpxml.heat_pumps[0].backup_heating_switchover_temp = nil
1639
+ hpxml.heat_pumps[0].compressor_lockout_temp = 22.0
1640
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = 44.0
1641
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1642
+ hpxml_default = _test_measure()
1643
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], 22.0, 44.0, nil)
1644
+
1645
+ # Test defaults
1646
+ hpxml.heat_pumps[0].compressor_lockout_temp = nil
1647
+ hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1648
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1649
+ hpxml_default = _test_measure()
1650
+ _test_default_heat_pump_temperature_values(hpxml_default.heat_pumps[0], 25.0, 50.0, nil)
1651
+ end
1426
1652
  end
1427
1653
 
1428
1654
  def test_ground_source_heat_pumps
@@ -1450,33 +1676,67 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1450
1676
  _test_default_ground_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 30.0, 0.375, 0, nil, nil, nil)
1451
1677
  end
1452
1678
 
1453
- def test_hvac_increased_hardsized_equipment
1454
- # Test hard-sized capacities are increased for air conditioner + furnace
1455
- hpxml = _create_hpxml('base-hvac-undersized-allow-increased-fixed-capacities.xml')
1456
- htg_cap = hpxml.heating_systems[0].heating_capacity
1457
- clg_cap = hpxml.cooling_systems[0].cooling_capacity
1679
+ def test_hvac_location
1680
+ # Test inputs not overridden by defaults
1681
+ hpxml = _create_hpxml('base-foundation-unconditioned-basement.xml')
1682
+ hpxml.heating_systems[0].location = HPXML::LocationAtticUnvented
1683
+ hpxml.cooling_systems[0].delete
1458
1684
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1459
1685
  hpxml_default = _test_measure()
1460
- assert(hpxml_default.heating_systems[0].heating_capacity > htg_cap)
1461
- assert(hpxml_default.cooling_systems[0].cooling_capacity > clg_cap)
1686
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationAtticUnvented)
1462
1687
 
1463
- # Test hard-sized capacities are increased for heat pump
1464
- hpxml = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed.xml')
1465
- hpxml.header.allow_increased_fixed_capacities = true
1466
- hpxml.heat_pumps[0].heating_capacity /= 10.0
1467
- hpxml.heat_pumps[0].heating_capacity_17F /= 10.0
1468
- hpxml.heat_pumps[0].backup_heating_capacity /= 10.0
1469
- hpxml.heat_pumps[0].cooling_capacity /= 10.0
1470
- htg_cap = hpxml.heat_pumps[0].heating_capacity
1471
- htg_17f_cap = hpxml.heat_pumps[0].heating_capacity_17F
1472
- htg_bak_cap = hpxml.heat_pumps[0].backup_heating_capacity
1473
- clg_cap = hpxml.heat_pumps[0].cooling_capacity
1688
+ # Test defaults
1689
+ hpxml.heating_systems[0].location = nil
1690
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1691
+ hpxml_default = _test_measure()
1692
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationBasementUnconditioned)
1693
+
1694
+ # Test defaults -- multiple duct locations
1695
+ hpxml.heating_systems[0].distribution_system.ducts.add(id: "Ducts#{hpxml.heating_systems[0].distribution_system.ducts.size + 1}",
1696
+ duct_type: HPXML::DuctTypeSupply,
1697
+ duct_insulation_r_value: 0,
1698
+ duct_location: HPXML::LocationAtticUnvented,
1699
+ duct_surface_area: 151)
1700
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1701
+ hpxml_default = _test_measure()
1702
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationAtticUnvented)
1703
+
1704
+ # Test defaults -- ducts outside
1705
+ hpxml.heating_systems[0].distribution_system.ducts.each do |d|
1706
+ d.duct_location = HPXML::LocationOutside
1707
+ end
1708
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1709
+ hpxml_default = _test_measure()
1710
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationOtherExterior)
1711
+
1712
+ # Test defaults -- hydronic
1713
+ hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
1714
+ hpxml.heating_systems[0].distribution_system.distribution_system_type = HPXML::HVACDistributionTypeHydronic
1715
+ hpxml.heating_systems[0].distribution_system.hydronic_type = HPXML::HydronicTypeBaseboard
1716
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1717
+ hpxml_default = _test_measure()
1718
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationBasementUnconditioned)
1719
+
1720
+ # Test defaults -- DSE = 1
1721
+ hpxml.heating_systems[0].distribution_system.distribution_system_type = HPXML::HVACDistributionTypeDSE
1722
+ hpxml.heating_systems[0].distribution_system.annual_heating_dse = 1.0
1723
+ hpxml.heating_systems[0].distribution_system.annual_cooling_dse = 0.5
1724
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1725
+ hpxml_default = _test_measure()
1726
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationLivingSpace)
1727
+
1728
+ # Test defaults -- DSE < 1
1729
+ hpxml.heating_systems[0].distribution_system.annual_heating_dse = 0.8
1730
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1731
+ hpxml_default = _test_measure()
1732
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationUnconditionedSpace)
1733
+
1734
+ # Test defaults -- ductless
1735
+ hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeWallFurnace
1736
+ hpxml.heating_systems[0].distribution_system.delete
1474
1737
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1475
1738
  hpxml_default = _test_measure()
1476
- assert(hpxml_default.heat_pumps[0].heating_capacity > htg_cap)
1477
- assert(hpxml_default.heat_pumps[0].heating_capacity_17F > htg_17f_cap)
1478
- assert(hpxml_default.heat_pumps[0].backup_heating_capacity > htg_bak_cap)
1479
- assert(hpxml_default.heat_pumps[0].cooling_capacity > clg_cap)
1739
+ _test_default_hvac_location_values(hpxml_default.heating_systems[0], HPXML::LocationLivingSpace)
1480
1740
  end
1481
1741
 
1482
1742
  def test_hvac_controls
@@ -1536,6 +1796,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1536
1796
  hpxml.hvac_distributions[0].number_of_return_registers = 2
1537
1797
  hpxml.hvac_distributions[0].ducts[0].duct_surface_area_multiplier = 0.5
1538
1798
  hpxml.hvac_distributions[0].ducts[1].duct_surface_area_multiplier = 1.5
1799
+ hpxml.hvac_distributions[0].ducts[0].duct_buried_insulation_level = HPXML::DuctBuriedInsulationPartial
1800
+ hpxml.hvac_distributions[0].ducts[1].duct_buried_insulation_level = HPXML::DuctBuriedInsulationDeep
1801
+ hpxml.hvac_distributions[0].ducts[0].duct_insulation_r_value = nil
1802
+ hpxml.hvac_distributions[0].ducts[1].duct_insulation_r_value = nil
1803
+ hpxml.hvac_distributions[0].ducts[0].duct_effective_r_value = 1.23
1804
+ hpxml.hvac_distributions[0].ducts[1].duct_effective_r_value = 3.21
1539
1805
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1540
1806
  hpxml_default = _test_measure()
1541
1807
  expected_supply_locations = ['attic - unvented']
@@ -1546,9 +1812,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1546
1812
  expected_return_fracs = [1.0]
1547
1813
  expected_supply_area_mults = [0.5]
1548
1814
  expected_return_area_mults = [1.5]
1815
+ expected_supply_effective_rvalues = [1.23]
1816
+ expected_return_effective_rvalues = [3.21]
1817
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationPartial]
1818
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationDeep]
1549
1819
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1550
1820
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1551
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1821
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1822
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1552
1823
 
1553
1824
  # Test defaults w/ conditioned basement
1554
1825
  hpxml.hvac_distributions[0].number_of_return_registers = nil
@@ -1556,7 +1827,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1556
1827
  duct.duct_location = nil
1557
1828
  duct.duct_surface_area = nil
1558
1829
  duct.duct_surface_area_multiplier = nil
1830
+ duct.duct_buried_insulation_level = nil
1831
+ duct.duct_effective_r_value = nil
1559
1832
  end
1833
+ hpxml.hvac_distributions[0].ducts[0].duct_insulation_r_value = 4
1834
+ hpxml.hvac_distributions[0].ducts[1].duct_insulation_r_value = 0
1560
1835
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1561
1836
  hpxml_default = _test_measure()
1562
1837
  expected_supply_locations = ['basement - conditioned']
@@ -1567,9 +1842,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1567
1842
  expected_return_fracs = [1.0]
1568
1843
  expected_supply_area_mults = [1.0]
1569
1844
  expected_return_area_mults = [1.0]
1845
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone]
1846
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone]
1847
+ expected_supply_effective_rvalues = [4.5]
1848
+ expected_return_effective_rvalues = [1.7]
1570
1849
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1571
1850
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1572
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1851
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1852
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1573
1853
 
1574
1854
  # Test defaults w/ multiple foundations
1575
1855
  hpxml = _create_hpxml('base-foundation-multiple.xml')
@@ -1579,6 +1859,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1579
1859
  duct.duct_location = nil
1580
1860
  duct.duct_surface_area = nil
1581
1861
  duct.duct_surface_area_multiplier = nil
1862
+ duct.duct_buried_insulation_level = nil
1582
1863
  end
1583
1864
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1584
1865
  hpxml_default = _test_measure()
@@ -1590,9 +1871,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1590
1871
  expected_return_fracs = [1.0]
1591
1872
  expected_supply_area_mults = [1.0]
1592
1873
  expected_return_area_mults = [1.0]
1874
+ expected_supply_effective_rvalues = [4.5]
1875
+ expected_return_effective_rvalues = [1.7]
1876
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone]
1877
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone]
1593
1878
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1594
1879
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1595
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1880
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1881
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1596
1882
 
1597
1883
  # Test defaults w/ foundation exposed to ambient
1598
1884
  hpxml = _create_hpxml('base-foundation-ambient.xml')
@@ -1602,6 +1888,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1602
1888
  duct.duct_location = nil
1603
1889
  duct.duct_surface_area = nil
1604
1890
  duct.duct_surface_area_multiplier = nil
1891
+ duct.duct_buried_insulation_level = nil
1605
1892
  end
1606
1893
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1607
1894
  hpxml_default = _test_measure()
@@ -1613,9 +1900,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1613
1900
  expected_return_fracs = [1.0]
1614
1901
  expected_supply_area_mults = [1.0]
1615
1902
  expected_return_area_mults = [1.0]
1903
+ expected_supply_effective_rvalues = [4.5]
1904
+ expected_return_effective_rvalues = [1.7]
1905
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone]
1906
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone]
1616
1907
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1617
1908
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1618
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1909
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1910
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1619
1911
 
1620
1912
  # Test defaults w/ building/unit adjacent to other housing unit
1621
1913
  hpxml = _create_hpxml('base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml')
@@ -1625,6 +1917,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1625
1917
  duct.duct_location = nil
1626
1918
  duct.duct_surface_area = nil
1627
1919
  duct.duct_surface_area_multiplier = nil
1920
+ duct.duct_buried_insulation_level = nil
1628
1921
  end
1629
1922
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1630
1923
  hpxml_default = _test_measure()
@@ -1636,9 +1929,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1636
1929
  expected_return_fracs = [1.0]
1637
1930
  expected_supply_area_mults = [1.0]
1638
1931
  expected_return_area_mults = [1.0]
1932
+ expected_supply_effective_rvalues = [1.7]
1933
+ expected_return_effective_rvalues = [1.7]
1934
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone]
1935
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone]
1639
1936
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1640
1937
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1641
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1938
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1939
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1642
1940
 
1643
1941
  # Test defaults w/ 2-story building
1644
1942
  hpxml = _create_hpxml('base-enclosure-2stories.xml')
@@ -1648,6 +1946,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1648
1946
  duct.duct_location = nil
1649
1947
  duct.duct_surface_area = nil
1650
1948
  duct.duct_surface_area_multiplier = nil
1949
+ duct.duct_buried_insulation_level = nil
1651
1950
  end
1652
1951
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1653
1952
  hpxml_default = _test_measure()
@@ -1659,9 +1958,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1659
1958
  expected_return_fracs = [0.375, 0.375, 0.125, 0.125]
1660
1959
  expected_supply_area_mults = [1.0, 1.0, 1.0, 1.0]
1661
1960
  expected_return_area_mults = [1.0, 1.0, 1.0, 1.0]
1961
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone] * 4
1962
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone] * 4
1963
+ expected_supply_effective_rvalues = [4.5] * 4
1964
+ expected_return_effective_rvalues = [1.7] * 4
1662
1965
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1663
1966
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1664
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1967
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
1968
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1665
1969
 
1666
1970
  # Test defaults w/ 1-story building & multiple HVAC systems
1667
1971
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1674,6 +1978,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1674
1978
  duct.duct_location = nil
1675
1979
  duct.duct_surface_area = nil
1676
1980
  duct.duct_surface_area_multiplier = nil
1981
+ duct.duct_buried_insulation_level = nil
1677
1982
  end
1678
1983
  end
1679
1984
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1686,9 +1991,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1686
1991
  expected_return_fracs = [0.5, 0.5] * hpxml_default.hvac_distributions.size
1687
1992
  expected_supply_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1688
1993
  expected_return_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1994
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone] * 2 * hpxml_default.hvac_distributions.size
1995
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone] * 2 * hpxml_default.hvac_distributions.size
1996
+ expected_supply_effective_rvalues = [6.74] * 2 * hpxml_default.hvac_distributions.size
1997
+ expected_return_effective_rvalues = [4.86] * 2 * hpxml_default.hvac_distributions.size
1689
1998
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1690
1999
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1691
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
2000
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
2001
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1692
2002
 
1693
2003
  # Test defaults w/ 2-story building & multiple HVAC systems
1694
2004
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1702,6 +2012,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1702
2012
  duct.duct_location = nil
1703
2013
  duct.duct_surface_area = nil
1704
2014
  duct.duct_surface_area_multiplier = nil
2015
+ duct.duct_buried_insulation_level = nil
1705
2016
  end
1706
2017
  end
1707
2018
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1714,9 +2025,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1714
2025
  expected_return_fracs = [0.375, 0.375, 0.125, 0.125] * hpxml_default.hvac_distributions.size
1715
2026
  expected_supply_area_mults = [1.0, 1.0, 1.0, 1.0] * hpxml_default.hvac_distributions.size
1716
2027
  expected_return_area_mults = [1.0, 1.0, 1.0, 1.0] * hpxml_default.hvac_distributions.size
2028
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone] * 4 * hpxml_default.hvac_distributions.size
2029
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone] * 4 * hpxml_default.hvac_distributions.size
2030
+ expected_supply_effective_rvalues = [6.74] * 4 * hpxml_default.hvac_distributions.size
2031
+ expected_return_effective_rvalues = [4.86] * 4 * hpxml_default.hvac_distributions.size
1717
2032
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1718
2033
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1719
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
2034
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
2035
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1720
2036
 
1721
2037
  # Test defaults w/ 2-story building & multiple HVAC systems & duct area fractions
1722
2038
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1735,6 +2051,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1735
2051
  hvac_distribution.ducts.each do |duct|
1736
2052
  duct.duct_surface_area = nil
1737
2053
  duct.duct_surface_area_multiplier = nil
2054
+ duct.duct_buried_insulation_level = nil
1738
2055
  end
1739
2056
  end
1740
2057
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1747,25 +2064,29 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1747
2064
  expected_return_fracs = [0.5, 0.5] * hpxml_default.hvac_distributions.size
1748
2065
  expected_supply_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1749
2066
  expected_return_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
2067
+ expected_supply_buried_levels = [HPXML::DuctBuriedInsulationNone] * 2 * hpxml_default.hvac_distributions.size
2068
+ expected_return_buried_levels = [HPXML::DuctBuriedInsulationNone] * 2 * hpxml_default.hvac_distributions.size
2069
+ expected_supply_effective_rvalues = [6.74] * 2 * hpxml_default.hvac_distributions.size
2070
+ expected_return_effective_rvalues = [4.86] * 2 * hpxml_default.hvac_distributions.size
1750
2071
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1751
2072
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1752
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
2073
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults,
2074
+ expected_supply_buried_levels, expected_return_buried_levels, expected_supply_effective_rvalues, expected_return_effective_rvalues)
1753
2075
  end
1754
2076
 
1755
2077
  def test_mech_ventilation_fans
1756
2078
  # Test inputs not overridden by defaults w/ shared exhaust system
1757
- hpxml = _create_hpxml('base-mechvent-exhaust.xml')
1758
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
1759
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
1760
- vent_fan.is_shared_system = true
1761
- vent_fan.fraction_recirculation = 0.0
1762
- vent_fan.in_unit_flow_rate = 10.0
1763
- vent_fan.hours_in_operation = 22.0
1764
- vent_fan.fan_power = 12.5
1765
- vent_fan.tested_flow_rate = nil
1766
- vent_fan.rated_flow_rate = nil
1767
- vent_fan.calculated_flow_rate = nil
1768
- vent_fan.delivered_ventilation = 89
2079
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2080
+ hpxml.ventilation_fans.add(id: 'MechanicalVentilation',
2081
+ fan_type: HPXML::MechVentTypeExhaust,
2082
+ used_for_whole_building_ventilation: true,
2083
+ is_shared_system: true,
2084
+ fraction_recirculation: 0.0,
2085
+ in_unit_flow_rate: 10.0,
2086
+ hours_in_operation: 22.0,
2087
+ fan_power: 12.5,
2088
+ delivered_ventilation: 89)
2089
+ vent_fan = hpxml.ventilation_fans[0]
1769
2090
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1770
2091
  hpxml_default = _test_measure()
1771
2092
  _test_default_mech_vent_values(hpxml_default, true, 22.0, 12.5, 89)
@@ -1800,7 +2121,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1800
2121
  # Test defaults
1801
2122
  vent_fan.rated_flow_rate = nil
1802
2123
  vent_fan.start_hour = nil
1803
- vent_fan.quantity = nil
2124
+ vent_fan.count = nil
1804
2125
  vent_fan.is_shared_system = nil
1805
2126
  vent_fan.fraction_recirculation = nil
1806
2127
  vent_fan.in_unit_flow_rate = nil
@@ -1812,19 +2133,27 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1812
2133
  vent_fan.delivered_ventilation = nil
1813
2134
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1814
2135
  hpxml_default = _test_measure()
1815
- _test_default_mech_vent_values(hpxml_default, false, 24.0, 35.0, 100)
2136
+ _test_default_mech_vent_values(hpxml_default, false, 24.0, 27.1, 77.3)
1816
2137
 
1817
- # Test defaults w/ SFA building
1818
- hpxml = _create_hpxml('base-bldgtype-single-family-attached.xml')
2138
+ # Test defaults w/ SFA building, compartmentalization test
2139
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2140
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitTotal
1819
2141
  hpxml.ventilation_fans.add(id: 'MechanicalVentilation',
1820
2142
  fan_type: HPXML::MechVentTypeExhaust,
1821
2143
  used_for_whole_building_ventilation: true)
1822
2144
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1823
2145
  hpxml_default = _test_measure()
1824
- _test_default_mech_vent_values(hpxml_default, false, 24.0, 27.2, 78)
2146
+ _test_default_mech_vent_values(hpxml_default, false, 24.0, 27.4, 78.4)
2147
+
2148
+ # Test defaults w/ SFA building, guarded test
2149
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitExterior
2150
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2151
+ hpxml_default = _test_measure()
2152
+ _test_default_mech_vent_values(hpxml_default, false, 24.0, 27.2, 77.3)
1825
2153
 
1826
- # Test defaults w/ MF building
2154
+ # Test defaults w/ MF building, compartmentalization test
1827
2155
  hpxml = _create_hpxml('base-bldgtype-multifamily.xml')
2156
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitTotal
1828
2157
  hpxml.ventilation_fans.add(id: 'MechanicalVentilation',
1829
2158
  fan_type: HPXML::MechVentTypeExhaust,
1830
2159
  used_for_whole_building_ventilation: true)
@@ -1832,6 +2161,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1832
2161
  hpxml_default = _test_measure()
1833
2162
  _test_default_mech_vent_values(hpxml_default, false, 24.0, 19.8, 56.5)
1834
2163
 
2164
+ # Test defaults w/ MF building, guarded test
2165
+ hpxml.air_infiltration_measurements[0].infiltration_type = HPXML::InfiltrationTypeUnitExterior
2166
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2167
+ hpxml_default = _test_measure()
2168
+ _test_default_mech_vent_values(hpxml_default, false, 24.0, 19.2, 54.9)
2169
+
1835
2170
  # Test defaults w/ nACH infiltration
1836
2171
  hpxml = _create_hpxml('base-enclosure-infil-natural-ach.xml')
1837
2172
  hpxml.ventilation_fans.add(id: 'MechanicalVentilation',
@@ -1870,7 +2205,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1870
2205
 
1871
2206
  # Test inputs not overridden by defaults w/ CFIS
1872
2207
  hpxml = _create_hpxml('base-mechvent-cfis.xml')
1873
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
2208
+ vent_fan = hpxml.ventilation_fans.find { |f| f.used_for_whole_building_ventilation }
1874
2209
  vent_fan.is_shared_system = false
1875
2210
  vent_fan.hours_in_operation = 12.0
1876
2211
  vent_fan.fan_power = 12.5
@@ -1907,11 +2242,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1907
2242
  vent_fan.cfis_addtl_runtime_operating_mode = nil
1908
2243
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1909
2244
  hpxml_default = _test_measure()
1910
- _test_default_mech_vent_values(hpxml_default, false, 8.0, 150.0, 300.0, 1.0, HPXML::CFISModeAirHandler)
2245
+ _test_default_mech_vent_values(hpxml_default, false, 8.0, 149.4, 298.7, 1.0, HPXML::CFISModeAirHandler)
1911
2246
 
1912
2247
  # Test inputs not overridden by defaults w/ ERV
1913
2248
  hpxml = _create_hpxml('base-mechvent-erv.xml')
1914
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
2249
+ vent_fan = hpxml.ventilation_fans.find { |f| f.used_for_whole_building_ventilation }
1915
2250
  vent_fan.is_shared_system = false
1916
2251
  vent_fan.hours_in_operation = 20.0
1917
2252
  vent_fan.fan_power = 45.0
@@ -1931,17 +2266,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1931
2266
  def test_local_ventilation_fans
1932
2267
  # Test inputs not overridden by defaults
1933
2268
  hpxml = _create_hpxml('base-mechvent-bath-kitchen-fans.xml')
1934
- kitchen_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }[0]
2269
+ kitchen_fan = hpxml.ventilation_fans.find { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }
1935
2270
  kitchen_fan.rated_flow_rate = 300
1936
2271
  kitchen_fan.fan_power = 20
1937
2272
  kitchen_fan.start_hour = 12
1938
- kitchen_fan.quantity = 2
2273
+ kitchen_fan.count = 2
1939
2274
  kitchen_fan.hours_in_operation = 2
1940
- bath_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }[0]
2275
+ bath_fan = hpxml.ventilation_fans.find { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }
1941
2276
  bath_fan.rated_flow_rate = 80
1942
2277
  bath_fan.fan_power = 33
1943
2278
  bath_fan.start_hour = 6
1944
- bath_fan.quantity = 3
2279
+ bath_fan.count = 3
1945
2280
  bath_fan.hours_in_operation = 3
1946
2281
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1947
2282
  hpxml_default = _test_measure()
@@ -1952,12 +2287,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1952
2287
  kitchen_fan.rated_flow_rate = nil
1953
2288
  kitchen_fan.fan_power = nil
1954
2289
  kitchen_fan.start_hour = nil
1955
- kitchen_fan.quantity = nil
2290
+ kitchen_fan.count = nil
1956
2291
  kitchen_fan.hours_in_operation = nil
1957
2292
  bath_fan.rated_flow_rate = nil
1958
2293
  bath_fan.fan_power = nil
1959
2294
  bath_fan.start_hour = nil
1960
- bath_fan.quantity = nil
2295
+ bath_fan.count = nil
1961
2296
  bath_fan.hours_in_operation = nil
1962
2297
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1963
2298
  hpxml_default = _test_measure()
@@ -1968,7 +2303,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1968
2303
  def test_whole_house_fan
1969
2304
  # Test inputs not overridden by defaults
1970
2305
  hpxml = _create_hpxml('base-mechvent-whole-house-fan.xml')
1971
- whf = hpxml.ventilation_fans.select { |f| f.used_for_seasonal_cooling_load_reduction }[0]
2306
+ whf = hpxml.ventilation_fans.find { |f| f.used_for_seasonal_cooling_load_reduction }
1972
2307
  whf.rated_flow_rate = 3000
1973
2308
  whf.fan_power = 321
1974
2309
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1985,8 +2320,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1985
2320
 
1986
2321
  def test_storage_water_heaters
1987
2322
  # Test inputs not overridden by defaults
1988
- hpxml = _create_hpxml('base.xml')
1989
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2323
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
1990
2324
  hpxml.water_heating_systems.each do |wh|
1991
2325
  wh.is_shared_system = true
1992
2326
  wh.number_of_units_served = 2
@@ -2126,7 +2460,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2126
2460
  hpxml.water_heating_systems[0].operating_mode = nil
2127
2461
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2128
2462
  hpxml_default = _test_measure()
2129
- _test_default_heat_pump_water_heater_values(hpxml_default, [HPXML::WaterHeaterOperatingModeStandard])
2463
+ _test_default_heat_pump_water_heater_values(hpxml_default, [HPXML::WaterHeaterOperatingModeHybridAuto])
2130
2464
  end
2131
2465
 
2132
2466
  def test_indirect_water_heaters
@@ -2279,44 +2613,44 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2279
2613
 
2280
2614
  def test_pv_systems
2281
2615
  # Test inputs not overridden by defaults
2282
- hpxml = _create_hpxml('base-pv.xml')
2283
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2284
- hpxml.pv_systems.each do |pv|
2285
- pv.is_shared_system = true
2286
- pv.number_of_bedrooms_served = 20
2287
- pv.inverter_efficiency = 0.90
2288
- pv.system_losses_fraction = 0.20
2289
- pv.location = HPXML::LocationGround
2290
- pv.tracking = HPXML::PVTrackingType1Axis
2291
- pv.module_type = HPXML::PVModuleTypePremium
2292
- pv.array_azimuth = 123
2293
- end
2616
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2617
+ hpxml.pv_systems.add(id: 'PVSystem',
2618
+ is_shared_system: true,
2619
+ number_of_bedrooms_served: 20,
2620
+ system_losses_fraction: 0.20,
2621
+ location: HPXML::LocationGround,
2622
+ tracking: HPXML::PVTrackingType1Axis,
2623
+ module_type: HPXML::PVModuleTypePremium,
2624
+ array_azimuth: 123,
2625
+ array_tilt: 0,
2626
+ max_power_output: 1000,
2627
+ inverter_idref: 'Inverter')
2628
+ hpxml.inverters.add(id: 'Inverter',
2629
+ inverter_efficiency: 0.90)
2630
+ pv = hpxml.pv_systems[0]
2631
+ inv = hpxml.inverters[0]
2294
2632
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2295
2633
  hpxml_default = _test_measure()
2296
2634
  _test_default_pv_system_values(hpxml_default, 0.90, 0.20, true, HPXML::LocationGround, HPXML::PVTrackingType1Axis, HPXML::PVModuleTypePremium, 123)
2297
2635
 
2298
2636
  # Test defaults w/o year modules manufactured
2299
- hpxml.pv_systems.each do |pv|
2300
- pv.is_shared_system = nil
2301
- pv.inverter_efficiency = nil
2302
- pv.system_losses_fraction = nil
2303
- pv.location = nil
2304
- pv.tracking = nil
2305
- pv.module_type = nil
2306
- pv.array_orientation = HPXML::OrientationSoutheast
2307
- pv.array_azimuth = nil
2308
- end
2637
+ pv.is_shared_system = nil
2638
+ pv.system_losses_fraction = nil
2639
+ pv.location = nil
2640
+ pv.tracking = nil
2641
+ pv.module_type = nil
2642
+ pv.array_orientation = HPXML::OrientationSoutheast
2643
+ pv.array_azimuth = nil
2644
+ inv.inverter_efficiency = nil
2309
2645
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2310
2646
  hpxml_default = _test_measure()
2311
2647
  _test_default_pv_system_values(hpxml_default, 0.96, 0.14, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard, 135)
2312
2648
 
2313
2649
  # Test defaults w/ year modules manufactured
2314
- hpxml.pv_systems.each do |pv|
2315
- pv.year_modules_manufactured = 2010
2316
- end
2650
+ pv.year_modules_manufactured = 2010
2317
2651
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2318
2652
  hpxml_default = _test_measure()
2319
- _test_default_pv_system_values(hpxml_default, 0.96, 0.190, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard, 135)
2653
+ _test_default_pv_system_values(hpxml_default, 0.96, 0.194, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard, 135)
2320
2654
  end
2321
2655
 
2322
2656
  def test_batteries
@@ -2332,7 +2666,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2332
2666
  hpxml.batteries[0].round_trip_efficiency = 0.9
2333
2667
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2334
2668
  hpxml_default = _test_measure()
2335
- _test_default_battery_values(hpxml_default, 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
2669
+ _test_default_battery_values(hpxml_default.batteries[0], 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
2336
2670
 
2337
2671
  # Test w/ Ah instead of kWh
2338
2672
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2341,7 +2675,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2341
2675
  hpxml.batteries[0].usable_capacity_ah = 876.0
2342
2676
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2343
2677
  hpxml_default = _test_measure()
2344
- _test_default_battery_values(hpxml_default, nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
2678
+ _test_default_battery_values(hpxml_default.batteries[0], nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
2345
2679
 
2346
2680
  # Test defaults
2347
2681
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2354,7 +2688,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2354
2688
  hpxml.batteries[0].round_trip_efficiency = nil
2355
2689
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2356
2690
  hpxml_default = _test_measure()
2357
- _test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside, nil, 0.925)
2691
+ _test_default_battery_values(hpxml_default.batteries[0], 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside, nil, 0.925)
2358
2692
 
2359
2693
  # Test defaults w/ nominal kWh
2360
2694
  hpxml.batteries[0].nominal_capacity_kwh = 14.0
@@ -2364,7 +2698,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2364
2698
  hpxml.batteries[0].rated_power_output = nil
2365
2699
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2366
2700
  hpxml_default = _test_measure()
2367
- _test_default_battery_values(hpxml_default, 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside, nil, 0.925)
2701
+ _test_default_battery_values(hpxml_default.batteries[0], 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside, nil, 0.925)
2368
2702
 
2369
2703
  # Test defaults w/ usable kWh
2370
2704
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2374,7 +2708,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2374
2708
  hpxml.batteries[0].rated_power_output = nil
2375
2709
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2376
2710
  hpxml_default = _test_measure()
2377
- _test_default_battery_values(hpxml_default, 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside, nil, 0.925)
2711
+ _test_default_battery_values(hpxml_default.batteries[0], 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside, nil, 0.925)
2378
2712
 
2379
2713
  # Test defaults w/ nominal Ah
2380
2714
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2384,7 +2718,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2384
2718
  hpxml.batteries[0].rated_power_output = nil
2385
2719
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2386
2720
  hpxml_default = _test_measure()
2387
- _test_default_battery_values(hpxml_default, nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside, nil, 0.925)
2721
+ _test_default_battery_values(hpxml_default.batteries[0], nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside, nil, 0.925)
2388
2722
 
2389
2723
  # Test defaults w/ usable Ah
2390
2724
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2394,7 +2728,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2394
2728
  hpxml.batteries[0].rated_power_output = nil
2395
2729
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2396
2730
  hpxml_default = _test_measure()
2397
- _test_default_battery_values(hpxml_default, nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside, nil, 0.925)
2731
+ _test_default_battery_values(hpxml_default.batteries[0], nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside, nil, 0.925)
2398
2732
 
2399
2733
  # Test defaults w/ rated power output
2400
2734
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2404,7 +2738,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2404
2738
  hpxml.batteries[0].rated_power_output = 10000.0
2405
2739
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2406
2740
  hpxml_default = _test_measure()
2407
- _test_default_battery_values(hpxml_default, 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside, nil, 0.925)
2741
+ _test_default_battery_values(hpxml_default.batteries[0], 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside, nil, 0.925)
2408
2742
 
2409
2743
  # Test defaults w/ garage
2410
2744
  hpxml = _create_hpxml('base-pv-battery-garage.xml')
@@ -2418,25 +2752,25 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2418
2752
  hpxml.batteries[0].round_trip_efficiency = nil
2419
2753
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2420
2754
  hpxml_default = _test_measure()
2421
- _test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationGarage, nil, 0.925)
2755
+ _test_default_battery_values(hpxml_default.batteries[0], 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationGarage, nil, 0.925)
2422
2756
  end
2423
2757
 
2424
2758
  def test_generators
2425
2759
  # Test inputs not overridden by defaults
2426
- hpxml = _create_hpxml('base-misc-generators.xml')
2427
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2428
- hpxml.generators.each do |generator|
2429
- generator.is_shared_system = true
2430
- generator.number_of_bedrooms_served = 20
2431
- end
2760
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2761
+ hpxml.generators.add(id: 'Generator',
2762
+ is_shared_system: true,
2763
+ number_of_bedrooms_served: 20,
2764
+ fuel_type: HPXML::FuelTypeNaturalGas,
2765
+ annual_consumption_kbtu: 8500,
2766
+ annual_output_kwh: 500)
2767
+ generator = hpxml.generators[0]
2432
2768
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2433
2769
  hpxml_default = _test_measure()
2434
2770
  _test_default_generator_values(hpxml_default, true)
2435
2771
 
2436
2772
  # Test defaults
2437
- hpxml.generators.each do |generator|
2438
- generator.is_shared_system = nil
2439
- end
2773
+ generator.is_shared_system = nil
2440
2774
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2441
2775
  hpxml_default = _test_measure()
2442
2776
  _test_default_generator_values(hpxml_default, false)
@@ -2444,8 +2778,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2444
2778
 
2445
2779
  def test_clothes_washers
2446
2780
  # Test inputs not overridden by defaults
2447
- hpxml = _create_hpxml('base.xml')
2448
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2781
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2449
2782
  hpxml.water_heating_systems[0].is_shared_system = true
2450
2783
  hpxml.water_heating_systems[0].number_of_units_served = 6
2451
2784
  hpxml.clothes_washers[0].location = HPXML::LocationBasementConditioned
@@ -2500,8 +2833,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2500
2833
 
2501
2834
  def test_clothes_dryers
2502
2835
  # Test inputs not overridden by defaults
2503
- hpxml = _create_hpxml('base.xml')
2504
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2836
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2505
2837
  hpxml.water_heating_systems[0].is_shared_system = true
2506
2838
  hpxml.water_heating_systems[0].number_of_units_served = 6
2507
2839
  hpxml.clothes_dryers[0].location = HPXML::LocationBasementConditioned
@@ -2575,8 +2907,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2575
2907
 
2576
2908
  def test_dishwashers
2577
2909
  # Test inputs not overridden by defaults
2578
- hpxml = _create_hpxml('base.xml')
2579
- hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
2910
+ hpxml = _create_hpxml('base-bldgtype-attached.xml')
2580
2911
  hpxml.water_heating_systems[0].is_shared_system = true
2581
2912
  hpxml.water_heating_systems[0].number_of_units_served = 6
2582
2913
  hpxml.dishwashers[0].location = HPXML::LocationBasementConditioned
@@ -2866,7 +3197,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2866
3197
  def test_ceiling_fans
2867
3198
  # Test inputs not overridden by defaults
2868
3199
  hpxml = _create_hpxml('base-lighting-ceiling-fans.xml')
2869
- hpxml.ceiling_fans[0].quantity = 2
3200
+ hpxml.ceiling_fans[0].count = 2
2870
3201
  hpxml.ceiling_fans[0].efficiency = 100
2871
3202
  hpxml.ceiling_fans[0].weekday_fractions = ConstantDaySchedule
2872
3203
  hpxml.ceiling_fans[0].weekend_fractions = ConstantDaySchedule
@@ -2877,7 +3208,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2877
3208
 
2878
3209
  # Test defaults
2879
3210
  hpxml.ceiling_fans.each do |ceiling_fan|
2880
- ceiling_fan.quantity = nil
3211
+ ceiling_fan.count = nil
2881
3212
  ceiling_fan.efficiency = nil
2882
3213
  ceiling_fan.weekday_fractions = nil
2883
3214
  ceiling_fan.weekend_fractions = nil
@@ -3007,32 +3338,32 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3007
3338
  def test_plug_loads
3008
3339
  # Test inputs not overridden by defaults
3009
3340
  hpxml = _create_hpxml('base-misc-loads-large-uncommon.xml')
3010
- tv_pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == HPXML::PlugLoadTypeTelevision }[0]
3011
- tv_pl.kWh_per_year = 1000
3341
+ tv_pl = hpxml.plug_loads.find { |pl| pl.plug_load_type == HPXML::PlugLoadTypeTelevision }
3342
+ tv_pl.kwh_per_year = 1000
3012
3343
  tv_pl.usage_multiplier = 1.1
3013
3344
  tv_pl.frac_sensible = 0.6
3014
3345
  tv_pl.frac_latent = 0.3
3015
3346
  tv_pl.weekday_fractions = ConstantDaySchedule
3016
3347
  tv_pl.weekend_fractions = ConstantDaySchedule
3017
3348
  tv_pl.monthly_multipliers = ConstantMonthSchedule
3018
- other_pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == HPXML::PlugLoadTypeOther }[0]
3019
- other_pl.kWh_per_year = 2000
3349
+ other_pl = hpxml.plug_loads.find { |pl| pl.plug_load_type == HPXML::PlugLoadTypeOther }
3350
+ other_pl.kwh_per_year = 2000
3020
3351
  other_pl.usage_multiplier = 1.2
3021
3352
  other_pl.frac_sensible = 0.5
3022
3353
  other_pl.frac_latent = 0.4
3023
3354
  other_pl.weekday_fractions = ConstantDaySchedule
3024
3355
  other_pl.weekend_fractions = ConstantDaySchedule
3025
3356
  other_pl.monthly_multipliers = ConstantMonthSchedule
3026
- veh_pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging }[0]
3027
- veh_pl.kWh_per_year = 4000
3357
+ veh_pl = hpxml.plug_loads.find { |pl| pl.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging }
3358
+ veh_pl.kwh_per_year = 4000
3028
3359
  veh_pl.usage_multiplier = 1.3
3029
3360
  veh_pl.frac_sensible = 0.4
3030
3361
  veh_pl.frac_latent = 0.5
3031
3362
  veh_pl.weekday_fractions = ConstantDaySchedule
3032
3363
  veh_pl.weekend_fractions = ConstantDaySchedule
3033
3364
  veh_pl.monthly_multipliers = ConstantMonthSchedule
3034
- wellpump_pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == HPXML::PlugLoadTypeWellPump }[0]
3035
- wellpump_pl.kWh_per_year = 3000
3365
+ wellpump_pl = hpxml.plug_loads.find { |pl| pl.plug_load_type == HPXML::PlugLoadTypeWellPump }
3366
+ wellpump_pl.kwh_per_year = 3000
3036
3367
  wellpump_pl.usage_multiplier = 1.4
3037
3368
  wellpump_pl.frac_sensible = 0.3
3038
3369
  wellpump_pl.frac_latent = 0.6
@@ -3048,7 +3379,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3048
3379
 
3049
3380
  # Test defaults
3050
3381
  hpxml.plug_loads.each do |plug_load|
3051
- plug_load.kWh_per_year = nil
3382
+ plug_load.kwh_per_year = nil
3052
3383
  plug_load.usage_multiplier = nil
3053
3384
  plug_load.frac_sensible = nil
3054
3385
  plug_load.frac_latent = nil
@@ -3067,7 +3398,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3067
3398
  def test_fuel_loads
3068
3399
  # Test inputs not overridden by defaults
3069
3400
  hpxml = _create_hpxml('base-misc-loads-large-uncommon.xml')
3070
- gg_fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeGrill }[0]
3401
+ gg_fl = hpxml.fuel_loads.find { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeGrill }
3071
3402
  gg_fl.therm_per_year = 1000
3072
3403
  gg_fl.usage_multiplier = 0.9
3073
3404
  gg_fl.frac_sensible = 0.6
@@ -3075,7 +3406,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3075
3406
  gg_fl.weekday_fractions = ConstantDaySchedule
3076
3407
  gg_fl.weekend_fractions = ConstantDaySchedule
3077
3408
  gg_fl.monthly_multipliers = ConstantMonthSchedule
3078
- gl_fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeLighting }[0]
3409
+ gl_fl = hpxml.fuel_loads.find { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeLighting }
3079
3410
  gl_fl.therm_per_year = 2000
3080
3411
  gl_fl.usage_multiplier = 0.8
3081
3412
  gl_fl.frac_sensible = 0.5
@@ -3083,7 +3414,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3083
3414
  gl_fl.weekday_fractions = ConstantDaySchedule
3084
3415
  gl_fl.weekend_fractions = ConstantDaySchedule
3085
3416
  gl_fl.monthly_multipliers = ConstantMonthSchedule
3086
- gf_fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeFireplace }[0]
3417
+ gf_fl = hpxml.fuel_loads.find { |fl| fl.fuel_load_type == HPXML::FuelLoadTypeFireplace }
3087
3418
  gf_fl.therm_per_year = 3000
3088
3419
  gf_fl.usage_multiplier = 0.7
3089
3420
  gf_fl.frac_sensible = 0.4
@@ -3151,8 +3482,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3151
3482
 
3152
3483
  def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
3153
3484
  dst_enabled, dst_begin_month, dst_begin_day, dst_end_month, dst_end_day, heat_pump_sizing_methodology,
3154
- allow_increased_fixed_capacities, state_code, time_zone_utc_offset, occupancy_calculation_type,
3155
- temperature_capacitance_multiplier, natvent_days_per_week)
3485
+ allow_increased_fixed_capacities, state_code, time_zone_utc_offset, temperature_capacitance_multiplier,
3486
+ natvent_days_per_week, unavailable_period_begin_hour, unavailable_period_end_hour, unavailable_period_natvent_availability,
3487
+ shading_summer_begin_month, shading_summer_begin_day, shading_summer_end_month, shading_summer_end_day,
3488
+ manualj_heating_design_temp, manualj_cooling_design_temp, manualj_heating_setpoint, manualj_cooling_setpoint,
3489
+ manualj_humidity_setpoint, manualj_internal_loads_sensible, manualj_internal_loads_latent, manualj_num_occupants)
3156
3490
  assert_equal(tstep, hpxml.header.timestep)
3157
3491
  assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
3158
3492
  assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
@@ -3176,9 +3510,27 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3176
3510
  assert_equal(state_code, hpxml.header.state_code)
3177
3511
  end
3178
3512
  assert_equal(time_zone_utc_offset, hpxml.header.time_zone_utc_offset)
3179
- assert_equal(occupancy_calculation_type, hpxml.header.occupancy_calculation_type)
3180
3513
  assert_equal(temperature_capacitance_multiplier, hpxml.header.temperature_capacitance_multiplier)
3181
3514
  assert_equal(natvent_days_per_week, hpxml.header.natvent_days_per_week)
3515
+ if unavailable_period_begin_hour.nil? && unavailable_period_end_hour.nil? && unavailable_period_natvent_availability.nil?
3516
+ assert_equal(0, hpxml.header.unavailable_periods.size)
3517
+ else
3518
+ assert_equal(unavailable_period_begin_hour, hpxml.header.unavailable_periods[-1].begin_hour)
3519
+ assert_equal(unavailable_period_end_hour, hpxml.header.unavailable_periods[-1].end_hour)
3520
+ assert_equal(unavailable_period_natvent_availability, hpxml.header.unavailable_periods[-1].natvent_availability)
3521
+ end
3522
+ assert_equal(shading_summer_begin_month, hpxml.header.shading_summer_begin_month)
3523
+ assert_equal(shading_summer_begin_day, hpxml.header.shading_summer_begin_day)
3524
+ assert_equal(shading_summer_end_month, hpxml.header.shading_summer_end_month)
3525
+ assert_equal(shading_summer_end_day, hpxml.header.shading_summer_end_day)
3526
+ assert_in_epsilon(manualj_heating_design_temp, hpxml.header.manualj_heating_design_temp, 0.01)
3527
+ assert_in_epsilon(manualj_cooling_design_temp, hpxml.header.manualj_cooling_design_temp, 0.01)
3528
+ assert_equal(manualj_heating_setpoint, hpxml.header.manualj_heating_setpoint)
3529
+ assert_equal(manualj_cooling_setpoint, hpxml.header.manualj_cooling_setpoint)
3530
+ assert_equal(manualj_humidity_setpoint, hpxml.header.manualj_humidity_setpoint)
3531
+ assert_equal(manualj_internal_loads_sensible, hpxml.header.manualj_internal_loads_sensible)
3532
+ assert_equal(manualj_internal_loads_latent, hpxml.header.manualj_internal_loads_latent)
3533
+ assert_equal(manualj_num_occupants, hpxml.header.manualj_num_occupants)
3182
3534
  end
3183
3535
 
3184
3536
  def _test_default_emissions_values(scenario, elec_schedule_number_of_header_rows, elec_schedule_column_number,
@@ -3351,8 +3703,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3351
3703
  end
3352
3704
  end
3353
3705
 
3354
- def _test_default_occupancy_values(hpxml, num_occupants, weekday_sch, weekend_sch, monthly_mults)
3355
- assert_equal(num_occupants, hpxml.building_occupancy.number_of_residents)
3706
+ def _test_default_occupancy_values(hpxml, weekday_sch, weekend_sch, monthly_mults)
3356
3707
  if weekday_sch.nil?
3357
3708
  assert_nil(hpxml.building_occupancy.weekday_fractions)
3358
3709
  else
@@ -3383,15 +3734,23 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3383
3734
  end
3384
3735
  end
3385
3736
 
3386
- def _test_default_building_construction_values(hpxml, building_volume, average_ceiling_height, has_flue_or_chimney, n_bathrooms)
3737
+ def _test_default_building_construction_values(hpxml, building_volume, average_ceiling_height, n_bathrooms)
3387
3738
  assert_equal(building_volume, hpxml.building_construction.conditioned_building_volume)
3388
3739
  assert_in_epsilon(average_ceiling_height, hpxml.building_construction.average_ceiling_height, 0.01)
3389
- assert_equal(has_flue_or_chimney, hpxml.building_construction.has_flue_or_chimney)
3390
3740
  assert_equal(n_bathrooms, hpxml.building_construction.number_of_bathrooms)
3391
3741
  end
3392
3742
 
3393
- def _test_default_infiltration_values(air_infiltration_measurement, volume)
3394
- assert_equal(volume, air_infiltration_measurement.infiltration_volume)
3743
+ def _test_default_infiltration_values(hpxml, volume, has_flue_or_chimney_in_conditioned_space)
3744
+ assert_equal(volume, hpxml.air_infiltration_measurements[0].infiltration_volume)
3745
+ assert_equal(has_flue_or_chimney_in_conditioned_space, hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space)
3746
+ end
3747
+
3748
+ def _test_default_infiltration_compartmentalization_test_values(air_infiltration_measurement, a_ext)
3749
+ if a_ext.nil?
3750
+ assert_nil(air_infiltration_measurement.a_ext)
3751
+ else
3752
+ assert_in_delta(a_ext, air_infiltration_measurement.a_ext, 0.001)
3753
+ end
3395
3754
  end
3396
3755
 
3397
3756
  def _test_default_attic_values(attic, sla)
@@ -3523,30 +3882,32 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3523
3882
  end
3524
3883
 
3525
3884
  def _test_default_central_air_conditioner_values(cooling_system, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
3526
- airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer)
3885
+ airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer, crankcase_heater_watts)
3527
3886
  assert_equal(shr, cooling_system.cooling_shr)
3528
3887
  assert_equal(compressor_type, cooling_system.compressor_type)
3529
3888
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
3530
3889
  assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
3531
3890
  assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
3891
+ assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts)
3532
3892
  if cooling_capacity.nil?
3533
3893
  assert(cooling_system.cooling_capacity > 0)
3534
3894
  else
3535
- assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3895
+ assert_equal(cooling_capacity, cooling_system.cooling_capacity)
3536
3896
  end
3537
3897
  if cooling_efficiency_seer.nil?
3538
3898
  assert_nil(cooling_system.cooling_efficiency_seer)
3539
3899
  else
3540
- assert_equal(cooling_system.cooling_efficiency_seer, cooling_efficiency_seer)
3900
+ assert_equal(cooling_efficiency_seer, cooling_system.cooling_efficiency_seer)
3541
3901
  end
3542
3902
  end
3543
3903
 
3544
- def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity)
3904
+ def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity, crankcase_heater_watts)
3545
3905
  assert_equal(shr, cooling_system.cooling_shr)
3906
+ assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts)
3546
3907
  if cooling_capacity.nil?
3547
3908
  assert(cooling_system.cooling_capacity > 0)
3548
3909
  else
3549
- assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3910
+ assert_equal(cooling_capacity, cooling_system.cooling_capacity)
3550
3911
  end
3551
3912
  end
3552
3913
 
@@ -3559,30 +3920,39 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3559
3920
  end
3560
3921
 
3561
3922
  def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_watts_per_cfm, charge_defect_ratio,
3562
- airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer)
3923
+ airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer, crankcase_heater_watts)
3563
3924
  assert_equal(shr, cooling_system.cooling_shr)
3564
3925
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
3565
3926
  assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
3566
3927
  assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
3928
+ assert_equal(crankcase_heater_watts, cooling_system.crankcase_heater_watts)
3567
3929
  if cooling_capacity.nil?
3568
3930
  assert(cooling_system.cooling_capacity > 0)
3569
3931
  else
3570
- assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3932
+ assert_equal(cooling_capacity, cooling_system.cooling_capacity)
3571
3933
  end
3572
3934
  if cooling_efficiency_seer.nil?
3573
3935
  assert_nil(cooling_system.cooling_efficiency_seer)
3574
3936
  else
3575
- assert_equal(cooling_system.cooling_efficiency_seer, cooling_efficiency_seer)
3937
+ assert_equal(cooling_efficiency_seer, cooling_system.cooling_efficiency_seer)
3576
3938
  end
3939
+ assert_equal(HPXML::HVACCompressorTypeVariableSpeed, cooling_system.compressor_type)
3577
3940
  end
3578
3941
 
3579
- def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio, heating_capacity)
3942
+ def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio, heating_capacity,
3943
+ pilot_light, pilot_light_btuh)
3580
3944
  assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm)
3581
3945
  assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio)
3582
3946
  if heating_capacity.nil?
3583
3947
  assert(heating_system.heating_capacity > 0)
3584
3948
  else
3585
- assert_equal(heating_system.heating_capacity, heating_capacity)
3949
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3950
+ end
3951
+ assert_equal(pilot_light, heating_system.pilot_light)
3952
+ if pilot_light_btuh.nil?
3953
+ assert_nil(heating_system.pilot_light_btuh)
3954
+ else
3955
+ assert_equal(pilot_light_btuh, heating_system.pilot_light_btuh)
3586
3956
  end
3587
3957
  end
3588
3958
 
@@ -3591,34 +3961,52 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3591
3961
  if heating_capacity.nil?
3592
3962
  assert(heating_system.heating_capacity > 0)
3593
3963
  else
3594
- assert_equal(heating_system.heating_capacity, heating_capacity)
3964
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3595
3965
  end
3596
3966
  end
3597
3967
 
3598
- def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity)
3968
+ def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh)
3599
3969
  assert_equal(fan_watts, heating_system.fan_watts)
3600
3970
  if heating_capacity.nil?
3601
3971
  assert(heating_system.heating_capacity > 0)
3602
3972
  else
3603
- assert_equal(heating_system.heating_capacity, heating_capacity)
3973
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3974
+ end
3975
+ assert_equal(pilot_light, heating_system.pilot_light)
3976
+ if pilot_light_btuh.nil?
3977
+ assert_nil(heating_system.pilot_light_btuh)
3978
+ else
3979
+ assert_equal(pilot_light_btuh, heating_system.pilot_light_btuh)
3604
3980
  end
3605
3981
  end
3606
3982
 
3607
- def _test_default_boiler_values(heating_system, eae, heating_capacity)
3983
+ def _test_default_boiler_values(heating_system, eae, heating_capacity, pilot_light, pilot_light_btuh)
3608
3984
  assert_equal(eae, heating_system.electric_auxiliary_energy)
3609
3985
  if heating_capacity.nil?
3610
3986
  assert(heating_system.heating_capacity > 0)
3611
3987
  else
3612
- assert_equal(heating_system.heating_capacity, heating_capacity)
3988
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3989
+ end
3990
+ assert_equal(pilot_light, heating_system.pilot_light)
3991
+ if pilot_light_btuh.nil?
3992
+ assert_nil(heating_system.pilot_light_btuh)
3993
+ else
3994
+ assert_equal(pilot_light_btuh, heating_system.pilot_light_btuh)
3613
3995
  end
3614
3996
  end
3615
3997
 
3616
- def _test_default_stove_values(heating_system, fan_watts, heating_capacity)
3998
+ def _test_default_stove_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh)
3617
3999
  assert_equal(fan_watts, heating_system.fan_watts)
3618
4000
  if heating_capacity.nil?
3619
4001
  assert(heating_system.heating_capacity > 0)
3620
4002
  else
3621
- assert_equal(heating_system.heating_capacity, heating_capacity)
4003
+ assert_equal(heating_capacity, heating_system.heating_capacity)
4004
+ end
4005
+ assert_equal(pilot_light, heating_system.pilot_light)
4006
+ if pilot_light_btuh.nil?
4007
+ assert_nil(heating_system.pilot_light_btuh)
4008
+ else
4009
+ assert_equal(pilot_light_btuh, heating_system.pilot_light_btuh)
3622
4010
  end
3623
4011
  end
3624
4012
 
@@ -3627,7 +4015,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3627
4015
  if heating_capacity.nil?
3628
4016
  assert(heating_system.heating_capacity > 0)
3629
4017
  else
3630
- assert_equal(heating_system.heating_capacity, heating_capacity)
4018
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3631
4019
  end
3632
4020
  end
3633
4021
 
@@ -3636,16 +4024,22 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3636
4024
  if heating_capacity.nil?
3637
4025
  assert(heating_system.heating_capacity > 0)
3638
4026
  else
3639
- assert_equal(heating_system.heating_capacity, heating_capacity)
4027
+ assert_equal(heating_capacity, heating_system.heating_capacity)
3640
4028
  end
3641
4029
  end
3642
4030
 
3643
- def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity)
4031
+ def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity, pilot_light, pilot_light_btuh)
3644
4032
  assert_equal(fan_watts, heating_system.fan_watts)
3645
4033
  if heating_capacity.nil?
3646
4034
  assert(heating_system.heating_capacity > 0)
3647
4035
  else
3648
- assert_equal(heating_system.heating_capacity, heating_capacity)
4036
+ assert_equal(heating_capacity, heating_system.heating_capacity)
4037
+ end
4038
+ assert_equal(pilot_light, heating_system.pilot_light)
4039
+ if pilot_light_btuh.nil?
4040
+ assert_nil(heating_system.pilot_light_btuh)
4041
+ else
4042
+ assert_equal(pilot_light_btuh, heating_system.pilot_light_btuh)
3649
4043
  end
3650
4044
  end
3651
4045
 
@@ -3653,101 +4047,159 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3653
4047
  airflow_defect_ratio, cooling_capacity, heating_capacity,
3654
4048
  heating_capacity_17F, backup_heating_capacity,
3655
4049
  cooling_efficiency_seer, heating_efficiency_hspf,
3656
- backup_heating_lockout_temp)
4050
+ heating_capacity_retention_fraction, heating_capacity_retention_temp,
4051
+ crankcase_heater_watts)
3657
4052
  assert_equal(shr, heat_pump.cooling_shr)
3658
4053
  assert_equal(compressor_type, heat_pump.compressor_type)
3659
4054
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
3660
4055
  assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
3661
4056
  assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
4057
+ assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts)
3662
4058
  if cooling_capacity.nil?
3663
4059
  assert(heat_pump.cooling_capacity > 0)
3664
4060
  else
3665
- assert_equal(heat_pump.cooling_capacity, cooling_capacity)
4061
+ assert_equal(cooling_capacity, heat_pump.cooling_capacity)
3666
4062
  end
3667
4063
  if heating_capacity.nil?
3668
4064
  assert(heat_pump.heating_capacity > 0)
3669
4065
  else
3670
- assert_equal(heat_pump.heating_capacity, heating_capacity)
4066
+ assert_equal(heating_capacity, heat_pump.heating_capacity)
3671
4067
  end
3672
4068
  if heating_capacity_17F.nil?
3673
- # assert(heat_pump.heating_capacity_17F > 0) # FUTURE
4069
+ assert_nil(heat_pump.heating_capacity_17F)
3674
4070
  else
3675
- assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
4071
+ assert_equal(heating_capacity_17F, heat_pump.heating_capacity_17F)
3676
4072
  end
3677
4073
  if backup_heating_capacity.nil?
3678
4074
  assert(heat_pump.backup_heating_capacity > 0)
3679
4075
  else
3680
- assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
4076
+ assert_equal(backup_heating_capacity, heat_pump.backup_heating_capacity)
3681
4077
  end
3682
4078
  if cooling_efficiency_seer.nil?
3683
4079
  assert_nil(heat_pump.cooling_efficiency_seer)
3684
4080
  else
3685
- assert_equal(heat_pump.cooling_efficiency_seer, cooling_efficiency_seer)
4081
+ assert_equal(cooling_efficiency_seer, heat_pump.cooling_efficiency_seer)
3686
4082
  end
3687
4083
  if heating_efficiency_hspf.nil?
3688
4084
  assert_nil(heat_pump.heating_efficiency_hspf)
3689
4085
  else
3690
- assert_equal(heat_pump.heating_efficiency_hspf, heating_efficiency_hspf)
4086
+ assert_equal(heating_efficiency_hspf, heat_pump.heating_efficiency_hspf)
4087
+ end
4088
+ if heating_capacity_retention_fraction.nil?
4089
+ assert_nil(heat_pump.heating_capacity_retention_fraction)
4090
+ else
4091
+ assert_in_delta(heating_capacity_retention_fraction, heat_pump.heating_capacity_retention_fraction, 0.01)
4092
+ end
4093
+ if heating_capacity_retention_temp.nil?
4094
+ assert_nil(heat_pump.heating_capacity_retention_temp)
4095
+ else
4096
+ assert_equal(heating_capacity_retention_temp, heat_pump.heating_capacity_retention_temp)
3691
4097
  end
3692
- assert_equal(heat_pump.backup_heating_lockout_temp, backup_heating_lockout_temp)
3693
4098
  end
3694
4099
 
3695
- def _test_default_pthp_values(heat_pump, shr, cooling_capacity, heating_capacity,
3696
- backup_heating_lockout_temp)
4100
+ def _test_default_pthp_values(heat_pump, shr, cooling_capacity, heating_capacity, heating_capacity_17F,
4101
+ heating_capacity_retention_fraction, heating_capacity_retention_temp,
4102
+ crankcase_heater_watts)
3697
4103
  assert_equal(shr, heat_pump.cooling_shr)
4104
+ assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts)
3698
4105
  if cooling_capacity.nil?
3699
4106
  assert(heat_pump.cooling_capacity > 0)
3700
4107
  else
3701
- assert_equal(heat_pump.cooling_capacity, cooling_capacity)
4108
+ assert_equal(cooling_capacity, heat_pump.cooling_capacity)
3702
4109
  end
3703
4110
  if heating_capacity.nil?
3704
4111
  assert(heat_pump.heating_capacity > 0)
3705
4112
  else
3706
- assert_equal(heat_pump.heating_capacity, heating_capacity)
4113
+ assert_equal(heating_capacity, heat_pump.heating_capacity)
4114
+ end
4115
+ if heating_capacity_17F.nil?
4116
+ assert_nil(heat_pump.heating_capacity_17F)
4117
+ else
4118
+ assert_equal(heating_capacity_17F, heat_pump.heating_capacity_17F)
4119
+ end
4120
+ if heating_capacity_retention_fraction.nil?
4121
+ assert_nil(heat_pump.heating_capacity_retention_fraction)
4122
+ else
4123
+ assert_in_delta(heating_capacity_retention_fraction, heat_pump.heating_capacity_retention_fraction, 0.01)
4124
+ end
4125
+ if heating_capacity_retention_temp.nil?
4126
+ assert_nil(heat_pump.heating_capacity_retention_temp)
4127
+ else
4128
+ assert_equal(heating_capacity_retention_temp, heat_pump.heating_capacity_retention_temp)
3707
4129
  end
3708
- assert_equal(heat_pump.backup_heating_lockout_temp, backup_heating_lockout_temp)
3709
4130
  end
3710
4131
 
3711
4132
  def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, charge_defect_ratio,
3712
4133
  airflow_defect_ratio, cooling_capacity, heating_capacity,
3713
4134
  heating_capacity_17F, backup_heating_capacity,
3714
4135
  cooling_efficiency_seer, heating_efficiency_hspf,
3715
- backup_heating_lockout_temp)
4136
+ heating_capacity_retention_fraction, heating_capacity_retention_temp,
4137
+ crankcase_heater_watts)
3716
4138
  assert_equal(shr, heat_pump.cooling_shr)
3717
4139
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
3718
4140
  assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
3719
4141
  assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
4142
+ assert_equal(crankcase_heater_watts, heat_pump.crankcase_heater_watts)
3720
4143
  if cooling_capacity.nil?
3721
4144
  assert(heat_pump.cooling_capacity > 0)
3722
4145
  else
3723
- assert_equal(heat_pump.cooling_capacity, cooling_capacity)
4146
+ assert_equal(cooling_capacity, heat_pump.cooling_capacity)
3724
4147
  end
3725
4148
  if heating_capacity.nil?
3726
4149
  assert(heat_pump.heating_capacity > 0)
3727
4150
  else
3728
- assert_equal(heat_pump.heating_capacity, heating_capacity)
4151
+ assert_equal(heating_capacity, heat_pump.heating_capacity)
3729
4152
  end
3730
4153
  if heating_capacity_17F.nil?
3731
- # assert(heat_pump.heating_capacity_17F > 0) # FUTURE
4154
+ assert_nil(heat_pump.heating_capacity_17F)
3732
4155
  else
3733
- assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
4156
+ assert_equal(heating_capacity_17F, heat_pump.heating_capacity_17F)
3734
4157
  end
3735
4158
  if backup_heating_capacity.nil?
3736
4159
  assert(heat_pump.backup_heating_capacity > 0)
3737
4160
  else
3738
- assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
4161
+ assert_equal(backup_heating_capacity, heat_pump.backup_heating_capacity)
3739
4162
  end
3740
4163
  if cooling_efficiency_seer.nil?
3741
4164
  assert_nil(heat_pump.cooling_efficiency_seer)
3742
4165
  else
3743
- assert_equal(heat_pump.cooling_efficiency_seer, cooling_efficiency_seer)
4166
+ assert_equal(cooling_efficiency_seer, heat_pump.cooling_efficiency_seer)
3744
4167
  end
3745
4168
  if heating_efficiency_hspf.nil?
3746
4169
  assert_nil(heat_pump.heating_efficiency_hspf)
3747
4170
  else
3748
- assert_equal(heat_pump.heating_efficiency_hspf, heating_efficiency_hspf)
4171
+ assert_equal(heating_efficiency_hspf, heat_pump.heating_efficiency_hspf)
4172
+ end
4173
+ assert_equal(HPXML::HVACCompressorTypeVariableSpeed, heat_pump.compressor_type)
4174
+ if heating_capacity_retention_fraction.nil?
4175
+ assert_nil(heat_pump.heating_capacity_retention_fraction)
4176
+ else
4177
+ assert_in_delta(heating_capacity_retention_fraction, heat_pump.heating_capacity_retention_fraction, 0.01)
4178
+ end
4179
+ if heating_capacity_retention_temp.nil?
4180
+ assert_nil(heat_pump.heating_capacity_retention_temp)
4181
+ else
4182
+ assert_equal(heating_capacity_retention_temp, heat_pump.heating_capacity_retention_temp)
4183
+ end
4184
+ end
4185
+
4186
+ def _test_default_heat_pump_temperature_values(heat_pump, compressor_lockout_temp, backup_heating_lockout_temp,
4187
+ backup_heating_switchover_temp)
4188
+ if compressor_lockout_temp.nil?
4189
+ assert_nil(heat_pump.compressor_lockout_temp)
4190
+ else
4191
+ assert_equal(compressor_lockout_temp, heat_pump.compressor_lockout_temp)
4192
+ end
4193
+ if backup_heating_lockout_temp.nil?
4194
+ assert_nil(heat_pump.backup_heating_lockout_temp)
4195
+ else
4196
+ assert_equal(backup_heating_lockout_temp, heat_pump.backup_heating_lockout_temp)
4197
+ end
4198
+ if backup_heating_switchover_temp.nil?
4199
+ assert_nil(heat_pump.backup_heating_switchover_temp)
4200
+ else
4201
+ assert_equal(backup_heating_switchover_temp, heat_pump.backup_heating_switchover_temp)
3749
4202
  end
3750
- assert_equal(heat_pump.backup_heating_lockout_temp, backup_heating_lockout_temp)
3751
4203
  end
3752
4204
 
3753
4205
  def _test_default_ground_to_air_heat_pump_values(heat_pump, pump_watts_per_ton, fan_watts_per_cfm,
@@ -3759,20 +4211,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3759
4211
  if cooling_capacity.nil?
3760
4212
  assert(heat_pump.cooling_capacity > 0)
3761
4213
  else
3762
- assert_equal(heat_pump.cooling_capacity, cooling_capacity)
4214
+ assert_equal(cooling_capacity, heat_pump.cooling_capacity)
3763
4215
  end
3764
4216
  if heating_capacity.nil?
3765
4217
  assert(heat_pump.heating_capacity > 0)
3766
4218
  else
3767
- assert_equal(heat_pump.heating_capacity, heating_capacity)
4219
+ assert_equal(heating_capacity, heat_pump.heating_capacity)
3768
4220
  end
3769
4221
  if backup_heating_capacity.nil?
3770
4222
  assert(heat_pump.backup_heating_capacity > 0)
3771
4223
  else
3772
- assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
4224
+ assert_equal(backup_heating_capacity, heat_pump.backup_heating_capacity)
3773
4225
  end
3774
4226
  end
3775
4227
 
4228
+ def _test_default_hvac_location_values(hvac_system, location)
4229
+ assert_equal(location, hvac_system.location)
4230
+ end
4231
+
3776
4232
  def _test_default_hvac_control_setpoint_values(hvac_control, heating_setpoint_temp, cooling_setpoint_temp)
3777
4233
  assert_equal(heating_setpoint_temp, hvac_control.heating_setpoint_temp)
3778
4234
  assert_equal(cooling_setpoint_temp, hvac_control.cooling_setpoint_temp)
@@ -3795,7 +4251,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3795
4251
  end
3796
4252
 
3797
4253
  def _test_default_duct_values(hpxml, supply_locations, return_locations, supply_areas, return_areas,
3798
- supply_fracs, return_fracs, n_return_registers, supply_area_mults, return_area_mults)
4254
+ supply_fracs, return_fracs, n_return_registers, supply_area_mults, return_area_mults,
4255
+ supply_buried_levels, return_buried_levels, supply_effective_rvalues, return_effective_rvalues)
3799
4256
  supply_duct_idx = 0
3800
4257
  return_duct_idx = 0
3801
4258
  hpxml.hvac_distributions.each do |hvac_distribution|
@@ -3808,12 +4265,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3808
4265
  assert_in_epsilon(supply_areas[supply_duct_idx], duct.duct_surface_area, 0.01)
3809
4266
  assert_in_epsilon(supply_fracs[supply_duct_idx], duct.duct_fraction_area, 0.01)
3810
4267
  assert_in_epsilon(supply_area_mults[supply_duct_idx], duct.duct_surface_area_multiplier, 0.01)
4268
+ assert_equal(supply_buried_levels[supply_duct_idx], duct.duct_buried_insulation_level)
4269
+ assert_in_epsilon(supply_effective_rvalues[supply_duct_idx], duct.duct_effective_r_value, 0.01)
3811
4270
  supply_duct_idx += 1
3812
4271
  elsif duct.duct_type == HPXML::DuctTypeReturn
3813
4272
  assert_equal(return_locations[return_duct_idx], duct.duct_location)
3814
4273
  assert_in_epsilon(return_areas[return_duct_idx], duct.duct_surface_area, 0.01)
3815
4274
  assert_in_epsilon(return_fracs[return_duct_idx], duct.duct_fraction_area, 0.01)
3816
4275
  assert_in_epsilon(return_area_mults[return_duct_idx], duct.duct_surface_area_multiplier, 0.01)
4276
+ assert_equal(return_buried_levels[return_duct_idx], duct.duct_buried_insulation_level)
4277
+ assert_in_epsilon(return_effective_rvalues[return_duct_idx], duct.duct_effective_r_value, 0.01)
3817
4278
  return_duct_idx += 1
3818
4279
  end
3819
4280
  end
@@ -3822,12 +4283,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3822
4283
 
3823
4284
  def _test_default_mech_vent_values(hpxml, is_shared_system, hours_in_operation, fan_power, flow_rate,
3824
4285
  cfis_vent_mode_airflow_fraction = nil, cfis_addtl_runtime_operating_mode = nil)
3825
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && !f.is_cfis_supplemental_fan? }[0]
4286
+ vent_fan = hpxml.ventilation_fans.find { |f| f.used_for_whole_building_ventilation && !f.is_cfis_supplemental_fan? }
3826
4287
 
3827
4288
  assert_equal(is_shared_system, vent_fan.is_shared_system)
3828
4289
  assert_equal(hours_in_operation, vent_fan.hours_in_operation)
3829
- assert_in_epsilon(fan_power, vent_fan.fan_power, 0.01)
3830
- assert_in_epsilon(flow_rate, vent_fan.rated_flow_rate.to_f + vent_fan.calculated_flow_rate.to_f + vent_fan.tested_flow_rate.to_f + vent_fan.delivered_ventilation.to_f, 0.01)
4290
+ assert_in_delta(fan_power, vent_fan.fan_power, 0.1)
4291
+ assert_in_delta(flow_rate, vent_fan.rated_flow_rate.to_f + vent_fan.calculated_flow_rate.to_f + vent_fan.tested_flow_rate.to_f + vent_fan.delivered_ventilation.to_f, 0.1)
3831
4292
  if cfis_vent_mode_airflow_fraction.nil?
3832
4293
  assert_nil(vent_fan.cfis_vent_mode_airflow_fraction)
3833
4294
  else
@@ -3841,7 +4302,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3841
4302
  end
3842
4303
 
3843
4304
  def _test_default_mech_vent_suppl_values(hpxml, is_shared_system, hours_in_operation, fan_power, flow_rate)
3844
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && f.is_cfis_supplemental_fan? }[0]
4305
+ vent_fan = hpxml.ventilation_fans.find { |f| f.used_for_whole_building_ventilation && f.is_cfis_supplemental_fan? }
3845
4306
 
3846
4307
  assert_equal(is_shared_system, vent_fan.is_shared_system)
3847
4308
  if hours_in_operation.nil?
@@ -3853,20 +4314,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3853
4314
  assert_in_epsilon(flow_rate, vent_fan.rated_flow_rate.to_f + vent_fan.calculated_flow_rate.to_f + vent_fan.tested_flow_rate.to_f + vent_fan.delivered_ventilation.to_f, 0.01)
3854
4315
  end
3855
4316
 
3856
- def _test_default_kitchen_fan_values(hpxml, quantity, flow_rate, hours_in_operation, fan_power, start_hour)
3857
- kitchen_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }[0]
4317
+ def _test_default_kitchen_fan_values(hpxml, count, flow_rate, hours_in_operation, fan_power, start_hour)
4318
+ kitchen_fan = hpxml.ventilation_fans.find { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }
3858
4319
 
3859
- assert_equal(quantity, kitchen_fan.quantity)
4320
+ assert_equal(count, kitchen_fan.count)
3860
4321
  assert_equal(flow_rate, kitchen_fan.rated_flow_rate.to_f + kitchen_fan.calculated_flow_rate.to_f + kitchen_fan.tested_flow_rate.to_f + kitchen_fan.delivered_ventilation.to_f)
3861
4322
  assert_equal(hours_in_operation, kitchen_fan.hours_in_operation)
3862
4323
  assert_equal(fan_power, kitchen_fan.fan_power)
3863
4324
  assert_equal(start_hour, kitchen_fan.start_hour)
3864
4325
  end
3865
4326
 
3866
- def _test_default_bath_fan_values(hpxml, quantity, flow_rate, hours_in_operation, fan_power, start_hour)
3867
- bath_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }[0]
4327
+ def _test_default_bath_fan_values(hpxml, count, flow_rate, hours_in_operation, fan_power, start_hour)
4328
+ bath_fan = hpxml.ventilation_fans.find { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }
3868
4329
 
3869
- assert_equal(quantity, bath_fan.quantity)
4330
+ assert_equal(count, bath_fan.count)
3870
4331
  assert_equal(flow_rate, bath_fan.rated_flow_rate.to_f + bath_fan.calculated_flow_rate.to_f + bath_fan.tested_flow_rate.to_f + bath_fan.delivered_ventilation.to_f)
3871
4332
  assert_equal(hours_in_operation, bath_fan.hours_in_operation)
3872
4333
  assert_equal(fan_power, bath_fan.fan_power)
@@ -3874,7 +4335,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3874
4335
  end
3875
4336
 
3876
4337
  def _test_default_whole_house_fan_values(hpxml, flow_rate, fan_power)
3877
- whf = hpxml.ventilation_fans.select { |f| f.used_for_seasonal_cooling_load_reduction }[0]
4338
+ whf = hpxml.ventilation_fans.find { |f| f.used_for_seasonal_cooling_load_reduction }
3878
4339
 
3879
4340
  assert_equal(flow_rate, whf.rated_flow_rate.to_f + whf.calculated_flow_rate.to_f + whf.tested_flow_rate.to_f + whf.delivered_ventilation.to_f)
3880
4341
  assert_equal(fan_power, whf.fan_power)
@@ -3975,45 +4436,47 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3975
4436
  def _test_default_pv_system_values(hpxml, interver_efficiency, system_loss_frac, is_shared_system, location, tracking, module_type, azimuth)
3976
4437
  hpxml.pv_systems.each do |pv|
3977
4438
  assert_equal(is_shared_system, pv.is_shared_system)
3978
- assert_equal(interver_efficiency, pv.inverter_efficiency)
3979
4439
  assert_in_epsilon(system_loss_frac, pv.system_losses_fraction, 0.01)
3980
4440
  assert_equal(location, pv.location)
3981
4441
  assert_equal(tracking, pv.tracking)
3982
4442
  assert_equal(module_type, pv.module_type)
3983
4443
  assert_equal(azimuth, pv.array_azimuth)
3984
4444
  end
4445
+ hpxml.inverters.each do |inv|
4446
+ assert_equal(interver_efficiency, inv.inverter_efficiency)
4447
+ end
3985
4448
  end
3986
4449
 
3987
- def _test_default_battery_values(hpxml, nominal_capacity_kwh, nominal_capacity_ah, usable_capacity_kwh, usable_capacity_ah,
4450
+ def _test_default_battery_values(battery, nominal_capacity_kwh, nominal_capacity_ah, usable_capacity_kwh, usable_capacity_ah,
3988
4451
  rated_power_output, location, lifetime_model, round_trip_efficiency)
3989
4452
  if nominal_capacity_kwh.nil?
3990
- assert_nil(hpxml.batteries[0].nominal_capacity_kwh)
4453
+ assert_nil(battery.nominal_capacity_kwh)
3991
4454
  else
3992
- assert_equal(nominal_capacity_kwh, hpxml.batteries[0].nominal_capacity_kwh)
4455
+ assert_equal(nominal_capacity_kwh, battery.nominal_capacity_kwh)
3993
4456
  end
3994
4457
  if nominal_capacity_ah.nil?
3995
- assert_nil(hpxml.batteries[0].nominal_capacity_ah)
4458
+ assert_nil(battery.nominal_capacity_ah)
3996
4459
  else
3997
- assert_equal(nominal_capacity_ah, hpxml.batteries[0].nominal_capacity_ah)
4460
+ assert_equal(nominal_capacity_ah, battery.nominal_capacity_ah)
3998
4461
  end
3999
4462
  if usable_capacity_kwh.nil?
4000
- assert_nil(hpxml.batteries[0].usable_capacity_kwh)
4463
+ assert_nil(battery.usable_capacity_kwh)
4001
4464
  else
4002
- assert_equal(usable_capacity_kwh, hpxml.batteries[0].usable_capacity_kwh)
4465
+ assert_equal(usable_capacity_kwh, battery.usable_capacity_kwh)
4003
4466
  end
4004
4467
  if usable_capacity_ah.nil?
4005
- assert_nil(hpxml.batteries[0].usable_capacity_ah)
4468
+ assert_nil(battery.usable_capacity_ah)
4006
4469
  else
4007
- assert_equal(usable_capacity_ah, hpxml.batteries[0].usable_capacity_ah)
4470
+ assert_equal(usable_capacity_ah, battery.usable_capacity_ah)
4008
4471
  end
4009
- assert_equal(rated_power_output, hpxml.batteries[0].rated_power_output)
4010
- assert_equal(location, hpxml.batteries[0].location)
4472
+ assert_equal(rated_power_output, battery.rated_power_output)
4473
+ assert_equal(location, battery.location)
4011
4474
  if lifetime_model.nil?
4012
- assert_nil(hpxml.batteries[0].lifetime_model)
4475
+ assert_nil(battery.lifetime_model)
4013
4476
  else
4014
- assert_equal(lifetime_model, hpxml.batteries[0].lifetime_model)
4477
+ assert_equal(lifetime_model, battery.lifetime_model)
4015
4478
  end
4016
- assert_equal(round_trip_efficiency, hpxml.batteries[0].round_trip_efficiency)
4479
+ assert_equal(round_trip_efficiency, battery.round_trip_efficiency)
4017
4480
  end
4018
4481
 
4019
4482
  def _test_default_generator_values(hpxml, is_shared_system)
@@ -4280,8 +4743,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
4280
4743
  end
4281
4744
  end
4282
4745
 
4283
- def _test_default_ceiling_fan_values(ceiling_fan, quantity, efficiency, weekday_sch, weekend_sch, monthly_mults)
4284
- assert_equal(quantity, ceiling_fan.quantity)
4746
+ def _test_default_ceiling_fan_values(ceiling_fan, count, efficiency, weekday_sch, weekend_sch, monthly_mults)
4747
+ assert_equal(count, ceiling_fan.count)
4285
4748
  assert_in_epsilon(efficiency, ceiling_fan.efficiency, 0.01)
4286
4749
  if weekday_sch.nil?
4287
4750
  assert_nil(ceiling_fan.weekday_fractions)
@@ -4333,8 +4796,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
4333
4796
  end
4334
4797
  end
4335
4798
 
4336
- def _test_default_pool_pump_values(pool, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4337
- assert_in_epsilon(kWh_per_year, pool.pump_kwh_per_year, 0.01)
4799
+ def _test_default_pool_pump_values(pool, kwh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4800
+ assert_in_epsilon(kwh_per_year, pool.pump_kwh_per_year, 0.01)
4338
4801
  assert_equal(usage_multiplier, pool.pump_usage_multiplier)
4339
4802
  assert_equal(weekday_sch, pool.pump_weekday_fractions)
4340
4803
  assert_equal(weekend_sch, pool.pump_weekend_fractions)
@@ -4374,18 +4837,18 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
4374
4837
  end
4375
4838
  end
4376
4839
 
4377
- def _test_default_hot_tub_pump_values(hot_tub, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4378
- assert_in_epsilon(kWh_per_year, hot_tub.pump_kwh_per_year, 0.01)
4840
+ def _test_default_hot_tub_pump_values(hot_tub, kwh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4841
+ assert_in_epsilon(kwh_per_year, hot_tub.pump_kwh_per_year, 0.01)
4379
4842
  assert_equal(usage_multiplier, hot_tub.pump_usage_multiplier)
4380
4843
  assert_equal(weekday_sch, hot_tub.pump_weekday_fractions)
4381
4844
  assert_equal(weekend_sch, hot_tub.pump_weekend_fractions)
4382
4845
  assert_equal(monthly_mults, hot_tub.pump_monthly_multipliers)
4383
4846
  end
4384
4847
 
4385
- def _test_default_plug_load_values(hpxml, load_type, kWh_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4386
- pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == load_type }[0]
4848
+ def _test_default_plug_load_values(hpxml, load_type, kwh_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4849
+ pl = hpxml.plug_loads.find { |pl| pl.plug_load_type == load_type }
4387
4850
 
4388
- assert_in_epsilon(kWh_per_year, pl.kWh_per_year, 0.01)
4851
+ assert_in_epsilon(kwh_per_year, pl.kwh_per_year, 0.01)
4389
4852
  assert_equal(usage_multiplier, pl.usage_multiplier)
4390
4853
  assert_in_epsilon(frac_sensible, pl.frac_sensible, 0.01)
4391
4854
  assert_in_epsilon(frac_latent, pl.frac_latent, 0.01)
@@ -4395,7 +4858,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
4395
4858
  end
4396
4859
 
4397
4860
  def _test_default_fuel_load_values(hpxml, load_type, therm_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
4398
- fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == load_type }[0]
4861
+ fl = hpxml.fuel_loads.find { |fl| fl.fuel_load_type == load_type }
4399
4862
 
4400
4863
  assert_in_epsilon(therm_per_year, fl.therm_per_year, 0.01)
4401
4864
  assert_equal(usage_multiplier, fl.usage_multiplier)