urbanopt-cli 0.9.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +6 -5
  3. data/CHANGELOG.md +16 -2
  4. data/CMakeLists.txt +7 -7
  5. data/Gemfile +8 -7
  6. data/LICENSE.md +18 -15
  7. data/README.md +2 -1
  8. data/Rakefile +2 -37
  9. data/example_files/Gemfile +10 -8
  10. data/example_files/mappers/Baseline.rb +170 -191
  11. data/example_files/mappers/ChilledWaterStorage.rb +8 -30
  12. data/example_files/mappers/ClassProject.rb +2 -27
  13. data/example_files/mappers/CreateBar.rb +2 -28
  14. data/example_files/mappers/EvCharging.rb +2 -27
  15. data/example_files/mappers/FlexibleHotWater.rb +2 -27
  16. data/example_files/mappers/Floorspace.rb +2 -27
  17. data/example_files/mappers/HighEfficiency.rb +2 -27
  18. data/example_files/mappers/HighEfficiencyCreateBar.rb +2 -27
  19. data/example_files/mappers/HighEfficiencyFloorspace.rb +2 -27
  20. data/example_files/mappers/PeakHoursMelsShedding.rb +4 -27
  21. data/example_files/mappers/PeakHoursThermostatAdjust.rb +4 -27
  22. data/example_files/mappers/ThermalStorage.rb +2 -28
  23. data/example_files/measures/BuildResidentialModel/measure.rb +30 -60
  24. data/example_files/measures/BuildResidentialModel/measure.xml +253 -84
  25. data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
  26. data/example_files/python_deps/dependencies.json +3 -3
  27. data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
  28. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +28 -19
  29. data/example_files/resources/hpxml-measures/.gitignore +0 -997
  30. data/example_files/resources/hpxml-measures/.readthedocs.yml +9 -0
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +476 -230
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +244 -75
  33. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +42 -15
  34. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +24 -9
  35. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +11 -33
  36. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +23 -50
  37. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/README.md +2 -2
  38. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/constants.rb +119 -0
  39. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +67 -290
  40. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.md +6 -5
  41. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +78 -349
  42. data/example_files/resources/hpxml-measures/Changelog.md +80 -10
  43. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +212 -144
  44. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +164 -170
  45. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +238 -167
  46. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +1 -1
  47. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -4
  48. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +36 -6
  49. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +33 -0
  50. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
  51. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +9 -7
  52. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +79 -61
  53. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +387 -124
  54. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +427 -196
  55. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +11515 -2
  56. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/README.md +1 -0
  57. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +224 -85
  58. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +334 -319
  59. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +572 -838
  60. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +162 -68
  61. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +4 -20
  62. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +12 -10
  63. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +34 -37
  64. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +8 -101
  65. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +31 -40
  66. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -1
  67. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-non-stochastic.csv +8761 -0
  68. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-10-mins.csv +52561 -52561
  69. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic.csv +8761 -8761
  70. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +384 -155
  71. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +1 -1
  72. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/util.rb +2 -2
  73. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  74. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +68 -90
  75. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +34 -223
  76. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -1
  77. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +16 -4
  78. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +94 -40
  79. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +765 -302
  80. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +119 -69
  81. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +8 -8
  82. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
  83. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +51 -11
  84. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +196 -9
  85. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +36 -13
  86. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -3
  87. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
  88. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +571 -61
  89. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +190 -81
  90. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +11 -11
  91. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +188 -50
  92. data/example_files/resources/hpxml-measures/README.md +3 -3
  93. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +659 -815
  94. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +301 -1112
  95. data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +605 -350
  96. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +18 -14
  97. data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +15 -15
  98. data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +13 -3
  99. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +3 -3
  100. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +894 -596
  101. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +127 -76
  102. data/example_files/resources/hpxml-measures/tasks.rb +185 -2802
  103. data/example_files/resources/hpxml-measures/workflow/hpxml_inputs.json +3401 -0
  104. data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +0 -1
  105. data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +0 -1
  106. data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +0 -1
  107. data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +0 -1
  108. data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +0 -1
  109. data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +1 -3
  110. data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +0 -1
  111. data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +1 -3
  112. data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +0 -1
  113. data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +1 -3
  114. data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +0 -1
  115. data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +0 -1
  116. data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +0 -1
  117. data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +0 -1
  118. data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +0 -1
  119. data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +3 -4
  120. data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +17 -4
  121. data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +2 -3
  122. data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +3 -4
  123. data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +3 -4
  124. data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +4 -5
  125. data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +3 -4
  126. data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +3 -4
  127. data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +3 -4
  128. data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +3 -4
  129. data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +1 -1
  130. data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +1 -1
  131. data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +1 -1
  132. data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +1 -1
  133. data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +0 -1
  134. data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +4 -5
  135. data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +3 -3
  136. data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +3 -3
  137. data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +3 -4
  138. data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +3 -3
  139. data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +3 -4
  140. data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +3 -3
  141. data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +3 -4
  142. data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +3 -3
  143. data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +3 -4
  144. data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +0 -1
  145. data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +0 -1
  146. data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +0 -1
  147. data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +0 -1
  148. data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +0 -1
  149. data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +1 -0
  150. data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +1 -0
  151. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +12 -8
  152. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +10 -40
  153. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +10 -40
  154. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +10 -40
  155. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +10 -40
  156. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +10 -40
  157. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +10 -40
  158. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +10 -40
  159. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +10 -40
  160. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +10 -40
  161. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +10 -40
  162. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +10 -40
  163. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +10 -40
  164. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +10 -40
  165. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +10 -40
  166. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +9 -39
  167. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +9 -39
  168. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +10 -40
  169. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +10 -40
  170. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +10 -40
  171. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +10 -40
  172. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +10 -40
  173. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-2stories.xml → base-bldgtype-attached-2stories.xml} +610 -639
  174. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-atticroof-cathedral.xml → base-bldgtype-attached-atticroof-cathedral.xml} +558 -587
  175. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-attached-infil-compartmentalization-test.xml +611 -0
  176. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached.xml → base-bldgtype-attached.xml} +610 -639
  177. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +10 -39
  178. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +10 -39
  179. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +10 -39
  180. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +10 -39
  181. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +10 -39
  182. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-infil-compartmentalization-test.xml +462 -0
  183. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-multifamily-calctype-operational.xml → base-bldgtype-multifamily-residents-1.xml} +453 -480
  184. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +10 -39
  185. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +10 -39
  186. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +10 -39
  187. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +10 -39
  188. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +10 -39
  189. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +10 -39
  190. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +10 -39
  191. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +10 -39
  192. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +10 -39
  193. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +10 -39
  194. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +10 -39
  195. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +10 -39
  196. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +10 -39
  197. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +10 -39
  198. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +10 -39
  199. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +11 -40
  200. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +10 -39
  201. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +10 -39
  202. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +10 -39
  203. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +10 -39
  204. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +10 -39
  205. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +10 -39
  206. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +15 -40
  207. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +10 -39
  208. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +10 -39
  209. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +10 -39
  210. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +10 -40
  211. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +10 -40
  212. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +10 -40
  213. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +10 -40
  214. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +10 -40
  215. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +10 -40
  216. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +10 -40
  217. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +10 -40
  218. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +10 -40
  219. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +10 -40
  220. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +10 -40
  221. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +10 -40
  222. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +10 -40
  223. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +10 -40
  224. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +10 -40
  225. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +10 -40
  226. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +10 -40
  227. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +10 -40
  228. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +10 -40
  229. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +10 -40
  230. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +10 -40
  231. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +10 -40
  232. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +10 -40
  233. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +10 -40
  234. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +10 -40
  235. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +10 -40
  236. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +10 -40
  237. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +10 -40
  238. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +10 -40
  239. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +10 -40
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +10 -40
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +10 -40
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +10 -40
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +10 -40
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +10 -40
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +10 -40
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +10 -40
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +10 -40
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +10 -40
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +10 -40
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +10 -40
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +11 -43
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +10 -40
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +10 -40
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +10 -40
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +10 -40
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +10 -40
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +10 -40
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +10 -40
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +10 -40
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +10 -40
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +10 -40
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +10 -40
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +10 -40
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +10 -40
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +10 -40
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +10 -40
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +10 -40
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +10 -40
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +10 -40
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +19 -25
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +10 -40
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +10 -40
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +10 -40
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +10 -40
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +10 -40
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +10 -40
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +10 -40
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +18 -24
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +11 -41
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +11 -41
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +10 -40
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ela.xml +549 -0
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +13 -43
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +10 -40
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-cfm.xml +552 -0
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +10 -40
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +10 -40
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +17 -47
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +10 -40
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +10 -40
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +10 -40
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +10 -40
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +10 -40
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +10 -40
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +10 -40
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +10 -40
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +10 -40
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +10 -40
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading-seasons.xml +559 -0
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +10 -40
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +10 -40
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +10 -40
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +19 -25
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +10 -40
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +10 -40
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-insulation.xml +10 -40
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +10 -40
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +10 -40
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +10 -40
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +10 -40
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +10 -40
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +10 -40
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +10 -40
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +10 -40
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +10 -40
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +10 -40
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosized-backup.xml +557 -0
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +16 -41
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml} +552 -583
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +16 -41
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml → base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml} +562 -586
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +16 -41
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +16 -41
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +16 -41
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +587 -0
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +17 -42
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +16 -41
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +16 -41
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +16 -41
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +10 -40
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +10 -40
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +10 -40
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +10 -40
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +10 -40
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +10 -40
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +10 -40
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +10 -40
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +10 -40
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +10 -40
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +10 -40
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +10 -40
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +10 -40
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +10 -40
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +10 -40
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +10 -40
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +10 -40
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +10 -40
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +10 -40
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +10 -40
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +10 -40
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +11 -41
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +11 -41
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +11 -41
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted-backup-hardsized.xml +553 -0
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +11 -41
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +10 -40
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +10 -40
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +10 -40
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +10 -40
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +10 -40
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +10 -40
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +10 -40
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +10 -40
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +10 -40
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +10 -40
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +10 -40
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +10 -40
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +10 -40
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +10 -40
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +10 -40
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +10 -40
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +10 -40
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +10 -40
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +10 -40
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-baseboard.xml +519 -0
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +10 -40
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +10 -40
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +10 -40
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +16 -40
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +16 -40
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +16 -40
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +10 -40
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +10 -40
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +16 -40
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +16 -40
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +16 -40
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-sizing-controls.xml +566 -0
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +10 -40
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +10 -40
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +10 -40
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +10 -40
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +10 -40
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +10 -40
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only-pilot.xml +513 -0
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +10 -40
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +10 -40
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +10 -40
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +10 -40
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +10 -40
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +10 -40
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +10 -40
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +10 -40
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +16 -41
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-crankcase-heater-40w.xml +556 -0
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +10 -40
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +560 -0
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +17 -42
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +17 -42
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +17 -42
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +17 -42
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +10 -40
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +10 -40
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-buried.xml +555 -0
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-effective-rvalue.xml +553 -0
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +10 -40
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +10 -40
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +10 -40
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +10 -40
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -40
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +10 -40
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +10 -40
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +10 -40
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only-pilot-light.xml +506 -0
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +10 -40
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +10 -40
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +10 -40
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +10 -40
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +10 -40
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +10 -40
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +10 -40
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-pilot.xml +542 -0
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +10 -40
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +10 -40
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +10 -40
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +10 -40
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +10 -40
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +10 -40
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +10 -40
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +10 -40
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +10 -40
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +14 -41
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +14 -41
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +14 -41
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +10 -40
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +10 -40
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +10 -40
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +10 -40
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +10 -40
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +10 -40
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +14 -41
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +10 -40
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +10 -40
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +16 -41
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +16 -41
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +16 -41
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +525 -0
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +564 -0
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +16 -41
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +506 -0
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -41
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +10 -40
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +10 -40
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +10 -40
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +10 -40
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-natural-gas.xml +10 -40
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +10 -40
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +513 -0
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +16 -40
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +10 -40
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +10 -40
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +10 -40
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +10 -40
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +10 -40
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +16 -40
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +10 -40
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +10 -40
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +10 -40
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +10 -40
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +10 -40
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +10 -40
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +10 -40
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +10 -40
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +10 -40
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +11 -41
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +10 -40
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-kwh-per-year.xml +529 -0
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-mixed.xml +537 -0
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none-ceiling-fans.xml +516 -0
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -7
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +10 -40
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +10 -40
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +10 -40
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +10 -40
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +10 -40
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +10 -40
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +10 -40
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +10 -40
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +10 -40
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +10 -40
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +10 -40
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +12 -42
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +10 -40
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +10 -40
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -40
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +10 -40
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +10 -40
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +10 -40
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +10 -40
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +10 -40
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +10 -40
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +10 -40
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +10 -40
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +10 -40
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +14 -44
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +10 -40
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +10 -40
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +10 -38
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +10 -40
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +16 -42
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +16 -42
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +16 -42
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +10 -40
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +14 -37
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +16 -42
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +12 -42
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +12 -42
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +12 -42
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +10 -40
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +10 -38
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +10 -38
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +10 -40
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading-bldgtype-multifamily.xml +509 -0
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +10 -40
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +10 -40
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +10 -41
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +30 -138
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +16 -42
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +24 -26
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-round-trip-efficiency.xml +16 -42
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +16 -42
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +16 -42
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +18 -44
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +18 -44
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +18 -44
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +16 -42
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0-runperiod-1-month.xml +560 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0.xml +556 -0
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon.xml → base-residents-1-misc-loads-large-uncommon.xml} +616 -644
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon2.xml → base-residents-1-misc-loads-large-uncommon2.xml} +616 -644
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational.xml → base-residents-1.xml} +547 -575
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-defaults.xml → base-residents-5.xml} +515 -539
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +10 -40
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +10 -40
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml +565 -0
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-schedules-detailed-occupancy-smooth.xml → base-schedules-detailed-occupancy-stochastic-vacancy-year-round.xml} +563 -583
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +21 -41
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +10 -40
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +10 -40
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +10 -40
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +10 -40
  561. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml +565 -0
  562. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml +565 -0
  563. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +620 -0
  564. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy-year-round.xml +619 -0
  565. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +619 -0
  566. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +10 -38
  567. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +10 -40
  568. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +10 -40
  569. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +10 -40
  570. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +10 -40
  571. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-temperature-capacitance-multiplier.xml +10 -40
  572. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +10 -40
  573. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +10 -40
  574. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +10 -40
  575. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-30-mins.xml +10 -40
  576. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +10 -37
  577. data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +16 -4
  578. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +16 -3
  579. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +16 -3
  580. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +16 -2
  581. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Long_Residence.xml +386 -0
  582. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Vatilo_Residence.xml +381 -0
  583. data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Victor_Residence.xml +370 -0
  584. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +2 -2
  585. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +2 -5
  586. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +2 -5
  587. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +2 -5
  588. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +2 -5
  589. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +2 -5
  590. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +2 -5
  591. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +2 -5
  592. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +2 -5
  593. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +2 -5
  594. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +2 -5
  595. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +2 -5
  596. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +2 -5
  597. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +2 -5
  598. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +2 -5
  599. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +2 -5
  600. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +2 -12
  601. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +2 -12
  602. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +2 -5
  603. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +2 -5
  604. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +2 -5
  605. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +2 -5
  606. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +2 -5
  607. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +2 -5
  608. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -9
  609. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -9
  610. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +475 -444
  611. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +475 -444
  612. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +177 -112
  613. data/example_files/resources/meta_measure.rb +2 -27
  614. data/example_files/xml_building/17/README.md +3 -3
  615. data/lib/uo_cli/version.rb +3 -38
  616. data/lib/uo_cli.rb +3 -38
  617. data/uo_cli.gemspec +6 -7
  618. metadata +70 -51
  619. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.json +0 -388
  620. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +0 -6136
  621. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +0 -4846
  622. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-smooth.csv +0 -8761
  623. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-vacancy.csv +0 -8761
  624. data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +0 -35
  625. data/example_files/resources/hpxml-measures/weather/USA_CO_Colorado.Springs-Peterson.Field.724660_TMY3-cache.csv +0 -35
  626. data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +0 -35
  627. data/example_files/resources/hpxml-measures/weather/USA_DE_Wilmington-New.Castle.County.AP.724089_TMY3-cache.csv +0 -35
  628. data/example_files/resources/hpxml-measures/weather/USA_FL_Miami.Intl.AP.722020_TMY3-cache.csv +0 -35
  629. data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +0 -35
  630. data/example_files/resources/hpxml-measures/weather/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3-cache.csv +0 -35
  631. data/example_files/resources/hpxml-measures/weather/USA_MN_Duluth.Intl.AP.727450_TMY3-cache.csv +0 -35
  632. data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +0 -35
  633. data/example_files/resources/hpxml-measures/weather/USA_NC_Charlotte-Douglas.Intl.AP.723140_TMY3-cache.csv +0 -35
  634. data/example_files/resources/hpxml-measures/weather/USA_NJ_Cape.May.County.AP.745966_TMY3-cache.csv +0 -35
  635. data/example_files/resources/hpxml-measures/weather/USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3-cache.csv +0 -35
  636. data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +0 -35
  637. data/example_files/resources/hpxml-measures/weather/USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3-cache.csv +0 -35
  638. data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +0 -35
  639. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +0 -35
  640. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +0 -2508
  641. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +0 -2508
@@ -21,162 +21,175 @@ class ReportSimulationOutputTest < MiniTest::Test
21
21
  end
22
22
 
23
23
  AnnualRows = [
24
- 'Energy Use: Total (MBtu)',
25
- 'Energy Use: Net (MBtu)',
26
- 'Fuel Use: Electricity: Total (MBtu)',
27
- 'Fuel Use: Electricity: Net (MBtu)',
28
- 'Fuel Use: Natural Gas: Total (MBtu)',
29
- 'Fuel Use: Fuel Oil: Total (MBtu)',
30
- 'Fuel Use: Propane: Total (MBtu)',
31
- 'Fuel Use: Wood Cord: Total (MBtu)',
32
- 'Fuel Use: Wood Pellets: Total (MBtu)',
33
- 'Fuel Use: Coal: Total (MBtu)',
34
- 'End Use: Electricity: Heating (MBtu)',
35
- 'End Use: Electricity: Heating Heat Pump Backup (MBtu)',
36
- 'End Use: Electricity: Heating Fans/Pumps (MBtu)',
37
- 'End Use: Electricity: Cooling (MBtu)',
38
- 'End Use: Electricity: Cooling Fans/Pumps (MBtu)',
39
- 'End Use: Electricity: Hot Water (MBtu)',
40
- 'End Use: Electricity: Hot Water Recirc Pump (MBtu)',
41
- 'End Use: Electricity: Hot Water Solar Thermal Pump (MBtu)',
42
- 'End Use: Electricity: Lighting Interior (MBtu)',
43
- 'End Use: Electricity: Lighting Garage (MBtu)',
44
- 'End Use: Electricity: Lighting Exterior (MBtu)',
45
- 'End Use: Electricity: Mech Vent (MBtu)',
46
- 'End Use: Electricity: Mech Vent Preheating (MBtu)',
47
- 'End Use: Electricity: Mech Vent Precooling (MBtu)',
48
- 'End Use: Electricity: Whole House Fan (MBtu)',
49
- 'End Use: Electricity: Refrigerator (MBtu)',
50
- 'End Use: Electricity: Freezer (MBtu)',
51
- 'End Use: Electricity: Dehumidifier (MBtu)',
52
- 'End Use: Electricity: Dishwasher (MBtu)',
53
- 'End Use: Electricity: Clothes Washer (MBtu)',
54
- 'End Use: Electricity: Clothes Dryer (MBtu)',
55
- 'End Use: Electricity: Range/Oven (MBtu)',
56
- 'End Use: Electricity: Ceiling Fan (MBtu)',
57
- 'End Use: Electricity: Television (MBtu)',
58
- 'End Use: Electricity: Plug Loads (MBtu)',
59
- 'End Use: Electricity: Electric Vehicle Charging (MBtu)',
60
- 'End Use: Electricity: Well Pump (MBtu)',
61
- 'End Use: Electricity: Pool Heater (MBtu)',
62
- 'End Use: Electricity: Pool Pump (MBtu)',
63
- 'End Use: Electricity: Hot Tub Heater (MBtu)',
64
- 'End Use: Electricity: Hot Tub Pump (MBtu)',
65
- 'End Use: Electricity: PV (MBtu)',
66
- 'End Use: Electricity: Generator (MBtu)',
67
- 'End Use: Electricity: Battery (MBtu)',
68
- 'End Use: Natural Gas: Heating (MBtu)',
69
- 'End Use: Natural Gas: Heating Heat Pump Backup (MBtu)',
70
- 'End Use: Natural Gas: Hot Water (MBtu)',
71
- 'End Use: Natural Gas: Clothes Dryer (MBtu)',
72
- 'End Use: Natural Gas: Range/Oven (MBtu)',
73
- 'End Use: Natural Gas: Pool Heater (MBtu)',
74
- 'End Use: Natural Gas: Hot Tub Heater (MBtu)',
75
- 'End Use: Natural Gas: Grill (MBtu)',
76
- 'End Use: Natural Gas: Lighting (MBtu)',
77
- 'End Use: Natural Gas: Fireplace (MBtu)',
78
- 'End Use: Natural Gas: Mech Vent Preheating (MBtu)',
79
- 'End Use: Natural Gas: Generator (MBtu)',
80
- 'End Use: Fuel Oil: Heating (MBtu)',
81
- 'End Use: Fuel Oil: Heating Heat Pump Backup (MBtu)',
82
- 'End Use: Fuel Oil: Hot Water (MBtu)',
83
- 'End Use: Fuel Oil: Clothes Dryer (MBtu)',
84
- 'End Use: Fuel Oil: Range/Oven (MBtu)',
85
- 'End Use: Fuel Oil: Grill (MBtu)',
86
- 'End Use: Fuel Oil: Lighting (MBtu)',
87
- 'End Use: Fuel Oil: Fireplace (MBtu)',
88
- 'End Use: Fuel Oil: Mech Vent Preheating (MBtu)',
89
- 'End Use: Fuel Oil: Generator (MBtu)',
90
- 'End Use: Propane: Heating (MBtu)',
91
- 'End Use: Propane: Heating Heat Pump Backup (MBtu)',
92
- 'End Use: Propane: Hot Water (MBtu)',
93
- 'End Use: Propane: Clothes Dryer (MBtu)',
94
- 'End Use: Propane: Range/Oven (MBtu)',
95
- 'End Use: Propane: Grill (MBtu)',
96
- 'End Use: Propane: Lighting (MBtu)',
97
- 'End Use: Propane: Fireplace (MBtu)',
98
- 'End Use: Propane: Mech Vent Preheating (MBtu)',
99
- 'End Use: Propane: Generator (MBtu)',
100
- 'End Use: Wood Cord: Heating (MBtu)',
101
- 'End Use: Wood Cord: Heating Heat Pump Backup (MBtu)',
102
- 'End Use: Wood Cord: Hot Water (MBtu)',
103
- 'End Use: Wood Cord: Clothes Dryer (MBtu)',
104
- 'End Use: Wood Cord: Range/Oven (MBtu)',
105
- 'End Use: Wood Cord: Grill (MBtu)',
106
- 'End Use: Wood Cord: Lighting (MBtu)',
107
- 'End Use: Wood Cord: Fireplace (MBtu)',
108
- 'End Use: Wood Cord: Mech Vent Preheating (MBtu)',
109
- 'End Use: Wood Cord: Generator (MBtu)',
110
- 'End Use: Wood Pellets: Heating (MBtu)',
111
- 'End Use: Wood Pellets: Heating Heat Pump Backup (MBtu)',
112
- 'End Use: Wood Pellets: Hot Water (MBtu)',
113
- 'End Use: Wood Pellets: Clothes Dryer (MBtu)',
114
- 'End Use: Wood Pellets: Range/Oven (MBtu)',
115
- 'End Use: Wood Pellets: Grill (MBtu)',
116
- 'End Use: Wood Pellets: Lighting (MBtu)',
117
- 'End Use: Wood Pellets: Fireplace (MBtu)',
118
- 'End Use: Wood Pellets: Mech Vent Preheating (MBtu)',
119
- 'End Use: Wood Pellets: Generator (MBtu)',
120
- 'End Use: Coal: Heating (MBtu)',
121
- 'End Use: Coal: Heating Heat Pump Backup (MBtu)',
122
- 'End Use: Coal: Hot Water (MBtu)',
123
- 'End Use: Coal: Clothes Dryer (MBtu)',
124
- 'End Use: Coal: Range/Oven (MBtu)',
125
- 'End Use: Coal: Grill (MBtu)',
126
- 'End Use: Coal: Lighting (MBtu)',
127
- 'End Use: Coal: Fireplace (MBtu)',
128
- 'End Use: Coal: Mech Vent Preheating (MBtu)',
129
- 'End Use: Coal: Generator (MBtu)',
130
- 'Load: Heating: Delivered (MBtu)',
131
- 'Load: Cooling: Delivered (MBtu)',
132
- 'Load: Hot Water: Delivered (MBtu)',
133
- 'Load: Hot Water: Tank Losses (MBtu)',
134
- 'Load: Hot Water: Desuperheater (MBtu)',
135
- 'Load: Hot Water: Solar Thermal (MBtu)',
136
- 'Unmet Hours: Heating (hr)',
137
- 'Unmet Hours: Cooling (hr)',
138
- 'Peak Electricity: Winter Total (W)',
139
- 'Peak Electricity: Summer Total (W)',
140
- 'Peak Load: Heating: Delivered (kBtu/hr)',
141
- 'Peak Load: Cooling: Delivered (kBtu/hr)',
142
- 'Component Load: Heating: Roofs (MBtu)',
143
- 'Component Load: Heating: Ceilings (MBtu)',
144
- 'Component Load: Heating: Walls (MBtu)',
145
- 'Component Load: Heating: Rim Joists (MBtu)',
146
- 'Component Load: Heating: Foundation Walls (MBtu)',
147
- 'Component Load: Heating: Doors (MBtu)',
148
- 'Component Load: Heating: Windows (MBtu)',
149
- 'Component Load: Heating: Skylights (MBtu)',
150
- 'Component Load: Heating: Floors (MBtu)',
151
- 'Component Load: Heating: Slabs (MBtu)',
152
- 'Component Load: Heating: Internal Mass (MBtu)',
153
- 'Component Load: Heating: Infiltration (MBtu)',
154
- 'Component Load: Heating: Natural Ventilation (MBtu)',
155
- 'Component Load: Heating: Mechanical Ventilation (MBtu)',
156
- 'Component Load: Heating: Whole House Fan (MBtu)',
157
- 'Component Load: Heating: Ducts (MBtu)',
158
- 'Component Load: Heating: Internal Gains (MBtu)',
159
- 'Component Load: Cooling: Roofs (MBtu)',
160
- 'Component Load: Cooling: Ceilings (MBtu)',
161
- 'Component Load: Cooling: Walls (MBtu)',
162
- 'Component Load: Cooling: Rim Joists (MBtu)',
163
- 'Component Load: Cooling: Foundation Walls (MBtu)',
164
- 'Component Load: Cooling: Doors (MBtu)',
165
- 'Component Load: Cooling: Windows (MBtu)',
166
- 'Component Load: Cooling: Skylights (MBtu)',
167
- 'Component Load: Cooling: Floors (MBtu)',
168
- 'Component Load: Cooling: Slabs (MBtu)',
169
- 'Component Load: Cooling: Internal Mass (MBtu)',
170
- 'Component Load: Cooling: Infiltration (MBtu)',
171
- 'Component Load: Cooling: Natural Ventilation (MBtu)',
172
- 'Component Load: Cooling: Mechanical Ventilation (MBtu)',
173
- 'Component Load: Cooling: Whole House Fan (MBtu)',
174
- 'Component Load: Cooling: Ducts (MBtu)',
175
- 'Component Load: Cooling: Internal Gains (MBtu)',
176
- 'Hot Water: Clothes Washer (gal)',
177
- 'Hot Water: Dishwasher (gal)',
178
- 'Hot Water: Fixtures (gal)',
179
- 'Hot Water: Distribution Waste (gal)',
24
+ "Energy Use: #{TE::Total} (MBtu)",
25
+ "Energy Use: #{TE::Net} (MBtu)",
26
+ "Fuel Use: #{FT::Elec}: #{TE::Total} (MBtu)",
27
+ "Fuel Use: #{FT::Elec}: #{TE::Net} (MBtu)",
28
+ "Fuel Use: #{FT::Gas}: #{TE::Total} (MBtu)",
29
+ "Fuel Use: #{FT::Oil}: #{TE::Total} (MBtu)",
30
+ "Fuel Use: #{FT::Propane}: #{TE::Total} (MBtu)",
31
+ "Fuel Use: #{FT::WoodCord}: #{TE::Total} (MBtu)",
32
+ "Fuel Use: #{FT::WoodPellets}: #{TE::Total} (MBtu)",
33
+ "Fuel Use: #{FT::Coal}: #{TE::Total} (MBtu)",
34
+ "End Use: #{FT::Elec}: #{EUT::Heating} (MBtu)",
35
+ "End Use: #{FT::Elec}: #{EUT::HeatingFanPump} (MBtu)",
36
+ "End Use: #{FT::Elec}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
37
+ "End Use: #{FT::Elec}: #{EUT::HeatingHeatPumpBackupFanPump} (MBtu)",
38
+ "End Use: #{FT::Elec}: #{EUT::Cooling} (MBtu)",
39
+ "End Use: #{FT::Elec}: #{EUT::CoolingFanPump} (MBtu)",
40
+ "End Use: #{FT::Elec}: #{EUT::HotWater} (MBtu)",
41
+ "End Use: #{FT::Elec}: #{EUT::HotWaterRecircPump} (MBtu)",
42
+ "End Use: #{FT::Elec}: #{EUT::HotWaterSolarThermalPump} (MBtu)",
43
+ "End Use: #{FT::Elec}: #{EUT::LightsInterior} (MBtu)",
44
+ "End Use: #{FT::Elec}: #{EUT::LightsGarage} (MBtu)",
45
+ "End Use: #{FT::Elec}: #{EUT::LightsExterior} (MBtu)",
46
+ "End Use: #{FT::Elec}: #{EUT::MechVent} (MBtu)",
47
+ "End Use: #{FT::Elec}: #{EUT::MechVentPreheat} (MBtu)",
48
+ "End Use: #{FT::Elec}: #{EUT::MechVentPrecool} (MBtu)",
49
+ "End Use: #{FT::Elec}: #{EUT::WholeHouseFan} (MBtu)",
50
+ "End Use: #{FT::Elec}: #{EUT::Refrigerator} (MBtu)",
51
+ "End Use: #{FT::Elec}: #{EUT::Freezer} (MBtu)",
52
+ "End Use: #{FT::Elec}: #{EUT::Dehumidifier} (MBtu)",
53
+ "End Use: #{FT::Elec}: #{EUT::Dishwasher} (MBtu)",
54
+ "End Use: #{FT::Elec}: #{EUT::ClothesWasher} (MBtu)",
55
+ "End Use: #{FT::Elec}: #{EUT::ClothesDryer} (MBtu)",
56
+ "End Use: #{FT::Elec}: #{EUT::RangeOven} (MBtu)",
57
+ "End Use: #{FT::Elec}: #{EUT::CeilingFan} (MBtu)",
58
+ "End Use: #{FT::Elec}: #{EUT::Television} (MBtu)",
59
+ "End Use: #{FT::Elec}: #{EUT::PlugLoads} (MBtu)",
60
+ "End Use: #{FT::Elec}: #{EUT::Vehicle} (MBtu)",
61
+ "End Use: #{FT::Elec}: #{EUT::WellPump} (MBtu)",
62
+ "End Use: #{FT::Elec}: #{EUT::PoolHeater} (MBtu)",
63
+ "End Use: #{FT::Elec}: #{EUT::PoolPump} (MBtu)",
64
+ "End Use: #{FT::Elec}: #{EUT::HotTubHeater} (MBtu)",
65
+ "End Use: #{FT::Elec}: #{EUT::HotTubPump} (MBtu)",
66
+ "End Use: #{FT::Elec}: #{EUT::PV} (MBtu)",
67
+ "End Use: #{FT::Elec}: #{EUT::Generator} (MBtu)",
68
+ "End Use: #{FT::Elec}: #{EUT::Battery} (MBtu)",
69
+ "End Use: #{FT::Gas}: #{EUT::Heating} (MBtu)",
70
+ "End Use: #{FT::Gas}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
71
+ "End Use: #{FT::Gas}: #{EUT::HotWater} (MBtu)",
72
+ "End Use: #{FT::Gas}: #{EUT::MechVentPreheat} (MBtu)",
73
+ "End Use: #{FT::Gas}: #{EUT::ClothesDryer} (MBtu)",
74
+ "End Use: #{FT::Gas}: #{EUT::RangeOven} (MBtu)",
75
+ "End Use: #{FT::Gas}: #{EUT::PoolHeater} (MBtu)",
76
+ "End Use: #{FT::Gas}: #{EUT::HotTubHeater} (MBtu)",
77
+ "End Use: #{FT::Gas}: #{EUT::Grill} (MBtu)",
78
+ "End Use: #{FT::Gas}: #{EUT::Lighting} (MBtu)",
79
+ "End Use: #{FT::Gas}: #{EUT::Fireplace} (MBtu)",
80
+ "End Use: #{FT::Gas}: #{EUT::Generator} (MBtu)",
81
+ "End Use: #{FT::Oil}: #{EUT::Heating} (MBtu)",
82
+ "End Use: #{FT::Oil}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
83
+ "End Use: #{FT::Oil}: #{EUT::HotWater} (MBtu)",
84
+ "End Use: #{FT::Oil}: #{EUT::MechVentPreheat} (MBtu)",
85
+ "End Use: #{FT::Oil}: #{EUT::ClothesDryer} (MBtu)",
86
+ "End Use: #{FT::Oil}: #{EUT::RangeOven} (MBtu)",
87
+ "End Use: #{FT::Oil}: #{EUT::Grill} (MBtu)",
88
+ "End Use: #{FT::Oil}: #{EUT::Lighting} (MBtu)",
89
+ "End Use: #{FT::Oil}: #{EUT::Fireplace} (MBtu)",
90
+ "End Use: #{FT::Oil}: #{EUT::Generator} (MBtu)",
91
+ "End Use: #{FT::Propane}: #{EUT::Heating} (MBtu)",
92
+ "End Use: #{FT::Propane}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
93
+ "End Use: #{FT::Propane}: #{EUT::HotWater} (MBtu)",
94
+ "End Use: #{FT::Propane}: #{EUT::MechVentPreheat} (MBtu)",
95
+ "End Use: #{FT::Propane}: #{EUT::ClothesDryer} (MBtu)",
96
+ "End Use: #{FT::Propane}: #{EUT::RangeOven} (MBtu)",
97
+ "End Use: #{FT::Propane}: #{EUT::Grill} (MBtu)",
98
+ "End Use: #{FT::Propane}: #{EUT::Lighting} (MBtu)",
99
+ "End Use: #{FT::Propane}: #{EUT::Fireplace} (MBtu)",
100
+ "End Use: #{FT::Propane}: #{EUT::Generator} (MBtu)",
101
+ "End Use: #{FT::WoodCord}: #{EUT::Heating} (MBtu)",
102
+ "End Use: #{FT::WoodCord}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
103
+ "End Use: #{FT::WoodCord}: #{EUT::HotWater} (MBtu)",
104
+ "End Use: #{FT::WoodCord}: #{EUT::MechVentPreheat} (MBtu)",
105
+ "End Use: #{FT::WoodCord}: #{EUT::ClothesDryer} (MBtu)",
106
+ "End Use: #{FT::WoodCord}: #{EUT::RangeOven} (MBtu)",
107
+ "End Use: #{FT::WoodCord}: #{EUT::Grill} (MBtu)",
108
+ "End Use: #{FT::WoodCord}: #{EUT::Lighting} (MBtu)",
109
+ "End Use: #{FT::WoodCord}: #{EUT::Fireplace} (MBtu)",
110
+ "End Use: #{FT::WoodCord}: #{EUT::Generator} (MBtu)",
111
+ "End Use: #{FT::WoodPellets}: #{EUT::Heating} (MBtu)",
112
+ "End Use: #{FT::WoodPellets}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
113
+ "End Use: #{FT::WoodPellets}: #{EUT::HotWater} (MBtu)",
114
+ "End Use: #{FT::WoodPellets}: #{EUT::MechVentPreheat} (MBtu)",
115
+ "End Use: #{FT::WoodPellets}: #{EUT::ClothesDryer} (MBtu)",
116
+ "End Use: #{FT::WoodPellets}: #{EUT::RangeOven} (MBtu)",
117
+ "End Use: #{FT::WoodPellets}: #{EUT::Grill} (MBtu)",
118
+ "End Use: #{FT::WoodPellets}: #{EUT::Lighting} (MBtu)",
119
+ "End Use: #{FT::WoodPellets}: #{EUT::Fireplace} (MBtu)",
120
+ "End Use: #{FT::WoodPellets}: #{EUT::Generator} (MBtu)",
121
+ "End Use: #{FT::Coal}: #{EUT::Heating} (MBtu)",
122
+ "End Use: #{FT::Coal}: #{EUT::HeatingHeatPumpBackup} (MBtu)",
123
+ "End Use: #{FT::Coal}: #{EUT::HotWater} (MBtu)",
124
+ "End Use: #{FT::Coal}: #{EUT::MechVentPreheat} (MBtu)",
125
+ "End Use: #{FT::Coal}: #{EUT::ClothesDryer} (MBtu)",
126
+ "End Use: #{FT::Coal}: #{EUT::RangeOven} (MBtu)",
127
+ "End Use: #{FT::Coal}: #{EUT::Grill} (MBtu)",
128
+ "End Use: #{FT::Coal}: #{EUT::Lighting} (MBtu)",
129
+ "End Use: #{FT::Coal}: #{EUT::Fireplace} (MBtu)",
130
+ "End Use: #{FT::Coal}: #{EUT::Generator} (MBtu)",
131
+ "System Use: HeatingSystem1: #{FT::Elec}: #{EUT::HeatingFanPump} (MBtu)",
132
+ "System Use: HeatingSystem1: #{FT::Gas}: #{EUT::Heating} (MBtu)",
133
+ "System Use: CoolingSystem1: #{FT::Elec}: #{EUT::Cooling} (MBtu)",
134
+ "System Use: CoolingSystem1: #{FT::Elec}: #{EUT::CoolingFanPump} (MBtu)",
135
+ "System Use: WaterHeatingSystem1: #{FT::Elec}: #{EUT::HotWater} (MBtu)",
136
+ "Load: #{LT::Heating} (MBtu)",
137
+ "Load: #{LT::HeatingHeatPumpBackup} (MBtu)",
138
+ "Load: #{LT::Cooling} (MBtu)",
139
+ "Load: #{LT::HotWaterDelivered} (MBtu)",
140
+ "Load: #{LT::HotWaterTankLosses} (MBtu)",
141
+ "Load: #{LT::HotWaterDesuperheater} (MBtu)",
142
+ "Load: #{LT::HotWaterSolarThermal} (MBtu)",
143
+ "Unmet Hours: #{UHT::Heating} (hr)",
144
+ "Unmet Hours: #{UHT::Cooling} (hr)",
145
+ "Peak Electricity: #{PFT::Winter} #{TE::Total} (W)",
146
+ "Peak Electricity: #{PFT::Summer} #{TE::Total} (W)",
147
+ "Peak Load: #{PLT::Heating} (kBtu/hr)",
148
+ "Peak Load: #{PLT::Cooling} (kBtu/hr)",
149
+ "Component Load: Heating: #{CLT::Roofs} (MBtu)",
150
+ "Component Load: Heating: #{CLT::Ceilings} (MBtu)",
151
+ "Component Load: Heating: #{CLT::Walls} (MBtu)",
152
+ "Component Load: Heating: #{CLT::RimJoists} (MBtu)",
153
+ "Component Load: Heating: #{CLT::FoundationWalls} (MBtu)",
154
+ "Component Load: Heating: #{CLT::Doors} (MBtu)",
155
+ "Component Load: Heating: #{CLT::WindowsConduction} (MBtu)",
156
+ "Component Load: Heating: #{CLT::WindowsSolar} (MBtu)",
157
+ "Component Load: Heating: #{CLT::SkylightsConduction} (MBtu)",
158
+ "Component Load: Heating: #{CLT::SkylightsSolar} (MBtu)",
159
+ "Component Load: Heating: #{CLT::Floors} (MBtu)",
160
+ "Component Load: Heating: #{CLT::Slabs} (MBtu)",
161
+ "Component Load: Heating: #{CLT::InternalMass} (MBtu)",
162
+ "Component Load: Heating: #{CLT::Infiltration} (MBtu)",
163
+ "Component Load: Heating: #{CLT::NaturalVentilation} (MBtu)",
164
+ "Component Load: Heating: #{CLT::MechanicalVentilation} (MBtu)",
165
+ "Component Load: Heating: #{CLT::WholeHouseFan} (MBtu)",
166
+ "Component Load: Heating: #{CLT::Ducts} (MBtu)",
167
+ "Component Load: Heating: #{CLT::InternalGains} (MBtu)",
168
+ "Component Load: Heating: #{CLT::Lighting} (MBtu)",
169
+ "Component Load: Cooling: #{CLT::Roofs} (MBtu)",
170
+ "Component Load: Cooling: #{CLT::Ceilings} (MBtu)",
171
+ "Component Load: Cooling: #{CLT::Walls} (MBtu)",
172
+ "Component Load: Cooling: #{CLT::RimJoists} (MBtu)",
173
+ "Component Load: Cooling: #{CLT::FoundationWalls} (MBtu)",
174
+ "Component Load: Cooling: #{CLT::Doors} (MBtu)",
175
+ "Component Load: Cooling: #{CLT::WindowsConduction} (MBtu)",
176
+ "Component Load: Cooling: #{CLT::WindowsSolar} (MBtu)",
177
+ "Component Load: Cooling: #{CLT::SkylightsConduction} (MBtu)",
178
+ "Component Load: Cooling: #{CLT::SkylightsSolar} (MBtu)",
179
+ "Component Load: Cooling: #{CLT::Floors} (MBtu)",
180
+ "Component Load: Cooling: #{CLT::Slabs} (MBtu)",
181
+ "Component Load: Cooling: #{CLT::InternalMass} (MBtu)",
182
+ "Component Load: Cooling: #{CLT::Infiltration} (MBtu)",
183
+ "Component Load: Cooling: #{CLT::NaturalVentilation} (MBtu)",
184
+ "Component Load: Cooling: #{CLT::MechanicalVentilation} (MBtu)",
185
+ "Component Load: Cooling: #{CLT::WholeHouseFan} (MBtu)",
186
+ "Component Load: Cooling: #{CLT::Ducts} (MBtu)",
187
+ "Component Load: Cooling: #{CLT::InternalGains} (MBtu)",
188
+ "Component Load: Cooling: #{CLT::Lighting} (MBtu)",
189
+ "Hot Water: #{HWT::ClothesWasher} (gal)",
190
+ "Hot Water: #{HWT::Dishwasher} (gal)",
191
+ "Hot Water: #{HWT::Fixtures} (gal)",
192
+ "Hot Water: #{HWT::DistributionWaste} (gal)",
180
193
  'HVAC Capacity: Cooling (Btu/h)',
181
194
  'HVAC Capacity: Heating (Btu/h)',
182
195
  'HVAC Capacity: Heat Pump Backup (Btu/h)',
@@ -212,75 +225,88 @@ class ReportSimulationOutputTest < MiniTest::Test
212
225
  ]
213
226
 
214
227
  BaseHPXMLTimeseriesColsEnergy = [
215
- 'Energy Use: Total',
228
+ "Energy Use: #{TE::Total}",
216
229
  ]
217
230
 
218
231
  BaseHPXMLTimeseriesColsFuels = [
219
- 'Fuel Use: Electricity: Total',
220
- 'Fuel Use: Natural Gas: Total',
232
+ "Fuel Use: #{FT::Elec}: #{TE::Total}",
233
+ "Fuel Use: #{FT::Gas}: #{TE::Total}",
221
234
  ]
222
235
 
223
236
  BaseHPXMLTimeseriesColsEndUses = [
224
- 'End Use: Electricity: Clothes Dryer',
225
- 'End Use: Electricity: Clothes Washer',
226
- 'End Use: Electricity: Cooling',
227
- 'End Use: Electricity: Cooling Fans/Pumps',
228
- 'End Use: Electricity: Dishwasher',
229
- 'End Use: Electricity: Heating Fans/Pumps',
230
- 'End Use: Electricity: Hot Water',
231
- 'End Use: Electricity: Lighting Exterior',
232
- 'End Use: Electricity: Lighting Interior',
233
- 'End Use: Electricity: Plug Loads',
234
- 'End Use: Electricity: Range/Oven',
235
- 'End Use: Electricity: Refrigerator',
236
- 'End Use: Electricity: Television',
237
- 'End Use: Natural Gas: Heating',
237
+ "End Use: #{FT::Elec}: #{EUT::ClothesDryer}",
238
+ "End Use: #{FT::Elec}: #{EUT::ClothesWasher}",
239
+ "End Use: #{FT::Elec}: #{EUT::Cooling}",
240
+ "End Use: #{FT::Elec}: #{EUT::CoolingFanPump}",
241
+ "End Use: #{FT::Elec}: #{EUT::Dishwasher}",
242
+ "End Use: #{FT::Elec}: #{EUT::HeatingFanPump}",
243
+ "End Use: #{FT::Elec}: #{EUT::HotWater}",
244
+ "End Use: #{FT::Elec}: #{EUT::LightsExterior}",
245
+ "End Use: #{FT::Elec}: #{EUT::LightsInterior}",
246
+ "End Use: #{FT::Elec}: #{EUT::PlugLoads}",
247
+ "End Use: #{FT::Elec}: #{EUT::RangeOven}",
248
+ "End Use: #{FT::Elec}: #{EUT::Refrigerator}",
249
+ "End Use: #{FT::Elec}: #{EUT::Television}",
250
+ "End Use: #{FT::Gas}: #{EUT::Heating}",
251
+ ]
252
+
253
+ BaseHPXMLTimeseriesColsSystemUses = [
254
+ "System Use: HeatingSystem1: #{FT::Elec}: #{EUT::HeatingFanPump}",
255
+ "System Use: HeatingSystem1: #{FT::Gas}: #{EUT::Heating}",
256
+ "System Use: CoolingSystem1: #{FT::Elec}: #{EUT::Cooling}",
257
+ "System Use: CoolingSystem1: #{FT::Elec}: #{EUT::CoolingFanPump}",
258
+ "System Use: WaterHeatingSystem1: #{FT::Elec}: #{EUT::HotWater}",
238
259
  ]
239
260
 
240
261
  BaseHPXMLTimeseriesColsWaterUses = [
241
- 'Hot Water: Clothes Washer',
242
- 'Hot Water: Dishwasher',
243
- 'Hot Water: Distribution Waste',
244
- 'Hot Water: Fixtures',
262
+ "Hot Water: #{HWT::ClothesWasher}",
263
+ "Hot Water: #{HWT::Dishwasher}",
264
+ "Hot Water: #{HWT::Fixtures}",
265
+ "Hot Water: #{HWT::DistributionWaste}",
245
266
  ]
246
267
 
247
268
  BaseHPXMLTimeseriesColsTotalLoads = [
248
- 'Load: Heating: Delivered',
249
- 'Load: Cooling: Delivered',
250
- 'Load: Hot Water: Delivered',
269
+ "Load: #{LT::Heating}",
270
+ "Load: #{LT::Cooling}",
271
+ "Load: #{LT::HotWaterDelivered}",
272
+ "Load: #{LT::HotWaterTankLosses}"
251
273
  ]
252
274
 
253
275
  BaseHPXMLTimeseriesColsComponentLoads = [
254
- 'Component Load: Cooling: Ceilings',
255
- 'Component Load: Cooling: Doors',
256
- 'Component Load: Cooling: Ducts',
257
- 'Component Load: Cooling: Foundation Walls',
258
- 'Component Load: Cooling: Infiltration',
259
- 'Component Load: Cooling: Internal Gains',
260
- 'Component Load: Cooling: Internal Mass',
261
- 'Component Load: Cooling: Mechanical Ventilation',
262
- 'Component Load: Cooling: Natural Ventilation',
263
- 'Component Load: Cooling: Rim Joists',
264
- 'Component Load: Cooling: Slabs',
265
- 'Component Load: Cooling: Walls',
266
- 'Component Load: Cooling: Windows',
267
- 'Component Load: Heating: Ceilings',
268
- 'Component Load: Heating: Doors',
269
- 'Component Load: Heating: Ducts',
270
- 'Component Load: Heating: Foundation Walls',
271
- 'Component Load: Heating: Infiltration',
272
- 'Component Load: Heating: Internal Gains',
273
- 'Component Load: Heating: Internal Mass',
274
- 'Component Load: Heating: Mechanical Ventilation',
275
- 'Component Load: Heating: Rim Joists',
276
- 'Component Load: Heating: Slabs',
277
- 'Component Load: Heating: Walls',
278
- 'Component Load: Heating: Windows',
276
+ "Component Load: Cooling: #{CLT::Ceilings}",
277
+ "Component Load: Cooling: #{CLT::Doors}",
278
+ "Component Load: Cooling: #{CLT::Ducts}",
279
+ "Component Load: Cooling: #{CLT::FoundationWalls}",
280
+ "Component Load: Cooling: #{CLT::Infiltration}",
281
+ "Component Load: Cooling: #{CLT::Lighting}",
282
+ "Component Load: Cooling: #{CLT::InternalGains}",
283
+ "Component Load: Cooling: #{CLT::InternalMass}",
284
+ "Component Load: Cooling: #{CLT::MechanicalVentilation}",
285
+ "Component Load: Cooling: #{CLT::NaturalVentilation}",
286
+ "Component Load: Cooling: #{CLT::RimJoists}",
287
+ "Component Load: Cooling: #{CLT::Slabs}",
288
+ "Component Load: Cooling: #{CLT::Walls}",
289
+ "Component Load: Cooling: #{CLT::WindowsConduction}",
290
+ "Component Load: Cooling: #{CLT::WindowsSolar}",
291
+ "Component Load: Heating: #{CLT::Ceilings}",
292
+ "Component Load: Heating: #{CLT::Doors}",
293
+ "Component Load: Heating: #{CLT::Ducts}",
294
+ "Component Load: Heating: #{CLT::FoundationWalls}",
295
+ "Component Load: Heating: #{CLT::Infiltration}",
296
+ "Component Load: Heating: #{CLT::Lighting}",
297
+ "Component Load: Heating: #{CLT::InternalGains}",
298
+ "Component Load: Heating: #{CLT::InternalMass}",
299
+ "Component Load: Heating: #{CLT::MechanicalVentilation}",
300
+ "Component Load: Heating: #{CLT::RimJoists}",
301
+ "Component Load: Heating: #{CLT::Slabs}",
302
+ "Component Load: Heating: #{CLT::Walls}",
303
+ "Component Load: Heating: #{CLT::WindowsConduction}",
304
+ "Component Load: Heating: #{CLT::WindowsSolar}",
279
305
  ]
280
306
 
281
307
  BaseHPXMLTimeseriesColsUnmetHours = [
282
- 'Unmet Hours: Heating',
283
- 'Unmet Hours: Cooling',
308
+ "Unmet Hours: #{UHT::Heating}",
309
+ "Unmet Hours: #{UHT::Cooling}",
284
310
  ]
285
311
 
286
312
  BaseHPXMLTimeseriesColsZoneTemps = [
@@ -291,18 +317,18 @@ class ReportSimulationOutputTest < MiniTest::Test
291
317
  ]
292
318
 
293
319
  BaseHPXMLTimeseriesColsAirflows = [
294
- 'Airflow: Infiltration',
295
- 'Airflow: Mechanical Ventilation',
296
- 'Airflow: Natural Ventilation',
320
+ "Airflow: #{AFT::Infiltration}",
321
+ "Airflow: #{AFT::MechanicalVentilation}",
322
+ "Airflow: #{AFT::NaturalVentilation}",
297
323
  ]
298
324
 
299
325
  BaseHPXMLTimeseriesColsWeather = [
300
- 'Weather: Drybulb Temperature',
301
- 'Weather: Wetbulb Temperature',
302
- 'Weather: Relative Humidity',
303
- 'Weather: Wind Speed',
304
- 'Weather: Diffuse Solar Radiation',
305
- 'Weather: Direct Solar Radiation',
326
+ "Weather: #{WT::DrybulbTemp}",
327
+ "Weather: #{WT::WetbulbTemp}",
328
+ "Weather: #{WT::RelativeHumidity}",
329
+ "Weather: #{WT::WindSpeed}",
330
+ "Weather: #{WT::DiffuseSolar}",
331
+ "Weather: #{WT::DirectSolar}",
306
332
  ]
307
333
 
308
334
  BaseHPXMLTimeseriesColsStandardOutputVariables = [
@@ -357,6 +383,7 @@ class ReportSimulationOutputTest < MiniTest::Test
357
383
  return (BaseHPXMLTimeseriesColsEnergy +
358
384
  BaseHPXMLTimeseriesColsFuels +
359
385
  BaseHPXMLTimeseriesColsEndUses +
386
+ BaseHPXMLTimeseriesColsSystemUses +
360
387
  BaseHPXMLTimeseriesColsWaterUses +
361
388
  BaseHPXMLTimeseriesColsTotalLoads +
362
389
  BaseHPXMLTimeseriesColsUnmetHours +
@@ -376,25 +403,113 @@ class ReportSimulationOutputTest < MiniTest::Test
376
403
  def emission_annual_cols
377
404
  cols = []
378
405
  emission_scenarios.each do |scenario|
379
- cols += ["Emissions: #{scenario}: Total (lb)",
380
- "Emissions: #{scenario}: Electricity: Total (lb)",
381
- "Emissions: #{scenario}: Electricity: Heating Fans/Pumps (lb)",
382
- "Emissions: #{scenario}: Electricity: Cooling (lb)",
383
- "Emissions: #{scenario}: Electricity: Cooling Fans/Pumps (lb)",
384
- "Emissions: #{scenario}: Electricity: Hot Water (lb)",
385
- "Emissions: #{scenario}: Electricity: Lighting Interior (lb)",
386
- "Emissions: #{scenario}: Electricity: Lighting Exterior (lb)",
387
- "Emissions: #{scenario}: Electricity: Refrigerator (lb)",
388
- "Emissions: #{scenario}: Electricity: Dishwasher (lb)",
389
- "Emissions: #{scenario}: Electricity: Clothes Washer (lb)",
390
- "Emissions: #{scenario}: Electricity: Clothes Dryer (lb)",
391
- "Emissions: #{scenario}: Electricity: Range/Oven (lb)",
392
- "Emissions: #{scenario}: Electricity: Television (lb)",
393
- "Emissions: #{scenario}: Electricity: Plug Loads (lb)",
394
- "Emissions: #{scenario}: Electricity: PV (lb)",
395
- "Emissions: #{scenario}: Electricity: Battery (lb)",
396
- "Emissions: #{scenario}: Natural Gas: Total (lb)",
397
- "Emissions: #{scenario}: Natural Gas: Heating (lb)"]
406
+ cols += ["Emissions: #{scenario}: #{TE::Total} (lb)",
407
+ "Emissions: #{scenario}: #{TE::Net} (lb)",
408
+ "Emissions: #{scenario}: #{FT::Elec}: #{TE::Total} (lb)",
409
+ "Emissions: #{scenario}: #{FT::Elec}: #{TE::Net} (lb)",
410
+ "Emissions: #{scenario}: #{FT::Gas}: #{TE::Total} (lb)",
411
+ "Emissions: #{scenario}: #{FT::Oil}: #{TE::Total} (lb)",
412
+ "Emissions: #{scenario}: #{FT::Propane}: #{TE::Total} (lb)",
413
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{TE::Total} (lb)",
414
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{TE::Total} (lb)",
415
+ "Emissions: #{scenario}: #{FT::Coal}: #{TE::Total} (lb)",
416
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Heating} (lb)",
417
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HeatingFanPump} (lb)",
418
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HeatingHeatPumpBackup} (lb)",
419
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HeatingHeatPumpBackupFanPump} (lb)",
420
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Cooling} (lb)",
421
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::CoolingFanPump} (lb)",
422
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotWater} (lb)",
423
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotWaterRecircPump} (lb)",
424
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotWaterSolarThermalPump} (lb)",
425
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::LightsInterior} (lb)",
426
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::LightsGarage} (lb)",
427
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::LightsExterior} (lb)",
428
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::MechVent} (lb)",
429
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::MechVentPreheat} (lb)",
430
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::MechVentPrecool} (lb)",
431
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::WholeHouseFan} (lb)",
432
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Refrigerator} (lb)",
433
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Freezer} (lb)",
434
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Dehumidifier} (lb)",
435
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Dishwasher} (lb)",
436
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::ClothesWasher} (lb)",
437
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::ClothesDryer} (lb)",
438
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::RangeOven} (lb)",
439
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::CeilingFan} (lb)",
440
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Television} (lb)",
441
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PlugLoads} (lb)",
442
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Vehicle} (lb)",
443
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::WellPump} (lb)",
444
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PoolHeater} (lb)",
445
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PoolPump} (lb)",
446
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotTubHeater} (lb)",
447
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotTubPump} (lb)",
448
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PV} (lb)",
449
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Generator} (lb)",
450
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Battery} (lb)",
451
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Heating} (lb)",
452
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::HeatingHeatPumpBackup} (lb)",
453
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::HotWater} (lb)",
454
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::ClothesDryer} (lb)",
455
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::RangeOven} (lb)",
456
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::PoolHeater} (lb)",
457
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::HotTubHeater} (lb)",
458
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Grill} (lb)",
459
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Lighting} (lb)",
460
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Fireplace} (lb)",
461
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::MechVentPreheat} (lb)",
462
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Generator} (lb)",
463
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::Heating} (lb)",
464
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::HeatingHeatPumpBackup} (lb)",
465
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::HotWater} (lb)",
466
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::ClothesDryer} (lb)",
467
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::RangeOven} (lb)",
468
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::Grill} (lb)",
469
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::Lighting} (lb)",
470
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::Fireplace} (lb)",
471
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::MechVentPreheat} (lb)",
472
+ "Emissions: #{scenario}: #{FT::Oil}: #{EUT::Generator} (lb)",
473
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::Heating} (lb)",
474
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::HeatingHeatPumpBackup} (lb)",
475
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::HotWater} (lb)",
476
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::ClothesDryer} (lb)",
477
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::RangeOven} (lb)",
478
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::Grill} (lb)",
479
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::Lighting} (lb)",
480
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::Fireplace} (lb)",
481
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::MechVentPreheat} (lb)",
482
+ "Emissions: #{scenario}: #{FT::Propane}: #{EUT::Generator} (lb)",
483
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::Heating} (lb)",
484
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::HeatingHeatPumpBackup} (lb)",
485
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::HotWater} (lb)",
486
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::ClothesDryer} (lb)",
487
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::RangeOven} (lb)",
488
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::Grill} (lb)",
489
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::Lighting} (lb)",
490
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::Fireplace} (lb)",
491
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::MechVentPreheat} (lb)",
492
+ "Emissions: #{scenario}: #{FT::WoodCord}: #{EUT::Generator} (lb)",
493
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::Heating} (lb)",
494
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::HeatingHeatPumpBackup} (lb)",
495
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::HotWater} (lb)",
496
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::ClothesDryer} (lb)",
497
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::RangeOven} (lb)",
498
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::Grill} (lb)",
499
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::Lighting} (lb)",
500
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::Fireplace} (lb)",
501
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::MechVentPreheat} (lb)",
502
+ "Emissions: #{scenario}: #{FT::WoodPellets}: #{EUT::Generator} (lb)",
503
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::Heating} (lb)",
504
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::HeatingHeatPumpBackup} (lb)",
505
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::HotWater} (lb)",
506
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::ClothesDryer} (lb)",
507
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::RangeOven} (lb)",
508
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::Grill} (lb)",
509
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::Lighting} (lb)",
510
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::Fireplace} (lb)",
511
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::MechVentPreheat} (lb)",
512
+ "Emissions: #{scenario}: #{FT::Coal}: #{EUT::Generator} (lb)"]
398
513
  end
399
514
  return cols
400
515
  end
@@ -402,7 +517,8 @@ class ReportSimulationOutputTest < MiniTest::Test
402
517
  def emissions_timeseries_cols
403
518
  cols = []
404
519
  emission_scenarios.each do |scenario|
405
- cols += ["Emissions: #{scenario}: Total"]
520
+ cols += ["Emissions: #{scenario}: #{TE::Total}",
521
+ "Emissions: #{scenario}: #{TE::Net}"]
406
522
  end
407
523
  return cols
408
524
  end
@@ -410,8 +526,9 @@ class ReportSimulationOutputTest < MiniTest::Test
410
526
  def emission_fuels_timeseries_cols
411
527
  cols = []
412
528
  emission_scenarios.each do |scenario|
413
- cols += ["Emissions: #{scenario}: Electricity: Total",
414
- "Emissions: #{scenario}: Natural Gas: Total"]
529
+ cols += ["Emissions: #{scenario}: #{FT::Elec}: #{TE::Total}",
530
+ "Emissions: #{scenario}: #{FT::Elec}: #{TE::Net}",
531
+ "Emissions: #{scenario}: #{FT::Gas}: #{TE::Total}"]
415
532
  end
416
533
  return cols
417
534
  end
@@ -419,33 +536,42 @@ class ReportSimulationOutputTest < MiniTest::Test
419
536
  def emission_end_uses_timeseries_cols
420
537
  cols = []
421
538
  emission_scenarios.each do |scenario|
422
- cols += ["Emissions: #{scenario}: Electricity: Heating Fans/Pumps",
423
- "Emissions: #{scenario}: Electricity: Cooling",
424
- "Emissions: #{scenario}: Electricity: Cooling Fans/Pumps",
425
- "Emissions: #{scenario}: Electricity: Hot Water",
426
- "Emissions: #{scenario}: Electricity: Lighting Interior",
427
- "Emissions: #{scenario}: Electricity: Lighting Exterior",
428
- "Emissions: #{scenario}: Electricity: Refrigerator",
429
- "Emissions: #{scenario}: Electricity: Dishwasher",
430
- "Emissions: #{scenario}: Electricity: Clothes Washer",
431
- "Emissions: #{scenario}: Electricity: Clothes Dryer",
432
- "Emissions: #{scenario}: Electricity: Range/Oven",
433
- "Emissions: #{scenario}: Electricity: Television",
434
- "Emissions: #{scenario}: Electricity: Plug Loads",
435
- "Emissions: #{scenario}: Electricity: PV",
436
- "Emissions: #{scenario}: Electricity: Battery",
437
- "Emissions: #{scenario}: Natural Gas: Heating"]
539
+ cols += ["Emissions: #{scenario}: #{FT::Elec}: #{EUT::Cooling}",
540
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::CoolingFanPump}",
541
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HeatingFanPump}",
542
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::HotWater}",
543
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::LightsInterior}",
544
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::LightsExterior}",
545
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Refrigerator}",
546
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Dishwasher}",
547
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::ClothesWasher}",
548
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::ClothesDryer}",
549
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::RangeOven}",
550
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Television}",
551
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PlugLoads}",
552
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::PV}",
553
+ "Emissions: #{scenario}: #{FT::Elec}: #{EUT::Battery}",
554
+ "Emissions: #{scenario}: #{FT::Gas}: #{EUT::Heating}"]
438
555
  end
439
556
  return cols
440
557
  end
441
558
 
559
+ def pv_battery_timeseries_cols
560
+ return ["End Use: #{FT::Elec}: #{EUT::PV}",
561
+ "End Use: #{FT::Elec}: #{EUT::Battery}",
562
+ "Energy Use: #{TE::Net}",
563
+ "Fuel Use: #{FT::Elec}: #{TE::Net}"]
564
+ end
565
+
442
566
  def test_annual_only
443
567
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
568
+ 'skip_validation' => true,
444
569
  'add_component_loads' => true,
445
570
  'timeseries_frequency' => 'hourly',
446
571
  'include_timeseries_total_consumptions' => false,
447
572
  'include_timeseries_fuel_consumptions' => false,
448
573
  'include_timeseries_end_use_consumptions' => false,
574
+ 'include_timeseries_system_use_consumptions' => false,
449
575
  'include_timeseries_emissions' => false,
450
576
  'include_timeseries_emission_fuels' => false,
451
577
  'include_timeseries_emission_end_uses' => false,
@@ -467,11 +593,13 @@ class ReportSimulationOutputTest < MiniTest::Test
467
593
 
468
594
  def test_annual_only2
469
595
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
596
+ 'skip_validation' => true,
470
597
  'add_component_loads' => true,
471
598
  'timeseries_frequency' => 'none',
472
- 'include_timeseries_total_consumptions' => false,
599
+ 'include_timeseries_total_consumptions' => true,
473
600
  'include_timeseries_fuel_consumptions' => true,
474
601
  'include_timeseries_end_use_consumptions' => true,
602
+ 'include_timeseries_system_use_consumptions' => true,
475
603
  'include_timeseries_emissions' => true,
476
604
  'include_timeseries_emission_fuels' => true,
477
605
  'include_timeseries_emission_end_uses' => true,
@@ -491,8 +619,33 @@ class ReportSimulationOutputTest < MiniTest::Test
491
619
  _check_for_runner_registered_values(File.join(File.dirname(annual_csv), 'results.json'), actual_annual_rows)
492
620
  end
493
621
 
622
+ def test_annual_disabled_outputs
623
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
624
+ 'skip_validation' => true,
625
+ 'include_annual_total_consumptions' => false,
626
+ 'include_annual_fuel_consumptions' => false,
627
+ 'include_annual_end_use_consumptions' => false,
628
+ 'include_annual_system_use_consumptions' => false,
629
+ 'include_annual_emissions' => false,
630
+ 'include_annual_emission_fuels' => false,
631
+ 'include_annual_emission_end_uses' => false,
632
+ 'include_annual_total_loads' => false,
633
+ 'include_annual_unmet_hours' => false,
634
+ 'include_annual_peak_fuels' => false,
635
+ 'include_annual_peak_loads' => false,
636
+ 'include_annual_component_loads' => false,
637
+ 'include_annual_hot_water_uses' => false,
638
+ 'include_annual_hvac_summary' => false }
639
+ annual_csv, timeseries_csv = _test_measure(args_hash)
640
+ assert(File.exist?(annual_csv))
641
+ assert(!File.exist?(timeseries_csv))
642
+ actual_annual_rows = _get_actual_annual_rows(annual_csv)
643
+ assert(actual_annual_rows.keys.empty?)
644
+ end
645
+
494
646
  def test_timeseries_hourly_total_energy
495
647
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
648
+ 'skip_validation' => true,
496
649
  'timeseries_frequency' => 'hourly',
497
650
  'include_timeseries_total_consumptions' => true }
498
651
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -505,29 +658,31 @@ class ReportSimulationOutputTest < MiniTest::Test
505
658
  assert_equal(8760, timeseries_rows.size - 2)
506
659
  timeseries_cols = timeseries_rows.transpose
507
660
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
508
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Energy Use: Total'])
661
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Energy Use: #{TE::Total}"])
509
662
  end
510
663
 
511
664
  def test_timeseries_hourly_total_energy_pv
512
665
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-pv.xml'),
666
+ 'skip_validation' => true,
513
667
  'timeseries_frequency' => 'hourly',
514
668
  'include_timeseries_total_consumptions' => true }
515
669
  annual_csv, timeseries_csv = _test_measure(args_hash)
516
670
  assert(File.exist?(annual_csv))
517
671
  assert(File.exist?(timeseries_csv))
518
- expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEnergy + ['Energy Use: Net']
672
+ expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEnergy + ["Energy Use: #{TE::Net}"]
519
673
  actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
520
674
  assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
521
675
  timeseries_rows = CSV.read(timeseries_csv)
522
676
  assert_equal(8760, timeseries_rows.size - 2)
523
677
  timeseries_cols = timeseries_rows.transpose
524
678
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
525
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Energy Use: Total',
526
- 'Energy Use: Net'])
679
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Energy Use: #{TE::Total}",
680
+ "Energy Use: #{TE::Net}"])
527
681
  end
528
682
 
529
683
  def test_timeseries_hourly_fuels
530
684
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
685
+ 'skip_validation' => true,
531
686
  'timeseries_frequency' => 'hourly',
532
687
  'include_timeseries_fuel_consumptions' => true }
533
688
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -540,29 +695,31 @@ class ReportSimulationOutputTest < MiniTest::Test
540
695
  assert_equal(8760, timeseries_rows.size - 2)
541
696
  timeseries_cols = timeseries_rows.transpose
542
697
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
543
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Fuel Use: Electricity: Total'])
698
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Fuel Use: #{FT::Elec}: #{TE::Total}"])
544
699
  end
545
700
 
546
701
  def test_timeseries_hourly_fuels_pv
547
702
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-pv.xml'),
703
+ 'skip_validation' => true,
548
704
  'timeseries_frequency' => 'hourly',
549
705
  'include_timeseries_fuel_consumptions' => true }
550
706
  annual_csv, timeseries_csv = _test_measure(args_hash)
551
707
  assert(File.exist?(annual_csv))
552
708
  assert(File.exist?(timeseries_csv))
553
- expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsFuels + ['Fuel Use: Electricity: Net']
709
+ expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsFuels + ["Fuel Use: #{FT::Elec}: #{TE::Net}"]
554
710
  actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
555
711
  assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
556
712
  timeseries_rows = CSV.read(timeseries_csv)
557
713
  assert_equal(8760, timeseries_rows.size - 2)
558
714
  timeseries_cols = timeseries_rows.transpose
559
715
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
560
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Fuel Use: Electricity: Total',
561
- 'Fuel Use: Electricity: Net'])
716
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Fuel Use: #{FT::Elec}: #{TE::Total}",
717
+ "Fuel Use: #{FT::Elec}: #{TE::Net}"])
562
718
  end
563
719
 
564
720
  def test_timeseries_hourly_emissions
565
721
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
722
+ 'skip_validation' => true,
566
723
  'timeseries_frequency' => 'hourly',
567
724
  'include_timeseries_emissions' => true }
568
725
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -575,11 +732,12 @@ class ReportSimulationOutputTest < MiniTest::Test
575
732
  assert_equal(8760, timeseries_rows.size - 2)
576
733
  timeseries_cols = timeseries_rows.transpose
577
734
  _check_for_constant_timeseries_step(timeseries_cols[0])
578
- _check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
735
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
579
736
  end
580
737
 
581
738
  def test_timeseries_hourly_emission_end_uses
582
739
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
740
+ 'skip_validation' => true,
583
741
  'timeseries_frequency' => 'hourly',
584
742
  'include_timeseries_emission_end_uses' => true }
585
743
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -592,11 +750,12 @@ class ReportSimulationOutputTest < MiniTest::Test
592
750
  assert_equal(8760, timeseries_rows.size - 2)
593
751
  timeseries_cols = timeseries_rows.transpose
594
752
  _check_for_constant_timeseries_step(timeseries_cols[0])
595
- _check_for_nonzero_timeseries_value(timeseries_csv, emission_end_uses_timeseries_cols[0..2])
753
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emission_end_uses_timeseries_cols[0..2])
596
754
  end
597
755
 
598
756
  def test_timeseries_hourly_emission_fuels
599
757
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
758
+ 'skip_validation' => true,
600
759
  'timeseries_frequency' => 'hourly',
601
760
  'include_timeseries_emission_fuels' => true }
602
761
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -609,11 +768,12 @@ class ReportSimulationOutputTest < MiniTest::Test
609
768
  assert_equal(8760, timeseries_rows.size - 2)
610
769
  timeseries_cols = timeseries_rows.transpose
611
770
  _check_for_constant_timeseries_step(timeseries_cols[0])
612
- _check_for_nonzero_timeseries_value(timeseries_csv, emission_fuels_timeseries_cols[0..2])
771
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emission_fuels_timeseries_cols[0..2])
613
772
  end
614
773
 
615
774
  def test_timeseries_hourly_enduses
616
775
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
776
+ 'skip_validation' => true,
617
777
  'timeseries_frequency' => 'hourly',
618
778
  'include_timeseries_end_use_consumptions' => true }
619
779
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -626,11 +786,114 @@ class ReportSimulationOutputTest < MiniTest::Test
626
786
  assert_equal(8760, timeseries_rows.size - 2)
627
787
  timeseries_cols = timeseries_rows.transpose
628
788
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
629
- _check_for_nonzero_timeseries_value(timeseries_csv, ['End Use: Electricity: Plug Loads'])
789
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::PlugLoads}"])
790
+ end
791
+
792
+ def test_timeseries_hourly_enduses_vacancy
793
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-schedules-simple-vacancy.xml'),
794
+ 'skip_validation' => true,
795
+ 'timeseries_frequency' => 'hourly',
796
+ 'include_timeseries_end_use_consumptions' => true }
797
+ annual_csv, timeseries_csv = _test_measure(args_hash)
798
+ assert(File.exist?(annual_csv))
799
+ assert(File.exist?(timeseries_csv))
800
+ expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEndUses
801
+ actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
802
+ assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
803
+ timeseries_rows = CSV.read(timeseries_csv)
804
+ assert_equal(8760, timeseries_rows.size - 2)
805
+ timeseries_cols = timeseries_rows.transpose
806
+ assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
807
+ _check_for_zero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::PlugLoads}"], 0, 31 * 24 - 1) # Jan
808
+ _check_for_zero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::PlugLoads}"], (31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30) * 24 + 1, -1) # Dec
809
+ _check_for_nonzero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::Refrigerator}"])
810
+ end
811
+
812
+ def test_timeseries_hourly_enduses_power_outage
813
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-schedules-simple-power-outage.xml'),
814
+ 'skip_validation' => true,
815
+ 'timeseries_frequency' => 'hourly',
816
+ 'include_timeseries_end_use_consumptions' => true }
817
+ annual_csv, timeseries_csv = _test_measure(args_hash)
818
+ assert(File.exist?(annual_csv))
819
+ assert(File.exist?(timeseries_csv))
820
+ expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsEndUses
821
+ actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
822
+ assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
823
+ timeseries_rows = CSV.read(timeseries_csv)
824
+ assert_equal(8760, timeseries_rows.size - 2)
825
+ timeseries_cols = timeseries_rows.transpose
826
+ assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
827
+ _check_for_zero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::PlugLoads}"], (31 + 28 + 31 + 30 + 31 + 30) * 24 + 4, (31 + 28 + 31 + 30 + 31 + 30 + 31) * 24 - 12) # Jul
828
+ end
829
+
830
+ def test_timeseries_hourly_enduses_power_outage_natvent_availability
831
+ energy_use_total_col = "Energy Use: #{TE::Total}"
832
+ temperature_living_space_col = 'Temperature: Living Space'
833
+
834
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-schedules-simple-power-outage.xml'),
835
+ 'skip_validation' => true,
836
+ 'timeseries_frequency' => 'hourly',
837
+ 'include_timeseries_total_consumptions' => true,
838
+ 'include_timeseries_zone_temperatures' => true }
839
+ _annual_csv, timeseries_csv = _test_measure(args_hash)
840
+ assert(File.exist?(timeseries_csv))
841
+ values = _get_values(timeseries_csv, [energy_use_total_col, temperature_living_space_col])
842
+ schedule_regular_total = values[energy_use_total_col].sum(0.0)
843
+ schedule_regular_temp = values[temperature_living_space_col].sum(0.0) / values[temperature_living_space_col].size
844
+
845
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml'),
846
+ 'skip_validation' => true,
847
+ 'timeseries_frequency' => 'hourly',
848
+ 'include_timeseries_total_consumptions' => true,
849
+ 'include_timeseries_zone_temperatures' => true }
850
+ _annual_csv, timeseries_csv = _test_measure(args_hash)
851
+ assert(File.exist?(timeseries_csv))
852
+ values = _get_values(timeseries_csv, [energy_use_total_col, temperature_living_space_col])
853
+ schedule_available_total = values[energy_use_total_col].sum(0.0)
854
+ schedule_available_temp = values[temperature_living_space_col].sum(0.0) / values[temperature_living_space_col].size
855
+
856
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml'),
857
+ 'skip_validation' => true,
858
+ 'timeseries_frequency' => 'hourly',
859
+ 'include_timeseries_total_consumptions' => true,
860
+ 'include_timeseries_zone_temperatures' => true }
861
+ _annual_csv, timeseries_csv = _test_measure(args_hash)
862
+ assert(File.exist?(timeseries_csv))
863
+ values = _get_values(timeseries_csv, [energy_use_total_col, temperature_living_space_col])
864
+ schedule_unavailable_total = values[energy_use_total_col].sum(0.0)
865
+ schedule_unavailable_temp = values[temperature_living_space_col].sum(0.0) / values[temperature_living_space_col].size
866
+
867
+ assert_operator(schedule_regular_total, :>, schedule_available_total)
868
+ assert_operator(schedule_available_total, :<, schedule_unavailable_total)
869
+ assert_operator(schedule_unavailable_total, :<, schedule_regular_total)
870
+
871
+ assert_operator(schedule_regular_temp, :>, schedule_available_temp)
872
+ assert_operator(schedule_available_temp, :<, schedule_unavailable_temp)
873
+ assert_operator(schedule_unavailable_temp, :>, schedule_regular_temp)
874
+ end
875
+
876
+ def test_timeseries_hourly_system_uses
877
+ args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
878
+ 'skip_validation' => true,
879
+ 'timeseries_frequency' => 'hourly',
880
+ 'include_timeseries_system_use_consumptions' => true }
881
+ annual_csv, timeseries_csv = _test_measure(args_hash)
882
+ assert(File.exist?(annual_csv))
883
+ assert(File.exist?(timeseries_csv))
884
+ expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsSystemUses
885
+ actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
886
+ assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
887
+ timeseries_rows = CSV.read(timeseries_csv)
888
+ assert_equal(8760, timeseries_rows.size - 2)
889
+ timeseries_cols = timeseries_rows.transpose
890
+ assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
891
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["System Use: HeatingSystem1: #{FT::Gas}: #{EUT::Heating}"])
630
892
  end
631
893
 
632
894
  def test_timeseries_hourly_hotwateruses
633
895
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
896
+ 'skip_validation' => true,
634
897
  'timeseries_frequency' => 'hourly',
635
898
  'include_timeseries_hot_water_uses' => true }
636
899
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -643,11 +906,12 @@ class ReportSimulationOutputTest < MiniTest::Test
643
906
  assert_equal(8760, timeseries_rows.size - 2)
644
907
  timeseries_cols = timeseries_rows.transpose
645
908
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
646
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsWaterUses)
909
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsWaterUses)
647
910
  end
648
911
 
649
912
  def test_timeseries_hourly_total_loads
650
913
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
914
+ 'skip_validation' => true,
651
915
  'timeseries_frequency' => 'hourly',
652
916
  'include_timeseries_total_loads' => true }
653
917
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -660,11 +924,12 @@ class ReportSimulationOutputTest < MiniTest::Test
660
924
  assert_equal(8760, timeseries_rows.size - 2)
661
925
  timeseries_cols = timeseries_rows.transpose
662
926
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
663
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsTotalLoads)
927
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsTotalLoads)
664
928
  end
665
929
 
666
930
  def test_timeseries_hourly_component_loads
667
931
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
932
+ 'skip_validation' => true,
668
933
  'add_component_loads' => true,
669
934
  'timeseries_frequency' => 'hourly',
670
935
  'include_timeseries_component_loads' => true }
@@ -678,11 +943,13 @@ class ReportSimulationOutputTest < MiniTest::Test
678
943
  assert_equal(8760, timeseries_rows.size - 2)
679
944
  timeseries_cols = timeseries_rows.transpose
680
945
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
681
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Component Load: Heating: Internal Gains', 'Component Load: Cooling: Internal Gains'])
946
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Component Load: Heating: #{CLT::InternalGains}",
947
+ "Component Load: Cooling: #{CLT::InternalGains}"])
682
948
  end
683
949
 
684
950
  def test_timeseries_hourly_unmet_hours
685
951
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-hvac-undersized.xml'),
952
+ 'skip_validation' => true,
686
953
  'add_component_loads' => true,
687
954
  'timeseries_frequency' => 'hourly',
688
955
  'include_timeseries_unmet_hours' => true }
@@ -696,11 +963,13 @@ class ReportSimulationOutputTest < MiniTest::Test
696
963
  assert_equal(8760, timeseries_rows.size - 2)
697
964
  timeseries_cols = timeseries_rows.transpose
698
965
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
699
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Unmet Hours: Heating', 'Unmet Hours: Cooling'])
966
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Unmet Hours: #{UHT::Heating}",
967
+ "Unmet Hours: #{UHT::Cooling}"])
700
968
  end
701
969
 
702
970
  def test_timeseries_hourly_zone_temperatures
703
971
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
972
+ 'skip_validation' => true,
704
973
  'timeseries_frequency' => 'hourly',
705
974
  'include_timeseries_zone_temperatures' => true }
706
975
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -713,11 +982,12 @@ class ReportSimulationOutputTest < MiniTest::Test
713
982
  assert_equal(8760, timeseries_rows.size - 2)
714
983
  timeseries_cols = timeseries_rows.transpose
715
984
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
716
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps)
985
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps)
717
986
  end
718
987
 
719
988
  def test_timeseries_hourly_zone_temperatures_without_cooling
720
989
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-hvac-furnace-gas-only.xml'),
990
+ 'skip_validation' => true,
721
991
  'timeseries_frequency' => 'hourly',
722
992
  'include_timeseries_zone_temperatures' => true }
723
993
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -730,11 +1000,12 @@ class ReportSimulationOutputTest < MiniTest::Test
730
1000
  assert_equal(8760, timeseries_rows.size - 2)
731
1001
  timeseries_cols = timeseries_rows.transpose
732
1002
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
733
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps - ['Temperature: Cooling Setpoint'])
1003
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps - ['Temperature: Cooling Setpoint'])
734
1004
  end
735
1005
 
736
1006
  def test_timeseries_hourly_zone_temperatures_mf_space
737
1007
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml'),
1008
+ 'skip_validation' => true,
738
1009
  'timeseries_frequency' => 'hourly',
739
1010
  'include_timeseries_zone_temperatures' => true }
740
1011
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -754,11 +1025,12 @@ class ReportSimulationOutputTest < MiniTest::Test
754
1025
  assert_equal(8760, timeseries_rows.size - 2)
755
1026
  timeseries_cols = timeseries_rows.transpose
756
1027
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
757
- _check_for_nonzero_timeseries_value(timeseries_csv, cols_temps_other_side)
1028
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, cols_temps_other_side)
758
1029
  end
759
1030
 
760
1031
  def test_timeseries_hourly_airflows_with_exhaust_mechvent
761
1032
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-exhaust.xml'),
1033
+ 'skip_validation' => true,
762
1034
  'timeseries_frequency' => 'hourly',
763
1035
  'include_timeseries_airflows' => true }
764
1036
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -771,11 +1043,12 @@ class ReportSimulationOutputTest < MiniTest::Test
771
1043
  assert_equal(8760, timeseries_rows.size - 2)
772
1044
  timeseries_cols = timeseries_rows.transpose
773
1045
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
774
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsAirflows.select { |t| t != 'Airflow: Whole House Fan' })
1046
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsAirflows.select { |t| t != 'Airflow: Whole House Fan' })
775
1047
  end
776
1048
 
777
1049
  def test_timeseries_hourly_airflows_with_whf
778
1050
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-whole-house-fan.xml'),
1051
+ 'skip_validation' => true,
779
1052
  'timeseries_frequency' => 'hourly',
780
1053
  'include_timeseries_airflows' => true }
781
1054
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -790,11 +1063,12 @@ class ReportSimulationOutputTest < MiniTest::Test
790
1063
  assert_equal(8760, timeseries_rows.size - 2)
791
1064
  timeseries_cols = timeseries_rows.transpose
792
1065
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
793
- _check_for_nonzero_timeseries_value(timeseries_csv, add_cols)
1066
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, add_cols)
794
1067
  end
795
1068
 
796
1069
  def test_timeseries_hourly_airflows_with_clothes_dryer_exhaust
797
1070
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-appliances-gas.xml'),
1071
+ 'skip_validation' => true,
798
1072
  'timeseries_frequency' => 'hourly',
799
1073
  'include_timeseries_airflows' => true }
800
1074
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -807,11 +1081,12 @@ class ReportSimulationOutputTest < MiniTest::Test
807
1081
  assert_equal(8760, timeseries_rows.size - 2)
808
1082
  timeseries_cols = timeseries_rows.transpose
809
1083
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
810
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Airflow: Mechanical Ventilation'])
1084
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Airflow: #{AFT::MechanicalVentilation}"])
811
1085
  end
812
1086
 
813
1087
  def test_timeseries_hourly_airflows_with_balanced_mechvent
814
1088
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-balanced.xml'),
1089
+ 'skip_validation' => true,
815
1090
  'timeseries_frequency' => 'hourly',
816
1091
  'include_timeseries_airflows' => true }
817
1092
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -824,11 +1099,12 @@ class ReportSimulationOutputTest < MiniTest::Test
824
1099
  assert_equal(8760, timeseries_rows.size - 2)
825
1100
  timeseries_cols = timeseries_rows.transpose
826
1101
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
827
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Airflow: Mechanical Ventilation'])
1102
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Airflow: #{AFT::MechanicalVentilation}"])
828
1103
  end
829
1104
 
830
1105
  def test_timeseries_hourly_airflows_with_cfis
831
1106
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-cfis.xml'),
1107
+ 'skip_validation' => true,
832
1108
  'timeseries_frequency' => 'hourly',
833
1109
  'include_timeseries_airflows' => true }
834
1110
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -841,11 +1117,12 @@ class ReportSimulationOutputTest < MiniTest::Test
841
1117
  assert_equal(8760, timeseries_rows.size - 2)
842
1118
  timeseries_cols = timeseries_rows.transpose
843
1119
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
844
- _check_for_nonzero_timeseries_value(timeseries_csv, ['Airflow: Mechanical Ventilation'])
1120
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, ["Airflow: #{AFT::MechanicalVentilation}"])
845
1121
  end
846
1122
 
847
1123
  def test_timeseries_hourly_weather
848
1124
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1125
+ 'skip_validation' => true,
849
1126
  'timeseries_frequency' => 'hourly',
850
1127
  'include_timeseries_weather' => true }
851
1128
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -858,15 +1135,17 @@ class ReportSimulationOutputTest < MiniTest::Test
858
1135
  assert_equal(8760, timeseries_rows.size - 2)
859
1136
  timeseries_cols = timeseries_rows.transpose
860
1137
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
861
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsWeather)
1138
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsWeather)
862
1139
  end
863
1140
 
864
1141
  def test_timeseries_hourly_ALL
865
1142
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
1143
+ 'skip_validation' => true,
866
1144
  'timeseries_frequency' => 'hourly',
867
1145
  'include_timeseries_total_consumptions' => true,
868
1146
  'include_timeseries_fuel_consumptions' => true,
869
1147
  'include_timeseries_end_use_consumptions' => true,
1148
+ 'include_timeseries_system_use_consumptions' => true,
870
1149
  'include_timeseries_emissions' => true,
871
1150
  'include_timeseries_emission_fuels' => true,
872
1151
  'include_timeseries_emission_end_uses' => true,
@@ -885,23 +1164,25 @@ class ReportSimulationOutputTest < MiniTest::Test
885
1164
  emissions_timeseries_cols +
886
1165
  emission_fuels_timeseries_cols +
887
1166
  emission_end_uses_timeseries_cols +
888
- ['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
1167
+ pv_battery_timeseries_cols
889
1168
  actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
890
1169
  assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
891
1170
  timeseries_rows = CSV.read(timeseries_csv)
892
1171
  assert_equal(8760, timeseries_rows.size - 2)
893
1172
  timeseries_cols = timeseries_rows.transpose
894
1173
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
895
- _check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
896
- _check_for_zero_baseload_timeseries_value(timeseries_csv, ['End Use: Electricity: Refrigerator'])
1174
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
1175
+ _check_for_nonzero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::Refrigerator}"])
897
1176
  end
898
1177
 
899
1178
  def test_timeseries_daily_ALL
900
1179
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
1180
+ 'skip_validation' => true,
901
1181
  'timeseries_frequency' => 'daily',
902
1182
  'include_timeseries_total_consumptions' => true,
903
1183
  'include_timeseries_fuel_consumptions' => true,
904
1184
  'include_timeseries_end_use_consumptions' => true,
1185
+ 'include_timeseries_system_use_consumptions' => true,
905
1186
  'include_timeseries_emissions' => true,
906
1187
  'include_timeseries_emission_fuels' => true,
907
1188
  'include_timeseries_emission_end_uses' => true,
@@ -920,23 +1201,25 @@ class ReportSimulationOutputTest < MiniTest::Test
920
1201
  emissions_timeseries_cols +
921
1202
  emission_fuels_timeseries_cols +
922
1203
  emission_end_uses_timeseries_cols +
923
- ['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
1204
+ pv_battery_timeseries_cols
924
1205
  actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
925
1206
  assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
926
1207
  timeseries_rows = CSV.read(timeseries_csv)
927
1208
  assert_equal(365, timeseries_rows.size - 2)
928
1209
  timeseries_cols = timeseries_rows.transpose
929
1210
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
930
- _check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
931
- _check_for_zero_baseload_timeseries_value(timeseries_csv, ['End Use: Electricity: Refrigerator'])
1211
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
1212
+ _check_for_nonzero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::Refrigerator}"])
932
1213
  end
933
1214
 
934
1215
  def test_timeseries_monthly_ALL
935
1216
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
1217
+ 'skip_validation' => true,
936
1218
  'timeseries_frequency' => 'monthly',
937
1219
  'include_timeseries_total_consumptions' => true,
938
1220
  'include_timeseries_fuel_consumptions' => true,
939
1221
  'include_timeseries_end_use_consumptions' => true,
1222
+ 'include_timeseries_system_use_consumptions' => true,
940
1223
  'include_timeseries_emissions' => true,
941
1224
  'include_timeseries_emission_fuels' => true,
942
1225
  'include_timeseries_emission_end_uses' => true,
@@ -955,13 +1238,13 @@ class ReportSimulationOutputTest < MiniTest::Test
955
1238
  emissions_timeseries_cols +
956
1239
  emission_fuels_timeseries_cols +
957
1240
  emission_end_uses_timeseries_cols +
958
- ['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
1241
+ pv_battery_timeseries_cols
959
1242
  actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
960
1243
  assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
961
1244
  timeseries_rows = CSV.read(timeseries_csv)
962
1245
  assert_equal(12, timeseries_rows.size - 2)
963
- _check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
964
- _check_for_zero_baseload_timeseries_value(timeseries_csv, ['End Use: Electricity: Refrigerator'])
1246
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
1247
+ _check_for_nonzero_timeseries_values(timeseries_csv, ["End Use: #{FT::Elec}: #{EUT::Refrigerator}"])
965
1248
  end
966
1249
 
967
1250
  def test_timeseries_timestep
@@ -979,19 +1262,11 @@ class ReportSimulationOutputTest < MiniTest::Test
979
1262
 
980
1263
  def test_timeseries_timestep_emissions
981
1264
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
1265
+ 'skip_validation' => true,
982
1266
  'timeseries_frequency' => 'timestep',
983
- 'include_timeseries_fuel_consumptions' => false,
984
- 'include_timeseries_end_use_consumptions' => false,
985
1267
  'include_timeseries_emissions' => true,
986
1268
  'include_timeseries_emission_fuels' => true,
987
- 'include_timeseries_emission_end_uses' => true,
988
- 'include_timeseries_hot_water_uses' => false,
989
- 'include_timeseries_total_loads' => false,
990
- 'include_timeseries_unmet_hours' => false,
991
- 'include_timeseries_component_loads' => false,
992
- 'include_timeseries_zone_temperatures' => false,
993
- 'include_timeseries_airflows' => false,
994
- 'include_timeseries_weather' => false }
1269
+ 'include_timeseries_emission_end_uses' => true }
995
1270
  annual_csv, timeseries_csv = _test_measure(args_hash)
996
1271
  assert(File.exist?(annual_csv))
997
1272
  assert(File.exist?(timeseries_csv))
@@ -1005,11 +1280,12 @@ class ReportSimulationOutputTest < MiniTest::Test
1005
1280
  assert_equal(8760, timeseries_rows.size - 2)
1006
1281
  timeseries_cols = timeseries_rows.transpose
1007
1282
  _check_for_constant_timeseries_step(timeseries_cols[0])
1008
- _check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
1283
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
1009
1284
  end
1010
1285
 
1011
1286
  def test_timeseries_timestep_10min
1012
1287
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-timestep-10-mins.xml'),
1288
+ 'skip_validation' => true,
1013
1289
  'timeseries_frequency' => 'timestep',
1014
1290
  'include_timeseries_fuel_consumptions' => true }
1015
1291
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -1029,6 +1305,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1029
1305
 
1030
1306
  expected_values.each do |timeseries_frequency, expected_value|
1031
1307
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-runperiod-1-month.xml'),
1308
+ 'skip_validation' => true,
1032
1309
  'timeseries_frequency' => timeseries_frequency,
1033
1310
  'include_timeseries_fuel_consumptions' => true }
1034
1311
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -1045,6 +1322,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1045
1322
 
1046
1323
  def test_timeseries_hourly_AMY_2012
1047
1324
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-location-AMY-2012.xml'),
1325
+ 'skip_validation' => true,
1048
1326
  'timeseries_frequency' => 'hourly',
1049
1327
  'include_timeseries_fuel_consumptions' => true }
1050
1328
  annual_csv, timeseries_csv = _test_measure(args_hash)
@@ -1065,6 +1343,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1065
1343
 
1066
1344
  expected_values_array.each do |timeseries_frequency, expected_values|
1067
1345
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-timestep-30-mins.xml'),
1346
+ 'skip_validation' => true,
1068
1347
  'timeseries_frequency' => timeseries_frequency,
1069
1348
  'include_timeseries_fuel_consumptions' => true,
1070
1349
  'timeseries_timestamp_convention' => 'end' }
@@ -1088,6 +1367,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1088
1367
 
1089
1368
  def test_timeseries_for_dview
1090
1369
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1370
+ 'skip_validation' => true,
1091
1371
  'output_format' => 'csv_dview',
1092
1372
  'timeseries_frequency' => 'timestep',
1093
1373
  'include_timeseries_fuel_consumptions' => true,
@@ -1112,6 +1392,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1112
1392
 
1113
1393
  def test_timeseries_local_time_dst
1114
1394
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1395
+ 'skip_validation' => true,
1115
1396
  'timeseries_frequency' => 'timestep',
1116
1397
  'include_timeseries_fuel_consumptions' => true,
1117
1398
  'add_timeseries_dst_column' => true }
@@ -1129,6 +1410,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1129
1410
 
1130
1411
  def test_timeseries_local_time_utc
1131
1412
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1413
+ 'skip_validation' => true,
1132
1414
  'timeseries_frequency' => 'timestep',
1133
1415
  'include_timeseries_fuel_consumptions' => true,
1134
1416
  'add_timeseries_utc_column' => true }
@@ -1146,6 +1428,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1146
1428
 
1147
1429
  def test_timeseries_local_time_dst_and_utc
1148
1430
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1431
+ 'skip_validation' => true,
1149
1432
  'timeseries_frequency' => 'timestep',
1150
1433
  'include_timeseries_fuel_consumptions' => true,
1151
1434
  'add_timeseries_dst_column' => true,
@@ -1166,19 +1449,8 @@ class ReportSimulationOutputTest < MiniTest::Test
1166
1449
 
1167
1450
  def test_timeseries_user_defined_standard_output_variables
1168
1451
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1452
+ 'skip_validation' => true,
1169
1453
  'timeseries_frequency' => 'hourly',
1170
- 'include_timeseries_fuel_consumptions' => false,
1171
- 'include_timeseries_end_use_consumptions' => false,
1172
- 'include_timeseries_emissions' => false,
1173
- 'include_timeseries_emission_fuels' => false,
1174
- 'include_timeseries_emission_end_uses' => false,
1175
- 'include_timeseries_hot_water_uses' => false,
1176
- 'include_timeseries_total_loads' => false,
1177
- 'include_timeseries_unmet_hours' => false,
1178
- 'include_timeseries_component_loads' => false,
1179
- 'include_timeseries_zone_temperatures' => false,
1180
- 'include_timeseries_airflows' => false,
1181
- 'include_timeseries_weather' => false,
1182
1454
  'user_output_variables' => 'Zone People Occupant Count, Zone People Total Heating Energy, Foo' }
1183
1455
  annual_csv, timeseries_csv, run_log = _test_measure(args_hash)
1184
1456
  assert(File.exist?(annual_csv))
@@ -1190,26 +1462,15 @@ class ReportSimulationOutputTest < MiniTest::Test
1190
1462
  assert_equal(8760, timeseries_rows.size - 2)
1191
1463
  timeseries_cols = timeseries_rows.transpose
1192
1464
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
1193
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsStandardOutputVariables)
1465
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsStandardOutputVariables)
1194
1466
  assert(File.readlines(run_log).any? { |line| line.include?("Request for output variable 'Foo'") })
1195
1467
  end
1196
1468
 
1197
1469
  def test_timeseries_user_defined_advanced_output_variables
1198
1470
  args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1471
+ 'skip_validation' => true,
1199
1472
  'add_component_loads' => true,
1200
1473
  'timeseries_frequency' => 'hourly',
1201
- 'include_timeseries_fuel_consumptions' => false,
1202
- 'include_timeseries_end_use_consumptions' => false,
1203
- 'include_timeseries_emissions' => false,
1204
- 'include_timeseries_emission_fuels' => false,
1205
- 'include_timeseries_emission_end_uses' => false,
1206
- 'include_timeseries_hot_water_uses' => false,
1207
- 'include_timeseries_total_loads' => false,
1208
- 'include_timeseries_unmet_hours' => false,
1209
- 'include_timeseries_component_loads' => false,
1210
- 'include_timeseries_zone_temperatures' => false,
1211
- 'include_timeseries_airflows' => false,
1212
- 'include_timeseries_weather' => false,
1213
1474
  'user_output_variables' => 'Surface Construction Index' }
1214
1475
  annual_csv, timeseries_csv = _test_measure(args_hash)
1215
1476
  assert(File.exist?(annual_csv))
@@ -1221,17 +1482,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1221
1482
  assert_equal(8760, timeseries_rows.size - 2)
1222
1483
  timeseries_cols = timeseries_rows.transpose
1223
1484
  assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
1224
- _check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsAdvancedOutputVariables)
1225
- end
1226
-
1227
- def test_eri_output
1228
- args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
1229
- 'generate_eri_outputs' => true }
1230
- annual_csv, timeseries_csv = _test_measure(args_hash)
1231
- assert(File.exist?(annual_csv))
1232
- assert(!File.exist?(timeseries_csv))
1233
- actual_annual_rows = File.readlines(annual_csv).map { |x| x.split(',')[0].strip }.select { |x| !x.empty? }
1234
- assert(actual_annual_rows.include? 'ERI: Building: CFA')
1485
+ _check_for_nonzero_avg_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsAdvancedOutputVariables)
1235
1486
  end
1236
1487
 
1237
1488
  def test_for_unsuccessful_simulation_infinity
@@ -1241,7 +1492,8 @@ class ReportSimulationOutputTest < MiniTest::Test
1241
1492
  hpxml.heating_systems[0].heating_efficiency_afue = 10.0**-315
1242
1493
  XMLHelper.write_file(hpxml.to_oga(), @tmp_hpxml_path)
1243
1494
 
1244
- args_hash = { 'hpxml_path' => @tmp_hpxml_path }
1495
+ args_hash = { 'hpxml_path' => @tmp_hpxml_path,
1496
+ 'skip_validation' => true, }
1245
1497
  annual_csv, timeseries_csv, run_log = _test_measure(args_hash, expect_success: false)
1246
1498
  assert(!File.exist?(annual_csv))
1247
1499
  assert(!File.exist?(timeseries_csv))
@@ -1310,7 +1562,7 @@ class ReportSimulationOutputTest < MiniTest::Test
1310
1562
  return steps.uniq.size
1311
1563
  end
1312
1564
 
1313
- def _check_for_nonzero_timeseries_value(timeseries_csv, timeseries_cols)
1565
+ def _get_values(timeseries_csv, timeseries_cols)
1314
1566
  values = {}
1315
1567
  timeseries_cols.each do |col|
1316
1568
  values[col] = []
@@ -1324,27 +1576,30 @@ class ReportSimulationOutputTest < MiniTest::Test
1324
1576
  values[col] << Float(row[col])
1325
1577
  end
1326
1578
  end
1579
+ return values
1580
+ end
1581
+
1582
+ def _check_for_nonzero_avg_timeseries_value(timeseries_csv, timeseries_cols)
1583
+ values = _get_values(timeseries_csv, timeseries_cols)
1584
+
1327
1585
  timeseries_cols.each do |col|
1328
1586
  avg_value = values[col].sum(0.0) / values[col].size
1329
1587
  assert_operator(avg_value, :!=, 0)
1330
1588
  end
1331
1589
  end
1332
1590
 
1333
- def _check_for_zero_baseload_timeseries_value(timeseries_csv, timeseries_cols)
1334
- # check that every day has non zero values for baseload equipment (e.g., refrigerator)
1335
- values = {}
1591
+ def _check_for_zero_timeseries_values(timeseries_csv, timeseries_cols, start_ix, end_ix)
1592
+ values = _get_values(timeseries_csv, timeseries_cols)
1593
+
1336
1594
  timeseries_cols.each do |col|
1337
- values[col] = []
1595
+ has_only_zero_timeseries_values = values[col][start_ix..end_ix].all? { |x| x == 0 }
1596
+ assert(has_only_zero_timeseries_values)
1338
1597
  end
1339
- CSV.foreach(timeseries_csv, headers: true) do |row|
1340
- next if row['Time'].nil?
1341
-
1342
- timeseries_cols.each do |col|
1343
- fail "Unexpected column: #{col}." if row[col].nil?
1598
+ end
1344
1599
 
1345
- values[col] << Float(row[col])
1346
- end
1347
- end
1600
+ def _check_for_nonzero_timeseries_values(timeseries_csv, timeseries_cols)
1601
+ # check that every day has non zero values for baseload equipment (e.g., refrigerator)
1602
+ values = _get_values(timeseries_csv, timeseries_cols)
1348
1603
 
1349
1604
  timeseries_cols.each do |col|
1350
1605
  has_no_zero_timeseries_value = !values[col].include?(0.0)