urbanopt-cli 0.9.3 → 0.10.0

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