urbanopt-cli 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +6 -5
  3. data/CHANGELOG.md +11 -2
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +6 -5
  6. data/LICENSE.md +18 -15
  7. data/README.md +2 -1
  8. data/Rakefile +2 -37
  9. data/example_files/Gemfile +8 -8
  10. data/example_files/mappers/Baseline.rb +170 -191
  11. data/example_files/mappers/ChilledWaterStorage.rb +8 -30
  12. data/example_files/mappers/ClassProject.rb +2 -27
  13. data/example_files/mappers/CreateBar.rb +2 -28
  14. data/example_files/mappers/EvCharging.rb +2 -27
  15. data/example_files/mappers/FlexibleHotWater.rb +2 -27
  16. data/example_files/mappers/Floorspace.rb +2 -27
  17. data/example_files/mappers/HighEfficiency.rb +2 -27
  18. data/example_files/mappers/HighEfficiencyCreateBar.rb +2 -27
  19. data/example_files/mappers/HighEfficiencyFloorspace.rb +2 -27
  20. data/example_files/mappers/PeakHoursMelsShedding.rb +4 -27
  21. data/example_files/mappers/PeakHoursThermostatAdjust.rb +4 -27
  22. data/example_files/mappers/ThermalStorage.rb +2 -28
  23. data/example_files/measures/BuildResidentialModel/measure.rb +30 -60
  24. data/example_files/measures/BuildResidentialModel/measure.xml +253 -84
  25. data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
  26. data/example_files/python_deps/dependencies.json +3 -3
  27. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
  28. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +28 -19
  29. data/example_files/resources/hpxml-measures/.gitignore +0 -997
  30. data/example_files/resources/hpxml-measures/.readthedocs.yml +9 -0
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +476 -230
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +244 -75
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +42 -15
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +24 -9
  35. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +11 -33
  36. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +23 -50
  37. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/README.md +2 -2
  38. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/constants.rb +119 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +67 -290
  40. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.md +6 -5
  41. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +78 -349
  42. data/example_files/resources/hpxml-measures/Changelog.md +80 -10
  43. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +212 -144
  44. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +164 -170
  45. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +238 -167
  46. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +1 -1
  47. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -4
  48. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +36 -6
  49. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +33 -0
  50. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  51. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +9 -7
  52. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +79 -61
  53. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +387 -124
  54. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +427 -196
  55. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +11515 -2
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/README.md +1 -0
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +224 -85
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +334 -319
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +572 -838
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +162 -68
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +4 -20
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +12 -10
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +34 -37
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +8 -101
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +31 -40
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -1
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-non-stochastic.csv +8761 -0
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-10-mins.csv +52561 -52561
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic.csv +8761 -8761
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +384 -155
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +1 -1
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/util.rb +2 -2
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +68 -90
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +34 -223
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -1
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +16 -4
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +94 -40
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +765 -302
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +119 -69
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +8 -8
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +51 -11
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +196 -9
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +36 -13
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -3
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +571 -61
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +190 -81
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +11 -11
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +188 -50
  92. data/example_files/resources/hpxml-measures/README.md +3 -3
  93. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +659 -815
  94. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +301 -1112
  95. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +605 -350
  96. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +18 -14
  97. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +15 -15
  98. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +13 -3
  99. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +3 -3
  100. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +894 -596
  101. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +127 -76
  102. data/example_files/resources/hpxml-measures/tasks.rb +185 -2802
  103. data/example_files/resources/hpxml-measures/workflow/hpxml_inputs.json +3401 -0
  104. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +0 -1
  105. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +0 -1
  106. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +0 -1
  107. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +0 -1
  108. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +0 -1
  109. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +1 -3
  110. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +0 -1
  111. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +1 -3
  112. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +0 -1
  113. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +1 -3
  114. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +0 -1
  115. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +0 -1
  116. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +0 -1
  117. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +0 -1
  118. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +0 -1
  119. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +3 -4
  120. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +17 -4
  121. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +2 -3
  122. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +3 -4
  123. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +3 -4
  124. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +4 -5
  125. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +3 -4
  126. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +3 -4
  127. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +3 -4
  128. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +3 -4
  129. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +1 -1
  130. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +1 -1
  131. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +1 -1
  132. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +1 -1
  133. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +0 -1
  134. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +4 -5
  135. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +3 -3
  136. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +3 -3
  137. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +3 -4
  138. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +3 -3
  139. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +3 -4
  140. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +3 -3
  141. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +3 -4
  142. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +3 -3
  143. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +3 -4
  144. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +0 -1
  145. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +0 -1
  146. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +0 -1
  147. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +0 -1
  148. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +0 -1
  149. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +1 -0
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +1 -0
  151. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +12 -8
  152. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +10 -40
  153. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +10 -40
  154. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +10 -40
  155. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +10 -40
  156. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +10 -40
  157. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +10 -40
  158. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +10 -40
  159. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +10 -40
  160. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +10 -40
  161. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +10 -40
  162. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +10 -40
  163. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +10 -40
  164. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +10 -40
  165. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +10 -40
  166. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +9 -39
  167. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +9 -39
  168. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +10 -40
  169. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +10 -40
  170. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +10 -40
  171. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +10 -40
  172. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +10 -40
  173. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-2stories.xml → base-bldgtype-attached-2stories.xml} +610 -639
  174. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-atticroof-cathedral.xml → base-bldgtype-attached-atticroof-cathedral.xml} +558 -587
  175. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-attached-infil-compartmentalization-test.xml +611 -0
  176. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached.xml → base-bldgtype-attached.xml} +610 -639
  177. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +10 -39
  178. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +10 -39
  179. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +10 -39
  180. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +10 -39
  181. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +10 -39
  182. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-infil-compartmentalization-test.xml +462 -0
  183. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-multifamily-calctype-operational.xml → base-bldgtype-multifamily-residents-1.xml} +453 -480
  184. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +10 -39
  185. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +10 -39
  186. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +10 -39
  187. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +10 -39
  188. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +10 -39
  189. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +10 -39
  190. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +10 -39
  191. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +10 -39
  192. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +10 -39
  193. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +10 -39
  194. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +10 -39
  195. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +10 -39
  196. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +10 -39
  197. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +10 -39
  198. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +10 -39
  199. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +11 -40
  200. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +10 -39
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +10 -39
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +10 -39
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +10 -39
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +10 -39
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +10 -39
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +15 -40
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +10 -39
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +10 -39
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +10 -39
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +10 -40
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +10 -40
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +10 -40
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +10 -40
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +10 -40
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +10 -40
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +10 -40
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +10 -40
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +10 -40
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +10 -40
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +10 -40
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +10 -40
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +10 -40
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +10 -40
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +10 -40
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +10 -40
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +10 -40
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +10 -40
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +10 -40
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +10 -40
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +10 -40
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +10 -40
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +10 -40
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +10 -40
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +10 -40
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +10 -40
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +10 -40
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +10 -40
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +10 -40
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +10 -40
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +10 -40
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +10 -40
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +10 -40
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +10 -40
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +10 -40
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +10 -40
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +10 -40
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +10 -40
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +10 -40
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +10 -40
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +10 -40
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +11 -43
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +10 -40
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +10 -40
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +10 -40
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +10 -40
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +10 -40
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +10 -40
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +10 -40
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +10 -40
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +10 -40
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +10 -40
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +10 -40
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +10 -40
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +10 -40
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +10 -40
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +10 -40
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +10 -40
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +10 -40
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +10 -40
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +19 -25
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +10 -40
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +10 -40
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +10 -40
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +10 -40
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +10 -40
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +10 -40
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +10 -40
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +18 -24
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +11 -41
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +11 -41
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +10 -40
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ela.xml +549 -0
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +13 -43
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +10 -40
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-cfm.xml +552 -0
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +10 -40
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +10 -40
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +17 -47
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +10 -40
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +10 -40
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +10 -40
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +10 -40
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +10 -40
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +10 -40
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +10 -40
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +10 -40
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +10 -40
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +10 -40
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading-seasons.xml +559 -0
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +10 -40
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +10 -40
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +10 -40
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +19 -25
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +10 -40
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +10 -40
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-insulation.xml +10 -40
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +10 -40
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +10 -40
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +10 -40
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +10 -40
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +10 -40
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +10 -40
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +10 -40
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +10 -40
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +10 -40
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +10 -40
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosized-backup.xml +557 -0
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +16 -41
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml} +552 -583
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +16 -41
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml → base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml} +562 -586
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +16 -41
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +16 -41
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +16 -41
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +587 -0
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +17 -42
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +16 -41
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +16 -41
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +16 -41
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +10 -40
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +10 -40
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +10 -40
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +10 -40
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +10 -40
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +10 -40
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +10 -40
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +10 -40
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +10 -40
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +10 -40
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +10 -40
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +10 -40
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +10 -40
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +10 -40
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +10 -40
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +10 -40
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +10 -40
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +10 -40
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +10 -40
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +10 -40
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +10 -40
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +11 -41
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +11 -41
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +11 -41
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted-backup-hardsized.xml +553 -0
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +11 -41
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +10 -40
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +10 -40
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +10 -40
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +10 -40
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +10 -40
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +10 -40
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +10 -40
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +10 -40
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +10 -40
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +10 -40
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +10 -40
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +10 -40
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +10 -40
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +10 -40
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +10 -40
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +10 -40
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +10 -40
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +10 -40
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +10 -40
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-baseboard.xml +519 -0
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +10 -40
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +10 -40
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +10 -40
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +16 -40
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +16 -40
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +16 -40
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +10 -40
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +10 -40
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +16 -40
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +16 -40
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +16 -40
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-sizing-controls.xml +566 -0
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +10 -40
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +10 -40
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +10 -40
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +10 -40
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +10 -40
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +10 -40
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only-pilot.xml +513 -0
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +10 -40
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +10 -40
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +10 -40
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +10 -40
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +10 -40
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +10 -40
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +10 -40
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +10 -40
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +16 -41
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-crankcase-heater-40w.xml +556 -0
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +10 -40
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +560 -0
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +17 -42
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +17 -42
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +17 -42
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +17 -42
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +10 -40
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +10 -40
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-buried.xml +555 -0
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-effective-rvalue.xml +553 -0
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +10 -40
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +10 -40
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +10 -40
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +10 -40
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -40
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +10 -40
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +10 -40
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +10 -40
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only-pilot-light.xml +506 -0
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +10 -40
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +10 -40
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +10 -40
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +10 -40
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +10 -40
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +10 -40
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +10 -40
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-pilot.xml +542 -0
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +10 -40
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +10 -40
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +10 -40
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +10 -40
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +10 -40
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +10 -40
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +10 -40
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +10 -40
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +10 -40
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +14 -41
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +14 -41
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +14 -41
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +10 -40
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +10 -40
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +10 -40
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +10 -40
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +10 -40
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +10 -40
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +14 -41
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +10 -40
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +10 -40
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +16 -41
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +16 -41
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +16 -41
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +525 -0
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +564 -0
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +16 -41
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +506 -0
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -41
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +10 -40
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +10 -40
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +10 -40
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +10 -40
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-natural-gas.xml +10 -40
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +10 -40
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +513 -0
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +16 -40
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +10 -40
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +10 -40
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +10 -40
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +10 -40
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +10 -40
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +16 -40
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +10 -40
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +10 -40
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +10 -40
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +10 -40
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +10 -40
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +10 -40
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +10 -40
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +10 -40
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +10 -40
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +11 -41
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +10 -40
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-kwh-per-year.xml +529 -0
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-mixed.xml +537 -0
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none-ceiling-fans.xml +516 -0
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -7
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +10 -40
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +10 -40
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +10 -40
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +10 -40
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +10 -40
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +10 -40
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +10 -40
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +10 -40
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +10 -40
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +10 -40
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +10 -40
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +12 -42
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +10 -40
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +10 -40
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -40
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +10 -40
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +10 -40
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +10 -40
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +10 -40
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +10 -40
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +10 -40
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +10 -40
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +10 -40
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +10 -40
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +14 -44
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +10 -40
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +10 -40
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +10 -38
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +10 -40
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +16 -42
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +16 -42
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +16 -42
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +10 -40
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +14 -37
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +16 -42
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +12 -42
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +12 -42
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +12 -42
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +10 -40
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +10 -38
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +10 -38
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +10 -40
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading-bldgtype-multifamily.xml +509 -0
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +10 -40
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +10 -40
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +10 -41
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +30 -138
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +16 -42
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +24 -26
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-round-trip-efficiency.xml +16 -42
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +16 -42
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +16 -42
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +18 -44
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +18 -44
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +18 -44
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +16 -42
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0-runperiod-1-month.xml +560 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0.xml +556 -0
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon.xml → base-residents-1-misc-loads-large-uncommon.xml} +616 -644
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon2.xml → base-residents-1-misc-loads-large-uncommon2.xml} +616 -644
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational.xml → base-residents-1.xml} +547 -575
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-defaults.xml → base-residents-5.xml} +515 -539
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +10 -40
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +10 -40
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml +565 -0
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-schedules-detailed-occupancy-smooth.xml → base-schedules-detailed-occupancy-stochastic-vacancy-year-round.xml} +563 -583
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +21 -41
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +10 -40
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +10 -40
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +10 -40
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +10 -40
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml +565 -0
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml +565 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +620 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy-year-round.xml +619 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +619 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +10 -38
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +10 -40
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +10 -40
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +10 -40
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +10 -40
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-temperature-capacitance-multiplier.xml +10 -40
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +10 -40
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +10 -40
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +10 -40
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-30-mins.xml +10 -40
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +10 -37
  577. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +16 -4
  578. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +16 -3
  579. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +16 -3
  580. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +16 -2
  581. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Long_Residence.xml +386 -0
  582. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Vatilo_Residence.xml +381 -0
  583. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Victor_Residence.xml +370 -0
  584. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +2 -2
  585. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +2 -5
  586. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +2 -5
  587. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +2 -5
  588. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +2 -5
  589. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +2 -5
  590. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +2 -5
  591. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +2 -5
  592. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +2 -5
  593. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +2 -5
  594. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +2 -5
  595. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +2 -5
  596. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +2 -5
  597. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +2 -5
  598. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +2 -5
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +2 -5
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +2 -12
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +2 -12
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +2 -5
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +2 -5
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +2 -5
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +2 -5
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +2 -5
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +2 -5
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -9
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -9
  610. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +475 -444
  611. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +475 -444
  612. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +177 -112
  613. data/example_files/resources/meta_measure.rb +2 -27
  614. data/example_files/xml_building/17/README.md +3 -3
  615. data/lib/uo_cli/version.rb +3 -38
  616. data/lib/uo_cli.rb +3 -38
  617. data/uo_cli.gemspec +6 -7
  618. metadata +70 -51
  619. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.json +0 -388
  620. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +0 -6136
  621. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +0 -4846
  622. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-smooth.csv +0 -8761
  623. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-vacancy.csv +0 -8761
  624. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +0 -35
  625. data/example_files/resources/hpxml-measures/weather/USA_CO_Colorado.Springs-Peterson.Field.724660_TMY3-cache.csv +0 -35
  626. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +0 -35
  627. data/example_files/resources/hpxml-measures/weather/USA_DE_Wilmington-New.Castle.County.AP.724089_TMY3-cache.csv +0 -35
  628. data/example_files/resources/hpxml-measures/weather/USA_FL_Miami.Intl.AP.722020_TMY3-cache.csv +0 -35
  629. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +0 -35
  630. data/example_files/resources/hpxml-measures/weather/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3-cache.csv +0 -35
  631. data/example_files/resources/hpxml-measures/weather/USA_MN_Duluth.Intl.AP.727450_TMY3-cache.csv +0 -35
  632. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +0 -35
  633. data/example_files/resources/hpxml-measures/weather/USA_NC_Charlotte-Douglas.Intl.AP.723140_TMY3-cache.csv +0 -35
  634. data/example_files/resources/hpxml-measures/weather/USA_NJ_Cape.May.County.AP.745966_TMY3-cache.csv +0 -35
  635. data/example_files/resources/hpxml-measures/weather/USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3-cache.csv +0 -35
  636. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +0 -35
  637. data/example_files/resources/hpxml-measures/weather/USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3-cache.csv +0 -35
  638. data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +0 -35
  639. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +0 -35
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +0 -2508
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +0 -2508
@@ -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