urbanopt-cli 0.8.2 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (650) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -6
  3. data/CHANGELOG.md +21 -0
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +3 -1
  6. data/README.md +9 -0
  7. data/example_files/Gemfile +23 -16
  8. data/example_files/Gemfile.lock +177 -0
  9. data/example_files/base_workflow_res.osw +57 -14
  10. data/example_files/class_project_coincident.json +1322 -0
  11. data/example_files/class_project_diverse.json +1322 -0
  12. data/example_files/disco/config.json +42 -0
  13. data/example_files/disco/cost_database.xlsx +0 -0
  14. data/example_files/disco/technical_catalog.json +12126 -0
  15. data/example_files/mappers/Baseline.rb +10 -7
  16. data/example_files/mappers/ChilledWaterStorage.rb +98 -0
  17. data/example_files/mappers/ClassProject.rb +110 -0
  18. data/example_files/mappers/CreateBar.rb +1 -0
  19. data/example_files/mappers/HighEfficiency.rb +13 -11
  20. data/example_files/mappers/PeakHoursMelsShedding.rb +72 -0
  21. data/example_files/mappers/PeakHoursThermostatAdjust.rb +78 -0
  22. data/example_files/mappers/ThermalStorage.rb +1 -0
  23. data/example_files/mappers/base_workflow.osw +55 -14
  24. data/example_files/mappers/class_project_workflow.osw +328 -0
  25. data/example_files/mappers/createbar_workflow.osw +16 -16
  26. data/example_files/measures/BuildResidentialModel/measure.rb +7 -1
  27. data/example_files/measures/BuildResidentialModel/measure.xml +1313 -706
  28. data/example_files/opendss/electrical_database.json +1446 -1446
  29. data/example_files/python_deps/dependencies.json +5 -0
  30. data/example_files/python_deps/install_python.ps1 +96 -0
  31. data/example_files/python_deps/install_python.sh +120 -0
  32. data/example_files/residential/clothes_dryer.tsv +11 -11
  33. data/example_files/residential/clothes_washer.tsv +3 -3
  34. data/example_files/residential/dishwasher.tsv +3 -3
  35. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +0 -1
  36. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +8 -21
  37. data/example_files/resources/hpxml-measures/.gitignore +2 -0
  38. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +1272 -1094
  39. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +978 -659
  40. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +52 -74
  41. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +77 -140
  42. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +30 -27
  43. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +32 -13
  44. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +55 -51
  45. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +89 -16
  46. data/example_files/resources/hpxml-measures/Changelog.md +65 -0
  47. data/example_files/resources/hpxml-measures/Gemfile +2 -4
  48. data/example_files/resources/hpxml-measures/Gemfile.lock +2 -13
  49. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +276 -300
  50. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +221 -215
  51. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +215 -170
  52. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +108 -16
  53. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +24 -44
  54. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +564 -197
  55. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/cambium/README.md +8 -8
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +7 -55
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +24 -19
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +541 -211
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +300 -172
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +0 -2
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +230 -141
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +145 -137
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +191 -97
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/iso-schematron.xsd +391 -0
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +194 -198
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +140 -145
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +11 -11
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +33 -1
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/materials.rb +4 -4
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +17 -9
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -12
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +39 -17
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +1 -1
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/battery.csv +8761 -0
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +114 -57
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +1 -0
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/utility_bills.rb +148 -0
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +85 -127
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +26 -32
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +2 -14
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +67 -0
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +117 -56
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_battery.rb +141 -14
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +453 -344
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +124 -20
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +1 -1
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +28 -32
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +172 -79
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +54 -8
  92. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -3
  93. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +4 -4
  94. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +7 -7
  95. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +1 -1
  96. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +6 -9
  97. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +8 -8
  98. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +213 -95
  99. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +1 -10
  100. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +76 -0
  101. data/example_files/resources/hpxml-measures/README.md +2 -3
  102. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +585 -287
  103. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +304 -352
  104. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +404 -279
  105. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +222 -501
  106. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +137 -200
  107. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Annual Charge.json +649 -0
  108. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Monthly Charge.json +649 -0
  109. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate.json +647 -0
  110. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Annual Charge.json +8776 -0
  111. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Monthly Charge.json +8776 -0
  112. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate.json +8774 -0
  113. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Annual Charge.json +659 -0
  114. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Monthly Charge.json +659 -0
  115. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate.json +657 -0
  116. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Annual Charge.json +670 -0
  117. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Monthly Charge.json +670 -0
  118. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate.json +668 -0
  119. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Annual Charge.json +655 -0
  120. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Monthly Charge.json +655 -0
  121. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate.json +653 -0
  122. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/openei_rates.zip +0 -0
  123. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/Average_retail_price_of_electricity.csv +0 -0
  124. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/HouseholdConsumption.csv +0 -0
  125. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/NG_PRI_SUM_A_EPG0_PRS_DMCF_A.csv +0 -0
  126. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPD2F_PRS_DPGAL_W.csv +0 -0
  127. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPLLPA_PRS_DPGAL_W.csv +0 -0
  128. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/README.md +0 -0
  129. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/util.rb +506 -25
  130. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Contains Demand Charges.json +1312 -0
  131. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Fixed Charge Units.json +657 -0
  132. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Min Charge Units.json +659 -0
  133. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/JacksonElectricMemberCorp-ResidentialSeniorCitizenLowIncomeAssistance.json +681 -0
  134. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Missing Required Fields.json +54 -0
  135. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/data.csv +8761 -0
  136. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +1006 -235
  137. data/example_files/resources/hpxml-measures/docs/source/conf.py +1 -1
  138. data/example_files/resources/hpxml-measures/docs/source/intro.rst +0 -1
  139. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +2 -2
  140. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +461 -261
  141. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +146 -152
  142. data/example_files/resources/hpxml-measures/tasks.rb +616 -802
  143. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +19 -11
  144. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +20 -12
  145. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +12 -7
  146. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +12 -7
  147. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +19 -11
  148. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +12 -7
  149. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +20 -12
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +28 -16
  151. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +28 -17
  152. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +28 -16
  153. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +20 -12
  154. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +20 -12
  155. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +20 -12
  156. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +20 -12
  157. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +20 -12
  158. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +22 -12
  159. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +19 -11
  160. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +20 -12
  161. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +13 -7
  162. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +12 -7
  163. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +31 -16
  164. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +22 -12
  165. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +21 -12
  166. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +37 -22
  167. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +24 -12
  168. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +33 -21
  169. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +28 -16
  170. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +28 -16
  171. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +30 -17
  172. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +10 -7
  173. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +22 -11
  174. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +12 -7
  175. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +18 -12
  176. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +25 -16
  177. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +22 -12
  178. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +20 -12
  179. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +26 -17
  180. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +19 -11
  181. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +25 -16
  182. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +20 -12
  183. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +35 -21
  184. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +28 -17
  185. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +20 -12
  186. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +35 -21
  187. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +20 -12
  188. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +20 -13
  189. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +12 -9
  190. data/example_files/resources/hpxml-measures/workflow/real_homes/house048.xml +25 -14
  191. data/example_files/resources/hpxml-measures/workflow/real_homes/house049.xml +10 -7
  192. data/example_files/resources/hpxml-measures/workflow/real_homes/house050.xml +20 -11
  193. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +91 -88
  194. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +18 -7
  195. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +546 -535
  196. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +546 -535
  197. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +555 -544
  198. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +18 -7
  199. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +18 -7
  200. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +18 -7
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +18 -7
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +580 -569
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +18 -7
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +580 -569
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +18 -7
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +18 -7
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +7 -0
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +17 -6
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +7 -0
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +18 -7
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +18 -7
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +18 -7
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +600 -0
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +598 -587
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +494 -485
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +606 -593
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +494 -485
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +494 -485
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +494 -485
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-calctype-operational.xml +480 -471
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +464 -457
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +496 -487
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +466 -459
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +518 -509
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +513 -504
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +445 -438
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +476 -467
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +443 -436
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +446 -439
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +494 -485
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +445 -438
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +476 -467
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +446 -439
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +494 -485
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +489 -480
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +499 -490
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +491 -482
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +510 -0
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +495 -486
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +709 -695
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +528 -519
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +512 -503
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +504 -495
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +497 -488
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +490 -481
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +487 -478
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-2stories.xml +639 -628
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-atticroof-cathedral.xml +587 -580
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +639 -628
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-defaults.xml +539 -528
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon.xml +644 -633
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon2.xml +644 -633
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational.xml +575 -564
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +16 -7
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +16 -7
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +18 -7
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +585 -574
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +18 -7
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +18 -7
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +18 -7
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +18 -7
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +18 -7
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +536 -0
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +16 -7
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +16 -7
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +20 -8
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +16 -7
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +16 -7
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +18 -7
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +18 -7
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +18 -7
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +16 -7
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +18 -7
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +16 -7
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +18 -7
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +19 -8
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +19 -8
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +19 -8
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +19 -8
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +19 -8
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +18 -7
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +18 -7
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +18 -7
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +18 -7
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +18 -7
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +18 -7
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +18 -7
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +582 -571
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +583 -572
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +18 -7
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +584 -573
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +584 -573
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +18 -7
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +583 -572
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +585 -574
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +18 -7
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +582 -571
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +18 -7
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +18 -7
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +18 -7
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +586 -575
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +585 -574
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +18 -7
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +18 -7
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +580 -569
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +18 -7
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +580 -569
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +18 -7
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +580 -569
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +18 -7
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +18 -7
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +18 -7
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +18 -7
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +28 -11
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +20 -7
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +18 -7
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +18 -7
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +18 -7
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +18 -7
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +607 -0
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +550 -0
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +27 -12
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +18 -7
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +18 -7
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +18 -7
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +18 -7
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +18 -7
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +589 -578
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +18 -7
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +18 -7
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +619 -608
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +620 -609
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +618 -607
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +18 -7
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +537 -526
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +90 -43
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2507 -2460
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +595 -584
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +19 -8
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +584 -0
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +18 -7
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +594 -583
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +597 -586
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +598 -587
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +27 -12
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +671 -656
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +18 -7
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +18 -7
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-foundation-conditioned-basement-wall-interior-insulation.xml → base-foundation-conditioned-basement-wall-insulation.xml} +585 -574
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +582 -571
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +35 -16
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +18 -7
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +27 -12
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +27 -12
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +27 -12
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +27 -12
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +27 -12
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +27 -12
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +18 -7
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml +586 -575
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +580 -569
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +583 -0
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +18 -7
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +18 -7
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +600 -589
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +599 -588
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +629 -616
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +18 -7
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +579 -568
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +581 -570
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +581 -570
  374. 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 +582 -0
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +581 -570
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +581 -570
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +581 -570
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +581 -570
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +598 -587
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +628 -615
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +581 -570
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +581 -570
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +581 -570
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +535 -526
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +589 -578
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +536 -527
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +18 -7
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +565 -554
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +565 -554
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
  391. 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 +582 -571
  392. 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 +582 -571
  393. 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 +582 -571
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +526 -517
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +573 -562
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +529 -520
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +565 -554
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +580 -569
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +580 -569
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +565 -554
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +578 -567
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +575 -564
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +581 -570
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +583 -572
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +583 -572
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +583 -572
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +18 -7
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +18 -7
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +580 -569
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +580 -569
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +580 -569
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +551 -542
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +532 -530
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +525 -516
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +541 -532
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +541 -532
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +541 -532
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +525 -516
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +533 -0
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +542 -0
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +542 -0
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +542 -0
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +529 -520
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +529 -520
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +580 -569
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +16 -7
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +16 -7
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +18 -7
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +16 -7
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +16 -7
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +16 -7
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +16 -7
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +567 -0
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +18 -7
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +18 -7
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +18 -7
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +16 -7
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +18 -7
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +18 -7
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +18 -7
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +18 -7
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +611 -598
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +589 -0
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +582 -571
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +18 -7
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +16 -7
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +18 -7
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +17 -7
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +16 -7
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +530 -521
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +530 -521
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +530 -521
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +566 -555
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +18 -7
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +18 -7
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +18 -7
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +18 -7
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +566 -555
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +566 -555
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +18 -7
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +18 -7
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +18 -7
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +18 -7
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +16 -7
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +574 -563
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +581 -570
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +583 -572
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +587 -576
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +587 -576
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +587 -576
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +591 -580
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +591 -580
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +591 -580
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +570 -559
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +586 -575
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +570 -559
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +586 -575
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +18 -7
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +16 -7
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +18 -7
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +18 -7
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +552 -543
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -7
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +963 -938
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +33 -69
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +530 -521
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +535 -0
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ptac-with-heating.xml → base-hvac-ptac-with-heating-natural-gas.xml} +23 -21
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +526 -517
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +541 -532
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +16 -7
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +526 -517
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +526 -517
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +16 -7
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +535 -0
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +542 -0
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +594 -583
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +586 -575
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +18 -7
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +18 -7
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +530 -521
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +530 -521
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +18 -7
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +18 -7
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +530 -521
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +18 -7
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +18 -7
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +18 -7
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +18 -7
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +27 -12
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +591 -576
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +18 -7
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +27 -12
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +582 -571
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +537 -526
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +18 -7
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +537 -526
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +601 -586
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +18 -7
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +18 -7
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +601 -587
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +19 -7
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +20 -7
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +607 -0
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +607 -0
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +21 -7
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +18 -7
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +18 -7
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +18 -7
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +18 -7
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +18 -7
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +18 -7
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +37 -19
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +18 -7
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +18 -7
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +590 -579
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +578 -0
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +632 -0
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +614 -0
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +677 -0
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +593 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +27 -9
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +676 -665
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +616 -0
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +615 -0
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +598 -587
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +586 -0
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +18 -7
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +18 -7
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +18 -7
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +18 -7
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +583 -572
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +18 -7
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1700 -1677
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +622 -611
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +697 -682
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-pv-battery-lifetime-model.xml → base-pv-battery-round-trip-efficiency.xml} +20 -11
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +624 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +622 -611
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +640 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +639 -0
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +623 -0
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +606 -595
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +582 -571
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-smooth.xml +583 -572
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +584 -0
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +583 -572
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +583 -572
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +581 -570
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +581 -570
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +581 -570
  577. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +636 -625
  578. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +18 -7
  579. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +27 -14
  580. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +21 -10
  581. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +21 -10
  582. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-tank-heat-pump-detailed-operating-modes.xml → base-simcontrol-temperature-capacitance-multiplier.xml} +25 -13
  583. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +584 -0
  584. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +584 -0
  585. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +18 -7
  586. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-tank-heat-pump-detailed-setpoints.xml → base-simcontrol-timestep-30-mins.xml} +25 -14
  587. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +18 -7
  588. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +18 -13
  589. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +12 -7
  590. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +8 -24
  591. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +366 -358
  592. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +369 -361
  593. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +369 -361
  594. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +369 -361
  595. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +369 -361
  596. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +369 -361
  597. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +369 -361
  598. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +369 -361
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +311 -303
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +311 -303
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +327 -319
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +327 -319
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +332 -324
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +332 -324
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +341 -333
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +341 -333
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +369 -361
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +369 -361
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +369 -361
  610. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +369 -361
  611. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +369 -361
  612. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +369 -361
  613. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +383 -379
  614. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +383 -379
  615. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +538 -534
  616. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +550 -546
  617. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +444 -410
  618. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +8 -8
  619. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +444 -410
  620. data/example_files/resources/hpxml-measures/workflow/tests/compare.py +18 -4
  621. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +133 -288
  622. data/example_files/scripts/convert_urbanopt_to_disco.py +130 -0
  623. data/example_files/scripts/default_control_changes.csv +8 -0
  624. data/example_files/scripts/default_voltage_regulators.csv +3 -0
  625. data/example_files/scripts/read_data.py +331 -0
  626. data/example_files/visualization/input_visualization_feature.html +172 -81
  627. data/example_files/visualization/input_visualization_scenario.html +178 -82
  628. data/example_files/xml_building/17/README.md +2 -2
  629. data/example_files/xml_building/17/unit 1.xml +40 -41
  630. data/example_files/xml_building/17/unit 2.xml +35 -36
  631. data/example_files/xml_building/17/unit 3.xml +35 -36
  632. data/example_files/xml_building/17/unit 4.xml +41 -42
  633. data/lib/uo_cli/version.rb +1 -1
  634. data/lib/uo_cli.rb +601 -101
  635. data/scripts/setup-env.bat +6 -7
  636. data/uo_cli.gemspec +6 -5
  637. metadata +121 -36
  638. data/example_files/residential/exhaust.tsv +0 -3
  639. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/hvac_equipment_efficiency.csv +0 -493
  640. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/water_heater_efficiency.csv +0 -157
  641. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/HPXMLvalidator.xml +0 -620
  642. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/validator.rb +0 -107
  643. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.rb +0 -450
  644. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.xml +0 -85
  645. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/resources/constants.rb +0 -72
  646. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/tests/hpxml_output_report_test.rb +0 -290
  647. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_10kW.csv +0 -8761
  648. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_1kW.csv +0 -8761
  649. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_None.csv +0 -8761
  650. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +0 -410
@@ -48,10 +48,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
48
48
  hpxml.header.state_code = 'CA'
49
49
  hpxml.header.time_zone_utc_offset = -8
50
50
  hpxml.header.occupancy_calculation_type = HPXML::OccupancyCalculationTypeOperational
51
+ hpxml.header.temperature_capacitance_multiplier = 1.5
52
+ hpxml.header.natvent_days_per_week = 7
51
53
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
52
54
  hpxml_default = _test_measure()
53
55
  _test_default_header_values(hpxml_default, 30, 2, 2, 11, 11, 2009, false, 3, 3, 10, 10, HPXML::HeatPumpSizingMaxLoad,
54
- true, 'CA', -8, HPXML::OccupancyCalculationTypeOperational)
56
+ true, 'CA', -8, HPXML::OccupancyCalculationTypeOperational, 1.5, 7)
55
57
 
56
58
  # Test defaults - DST not in weather file
57
59
  hpxml.header.timestep = nil
@@ -70,10 +72,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
70
72
  hpxml.header.state_code = nil
71
73
  hpxml.header.time_zone_utc_offset = nil
72
74
  hpxml.header.occupancy_calculation_type = nil
75
+ hpxml.header.temperature_capacitance_multiplier = nil
76
+ hpxml.header.natvent_days_per_week = nil
73
77
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
74
78
  hpxml_default = _test_measure()
75
79
  _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, HPXML::HeatPumpSizingHERS,
76
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset)
80
+ false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
77
81
 
78
82
  # Test defaults - DST in weather file
79
83
  hpxml = _create_hpxml('base-location-AMY-2012.xml')
@@ -93,17 +97,18 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
93
97
  hpxml.header.state_code = nil
94
98
  hpxml.header.time_zone_utc_offset = nil
95
99
  hpxml.header.occupancy_calculation_type = nil
100
+ hpxml.header.temperature_capacitance_multiplier = nil
96
101
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
97
102
  hpxml_default = _test_measure()
98
103
  _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil,
99
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset)
104
+ false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
100
105
 
101
106
  # Test defaults - calendar year override by AMY year
102
107
  hpxml.header.sim_calendar_year = 2020
103
108
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
104
109
  hpxml_default = _test_measure()
105
110
  _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, nil,
106
- false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset)
111
+ false, 'CO', -7, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
107
112
 
108
113
  # Test defaults - invalid state code
109
114
  hpxml = _create_hpxml('base-location-capetown-zaf.xml')
@@ -123,15 +128,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
123
128
  hpxml.header.state_code = nil
124
129
  hpxml.header.time_zone_utc_offset = nil
125
130
  hpxml.header.occupancy_calculation_type = nil
131
+ hpxml.header.temperature_capacitance_multiplier = nil
126
132
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
127
133
  hpxml_default = _test_measure()
128
134
  _test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, nil,
129
- false, nil, 2, HPXML::OccupancyCalculationTypeAsset)
135
+ false, nil, 2, HPXML::OccupancyCalculationTypeAsset, 1.0, 3)
130
136
  end
131
137
 
132
138
  def test_emissions_factors
133
139
  # Test inputs not overridden by defaults
134
- hpxml = _create_hpxml('base.xml')
140
+ hpxml = _create_hpxml('base-misc-loads-large-uncommon.xml')
135
141
  for emissions_type in ['CO2e', 'NOx', 'SO2', 'foo']
136
142
  hpxml.header.emissions_scenarios.add(name: emissions_type,
137
143
  emissions_type: emissions_type,
@@ -152,6 +158,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
152
158
  wood_pellets_units: HPXML::EmissionsScenario::UnitsLbPerMBtu,
153
159
  wood_pellets_value: 999.0)
154
160
  end
161
+ hpxml.water_heating_systems[0].fuel_type = HPXML::FuelTypePropane
162
+ hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeOil
163
+ hpxml.cooking_ranges[0].fuel_type = HPXML::FuelTypeWoodCord
164
+ hpxml.fuel_loads[0].fuel_type = HPXML::FuelTypeWoodPellets
155
165
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
156
166
  hpxml_default = _test_measure()
157
167
  hpxml_default.header.emissions_scenarios.each do |scenario|
@@ -202,21 +212,95 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
202
212
  end
203
213
  end
204
214
 
215
+ def test_utility_bills
216
+ # Test inputs not overridden by defaults
217
+ hpxml = _create_hpxml('base-pv.xml')
218
+ hpxml.header.utility_bill_scenarios.clear
219
+ for pv_compensation_type in [HPXML::PVCompensationTypeNetMetering, HPXML::PVCompensationTypeFeedInTariff]
220
+ hpxml.header.utility_bill_scenarios.add(name: pv_compensation_type,
221
+ elec_fixed_charge: 8,
222
+ natural_gas_fixed_charge: 9,
223
+ propane_fixed_charge: 10,
224
+ fuel_oil_fixed_charge: 11,
225
+ coal_fixed_charge: 12,
226
+ wood_fixed_charge: 13,
227
+ wood_pellets_fixed_charge: 14,
228
+ elec_marginal_rate: 0.2,
229
+ natural_gas_marginal_rate: 0.3,
230
+ propane_marginal_rate: 0.4,
231
+ fuel_oil_marginal_rate: 0.5,
232
+ coal_marginal_rate: 0.6,
233
+ wood_marginal_rate: 0.7,
234
+ wood_pellets_marginal_rate: 0.8,
235
+ pv_compensation_type: pv_compensation_type,
236
+ pv_net_metering_annual_excess_sellback_rate_type: HPXML::PVAnnualExcessSellbackRateTypeRetailElectricityCost,
237
+ pv_net_metering_annual_excess_sellback_rate: 0.04,
238
+ pv_feed_in_tariff_rate: 0.15,
239
+ pv_monthly_grid_connection_fee_dollars: 3)
240
+ end
241
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
242
+ hpxml_default = _test_measure()
243
+ scenarios = hpxml_default.header.utility_bill_scenarios
244
+ _test_default_bills_values(scenarios[0], 8, 9, 10, 11, 12, 13, 14, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeRetailElectricityCost, nil, nil, nil, 3)
245
+ _test_default_bills_values(scenarios[1], 8, 9, 10, 11, 12, 13, 14, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, HPXML::PVCompensationTypeFeedInTariff, nil, nil, 0.15, nil, 3)
246
+
247
+ # Test defaults
248
+ hpxml.header.utility_bill_scenarios.each do |scenario|
249
+ scenario.elec_fixed_charge = nil
250
+ scenario.natural_gas_fixed_charge = nil
251
+ scenario.propane_fixed_charge = nil
252
+ scenario.fuel_oil_fixed_charge = nil
253
+ scenario.coal_fixed_charge = nil
254
+ scenario.wood_fixed_charge = nil
255
+ scenario.wood_pellets_fixed_charge = nil
256
+ scenario.elec_marginal_rate = nil
257
+ scenario.natural_gas_marginal_rate = nil
258
+ scenario.propane_marginal_rate = nil
259
+ scenario.fuel_oil_marginal_rate = nil
260
+ scenario.coal_marginal_rate = nil
261
+ scenario.wood_marginal_rate = nil
262
+ scenario.wood_pellets_marginal_rate = nil
263
+ scenario.pv_compensation_type = nil
264
+ scenario.pv_net_metering_annual_excess_sellback_rate_type = nil
265
+ scenario.pv_net_metering_annual_excess_sellback_rate = nil
266
+ scenario.pv_feed_in_tariff_rate = nil
267
+ scenario.pv_monthly_grid_connection_fee_dollars_per_kw = nil
268
+ scenario.pv_monthly_grid_connection_fee_dollars = nil
269
+ end
270
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
271
+ hpxml_default = _test_measure()
272
+ hpxml_default.header.utility_bill_scenarios.each do |scenario|
273
+ _test_default_bills_values(scenario, 12, 12, nil, nil, nil, nil, nil, 0.11362695139911635, 0.7169975308418142, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
274
+ end
275
+
276
+ # Test defaults w/ electricity JSON file
277
+ hpxml.header.utility_bill_scenarios.each do |scenario|
278
+ scenario.elec_tariff_filepath = File.join(File.dirname(__FILE__), '..', '..', 'ReportUtilityBills', 'resources', 'detailed_rates', 'Sample Tiered Rate.json')
279
+ end
280
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
281
+ hpxml_default = _test_measure()
282
+ hpxml_default.header.utility_bill_scenarios.each do |scenario|
283
+ _test_default_bills_values(scenario, nil, 12, nil, nil, nil, nil, nil, nil, 0.7169975308418142, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
284
+ end
285
+ end
286
+
205
287
  def test_site
206
288
  # Test inputs not overridden by defaults
207
289
  hpxml = _create_hpxml('base.xml')
208
290
  hpxml.site.site_type = HPXML::SiteTypeRural
209
291
  hpxml.site.shielding_of_home = HPXML::ShieldingExposed
292
+ hpxml.site.ground_conductivity = 0.8
210
293
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
211
294
  hpxml_default = _test_measure()
212
- _test_default_site_values(hpxml_default, HPXML::SiteTypeRural, HPXML::ShieldingExposed)
295
+ _test_default_site_values(hpxml_default, HPXML::SiteTypeRural, HPXML::ShieldingExposed, 0.8)
213
296
 
214
297
  # Test defaults
215
298
  hpxml.site.site_type = nil
216
299
  hpxml.site.shielding_of_home = nil
300
+ hpxml.site.ground_conductivity = nil
217
301
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
218
302
  hpxml_default = _test_measure()
219
- _test_default_site_values(hpxml_default, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal)
303
+ _test_default_site_values(hpxml_default, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 1.0)
220
304
  end
221
305
 
222
306
  def test_neighbor_buildings
@@ -321,23 +405,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
321
405
  def test_climate_and_risk_zones
322
406
  # Test inputs not overridden by defaults
323
407
  hpxml = _create_hpxml('base.xml')
324
- hpxml.climate_and_risk_zones.iecc_year = 2009
325
- hpxml.climate_and_risk_zones.iecc_zone = '2B'
408
+ hpxml.climate_and_risk_zones.climate_zone_ieccs[0].year = 2009
409
+ hpxml.climate_and_risk_zones.climate_zone_ieccs[0].zone = '2B'
326
410
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
327
411
  hpxml_default = _test_measure()
328
412
  _test_default_climate_and_risk_zones_values(hpxml_default, 2009, '2B')
329
413
 
330
414
  # Test defaults
331
- hpxml.climate_and_risk_zones.iecc_year = nil
332
- hpxml.climate_and_risk_zones.iecc_zone = nil
415
+ hpxml.climate_and_risk_zones.climate_zone_ieccs[0].delete
333
416
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
334
417
  hpxml_default = _test_measure()
335
418
  _test_default_climate_and_risk_zones_values(hpxml_default, 2006, '5B')
336
419
 
337
420
  # Test defaults - invalid IECC zone
338
421
  hpxml = _create_hpxml('base-location-capetown-zaf.xml')
339
- hpxml.climate_and_risk_zones.iecc_year = nil
340
- hpxml.climate_and_risk_zones.iecc_zone = nil
341
422
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
342
423
  hpxml_default = _test_measure()
343
424
  _test_default_climate_and_risk_zones_values(hpxml_default, nil, nil)
@@ -559,7 +640,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
559
640
  hpxml.walls[1].interior_finish_thickness = nil
560
641
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
561
642
  hpxml_default = _test_measure()
562
- _test_default_wall_values(hpxml_default.walls[1], HPXML::SidingTypeWood, 0.5, HPXML::ColorLight, 0.90, HPXML::InteriorFinishNone, nil, 180)
643
+ _test_default_wall_values(hpxml_default.walls[1], HPXML::SidingTypeWood, 0.5, HPXML::ColorLight, 0.90, HPXML::InteriorFinishNone, nil, nil)
563
644
  end
564
645
 
565
646
  def test_foundation_walls
@@ -617,29 +698,29 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
617
698
  1000, 0.0, 10.0, 0.0, 10.0, HPXML::FoundationWallTypeSolidConcrete)
618
699
  end
619
700
 
620
- def test_frame_floors
701
+ def test_floors
621
702
  # Test inputs not overridden by defaults
622
703
  hpxml = _create_hpxml('base.xml')
623
- hpxml.frame_floors[0].interior_finish_type = HPXML::InteriorFinishWood
624
- hpxml.frame_floors[0].interior_finish_thickness = 0.375
704
+ hpxml.floors[0].interior_finish_type = HPXML::InteriorFinishWood
705
+ hpxml.floors[0].interior_finish_thickness = 0.375
625
706
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
626
707
  hpxml_default = _test_measure()
627
- _test_default_frame_floor_values(hpxml_default.frame_floors[0], HPXML::InteriorFinishWood, 0.375)
708
+ _test_default_floor_values(hpxml_default.floors[0], HPXML::InteriorFinishWood, 0.375)
628
709
 
629
710
  # Test defaults w/ ceiling
630
- hpxml.frame_floors[0].interior_finish_type = nil
631
- hpxml.frame_floors[0].interior_finish_thickness = nil
711
+ hpxml.floors[0].interior_finish_type = nil
712
+ hpxml.floors[0].interior_finish_thickness = nil
632
713
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
633
714
  hpxml_default = _test_measure()
634
- _test_default_frame_floor_values(hpxml_default.frame_floors[0], HPXML::InteriorFinishGypsumBoard, 0.5)
715
+ _test_default_floor_values(hpxml_default.floors[0], HPXML::InteriorFinishGypsumBoard, 0.5)
635
716
 
636
717
  # Test defaults w/ floor
637
718
  hpxml = _create_hpxml('base-foundation-vented-crawlspace.xml')
638
- hpxml.frame_floors[0].interior_finish_type = nil
639
- hpxml.frame_floors[0].interior_finish_thickness = nil
719
+ hpxml.floors[0].interior_finish_type = nil
720
+ hpxml.floors[0].interior_finish_thickness = nil
640
721
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
641
722
  hpxml_default = _test_measure()
642
- _test_default_frame_floor_values(hpxml_default.frame_floors[0], HPXML::InteriorFinishNone, nil)
723
+ _test_default_floor_values(hpxml_default.floors[0], HPXML::InteriorFinishNone, nil)
643
724
  end
644
725
 
645
726
  def test_slabs
@@ -962,11 +1043,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
962
1043
  hpxml.cooling_systems[0].charge_defect_ratio = -0.11
963
1044
  hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
964
1045
  hpxml.cooling_systems[0].cooling_capacity = 12345
965
- hpxml.cooling_systems[0].cooling_efficiency_seer = 12.5
966
- hpxml.cooling_systems[0].year_installed = 2010
1046
+ hpxml.cooling_systems[0].cooling_efficiency_seer = 12.0
1047
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1048
+ hpxml_default = _test_measure()
1049
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0)
1050
+
1051
+ # Test defaults - SEER2
1052
+ hpxml.cooling_systems[0].cooling_efficiency_seer = nil
1053
+ hpxml.cooling_systems[0].cooling_efficiency_seer2 = 11.4
967
1054
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
968
1055
  hpxml_default = _test_measure()
969
- _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.5)
1056
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0)
970
1057
 
971
1058
  # Test defaults
972
1059
  hpxml.cooling_systems[0].cooling_shr = nil
@@ -975,11 +1062,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
975
1062
  hpxml.cooling_systems[0].charge_defect_ratio = nil
976
1063
  hpxml.cooling_systems[0].airflow_defect_ratio = nil
977
1064
  hpxml.cooling_systems[0].cooling_capacity = nil
978
- hpxml.cooling_systems[0].cooling_efficiency_seer = nil
979
- hpxml.cooling_systems[0].year_installed = 2010
980
1065
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
981
1066
  hpxml_default = _test_measure()
982
- _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.375, 0, 0, nil, 13.76)
1067
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, 12.0)
983
1068
  end
984
1069
 
985
1070
  def test_room_air_conditioners
@@ -987,20 +1072,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
987
1072
  hpxml = _create_hpxml('base-hvac-room-ac-only.xml')
988
1073
  hpxml.cooling_systems[0].cooling_shr = 0.88
989
1074
  hpxml.cooling_systems[0].cooling_capacity = 12345
990
- hpxml.cooling_systems[0].cooling_efficiency_eer = 12.5
991
- hpxml.cooling_systems[0].year_installed = 2010
992
1075
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
993
1076
  hpxml_default = _test_measure()
994
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.88, 12345, 12.5)
1077
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.88, 12345)
995
1078
 
996
1079
  # Test defaults
997
1080
  hpxml.cooling_systems[0].cooling_shr = nil
998
1081
  hpxml.cooling_systems[0].cooling_capacity = nil
999
- hpxml.cooling_systems[0].cooling_efficiency_eer = nil
1000
- hpxml.cooling_systems[0].year_installed = 2010
1001
1082
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1002
1083
  hpxml_default = _test_measure()
1003
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil, 9.93)
1084
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil)
1004
1085
  end
1005
1086
 
1006
1087
  def test_evaporative_coolers
@@ -1028,7 +1109,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1028
1109
  hpxml.cooling_systems[0].cooling_capacity = 12345
1029
1110
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1030
1111
  hpxml_default = _test_measure()
1031
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.78, 0.66, -0.11, -0.22, 12345)
1112
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.78, 0.66, -0.11, -0.22, 12345, 19.0)
1032
1113
 
1033
1114
  # Test defaults
1034
1115
  hpxml.cooling_systems[0].cooling_shr = nil
@@ -1038,52 +1119,37 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1038
1119
  hpxml.cooling_systems[0].cooling_capacity = nil
1039
1120
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1040
1121
  hpxml_default = _test_measure()
1041
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.18, 0, 0, nil)
1122
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.18, 0, 0, nil, 19.0)
1042
1123
 
1043
1124
  # Test defaults w/ ductless
1044
1125
  hpxml.cooling_systems[0].distribution_system.delete
1045
1126
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1046
1127
  hpxml_default = _test_measure()
1047
- _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil)
1128
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 19.0)
1129
+
1130
+ # Test defaults w/ ductless - SEER2
1131
+ hpxml.cooling_systems[0].cooling_efficiency_seer = nil
1132
+ hpxml.cooling_systems[0].cooling_efficiency_seer2 = 13.3
1133
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1134
+ hpxml_default = _test_measure()
1135
+ _test_default_mini_split_air_conditioner_values(hpxml_default.cooling_systems[0], 0.73, 0.07, 0, 0, nil, 13.3)
1048
1136
  end
1049
1137
 
1050
1138
  def test_ptac
1051
1139
  # Test inputs not overridden by defaults
1052
- hpxml = _create_hpxml('base-hvac-ptac-with-heating.xml')
1140
+ hpxml = _create_hpxml('base-hvac-ptac-with-heating-electricity.xml')
1053
1141
  hpxml.cooling_systems[0].cooling_shr = 0.75
1054
1142
  hpxml.cooling_systems[0].cooling_capacity = 12345
1055
- hpxml.cooling_systems[0].cooling_efficiency_eer = 12.5
1056
- hpxml.heating_systems[0].heating_efficiency_percent = 0.98
1057
1143
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1058
1144
  hpxml_default = _test_measure()
1059
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.75, 12345, 12.5)
1060
- _test_default_elec_resistance(hpxml_default.heating_systems[0], 0.98)
1145
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.75, 12345)
1061
1146
 
1062
1147
  # Test defaults
1063
1148
  hpxml.cooling_systems[0].cooling_shr = nil
1064
1149
  hpxml.cooling_systems[0].cooling_capacity = nil
1065
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1066
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1067
- hpxml_default = _test_measure()
1068
- _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil, 12.5)
1069
- _test_default_elec_resistance(hpxml_default.heating_systems[0], 1.0)
1070
- end
1071
-
1072
- def test_elec_resistance
1073
- # Test inputs not overridden by defaults
1074
- hpxml = _create_hpxml('base-hvac-elec-resistance-only.xml')
1075
- hpxml.heating_systems[0].heating_efficiency_percent = 0.98
1076
- hpxml.heating_systems[0].year_installed = 2010
1077
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1078
- hpxml_default = _test_measure()
1079
- _test_default_elec_resistance(hpxml_default.heating_systems[0], 0.98)
1080
-
1081
- # Test defaults
1082
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1083
- hpxml.heating_systems[0].year_installed = 2010
1084
1150
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1085
1151
  hpxml_default = _test_measure()
1086
- _test_default_elec_resistance(hpxml_default.heating_systems[0], 1.0)
1152
+ _test_default_room_air_conditioner_ptac_values(hpxml_default.cooling_systems[0], 0.65, nil)
1087
1153
  end
1088
1154
 
1089
1155
  def test_furnaces
@@ -1092,21 +1158,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1092
1158
  hpxml.heating_systems[0].fan_watts_per_cfm = 0.66
1093
1159
  hpxml.heating_systems[0].airflow_defect_ratio = -0.22
1094
1160
  hpxml.heating_systems[0].heating_capacity = 12345
1095
- hpxml.heating_systems[0].heating_efficiency_afue = 0.85
1096
- hpxml.heating_systems[0].year_installed = 2010
1097
1161
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1098
1162
  hpxml_default = _test_measure()
1099
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.66, -0.22, 12345, 0.85)
1163
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.66, -0.22, 12345)
1100
1164
 
1101
1165
  # Test defaults
1102
1166
  hpxml.heating_systems[0].fan_watts_per_cfm = nil
1103
1167
  hpxml.heating_systems[0].airflow_defect_ratio = nil
1104
1168
  hpxml.heating_systems[0].heating_capacity = nil
1105
- hpxml.heating_systems[0].heating_efficiency_afue = nil
1106
- hpxml.heating_systems[0].year_installed = 2010
1107
1169
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1108
1170
  hpxml_default = _test_measure()
1109
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.5, 0, nil, 0.848)
1171
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.375, 0, nil)
1110
1172
 
1111
1173
  # Test defaults w/ gravity distribution system
1112
1174
  hpxml = _create_hpxml('base-hvac-furnace-gas-only.xml')
@@ -1114,10 +1176,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1114
1176
  hpxml.heating_systems[0].fan_watts_per_cfm = nil
1115
1177
  hpxml.heating_systems[0].airflow_defect_ratio = nil
1116
1178
  hpxml.heating_systems[0].heating_capacity = nil
1117
- hpxml.heating_systems[0].year_installed = 2010
1118
1179
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1119
1180
  hpxml_default = _test_measure()
1120
- _test_default_furnace_values(hpxml_default.heating_systems[0], 0.0, 0, nil, 0.92)
1181
+ _test_default_furnace_values(hpxml_default.heating_systems[0], 0.0, 0, nil)
1121
1182
  end
1122
1183
 
1123
1184
  def test_wall_furnaces
@@ -1125,20 +1186,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1125
1186
  hpxml = _create_hpxml('base-hvac-wall-furnace-elec-only.xml')
1126
1187
  hpxml.heating_systems[0].fan_watts = 22
1127
1188
  hpxml.heating_systems[0].heating_capacity = 12345
1128
- hpxml.heating_systems[0].heating_efficiency_afue = 0.60
1129
- hpxml.heating_systems[0].year_installed = 2010
1130
1189
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1131
1190
  hpxml_default = _test_measure()
1132
- _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 22, 12345, 0.60)
1191
+ _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 22, 12345)
1133
1192
 
1134
1193
  # Test defaults
1135
1194
  hpxml.heating_systems[0].fan_watts = nil
1136
1195
  hpxml.heating_systems[0].heating_capacity = nil
1137
- hpxml.heating_systems[0].heating_efficiency_afue = nil
1138
- hpxml.heating_systems[0].year_installed = 2010
1139
1196
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1140
1197
  hpxml_default = _test_measure()
1141
- _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 0, nil, 0.98)
1198
+ _test_default_wall_furnace_values(hpxml_default.heating_systems[0], 0, nil)
1142
1199
  end
1143
1200
 
1144
1201
  def test_floor_furnaces
@@ -1146,19 +1203,15 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1146
1203
  hpxml = _create_hpxml('base-hvac-floor-furnace-propane-only.xml')
1147
1204
  hpxml.heating_systems[0].fan_watts = 22
1148
1205
  hpxml.heating_systems[0].heating_capacity = 12345
1149
- hpxml.heating_systems[0].heating_efficiency_afue = 0.66
1150
- hpxml.heating_systems[0].year_installed = 1980
1151
1206
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1152
1207
  hpxml_default = _test_measure()
1153
- _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 22, 12345, 0.66)
1208
+ _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 22, 12345)
1154
1209
 
1155
1210
  # Test defaults
1156
1211
  hpxml.heating_systems[0].fan_watts = nil
1157
- hpxml.heating_systems[0].heating_efficiency_afue = nil
1158
- hpxml.heating_systems[0].year_installed = 1980
1159
1212
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1160
1213
  hpxml_default = _test_measure()
1161
- _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 0, nil, 0.60)
1214
+ _test_default_floor_furnace_values(hpxml_default.heating_systems[0], 0, nil)
1162
1215
  end
1163
1216
 
1164
1217
  def test_boilers
@@ -1166,38 +1219,30 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1166
1219
  hpxml = _create_hpxml('base-hvac-boiler-gas-only.xml')
1167
1220
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
1168
1221
  hpxml.heating_systems[0].heating_capacity = 12345
1169
- hpxml.heating_systems[0].heating_efficiency_afue = 0.85
1170
- hpxml.heating_systems[0].year_installed = 2010
1171
1222
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1172
1223
  hpxml_default = _test_measure()
1173
- _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, 12345, 0.85)
1224
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, 12345)
1174
1225
 
1175
1226
  # Test defaults w/ in-unit boiler
1176
1227
  hpxml.heating_systems[0].electric_auxiliary_energy = nil
1177
1228
  hpxml.heating_systems[0].heating_capacity = nil
1178
- hpxml.heating_systems[0].heating_efficiency_afue = nil
1179
- hpxml.heating_systems[0].year_installed = 2010
1180
1229
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1181
1230
  hpxml_default = _test_measure()
1182
- _test_default_boiler_values(hpxml_default.heating_systems[0], 170.0, nil, 0.797)
1231
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 170.0, nil)
1183
1232
 
1184
1233
  # Test inputs not overridden by defaults (shared boiler)
1185
1234
  hpxml = _create_hpxml('base-bldgtype-multifamily-shared-boiler-only-baseboard.xml')
1186
1235
  hpxml.heating_systems[0].shared_loop_watts = nil
1187
1236
  hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
1188
- hpxml.heating_systems[0].heating_efficiency_afue = 0.85
1189
- hpxml.heating_systems[0].year_installed = 1980
1190
1237
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1191
1238
  hpxml_default = _test_measure()
1192
- _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, nil, 0.85)
1239
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 99.9, nil)
1193
1240
 
1194
1241
  # Test defaults w/ shared boiler
1195
1242
  hpxml.heating_systems[0].electric_auxiliary_energy = nil
1196
- hpxml.heating_systems[0].heating_efficiency_afue = nil
1197
- hpxml.heating_systems[0].year_installed = 1980
1198
1243
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1199
1244
  hpxml_default = _test_measure()
1200
- _test_default_boiler_values(hpxml_default.heating_systems[0], 220.0, nil, 0.723)
1245
+ _test_default_boiler_values(hpxml_default.heating_systems[0], 220.0, nil)
1201
1246
  end
1202
1247
 
1203
1248
  def test_stoves
@@ -1205,27 +1250,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1205
1250
  hpxml = _create_hpxml('base-hvac-stove-oil-only.xml')
1206
1251
  hpxml.heating_systems[0].fan_watts = 22
1207
1252
  hpxml.heating_systems[0].heating_capacity = 12345
1208
- hpxml.heating_systems[0].heating_efficiency_percent = 0.70
1209
- hpxml.heating_systems[0].year_installed = 1980
1210
1253
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1211
1254
  hpxml_default = _test_measure()
1212
- _test_default_stove_values(hpxml_default.heating_systems[0], 22, 12345, 0.70)
1255
+ _test_default_stove_values(hpxml_default.heating_systems[0], 22, 12345)
1213
1256
 
1214
1257
  # Test defaults
1215
1258
  hpxml.heating_systems[0].fan_watts = nil
1216
1259
  hpxml.heating_systems[0].heating_capacity = nil
1217
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1218
- hpxml.heating_systems[0].year_installed = 1980
1219
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1220
- hpxml_default = _test_measure()
1221
- _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil, 0.81)
1222
-
1223
- # Test defaults w/ wood pellets
1224
- hpxml.heating_systems[0].year_installed = nil
1225
- hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeWoodPellets
1226
1260
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1227
1261
  hpxml_default = _test_measure()
1228
- _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil, 0.78)
1262
+ _test_default_stove_values(hpxml_default.heating_systems[0], 40, nil)
1229
1263
  end
1230
1264
 
1231
1265
  def test_portable_heaters
@@ -1233,20 +1267,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1233
1267
  hpxml = _create_hpxml('base-hvac-portable-heater-gas-only.xml')
1234
1268
  hpxml.heating_systems[0].fan_watts = 22
1235
1269
  hpxml.heating_systems[0].heating_capacity = 12345
1236
- hpxml.heating_systems[0].heating_efficiency_percent = 0.65
1237
- hpxml.heating_systems[0].year_installed = 2010
1238
1270
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1239
1271
  hpxml_default = _test_measure()
1240
- _test_default_portable_heater_values(hpxml_default.heating_systems[0], 22, 12345, 0.65)
1272
+ _test_default_portable_heater_values(hpxml_default.heating_systems[0], 22, 12345)
1241
1273
 
1242
1274
  # Test defaults
1243
1275
  hpxml.heating_systems[0].fan_watts = nil
1244
1276
  hpxml.heating_systems[0].heating_capacity = nil
1245
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1246
- hpxml.heating_systems[0].year_installed = 2010
1247
1277
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1248
1278
  hpxml_default = _test_measure()
1249
- _test_default_portable_heater_values(hpxml_default.heating_systems[0], 0, nil, 0.81)
1279
+ _test_default_portable_heater_values(hpxml_default.heating_systems[0], 0, nil)
1250
1280
  end
1251
1281
 
1252
1282
  def test_fixed_heaters
@@ -1254,20 +1284,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1254
1284
  hpxml = _create_hpxml('base-hvac-fixed-heater-gas-only.xml')
1255
1285
  hpxml.heating_systems[0].fan_watts = 22
1256
1286
  hpxml.heating_systems[0].heating_capacity = 12345
1257
- hpxml.heating_systems[0].heating_efficiency_percent = 0.60
1258
- hpxml.heating_systems[0].year_installed = 2010
1259
1287
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1260
1288
  hpxml_default = _test_measure()
1261
- _test_default_fixed_heater_values(hpxml_default.heating_systems[0], 22, 12345, 0.60)
1289
+ _test_default_fixed_heater_values(hpxml_default.heating_systems[0], 22, 12345)
1262
1290
 
1263
1291
  # Test defaults
1264
1292
  hpxml.heating_systems[0].fan_watts = nil
1265
1293
  hpxml.heating_systems[0].heating_capacity = nil
1266
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1267
- hpxml.heating_systems[0].year_installed = 2010
1268
1294
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1269
1295
  hpxml_default = _test_measure()
1270
- _test_default_fixed_heater_values(hpxml_default.heating_systems[0], 0, nil, 0.81)
1296
+ _test_default_fixed_heater_values(hpxml_default.heating_systems[0], 0, nil)
1271
1297
  end
1272
1298
 
1273
1299
  def test_fireplaces
@@ -1275,30 +1301,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1275
1301
  hpxml = _create_hpxml('base-hvac-fireplace-wood-only.xml')
1276
1302
  hpxml.heating_systems[0].fan_watts = 22
1277
1303
  hpxml.heating_systems[0].heating_capacity = 12345
1278
- hpxml.heating_systems[0].heating_efficiency_percent = 0.50
1279
- hpxml.heating_systems[0].year_installed = 2010
1280
1304
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1281
1305
  hpxml_default = _test_measure()
1282
- _test_default_fireplace_values(hpxml_default.heating_systems[0], 22, 12345, 0.50)
1306
+ _test_default_fireplace_values(hpxml_default.heating_systems[0], 22, 12345)
1283
1307
 
1284
1308
  # Test defaults
1285
1309
  hpxml.heating_systems[0].fan_watts = nil
1286
1310
  hpxml.heating_systems[0].heating_capacity = nil
1287
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1288
- hpxml.heating_systems[0].year_installed = 2010
1289
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1290
- hpxml_default = _test_measure()
1291
- _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil, 0.60)
1292
-
1293
- # Test defaults with electric fireplace
1294
- hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
1295
- hpxml.heating_systems[0].fan_watts = nil
1296
- hpxml.heating_systems[0].heating_capacity = nil
1297
- hpxml.heating_systems[0].heating_efficiency_percent = nil
1298
- hpxml.heating_systems[0].year_installed = 2010
1299
1311
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1300
1312
  hpxml_default = _test_measure()
1301
- _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil, 1.0)
1313
+ _test_default_fireplace_values(hpxml_default.heating_systems[0], 0, nil)
1302
1314
  end
1303
1315
 
1304
1316
  def test_air_source_heat_pumps
@@ -1315,12 +1327,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1315
1327
  hpxml.heat_pumps[0].backup_heating_capacity = 34567
1316
1328
  hpxml.heat_pumps[0].cooling_efficiency_seer = 14.0
1317
1329
  hpxml.heat_pumps[0].heating_efficiency_hspf = 8.0
1318
- hpxml.heat_pumps[0].year_installed = 2010
1319
1330
  hpxml.heat_pumps[0].backup_heating_lockout_temp = 20.0
1320
1331
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1321
1332
  hpxml_default = _test_measure()
1322
1333
  _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, 20.0)
1323
1334
 
1335
+ # Test defaults - SEER2/HSPF2
1336
+ hpxml.heat_pumps[0].cooling_efficiency_seer = nil
1337
+ hpxml.heat_pumps[0].cooling_efficiency_seer2 = 13.3
1338
+ hpxml.heat_pumps[0].heating_efficiency_hspf = nil
1339
+ hpxml.heat_pumps[0].heating_efficiency_hspf2 = 6.8
1340
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1341
+ hpxml_default = _test_measure()
1342
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 14.0, 8.0, 20.0)
1343
+
1324
1344
  # Test defaults
1325
1345
  hpxml.heat_pumps[0].cooling_shr = nil
1326
1346
  hpxml.heat_pumps[0].compressor_type = nil
@@ -1331,13 +1351,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1331
1351
  hpxml.heat_pumps[0].heating_capacity = nil
1332
1352
  hpxml.heat_pumps[0].heating_capacity_17F = nil
1333
1353
  hpxml.heat_pumps[0].backup_heating_capacity = nil
1334
- hpxml.heat_pumps[0].cooling_efficiency_seer = nil
1335
- hpxml.heat_pumps[0].heating_efficiency_hspf = nil
1336
- hpxml.heat_pumps[0].year_installed = 2010
1337
1354
  hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1338
1355
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1339
1356
  hpxml_default = _test_measure()
1340
- _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil, 13.76, 7.9, 40.0)
1357
+ _test_default_air_to_air_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil, 14.0, 8.0, 40.0)
1341
1358
  end
1342
1359
 
1343
1360
  def test_pthp
@@ -1376,7 +1393,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1376
1393
  hpxml.heat_pumps[0].backup_heating_lockout_temp = 20.0
1377
1394
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1378
1395
  hpxml_default = _test_measure()
1379
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 20.0)
1396
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567, 19.0, 10.0, 20.0)
1380
1397
 
1381
1398
  # Test defaults
1382
1399
  hpxml.heat_pumps[0].cooling_shr = nil
@@ -1390,13 +1407,22 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1390
1407
  hpxml.heat_pumps[0].backup_heating_lockout_temp = nil
1391
1408
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1392
1409
  hpxml_default = _test_measure()
1393
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.18, 0, 0, nil, nil, nil, nil, 40.0)
1410
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.18, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 40.0)
1394
1411
 
1395
1412
  # Test defaults w/ ductless
1396
1413
  hpxml.heat_pumps[0].distribution_system.delete
1397
1414
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1398
1415
  hpxml_default = _test_measure()
1399
- _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 40.0)
1416
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 19.0, 10.0, 40.0)
1417
+
1418
+ # Test defaults w/ ductless - SEER2/HSPF2
1419
+ hpxml.heat_pumps[0].cooling_efficiency_seer = nil
1420
+ hpxml.heat_pumps[0].cooling_efficiency_seer2 = 13.3
1421
+ hpxml.heat_pumps[0].heating_efficiency_hspf = nil
1422
+ hpxml.heat_pumps[0].heating_efficiency_hspf2 = 6.8
1423
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1424
+ hpxml_default = _test_measure()
1425
+ _test_default_mini_split_heat_pump_values(hpxml_default.heat_pumps[0], 0.73, 0.07, 0, 0, nil, nil, nil, nil, 13.3, 7.56, 40.0)
1400
1426
  end
1401
1427
 
1402
1428
  def test_ground_source_heat_pumps
@@ -1508,6 +1534,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1508
1534
  hpxml = _create_hpxml('base.xml')
1509
1535
  hpxml.hvac_distributions[0].conditioned_floor_area_served = 2700.0
1510
1536
  hpxml.hvac_distributions[0].number_of_return_registers = 2
1537
+ hpxml.hvac_distributions[0].ducts[0].duct_surface_area_multiplier = 0.5
1538
+ hpxml.hvac_distributions[0].ducts[1].duct_surface_area_multiplier = 1.5
1511
1539
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1512
1540
  hpxml_default = _test_measure()
1513
1541
  expected_supply_locations = ['attic - unvented']
@@ -1516,15 +1544,18 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1516
1544
  expected_return_areas = [50.0]
1517
1545
  expected_supply_fracs = [1.0]
1518
1546
  expected_return_fracs = [1.0]
1547
+ expected_supply_area_mults = [0.5]
1548
+ expected_return_area_mults = [1.5]
1519
1549
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1520
1550
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1521
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1551
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1522
1552
 
1523
1553
  # Test defaults w/ conditioned basement
1524
1554
  hpxml.hvac_distributions[0].number_of_return_registers = nil
1525
1555
  hpxml.hvac_distributions[0].ducts.each do |duct|
1526
1556
  duct.duct_location = nil
1527
1557
  duct.duct_surface_area = nil
1558
+ duct.duct_surface_area_multiplier = nil
1528
1559
  end
1529
1560
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1530
1561
  hpxml_default = _test_measure()
@@ -1534,9 +1565,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1534
1565
  expected_return_areas = [270.0]
1535
1566
  expected_supply_fracs = [1.0]
1536
1567
  expected_return_fracs = [1.0]
1568
+ expected_supply_area_mults = [1.0]
1569
+ expected_return_area_mults = [1.0]
1537
1570
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1538
1571
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1539
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1572
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1540
1573
 
1541
1574
  # Test defaults w/ multiple foundations
1542
1575
  hpxml = _create_hpxml('base-foundation-multiple.xml')
@@ -1545,6 +1578,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1545
1578
  hpxml.hvac_distributions[0].ducts.each do |duct|
1546
1579
  duct.duct_location = nil
1547
1580
  duct.duct_surface_area = nil
1581
+ duct.duct_surface_area_multiplier = nil
1548
1582
  end
1549
1583
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1550
1584
  hpxml_default = _test_measure()
@@ -1554,9 +1588,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1554
1588
  expected_return_areas = [67.5]
1555
1589
  expected_supply_fracs = [1.0]
1556
1590
  expected_return_fracs = [1.0]
1591
+ expected_supply_area_mults = [1.0]
1592
+ expected_return_area_mults = [1.0]
1557
1593
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1558
1594
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1559
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1595
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1560
1596
 
1561
1597
  # Test defaults w/ foundation exposed to ambient
1562
1598
  hpxml = _create_hpxml('base-foundation-ambient.xml')
@@ -1565,6 +1601,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1565
1601
  hpxml.hvac_distributions[0].ducts.each do |duct|
1566
1602
  duct.duct_location = nil
1567
1603
  duct.duct_surface_area = nil
1604
+ duct.duct_surface_area_multiplier = nil
1568
1605
  end
1569
1606
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1570
1607
  hpxml_default = _test_measure()
@@ -1574,9 +1611,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1574
1611
  expected_return_areas = [67.5]
1575
1612
  expected_supply_fracs = [1.0]
1576
1613
  expected_return_fracs = [1.0]
1614
+ expected_supply_area_mults = [1.0]
1615
+ expected_return_area_mults = [1.0]
1577
1616
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1578
1617
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1579
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1618
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1580
1619
 
1581
1620
  # Test defaults w/ building/unit adjacent to other housing unit
1582
1621
  hpxml = _create_hpxml('base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml')
@@ -1585,6 +1624,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1585
1624
  hpxml.hvac_distributions[0].ducts.each do |duct|
1586
1625
  duct.duct_location = nil
1587
1626
  duct.duct_surface_area = nil
1627
+ duct.duct_surface_area_multiplier = nil
1588
1628
  end
1589
1629
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1590
1630
  hpxml_default = _test_measure()
@@ -1594,9 +1634,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1594
1634
  expected_return_areas = [45.0]
1595
1635
  expected_supply_fracs = [1.0]
1596
1636
  expected_return_fracs = [1.0]
1637
+ expected_supply_area_mults = [1.0]
1638
+ expected_return_area_mults = [1.0]
1597
1639
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1598
1640
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1599
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1641
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1600
1642
 
1601
1643
  # Test defaults w/ 2-story building
1602
1644
  hpxml = _create_hpxml('base-enclosure-2stories.xml')
@@ -1605,6 +1647,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1605
1647
  hpxml.hvac_distributions[0].ducts.each do |duct|
1606
1648
  duct.duct_location = nil
1607
1649
  duct.duct_surface_area = nil
1650
+ duct.duct_surface_area_multiplier = nil
1608
1651
  end
1609
1652
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1610
1653
  hpxml_default = _test_measure()
@@ -1614,9 +1657,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1614
1657
  expected_return_areas = [227.82, 227.82, 75.94, 75.94]
1615
1658
  expected_supply_fracs = [0.375, 0.375, 0.125, 0.125]
1616
1659
  expected_return_fracs = [0.375, 0.375, 0.125, 0.125]
1660
+ expected_supply_area_mults = [1.0, 1.0, 1.0, 1.0]
1661
+ expected_return_area_mults = [1.0, 1.0, 1.0, 1.0]
1617
1662
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1618
1663
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1619
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1664
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1620
1665
 
1621
1666
  # Test defaults w/ 1-story building & multiple HVAC systems
1622
1667
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1628,6 +1673,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1628
1673
  hvac_distribution.ducts.each do |duct|
1629
1674
  duct.duct_location = nil
1630
1675
  duct.duct_surface_area = nil
1676
+ duct.duct_surface_area_multiplier = nil
1631
1677
  end
1632
1678
  end
1633
1679
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1638,9 +1684,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1638
1684
  expected_return_areas = [13.5, 13.5] * hpxml_default.hvac_distributions.size
1639
1685
  expected_supply_fracs = [0.5, 0.5] * hpxml_default.hvac_distributions.size
1640
1686
  expected_return_fracs = [0.5, 0.5] * hpxml_default.hvac_distributions.size
1687
+ expected_supply_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1688
+ expected_return_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1641
1689
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1642
1690
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1643
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1691
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1644
1692
 
1645
1693
  # Test defaults w/ 2-story building & multiple HVAC systems
1646
1694
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1653,6 +1701,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1653
1701
  hvac_distribution.ducts.each do |duct|
1654
1702
  duct.duct_location = nil
1655
1703
  duct.duct_surface_area = nil
1704
+ duct.duct_surface_area_multiplier = nil
1656
1705
  end
1657
1706
  end
1658
1707
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1663,9 +1712,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1663
1712
  expected_return_areas = [10.125, 10.125, 3.375, 3.375] * hpxml_default.hvac_distributions.size
1664
1713
  expected_supply_fracs = [0.375, 0.375, 0.125, 0.125] * hpxml_default.hvac_distributions.size
1665
1714
  expected_return_fracs = [0.375, 0.375, 0.125, 0.125] * hpxml_default.hvac_distributions.size
1715
+ expected_supply_area_mults = [1.0, 1.0, 1.0, 1.0] * hpxml_default.hvac_distributions.size
1716
+ expected_return_area_mults = [1.0, 1.0, 1.0, 1.0] * hpxml_default.hvac_distributions.size
1666
1717
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1667
1718
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1668
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1719
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1669
1720
 
1670
1721
  # Test defaults w/ 2-story building & multiple HVAC systems & duct area fractions
1671
1722
  hpxml = _create_hpxml('base-hvac-multiple.xml')
@@ -1683,6 +1734,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1683
1734
  hpxml.hvac_distributions.each do |hvac_distribution|
1684
1735
  hvac_distribution.ducts.each do |duct|
1685
1736
  duct.duct_surface_area = nil
1737
+ duct.duct_surface_area_multiplier = nil
1686
1738
  end
1687
1739
  end
1688
1740
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1693,9 +1745,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1693
1745
  expected_return_areas = [13.5, 13.5] * hpxml_default.hvac_distributions.size
1694
1746
  expected_supply_fracs = [0.75, 0.25] * hpxml_default.hvac_distributions.size
1695
1747
  expected_return_fracs = [0.5, 0.5] * hpxml_default.hvac_distributions.size
1748
+ expected_supply_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1749
+ expected_return_area_mults = [1.0, 1.0] * hpxml_default.hvac_distributions.size
1696
1750
  expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
1697
1751
  _test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas,
1698
- expected_supply_fracs, expected_return_fracs, expected_n_return_registers)
1752
+ expected_supply_fracs, expected_return_fracs, expected_n_return_registers, expected_supply_area_mults, expected_return_area_mults)
1699
1753
  end
1700
1754
 
1701
1755
  def test_mech_ventilation_fans
@@ -1820,19 +1874,40 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1820
1874
  vent_fan.is_shared_system = false
1821
1875
  vent_fan.hours_in_operation = 12.0
1822
1876
  vent_fan.fan_power = 12.5
1877
+ vent_fan.rated_flow_rate = 222.0
1823
1878
  vent_fan.cfis_vent_mode_airflow_fraction = 0.5
1879
+ vent_fan.cfis_addtl_runtime_operating_mode = HPXML::CFISModeSupplementalFan
1880
+ hpxml.ventilation_fans.add(id: "VentilationFan#{hpxml.ventilation_fans.size + 1}",
1881
+ tested_flow_rate: 79.0,
1882
+ fan_power: 9.0,
1883
+ fan_type: HPXML::MechVentTypeExhaust,
1884
+ is_shared_system: false,
1885
+ used_for_whole_building_ventilation: true)
1886
+ suppl_vent_fan = hpxml.ventilation_fans[-1]
1887
+ vent_fan.cfis_supplemental_fan_idref = suppl_vent_fan.id
1888
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1889
+ hpxml_default = _test_measure()
1890
+ _test_default_mech_vent_values(hpxml_default, false, 12.0, 12.5, 222.0, 0.5, HPXML::CFISModeSupplementalFan)
1891
+ _test_default_mech_vent_suppl_values(hpxml_default, false, nil, 9.0, 79.0)
1892
+
1893
+ # Test defaults w/ CFIS supplemental fan
1894
+ suppl_vent_fan.tested_flow_rate = nil
1895
+ suppl_vent_fan.is_shared_system = nil
1896
+ suppl_vent_fan.fan_power = nil
1824
1897
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1825
1898
  hpxml_default = _test_measure()
1826
- _test_default_mech_vent_values(hpxml_default, false, 12.0, 12.5, 330, 0.5)
1899
+ _test_default_mech_vent_suppl_values(hpxml_default, false, nil, 35.0, 100.0)
1827
1900
 
1828
1901
  # Test defaults w/ CFIS
1829
1902
  vent_fan.is_shared_system = nil
1830
1903
  vent_fan.hours_in_operation = nil
1831
1904
  vent_fan.fan_power = nil
1905
+ vent_fan.rated_flow_rate = nil
1832
1906
  vent_fan.cfis_vent_mode_airflow_fraction = nil
1907
+ vent_fan.cfis_addtl_runtime_operating_mode = nil
1833
1908
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1834
1909
  hpxml_default = _test_measure()
1835
- _test_default_mech_vent_values(hpxml_default, false, 8.0, 165.0, 330, 1.0)
1910
+ _test_default_mech_vent_values(hpxml_default, false, 8.0, 150.0, 300.0, 1.0, HPXML::CFISModeAirHandler)
1836
1911
 
1837
1912
  # Test inputs not overridden by defaults w/ ERV
1838
1913
  hpxml = _create_hpxml('base-mechvent-erv.xml')
@@ -1921,7 +1996,6 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1921
1996
  wh.location = HPXML::LocationLivingSpace
1922
1997
  wh.temperature = 111
1923
1998
  wh.energy_factor = 0.90
1924
- wh.year_installed = 2003
1925
1999
  wh.tank_model_type = HPXML::WaterHeaterTankModelTypeStratified
1926
2000
  end
1927
2001
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -1937,14 +2011,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1937
2011
  wh.recovery_efficiency = nil
1938
2012
  wh.location = nil
1939
2013
  wh.temperature = nil
1940
- wh.energy_factor = nil
1941
- wh.year_installed = 2003
1942
2014
  wh.tank_model_type = nil
1943
2015
  end
1944
2016
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1945
2017
  hpxml_default = _test_measure()
1946
2018
  _test_default_storage_water_heater_values(hpxml_default,
1947
- [false, 18766.7, 50.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.857, HPXML::WaterHeaterTankModelTypeMixed])
2019
+ [false, 18766.7, 50.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.9, HPXML::WaterHeaterTankModelTypeMixed])
1948
2020
 
1949
2021
  # Test defaults w/ 5-bedroom house & electric storage water heater
1950
2022
  hpxml = _create_hpxml('base-enclosure-beds-5.xml')
@@ -1955,14 +2027,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1955
2027
  wh.recovery_efficiency = nil
1956
2028
  wh.location = nil
1957
2029
  wh.temperature = nil
1958
- wh.energy_factor = nil
1959
- wh.year_installed = 2010
1960
2030
  wh.tank_model_type = nil
1961
2031
  end
1962
2032
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1963
2033
  hpxml_default = _test_measure()
1964
2034
  _test_default_storage_water_heater_values(hpxml_default,
1965
- [false, 18766.7, 66.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.90, HPXML::WaterHeaterTankModelTypeMixed])
2035
+ [false, 18766.7, 66.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.95, HPXML::WaterHeaterTankModelTypeMixed])
1966
2036
 
1967
2037
  # Test defaults w/ 3-bedroom house & 2 storage water heaters (1 electric and 1 natural gas)
1968
2038
  hpxml = _create_hpxml('base-dhw-multiple.xml')
@@ -1975,15 +2045,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
1975
2045
  wh.recovery_efficiency = nil
1976
2046
  wh.location = nil
1977
2047
  wh.temperature = nil
1978
- wh.energy_factor = nil
1979
- wh.year_installed = 2010
1980
2048
  wh.tank_model_type = nil
1981
2049
  end
1982
2050
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1983
2051
  hpxml_default = _test_measure()
1984
2052
  _test_default_storage_water_heater_values(hpxml_default,
1985
- [false, 15354.6, 50.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.90, HPXML::WaterHeaterTankModelTypeMixed],
1986
- [false, 36000.0, 40.0, 0.746, HPXML::LocationBasementConditioned, 125, 0.55, HPXML::WaterHeaterTankModelTypeMixed])
2053
+ [false, 15354.6, 50.0, 0.98, HPXML::LocationBasementConditioned, 125, 0.95, HPXML::WaterHeaterTankModelTypeMixed],
2054
+ [false, 36000.0, 40.0, 0.757, HPXML::LocationBasementConditioned, 125, 0.59, HPXML::WaterHeaterTankModelTypeMixed])
1987
2055
 
1988
2056
  # Test inputs not overridden by defaults w/ UEF
1989
2057
  hpxml = _create_hpxml('base-dhw-tank-gas-uef.xml')
@@ -2061,6 +2129,23 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2061
2129
  _test_default_heat_pump_water_heater_values(hpxml_default, [HPXML::WaterHeaterOperatingModeStandard])
2062
2130
  end
2063
2131
 
2132
+ def test_indirect_water_heaters
2133
+ # Test inputs not overridden by defaults
2134
+ hpxml = _create_hpxml('base-dhw-indirect.xml')
2135
+ hpxml.water_heating_systems[0].standby_loss_value = 0.99
2136
+ hpxml.water_heating_systems[0].standby_loss_units = HPXML::UnitsDegFPerHour
2137
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2138
+ hpxml_default = _test_measure()
2139
+ _test_default_indirect_water_heater_values(hpxml_default, [HPXML::UnitsDegFPerHour, 0.99])
2140
+
2141
+ # Test defaults
2142
+ hpxml.water_heating_systems[0].standby_loss_value = nil
2143
+ hpxml.water_heating_systems[0].standby_loss_units = nil
2144
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2145
+ hpxml_default = _test_measure()
2146
+ _test_default_indirect_water_heater_values(hpxml_default, [HPXML::UnitsDegFPerHour, 0.843])
2147
+ end
2148
+
2064
2149
  def test_hot_water_distribution
2065
2150
  # Test inputs not overridden by defaults -- standard
2066
2151
  hpxml = _create_hpxml('base.xml')
@@ -2243,10 +2328,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2243
2328
  hpxml.batteries[0].usable_capacity_ah = nil
2244
2329
  hpxml.batteries[0].rated_power_output = 1234.0
2245
2330
  hpxml.batteries[0].location = HPXML::LocationBasementConditioned
2246
- hpxml.batteries[0].lifetime_model = HPXML::BatteryLifetimeModelKandlerSmith
2331
+ # hpxml.batteries[0].lifetime_model = HPXML::BatteryLifetimeModelKandlerSmith
2332
+ hpxml.batteries[0].round_trip_efficiency = 0.9
2247
2333
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2248
2334
  hpxml_default = _test_measure()
2249
- _test_default_battery_values(hpxml_default, 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned, HPXML::BatteryLifetimeModelKandlerSmith)
2335
+ _test_default_battery_values(hpxml_default, 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned, HPXML::BatteryLifetimeModelKandlerSmith, 0.9)
2250
2336
 
2251
2337
  # Test w/ Ah instead of kWh
2252
2338
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2255,7 +2341,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2255
2341
  hpxml.batteries[0].usable_capacity_ah = 876.0
2256
2342
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2257
2343
  hpxml_default = _test_measure()
2258
- _test_default_battery_values(hpxml_default, nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned, HPXML::BatteryLifetimeModelKandlerSmith)
2344
+ _test_default_battery_values(hpxml_default, nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned, HPXML::BatteryLifetimeModelKandlerSmith, 0.9)
2259
2345
 
2260
2346
  # Test defaults
2261
2347
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2265,9 +2351,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2265
2351
  hpxml.batteries[0].rated_power_output = nil
2266
2352
  hpxml.batteries[0].location = nil
2267
2353
  hpxml.batteries[0].lifetime_model = nil
2354
+ hpxml.batteries[0].round_trip_efficiency = nil
2268
2355
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2269
2356
  hpxml_default = _test_measure()
2270
- _test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2357
+ _test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2271
2358
 
2272
2359
  # Test defaults w/ nominal kWh
2273
2360
  hpxml.batteries[0].nominal_capacity_kwh = 14.0
@@ -2277,7 +2364,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2277
2364
  hpxml.batteries[0].rated_power_output = nil
2278
2365
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2279
2366
  hpxml_default = _test_measure()
2280
- _test_default_battery_values(hpxml_default, 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2367
+ _test_default_battery_values(hpxml_default, 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2281
2368
 
2282
2369
  # Test defaults w/ usable kWh
2283
2370
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2287,7 +2374,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2287
2374
  hpxml.batteries[0].rated_power_output = nil
2288
2375
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2289
2376
  hpxml_default = _test_measure()
2290
- _test_default_battery_values(hpxml_default, 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2377
+ _test_default_battery_values(hpxml_default, 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2291
2378
 
2292
2379
  # Test defaults w/ nominal Ah
2293
2380
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2297,7 +2384,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2297
2384
  hpxml.batteries[0].rated_power_output = nil
2298
2385
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2299
2386
  hpxml_default = _test_measure()
2300
- _test_default_battery_values(hpxml_default, nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2387
+ _test_default_battery_values(hpxml_default, nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2301
2388
 
2302
2389
  # Test defaults w/ usable Ah
2303
2390
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2307,7 +2394,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2307
2394
  hpxml.batteries[0].rated_power_output = nil
2308
2395
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2309
2396
  hpxml_default = _test_measure()
2310
- _test_default_battery_values(hpxml_default, nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2397
+ _test_default_battery_values(hpxml_default, nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2311
2398
 
2312
2399
  # Test defaults w/ rated power output
2313
2400
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2317,7 +2404,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
2317
2404
  hpxml.batteries[0].rated_power_output = 10000.0
2318
2405
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2319
2406
  hpxml_default = _test_measure()
2320
- _test_default_battery_values(hpxml_default, 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone)
2407
+ _test_default_battery_values(hpxml_default, 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside, HPXML::BatteryLifetimeModelNone, 0.925)
2321
2408
  end
2322
2409
 
2323
2410
  def test_generators
@@ -3013,94 +3100,6 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3013
3100
  _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 67, 0.5, 0.1, 1.0, Schedule.FuelLoadsFireplaceWeekdayFractions, Schedule.FuelLoadsFireplaceWeekendFractions, Schedule.FuelLoadsFireplaceMonthlyMultipliers)
3014
3101
  end
3015
3102
 
3016
- def test_hvac_lookup
3017
- central_air_conditioner_seer = HVAC.get_default_hvac_efficiency_by_year_installed(1970, 'central air conditioner', 'electricity', 'SEER')
3018
- assert_equal(central_air_conditioner_seer, 8.0)
3019
-
3020
- room_air_conditioner_eer = HVAC.get_default_hvac_efficiency_by_year_installed(1993, 'room air conditioner', 'electricity', 'EER')
3021
- assert_equal(room_air_conditioner_eer, 9.05)
3022
-
3023
- furnace_afue = HVAC.get_default_hvac_efficiency_by_year_installed(1997, 'Furnace', 'natural gas', 'AFUE')
3024
- assert_equal(furnace_afue, 0.829)
3025
-
3026
- furnace_afue = HVAC.get_default_hvac_efficiency_by_year_installed(1981, 'Furnace', 'diesel', 'AFUE')
3027
- assert_equal(furnace_afue, 0.768)
3028
-
3029
- wall_furnace_afue = HVAC.get_default_hvac_efficiency_by_year_installed(1997, 'WallFurnace', 'natural gas', 'AFUE')
3030
- assert_equal(wall_furnace_afue, 0.656)
3031
-
3032
- wall_furnace_afue = HVAC.get_default_hvac_efficiency_by_year_installed(1971, 'WallFurnace', 'propane', 'AFUE')
3033
- assert_equal(wall_furnace_afue, 0.6)
3034
-
3035
- wall_furnace_afue = HVAC.get_default_hvac_efficiency_by_year_installed(1970, 'FloorFurnace', 'natural gas', 'AFUE')
3036
- assert_equal(wall_furnace_afue, 0.6)
3037
-
3038
- boiler_afue = HVAC.get_default_hvac_efficiency_by_year_installed(2004, 'Boiler', 'propane', 'AFUE')
3039
- assert_equal(boiler_afue, 0.831)
3040
-
3041
- heatpump_seer = HVAC.get_default_hvac_efficiency_by_year_installed(1991, 'air-to-air', 'electricity', 'SEER')
3042
- assert_equal(heatpump_seer, 9.77)
3043
-
3044
- heatpump_hspf = HVAC.get_default_hvac_efficiency_by_year_installed(1988, 'air-to-air', 'electricity', 'HSPF')
3045
- assert_equal(heatpump_hspf, 6.88)
3046
-
3047
- assert_equal(
3048
- HVAC.get_default_hvac_efficiency_by_year_installed(2010, 'air-to-air', 'electricity', 'SEER'),
3049
- HVAC.get_default_hvac_efficiency_by_year_installed(2011, 'air-to-air', 'electricity', 'SEER')
3050
- )
3051
-
3052
- assert_equal(
3053
- HVAC.get_default_hvac_efficiency_by_year_installed(2010, 'Furnace', 'natural gas', 'AFUE'),
3054
- HVAC.get_default_hvac_efficiency_by_year_installed(2020, 'Furnace', 'natural gas', 'AFUE')
3055
- )
3056
-
3057
- assert_equal(
3058
- HVAC.get_default_hvac_efficiency_by_year_installed(1969, 'Boiler', 'fuel oil', 'AFUE'),
3059
- HVAC.get_default_hvac_efficiency_by_year_installed(1970, 'Boiler', 'fuel oil', 'AFUE')
3060
- )
3061
-
3062
- assert_equal(
3063
- HVAC.get_default_hvac_efficiency_by_year_installed(1955, 'central air conditioner', 'electricity', 'SEER'),
3064
- HVAC.get_default_hvac_efficiency_by_year_installed(1970, 'central air conditioner', 'electricity', 'SEER')
3065
- )
3066
- end
3067
-
3068
- def test_dhw_lookup
3069
- waterheater_elec_ef = Waterheater.get_default_water_heater_efficiency_by_year_installed(2006, 'electricity')
3070
- assert_equal(waterheater_elec_ef, 0.9)
3071
-
3072
- waterheater_natural_gas_ef = Waterheater.get_default_water_heater_efficiency_by_year_installed(1998, 'natural gas')
3073
- assert_equal(waterheater_natural_gas_ef, 0.501)
3074
-
3075
- waterheater_propane_ef = Waterheater.get_default_water_heater_efficiency_by_year_installed(2007, 'propane')
3076
- assert_equal(waterheater_propane_ef, 0.55)
3077
-
3078
- waterheater_fuel_oil_ef = Waterheater.get_default_water_heater_efficiency_by_year_installed(1989, 'fuel oil')
3079
- assert_equal(waterheater_fuel_oil_ef, 0.54)
3080
-
3081
- waterheater_fuel_oil_ef = Waterheater.get_default_water_heater_efficiency_by_year_installed(1989, 'wood')
3082
- assert_equal(waterheater_fuel_oil_ef, 0.54)
3083
-
3084
- ['natural gas', 'electricity', 'propane', 'fuel oil'].each do |fuel_type|
3085
- assert_equal(
3086
- Waterheater.get_default_water_heater_efficiency_by_year_installed(2010, fuel_type),
3087
- Waterheater.get_default_water_heater_efficiency_by_year_installed(2011, fuel_type)
3088
- )
3089
- assert_equal(
3090
- Waterheater.get_default_water_heater_efficiency_by_year_installed(2010, fuel_type),
3091
- Waterheater.get_default_water_heater_efficiency_by_year_installed(2020, fuel_type)
3092
- )
3093
- assert_equal(
3094
- Waterheater.get_default_water_heater_efficiency_by_year_installed(1971, fuel_type),
3095
- Waterheater.get_default_water_heater_efficiency_by_year_installed(1972, fuel_type)
3096
- )
3097
- assert_equal(
3098
- Waterheater.get_default_water_heater_efficiency_by_year_installed(1955, fuel_type),
3099
- Waterheater.get_default_water_heater_efficiency_by_year_installed(1972, fuel_type)
3100
- )
3101
- end
3102
- end
3103
-
3104
3103
  def _test_measure()
3105
3104
  # create an instance of the measure
3106
3105
  measure = HPXMLtoOpenStudio.new
@@ -3138,7 +3137,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3138
3137
 
3139
3138
  def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
3140
3139
  dst_enabled, dst_begin_month, dst_begin_day, dst_end_month, dst_end_day, heat_pump_sizing_methodology,
3141
- allow_increased_fixed_capacities, state_code, time_zone_utc_offset, occupancy_calculation_type)
3140
+ allow_increased_fixed_capacities, state_code, time_zone_utc_offset, occupancy_calculation_type,
3141
+ temperature_capacitance_multiplier, natvent_days_per_week)
3142
3142
  assert_equal(tstep, hpxml.header.timestep)
3143
3143
  assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
3144
3144
  assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
@@ -3163,6 +3163,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3163
3163
  end
3164
3164
  assert_equal(time_zone_utc_offset, hpxml.header.time_zone_utc_offset)
3165
3165
  assert_equal(occupancy_calculation_type, hpxml.header.occupancy_calculation_type)
3166
+ assert_equal(temperature_capacitance_multiplier, hpxml.header.temperature_capacitance_multiplier)
3167
+ assert_equal(natvent_days_per_week, hpxml.header.natvent_days_per_week)
3166
3168
  end
3167
3169
 
3168
3170
  def _test_default_emissions_values(scenario, elec_schedule_number_of_header_rows, elec_schedule_column_number,
@@ -3215,9 +3217,117 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3215
3217
  end
3216
3218
  end
3217
3219
 
3218
- def _test_default_site_values(hpxml, site_type, shielding_of_home)
3220
+ def _test_default_bills_values(scenario,
3221
+ elec_fixed_charge, natural_gas_fixed_charge, propane_fixed_charge, fuel_oil_fixed_charge, coal_fixed_charge, wood_fixed_charge, wood_pellets_fixed_charge,
3222
+ elec_marginal_rate, natural_gas_marginal_rate, propane_marginal_rate, fuel_oil_marginal_rate, coal_marginal_rate, wood_marginal_rate, wood_pellets_marginal_rate,
3223
+ pv_compensation_type, pv_net_metering_annual_excess_sellback_rate_type, pv_net_metering_annual_excess_sellback_rate,
3224
+ pv_feed_in_tariff_rate, pv_monthly_grid_connection_fee_dollars_per_kw, pv_monthly_grid_connection_fee_dollars)
3225
+ if elec_fixed_charge.nil?
3226
+ assert_nil(scenario.elec_fixed_charge)
3227
+ else
3228
+ assert_equal(elec_fixed_charge, scenario.elec_fixed_charge)
3229
+ end
3230
+ if natural_gas_fixed_charge.nil?
3231
+ assert_nil(scenario.natural_gas_fixed_charge)
3232
+ else
3233
+ assert_equal(natural_gas_fixed_charge, scenario.natural_gas_fixed_charge)
3234
+ end
3235
+ if propane_fixed_charge.nil?
3236
+ assert_nil(scenario.propane_fixed_charge)
3237
+ else
3238
+ assert_equal(propane_fixed_charge, scenario.propane_fixed_charge)
3239
+ end
3240
+ if fuel_oil_fixed_charge.nil?
3241
+ assert_nil(scenario.fuel_oil_fixed_charge)
3242
+ else
3243
+ assert_equal(fuel_oil_fixed_charge, scenario.fuel_oil_fixed_charge)
3244
+ end
3245
+ if coal_fixed_charge.nil?
3246
+ assert_nil(scenario.coal_fixed_charge)
3247
+ else
3248
+ assert_equal(coal_fixed_charge, scenario.coal_fixed_charge)
3249
+ end
3250
+ if wood_fixed_charge.nil?
3251
+ assert_nil(scenario.wood_fixed_charge)
3252
+ else
3253
+ assert_equal(wood_fixed_charge, scenario.wood_fixed_charge)
3254
+ end
3255
+ if wood_pellets_fixed_charge.nil?
3256
+ assert_nil(scenario.wood_pellets_fixed_charge)
3257
+ else
3258
+ assert_equal(wood_pellets_fixed_charge, scenario.wood_pellets_fixed_charge)
3259
+ end
3260
+ if elec_marginal_rate.nil?
3261
+ assert_nil(scenario.elec_marginal_rate)
3262
+ else
3263
+ assert_equal(elec_marginal_rate, scenario.elec_marginal_rate)
3264
+ end
3265
+ if natural_gas_marginal_rate.nil?
3266
+ assert_nil(scenario.natural_gas_marginal_rate)
3267
+ else
3268
+ assert_equal(natural_gas_marginal_rate, scenario.natural_gas_marginal_rate)
3269
+ end
3270
+ if propane_marginal_rate.nil?
3271
+ assert_nil(scenario.propane_marginal_rate)
3272
+ else
3273
+ assert_equal(propane_marginal_rate, scenario.propane_marginal_rate)
3274
+ end
3275
+ if fuel_oil_marginal_rate.nil?
3276
+ assert_nil(scenario.fuel_oil_marginal_rate)
3277
+ else
3278
+ assert_equal(fuel_oil_marginal_rate, scenario.fuel_oil_marginal_rate)
3279
+ end
3280
+ if coal_marginal_rate.nil?
3281
+ assert_nil(scenario.coal_marginal_rate)
3282
+ else
3283
+ assert_equal(coal_marginal_rate, scenario.coal_marginal_rate)
3284
+ end
3285
+ if wood_marginal_rate.nil?
3286
+ assert_nil(scenario.wood_marginal_rate)
3287
+ else
3288
+ assert_equal(wood_marginal_rate, scenario.wood_marginal_rate)
3289
+ end
3290
+ if wood_pellets_marginal_rate.nil?
3291
+ assert_nil(scenario.wood_pellets_marginal_rate)
3292
+ else
3293
+ assert_equal(wood_pellets_marginal_rate, scenario.wood_pellets_marginal_rate)
3294
+ end
3295
+ if pv_compensation_type.nil?
3296
+ assert_nil(scenario.pv_compensation_type)
3297
+ else
3298
+ assert_equal(pv_compensation_type, scenario.pv_compensation_type)
3299
+ end
3300
+ if pv_net_metering_annual_excess_sellback_rate_type.nil?
3301
+ assert_nil(scenario.pv_net_metering_annual_excess_sellback_rate_type)
3302
+ else
3303
+ assert_equal(pv_net_metering_annual_excess_sellback_rate_type, scenario.pv_net_metering_annual_excess_sellback_rate_type)
3304
+ end
3305
+ if pv_net_metering_annual_excess_sellback_rate.nil?
3306
+ assert_nil(scenario.pv_net_metering_annual_excess_sellback_rate)
3307
+ else
3308
+ assert_equal(pv_net_metering_annual_excess_sellback_rate, scenario.pv_net_metering_annual_excess_sellback_rate)
3309
+ end
3310
+ if pv_feed_in_tariff_rate.nil?
3311
+ assert_nil(scenario.pv_feed_in_tariff_rate)
3312
+ else
3313
+ assert_equal(pv_feed_in_tariff_rate, scenario.pv_feed_in_tariff_rate)
3314
+ end
3315
+ if pv_monthly_grid_connection_fee_dollars_per_kw.nil?
3316
+ assert_nil(scenario.pv_monthly_grid_connection_fee_dollars_per_kw)
3317
+ else
3318
+ assert_equal(pv_monthly_grid_connection_fee_dollars_per_kw, scenario.pv_monthly_grid_connection_fee_dollars_per_kw)
3319
+ end
3320
+ if pv_monthly_grid_connection_fee_dollars.nil?
3321
+ assert_nil(scenario.pv_monthly_grid_connection_fee_dollars)
3322
+ else
3323
+ assert_equal(pv_monthly_grid_connection_fee_dollars, scenario.pv_monthly_grid_connection_fee_dollars)
3324
+ end
3325
+ end
3326
+
3327
+ def _test_default_site_values(hpxml, site_type, shielding_of_home, ground_conductivity)
3219
3328
  assert_equal(site_type, hpxml.site.site_type)
3220
3329
  assert_equal(shielding_of_home, hpxml.site.shielding_of_home)
3330
+ assert_equal(ground_conductivity, hpxml.site.ground_conductivity)
3221
3331
  end
3222
3332
 
3223
3333
  def _test_default_neighbor_building_values(hpxml, azimuths)
@@ -3248,14 +3358,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3248
3358
 
3249
3359
  def _test_default_climate_and_risk_zones_values(hpxml, iecc_year, iecc_zone)
3250
3360
  if iecc_year.nil?
3251
- assert_nil(hpxml.climate_and_risk_zones.iecc_year)
3361
+ assert_equal(0, hpxml.climate_and_risk_zones.climate_zone_ieccs.size)
3252
3362
  else
3253
- assert_equal(iecc_year, hpxml.climate_and_risk_zones.iecc_year)
3363
+ assert_equal(iecc_year, hpxml.climate_and_risk_zones.climate_zone_ieccs[0].year)
3254
3364
  end
3255
3365
  if iecc_zone.nil?
3256
- assert_nil(hpxml.climate_and_risk_zones.iecc_zone)
3366
+ assert_equal(0, hpxml.climate_and_risk_zones.climate_zone_ieccs.size)
3257
3367
  else
3258
- assert_equal(iecc_zone, hpxml.climate_and_risk_zones.iecc_zone)
3368
+ assert_equal(iecc_zone, hpxml.climate_and_risk_zones.climate_zone_ieccs[0].zone)
3259
3369
  end
3260
3370
  end
3261
3371
 
@@ -3318,6 +3428,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3318
3428
  else
3319
3429
  assert_nil(wall.interior_finish_thickness)
3320
3430
  end
3431
+ if not azimuth.nil?
3432
+ assert_equal(azimuth, wall.azimuth)
3433
+ else
3434
+ assert_nil(wall.azimuth)
3435
+ end
3321
3436
  end
3322
3437
 
3323
3438
  def _test_default_foundation_wall_values(foundation_wall, thickness, int_finish_type, int_finish_thickness, azimuth, area,
@@ -3338,12 +3453,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3338
3453
  assert_equal(type, foundation_wall.type)
3339
3454
  end
3340
3455
 
3341
- def _test_default_frame_floor_values(frame_floor, int_finish_type, int_finish_thickness)
3342
- assert_equal(int_finish_type, frame_floor.interior_finish_type)
3456
+ def _test_default_floor_values(floor, int_finish_type, int_finish_thickness)
3457
+ assert_equal(int_finish_type, floor.interior_finish_type)
3343
3458
  if not int_finish_thickness.nil?
3344
- assert_equal(int_finish_thickness, frame_floor.interior_finish_thickness)
3459
+ assert_equal(int_finish_thickness, floor.interior_finish_thickness)
3345
3460
  else
3346
- assert_nil(frame_floor.interior_finish_thickness)
3461
+ assert_nil(floor.interior_finish_thickness)
3347
3462
  end
3348
3463
  end
3349
3464
 
@@ -3412,18 +3527,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3412
3527
  end
3413
3528
  end
3414
3529
 
3415
- def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity, cooling_efficiency_eer)
3530
+ def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity)
3416
3531
  assert_equal(shr, cooling_system.cooling_shr)
3417
3532
  if cooling_capacity.nil?
3418
3533
  assert(cooling_system.cooling_capacity > 0)
3419
3534
  else
3420
3535
  assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3421
3536
  end
3422
- if cooling_efficiency_eer.nil?
3423
- assert_nil(cooling_system.cooling_efficiency_eer)
3424
- else
3425
- assert_equal(cooling_system.cooling_efficiency_eer, cooling_efficiency_eer)
3426
- end
3427
3537
  end
3428
3538
 
3429
3539
  def _test_default_evap_cooler_values(cooling_system, cooling_capacity)
@@ -3435,7 +3545,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3435
3545
  end
3436
3546
 
3437
3547
  def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_watts_per_cfm, charge_defect_ratio,
3438
- airflow_defect_ratio, cooling_capacity)
3548
+ airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer)
3439
3549
  assert_equal(shr, cooling_system.cooling_shr)
3440
3550
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
3441
3551
  assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
@@ -3445,18 +3555,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3445
3555
  else
3446
3556
  assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3447
3557
  end
3448
- end
3449
-
3450
- def _test_default_elec_resistance(heating_system, heating_efficiency_percent)
3451
- if heating_efficiency_percent.nil?
3452
- assert_nil(heating_system.heating_efficiency_percent)
3558
+ if cooling_efficiency_seer.nil?
3559
+ assert_nil(cooling_system.cooling_efficiency_seer)
3453
3560
  else
3454
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3561
+ assert_equal(cooling_system.cooling_efficiency_seer, cooling_efficiency_seer)
3455
3562
  end
3456
3563
  end
3457
3564
 
3458
- def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio,
3459
- heating_capacity, heating_efficiency_afue)
3565
+ def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio, heating_capacity)
3460
3566
  assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm)
3461
3567
  assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio)
3462
3568
  if heating_capacity.nil?
@@ -3464,109 +3570,69 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3464
3570
  else
3465
3571
  assert_equal(heating_system.heating_capacity, heating_capacity)
3466
3572
  end
3467
- if heating_efficiency_afue.nil?
3468
- assert_nil(heating_system.heating_efficiency_afue)
3469
- else
3470
- assert_equal(heating_system.heating_efficiency_afue, heating_efficiency_afue)
3471
- end
3472
3573
  end
3473
3574
 
3474
- def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_afue)
3575
+ def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacity)
3475
3576
  assert_equal(fan_watts, heating_system.fan_watts)
3476
3577
  if heating_capacity.nil?
3477
3578
  assert(heating_system.heating_capacity > 0)
3478
3579
  else
3479
3580
  assert_equal(heating_system.heating_capacity, heating_capacity)
3480
3581
  end
3481
- if heating_efficiency_afue.nil?
3482
- assert_nil(heating_system.heating_efficiency_afue)
3483
- else
3484
- assert_equal(heating_system.heating_efficiency_afue, heating_efficiency_afue)
3485
- end
3486
3582
  end
3487
3583
 
3488
- def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_afue)
3584
+ def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity)
3489
3585
  assert_equal(fan_watts, heating_system.fan_watts)
3490
3586
  if heating_capacity.nil?
3491
3587
  assert(heating_system.heating_capacity > 0)
3492
3588
  else
3493
3589
  assert_equal(heating_system.heating_capacity, heating_capacity)
3494
3590
  end
3495
- if heating_efficiency_afue.nil?
3496
- assert_nil(heating_system.heating_efficiency_afue)
3497
- else
3498
- assert_equal(heating_system.heating_efficiency_afue, heating_efficiency_afue)
3499
- end
3500
3591
  end
3501
3592
 
3502
- def _test_default_boiler_values(heating_system, eae, heating_capacity, heating_efficiency_afue)
3593
+ def _test_default_boiler_values(heating_system, eae, heating_capacity)
3503
3594
  assert_equal(eae, heating_system.electric_auxiliary_energy)
3504
3595
  if heating_capacity.nil?
3505
3596
  assert(heating_system.heating_capacity > 0)
3506
3597
  else
3507
3598
  assert_equal(heating_system.heating_capacity, heating_capacity)
3508
3599
  end
3509
- if heating_efficiency_afue.nil?
3510
- assert_nil(heating_system.heating_efficiency_afue)
3511
- else
3512
- assert_equal(heating_system.heating_efficiency_afue, heating_efficiency_afue)
3513
- end
3514
3600
  end
3515
3601
 
3516
- def _test_default_stove_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3602
+ def _test_default_stove_values(heating_system, fan_watts, heating_capacity)
3517
3603
  assert_equal(fan_watts, heating_system.fan_watts)
3518
3604
  if heating_capacity.nil?
3519
3605
  assert(heating_system.heating_capacity > 0)
3520
3606
  else
3521
3607
  assert_equal(heating_system.heating_capacity, heating_capacity)
3522
3608
  end
3523
- if heating_efficiency_percent.nil?
3524
- assert_nil(heating_system.heating_efficiency_percent)
3525
- else
3526
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3527
- end
3528
3609
  end
3529
3610
 
3530
- def _test_default_portable_heater_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3611
+ def _test_default_portable_heater_values(heating_system, fan_watts, heating_capacity)
3531
3612
  assert_equal(fan_watts, heating_system.fan_watts)
3532
3613
  if heating_capacity.nil?
3533
3614
  assert(heating_system.heating_capacity > 0)
3534
3615
  else
3535
3616
  assert_equal(heating_system.heating_capacity, heating_capacity)
3536
3617
  end
3537
- if heating_efficiency_percent.nil?
3538
- assert_nil(heating_system.heating_efficiency_percent)
3539
- else
3540
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3541
- end
3542
3618
  end
3543
3619
 
3544
- def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3620
+ def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacity)
3545
3621
  assert_equal(fan_watts, heating_system.fan_watts)
3546
3622
  if heating_capacity.nil?
3547
3623
  assert(heating_system.heating_capacity > 0)
3548
3624
  else
3549
3625
  assert_equal(heating_system.heating_capacity, heating_capacity)
3550
3626
  end
3551
- if heating_efficiency_percent.nil?
3552
- assert_nil(heating_system.heating_efficiency_percent)
3553
- else
3554
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3555
- end
3556
3627
  end
3557
3628
 
3558
- def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3629
+ def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity)
3559
3630
  assert_equal(fan_watts, heating_system.fan_watts)
3560
3631
  if heating_capacity.nil?
3561
3632
  assert(heating_system.heating_capacity > 0)
3562
3633
  else
3563
3634
  assert_equal(heating_system.heating_capacity, heating_capacity)
3564
3635
  end
3565
- if heating_efficiency_percent.nil?
3566
- assert_nil(heating_system.heating_efficiency_percent)
3567
- else
3568
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3569
- end
3570
3636
  end
3571
3637
 
3572
3638
  def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
@@ -3631,6 +3697,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3631
3697
  def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, charge_defect_ratio,
3632
3698
  airflow_defect_ratio, cooling_capacity, heating_capacity,
3633
3699
  heating_capacity_17F, backup_heating_capacity,
3700
+ cooling_efficiency_seer, heating_efficiency_hspf,
3634
3701
  backup_heating_lockout_temp)
3635
3702
  assert_equal(shr, heat_pump.cooling_shr)
3636
3703
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
@@ -3656,6 +3723,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3656
3723
  else
3657
3724
  assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
3658
3725
  end
3726
+ if cooling_efficiency_seer.nil?
3727
+ assert_nil(heat_pump.cooling_efficiency_seer)
3728
+ else
3729
+ assert_equal(heat_pump.cooling_efficiency_seer, cooling_efficiency_seer)
3730
+ end
3731
+ if heating_efficiency_hspf.nil?
3732
+ assert_nil(heat_pump.heating_efficiency_hspf)
3733
+ else
3734
+ assert_equal(heat_pump.heating_efficiency_hspf, heating_efficiency_hspf)
3735
+ end
3659
3736
  assert_equal(heat_pump.backup_heating_lockout_temp, backup_heating_lockout_temp)
3660
3737
  end
3661
3738
 
@@ -3704,7 +3781,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3704
3781
  end
3705
3782
 
3706
3783
  def _test_default_duct_values(hpxml, supply_locations, return_locations, supply_areas, return_areas,
3707
- supply_fracs, return_fracs, n_return_registers)
3784
+ supply_fracs, return_fracs, n_return_registers, supply_area_mults, return_area_mults)
3708
3785
  supply_duct_idx = 0
3709
3786
  return_duct_idx = 0
3710
3787
  hpxml.hvac_distributions.each do |hvac_distribution|
@@ -3716,11 +3793,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3716
3793
  assert_equal(supply_locations[supply_duct_idx], duct.duct_location)
3717
3794
  assert_in_epsilon(supply_areas[supply_duct_idx], duct.duct_surface_area, 0.01)
3718
3795
  assert_in_epsilon(supply_fracs[supply_duct_idx], duct.duct_fraction_area, 0.01)
3796
+ assert_in_epsilon(supply_area_mults[supply_duct_idx], duct.duct_surface_area_multiplier, 0.01)
3719
3797
  supply_duct_idx += 1
3720
3798
  elsif duct.duct_type == HPXML::DuctTypeReturn
3721
3799
  assert_equal(return_locations[return_duct_idx], duct.duct_location)
3722
3800
  assert_in_epsilon(return_areas[return_duct_idx], duct.duct_surface_area, 0.01)
3723
3801
  assert_in_epsilon(return_fracs[return_duct_idx], duct.duct_fraction_area, 0.01)
3802
+ assert_in_epsilon(return_area_mults[return_duct_idx], duct.duct_surface_area_multiplier, 0.01)
3724
3803
  return_duct_idx += 1
3725
3804
  end
3726
3805
  end
@@ -3728,8 +3807,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3728
3807
  end
3729
3808
 
3730
3809
  def _test_default_mech_vent_values(hpxml, is_shared_system, hours_in_operation, fan_power, flow_rate,
3731
- cfis_vent_mode_airflow_fraction = nil)
3732
- vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
3810
+ cfis_vent_mode_airflow_fraction = nil, cfis_addtl_runtime_operating_mode = nil)
3811
+ vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && !f.is_cfis_supplemental_fan? }[0]
3733
3812
 
3734
3813
  assert_equal(is_shared_system, vent_fan.is_shared_system)
3735
3814
  assert_equal(hours_in_operation, vent_fan.hours_in_operation)
@@ -3740,6 +3819,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3740
3819
  else
3741
3820
  assert_equal(cfis_vent_mode_airflow_fraction, vent_fan.cfis_vent_mode_airflow_fraction)
3742
3821
  end
3822
+ if cfis_addtl_runtime_operating_mode.nil?
3823
+ assert_nil(vent_fan.cfis_addtl_runtime_operating_mode)
3824
+ else
3825
+ assert_equal(cfis_addtl_runtime_operating_mode, vent_fan.cfis_addtl_runtime_operating_mode)
3826
+ end
3827
+ end
3828
+
3829
+ def _test_default_mech_vent_suppl_values(hpxml, is_shared_system, hours_in_operation, fan_power, flow_rate)
3830
+ vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && f.is_cfis_supplemental_fan? }[0]
3831
+
3832
+ assert_equal(is_shared_system, vent_fan.is_shared_system)
3833
+ if hours_in_operation.nil?
3834
+ assert_nil(hours_in_operation, vent_fan.hours_in_operation)
3835
+ else
3836
+ assert_equal(hours_in_operation, vent_fan.hours_in_operation)
3837
+ end
3838
+ assert_in_epsilon(fan_power, vent_fan.fan_power, 0.01)
3839
+ assert_in_epsilon(flow_rate, vent_fan.rated_flow_rate.to_f + vent_fan.calculated_flow_rate.to_f + vent_fan.tested_flow_rate.to_f + vent_fan.delivered_ventilation.to_f, 0.01)
3743
3840
  end
3744
3841
 
3745
3842
  def _test_default_kitchen_fan_values(hpxml, quantity, flow_rate, hours_in_operation, fan_power, start_hour)
@@ -3810,6 +3907,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3810
3907
  end
3811
3908
  end
3812
3909
 
3910
+ def _test_default_indirect_water_heater_values(hpxml, *expected_wh_values)
3911
+ indirect_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeCombiStorage }
3912
+ assert_equal(expected_wh_values.size, indirect_water_heaters.size)
3913
+ indirect_water_heaters.each_with_index do |wh_system, idx|
3914
+ standby_loss_units, standby_loss_value, = expected_wh_values[idx]
3915
+
3916
+ assert_equal(standby_loss_units, wh_system.standby_loss_units)
3917
+ assert_equal(standby_loss_value, wh_system.standby_loss_value)
3918
+ end
3919
+ end
3920
+
3813
3921
  def _test_default_standard_distribution_values(hot_water_distribution, piping_length, pipe_r_value)
3814
3922
  assert_in_epsilon(piping_length, hot_water_distribution.standard_piping_length, 0.01)
3815
3923
  assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
@@ -3851,7 +3959,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3851
3959
  end
3852
3960
 
3853
3961
  def _test_default_pv_system_values(hpxml, interver_efficiency, system_loss_frac, is_shared_system, location, tracking, module_type, azimuth)
3854
- hpxml.pv_systems.each_with_index do |pv, idx|
3962
+ hpxml.pv_systems.each do |pv|
3855
3963
  assert_equal(is_shared_system, pv.is_shared_system)
3856
3964
  assert_equal(interver_efficiency, pv.inverter_efficiency)
3857
3965
  assert_in_epsilon(system_loss_frac, pv.system_losses_fraction, 0.01)
@@ -3863,7 +3971,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3863
3971
  end
3864
3972
 
3865
3973
  def _test_default_battery_values(hpxml, nominal_capacity_kwh, nominal_capacity_ah, usable_capacity_kwh, usable_capacity_ah,
3866
- rated_power_output, location, lifetime_model)
3974
+ rated_power_output, location, _lifetime_model, round_trip_efficiency)
3867
3975
  if nominal_capacity_kwh.nil?
3868
3976
  assert_nil(hpxml.batteries[0].nominal_capacity_kwh)
3869
3977
  else
@@ -3886,11 +3994,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3886
3994
  end
3887
3995
  assert_equal(rated_power_output, hpxml.batteries[0].rated_power_output)
3888
3996
  assert_equal(location, hpxml.batteries[0].location)
3889
- assert_equal(lifetime_model, hpxml.batteries[0].lifetime_model)
3997
+ assert_equal(nil, hpxml.batteries[0].lifetime_model)
3998
+ assert_equal(round_trip_efficiency, hpxml.batteries[0].round_trip_efficiency)
3890
3999
  end
3891
4000
 
3892
4001
  def _test_default_generator_values(hpxml, is_shared_system)
3893
- hpxml.generators.each_with_index do |generator, idx|
4002
+ hpxml.generators.each do |generator|
3894
4003
  assert_equal(is_shared_system, generator.is_shared_system)
3895
4004
  end
3896
4005
  end