urbanopt-cli 0.8.3 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (657) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -6
  3. data/CHANGELOG.md +20 -0
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +3 -1
  6. data/LICENSE.md +1 -1
  7. data/README.md +9 -0
  8. data/Rakefile +1 -1
  9. data/example_files/Gemfile +23 -16
  10. data/example_files/Gemfile.lock +177 -0
  11. data/example_files/base_workflow_res.osw +57 -14
  12. data/example_files/class_project_coincident.json +1322 -0
  13. data/example_files/class_project_diverse.json +1322 -0
  14. data/example_files/disco/config.json +42 -0
  15. data/example_files/disco/cost_database.xlsx +0 -0
  16. data/example_files/disco/technical_catalog.json +12126 -0
  17. data/example_files/mappers/Baseline.rb +11 -8
  18. data/example_files/mappers/ChilledWaterStorage.rb +98 -0
  19. data/example_files/mappers/ClassProject.rb +110 -0
  20. data/example_files/mappers/CreateBar.rb +2 -1
  21. data/example_files/mappers/EvCharging.rb +1 -1
  22. data/example_files/mappers/FlexibleHotWater.rb +1 -1
  23. data/example_files/mappers/Floorspace.rb +1 -1
  24. data/example_files/mappers/HighEfficiency.rb +14 -12
  25. data/example_files/mappers/HighEfficiencyCreateBar.rb +1 -1
  26. data/example_files/mappers/HighEfficiencyFloorspace.rb +1 -1
  27. data/example_files/mappers/PeakHoursMelsShedding.rb +72 -0
  28. data/example_files/mappers/PeakHoursThermostatAdjust.rb +78 -0
  29. data/example_files/mappers/ThermalStorage.rb +2 -1
  30. data/example_files/mappers/base_workflow.osw +55 -14
  31. data/example_files/mappers/class_project_workflow.osw +328 -0
  32. data/example_files/mappers/createbar_workflow.osw +16 -16
  33. data/example_files/measures/BuildResidentialModel/measure.rb +7 -1
  34. data/example_files/measures/BuildResidentialModel/measure.xml +1313 -706
  35. data/example_files/opendss/electrical_database.json +1446 -1446
  36. data/example_files/python_deps/dependencies.json +5 -0
  37. data/example_files/python_deps/install_python.ps1 +96 -0
  38. data/example_files/python_deps/install_python.sh +120 -0
  39. data/example_files/residential/clothes_dryer.tsv +11 -11
  40. data/example_files/residential/clothes_washer.tsv +3 -3
  41. data/example_files/residential/dishwasher.tsv +3 -3
  42. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +0 -1
  43. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +8 -21
  44. data/example_files/resources/hpxml-measures/.gitignore +2 -0
  45. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +1272 -1094
  46. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +978 -659
  47. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +52 -74
  48. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +77 -140
  49. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +37 -27
  50. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +42 -15
  51. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +70 -51
  52. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +142 -21
  53. data/example_files/resources/hpxml-measures/Changelog.md +95 -19
  54. data/example_files/resources/hpxml-measures/Gemfile +2 -4
  55. data/example_files/resources/hpxml-measures/Gemfile.lock +2 -13
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +276 -300
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +220 -214
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +215 -170
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +115 -18
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +24 -44
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +564 -197
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/cambium/README.md +8 -8
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +7 -55
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +24 -19
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +541 -211
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +305 -176
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +0 -2
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +230 -141
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +145 -137
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +191 -97
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/iso-schematron.xsd +391 -0
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +194 -198
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +140 -145
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +11 -11
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +33 -1
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/materials.rb +4 -4
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +17 -9
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -12
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +39 -17
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +1 -1
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/battery.csv +8761 -0
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +114 -57
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +1 -0
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/utility_bills.rb +148 -0
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +90 -128
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +26 -32
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +2 -14
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +67 -0
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +117 -56
  92. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_battery.rb +141 -14
  93. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +471 -344
  94. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +124 -20
  95. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +1 -1
  96. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +28 -32
  97. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +172 -79
  98. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +54 -8
  99. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -3
  100. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +4 -4
  101. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +7 -7
  102. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +1 -1
  103. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +6 -9
  104. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +8 -8
  105. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +213 -95
  106. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +1 -10
  107. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +76 -0
  108. data/example_files/resources/hpxml-measures/README.md +2 -3
  109. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +587 -284
  110. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +304 -352
  111. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +404 -279
  112. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +222 -501
  113. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +137 -200
  114. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Annual Charge.json +649 -0
  115. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Monthly Charge.json +649 -0
  116. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate.json +647 -0
  117. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Annual Charge.json +8776 -0
  118. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Monthly Charge.json +8776 -0
  119. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate.json +8774 -0
  120. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Annual Charge.json +659 -0
  121. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Monthly Charge.json +659 -0
  122. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate.json +657 -0
  123. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Annual Charge.json +670 -0
  124. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Monthly Charge.json +670 -0
  125. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate.json +668 -0
  126. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Annual Charge.json +655 -0
  127. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Monthly Charge.json +655 -0
  128. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate.json +653 -0
  129. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/openei_rates.zip +0 -0
  130. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/Average_retail_price_of_electricity.csv +0 -0
  131. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/HouseholdConsumption.csv +0 -0
  132. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/NG_PRI_SUM_A_EPG0_PRS_DMCF_A.csv +0 -0
  133. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPD2F_PRS_DPGAL_W.csv +0 -0
  134. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPLLPA_PRS_DPGAL_W.csv +0 -0
  135. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/README.md +0 -0
  136. data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/util.rb +506 -25
  137. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Contains Demand Charges.json +1312 -0
  138. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Fixed Charge Units.json +657 -0
  139. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Min Charge Units.json +659 -0
  140. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/JacksonElectricMemberCorp-ResidentialSeniorCitizenLowIncomeAssistance.json +681 -0
  141. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Missing Required Fields.json +54 -0
  142. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/data.csv +8761 -0
  143. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +1006 -235
  144. data/example_files/resources/hpxml-measures/docs/source/conf.py +1 -1
  145. data/example_files/resources/hpxml-measures/docs/source/intro.rst +0 -1
  146. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +4 -3
  147. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +468 -264
  148. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +148 -154
  149. data/example_files/resources/hpxml-measures/tasks.rb +616 -802
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +19 -11
  151. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +20 -12
  152. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +12 -7
  153. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +12 -7
  154. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +19 -11
  155. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +12 -7
  156. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +20 -12
  157. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +28 -16
  158. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +28 -17
  159. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +28 -16
  160. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +20 -12
  161. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +20 -12
  162. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +20 -12
  163. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +20 -12
  164. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +20 -12
  165. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +22 -12
  166. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +19 -11
  167. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +20 -12
  168. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +13 -7
  169. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +12 -7
  170. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +31 -16
  171. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +22 -12
  172. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +21 -12
  173. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +37 -22
  174. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +24 -12
  175. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +33 -21
  176. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +28 -16
  177. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +28 -16
  178. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +30 -17
  179. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +10 -7
  180. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +22 -11
  181. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +12 -7
  182. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +18 -12
  183. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +25 -16
  184. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +22 -12
  185. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +20 -12
  186. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +26 -17
  187. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +19 -11
  188. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +25 -16
  189. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +20 -12
  190. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +35 -21
  191. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +28 -17
  192. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +20 -12
  193. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +35 -21
  194. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +20 -12
  195. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +20 -13
  196. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +12 -9
  197. data/example_files/resources/hpxml-measures/workflow/real_homes/house048.xml +25 -14
  198. data/example_files/resources/hpxml-measures/workflow/real_homes/house049.xml +10 -7
  199. data/example_files/resources/hpxml-measures/workflow/real_homes/house050.xml +20 -11
  200. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +91 -88
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +18 -7
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +546 -535
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +546 -535
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +555 -544
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +18 -7
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +18 -7
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +18 -7
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +18 -7
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +580 -569
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +18 -7
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +580 -569
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +18 -7
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +18 -7
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +7 -0
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +17 -6
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +7 -0
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +18 -7
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +18 -7
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +18 -7
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +600 -0
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +598 -587
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +494 -485
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +606 -593
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +494 -485
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +494 -485
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +494 -485
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-calctype-operational.xml +480 -471
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +464 -457
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +496 -487
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +466 -459
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +518 -509
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +513 -504
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +445 -438
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +476 -467
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +443 -436
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +446 -439
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +494 -485
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +445 -438
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +476 -467
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +446 -439
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +494 -485
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +489 -480
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +499 -490
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +491 -482
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +510 -0
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +495 -486
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +709 -695
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +528 -519
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +512 -503
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +504 -495
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +497 -488
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +490 -481
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +487 -478
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-2stories.xml +639 -628
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-atticroof-cathedral.xml +587 -580
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +639 -628
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-defaults.xml +539 -528
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon.xml +644 -633
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon2.xml +644 -633
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational.xml +575 -564
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +16 -7
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +16 -7
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +18 -7
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +585 -574
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +18 -7
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +18 -7
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +18 -7
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +18 -7
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +18 -7
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +536 -0
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +16 -7
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +16 -7
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +20 -8
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +16 -7
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +16 -7
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +18 -7
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +18 -7
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +18 -7
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +16 -7
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +18 -7
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +16 -7
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +18 -7
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +19 -8
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +19 -8
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +19 -8
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +19 -8
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +19 -8
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +18 -7
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +18 -7
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +18 -7
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +18 -7
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +18 -7
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +18 -7
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +18 -7
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +582 -571
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +583 -572
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +18 -7
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +584 -573
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +584 -573
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +18 -7
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +583 -572
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +585 -574
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +18 -7
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +582 -571
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +18 -7
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +18 -7
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +18 -7
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +586 -575
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +585 -574
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +18 -7
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +18 -7
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +580 -569
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +18 -7
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +580 -569
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +18 -7
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +580 -569
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +18 -7
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +18 -7
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +18 -7
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +18 -7
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +28 -11
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +20 -7
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +18 -7
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +18 -7
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +18 -7
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +18 -7
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +607 -0
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +550 -0
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +27 -12
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +18 -7
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +18 -7
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +18 -7
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +18 -7
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +18 -7
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +589 -578
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +18 -7
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +18 -7
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +619 -608
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +620 -609
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +618 -607
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +18 -7
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +537 -526
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +90 -43
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2507 -2460
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +595 -584
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +19 -8
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +584 -0
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +18 -7
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +594 -583
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +597 -586
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +598 -587
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +27 -12
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +671 -656
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +18 -7
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +18 -7
  356. 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
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +582 -571
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +35 -16
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +18 -7
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +27 -12
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +27 -12
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +27 -12
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +27 -12
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +27 -12
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +27 -12
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +18 -7
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml +586 -575
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +580 -569
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +583 -0
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +18 -7
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +18 -7
  373. 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
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +599 -588
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +629 -616
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +18 -7
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +579 -568
  379. 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
  380. 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
  381. 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
  382. 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
  383. 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
  384. 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
  385. 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
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +598 -587
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +628 -615
  388. 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
  389. 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
  390. 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
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +535 -526
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +589 -578
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +536 -527
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +18 -7
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +565 -554
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +565 -554
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
  398. 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
  399. 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
  400. 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
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +526 -517
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +573 -562
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +529 -520
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +565 -554
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +580 -569
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +580 -569
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +565 -554
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +578 -567
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +575 -564
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +581 -570
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +583 -572
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +583 -572
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +583 -572
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +18 -7
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +18 -7
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +580 -569
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +580 -569
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +580 -569
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +551 -542
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +532 -530
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +525 -516
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +541 -532
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +541 -532
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +541 -532
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +525 -516
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +533 -0
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +542 -0
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +542 -0
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +542 -0
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +529 -520
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +529 -520
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +580 -569
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +16 -7
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +16 -7
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +18 -7
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +16 -7
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +16 -7
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +16 -7
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +16 -7
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +567 -0
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +18 -7
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +18 -7
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +18 -7
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +16 -7
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +18 -7
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +18 -7
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +18 -7
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +18 -7
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +611 -598
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +589 -0
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +582 -571
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +18 -7
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +16 -7
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +18 -7
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +17 -7
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +16 -7
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +530 -521
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +530 -521
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +530 -521
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +566 -555
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +18 -7
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +18 -7
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +18 -7
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +18 -7
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +566 -555
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +566 -555
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +18 -7
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +18 -7
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +18 -7
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +18 -7
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +16 -7
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +574 -563
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +581 -570
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +583 -572
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +587 -576
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +587 -576
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +587 -576
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +591 -580
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +591 -580
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +591 -580
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +570 -559
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +586 -575
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +570 -559
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +586 -575
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +18 -7
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +16 -7
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +18 -7
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +18 -7
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +552 -543
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -7
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +963 -938
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +33 -69
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +530 -521
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +535 -0
  500. 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
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +526 -517
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +541 -532
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +16 -7
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +526 -517
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +526 -517
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +16 -7
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +535 -0
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +542 -0
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +594 -583
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +586 -575
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +18 -7
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +18 -7
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +530 -521
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +530 -521
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +18 -7
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +18 -7
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +530 -521
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +18 -7
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +18 -7
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +18 -7
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +18 -7
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +27 -12
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +591 -576
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +18 -7
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +27 -12
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +582 -571
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +537 -526
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +18 -7
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +537 -526
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +601 -586
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +18 -7
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +18 -7
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +601 -587
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +19 -7
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +20 -7
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +607 -0
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +607 -0
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +21 -7
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +18 -7
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +18 -7
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +18 -7
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +18 -7
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +18 -7
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +18 -7
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +37 -19
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +18 -7
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +18 -7
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +590 -579
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +578 -0
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +632 -0
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +614 -0
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +677 -0
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +593 -0
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +27 -9
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +676 -665
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +616 -0
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +615 -0
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +598 -587
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +586 -0
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +18 -7
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +18 -7
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +18 -7
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +18 -7
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +583 -572
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +18 -7
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1700 -1677
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +622 -611
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +697 -682
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-pv-battery-lifetime-model.xml → base-pv-battery-round-trip-efficiency.xml} +20 -11
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +624 -0
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +622 -611
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +640 -0
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +639 -0
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +623 -0
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +606 -595
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +582 -571
  577. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-smooth.xml +583 -572
  578. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +584 -0
  579. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +583 -572
  580. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +583 -572
  581. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +581 -570
  582. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +581 -570
  583. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +581 -570
  584. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +636 -625
  585. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +18 -7
  586. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +27 -14
  587. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +21 -10
  588. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +21 -10
  589. 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
  590. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +584 -0
  591. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +584 -0
  592. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +18 -7
  593. 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
  594. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +18 -7
  595. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +18 -13
  596. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +64 -0
  597. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +12 -7
  598. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +8 -24
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +366 -358
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +369 -361
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +369 -361
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +369 -361
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +369 -361
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +369 -361
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +369 -361
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +369 -361
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +311 -303
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +311 -303
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +327 -319
  610. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +327 -319
  611. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +332 -324
  612. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +332 -324
  613. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +341 -333
  614. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +341 -333
  615. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +369 -361
  616. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +369 -361
  617. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +369 -361
  618. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +369 -361
  619. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +369 -361
  620. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +369 -361
  621. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +383 -379
  622. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +383 -379
  623. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +538 -534
  624. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +550 -546
  625. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +444 -410
  626. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +8 -8
  627. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +444 -410
  628. data/example_files/resources/hpxml-measures/workflow/tests/compare.py +18 -4
  629. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +163 -392
  630. data/example_files/scripts/convert_urbanopt_to_disco.py +130 -0
  631. data/example_files/scripts/default_control_changes.csv +8 -0
  632. data/example_files/scripts/default_voltage_regulators.csv +3 -0
  633. data/example_files/scripts/read_data.py +331 -0
  634. data/example_files/visualization/input_visualization_feature.html +172 -81
  635. data/example_files/visualization/input_visualization_scenario.html +178 -82
  636. data/example_files/xml_building/17/README.md +2 -2
  637. data/example_files/xml_building/17/unit 1.xml +40 -41
  638. data/example_files/xml_building/17/unit 2.xml +35 -36
  639. data/example_files/xml_building/17/unit 3.xml +35 -36
  640. data/example_files/xml_building/17/unit 4.xml +41 -42
  641. data/lib/uo_cli/version.rb +2 -2
  642. data/lib/uo_cli.rb +597 -97
  643. data/uo_cli.gemspec +6 -5
  644. metadata +122 -36
  645. data/example_files/residential/exhaust.tsv +0 -3
  646. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/hvac_equipment_efficiency.csv +0 -493
  647. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/water_heater_efficiency.csv +0 -157
  648. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/HPXMLvalidator.xml +0 -620
  649. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/validator.rb +0 -107
  650. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.rb +0 -450
  651. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.xml +0 -85
  652. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/resources/constants.rb +0 -72
  653. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/tests/hpxml_output_report_test.rb +0 -290
  654. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_10kW.csv +0 -8761
  655. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_1kW.csv +0 -8761
  656. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_None.csv +0 -8761
  657. 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
967
1047
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
968
1048
  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)
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
1054
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1055
+ hpxml_default = _test_measure()
1056
+ _test_default_central_air_conditioner_values(hpxml_default.cooling_systems[0], 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 12.0)
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
1150
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1067
1151
  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
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1085
- 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
1311
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1290
1312
  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
- XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1300
- 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
1824
1888
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1825
1889
  hpxml_default = _test_measure()
1826
- _test_default_mech_vent_values(hpxml_default, false, 12.0, 12.5, 330, 0.5)
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
1897
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
1898
+ hpxml_default = _test_measure()
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, nil, 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, nil, 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, nil, 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, nil, 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, nil, 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, nil, 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, nil, 0.925)
2311
2398
 
2312
2399
  # Test defaults w/ rated power output
2313
2400
  hpxml.batteries[0].nominal_capacity_kwh = nil
@@ -2317,7 +2404,21 @@ 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, nil, 0.925)
2408
+
2409
+ # Test defaults w/ garage
2410
+ hpxml = _create_hpxml('base-pv-battery-garage.xml')
2411
+ hpxml.batteries[0].nominal_capacity_kwh = nil
2412
+ hpxml.batteries[0].nominal_capacity_ah = nil
2413
+ hpxml.batteries[0].usable_capacity_kwh = nil
2414
+ hpxml.batteries[0].usable_capacity_ah = nil
2415
+ hpxml.batteries[0].rated_power_output = nil
2416
+ hpxml.batteries[0].location = nil
2417
+ hpxml.batteries[0].lifetime_model = nil
2418
+ hpxml.batteries[0].round_trip_efficiency = nil
2419
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
2420
+ hpxml_default = _test_measure()
2421
+ _test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationGarage, nil, 0.925)
2321
2422
  end
2322
2423
 
2323
2424
  def test_generators
@@ -3013,94 +3114,6 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3013
3114
  _test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 67, 0.5, 0.1, 1.0, Schedule.FuelLoadsFireplaceWeekdayFractions, Schedule.FuelLoadsFireplaceWeekendFractions, Schedule.FuelLoadsFireplaceMonthlyMultipliers)
3014
3115
  end
3015
3116
 
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
3117
  def _test_measure()
3105
3118
  # create an instance of the measure
3106
3119
  measure = HPXMLtoOpenStudio.new
@@ -3138,7 +3151,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3138
3151
 
3139
3152
  def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
3140
3153
  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)
3154
+ allow_increased_fixed_capacities, state_code, time_zone_utc_offset, occupancy_calculation_type,
3155
+ temperature_capacitance_multiplier, natvent_days_per_week)
3142
3156
  assert_equal(tstep, hpxml.header.timestep)
3143
3157
  assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
3144
3158
  assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
@@ -3163,6 +3177,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3163
3177
  end
3164
3178
  assert_equal(time_zone_utc_offset, hpxml.header.time_zone_utc_offset)
3165
3179
  assert_equal(occupancy_calculation_type, hpxml.header.occupancy_calculation_type)
3180
+ assert_equal(temperature_capacitance_multiplier, hpxml.header.temperature_capacitance_multiplier)
3181
+ assert_equal(natvent_days_per_week, hpxml.header.natvent_days_per_week)
3166
3182
  end
3167
3183
 
3168
3184
  def _test_default_emissions_values(scenario, elec_schedule_number_of_header_rows, elec_schedule_column_number,
@@ -3215,9 +3231,117 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3215
3231
  end
3216
3232
  end
3217
3233
 
3218
- def _test_default_site_values(hpxml, site_type, shielding_of_home)
3234
+ def _test_default_bills_values(scenario,
3235
+ elec_fixed_charge, natural_gas_fixed_charge, propane_fixed_charge, fuel_oil_fixed_charge, coal_fixed_charge, wood_fixed_charge, wood_pellets_fixed_charge,
3236
+ elec_marginal_rate, natural_gas_marginal_rate, propane_marginal_rate, fuel_oil_marginal_rate, coal_marginal_rate, wood_marginal_rate, wood_pellets_marginal_rate,
3237
+ pv_compensation_type, pv_net_metering_annual_excess_sellback_rate_type, pv_net_metering_annual_excess_sellback_rate,
3238
+ pv_feed_in_tariff_rate, pv_monthly_grid_connection_fee_dollars_per_kw, pv_monthly_grid_connection_fee_dollars)
3239
+ if elec_fixed_charge.nil?
3240
+ assert_nil(scenario.elec_fixed_charge)
3241
+ else
3242
+ assert_equal(elec_fixed_charge, scenario.elec_fixed_charge)
3243
+ end
3244
+ if natural_gas_fixed_charge.nil?
3245
+ assert_nil(scenario.natural_gas_fixed_charge)
3246
+ else
3247
+ assert_equal(natural_gas_fixed_charge, scenario.natural_gas_fixed_charge)
3248
+ end
3249
+ if propane_fixed_charge.nil?
3250
+ assert_nil(scenario.propane_fixed_charge)
3251
+ else
3252
+ assert_equal(propane_fixed_charge, scenario.propane_fixed_charge)
3253
+ end
3254
+ if fuel_oil_fixed_charge.nil?
3255
+ assert_nil(scenario.fuel_oil_fixed_charge)
3256
+ else
3257
+ assert_equal(fuel_oil_fixed_charge, scenario.fuel_oil_fixed_charge)
3258
+ end
3259
+ if coal_fixed_charge.nil?
3260
+ assert_nil(scenario.coal_fixed_charge)
3261
+ else
3262
+ assert_equal(coal_fixed_charge, scenario.coal_fixed_charge)
3263
+ end
3264
+ if wood_fixed_charge.nil?
3265
+ assert_nil(scenario.wood_fixed_charge)
3266
+ else
3267
+ assert_equal(wood_fixed_charge, scenario.wood_fixed_charge)
3268
+ end
3269
+ if wood_pellets_fixed_charge.nil?
3270
+ assert_nil(scenario.wood_pellets_fixed_charge)
3271
+ else
3272
+ assert_equal(wood_pellets_fixed_charge, scenario.wood_pellets_fixed_charge)
3273
+ end
3274
+ if elec_marginal_rate.nil?
3275
+ assert_nil(scenario.elec_marginal_rate)
3276
+ else
3277
+ assert_equal(elec_marginal_rate, scenario.elec_marginal_rate)
3278
+ end
3279
+ if natural_gas_marginal_rate.nil?
3280
+ assert_nil(scenario.natural_gas_marginal_rate)
3281
+ else
3282
+ assert_equal(natural_gas_marginal_rate, scenario.natural_gas_marginal_rate)
3283
+ end
3284
+ if propane_marginal_rate.nil?
3285
+ assert_nil(scenario.propane_marginal_rate)
3286
+ else
3287
+ assert_equal(propane_marginal_rate, scenario.propane_marginal_rate)
3288
+ end
3289
+ if fuel_oil_marginal_rate.nil?
3290
+ assert_nil(scenario.fuel_oil_marginal_rate)
3291
+ else
3292
+ assert_equal(fuel_oil_marginal_rate, scenario.fuel_oil_marginal_rate)
3293
+ end
3294
+ if coal_marginal_rate.nil?
3295
+ assert_nil(scenario.coal_marginal_rate)
3296
+ else
3297
+ assert_equal(coal_marginal_rate, scenario.coal_marginal_rate)
3298
+ end
3299
+ if wood_marginal_rate.nil?
3300
+ assert_nil(scenario.wood_marginal_rate)
3301
+ else
3302
+ assert_equal(wood_marginal_rate, scenario.wood_marginal_rate)
3303
+ end
3304
+ if wood_pellets_marginal_rate.nil?
3305
+ assert_nil(scenario.wood_pellets_marginal_rate)
3306
+ else
3307
+ assert_equal(wood_pellets_marginal_rate, scenario.wood_pellets_marginal_rate)
3308
+ end
3309
+ if pv_compensation_type.nil?
3310
+ assert_nil(scenario.pv_compensation_type)
3311
+ else
3312
+ assert_equal(pv_compensation_type, scenario.pv_compensation_type)
3313
+ end
3314
+ if pv_net_metering_annual_excess_sellback_rate_type.nil?
3315
+ assert_nil(scenario.pv_net_metering_annual_excess_sellback_rate_type)
3316
+ else
3317
+ assert_equal(pv_net_metering_annual_excess_sellback_rate_type, scenario.pv_net_metering_annual_excess_sellback_rate_type)
3318
+ end
3319
+ if pv_net_metering_annual_excess_sellback_rate.nil?
3320
+ assert_nil(scenario.pv_net_metering_annual_excess_sellback_rate)
3321
+ else
3322
+ assert_equal(pv_net_metering_annual_excess_sellback_rate, scenario.pv_net_metering_annual_excess_sellback_rate)
3323
+ end
3324
+ if pv_feed_in_tariff_rate.nil?
3325
+ assert_nil(scenario.pv_feed_in_tariff_rate)
3326
+ else
3327
+ assert_equal(pv_feed_in_tariff_rate, scenario.pv_feed_in_tariff_rate)
3328
+ end
3329
+ if pv_monthly_grid_connection_fee_dollars_per_kw.nil?
3330
+ assert_nil(scenario.pv_monthly_grid_connection_fee_dollars_per_kw)
3331
+ else
3332
+ assert_equal(pv_monthly_grid_connection_fee_dollars_per_kw, scenario.pv_monthly_grid_connection_fee_dollars_per_kw)
3333
+ end
3334
+ if pv_monthly_grid_connection_fee_dollars.nil?
3335
+ assert_nil(scenario.pv_monthly_grid_connection_fee_dollars)
3336
+ else
3337
+ assert_equal(pv_monthly_grid_connection_fee_dollars, scenario.pv_monthly_grid_connection_fee_dollars)
3338
+ end
3339
+ end
3340
+
3341
+ def _test_default_site_values(hpxml, site_type, shielding_of_home, ground_conductivity)
3219
3342
  assert_equal(site_type, hpxml.site.site_type)
3220
3343
  assert_equal(shielding_of_home, hpxml.site.shielding_of_home)
3344
+ assert_equal(ground_conductivity, hpxml.site.ground_conductivity)
3221
3345
  end
3222
3346
 
3223
3347
  def _test_default_neighbor_building_values(hpxml, azimuths)
@@ -3248,14 +3372,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3248
3372
 
3249
3373
  def _test_default_climate_and_risk_zones_values(hpxml, iecc_year, iecc_zone)
3250
3374
  if iecc_year.nil?
3251
- assert_nil(hpxml.climate_and_risk_zones.iecc_year)
3375
+ assert_equal(0, hpxml.climate_and_risk_zones.climate_zone_ieccs.size)
3252
3376
  else
3253
- assert_equal(iecc_year, hpxml.climate_and_risk_zones.iecc_year)
3377
+ assert_equal(iecc_year, hpxml.climate_and_risk_zones.climate_zone_ieccs[0].year)
3254
3378
  end
3255
3379
  if iecc_zone.nil?
3256
- assert_nil(hpxml.climate_and_risk_zones.iecc_zone)
3380
+ assert_equal(0, hpxml.climate_and_risk_zones.climate_zone_ieccs.size)
3257
3381
  else
3258
- assert_equal(iecc_zone, hpxml.climate_and_risk_zones.iecc_zone)
3382
+ assert_equal(iecc_zone, hpxml.climate_and_risk_zones.climate_zone_ieccs[0].zone)
3259
3383
  end
3260
3384
  end
3261
3385
 
@@ -3318,6 +3442,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3318
3442
  else
3319
3443
  assert_nil(wall.interior_finish_thickness)
3320
3444
  end
3445
+ if not azimuth.nil?
3446
+ assert_equal(azimuth, wall.azimuth)
3447
+ else
3448
+ assert_nil(wall.azimuth)
3449
+ end
3321
3450
  end
3322
3451
 
3323
3452
  def _test_default_foundation_wall_values(foundation_wall, thickness, int_finish_type, int_finish_thickness, azimuth, area,
@@ -3338,12 +3467,12 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3338
3467
  assert_equal(type, foundation_wall.type)
3339
3468
  end
3340
3469
 
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)
3470
+ def _test_default_floor_values(floor, int_finish_type, int_finish_thickness)
3471
+ assert_equal(int_finish_type, floor.interior_finish_type)
3343
3472
  if not int_finish_thickness.nil?
3344
- assert_equal(int_finish_thickness, frame_floor.interior_finish_thickness)
3473
+ assert_equal(int_finish_thickness, floor.interior_finish_thickness)
3345
3474
  else
3346
- assert_nil(frame_floor.interior_finish_thickness)
3475
+ assert_nil(floor.interior_finish_thickness)
3347
3476
  end
3348
3477
  end
3349
3478
 
@@ -3412,18 +3541,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3412
3541
  end
3413
3542
  end
3414
3543
 
3415
- def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity, cooling_efficiency_eer)
3544
+ def _test_default_room_air_conditioner_ptac_values(cooling_system, shr, cooling_capacity)
3416
3545
  assert_equal(shr, cooling_system.cooling_shr)
3417
3546
  if cooling_capacity.nil?
3418
3547
  assert(cooling_system.cooling_capacity > 0)
3419
3548
  else
3420
3549
  assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3421
3550
  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
3551
  end
3428
3552
 
3429
3553
  def _test_default_evap_cooler_values(cooling_system, cooling_capacity)
@@ -3435,7 +3559,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3435
3559
  end
3436
3560
 
3437
3561
  def _test_default_mini_split_air_conditioner_values(cooling_system, shr, fan_watts_per_cfm, charge_defect_ratio,
3438
- airflow_defect_ratio, cooling_capacity)
3562
+ airflow_defect_ratio, cooling_capacity, cooling_efficiency_seer)
3439
3563
  assert_equal(shr, cooling_system.cooling_shr)
3440
3564
  assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
3441
3565
  assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
@@ -3445,18 +3569,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3445
3569
  else
3446
3570
  assert_equal(cooling_system.cooling_capacity, cooling_capacity)
3447
3571
  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)
3572
+ if cooling_efficiency_seer.nil?
3573
+ assert_nil(cooling_system.cooling_efficiency_seer)
3453
3574
  else
3454
- assert_equal(heating_system.heating_efficiency_percent, heating_efficiency_percent)
3575
+ assert_equal(cooling_system.cooling_efficiency_seer, cooling_efficiency_seer)
3455
3576
  end
3456
3577
  end
3457
3578
 
3458
- def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio,
3459
- heating_capacity, heating_efficiency_afue)
3579
+ def _test_default_furnace_values(heating_system, fan_watts_per_cfm, airflow_defect_ratio, heating_capacity)
3460
3580
  assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm)
3461
3581
  assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio)
3462
3582
  if heating_capacity.nil?
@@ -3464,109 +3584,69 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3464
3584
  else
3465
3585
  assert_equal(heating_system.heating_capacity, heating_capacity)
3466
3586
  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
3587
  end
3473
3588
 
3474
- def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_afue)
3589
+ def _test_default_wall_furnace_values(heating_system, fan_watts, heating_capacity)
3475
3590
  assert_equal(fan_watts, heating_system.fan_watts)
3476
3591
  if heating_capacity.nil?
3477
3592
  assert(heating_system.heating_capacity > 0)
3478
3593
  else
3479
3594
  assert_equal(heating_system.heating_capacity, heating_capacity)
3480
3595
  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
3596
  end
3487
3597
 
3488
- def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_afue)
3598
+ def _test_default_floor_furnace_values(heating_system, fan_watts, heating_capacity)
3489
3599
  assert_equal(fan_watts, heating_system.fan_watts)
3490
3600
  if heating_capacity.nil?
3491
3601
  assert(heating_system.heating_capacity > 0)
3492
3602
  else
3493
3603
  assert_equal(heating_system.heating_capacity, heating_capacity)
3494
3604
  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
3605
  end
3501
3606
 
3502
- def _test_default_boiler_values(heating_system, eae, heating_capacity, heating_efficiency_afue)
3607
+ def _test_default_boiler_values(heating_system, eae, heating_capacity)
3503
3608
  assert_equal(eae, heating_system.electric_auxiliary_energy)
3504
3609
  if heating_capacity.nil?
3505
3610
  assert(heating_system.heating_capacity > 0)
3506
3611
  else
3507
3612
  assert_equal(heating_system.heating_capacity, heating_capacity)
3508
3613
  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
3614
  end
3515
3615
 
3516
- def _test_default_stove_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3616
+ def _test_default_stove_values(heating_system, fan_watts, heating_capacity)
3517
3617
  assert_equal(fan_watts, heating_system.fan_watts)
3518
3618
  if heating_capacity.nil?
3519
3619
  assert(heating_system.heating_capacity > 0)
3520
3620
  else
3521
3621
  assert_equal(heating_system.heating_capacity, heating_capacity)
3522
3622
  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
3623
  end
3529
3624
 
3530
- def _test_default_portable_heater_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3625
+ def _test_default_portable_heater_values(heating_system, fan_watts, heating_capacity)
3531
3626
  assert_equal(fan_watts, heating_system.fan_watts)
3532
3627
  if heating_capacity.nil?
3533
3628
  assert(heating_system.heating_capacity > 0)
3534
3629
  else
3535
3630
  assert_equal(heating_system.heating_capacity, heating_capacity)
3536
3631
  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
3632
  end
3543
3633
 
3544
- def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3634
+ def _test_default_fixed_heater_values(heating_system, fan_watts, heating_capacity)
3545
3635
  assert_equal(fan_watts, heating_system.fan_watts)
3546
3636
  if heating_capacity.nil?
3547
3637
  assert(heating_system.heating_capacity > 0)
3548
3638
  else
3549
3639
  assert_equal(heating_system.heating_capacity, heating_capacity)
3550
3640
  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
3641
  end
3557
3642
 
3558
- def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity, heating_efficiency_percent)
3643
+ def _test_default_fireplace_values(heating_system, fan_watts, heating_capacity)
3559
3644
  assert_equal(fan_watts, heating_system.fan_watts)
3560
3645
  if heating_capacity.nil?
3561
3646
  assert(heating_system.heating_capacity > 0)
3562
3647
  else
3563
3648
  assert_equal(heating_system.heating_capacity, heating_capacity)
3564
3649
  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
3650
  end
3571
3651
 
3572
3652
  def _test_default_air_to_air_heat_pump_values(heat_pump, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
@@ -3631,6 +3711,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3631
3711
  def _test_default_mini_split_heat_pump_values(heat_pump, shr, fan_watts_per_cfm, charge_defect_ratio,
3632
3712
  airflow_defect_ratio, cooling_capacity, heating_capacity,
3633
3713
  heating_capacity_17F, backup_heating_capacity,
3714
+ cooling_efficiency_seer, heating_efficiency_hspf,
3634
3715
  backup_heating_lockout_temp)
3635
3716
  assert_equal(shr, heat_pump.cooling_shr)
3636
3717
  assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
@@ -3656,6 +3737,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3656
3737
  else
3657
3738
  assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
3658
3739
  end
3740
+ if cooling_efficiency_seer.nil?
3741
+ assert_nil(heat_pump.cooling_efficiency_seer)
3742
+ else
3743
+ assert_equal(heat_pump.cooling_efficiency_seer, cooling_efficiency_seer)
3744
+ end
3745
+ if heating_efficiency_hspf.nil?
3746
+ assert_nil(heat_pump.heating_efficiency_hspf)
3747
+ else
3748
+ assert_equal(heat_pump.heating_efficiency_hspf, heating_efficiency_hspf)
3749
+ end
3659
3750
  assert_equal(heat_pump.backup_heating_lockout_temp, backup_heating_lockout_temp)
3660
3751
  end
3661
3752
 
@@ -3704,7 +3795,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3704
3795
  end
3705
3796
 
3706
3797
  def _test_default_duct_values(hpxml, supply_locations, return_locations, supply_areas, return_areas,
3707
- supply_fracs, return_fracs, n_return_registers)
3798
+ supply_fracs, return_fracs, n_return_registers, supply_area_mults, return_area_mults)
3708
3799
  supply_duct_idx = 0
3709
3800
  return_duct_idx = 0
3710
3801
  hpxml.hvac_distributions.each do |hvac_distribution|
@@ -3716,11 +3807,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3716
3807
  assert_equal(supply_locations[supply_duct_idx], duct.duct_location)
3717
3808
  assert_in_epsilon(supply_areas[supply_duct_idx], duct.duct_surface_area, 0.01)
3718
3809
  assert_in_epsilon(supply_fracs[supply_duct_idx], duct.duct_fraction_area, 0.01)
3810
+ assert_in_epsilon(supply_area_mults[supply_duct_idx], duct.duct_surface_area_multiplier, 0.01)
3719
3811
  supply_duct_idx += 1
3720
3812
  elsif duct.duct_type == HPXML::DuctTypeReturn
3721
3813
  assert_equal(return_locations[return_duct_idx], duct.duct_location)
3722
3814
  assert_in_epsilon(return_areas[return_duct_idx], duct.duct_surface_area, 0.01)
3723
3815
  assert_in_epsilon(return_fracs[return_duct_idx], duct.duct_fraction_area, 0.01)
3816
+ assert_in_epsilon(return_area_mults[return_duct_idx], duct.duct_surface_area_multiplier, 0.01)
3724
3817
  return_duct_idx += 1
3725
3818
  end
3726
3819
  end
@@ -3728,8 +3821,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3728
3821
  end
3729
3822
 
3730
3823
  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]
3824
+ cfis_vent_mode_airflow_fraction = nil, cfis_addtl_runtime_operating_mode = nil)
3825
+ vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && !f.is_cfis_supplemental_fan? }[0]
3733
3826
 
3734
3827
  assert_equal(is_shared_system, vent_fan.is_shared_system)
3735
3828
  assert_equal(hours_in_operation, vent_fan.hours_in_operation)
@@ -3740,6 +3833,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3740
3833
  else
3741
3834
  assert_equal(cfis_vent_mode_airflow_fraction, vent_fan.cfis_vent_mode_airflow_fraction)
3742
3835
  end
3836
+ if cfis_addtl_runtime_operating_mode.nil?
3837
+ assert_nil(vent_fan.cfis_addtl_runtime_operating_mode)
3838
+ else
3839
+ assert_equal(cfis_addtl_runtime_operating_mode, vent_fan.cfis_addtl_runtime_operating_mode)
3840
+ end
3841
+ end
3842
+
3843
+ def _test_default_mech_vent_suppl_values(hpxml, is_shared_system, hours_in_operation, fan_power, flow_rate)
3844
+ vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation && f.is_cfis_supplemental_fan? }[0]
3845
+
3846
+ assert_equal(is_shared_system, vent_fan.is_shared_system)
3847
+ if hours_in_operation.nil?
3848
+ assert_nil(hours_in_operation, vent_fan.hours_in_operation)
3849
+ else
3850
+ assert_equal(hours_in_operation, vent_fan.hours_in_operation)
3851
+ end
3852
+ assert_in_epsilon(fan_power, vent_fan.fan_power, 0.01)
3853
+ 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
3854
  end
3744
3855
 
3745
3856
  def _test_default_kitchen_fan_values(hpxml, quantity, flow_rate, hours_in_operation, fan_power, start_hour)
@@ -3810,6 +3921,17 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3810
3921
  end
3811
3922
  end
3812
3923
 
3924
+ def _test_default_indirect_water_heater_values(hpxml, *expected_wh_values)
3925
+ indirect_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeCombiStorage }
3926
+ assert_equal(expected_wh_values.size, indirect_water_heaters.size)
3927
+ indirect_water_heaters.each_with_index do |wh_system, idx|
3928
+ standby_loss_units, standby_loss_value, = expected_wh_values[idx]
3929
+
3930
+ assert_equal(standby_loss_units, wh_system.standby_loss_units)
3931
+ assert_equal(standby_loss_value, wh_system.standby_loss_value)
3932
+ end
3933
+ end
3934
+
3813
3935
  def _test_default_standard_distribution_values(hot_water_distribution, piping_length, pipe_r_value)
3814
3936
  assert_in_epsilon(piping_length, hot_water_distribution.standard_piping_length, 0.01)
3815
3937
  assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
@@ -3851,7 +3973,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3851
3973
  end
3852
3974
 
3853
3975
  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|
3976
+ hpxml.pv_systems.each do |pv|
3855
3977
  assert_equal(is_shared_system, pv.is_shared_system)
3856
3978
  assert_equal(interver_efficiency, pv.inverter_efficiency)
3857
3979
  assert_in_epsilon(system_loss_frac, pv.system_losses_fraction, 0.01)
@@ -3863,7 +3985,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3863
3985
  end
3864
3986
 
3865
3987
  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)
3988
+ rated_power_output, location, lifetime_model, round_trip_efficiency)
3867
3989
  if nominal_capacity_kwh.nil?
3868
3990
  assert_nil(hpxml.batteries[0].nominal_capacity_kwh)
3869
3991
  else
@@ -3886,11 +4008,16 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
3886
4008
  end
3887
4009
  assert_equal(rated_power_output, hpxml.batteries[0].rated_power_output)
3888
4010
  assert_equal(location, hpxml.batteries[0].location)
3889
- assert_equal(lifetime_model, hpxml.batteries[0].lifetime_model)
4011
+ if lifetime_model.nil?
4012
+ assert_nil(hpxml.batteries[0].lifetime_model)
4013
+ else
4014
+ assert_equal(lifetime_model, hpxml.batteries[0].lifetime_model)
4015
+ end
4016
+ assert_equal(round_trip_efficiency, hpxml.batteries[0].round_trip_efficiency)
3890
4017
  end
3891
4018
 
3892
4019
  def _test_default_generator_values(hpxml, is_shared_system)
3893
- hpxml.generators.each_with_index do |generator, idx|
4020
+ hpxml.generators.each do |generator|
3894
4021
  assert_equal(is_shared_system, generator.is_shared_system)
3895
4022
  end
3896
4023
  end