urbanopt-cli 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
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 +11 -2
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +6 -5
  6. data/LICENSE.md +18 -15
  7. data/README.md +2 -1
  8. data/Rakefile +2 -37
  9. data/example_files/Gemfile +8 -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)