urbanopt-cli 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +6 -5
  3. data/CHANGELOG.md +16 -2
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +8 -7
  6. data/LICENSE.md +18 -15
  7. data/README.md +2 -1
  8. data/Rakefile +2 -37
  9. data/example_files/Gemfile +10 -8
  10. data/example_files/mappers/Baseline.rb +170 -191
  11. data/example_files/mappers/ChilledWaterStorage.rb +8 -30
  12. data/example_files/mappers/ClassProject.rb +2 -27
  13. data/example_files/mappers/CreateBar.rb +2 -28
  14. data/example_files/mappers/EvCharging.rb +2 -27
  15. data/example_files/mappers/FlexibleHotWater.rb +2 -27
  16. data/example_files/mappers/Floorspace.rb +2 -27
  17. data/example_files/mappers/HighEfficiency.rb +2 -27
  18. data/example_files/mappers/HighEfficiencyCreateBar.rb +2 -27
  19. data/example_files/mappers/HighEfficiencyFloorspace.rb +2 -27
  20. data/example_files/mappers/PeakHoursMelsShedding.rb +4 -27
  21. data/example_files/mappers/PeakHoursThermostatAdjust.rb +4 -27
  22. data/example_files/mappers/ThermalStorage.rb +2 -28
  23. data/example_files/measures/BuildResidentialModel/measure.rb +30 -60
  24. data/example_files/measures/BuildResidentialModel/measure.xml +253 -84
  25. data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
  26. data/example_files/python_deps/dependencies.json +3 -3
  27. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
  28. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +28 -19
  29. data/example_files/resources/hpxml-measures/.gitignore +0 -997
  30. data/example_files/resources/hpxml-measures/.readthedocs.yml +9 -0
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +476 -230
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +244 -75
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +42 -15
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +24 -9
  35. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +11 -33
  36. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +23 -50
  37. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/README.md +2 -2
  38. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/constants.rb +119 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +67 -290
  40. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.md +6 -5
  41. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +78 -349
  42. data/example_files/resources/hpxml-measures/Changelog.md +80 -10
  43. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +212 -144
  44. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +164 -170
  45. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +238 -167
  46. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +1 -1
  47. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -4
  48. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +36 -6
  49. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +33 -0
  50. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  51. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +9 -7
  52. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +79 -61
  53. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +387 -124
  54. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +427 -196
  55. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +11515 -2
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/README.md +1 -0
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +224 -85
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +334 -319
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +572 -838
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +162 -68
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +4 -20
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +12 -10
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +34 -37
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +8 -101
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +31 -40
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -1
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-non-stochastic.csv +8761 -0
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-10-mins.csv +52561 -52561
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic.csv +8761 -8761
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +384 -155
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +1 -1
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/util.rb +2 -2
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +68 -90
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +34 -223
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -1
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +16 -4
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +94 -40
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +765 -302
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +119 -69
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +8 -8
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +51 -11
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +196 -9
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +36 -13
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -3
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +571 -61
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +190 -81
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +11 -11
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +188 -50
  92. data/example_files/resources/hpxml-measures/README.md +3 -3
  93. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +659 -815
  94. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +301 -1112
  95. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +605 -350
  96. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +18 -14
  97. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +15 -15
  98. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +13 -3
  99. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +3 -3
  100. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +894 -596
  101. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +127 -76
  102. data/example_files/resources/hpxml-measures/tasks.rb +185 -2802
  103. data/example_files/resources/hpxml-measures/workflow/hpxml_inputs.json +3401 -0
  104. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +0 -1
  105. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +0 -1
  106. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +0 -1
  107. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +0 -1
  108. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +0 -1
  109. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +1 -3
  110. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +0 -1
  111. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +1 -3
  112. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +0 -1
  113. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +1 -3
  114. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +0 -1
  115. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +0 -1
  116. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +0 -1
  117. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +0 -1
  118. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +0 -1
  119. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +3 -4
  120. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +17 -4
  121. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +2 -3
  122. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +3 -4
  123. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +3 -4
  124. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +4 -5
  125. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +3 -4
  126. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +3 -4
  127. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +3 -4
  128. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +3 -4
  129. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +1 -1
  130. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +1 -1
  131. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +1 -1
  132. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +1 -1
  133. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +0 -1
  134. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +4 -5
  135. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +3 -3
  136. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +3 -3
  137. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +3 -4
  138. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +3 -3
  139. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +3 -4
  140. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +3 -3
  141. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +3 -4
  142. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +3 -3
  143. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +3 -4
  144. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +0 -1
  145. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +0 -1
  146. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +0 -1
  147. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +0 -1
  148. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +0 -1
  149. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +1 -0
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +1 -0
  151. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +12 -8
  152. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +10 -40
  153. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +10 -40
  154. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +10 -40
  155. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +10 -40
  156. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +10 -40
  157. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +10 -40
  158. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +10 -40
  159. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +10 -40
  160. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +10 -40
  161. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +10 -40
  162. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +10 -40
  163. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +10 -40
  164. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +10 -40
  165. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +10 -40
  166. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +9 -39
  167. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +9 -39
  168. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +10 -40
  169. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +10 -40
  170. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +10 -40
  171. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +10 -40
  172. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +10 -40
  173. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-2stories.xml → base-bldgtype-attached-2stories.xml} +610 -639
  174. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-atticroof-cathedral.xml → base-bldgtype-attached-atticroof-cathedral.xml} +558 -587
  175. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-attached-infil-compartmentalization-test.xml +611 -0
  176. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached.xml → base-bldgtype-attached.xml} +610 -639
  177. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +10 -39
  178. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +10 -39
  179. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +10 -39
  180. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +10 -39
  181. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +10 -39
  182. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-infil-compartmentalization-test.xml +462 -0
  183. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-multifamily-calctype-operational.xml → base-bldgtype-multifamily-residents-1.xml} +453 -480
  184. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +10 -39
  185. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +10 -39
  186. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +10 -39
  187. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +10 -39
  188. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +10 -39
  189. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +10 -39
  190. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +10 -39
  191. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +10 -39
  192. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +10 -39
  193. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +10 -39
  194. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +10 -39
  195. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +10 -39
  196. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +10 -39
  197. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +10 -39
  198. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +10 -39
  199. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +11 -40
  200. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +10 -39
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +10 -39
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +10 -39
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +10 -39
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +10 -39
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +10 -39
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +15 -40
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +10 -39
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +10 -39
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +10 -39
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +10 -40
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +10 -40
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +10 -40
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +10 -40
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +10 -40
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +10 -40
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +10 -40
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +10 -40
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +10 -40
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +10 -40
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +10 -40
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +10 -40
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +10 -40
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +10 -40
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +10 -40
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +10 -40
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +10 -40
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +10 -40
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +10 -40
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +10 -40
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +10 -40
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +10 -40
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +10 -40
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +10 -40
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +10 -40
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +10 -40
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +10 -40
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +10 -40
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +10 -40
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +10 -40
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +10 -40
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +10 -40
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +10 -40
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +10 -40
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +10 -40
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +10 -40
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +10 -40
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +10 -40
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +10 -40
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +10 -40
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +10 -40
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +11 -43
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +10 -40
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +10 -40
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +10 -40
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +10 -40
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +10 -40
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +10 -40
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +10 -40
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +10 -40
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +10 -40
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +10 -40
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +10 -40
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +10 -40
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +10 -40
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +10 -40
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +10 -40
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +10 -40
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +10 -40
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +10 -40
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +19 -25
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +10 -40
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +10 -40
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +10 -40
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +10 -40
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +10 -40
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +10 -40
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +10 -40
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +18 -24
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +11 -41
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +11 -41
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +10 -40
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ela.xml +549 -0
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +13 -43
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +10 -40
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-cfm.xml +552 -0
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +10 -40
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +10 -40
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +17 -47
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +10 -40
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +10 -40
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +10 -40
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +10 -40
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +10 -40
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +10 -40
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +10 -40
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +10 -40
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +10 -40
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +10 -40
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading-seasons.xml +559 -0
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +10 -40
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +10 -40
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +10 -40
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +19 -25
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +10 -40
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +10 -40
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-insulation.xml +10 -40
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +10 -40
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +10 -40
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +10 -40
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +10 -40
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +10 -40
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +10 -40
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +10 -40
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +10 -40
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +10 -40
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +10 -40
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosized-backup.xml +557 -0
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +16 -41
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml} +552 -583
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +16 -41
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml → base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml} +562 -586
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +16 -41
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +16 -41
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +16 -41
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +587 -0
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +17 -42
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +16 -41
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +16 -41
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +16 -41
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +10 -40
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +10 -40
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +10 -40
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +10 -40
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +10 -40
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +10 -40
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +10 -40
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +10 -40
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +10 -40
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +10 -40
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +10 -40
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +10 -40
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +10 -40
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +10 -40
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +10 -40
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +10 -40
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +10 -40
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +10 -40
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +10 -40
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +10 -40
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +10 -40
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +11 -41
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +11 -41
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +11 -41
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted-backup-hardsized.xml +553 -0
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +11 -41
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +10 -40
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +10 -40
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +10 -40
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +10 -40
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +10 -40
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +10 -40
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +10 -40
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +10 -40
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +10 -40
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +10 -40
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +10 -40
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +10 -40
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +10 -40
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +10 -40
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +10 -40
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +10 -40
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +10 -40
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +10 -40
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +10 -40
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-baseboard.xml +519 -0
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +10 -40
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +10 -40
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +10 -40
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +16 -40
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +16 -40
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +16 -40
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +10 -40
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +10 -40
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +16 -40
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +16 -40
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +16 -40
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-sizing-controls.xml +566 -0
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +10 -40
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +10 -40
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +10 -40
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +10 -40
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +10 -40
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +10 -40
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only-pilot.xml +513 -0
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +10 -40
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +10 -40
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +10 -40
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +10 -40
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +10 -40
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +10 -40
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +10 -40
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +10 -40
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +16 -41
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-crankcase-heater-40w.xml +556 -0
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +10 -40
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +560 -0
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +17 -42
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +17 -42
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +17 -42
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +17 -42
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +10 -40
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +10 -40
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-buried.xml +555 -0
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-effective-rvalue.xml +553 -0
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +10 -40
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +10 -40
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +10 -40
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +10 -40
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -40
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +10 -40
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +10 -40
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +10 -40
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only-pilot-light.xml +506 -0
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +10 -40
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +10 -40
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +10 -40
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +10 -40
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +10 -40
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +10 -40
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +10 -40
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-pilot.xml +542 -0
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +10 -40
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +10 -40
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +10 -40
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +10 -40
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +10 -40
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +10 -40
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +10 -40
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +10 -40
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +10 -40
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +14 -41
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +14 -41
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +14 -41
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +10 -40
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +10 -40
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +10 -40
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +10 -40
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +10 -40
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +10 -40
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +14 -41
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +10 -40
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +10 -40
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +16 -41
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +16 -41
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +16 -41
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +525 -0
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +564 -0
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +16 -41
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +506 -0
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -41
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +10 -40
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +10 -40
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +10 -40
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +10 -40
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-natural-gas.xml +10 -40
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +10 -40
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +513 -0
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +16 -40
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +10 -40
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +10 -40
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +10 -40
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +10 -40
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +10 -40
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +16 -40
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +10 -40
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +10 -40
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +10 -40
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +10 -40
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +10 -40
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +10 -40
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +10 -40
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +10 -40
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +10 -40
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +11 -41
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +10 -40
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-kwh-per-year.xml +529 -0
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-mixed.xml +537 -0
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none-ceiling-fans.xml +516 -0
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -7
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +10 -40
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +10 -40
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +10 -40
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +10 -40
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +10 -40
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +10 -40
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +10 -40
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +10 -40
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +10 -40
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +10 -40
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +10 -40
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +12 -42
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +10 -40
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +10 -40
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -40
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +10 -40
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +10 -40
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +10 -40
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +10 -40
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +10 -40
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +10 -40
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +10 -40
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +10 -40
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +10 -40
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +14 -44
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +10 -40
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +10 -40
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +10 -38
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +10 -40
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +16 -42
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +16 -42
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +16 -42
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +10 -40
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +14 -37
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +16 -42
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +12 -42
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +12 -42
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +12 -42
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +10 -40
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +10 -38
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +10 -38
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +10 -40
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading-bldgtype-multifamily.xml +509 -0
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +10 -40
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +10 -40
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +10 -41
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +30 -138
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +16 -42
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +24 -26
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-round-trip-efficiency.xml +16 -42
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +16 -42
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +16 -42
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +18 -44
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +18 -44
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +18 -44
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +16 -42
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0-runperiod-1-month.xml +560 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0.xml +556 -0
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon.xml → base-residents-1-misc-loads-large-uncommon.xml} +616 -644
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon2.xml → base-residents-1-misc-loads-large-uncommon2.xml} +616 -644
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational.xml → base-residents-1.xml} +547 -575
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-defaults.xml → base-residents-5.xml} +515 -539
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +10 -40
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +10 -40
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml +565 -0
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-schedules-detailed-occupancy-smooth.xml → base-schedules-detailed-occupancy-stochastic-vacancy-year-round.xml} +563 -583
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +21 -41
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +10 -40
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +10 -40
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +10 -40
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +10 -40
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml +565 -0
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml +565 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +620 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy-year-round.xml +619 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +619 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +10 -38
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +10 -40
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +10 -40
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +10 -40
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +10 -40
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-temperature-capacitance-multiplier.xml +10 -40
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +10 -40
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +10 -40
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +10 -40
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-30-mins.xml +10 -40
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +10 -37
  577. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +16 -4
  578. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +16 -3
  579. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +16 -3
  580. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +16 -2
  581. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Long_Residence.xml +386 -0
  582. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Vatilo_Residence.xml +381 -0
  583. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Victor_Residence.xml +370 -0
  584. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +2 -2
  585. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +2 -5
  586. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +2 -5
  587. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +2 -5
  588. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +2 -5
  589. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +2 -5
  590. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +2 -5
  591. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +2 -5
  592. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +2 -5
  593. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +2 -5
  594. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +2 -5
  595. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +2 -5
  596. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +2 -5
  597. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +2 -5
  598. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +2 -5
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +2 -5
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +2 -12
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +2 -12
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +2 -5
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +2 -5
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +2 -5
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +2 -5
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +2 -5
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +2 -5
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -9
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -9
  610. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +475 -444
  611. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +475 -444
  612. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +177 -112
  613. data/example_files/resources/meta_measure.rb +2 -27
  614. data/example_files/xml_building/17/README.md +3 -3
  615. data/lib/uo_cli/version.rb +3 -38
  616. data/lib/uo_cli.rb +3 -38
  617. data/uo_cli.gemspec +6 -7
  618. metadata +70 -51
  619. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.json +0 -388
  620. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +0 -6136
  621. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +0 -4846
  622. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-smooth.csv +0 -8761
  623. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-vacancy.csv +0 -8761
  624. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +0 -35
  625. data/example_files/resources/hpxml-measures/weather/USA_CO_Colorado.Springs-Peterson.Field.724660_TMY3-cache.csv +0 -35
  626. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +0 -35
  627. data/example_files/resources/hpxml-measures/weather/USA_DE_Wilmington-New.Castle.County.AP.724089_TMY3-cache.csv +0 -35
  628. data/example_files/resources/hpxml-measures/weather/USA_FL_Miami.Intl.AP.722020_TMY3-cache.csv +0 -35
  629. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +0 -35
  630. data/example_files/resources/hpxml-measures/weather/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3-cache.csv +0 -35
  631. data/example_files/resources/hpxml-measures/weather/USA_MN_Duluth.Intl.AP.727450_TMY3-cache.csv +0 -35
  632. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +0 -35
  633. data/example_files/resources/hpxml-measures/weather/USA_NC_Charlotte-Douglas.Intl.AP.723140_TMY3-cache.csv +0 -35
  634. data/example_files/resources/hpxml-measures/weather/USA_NJ_Cape.May.County.AP.745966_TMY3-cache.csv +0 -35
  635. data/example_files/resources/hpxml-measures/weather/USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3-cache.csv +0 -35
  636. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +0 -35
  637. data/example_files/resources/hpxml-measures/weather/USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3-cache.csv +0 -35
  638. data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +0 -35
  639. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +0 -35
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +0 -2508
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +0 -2508
@@ -12,24 +12,7 @@ class HPXMLDefaults
12
12
  ncfl = hpxml.building_construction.number_of_conditioned_floors
13
13
  ncfl_ag = hpxml.building_construction.number_of_conditioned_floors_above_grade
14
14
  has_uncond_bsmnt = hpxml.has_location(HPXML::LocationBasementUnconditioned)
15
-
16
- infil_volume = nil
17
- infil_height = nil
18
- infil_measurements = []
19
- hpxml.air_infiltration_measurements.each do |measurement|
20
- is_ach = ((measurement.unit_of_measure == HPXML::UnitsACH) && !measurement.house_pressure.nil?)
21
- is_cfm = ((measurement.unit_of_measure == HPXML::UnitsCFM) && !measurement.house_pressure.nil?)
22
- is_nach = (measurement.unit_of_measure == HPXML::UnitsACHNatural)
23
- next unless (is_ach || is_cfm || is_nach)
24
-
25
- infil_measurements << measurement
26
- if not measurement.infiltration_volume.nil?
27
- infil_volume = measurement.infiltration_volume
28
- end
29
- if not measurement.infiltration_height.nil?
30
- infil_height = measurement.infiltration_height
31
- end
32
- end
15
+ infil_measurement = Airflow.get_infiltration_measurement_of_interest(hpxml.air_infiltration_measurements)
33
16
 
34
17
  # Check for presence of fuels once
35
18
  has_fuel = {}
@@ -38,15 +21,16 @@ class HPXMLDefaults
38
21
  has_fuel[fuel] = hpxml.has_fuel(fuel, hpxml_doc)
39
22
  end
40
23
 
41
- apply_header(hpxml, epw_file)
24
+ apply_header(hpxml, epw_file, weather)
25
+ apply_header_sizing(hpxml, weather, nbeds)
42
26
  apply_emissions_scenarios(hpxml, has_fuel)
43
27
  apply_utility_bill_scenarios(runner, hpxml, has_fuel)
44
28
  apply_site(hpxml)
45
29
  apply_neighbor_buildings(hpxml)
46
- apply_building_occupancy(hpxml, nbeds, schedules_file)
47
- apply_building_construction(hpxml, cfa, nbeds, infil_volume)
30
+ apply_building_occupancy(hpxml, schedules_file)
31
+ apply_building_construction(hpxml, cfa, nbeds, infil_measurement)
48
32
  apply_climate_and_risk_zones(hpxml, epw_file)
49
- apply_infiltration(hpxml, infil_volume, infil_height, infil_measurements)
33
+ apply_infiltration(hpxml, infil_measurement)
50
34
  apply_attics(hpxml)
51
35
  apply_foundations(hpxml)
52
36
  apply_roofs(hpxml)
@@ -60,27 +44,28 @@ class HPXMLDefaults
60
44
  apply_doors(hpxml)
61
45
  apply_partition_wall_mass(hpxml)
62
46
  apply_furniture_mass(hpxml)
63
- apply_hvac(hpxml, weather, convert_shared_systems)
47
+ apply_hvac(runner, hpxml, weather, convert_shared_systems)
64
48
  apply_hvac_control(hpxml, schedules_file)
65
49
  apply_hvac_distribution(hpxml, ncfl, ncfl_ag)
66
- apply_ventilation_fans(hpxml, infil_measurements, weather, cfa, nbeds)
50
+ apply_hvac_location(hpxml)
51
+ apply_ventilation_fans(hpxml, weather, cfa, nbeds)
67
52
  apply_water_heaters(hpxml, nbeds, eri_version, schedules_file)
53
+ apply_flue_or_chimney(hpxml)
68
54
  apply_hot_water_distribution(hpxml, cfa, ncfl, has_uncond_bsmnt)
69
55
  apply_water_fixtures(hpxml, schedules_file)
70
56
  apply_solar_thermal_systems(hpxml)
71
57
  apply_appliances(hpxml, nbeds, eri_version, schedules_file)
72
58
  apply_lighting(hpxml, schedules_file)
73
59
  apply_ceiling_fans(hpxml, nbeds, weather, schedules_file)
74
- nbeds_adjusted = get_nbeds_adjusted_for_operational_calculation(hpxml)
75
- apply_pools_and_hot_tubs(hpxml, cfa, nbeds_adjusted, schedules_file)
76
- apply_plug_loads(hpxml, cfa, nbeds_adjusted, schedules_file)
77
- apply_fuel_loads(hpxml, cfa, nbeds_adjusted, schedules_file)
60
+ apply_pools_and_hot_tubs(hpxml, cfa, schedules_file)
61
+ apply_plug_loads(hpxml, cfa, schedules_file)
62
+ apply_fuel_loads(hpxml, cfa, schedules_file)
78
63
  apply_pv_systems(hpxml)
79
64
  apply_generators(hpxml)
80
65
  apply_batteries(hpxml)
81
66
 
82
67
  # Do HVAC sizing after all other defaults have been applied
83
- apply_hvac_sizing(hpxml, weather, cfa, nbeds)
68
+ apply_hvac_sizing(hpxml, weather, cfa)
84
69
  end
85
70
 
86
71
  def self.get_default_azimuths(hpxml)
@@ -121,12 +106,7 @@ class HPXMLDefaults
121
106
 
122
107
  private
123
108
 
124
- def self.apply_header(hpxml, epw_file)
125
- if hpxml.header.occupancy_calculation_type.nil?
126
- hpxml.header.occupancy_calculation_type = HPXML::OccupancyCalculationTypeAsset
127
- hpxml.header.occupancy_calculation_type_isdefaulted = true
128
- end
129
-
109
+ def self.apply_header(hpxml, epw_file, weather)
130
110
  if hpxml.header.timestep.nil?
131
111
  hpxml.header.timestep = 60
132
112
  hpxml.header.timestep_isdefaulted = true
@@ -189,15 +169,6 @@ class HPXMLDefaults
189
169
  end
190
170
  end
191
171
 
192
- if hpxml.header.allow_increased_fixed_capacities.nil?
193
- hpxml.header.allow_increased_fixed_capacities = false
194
- hpxml.header.allow_increased_fixed_capacities_isdefaulted = true
195
- end
196
- if hpxml.header.heat_pump_sizing_methodology.nil? && (hpxml.heat_pumps.size > 0)
197
- hpxml.header.heat_pump_sizing_methodology = HPXML::HeatPumpSizingHERS
198
- hpxml.header.heat_pump_sizing_methodology_isdefaulted = true
199
- end
200
-
201
172
  if (not epw_file.nil?) && hpxml.header.state_code.nil?
202
173
  state_province_region = epw_file.stateProvinceRegion.upcase
203
174
  if /^[A-Z]{2}$/.match(state_province_region)
@@ -220,6 +191,98 @@ class HPXMLDefaults
220
191
  hpxml.header.natvent_days_per_week = 3
221
192
  hpxml.header.natvent_days_per_week_isdefaulted = true
222
193
  end
194
+
195
+ hpxml.header.unavailable_periods.each do |unavailable_period|
196
+ if unavailable_period.begin_hour.nil?
197
+ unavailable_period.begin_hour = 0
198
+ unavailable_period.begin_hour_isdefaulted = true
199
+ end
200
+ if unavailable_period.end_hour.nil?
201
+ unavailable_period.end_hour = 24
202
+ unavailable_period.end_hour_isdefaulted = true
203
+ end
204
+ if unavailable_period.natvent_availability.nil?
205
+ unavailable_period.natvent_availability = HPXML::ScheduleRegular
206
+ unavailable_period.natvent_availability_isdefaulted = true
207
+ end
208
+ end
209
+
210
+ if hpxml.header.shading_summer_begin_month.nil? || hpxml.header.shading_summer_begin_day.nil? || hpxml.header.shading_summer_end_month.nil? || hpxml.header.shading_summer_end_day.nil?
211
+ if not weather.nil?
212
+ # Default based on Building America seasons
213
+ _, default_cooling_months = HVAC.get_default_heating_and_cooling_seasons(weather)
214
+ begin_month, begin_day, end_month, end_day = Schedule.get_begin_and_end_dates_from_monthly_array(default_cooling_months, sim_calendar_year)
215
+ if not begin_month.nil? # Check if no summer
216
+ hpxml.header.shading_summer_begin_month = begin_month
217
+ hpxml.header.shading_summer_begin_day = begin_day
218
+ hpxml.header.shading_summer_end_month = end_month
219
+ hpxml.header.shading_summer_end_day = end_day
220
+ hpxml.header.shading_summer_begin_month_isdefaulted = true
221
+ hpxml.header.shading_summer_begin_day_isdefaulted = true
222
+ hpxml.header.shading_summer_end_month_isdefaulted = true
223
+ hpxml.header.shading_summer_end_day_isdefaulted = true
224
+ end
225
+ end
226
+ end
227
+ end
228
+
229
+ def self.apply_header_sizing(hpxml, weather, nbeds)
230
+ if hpxml.header.allow_increased_fixed_capacities.nil?
231
+ hpxml.header.allow_increased_fixed_capacities = false
232
+ hpxml.header.allow_increased_fixed_capacities_isdefaulted = true
233
+ end
234
+
235
+ if hpxml.header.heat_pump_sizing_methodology.nil? && (hpxml.heat_pumps.size > 0)
236
+ hpxml.header.heat_pump_sizing_methodology = HPXML::HeatPumpSizingHERS
237
+ hpxml.header.heat_pump_sizing_methodology_isdefaulted = true
238
+ end
239
+
240
+ if hpxml.header.manualj_heating_design_temp.nil?
241
+ hpxml.header.manualj_heating_design_temp = weather.design.HeatingDrybulb.round(2)
242
+ hpxml.header.manualj_heating_design_temp_isdefaulted = true
243
+ end
244
+
245
+ if hpxml.header.manualj_cooling_design_temp.nil?
246
+ hpxml.header.manualj_cooling_design_temp = weather.design.CoolingDrybulb.round(2)
247
+ hpxml.header.manualj_cooling_design_temp_isdefaulted = true
248
+ end
249
+
250
+ if hpxml.header.manualj_heating_setpoint.nil?
251
+ hpxml.header.manualj_heating_setpoint = 70.0 # deg-F, per Manual J
252
+ hpxml.header.manualj_heating_setpoint_isdefaulted = true
253
+ end
254
+
255
+ if hpxml.header.manualj_cooling_setpoint.nil?
256
+ hpxml.header.manualj_cooling_setpoint = 75.0 # deg-F, per Manual J
257
+ hpxml.header.manualj_cooling_setpoint_isdefaulted = true
258
+ end
259
+
260
+ if hpxml.header.manualj_humidity_setpoint.nil?
261
+ hpxml.header.manualj_humidity_setpoint = 0.5 # 50%
262
+ if hpxml.dehumidifiers.size > 0
263
+ hpxml.header.manualj_humidity_setpoint = [hpxml.header.manualj_humidity_setpoint, hpxml.dehumidifiers[0].rh_setpoint].min
264
+ end
265
+ hpxml.header.manualj_humidity_setpoint_isdefaulted = true
266
+ end
267
+
268
+ if hpxml.header.manualj_internal_loads_sensible.nil?
269
+ if hpxml.refrigerators.size + hpxml.freezers.size <= 1
270
+ hpxml.header.manualj_internal_loads_sensible = 2400.0 # Btuh, per Manual J
271
+ else
272
+ hpxml.header.manualj_internal_loads_sensible = 3600.0 # Btuh, per Manual J
273
+ end
274
+ hpxml.header.manualj_internal_loads_sensible_isdefaulted = true
275
+ end
276
+
277
+ if hpxml.header.manualj_internal_loads_latent.nil?
278
+ hpxml.header.manualj_internal_loads_latent = 0.0 # Btuh
279
+ hpxml.header.manualj_internal_loads_latent_isdefaulted = true
280
+ end
281
+
282
+ if hpxml.header.manualj_num_occupants.nil?
283
+ hpxml.header.manualj_num_occupants = nbeds + 1 # Per Manual J
284
+ hpxml.header.manualj_num_occupants_isdefaulted = true
285
+ end
223
286
  end
224
287
 
225
288
  def self.apply_emissions_scenarios(hpxml, has_fuel)
@@ -441,12 +504,15 @@ class HPXMLDefaults
441
504
  end
442
505
  end
443
506
 
444
- def self.apply_building_occupancy(hpxml, nbeds, schedules_file)
507
+ def self.apply_building_occupancy(hpxml, schedules_file)
445
508
  if hpxml.building_occupancy.number_of_residents.nil?
446
- hpxml.building_occupancy.number_of_residents = Geometry.get_occupancy_default_num(nbeds)
447
- hpxml.building_occupancy.number_of_residents_isdefaulted = true
509
+ hpxml.building_construction.additional_properties.adjusted_number_of_bedrooms = hpxml.building_construction.number_of_bedrooms
510
+ else
511
+ # Set adjusted number of bedrooms for operational calculation; this is an adjustment on
512
+ # ANSI 301 or Building America equations, which are based on number of bedrooms.
513
+ hpxml.building_construction.additional_properties.adjusted_number_of_bedrooms = get_nbeds_adjusted_for_operational_calculation(hpxml)
448
514
  end
449
- schedules_file_includes_occupants = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnOccupants)
515
+ schedules_file_includes_occupants = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnOccupants))
450
516
  if hpxml.building_occupancy.weekday_fractions.nil? && !schedules_file_includes_occupants
451
517
  hpxml.building_occupancy.weekday_fractions = Schedule.OccupantsWeekdayFractions
452
518
  hpxml.building_occupancy.weekday_fractions_isdefaulted = true
@@ -461,11 +527,11 @@ class HPXMLDefaults
461
527
  end
462
528
  end
463
529
 
464
- def self.apply_building_construction(hpxml, cfa, nbeds, infil_volume)
530
+ def self.apply_building_construction(hpxml, cfa, nbeds, infil_measurement)
465
531
  cond_crawl_volume = hpxml.inferred_conditioned_crawlspace_volume()
466
532
  if hpxml.building_construction.conditioned_building_volume.nil? && hpxml.building_construction.average_ceiling_height.nil?
467
- if not infil_volume.nil?
468
- hpxml.building_construction.average_ceiling_height = [infil_volume / cfa, 8.0].min
533
+ if not infil_measurement.infiltration_volume.nil?
534
+ hpxml.building_construction.average_ceiling_height = [infil_measurement.infiltration_volume / cfa, 8.0].min
469
535
  else
470
536
  hpxml.building_construction.average_ceiling_height = 8.0
471
537
  end
@@ -484,35 +550,6 @@ class HPXMLDefaults
484
550
  hpxml.building_construction.number_of_bathrooms = Float(Waterheater.get_default_num_bathrooms(nbeds)).to_i
485
551
  hpxml.building_construction.number_of_bathrooms_isdefaulted = true
486
552
  end
487
-
488
- if hpxml.building_construction.has_flue_or_chimney.nil?
489
- hpxml.building_construction.has_flue_or_chimney = false
490
- hpxml.building_construction.has_flue_or_chimney_isdefaulted = true
491
- hpxml.heating_systems.each do |heating_system|
492
- if [HPXML::HVACTypeFurnace, HPXML::HVACTypeBoiler, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeStove, HPXML::HVACTypeFixedHeater].include? heating_system.heating_system_type
493
- if not heating_system.heating_efficiency_afue.nil?
494
- next if heating_system.heating_efficiency_afue >= 0.89
495
- elsif not heating_system.heating_efficiency_percent.nil?
496
- next if heating_system.heating_efficiency_percent >= 0.89
497
- end
498
-
499
- hpxml.building_construction.has_flue_or_chimney = true
500
- elsif [HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
501
- next if heating_system.heating_system_fuel == HPXML::FuelTypeElectricity
502
-
503
- hpxml.building_construction.has_flue_or_chimney = true
504
- end
505
- end
506
- hpxml.water_heating_systems.each do |water_heating_system|
507
- if not water_heating_system.energy_factor.nil?
508
- next if water_heating_system.energy_factor >= 0.63
509
- elsif not water_heating_system.uniform_energy_factor.nil?
510
- next if Waterheater.calc_ef_from_uef(water_heating_system) >= 0.63
511
- end
512
-
513
- hpxml.building_construction.has_flue_or_chimney = true
514
- end
515
- end
516
553
  end
517
554
 
518
555
  def self.apply_climate_and_risk_zones(hpxml, epw_file)
@@ -527,19 +564,21 @@ class HPXMLDefaults
527
564
  end
528
565
  end
529
566
 
530
- def self.apply_infiltration(hpxml, infil_volume, infil_height, infil_measurements)
531
- if infil_volume.nil?
532
- infil_volume = hpxml.building_construction.conditioned_building_volume
533
- infil_measurements.each do |measurement|
534
- measurement.infiltration_volume = infil_volume
535
- measurement.infiltration_volume_isdefaulted = true
536
- end
567
+ def self.apply_infiltration(hpxml, infil_measurement)
568
+ if infil_measurement.infiltration_volume.nil?
569
+ infil_measurement.infiltration_volume = hpxml.building_construction.conditioned_building_volume
570
+ infil_measurement.infiltration_volume_isdefaulted = true
571
+ end
572
+ if infil_measurement.infiltration_height.nil?
573
+ infil_measurement.infiltration_height = hpxml.inferred_infiltration_height(infil_measurement.infiltration_volume)
574
+ infil_measurement.infiltration_height_isdefaulted = true
537
575
  end
538
- if infil_height.nil?
539
- infil_height = hpxml.inferred_infiltration_height(infil_volume)
540
- infil_measurements.each do |measurement|
541
- measurement.infiltration_height = infil_height
542
- measurement.infiltration_height_isdefaulted = true
576
+ if infil_measurement.a_ext.nil?
577
+ if (infil_measurement.infiltration_type == HPXML::InfiltrationTypeUnitTotal) &&
578
+ [HPXML::ResidentialTypeApartment, HPXML::ResidentialTypeSFA].include?(hpxml.building_construction.residential_facility_type)
579
+ tot_cb_area, ext_cb_area = hpxml.compartmentalization_boundary_areas()
580
+ infil_measurement.a_ext = (ext_cb_area / tot_cb_area).round(5)
581
+ infil_measurement.a_ext_isdefaulted = true
543
582
  end
544
583
  end
545
584
  end
@@ -1005,7 +1044,7 @@ class HPXMLDefaults
1005
1044
  end
1006
1045
  end
1007
1046
 
1008
- def self.apply_hvac(hpxml, weather, convert_shared_systems)
1047
+ def self.apply_hvac(runner, hpxml, weather, convert_shared_systems)
1009
1048
  if convert_shared_systems
1010
1049
  HVAC.apply_shared_systems(hpxml)
1011
1050
  end
@@ -1038,7 +1077,6 @@ class HPXMLDefaults
1038
1077
  cooling_system.cooling_efficiency_seer_isdefaulted = true
1039
1078
  cooling_system.cooling_efficiency_seer2 = nil
1040
1079
  end
1041
-
1042
1080
  hpxml.heat_pumps.each do |heat_pump|
1043
1081
  next unless [HPXML::HVACTypeHeatPumpAirToAir,
1044
1082
  HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump.heat_pump_type
@@ -1074,13 +1112,63 @@ class HPXMLDefaults
1074
1112
  heat_pump.compressor_type_isdefaulted = true
1075
1113
  end
1076
1114
 
1077
- # Default ASHP backup heating lockout capability
1115
+ # Default HP heating capacity retention
1078
1116
  hpxml.heat_pumps.each do |heat_pump|
1079
- next if heat_pump.backup_type.nil?
1117
+ next unless heat_pump.heating_capacity_retention_fraction.nil?
1118
+ next unless heat_pump.heating_capacity_17F.nil?
1119
+ next if [HPXML::HVACTypeHeatPumpGroundToAir, HPXML::HVACTypeHeatPumpWaterLoopToAir].include? heat_pump.heat_pump_type
1120
+
1121
+ heat_pump.heating_capacity_retention_temp = 5.0
1122
+ if [HPXML::HVACCompressorTypeSingleStage, HPXML::HVACCompressorTypeTwoStage].include? heat_pump.compressor_type
1123
+ heat_pump.heating_capacity_retention_fraction = 0.425
1124
+ elsif [HPXML::HVACCompressorTypeVariableSpeed].include? heat_pump.compressor_type
1125
+ heat_pump.heating_capacity_retention_fraction = 0.5
1126
+ end
1127
+ heat_pump.heating_capacity_retention_fraction_isdefaulted = true
1128
+ heat_pump.heating_capacity_retention_temp_isdefaulted = true
1129
+ end
1130
+
1131
+ # Default HP compressor lockout temp
1132
+ hpxml.heat_pumps.each do |heat_pump|
1133
+ next unless heat_pump.compressor_lockout_temp.nil?
1080
1134
  next unless heat_pump.backup_heating_switchover_temp.nil?
1135
+ next if heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
1136
+
1137
+ if heat_pump.backup_type == HPXML::HeatPumpBackupTypeIntegrated
1138
+ hp_backup_fuel = heat_pump.backup_heating_fuel
1139
+ elsif not heat_pump.backup_system.nil?
1140
+ hp_backup_fuel = heat_pump.backup_system.heating_system_fuel
1141
+ end
1142
+
1143
+ if (not hp_backup_fuel.nil?) && (hp_backup_fuel != HPXML::FuelTypeElectricity)
1144
+ heat_pump.compressor_lockout_temp = 25.0 # deg-F
1145
+ else
1146
+ if heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpMiniSplit
1147
+ heat_pump.compressor_lockout_temp = -20.0 # deg-F
1148
+ else
1149
+ heat_pump.compressor_lockout_temp = 0.0 # deg-F
1150
+ end
1151
+ end
1152
+ heat_pump.compressor_lockout_temp_isdefaulted = true
1153
+ end
1154
+
1155
+ # Default HP backup lockout temp
1156
+ hpxml.heat_pumps.each do |heat_pump|
1157
+ next if heat_pump.backup_type.nil?
1081
1158
  next unless heat_pump.backup_heating_lockout_temp.nil?
1159
+ next unless heat_pump.backup_heating_switchover_temp.nil?
1082
1160
 
1083
- heat_pump.backup_heating_lockout_temp = 40.0 # deg-F
1161
+ if heat_pump.backup_type == HPXML::HeatPumpBackupTypeIntegrated
1162
+ hp_backup_fuel = heat_pump.backup_heating_fuel
1163
+ else
1164
+ hp_backup_fuel = heat_pump.backup_system.heating_system_fuel
1165
+ end
1166
+
1167
+ if hp_backup_fuel == HPXML::FuelTypeElectricity
1168
+ heat_pump.backup_heating_lockout_temp = 40.0 # deg-F
1169
+ else
1170
+ heat_pump.backup_heating_lockout_temp = 50.0 # deg-F
1171
+ end
1084
1172
  heat_pump.backup_heating_lockout_temp_isdefaulted = true
1085
1173
  end
1086
1174
 
@@ -1280,6 +1368,49 @@ class HPXMLDefaults
1280
1368
  end
1281
1369
  end
1282
1370
 
1371
+ # Crankcase heater power [Watts]
1372
+ hpxml.cooling_systems.each do |cooling_system|
1373
+ next unless [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner, HPXML::HVACTypeRoomAirConditioner, HPXML::HVACTypePTAC].include? cooling_system.cooling_system_type
1374
+ next unless cooling_system.crankcase_heater_watts.nil?
1375
+
1376
+ if [HPXML::HVACTypeRoomAirConditioner, HPXML::HVACTypePTAC].include? cooling_system.cooling_system_type
1377
+ cooling_system.crankcase_heater_watts = 0.0
1378
+ else
1379
+ cooling_system.crankcase_heater_watts = 50 # From RESNET Publication No. 002-2017
1380
+ end
1381
+ cooling_system.crankcase_heater_watts_isdefaulted = true
1382
+ end
1383
+ hpxml.heat_pumps.each do |heat_pump|
1384
+ next unless [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpPTHP, HPXML::HVACTypeHeatPumpRoom].include? heat_pump.heat_pump_type
1385
+ next unless heat_pump.crankcase_heater_watts.nil?
1386
+
1387
+ if [HPXML::HVACTypeHeatPumpPTHP, HPXML::HVACTypeHeatPumpRoom].include? heat_pump.heat_pump_type
1388
+ heat_pump.crankcase_heater_watts = 0.0
1389
+ else
1390
+ heat_pump.crankcase_heater_watts = heat_pump.fraction_heat_load_served <= 0 ? 0.0 : 50 # From RESNET Publication No. 002-2017
1391
+ end
1392
+ heat_pump.crankcase_heater_watts_isdefaulted = true
1393
+ end
1394
+
1395
+ # Pilot Light
1396
+ hpxml.heating_systems.each do |heating_system|
1397
+ next unless [HPXML::HVACTypeFurnace,
1398
+ HPXML::HVACTypeWallFurnace,
1399
+ HPXML::HVACTypeFloorFurnace,
1400
+ HPXML::HVACTypeFireplace,
1401
+ HPXML::HVACTypeStove,
1402
+ HPXML::HVACTypeBoiler].include? heating_system.heating_system_type
1403
+
1404
+ if heating_system.pilot_light.nil?
1405
+ heating_system.pilot_light = false
1406
+ heating_system.pilot_light_isdefaulted = true
1407
+ end
1408
+ if heating_system.pilot_light && heating_system.pilot_light_btuh.nil?
1409
+ heating_system.pilot_light_btuh = 500.0
1410
+ heating_system.pilot_light_btuh_isdefaulted = true
1411
+ end
1412
+ end
1413
+
1283
1414
  # Detailed HVAC performance
1284
1415
  hpxml.cooling_systems.each do |cooling_system|
1285
1416
  clg_ap = cooling_system.additional_properties
@@ -1295,22 +1426,19 @@ class HPXMLDefaults
1295
1426
  # Note: We use HP cooling curve so that a central AC behaves the same.
1296
1427
  HVAC.set_num_speeds(cooling_system)
1297
1428
  HVAC.set_fan_power_rated(cooling_system) unless use_eer
1298
- HVAC.set_crankcase_assumptions(cooling_system)
1299
1429
  HVAC.set_cool_c_d(cooling_system, clg_ap.num_speeds)
1300
1430
  HVAC.set_cool_curves_central_air_source(cooling_system, use_eer)
1301
- HVAC.set_cool_rated_cfm_per_ton(cooling_system)
1302
- HVAC.set_cool_rated_shrs_gross(cooling_system)
1431
+ HVAC.set_cool_rated_shrs_gross(runner, cooling_system)
1303
1432
  HVAC.set_cool_rated_eirs(cooling_system) unless use_eer
1304
1433
 
1305
1434
  elsif [HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
1306
1435
  num_speeds = 10
1307
1436
  HVAC.set_num_speeds(cooling_system)
1308
- HVAC.set_crankcase_assumptions(cooling_system)
1309
1437
  HVAC.set_fan_power_rated(cooling_system)
1310
1438
 
1311
1439
  HVAC.set_cool_c_d(cooling_system, num_speeds)
1312
1440
  HVAC.set_cool_curves_mshp(cooling_system, num_speeds)
1313
- HVAC.set_cool_rated_cfm_per_ton_mshp(cooling_system, num_speeds)
1441
+ HVAC.set_cool_rated_shrs_gross(runner, cooling_system)
1314
1442
  HVAC.set_cool_rated_eirs_mshp(cooling_system, num_speeds)
1315
1443
 
1316
1444
  HVAC.set_mshp_downselected_speed_indices(cooling_system)
@@ -1328,7 +1456,7 @@ class HPXMLDefaults
1328
1456
  HPXML::HVACTypeFloorFurnace,
1329
1457
  HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
1330
1458
 
1331
- HVAC.set_heat_rated_cfm_per_ton(heating_system)
1459
+ heating_system.additional_properties.heat_rated_cfm_per_ton = HVAC.get_default_heat_cfm_per_ton(1, true)
1332
1460
  end
1333
1461
  hpxml.heat_pumps.each do |heat_pump|
1334
1462
  hp_ap = heat_pump.additional_properties
@@ -1342,35 +1470,30 @@ class HPXMLDefaults
1342
1470
  end
1343
1471
  HVAC.set_num_speeds(heat_pump)
1344
1472
  HVAC.set_fan_power_rated(heat_pump) unless use_eer_cop
1345
- HVAC.set_crankcase_assumptions(heat_pump)
1346
- HVAC.set_heat_pump_temperatures(heat_pump)
1473
+ HVAC.set_heat_pump_temperatures(heat_pump, runner)
1347
1474
 
1348
1475
  HVAC.set_cool_c_d(heat_pump, hp_ap.num_speeds)
1349
1476
  HVAC.set_cool_curves_central_air_source(heat_pump, use_eer_cop)
1350
- HVAC.set_cool_rated_cfm_per_ton(heat_pump)
1351
- HVAC.set_cool_rated_shrs_gross(heat_pump)
1477
+ HVAC.set_cool_rated_shrs_gross(runner, heat_pump)
1352
1478
  HVAC.set_cool_rated_eirs(heat_pump) unless use_eer_cop
1353
1479
 
1354
1480
  HVAC.set_heat_c_d(heat_pump, hp_ap.num_speeds)
1355
1481
  HVAC.set_heat_curves_central_air_source(heat_pump, use_eer_cop)
1356
- HVAC.set_heat_rated_cfm_per_ton(heat_pump)
1357
1482
  HVAC.set_heat_rated_eirs(heat_pump) unless use_eer_cop
1358
1483
 
1359
1484
  elsif [HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump.heat_pump_type
1360
1485
  num_speeds = 10
1361
1486
  HVAC.set_num_speeds(heat_pump)
1362
- HVAC.set_crankcase_assumptions(heat_pump)
1363
1487
  HVAC.set_fan_power_rated(heat_pump)
1364
- HVAC.set_heat_pump_temperatures(heat_pump)
1488
+ HVAC.set_heat_pump_temperatures(heat_pump, runner)
1365
1489
 
1366
1490
  HVAC.set_cool_c_d(heat_pump, num_speeds)
1367
1491
  HVAC.set_cool_curves_mshp(heat_pump, num_speeds)
1368
- HVAC.set_cool_rated_cfm_per_ton_mshp(heat_pump, num_speeds)
1492
+ HVAC.set_cool_rated_shrs_gross(runner, heat_pump)
1369
1493
  HVAC.set_cool_rated_eirs_mshp(heat_pump, num_speeds)
1370
1494
 
1371
1495
  HVAC.set_heat_c_d(heat_pump, num_speeds)
1372
1496
  HVAC.set_heat_curves_mshp(heat_pump, num_speeds)
1373
- HVAC.set_heat_rated_cfm_per_ton_mshp(heat_pump, num_speeds)
1374
1497
  HVAC.set_heat_rated_eirs_mshp(heat_pump, num_speeds)
1375
1498
 
1376
1499
  HVAC.set_mshp_downselected_speed_indices(heat_pump)
@@ -1380,7 +1503,7 @@ class HPXMLDefaults
1380
1503
  HVAC.set_curves_gshp(heat_pump)
1381
1504
 
1382
1505
  elsif [HPXML::HVACTypeHeatPumpWaterLoopToAir].include? heat_pump.heat_pump_type
1383
- HVAC.set_heat_pump_temperatures(heat_pump)
1506
+ HVAC.set_heat_pump_temperatures(heat_pump, runner)
1384
1507
 
1385
1508
  end
1386
1509
  end
@@ -1388,7 +1511,7 @@ class HPXMLDefaults
1388
1511
 
1389
1512
  def self.apply_hvac_control(hpxml, schedules_file)
1390
1513
  hpxml.hvac_controls.each do |hvac_control|
1391
- schedules_file_includes_heating_setpoint_temp = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnHeatingSetpoint)
1514
+ schedules_file_includes_heating_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHeatingSetpoint))
1392
1515
  if hvac_control.heating_setpoint_temp.nil? && hvac_control.weekday_heating_setpoints.nil? && !schedules_file_includes_heating_setpoint_temp
1393
1516
  # No heating setpoints; set a default heating setpoint for, e.g., natural ventilation
1394
1517
  htg_sp, _htg_setback_sp, _htg_setback_hrs_per_week, _htg_setback_start_hr = HVAC.get_default_heating_setpoint(HPXML::HVACControlTypeManual)
@@ -1396,7 +1519,7 @@ class HPXMLDefaults
1396
1519
  hvac_control.heating_setpoint_temp_isdefaulted = true
1397
1520
  end
1398
1521
 
1399
- schedules_file_includes_cooling_setpoint_temp = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnCoolingSetpoint)
1522
+ schedules_file_includes_cooling_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCoolingSetpoint))
1400
1523
  if hvac_control.cooling_setpoint_temp.nil? && hvac_control.weekday_cooling_setpoints.nil? && !schedules_file_includes_cooling_setpoint_temp
1401
1524
  # No cooling setpoints; set a default cooling setpoint for, e.g., natural ventilation
1402
1525
  clg_sp, _clg_setup_sp, _clg_setup_hrs_per_week, _clg_setup_start_hr = HVAC.get_default_cooling_setpoint(HPXML::HVACControlTypeManual)
@@ -1445,8 +1568,6 @@ class HPXMLDefaults
1445
1568
  next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
1446
1569
  next if hvac_distribution.ducts.empty?
1447
1570
 
1448
- # Default ducts
1449
-
1450
1571
  supply_ducts = hvac_distribution.ducts.select { |duct| duct.duct_type == HPXML::DuctTypeSupply }
1451
1572
  return_ducts = hvac_distribution.ducts.select { |duct| duct.duct_type == HPXML::DuctTypeReturn }
1452
1573
 
@@ -1523,10 +1644,80 @@ class HPXMLDefaults
1523
1644
  ducts.duct_surface_area_multiplier = 1.0
1524
1645
  ducts.duct_surface_area_multiplier_isdefaulted = true
1525
1646
  end
1647
+
1648
+ # Default buried insulation level
1649
+ hvac_distribution.ducts.each do |ducts|
1650
+ next unless ducts.duct_buried_insulation_level.nil?
1651
+
1652
+ ducts.duct_buried_insulation_level = HPXML::DuctBuriedInsulationNone
1653
+ ducts.duct_buried_insulation_level_isdefaulted = true
1654
+ end
1655
+
1656
+ # Default effective R-value
1657
+ hvac_distribution.ducts.each do |ducts|
1658
+ next unless ducts.duct_effective_r_value.nil?
1659
+
1660
+ ducts.duct_effective_r_value = Airflow.get_duct_effective_r_value(ducts.duct_insulation_r_value, ducts.duct_type, ducts.duct_buried_insulation_level)
1661
+ ducts.duct_effective_r_value_isdefaulted = true
1662
+ end
1663
+ end
1664
+ end
1665
+
1666
+ def self.apply_hvac_location(hpxml)
1667
+ # This needs to come after we have applied defaults for ducts
1668
+ hpxml.hvac_systems.each do |hvac_system|
1669
+ next unless hvac_system.location.nil?
1670
+
1671
+ hvac_system.location_isdefaulted = true
1672
+
1673
+ # Set default location based on distribution system
1674
+ dist_system = hvac_system.distribution_system
1675
+ if dist_system.nil?
1676
+ hvac_system.location = HPXML::LocationLivingSpace
1677
+ else
1678
+ dist_type = dist_system.distribution_system_type
1679
+ if dist_type == HPXML::HVACDistributionTypeAir
1680
+ # Find largest unconditioned supply duct location
1681
+ uncond_duct_locations = {}
1682
+ dist_system.ducts.select { |d| d.duct_type == HPXML::DuctTypeSupply }.each do |d|
1683
+ next if HPXML::conditioned_locations_this_unit.include? d.duct_location
1684
+ next if [HPXML::LocationExteriorWall, HPXML::LocationUnderSlab].include? d.duct_location # air handler won't be here
1685
+
1686
+ uncond_duct_locations[d.duct_location] = 0.0 if uncond_duct_locations[d.duct_location].nil?
1687
+ uncond_duct_locations[d.duct_location] += d.duct_surface_area
1688
+ end
1689
+ if uncond_duct_locations.empty?
1690
+ hvac_system.location = HPXML::LocationLivingSpace
1691
+ else
1692
+ hvac_system.location = uncond_duct_locations.key(uncond_duct_locations.values.max)
1693
+ if hvac_system.location == HPXML::LocationOutside
1694
+ # DuctLocation "outside" needs to be converted to a valid UnitLocation enumeration
1695
+ hvac_system.location = HPXML::LocationOtherExterior
1696
+ end
1697
+ end
1698
+ elsif dist_type == HPXML::HVACDistributionTypeHydronic
1699
+ # Assume same default logic as a water heater
1700
+ hvac_system.location = Waterheater.get_default_location(hpxml, hpxml.climate_and_risk_zones.climate_zone_ieccs[0])
1701
+ elsif dist_type == HPXML::HVACDistributionTypeDSE
1702
+ # DSE=1 implies distribution system in conditioned space
1703
+ has_dse_of_one = true
1704
+ if (hvac_system.respond_to? :fraction_heat_load_served) && (dist_system.annual_heating_dse != 1)
1705
+ has_dse_of_one = false
1706
+ end
1707
+ if (hvac_system.respond_to? :fraction_cool_load_served) && (dist_system.annual_cooling_dse != 1)
1708
+ has_dse_of_one = false
1709
+ end
1710
+ if has_dse_of_one
1711
+ hvac_system.location = HPXML::LocationLivingSpace
1712
+ else
1713
+ hvac_system.location = HPXML::LocationUnconditionedSpace
1714
+ end
1715
+ end
1716
+ end
1526
1717
  end
1527
1718
  end
1528
1719
 
1529
- def self.apply_ventilation_fans(hpxml, infil_measurements, weather, cfa, nbeds)
1720
+ def self.apply_ventilation_fans(hpxml, weather, cfa, nbeds)
1530
1721
  # Default mech vent systems
1531
1722
  hpxml.ventilation_fans.each do |vent_fan|
1532
1723
  next unless vent_fan.used_for_whole_building_ventilation
@@ -1544,7 +1735,7 @@ class HPXMLDefaults
1544
1735
  fail 'Defaulting flow rates for multiple mechanical ventilation systems is currently not supported.'
1545
1736
  end
1546
1737
 
1547
- vent_fan.rated_flow_rate = Airflow.get_default_mech_vent_flow_rate(hpxml, vent_fan, infil_measurements, weather, cfa, nbeds).round(1)
1738
+ vent_fan.rated_flow_rate = Airflow.get_default_mech_vent_flow_rate(hpxml, vent_fan, weather, cfa, nbeds).round(1)
1548
1739
  vent_fan.rated_flow_rate_isdefaulted = true
1549
1740
  end
1550
1741
  if vent_fan.fan_power.nil?
@@ -1567,9 +1758,9 @@ class HPXMLDefaults
1567
1758
  hpxml.ventilation_fans.each do |vent_fan|
1568
1759
  next unless (vent_fan.used_for_local_ventilation && (vent_fan.fan_location == HPXML::LocationKitchen))
1569
1760
 
1570
- if vent_fan.quantity.nil?
1571
- vent_fan.quantity = 1
1572
- vent_fan.quantity_isdefaulted = true
1761
+ if vent_fan.count.nil?
1762
+ vent_fan.count = 1
1763
+ vent_fan.count_isdefaulted = true
1573
1764
  end
1574
1765
  if vent_fan.rated_flow_rate.nil? && vent_fan.tested_flow_rate.nil? && vent_fan.calculated_flow_rate.nil? && vent_fan.delivered_ventilation.nil?
1575
1766
  vent_fan.rated_flow_rate = 100.0 # cfm, per BA HSP
@@ -1593,9 +1784,9 @@ class HPXMLDefaults
1593
1784
  hpxml.ventilation_fans.each do |vent_fan|
1594
1785
  next unless (vent_fan.used_for_local_ventilation && (vent_fan.fan_location == HPXML::LocationBath))
1595
1786
 
1596
- if vent_fan.quantity.nil?
1597
- vent_fan.quantity = hpxml.building_construction.number_of_bathrooms
1598
- vent_fan.quantity_isdefaulted = true
1787
+ if vent_fan.count.nil?
1788
+ vent_fan.count = hpxml.building_construction.number_of_bathrooms
1789
+ vent_fan.count_isdefaulted = true
1599
1790
  end
1600
1791
  if vent_fan.rated_flow_rate.nil? && vent_fan.tested_flow_rate.nil? && vent_fan.calculated_flow_rate.nil? && vent_fan.delivered_ventilation.nil?
1601
1792
  vent_fan.rated_flow_rate = 50.0 # cfm, per BA HSP
@@ -1636,7 +1827,7 @@ class HPXMLDefaults
1636
1827
  water_heating_system.is_shared_system = false
1637
1828
  water_heating_system.is_shared_system_isdefaulted = true
1638
1829
  end
1639
- schedules_file_includes_water_heater_setpoint_temp = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnWaterHeaterSetpoint)
1830
+ schedules_file_includes_water_heater_setpoint_temp = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnWaterHeaterSetpoint))
1640
1831
  if water_heating_system.temperature.nil? && !schedules_file_includes_water_heater_setpoint_temp
1641
1832
  water_heating_system.temperature = Waterheater.get_default_hot_water_temperature(eri_version)
1642
1833
  water_heating_system.temperature_isdefaulted = true
@@ -1675,9 +1866,9 @@ class HPXMLDefaults
1675
1866
  end
1676
1867
  end
1677
1868
  if (water_heating_system.water_heater_type == HPXML::WaterHeaterTypeHeatPump)
1678
- schedules_file_includes_water_heater_operating_mode = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnWaterHeaterOperatingMode)
1869
+ schedules_file_includes_water_heater_operating_mode = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnWaterHeaterOperatingMode))
1679
1870
  if water_heating_system.operating_mode.nil? && !schedules_file_includes_water_heater_operating_mode
1680
- water_heating_system.operating_mode = HPXML::WaterHeaterOperatingModeStandard
1871
+ water_heating_system.operating_mode = HPXML::WaterHeaterOperatingModeHybridAuto
1681
1872
  water_heating_system.operating_mode_isdefaulted = true
1682
1873
  end
1683
1874
  end
@@ -1696,6 +1887,14 @@ class HPXMLDefaults
1696
1887
  end
1697
1888
  end
1698
1889
 
1890
+ def self.apply_flue_or_chimney(hpxml)
1891
+ # This needs to come after we have applied defaults for HVAC/DHW systems
1892
+ if hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space.nil?
1893
+ hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space = get_default_flue_or_chimney_in_conditioned_space(hpxml)
1894
+ hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space_isdefaulted = true
1895
+ end
1896
+ end
1897
+
1699
1898
  def self.apply_hot_water_distribution(hpxml, cfa, ncfl, has_uncond_bsmnt)
1700
1899
  return if hpxml.hot_water_distributions.size == 0
1701
1900
 
@@ -1741,7 +1940,7 @@ class HPXMLDefaults
1741
1940
  hpxml.water_heating.water_fixtures_usage_multiplier = 1.0
1742
1941
  hpxml.water_heating.water_fixtures_usage_multiplier_isdefaulted = true
1743
1942
  end
1744
- schedules_file_includes_fixtures = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnHotWaterFixtures)
1943
+ schedules_file_includes_fixtures = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHotWaterFixtures))
1745
1944
  if hpxml.water_heating.water_fixtures_weekday_fractions.nil? && !schedules_file_includes_fixtures
1746
1945
  hpxml.water_heating.water_fixtures_weekday_fractions = Schedule.FixturesWeekdayFractions
1747
1946
  hpxml.water_heating.water_fixtures_weekday_fractions_isdefaulted = true
@@ -1799,15 +1998,17 @@ class HPXMLDefaults
1799
1998
  pv_system.module_type = HPXML::PVModuleTypeStandard
1800
1999
  pv_system.module_type_isdefaulted = true
1801
2000
  end
1802
- if pv_system.inverter_efficiency.nil?
1803
- pv_system.inverter_efficiency = PV.get_default_inv_eff()
1804
- pv_system.inverter_efficiency_isdefaulted = true
1805
- end
1806
2001
  if pv_system.system_losses_fraction.nil?
1807
2002
  pv_system.system_losses_fraction = PV.get_default_system_losses(pv_system.year_modules_manufactured)
1808
2003
  pv_system.system_losses_fraction_isdefaulted = true
1809
2004
  end
1810
2005
  end
2006
+ hpxml.inverters.each do |inverter|
2007
+ if inverter.inverter_efficiency.nil?
2008
+ inverter.inverter_efficiency = PV.get_default_inv_eff()
2009
+ inverter.inverter_efficiency_isdefaulted = true
2010
+ end
2011
+ end
1811
2012
  end
1812
2013
 
1813
2014
  def self.apply_generators(hpxml)
@@ -1909,7 +2110,7 @@ class HPXMLDefaults
1909
2110
  clothes_washer.usage_multiplier = 1.0
1910
2111
  clothes_washer.usage_multiplier_isdefaulted = true
1911
2112
  end
1912
- schedules_file_includes_cw = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnClothesWasher)
2113
+ schedules_file_includes_cw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnClothesWasher))
1913
2114
  if clothes_washer.weekday_fractions.nil? && !schedules_file_includes_cw
1914
2115
  clothes_washer.weekday_fractions = Schedule.ClothesWasherWeekdayFractions
1915
2116
  clothes_washer.weekday_fractions_isdefaulted = true
@@ -1957,7 +2158,7 @@ class HPXMLDefaults
1957
2158
  clothes_dryer.vented_flow_rate = 100.0
1958
2159
  clothes_dryer.vented_flow_rate_isdefaulted = true
1959
2160
  end
1960
- schedules_file_includes_cd = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnClothesDryer)
2161
+ schedules_file_includes_cd = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnClothesDryer))
1961
2162
  if clothes_dryer.weekday_fractions.nil? && !schedules_file_includes_cd
1962
2163
  clothes_dryer.weekday_fractions = Schedule.ClothesDryerWeekdayFractions
1963
2164
  clothes_dryer.weekday_fractions_isdefaulted = true
@@ -2002,7 +2203,7 @@ class HPXMLDefaults
2002
2203
  dishwasher.usage_multiplier = 1.0
2003
2204
  dishwasher.usage_multiplier_isdefaulted = true
2004
2205
  end
2005
- schedules_file_includes_dw = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnDishwasher)
2206
+ schedules_file_includes_dw = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnDishwasher))
2006
2207
  if dishwasher.weekday_fractions.nil? && !schedules_file_includes_dw
2007
2208
  dishwasher.weekday_fractions = Schedule.DishwasherWeekdayFractions
2008
2209
  dishwasher.weekday_fractions_isdefaulted = true
@@ -2033,7 +2234,7 @@ class HPXMLDefaults
2033
2234
  refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh]
2034
2235
  refrigerator.rated_annual_kwh_isdefaulted = true
2035
2236
  end
2036
- schedules_file_includes_extrafridge = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnExtraRefrigerator)
2237
+ schedules_file_includes_extrafridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnExtraRefrigerator))
2037
2238
  if refrigerator.weekday_fractions.nil? && !schedules_file_includes_extrafridge
2038
2239
  refrigerator.weekday_fractions = Schedule.ExtraRefrigeratorWeekdayFractions
2039
2240
  refrigerator.weekday_fractions_isdefaulted = true
@@ -2056,7 +2257,7 @@ class HPXMLDefaults
2056
2257
  refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh]
2057
2258
  refrigerator.rated_annual_kwh_isdefaulted = true
2058
2259
  end
2059
- schedules_file_includes_fridge = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnRefrigerator)
2260
+ schedules_file_includes_fridge = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnRefrigerator))
2060
2261
  if refrigerator.weekday_fractions.nil? && !schedules_file_includes_fridge
2061
2262
  refrigerator.weekday_fractions = Schedule.RefrigeratorWeekdayFractions
2062
2263
  refrigerator.weekday_fractions_isdefaulted = true
@@ -2091,7 +2292,7 @@ class HPXMLDefaults
2091
2292
  freezer.usage_multiplier = 1.0
2092
2293
  freezer.usage_multiplier_isdefaulted = true
2093
2294
  end
2094
- schedules_file_includes_freezer = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnFreezer)
2295
+ schedules_file_includes_freezer = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFreezer))
2095
2296
  if freezer.weekday_fractions.nil? && !schedules_file_includes_freezer
2096
2297
  freezer.weekday_fractions = Schedule.FreezerWeekdayFractions
2097
2298
  freezer.weekday_fractions_isdefaulted = true
@@ -2122,7 +2323,7 @@ class HPXMLDefaults
2122
2323
  cooking_range.usage_multiplier = 1.0
2123
2324
  cooking_range.usage_multiplier_isdefaulted = true
2124
2325
  end
2125
- schedules_file_includes_range = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnCookingRange)
2326
+ schedules_file_includes_range = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCookingRange))
2126
2327
  if cooking_range.weekday_fractions.nil? && !schedules_file_includes_range
2127
2328
  cooking_range.weekday_fractions = Schedule.CookingRangeWeekdayFractions
2128
2329
  cooking_range.weekday_fractions_isdefaulted = true
@@ -2168,7 +2369,7 @@ class HPXMLDefaults
2168
2369
  default_exterior_lighting_weekend_fractions = Schedule.LightingExteriorWeekendFractions
2169
2370
  default_exterior_lighting_monthly_multipliers = Schedule.LightingExteriorMonthlyMultipliers
2170
2371
  if hpxml.has_location(HPXML::LocationGarage)
2171
- schedules_file_includes_lighting_garage = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnLightingGarage)
2372
+ schedules_file_includes_lighting_garage = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingGarage))
2172
2373
  if hpxml.lighting.garage_weekday_fractions.nil? && !schedules_file_includes_lighting_garage
2173
2374
  hpxml.lighting.garage_weekday_fractions = default_exterior_lighting_weekday_fractions
2174
2375
  hpxml.lighting.garage_weekday_fractions_isdefaulted = true
@@ -2182,7 +2383,7 @@ class HPXMLDefaults
2182
2383
  hpxml.lighting.garage_monthly_multipliers_isdefaulted = true
2183
2384
  end
2184
2385
  end
2185
- schedules_file_includes_lighting_exterior = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnLightingExterior)
2386
+ schedules_file_includes_lighting_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingExterior))
2186
2387
  if hpxml.lighting.exterior_weekday_fractions.nil? && !schedules_file_includes_lighting_exterior
2187
2388
  hpxml.lighting.exterior_weekday_fractions = default_exterior_lighting_weekday_fractions
2188
2389
  hpxml.lighting.exterior_weekday_fractions_isdefaulted = true
@@ -2217,7 +2418,7 @@ class HPXMLDefaults
2217
2418
  hpxml.lighting.holiday_period_end_day = 6
2218
2419
  hpxml.lighting.holiday_period_end_day_isdefaulted = true
2219
2420
  end
2220
- schedules_file_includes_lighting_holiday_exterior = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnLightingExteriorHoliday)
2421
+ schedules_file_includes_lighting_holiday_exterior = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnLightingExteriorHoliday))
2221
2422
  if hpxml.lighting.holiday_weekday_fractions.nil? && !schedules_file_includes_lighting_holiday_exterior
2222
2423
  hpxml.lighting.holiday_weekday_fractions = Schedule.LightingExteriorHolidayWeekdayFractions
2223
2424
  hpxml.lighting.holiday_weekday_fractions_isdefaulted = true
@@ -2238,11 +2439,11 @@ class HPXMLDefaults
2238
2439
  ceiling_fan.efficiency = medium_cfm / HVAC.get_default_ceiling_fan_power()
2239
2440
  ceiling_fan.efficiency_isdefaulted = true
2240
2441
  end
2241
- if ceiling_fan.quantity.nil?
2242
- ceiling_fan.quantity = HVAC.get_default_ceiling_fan_quantity(nbeds)
2243
- ceiling_fan.quantity_isdefaulted = true
2442
+ if ceiling_fan.count.nil?
2443
+ ceiling_fan.count = HVAC.get_default_ceiling_fan_quantity(nbeds)
2444
+ ceiling_fan.count_isdefaulted = true
2244
2445
  end
2245
- schedules_file_includes_ceiling_fan = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnCeilingFan)
2446
+ schedules_file_includes_ceiling_fan = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnCeilingFan))
2246
2447
  if ceiling_fan.weekday_fractions.nil? && !schedules_file_includes_ceiling_fan
2247
2448
  ceiling_fan.weekday_fractions = Schedule.CeilingFanWeekdayFractions
2248
2449
  ceiling_fan.weekday_fractions_isdefaulted = true
@@ -2257,7 +2458,8 @@ class HPXMLDefaults
2257
2458
  end
2258
2459
  end
2259
2460
 
2260
- def self.apply_pools_and_hot_tubs(hpxml, cfa, nbeds, schedules_file)
2461
+ def self.apply_pools_and_hot_tubs(hpxml, cfa, schedules_file)
2462
+ nbeds = hpxml.building_construction.additional_properties.adjusted_number_of_bedrooms
2261
2463
  hpxml.pools.each do |pool|
2262
2464
  next if pool.type == HPXML::TypeNone
2263
2465
 
@@ -2271,7 +2473,7 @@ class HPXMLDefaults
2271
2473
  pool.pump_usage_multiplier = 1.0
2272
2474
  pool.pump_usage_multiplier_isdefaulted = true
2273
2475
  end
2274
- schedules_file_includes_pool_pump = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPoolPump)
2476
+ schedules_file_includes_pool_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPoolPump))
2275
2477
  if pool.pump_weekday_fractions.nil? && !schedules_file_includes_pool_pump
2276
2478
  pool.pump_weekday_fractions = Schedule.PoolPumpWeekdayFractions
2277
2479
  pool.pump_weekday_fractions_isdefaulted = true
@@ -2299,7 +2501,7 @@ class HPXMLDefaults
2299
2501
  pool.heater_usage_multiplier = 1.0
2300
2502
  pool.heater_usage_multiplier_isdefaulted = true
2301
2503
  end
2302
- schedules_file_includes_pool_heater = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPoolHeater)
2504
+ schedules_file_includes_pool_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPoolHeater))
2303
2505
  if pool.heater_weekday_fractions.nil? && !schedules_file_includes_pool_heater
2304
2506
  pool.heater_weekday_fractions = Schedule.PoolHeaterWeekdayFractions
2305
2507
  pool.heater_weekday_fractions_isdefaulted = true
@@ -2327,7 +2529,7 @@ class HPXMLDefaults
2327
2529
  hot_tub.pump_usage_multiplier = 1.0
2328
2530
  hot_tub.pump_usage_multiplier_isdefaulted = true
2329
2531
  end
2330
- schedules_file_includes_hot_tub_pump = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnHotTubPump)
2532
+ schedules_file_includes_hot_tub_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHotTubPump))
2331
2533
  if hot_tub.pump_weekday_fractions.nil? && !schedules_file_includes_hot_tub_pump
2332
2534
  hot_tub.pump_weekday_fractions = Schedule.HotTubPumpWeekdayFractions
2333
2535
  hot_tub.pump_weekday_fractions_isdefaulted = true
@@ -2355,7 +2557,7 @@ class HPXMLDefaults
2355
2557
  hot_tub.heater_usage_multiplier = 1.0
2356
2558
  hot_tub.heater_usage_multiplier_isdefaulted = true
2357
2559
  end
2358
- schedules_file_includes_hot_tub_heater = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnHotTubHeater)
2560
+ schedules_file_includes_hot_tub_heater = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnHotTubHeater))
2359
2561
  if hot_tub.heater_weekday_fractions.nil? && !schedules_file_includes_hot_tub_heater
2360
2562
  hot_tub.heater_weekday_fractions = Schedule.HotTubHeaterWeekdayFractions
2361
2563
  hot_tub.heater_weekday_fractions_isdefaulted = true
@@ -2371,13 +2573,14 @@ class HPXMLDefaults
2371
2573
  end
2372
2574
  end
2373
2575
 
2374
- def self.apply_plug_loads(hpxml, cfa, nbeds, schedules_file)
2576
+ def self.apply_plug_loads(hpxml, cfa, schedules_file)
2577
+ nbeds = hpxml.building_construction.additional_properties.adjusted_number_of_bedrooms
2375
2578
  hpxml.plug_loads.each do |plug_load|
2376
2579
  if plug_load.plug_load_type == HPXML::PlugLoadTypeOther
2377
2580
  default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_residual_mels_default_values(cfa)
2378
- if plug_load.kWh_per_year.nil?
2379
- plug_load.kWh_per_year = default_annual_kwh
2380
- plug_load.kWh_per_year_isdefaulted = true
2581
+ if plug_load.kwh_per_year.nil?
2582
+ plug_load.kwh_per_year = default_annual_kwh
2583
+ plug_load.kwh_per_year_isdefaulted = true
2381
2584
  end
2382
2585
  if plug_load.frac_sensible.nil?
2383
2586
  plug_load.frac_sensible = default_sens_frac
@@ -2387,7 +2590,7 @@ class HPXMLDefaults
2387
2590
  plug_load.frac_latent = default_lat_frac
2388
2591
  plug_load.frac_latent_isdefaulted = true
2389
2592
  end
2390
- schedules_file_includes_plug_loads_other = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPlugLoadsOther)
2593
+ schedules_file_includes_plug_loads_other = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsOther))
2391
2594
  if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_other
2392
2595
  plug_load.weekday_fractions = Schedule.PlugLoadsOtherWeekdayFractions
2393
2596
  plug_load.weekday_fractions_isdefaulted = true
@@ -2402,9 +2605,9 @@ class HPXMLDefaults
2402
2605
  end
2403
2606
  elsif plug_load.plug_load_type == HPXML::PlugLoadTypeTelevision
2404
2607
  default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_televisions_default_values(cfa, nbeds)
2405
- if plug_load.kWh_per_year.nil?
2406
- plug_load.kWh_per_year = default_annual_kwh
2407
- plug_load.kWh_per_year_isdefaulted = true
2608
+ if plug_load.kwh_per_year.nil?
2609
+ plug_load.kwh_per_year = default_annual_kwh
2610
+ plug_load.kwh_per_year_isdefaulted = true
2408
2611
  end
2409
2612
  if plug_load.frac_sensible.nil?
2410
2613
  plug_load.frac_sensible = default_sens_frac
@@ -2414,7 +2617,7 @@ class HPXMLDefaults
2414
2617
  plug_load.frac_latent = default_lat_frac
2415
2618
  plug_load.frac_latent_isdefaulted = true
2416
2619
  end
2417
- schedules_file_includes_plug_loads_tv = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPlugLoadsTV)
2620
+ schedules_file_includes_plug_loads_tv = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsTV))
2418
2621
  if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_tv
2419
2622
  plug_load.weekday_fractions = Schedule.PlugLoadsTVWeekdayFractions
2420
2623
  plug_load.weekday_fractions_isdefaulted = true
@@ -2429,9 +2632,9 @@ class HPXMLDefaults
2429
2632
  end
2430
2633
  elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging
2431
2634
  default_annual_kwh = MiscLoads.get_electric_vehicle_charging_default_values
2432
- if plug_load.kWh_per_year.nil?
2433
- plug_load.kWh_per_year = default_annual_kwh
2434
- plug_load.kWh_per_year_isdefaulted = true
2635
+ if plug_load.kwh_per_year.nil?
2636
+ plug_load.kwh_per_year = default_annual_kwh
2637
+ plug_load.kwh_per_year_isdefaulted = true
2435
2638
  end
2436
2639
  if plug_load.frac_sensible.nil?
2437
2640
  plug_load.frac_sensible = 0.0
@@ -2441,7 +2644,7 @@ class HPXMLDefaults
2441
2644
  plug_load.frac_latent = 0.0
2442
2645
  plug_load.frac_latent_isdefaulted = true
2443
2646
  end
2444
- schedules_file_includes_plug_loads_vehicle = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPlugLoadsVehicle)
2647
+ schedules_file_includes_plug_loads_vehicle = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsVehicle))
2445
2648
  if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_vehicle
2446
2649
  plug_load.weekday_fractions = Schedule.PlugLoadsVehicleWeekdayFractions
2447
2650
  plug_load.weekday_fractions_isdefaulted = true
@@ -2456,9 +2659,9 @@ class HPXMLDefaults
2456
2659
  end
2457
2660
  elsif plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump
2458
2661
  default_annual_kwh = MiscLoads.get_well_pump_default_values(cfa, nbeds)
2459
- if plug_load.kWh_per_year.nil?
2460
- plug_load.kWh_per_year = default_annual_kwh
2461
- plug_load.kWh_per_year_isdefaulted = true
2662
+ if plug_load.kwh_per_year.nil?
2663
+ plug_load.kwh_per_year = default_annual_kwh
2664
+ plug_load.kwh_per_year_isdefaulted = true
2462
2665
  end
2463
2666
  if plug_load.frac_sensible.nil?
2464
2667
  plug_load.frac_sensible = 0.0
@@ -2468,7 +2671,7 @@ class HPXMLDefaults
2468
2671
  plug_load.frac_latent = 0.0
2469
2672
  plug_load.frac_latent_isdefaulted = true
2470
2673
  end
2471
- schedules_file_includes_plug_loads_well_pump = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnPlugLoadsWellPump)
2674
+ schedules_file_includes_plug_loads_well_pump = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnPlugLoadsWellPump))
2472
2675
  if plug_load.weekday_fractions.nil? && !schedules_file_includes_plug_loads_well_pump
2473
2676
  plug_load.weekday_fractions = Schedule.PlugLoadsWellPumpWeekdayFractions
2474
2677
  plug_load.weekday_fractions_isdefaulted = true
@@ -2489,7 +2692,8 @@ class HPXMLDefaults
2489
2692
  end
2490
2693
  end
2491
2694
 
2492
- def self.apply_fuel_loads(hpxml, cfa, nbeds, schedules_file)
2695
+ def self.apply_fuel_loads(hpxml, cfa, schedules_file)
2696
+ nbeds = hpxml.building_construction.additional_properties.adjusted_number_of_bedrooms
2493
2697
  hpxml.fuel_loads.each do |fuel_load|
2494
2698
  if fuel_load.fuel_load_type == HPXML::FuelLoadTypeGrill
2495
2699
  if fuel_load.therm_per_year.nil?
@@ -2504,7 +2708,7 @@ class HPXMLDefaults
2504
2708
  fuel_load.frac_latent = 0.0
2505
2709
  fuel_load.frac_latent_isdefaulted = true
2506
2710
  end
2507
- schedules_file_includes_fuel_loads_grill = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnFuelLoadsGrill)
2711
+ schedules_file_includes_fuel_loads_grill = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsGrill))
2508
2712
  if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_grill
2509
2713
  fuel_load.weekday_fractions = Schedule.FuelLoadsGrillWeekdayFractions
2510
2714
  fuel_load.weekday_fractions_isdefaulted = true
@@ -2530,7 +2734,7 @@ class HPXMLDefaults
2530
2734
  fuel_load.frac_latent = 0.0
2531
2735
  fuel_load.frac_latent_isdefaulted = true
2532
2736
  end
2533
- schedules_file_includes_fuel_loads_lighting = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnFuelLoadsLighting)
2737
+ schedules_file_includes_fuel_loads_lighting = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsLighting))
2534
2738
  if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_lighting
2535
2739
  fuel_load.weekday_fractions = Schedule.FuelLoadsLightingWeekdayFractions
2536
2740
  fuel_load.weekday_fractions_isdefaulted = true
@@ -2556,7 +2760,7 @@ class HPXMLDefaults
2556
2760
  fuel_load.frac_latent = 0.1
2557
2761
  fuel_load.frac_latent_isdefaulted = true
2558
2762
  end
2559
- schedules_file_includes_fuel_loads_fireplace = Schedule.schedules_file_includes_col_name(schedules_file, SchedulesFile::ColumnFuelLoadsFireplace)
2763
+ schedules_file_includes_fuel_loads_fireplace = (schedules_file.nil? ? false : schedules_file.includes_col_name(SchedulesFile::ColumnFuelLoadsFireplace))
2560
2764
  if fuel_load.weekday_fractions.nil? && !schedules_file_includes_fuel_loads_fireplace
2561
2765
  fuel_load.weekday_fractions = Schedule.FuelLoadsFireplaceWeekdayFractions
2562
2766
  fuel_load.weekday_fractions_isdefaulted = true
@@ -2577,11 +2781,11 @@ class HPXMLDefaults
2577
2781
  end
2578
2782
  end
2579
2783
 
2580
- def self.apply_hvac_sizing(hpxml, weather, cfa, nbeds)
2784
+ def self.apply_hvac_sizing(hpxml, weather, cfa)
2581
2785
  hvac_systems = HVAC.get_hpxml_hvac_systems(hpxml)
2582
2786
 
2583
2787
  # Calculate building design loads and equipment capacities/airflows
2584
- bldg_design_loads, all_hvac_sizing_values = HVACSizing.calculate(weather, hpxml, cfa, nbeds, hvac_systems)
2788
+ bldg_design_loads, all_hvac_sizing_values = HVACSizing.calculate(weather, hpxml, cfa, hvac_systems)
2585
2789
 
2586
2790
  hvacpl = hpxml.hvac_plant
2587
2791
  tol = 10 # Btuh
@@ -2616,7 +2820,7 @@ class HPXMLDefaults
2616
2820
  hvacpl.cdl_sens_windows = bldg_design_loads.Cool_Windows.round
2617
2821
  hvacpl.cdl_sens_skylights = bldg_design_loads.Cool_Skylights.round
2618
2822
  hvacpl.cdl_sens_doors = bldg_design_loads.Cool_Doors.round
2619
- hvacpl.cdl_sens_infilvent = bldg_design_loads.Cool_Infil_Sens.round
2823
+ hvacpl.cdl_sens_infilvent = bldg_design_loads.Cool_InfilVent_Sens.round
2620
2824
  hvacpl.cdl_sens_ducts = bldg_design_loads.Cool_Ducts_Sens.round
2621
2825
  hvacpl.cdl_sens_intgains = bldg_design_loads.Cool_IntGains_Sens.round
2622
2826
  cdl_sens_sum = (hvacpl.cdl_sens_walls + hvacpl.cdl_sens_ceilings +
@@ -2632,7 +2836,7 @@ class HPXMLDefaults
2632
2836
  # Assign cooling latent design loads to HPXML object
2633
2837
  hvacpl.cdl_lat_total = bldg_design_loads.Cool_Lat.round
2634
2838
  hvacpl.cdl_lat_ducts = bldg_design_loads.Cool_Ducts_Lat.round
2635
- hvacpl.cdl_lat_infilvent = bldg_design_loads.Cool_Infil_Lat.round
2839
+ hvacpl.cdl_lat_infilvent = bldg_design_loads.Cool_InfilVent_Lat.round
2636
2840
  hvacpl.cdl_lat_intgains = bldg_design_loads.Cool_IntGains_Lat.round
2637
2841
  cdl_lat_sum = (hvacpl.cdl_lat_ducts + hvacpl.cdl_lat_infilvent +
2638
2842
  hvacpl.cdl_lat_intgains)
@@ -2640,10 +2844,6 @@ class HPXMLDefaults
2640
2844
  fail 'Cooling latent design loads do not sum to total.'
2641
2845
  end
2642
2846
 
2643
- # Assign design temperatures to HPXML object
2644
- hvacpl.temp_heating = weather.design.HeatingDrybulb.round(2)
2645
- hvacpl.temp_cooling = weather.design.CoolingDrybulb.round(2)
2646
-
2647
2847
  # Assign sizing values to HPXML objects
2648
2848
  all_hvac_sizing_values.each do |hvac_system, hvac_sizing_values|
2649
2849
  htg_sys = hvac_system[:heating]
@@ -2663,11 +2863,6 @@ class HPXMLDefaults
2663
2863
  htg_sys.heating_capacity_17F = htg_cap_17f.round
2664
2864
  htg_sys.heating_capacity_17F_isdefaulted = true
2665
2865
  end
2666
- else
2667
- # Autosized
2668
- # FUTURE: Calculate HeatingCapacity17F from heat_cap_ft_spec? Might be confusing
2669
- # since user would not be able to replicate the results using this value, as the
2670
- # default curves are non-linear.
2671
2866
  end
2672
2867
  end
2673
2868
  htg_sys.heating_capacity = hvac_sizing_values.Heat_Capacity.round
@@ -2773,18 +2968,54 @@ class HPXMLDefaults
2773
2968
  end
2774
2969
 
2775
2970
  def self.get_nbeds_adjusted_for_operational_calculation(hpxml)
2776
- occ_calc_type = hpxml.header.occupancy_calculation_type
2971
+ n_occs = hpxml.building_occupancy.number_of_residents
2777
2972
  unit_type = hpxml.building_construction.residential_facility_type
2778
- nbeds = hpxml.building_construction.number_of_bedrooms
2779
- if occ_calc_type == HPXML::OccupancyCalculationTypeAsset
2780
- return nbeds
2781
- elsif occ_calc_type == HPXML::OccupancyCalculationTypeOperational
2782
- noccs = hpxml.building_occupancy.number_of_residents
2783
- if [HPXML::ResidentialTypeApartment, HPXML::ResidentialTypeSFA].include? unit_type
2784
- return -0.68 + 1.09 * noccs
2785
- elsif [HPXML::ResidentialTypeSFD, HPXML::ResidentialTypeManufactured].include? unit_type
2786
- return -1.47 + 1.69 * noccs
2973
+ if [HPXML::ResidentialTypeApartment, HPXML::ResidentialTypeSFA].include? unit_type
2974
+ return -0.68 + 1.09 * n_occs
2975
+ elsif [HPXML::ResidentialTypeSFD, HPXML::ResidentialTypeManufactured].include? unit_type
2976
+ return -1.47 + 1.69 * n_occs
2977
+ else
2978
+ fail "Unexpected residential facility type: #{unit_type}."
2979
+ end
2980
+ end
2981
+
2982
+ def self.get_default_flue_or_chimney_in_conditioned_space(hpxml)
2983
+ # Check for atmospheric heating system in conditioned space
2984
+ hpxml.heating_systems.each do |heating_system|
2985
+ next unless HPXML::conditioned_locations_this_unit.include? heating_system.location
2986
+
2987
+ if [HPXML::HVACTypeFurnace,
2988
+ HPXML::HVACTypeBoiler,
2989
+ HPXML::HVACTypeWallFurnace,
2990
+ HPXML::HVACTypeFloorFurnace,
2991
+ HPXML::HVACTypeStove,
2992
+ HPXML::HVACTypeFixedHeater].include? heating_system.heating_system_type
2993
+ if not heating_system.heating_efficiency_afue.nil?
2994
+ next if heating_system.heating_efficiency_afue >= 0.89
2995
+ elsif not heating_system.heating_efficiency_percent.nil?
2996
+ next if heating_system.heating_efficiency_percent >= 0.89
2997
+ end
2998
+
2999
+ return true
3000
+ elsif [HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
3001
+ next if heating_system.heating_system_fuel == HPXML::FuelTypeElectricity
3002
+
3003
+ return true
3004
+ end
3005
+ end
3006
+
3007
+ # Check for atmospheric water heater in conditioned space
3008
+ hpxml.water_heating_systems.each do |water_heating_system|
3009
+ next unless HPXML::conditioned_locations_this_unit.include? water_heating_system.location
3010
+
3011
+ if not water_heating_system.energy_factor.nil?
3012
+ next if water_heating_system.energy_factor >= 0.63
3013
+ elsif not water_heating_system.uniform_energy_factor.nil?
3014
+ next if Waterheater.calc_ef_from_uef(water_heating_system) >= 0.63
2787
3015
  end
3016
+
3017
+ return true
2788
3018
  end
3019
+ return false
2789
3020
  end
2790
3021
  end