urbanopt-cli 0.6.2 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1061) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +32 -0
  4. data/CMakeLists.txt +23 -23
  5. data/FindOpenStudioSDK.cmake +6 -6
  6. data/Gemfile +5 -5
  7. data/example_files/Gemfile +10 -7
  8. data/example_files/base_workflow_res.osw +10 -0
  9. data/example_files/example_project_combined.json +13 -3
  10. data/example_files/example_project_with_PV.json +751 -0
  11. data/example_files/mappers/Baseline.rb +51 -30
  12. data/example_files/mappers/CreateBar.rb +37 -0
  13. data/example_files/mappers/FlexibleHotWater.rb +69 -0
  14. data/example_files/mappers/Floorspace.rb +30 -0
  15. data/example_files/mappers/HighEfficiency.rb +5 -4
  16. data/example_files/mappers/base_workflow.osw +5 -0
  17. data/example_files/mappers/createbar_workflow.osw +3 -1
  18. data/example_files/mappers/floorspace_workflow.osw +2 -1
  19. data/example_files/measures/BuildResidentialModel/measure.rb +109 -76
  20. data/example_files/osm_building/7.osm +0 -307
  21. data/example_files/osm_building/8.osm +0 -419
  22. data/example_files/osm_building/9.osm +0 -664
  23. data/example_files/reopt/base_assumptions.json +3 -3
  24. data/example_files/reopt/multiPV_assumptions.json +2 -2
  25. data/example_files/residential/enclosure.tsv +102 -102
  26. data/example_files/resources/hpxml-measures/.github/workflows/config.yml +22 -16
  27. data/example_files/resources/hpxml-measures/.gitignore +3 -7
  28. data/example_files/resources/hpxml-measures/.rubocop.yml +67 -8
  29. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +1752 -1455
  30. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +3229 -5431
  31. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +386 -553
  32. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +1075 -363
  33. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +212 -0
  34. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +898 -0
  35. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules.rb +109 -188
  36. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_README.md +0 -0
  37. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_dryer_power_consumption_dist.csv → BuildResidentialScheduleFile/resources/schedules_clothes_dryer_consumption_dist.csv} +0 -0
  38. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_dryer_power_duration_dist.csv → BuildResidentialScheduleFile/resources/schedules_clothes_dryer_duration_dist.csv} +0 -0
  39. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_washer_power_consumption_dist.csv → BuildResidentialScheduleFile/resources/schedules_clothes_washer_consumption_dist.csv} +0 -0
  40. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_washer_power_duration_dist.csv → BuildResidentialScheduleFile/resources/schedules_clothes_washer_duration_dist.csv} +0 -0
  41. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_config.json +2 -2
  42. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_config.md +0 -0
  43. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_cooking_power_consumption_dist.csv → BuildResidentialScheduleFile/resources/schedules_cooking_consumption_dist.csv} +0 -0
  44. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_cooking_power_duration_dist.csv → BuildResidentialScheduleFile/resources/schedules_cooking_duration_dist.csv} +0 -0
  45. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_dishwasher_power_consumption_dist.csv → BuildResidentialScheduleFile/resources/schedules_dishwasher_consumption_dist.csv} +0 -0
  46. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_dishwasher_power_duration_dist.csv → BuildResidentialScheduleFile/resources/schedules_dishwasher_duration_dist.csv} +0 -0
  47. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_washer_cluster_size_probability.csv → BuildResidentialScheduleFile/resources/schedules_hot_water_clothes_washer_cluster_size_probability.csv} +0 -0
  48. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_clothes_washer_event_duration_probability.csv → BuildResidentialScheduleFile/resources/schedules_hot_water_clothes_washer_event_duration_probability.csv} +0 -0
  49. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_dishwasher_cluster_size_probability.csv → BuildResidentialScheduleFile/resources/schedules_hot_water_dishwasher_cluster_size_probability.csv} +0 -0
  50. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML/resources/schedules_dishwasher_event_duration_probability.csv → BuildResidentialScheduleFile/resources/schedules_hot_water_dishwasher_event_duration_probability.csv} +0 -0
  51. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_shower_cluster_size_probability.csv +0 -0
  52. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_shower_event_duration_probability.csv +0 -0
  53. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_cooking_evening_duration_probability.csv +0 -0
  54. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_cooking_midday_duration_probability.csv +0 -0
  55. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_cooking_morning_duration_probability.csv +0 -0
  56. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_evening_duration_probability.csv +0 -0
  57. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_midday_duration_probability.csv +0 -0
  58. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_dishwashing_morning_duration_probability.csv +0 -0
  59. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_laundry_evening_duration_probability.csv +0 -0
  60. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_laundry_midday_duration_probability.csv +0 -0
  61. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_laundry_morning_duration_probability.csv +0 -0
  62. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_shower_evening_duration_probability.csv +0 -0
  63. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_shower_midday_duration_probability.csv +0 -0
  64. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_0_shower_morning_duration_probability.csv +0 -0
  65. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_cooking_evening_duration_probability.csv +0 -0
  66. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_cooking_midday_duration_probability.csv +0 -0
  67. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_cooking_morning_duration_probability.csv +0 -0
  68. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_evening_duration_probability.csv +0 -0
  69. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_midday_duration_probability.csv +0 -0
  70. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_dishwashing_morning_duration_probability.csv +0 -0
  71. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_laundry_evening_duration_probability.csv +0 -0
  72. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_laundry_midday_duration_probability.csv +0 -0
  73. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_laundry_morning_duration_probability.csv +0 -0
  74. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_shower_evening_duration_probability.csv +0 -0
  75. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_shower_midday_duration_probability.csv +0 -0
  76. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_1_shower_morning_duration_probability.csv +0 -0
  77. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_cooking_evening_duration_probability.csv +0 -0
  78. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_cooking_midday_duration_probability.csv +0 -0
  79. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_cooking_morning_duration_probability.csv +0 -0
  80. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_evening_duration_probability.csv +0 -0
  81. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_midday_duration_probability.csv +0 -0
  82. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_dishwashing_morning_duration_probability.csv +0 -0
  83. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_laundry_evening_duration_probability.csv +0 -0
  84. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_laundry_midday_duration_probability.csv +0 -0
  85. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_laundry_morning_duration_probability.csv +0 -0
  86. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_shower_evening_duration_probability.csv +0 -0
  87. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_shower_midday_duration_probability.csv +0 -0
  88. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_2_shower_morning_duration_probability.csv +0 -0
  89. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_cooking_evening_duration_probability.csv +0 -0
  90. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_cooking_midday_duration_probability.csv +0 -0
  91. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_cooking_morning_duration_probability.csv +0 -0
  92. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_evening_duration_probability.csv +0 -0
  93. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_midday_duration_probability.csv +0 -0
  94. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_dishwashing_morning_duration_probability.csv +0 -0
  95. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_laundry_evening_duration_probability.csv +0 -0
  96. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_laundry_midday_duration_probability.csv +0 -0
  97. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_laundry_morning_duration_probability.csv +0 -0
  98. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_shower_evening_duration_probability.csv +0 -0
  99. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_shower_midday_duration_probability.csv +0 -0
  100. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_duration_probability_cluster_3_shower_morning_duration_probability.csv +0 -0
  101. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_initial_prob_cluster_0.csv +0 -0
  102. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_initial_prob_cluster_1.csv +0 -0
  103. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_initial_prob_cluster_2.csv +0 -0
  104. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_initial_prob_cluster_3.csv +0 -0
  105. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_transition_prob_cluster_0.csv +0 -0
  106. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_transition_prob_cluster_1.csv +0 -0
  107. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_transition_prob_cluster_2.csv +0 -0
  108. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_mkv_chain_transition_prob_cluster_3.csv +0 -0
  109. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +0 -0
  110. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_cooking_evening_duration_probability.csv +0 -0
  111. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_cooking_midday_duration_probability.csv +0 -0
  112. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_cooking_morning_duration_probability.csv +0 -0
  113. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_evening_duration_probability.csv +0 -0
  114. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_midday_duration_probability.csv +0 -0
  115. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_dishwashing_morning_duration_probability.csv +0 -0
  116. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_laundry_evening_duration_probability.csv +0 -0
  117. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_laundry_midday_duration_probability.csv +0 -0
  118. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_laundry_morning_duration_probability.csv +0 -0
  119. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_shower_evening_duration_probability.csv +0 -0
  120. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_shower_midday_duration_probability.csv +0 -0
  121. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_0_shower_morning_duration_probability.csv +0 -0
  122. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_cooking_evening_duration_probability.csv +0 -0
  123. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_cooking_midday_duration_probability.csv +0 -0
  124. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_cooking_morning_duration_probability.csv +0 -0
  125. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_evening_duration_probability.csv +0 -0
  126. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_midday_duration_probability.csv +0 -0
  127. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_dishwashing_morning_duration_probability.csv +0 -0
  128. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_laundry_evening_duration_probability.csv +0 -0
  129. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_laundry_midday_duration_probability.csv +0 -0
  130. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_laundry_morning_duration_probability.csv +0 -0
  131. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_shower_evening_duration_probability.csv +0 -0
  132. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_shower_midday_duration_probability.csv +0 -0
  133. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_1_shower_morning_duration_probability.csv +0 -0
  134. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_cooking_evening_duration_probability.csv +0 -0
  135. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_cooking_midday_duration_probability.csv +0 -0
  136. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_cooking_morning_duration_probability.csv +0 -0
  137. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_evening_duration_probability.csv +0 -0
  138. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_midday_duration_probability.csv +0 -0
  139. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_dishwashing_morning_duration_probability.csv +0 -0
  140. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_laundry_evening_duration_probability.csv +0 -0
  141. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_laundry_midday_duration_probability.csv +0 -0
  142. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_laundry_morning_duration_probability.csv +0 -0
  143. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_shower_evening_duration_probability.csv +0 -0
  144. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_shower_midday_duration_probability.csv +0 -0
  145. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_2_shower_morning_duration_probability.csv +0 -0
  146. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_cooking_evening_duration_probability.csv +0 -0
  147. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_cooking_midday_duration_probability.csv +0 -0
  148. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_cooking_morning_duration_probability.csv +0 -0
  149. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_evening_duration_probability.csv +0 -0
  150. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_midday_duration_probability.csv +0 -0
  151. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_dishwashing_morning_duration_probability.csv +0 -0
  152. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_laundry_evening_duration_probability.csv +0 -0
  153. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_laundry_midday_duration_probability.csv +0 -0
  154. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_laundry_morning_duration_probability.csv +0 -0
  155. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_shower_evening_duration_probability.csv +0 -0
  156. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_shower_midday_duration_probability.csv +0 -0
  157. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_duration_probability_cluster_3_shower_morning_duration_probability.csv +0 -0
  158. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_initial_prob_cluster_0.csv +0 -0
  159. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_initial_prob_cluster_1.csv +0 -0
  160. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_initial_prob_cluster_2.csv +0 -0
  161. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_initial_prob_cluster_3.csv +0 -0
  162. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_transition_prob_cluster_0.csv +0 -0
  163. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_transition_prob_cluster_1.csv +0 -0
  164. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_transition_prob_cluster_2.csv +0 -0
  165. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_mkv_chain_transition_prob_cluster_3.csv +0 -0
  166. data/example_files/resources/hpxml-measures/{BuildResidentialHPXML → BuildResidentialScheduleFile}/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +0 -0
  167. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +526 -0
  168. data/example_files/resources/hpxml-measures/Changelog.md +84 -8
  169. data/example_files/resources/hpxml-measures/Gemfile +3 -0
  170. data/example_files/resources/hpxml-measures/Gemfile.lock +3 -11
  171. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +387 -387
  172. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +167 -251
  173. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +275 -59
  174. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +471 -247
  175. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXML.xsd +1 -1
  176. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +171 -79
  177. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +155 -78
  178. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +188 -141
  179. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +83 -0
  180. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +99 -11
  181. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +558 -342
  182. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +2 -0
  183. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +64 -72
  184. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +96 -93
  185. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +965 -350
  186. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +887 -216
  187. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +664 -760
  188. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +306 -287
  189. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +20 -29
  190. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +0 -20
  191. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lu_hvac_equipment_efficiency.csv +493 -0
  192. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lu_water_heater_efficiency.csv +157 -0
  193. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/materials.rb +156 -108
  194. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +41 -3
  195. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +14 -2
  196. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +18 -18
  197. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +14 -7
  198. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/smooth.csv +8761 -0
  199. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/stochastic-vacancy.csv +8761 -0
  200. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/stochastic.csv +8761 -0
  201. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +431 -428
  202. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/validator.rb +21 -12
  203. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +3 -3
  204. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +245 -234
  205. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +10 -5
  206. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +19 -8
  207. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +44 -23
  208. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_battery.rb +241 -0
  209. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +1374 -297
  210. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +702 -55
  211. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +0 -1
  212. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
  213. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +238 -40
  214. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +2 -2
  215. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +0 -2
  216. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +186 -0
  217. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +955 -176
  218. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +47 -61
  219. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +1 -1
  220. data/example_files/resources/hpxml-measures/LICENSE.md +1 -1
  221. data/example_files/resources/hpxml-measures/README.md +12 -9
  222. data/example_files/resources/hpxml-measures/Rakefile +1 -1
  223. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.rb +448 -0
  224. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.xml +81 -0
  225. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/resources/constants.rb +71 -0
  226. data/example_files/resources/hpxml-measures/ReportHPXMLOutput/tests/hpxml_output_report_test.rb +232 -0
  227. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +1977 -0
  228. data/example_files/resources/hpxml-measures/{SimulationOutputReport → ReportSimulationOutput}/measure.xml +682 -31
  229. data/example_files/resources/hpxml-measures/{SimulationOutputReport → ReportSimulationOutput}/resources/constants.rb +20 -2
  230. data/example_files/resources/hpxml-measures/{SimulationOutputReport → ReportSimulationOutput}/tests/output_report_test.rb +83 -218
  231. data/example_files/resources/hpxml-measures/docs/source/index.rst +1 -2
  232. data/example_files/resources/hpxml-measures/docs/source/intro.rst +6 -3
  233. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +73 -0
  234. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +915 -494
  235. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +263 -111
  236. data/example_files/resources/hpxml-measures/tasks.rb +3830 -6981
  237. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +35 -0
  238. data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC.epw +8768 -0
  239. data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +25 -5
  240. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +102 -91
  241. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +93 -83
  242. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +93 -83
  243. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +93 -83
  244. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +93 -83
  245. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +102 -91
  246. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +103 -97
  247. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +96 -85
  248. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +102 -91
  249. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +102 -91
  250. data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +102 -91
  251. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +96 -125
  252. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +119 -104
  253. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +94 -89
  254. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +93 -83
  255. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +104 -95
  256. data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +104 -95
  257. data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-outside.xml +584 -0
  258. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +99 -68
  259. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +119 -79
  260. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +99 -68
  261. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +99 -68
  262. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +99 -68
  263. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +97 -66
  264. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +97 -66
  265. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +97 -66
  266. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +100 -69
  267. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +100 -69
  268. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +94 -65
  269. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +94 -65
  270. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +94 -65
  271. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +94 -65
  272. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +97 -68
  273. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +94 -65
  274. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +94 -65
  275. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +94 -65
  276. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +97 -68
  277. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +97 -68
  278. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +98 -67
  279. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +96 -64
  280. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +105 -84
  281. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +108 -77
  282. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +100 -69
  283. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +100 -69
  284. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +98 -67
  285. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +97 -66
  286. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +97 -66
  287. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +97 -66
  288. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-facility-type-surfaces.xml → base-bldgtype-single-family-attached-2stories.xml} +152 -167
  289. data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +124 -114
  290. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +102 -95
  291. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +102 -95
  292. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +102 -95
  293. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +104 -94
  294. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +105 -96
  295. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +102 -95
  296. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +102 -95
  297. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +102 -95
  298. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +104 -95
  299. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +102 -95
  300. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +102 -95
  301. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +102 -95
  302. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +104 -97
  303. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +102 -95
  304. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +104 -95
  305. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +104 -95
  306. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +104 -95
  307. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +102 -95
  308. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +104 -95
  309. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +108 -101
  310. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +96 -85
  311. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +104 -95
  312. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +104 -95
  313. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +104 -95
  314. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +104 -95
  315. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +104 -95
  316. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +106 -97
  317. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +106 -97
  318. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +106 -97
  319. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +106 -97
  320. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +106 -97
  321. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +106 -97
  322. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +104 -95
  323. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +105 -96
  324. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +104 -95
  325. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +574 -0
  326. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +105 -96
  327. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +104 -95
  328. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +104 -95
  329. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +105 -97
  330. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +106 -97
  331. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +106 -97
  332. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +104 -95
  333. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +104 -95
  334. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +104 -95
  335. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +104 -95
  336. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +104 -95
  337. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +104 -95
  338. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +104 -95
  339. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +106 -97
  340. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +106 -97
  341. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +104 -95
  342. data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +104 -95
  343. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +131 -119
  344. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +120 -99
  345. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +104 -95
  346. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +104 -95
  347. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +104 -95
  348. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +104 -95
  349. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +131 -118
  350. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +104 -95
  351. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +104 -95
  352. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +104 -95
  353. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +104 -95
  354. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +104 -95
  355. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +579 -0
  356. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +110 -101
  357. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +213 -95
  358. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-id.xml → base-enclosure-skylights-physical-properties.xml} +123 -105
  359. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +114 -105
  360. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +112 -103
  361. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +92 -82
  362. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +533 -547
  363. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +545 -559
  364. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/generator-output-greater-than-consumption.xml → base-enclosure-thermal-mass.xml} +117 -111
  365. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +239 -109
  366. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +88 -79
  367. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +584 -0
  368. data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +115 -106
  369. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +89 -79
  370. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +123 -110
  371. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +119 -172
  372. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +104 -95
  373. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +107 -95
  374. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +572 -0
  375. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +119 -128
  376. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +92 -82
  377. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +117 -110
  378. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +106 -91
  379. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +107 -98
  380. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +105 -97
  381. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +108 -98
  382. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +108 -98
  383. data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +115 -110
  384. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +101 -94
  385. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +103 -95
  386. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +104 -94
  387. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +104 -94
  388. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +590 -0
  389. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +589 -0
  390. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +104 -94
  391. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +104 -94
  392. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +105 -94
  393. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml +103 -93
  394. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +106 -93
  395. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml +103 -93
  396. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed.xml +106 -93
  397. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/hvac-invalid-distribution-system-type.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml} +587 -570
  398. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml +103 -93
  399. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed.xml +106 -93
  400. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +102 -95
  401. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +103 -94
  402. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +101 -94
  403. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +101 -94
  404. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +101 -94
  405. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +101 -94
  406. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +108 -95
  407. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml +106 -93
  408. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +106 -93
  409. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +99 -92
  410. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +103 -94
  411. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +99 -92
  412. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +102 -95
  413. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +104 -95
  414. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +104 -95
  415. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +101 -94
  416. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +103 -94
  417. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +104 -94
  418. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +105 -94
  419. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml +103 -93
  420. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump.xml +106 -93
  421. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +101 -94
  422. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +104 -94
  423. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +105 -94
  424. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml +103 -93
  425. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +106 -93
  426. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +541 -0
  427. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-relatedhvac-dhw-indirect.xml → base-hvac-autosize-ptac-with-heating.xml} +528 -517
  428. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/boiler-invalid-afue.xml → base-hvac-autosize-ptac.xml} +109 -113
  429. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp.xml +531 -0
  430. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +99 -92
  431. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +99 -92
  432. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +100 -93
  433. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +104 -95
  434. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +101 -94
  435. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +102 -95
  436. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +103 -94
  437. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +101 -94
  438. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +101 -94
  439. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +101 -94
  440. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +101 -94
  441. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +101 -94
  442. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +101 -94
  443. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +101 -94
  444. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +106 -96
  445. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +104 -95
  446. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +104 -94
  447. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +104 -94
  448. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +104 -94
  449. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +104 -94
  450. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +104 -94
  451. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/unattached-solar-thermal-system.xml → base-hvac-ducts-area-fractions.xml} +596 -577
  452. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml → base-hvac-ducts-leakage-cfm50.xml} +108 -106
  453. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +104 -95
  454. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +99 -92
  455. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +103 -94
  456. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +101 -94
  457. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +99 -92
  458. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +99 -92
  459. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +99 -92
  460. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +99 -92
  461. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +101 -94
  462. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +104 -95
  463. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +102 -95
  464. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +104 -95
  465. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +104 -95
  466. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +101 -94
  467. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +103 -94
  468. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +101 -94
  469. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +101 -94
  470. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +101 -94
  471. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +104 -95
  472. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +101 -94
  473. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +102 -94
  474. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +103 -93
  475. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml → base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml} +104 -94
  476. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml → base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml} +104 -94
  477. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml → base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml} +104 -94
  478. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml → base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml} +104 -95
  479. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml → base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml} +104 -95
  480. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml → base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml} +104 -95
  481. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-furnace-gas-only.xml → base-hvac-install-quality-furnace-gas-only.xml} +101 -94
  482. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-ground-to-air-heat-pump.xml → base-hvac-install-quality-ground-to-air-heat-pump.xml} +104 -94
  483. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml → base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml} +101 -94
  484. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml → base-hvac-install-quality-mini-split-heat-pump-ducted.xml} +104 -94
  485. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +101 -94
  486. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +99 -92
  487. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +101 -94
  488. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +103 -95
  489. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +104 -94
  490. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +542 -0
  491. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +101 -92
  492. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +124 -100
  493. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +94 -89
  494. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +99 -92
  495. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +104 -95
  496. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +104 -95
  497. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/cfis-with-hydronic-distribution.xml → base-hvac-ptac-with-heating.xml} +530 -532
  498. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/hvac-distribution-return-duct-leakage-missing.xml → base-hvac-ptac.xml} +515 -528
  499. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +531 -0
  500. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +99 -92
  501. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +516 -0
  502. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +99 -92
  503. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +584 -0
  504. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +104 -95
  505. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +99 -92
  506. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +99 -92
  507. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +104 -95
  508. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +104 -95
  509. data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +100 -93
  510. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +110 -96
  511. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +586 -0
  512. data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +95 -86
  513. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +104 -95
  514. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +108 -98
  515. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-foundation-wall-properties.xml → base-location-capetown-zaf.xml} +134 -127
  516. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +92 -82
  517. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +105 -98
  518. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +104 -95
  519. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +92 -82
  520. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +92 -82
  521. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +92 -82
  522. data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +108 -98
  523. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +106 -97
  524. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +106 -97
  525. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +107 -98
  526. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +104 -97
  527. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +107 -98
  528. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +106 -97
  529. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +106 -97
  530. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +105 -96
  531. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +106 -97
  532. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +106 -97
  533. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +106 -97
  534. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +141 -114
  535. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +106 -97
  536. data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +105 -96
  537. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +101 -101
  538. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +105 -96
  539. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +157 -112
  540. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +157 -112
  541. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +96 -87
  542. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +108 -99
  543. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +104 -95
  544. data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +113 -102
  545. data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +318 -291
  546. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +608 -0
  547. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/enclosure-garage-missing-roof-ceiling.xml → base-pv-battery-garage.xml} +678 -626
  548. data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/multifamily-reference-surface.xml → base-pv-battery-outside-degrades.xml} +610 -575
  549. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-outside.xml +608 -0
  550. data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +105 -96
  551. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml → base-schedules-detailed-smooth.xml} +105 -101
  552. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml → base-schedules-detailed-stochastic-vacancy.xml} +105 -98
  553. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml → base-schedules-detailed-stochastic.xml} +105 -101
  554. data/example_files/resources/hpxml-measures/workflow/sample_files/{base-lighting-detailed.xml → base-schedules-simple.xml} +625 -585
  555. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +104 -95
  556. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +104 -95
  557. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +104 -95
  558. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +104 -95
  559. data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +104 -95
  560. data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +104 -95
  561. data/example_files/resources/hpxml-measures/workflow/template-build-hpxml-and-stocastic-schedules.osw +129 -0
  562. data/example_files/resources/hpxml-measures/workflow/template-stochastic-schedules.osw +53 -0
  563. data/example_files/resources/hpxml-measures/workflow/template.osw +7 -2
  564. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +75 -44
  565. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +75 -44
  566. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +75 -44
  567. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +75 -44
  568. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +75 -44
  569. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +75 -44
  570. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +75 -44
  571. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +75 -44
  572. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +63 -32
  573. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +63 -32
  574. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +66 -35
  575. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +66 -35
  576. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +66 -35
  577. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +66 -35
  578. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +69 -38
  579. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +69 -38
  580. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +75 -44
  581. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +75 -44
  582. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +75 -44
  583. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +75 -44
  584. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +75 -44
  585. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +75 -44
  586. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +78 -47
  587. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +78 -47
  588. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +114 -103
  589. data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +126 -103
  590. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +321 -294
  591. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +26 -26
  592. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +320 -293
  593. data/example_files/resources/hpxml-measures/workflow/tests/compare.py +351 -0
  594. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +253 -260
  595. data/example_files/visualization/input_visualization_feature.html +14 -5
  596. data/example_files/visualization/input_visualization_scenario.html +12 -6
  597. data/example_files/weather/USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.ddy +17 -17
  598. data/lib/uo_cli/version.rb +1 -1
  599. data/lib/uo_cli.rb +66 -17
  600. data/uo_cli.gemspec +6 -6
  601. metadata +219 -639
  602. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -59
  603. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +0 -337
  604. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +0 -337
  605. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +0 -337
  606. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +0 -337
  607. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +0 -337
  608. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +0 -337
  609. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +0 -337
  610. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +0 -337
  611. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +0 -337
  612. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +0 -337
  613. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +0 -337
  614. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +0 -337
  615. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +0 -337
  616. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +0 -337
  617. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +0 -341
  618. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +0 -341
  619. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +0 -348
  620. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +0 -342
  621. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +0 -341
  622. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +0 -341
  623. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +0 -341
  624. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +0 -339
  625. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +0 -337
  626. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +0 -337
  627. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +0 -337
  628. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +0 -337
  629. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +0 -337
  630. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +0 -337
  631. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +0 -337
  632. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +0 -337
  633. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +0 -337
  634. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +0 -337
  635. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +0 -337
  636. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +0 -337
  637. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +0 -337
  638. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +0 -337
  639. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +0 -337
  640. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +0 -337
  641. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +0 -337
  642. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +0 -337
  643. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +0 -337
  644. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +0 -337
  645. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +0 -337
  646. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +0 -337
  647. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +0 -337
  648. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +0 -337
  649. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +0 -337
  650. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +0 -338
  651. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +0 -337
  652. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +0 -338
  653. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +0 -337
  654. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +0 -337
  655. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +0 -338
  656. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +0 -337
  657. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +0 -337
  658. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +0 -337
  659. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +0 -337
  660. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +0 -337
  661. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +0 -337
  662. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +0 -337
  663. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +0 -337
  664. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +0 -337
  665. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +0 -337
  666. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +0 -337
  667. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +0 -337
  668. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +0 -337
  669. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +0 -337
  670. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +0 -337
  671. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +0 -337
  672. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +0 -337
  673. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +0 -337
  674. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +0 -337
  675. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +0 -337
  676. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +0 -337
  677. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +0 -337
  678. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +0 -337
  679. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +0 -337
  680. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +0 -337
  681. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +0 -337
  682. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +0 -337
  683. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +0 -337
  684. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +0 -337
  685. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +0 -337
  686. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +0 -338
  687. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +0 -337
  688. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +0 -337
  689. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +0 -337
  690. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +0 -337
  691. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +0 -337
  692. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +0 -337
  693. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +0 -337
  694. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +0 -337
  695. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +0 -337
  696. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +0 -337
  697. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +0 -337
  698. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +0 -337
  699. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +0 -337
  700. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +0 -337
  701. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +0 -337
  702. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +0 -337
  703. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +0 -337
  704. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +0 -337
  705. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +0 -337
  706. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +0 -337
  707. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +0 -338
  708. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +0 -338
  709. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +0 -338
  710. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +0 -338
  711. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +0 -338
  712. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +0 -337
  713. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +0 -337
  714. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +0 -335
  715. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +0 -335
  716. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +0 -335
  717. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +0 -337
  718. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +0 -337
  719. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +0 -337
  720. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +0 -337
  721. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +0 -337
  722. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +0 -337
  723. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +0 -337
  724. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +0 -337
  725. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +0 -337
  726. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +0 -336
  727. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +0 -337
  728. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +0 -337
  729. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +0 -337
  730. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +0 -336
  731. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +0 -336
  732. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +0 -336
  733. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw +0 -339
  734. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +0 -339
  735. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +0 -339
  736. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +0 -339
  737. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +0 -340
  738. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +0 -340
  739. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +0 -340
  740. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +0 -338
  741. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +0 -338
  742. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +0 -338
  743. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +0 -339
  744. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +0 -338
  745. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +0 -340
  746. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +0 -336
  747. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +0 -336
  748. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +0 -337
  749. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +0 -337
  750. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +0 -337
  751. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +0 -337
  752. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +0 -337
  753. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +0 -337
  754. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +0 -337
  755. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +0 -336
  756. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +0 -336
  757. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +0 -337
  758. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +0 -337
  759. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +0 -337
  760. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +0 -337
  761. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +0 -337
  762. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +0 -337
  763. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +0 -337
  764. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +0 -337
  765. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +0 -337
  766. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +0 -337
  767. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +0 -337
  768. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +0 -337
  769. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +0 -337
  770. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +0 -337
  771. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +0 -337
  772. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +0 -337
  773. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +0 -337
  774. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +0 -345
  775. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +0 -335
  776. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +0 -337
  777. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +0 -337
  778. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +0 -337
  779. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +0 -337
  780. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +0 -337
  781. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +0 -337
  782. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +0 -337
  783. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +0 -337
  784. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +0 -337
  785. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +0 -324
  786. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +0 -337
  787. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +0 -337
  788. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +0 -337
  789. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +0 -337
  790. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +0 -337
  791. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +0 -337
  792. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic-vacant.osw +0 -341
  793. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +0 -337
  794. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +0 -338
  795. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +0 -338
  796. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +0 -342
  797. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +0 -338
  798. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +0 -341
  799. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +0 -337
  800. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +0 -337
  801. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +0 -337
  802. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +0 -341
  803. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +0 -341
  804. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +0 -341
  805. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +0 -341
  806. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +0 -341
  807. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +0 -341
  808. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +0 -341
  809. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +0 -341
  810. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +0 -341
  811. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +0 -341
  812. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +0 -341
  813. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +0 -341
  814. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +0 -341
  815. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +0 -341
  816. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +0 -341
  817. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +0 -341
  818. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +0 -341
  819. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +0 -341
  820. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +0 -341
  821. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +0 -341
  822. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +0 -341
  823. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +0 -341
  824. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +0 -341
  825. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +0 -341
  826. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +0 -341
  827. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +0 -341
  828. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +0 -341
  829. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +0 -341
  830. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +0 -341
  831. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +0 -341
  832. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +0 -341
  833. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +0 -341
  834. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +0 -341
  835. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +0 -341
  836. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +0 -341
  837. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +0 -341
  838. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +0 -341
  839. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +0 -341
  840. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +0 -341
  841. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +0 -341
  842. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +0 -341
  843. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +0 -341
  844. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +0 -341
  845. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +0 -341
  846. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +0 -341
  847. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +0 -341
  848. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +0 -341
  849. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +0 -341
  850. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +0 -341
  851. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +0 -341
  852. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +0 -341
  853. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +0 -341
  854. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +0 -341
  855. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +0 -341
  856. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +0 -341
  857. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +0 -341
  858. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +0 -341
  859. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +0 -341
  860. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +0 -341
  861. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +0 -341
  862. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +0 -341
  863. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +0 -341
  864. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +0 -341
  865. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +0 -341
  866. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +0 -339
  867. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +0 -339
  868. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +0 -339
  869. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +0 -339
  870. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +0 -339
  871. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +0 -339
  872. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +0 -339
  873. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +0 -339
  874. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +0 -339
  875. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +0 -339
  876. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +0 -339
  877. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +0 -339
  878. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +0 -339
  879. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +0 -339
  880. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +0 -339
  881. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +0 -339
  882. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +0 -339
  883. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +0 -339
  884. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +0 -337
  885. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +0 -337
  886. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +0 -337
  887. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +0 -337
  888. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +0 -337
  889. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +0 -339
  890. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +0 -337
  891. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +0 -337
  892. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +0 -337
  893. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +0 -338
  894. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +0 -336
  895. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +0 -337
  896. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +0 -337
  897. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heating-system.osw +0 -337
  898. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +0 -337
  899. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heating-system.osw +0 -337
  900. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +0 -337
  901. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +0 -337
  902. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +0 -337
  903. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +0 -337
  904. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +0 -337
  905. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +0 -337
  906. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +0 -337
  907. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +0 -337
  908. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +0 -337
  909. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +0 -337
  910. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +0 -337
  911. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +0 -337
  912. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +0 -337
  913. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +0 -337
  914. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +0 -341
  915. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +0 -341
  916. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +0 -338
  917. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +0 -337
  918. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +0 -337
  919. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-tv-plug-loads.osw +0 -337
  920. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +0 -337
  921. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +0 -337
  922. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +0 -337
  923. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +0 -337
  924. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +0 -337
  925. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +0 -337
  926. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +0 -337
  927. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +0 -337
  928. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +0 -339
  929. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +0 -337
  930. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +0 -337
  931. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +0 -337
  932. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +0 -337
  933. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +0 -337
  934. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +0 -337
  935. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +0 -337
  936. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +0 -337
  937. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +0 -337
  938. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +0 -337
  939. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +0 -337
  940. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/stochastic.csv +0 -8761
  941. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/user-specified.csv +0 -8761
  942. data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +0 -8761
  943. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_bath_schedule_1bed.csv +0 -369
  944. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_bath_schedule_2bed.csv +0 -465
  945. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_bath_schedule_3bed.csv +0 -611
  946. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_bath_schedule_4bed.csv +0 -685
  947. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_bath_schedule_5bed.csv +0 -767
  948. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_clotheswasher_schedule_1bed.csv +0 -637
  949. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_clotheswasher_schedule_2bed.csv +0 -744
  950. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_clotheswasher_schedule_3bed.csv +0 -929
  951. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_clotheswasher_schedule_4bed.csv +0 -1044
  952. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_clotheswasher_schedule_5bed.csv +0 -1250
  953. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_dishwasher_schedule_1bed.csv +0 -754
  954. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_dishwasher_schedule_2bed.csv +0 -961
  955. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_dishwasher_schedule_3bed.csv +0 -1102
  956. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_dishwasher_schedule_4bed.csv +0 -1293
  957. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_dishwasher_schedule_5bed.csv +0 -1508
  958. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_fixtures_schedule_1bed.csv +0 -13097
  959. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_fixtures_schedule_2bed.csv +0 -15977
  960. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_fixtures_schedule_3bed.csv +0 -18624
  961. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_fixtures_schedule_4bed.csv +0 -22075
  962. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_fixtures_schedule_5bed.csv +0 -25005
  963. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data_hot_water_max_flows.csv +0 -6
  964. data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +0 -2444
  965. data/example_files/resources/hpxml-measures/docs/source/build_residential_hpxml.rst +0 -110
  966. data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +0 -57
  967. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +0 -564
  968. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +0 -564
  969. data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +0 -564
  970. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +0 -563
  971. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +0 -563
  972. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +0 -563
  973. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +0 -535
  974. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +0 -535
  975. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +0 -576
  976. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +0 -563
  977. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +0 -564
  978. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +0 -563
  979. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +0 -563
  980. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +0 -563
  981. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +0 -563
  982. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +0 -563
  983. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +0 -563
  984. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +0 -547
  985. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +0 -544
  986. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +0 -547
  987. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +0 -563
  988. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +0 -448
  989. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +0 -614
  990. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +0 -611
  991. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +0 -551
  992. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +0 -473
  993. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +0 -489
  994. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +0 -760
  995. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +0 -759
  996. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +0 -761
  997. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +0 -759
  998. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +0 -563
  999. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +0 -460
  1000. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +0 -560
  1001. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +0 -921
  1002. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +0 -921
  1003. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +0 -547
  1004. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +0 -547
  1005. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +0 -921
  1006. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +0 -569
  1007. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +0 -407
  1008. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +0 -563
  1009. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +0 -563
  1010. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +0 -563
  1011. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +0 -563
  1012. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +0 -570
  1013. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +0 -563
  1014. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +0 -563
  1015. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +0 -466
  1016. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +0 -591
  1017. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +0 -563
  1018. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +0 -565
  1019. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +0 -576
  1020. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +0 -465
  1021. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +0 -563
  1022. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +0 -451
  1023. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +0 -551
  1024. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +0 -565
  1025. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +0 -563
  1026. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +0 -473
  1027. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +0 -563
  1028. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +0 -583
  1029. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +0 -563
  1030. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +0 -917
  1031. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +0 -561
  1032. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +0 -563
  1033. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +0 -563
  1034. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +0 -563
  1035. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +0 -1657
  1036. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +0 -1657
  1037. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-cooling-systems.xml +0 -432
  1038. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +0 -434
  1039. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +0 -591
  1040. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +0 -563
  1041. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +0 -563
  1042. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +0 -547
  1043. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +0 -563
  1044. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +0 -569
  1045. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +0 -569
  1046. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +0 -564
  1047. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +0 -527
  1048. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +0 -571
  1049. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +0 -532
  1050. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +0 -566
  1051. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +0 -532
  1052. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +0 -576
  1053. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +0 -563
  1054. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +0 -563
  1055. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +0 -466
  1056. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +0 -466
  1057. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +0 -591
  1058. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +0 -563
  1059. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +0 -563
  1060. data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +0 -563
  1061. data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +0 -130
@@ -5,416 +5,1128 @@ require 'openstudio/ruleset/ShowRunnerOutput'
5
5
  require 'minitest/autorun'
6
6
  require_relative '../measure.rb'
7
7
  require 'fileutils'
8
- require_relative '../../HPXMLtoOpenStudio/resources/meta_measure'
9
- require_relative '../../HPXMLtoOpenStudio/resources/hpxml'
10
8
 
11
9
  class BuildResidentialHPXMLTest < MiniTest::Test
12
10
  def test_workflows
13
- require 'json'
11
+ # Extra buildings that don't correspond with sample files
12
+ hpxmls_files = {
13
+ # Base files to derive from
14
+ 'base-sfd.xml' => nil,
15
+ 'base-sfa.xml' => 'base-sfd.xml',
16
+ 'base-mf.xml' => 'base-sfd.xml',
14
17
 
15
- this_dir = File.dirname(__FILE__)
18
+ # Extra files to test
19
+ 'extra-auto.xml' => 'base-sfd.xml',
20
+ 'extra-pv-roofpitch.xml' => 'base-sfd.xml',
21
+ 'extra-dhw-solar-latitude.xml' => 'base-sfd.xml',
22
+ 'extra-second-refrigerator.xml' => 'base-sfd.xml',
23
+ 'extra-second-heating-system-portable-heater-to-heating-system.xml' => 'base-sfd.xml',
24
+ 'extra-second-heating-system-fireplace-to-heating-system.xml' => 'base-sfd.xml',
25
+ 'extra-second-heating-system-boiler-to-heating-system.xml' => 'base-sfd.xml',
26
+ 'extra-second-heating-system-portable-heater-to-heat-pump.xml' => 'base-sfd.xml',
27
+ 'extra-second-heating-system-fireplace-to-heat-pump.xml' => 'base-sfd.xml',
28
+ 'extra-second-heating-system-boiler-to-heat-pump.xml' => 'base-sfd.xml',
29
+ 'extra-enclosure-windows-shading.xml' => 'base-sfd.xml',
30
+ 'extra-enclosure-garage-partially-protruded.xml' => 'base-sfd.xml',
31
+ 'extra-enclosure-garage-atticroof-conditioned.xml' => 'base-sfd.xml',
32
+ 'extra-enclosure-atticroof-conditioned-eaves-gable.xml' => 'base-sfd.xml',
33
+ 'extra-enclosure-atticroof-conditioned-eaves-hip.xml' => 'extra-enclosure-atticroof-conditioned-eaves-gable.xml',
34
+ 'extra-zero-refrigerator-kwh.xml' => 'base-sfd.xml',
35
+ 'extra-zero-extra-refrigerator-kwh.xml' => 'base-sfd.xml',
36
+ 'extra-zero-freezer-kwh.xml' => 'base-sfd.xml',
37
+ 'extra-zero-clothes-washer-kwh.xml' => 'base-sfd.xml',
38
+ 'extra-zero-dishwasher-kwh.xml' => 'base-sfd.xml',
39
+ 'extra-sfa-atticroof-flat.xml' => 'base-sfa.xml',
40
+ 'extra-gas-pool-heater-with-zero-kwh.xml' => 'base-sfd.xml',
41
+ 'extra-gas-hot-tub-heater-with-zero-kwh.xml' => 'base-sfd.xml',
42
+ 'extra-no-rim-joists.xml' => 'base-sfd.xml',
43
+ 'extra-iecc-zone-different-than-epw.xml' => 'base-sfd.xml',
44
+ 'extra-state-code-different-than-epw.xml' => 'base-sfd.xml',
16
45
 
17
- test_dirs = [
18
- this_dir,
19
- ]
46
+ 'extra-sfa-atticroof-conditioned-eaves-gable.xml' => 'extra-sfa-slab.xml',
47
+ 'extra-sfa-atticroof-conditioned-eaves-hip.xml' => 'extra-sfa-atticroof-conditioned-eaves-gable.xml',
48
+ 'extra-mf-eaves.xml' => 'extra-mf-slab.xml',
20
49
 
21
- test_base = true
22
- test_extra = true
50
+ 'extra-sfa-slab.xml' => 'base-sfa.xml',
51
+ 'extra-sfa-vented-crawlspace.xml' => 'base-sfa.xml',
52
+ 'extra-sfa-unvented-crawlspace.xml' => 'base-sfa.xml',
53
+ 'extra-sfa-conditioned-crawlspace.xml' => 'base-sfa.xml',
54
+ 'extra-sfa-unconditioned-basement.xml' => 'base-sfa.xml',
23
55
 
24
- osws = []
25
- test_dirs.each do |test_dir|
26
- Dir["#{test_dir}/base*.osw"].sort.each do |osw|
27
- osws << File.absolute_path(osw) if test_base
28
- end
29
- Dir["#{test_dir}/extra*.osw"].sort.each do |osw|
30
- osws << File.absolute_path(osw) if test_extra
31
- end
32
- end
33
-
34
- workflow_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../workflow/sample_files'))
35
- tests_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../BuildResidentialHPXML/tests'))
36
- built_dir = File.join(tests_dir, 'built_residential_hpxml')
37
- unless Dir.exist?(built_dir)
38
- Dir.mkdir(built_dir)
39
- end
40
-
41
- puts "Running #{osws.size} OSW files..."
42
- measures = {}
43
- fail = false
44
- osws.each do |osw|
45
- puts "\nTesting #{File.basename(osw)}..."
46
-
47
- _setup(tests_dir)
48
- osw_hash = JSON.parse(File.read(osw))
49
- measures_dir = File.join(File.dirname(__FILE__), osw_hash['measure_paths'][0])
50
- osw_hash['steps'].each do |step|
51
- measures[step['measure_dir_name']] = [step['arguments']]
52
- model = OpenStudio::Model::Model.new
53
- runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
54
-
55
- # Apply measure
56
- success = apply_measures(measures_dir, measures, runner, model)
57
-
58
- # Report warnings/errors
59
- runner.result.stepWarnings.each do |s|
60
- puts "Warning: #{s}"
61
- end
62
- runner.result.stepErrors.each do |s|
63
- puts "Error: #{s}"
64
- end
56
+ 'extra-sfa-rear-units.xml' => 'base-sfa.xml',
57
+ 'extra-sfa-exterior-corridor.xml' => 'base-sfa.xml',
65
58
 
66
- assert(success)
59
+ 'extra-sfa-slab-middle.xml' => 'extra-sfa-slab.xml',
60
+ 'extra-sfa-slab-right.xml' => 'extra-sfa-slab.xml',
61
+ 'extra-sfa-vented-crawlspace-middle.xml' => 'extra-sfa-vented-crawlspace.xml',
62
+ 'extra-sfa-vented-crawlspace-right.xml' => 'extra-sfa-vented-crawlspace.xml',
63
+ 'extra-sfa-unvented-crawlspace-middle.xml' => 'extra-sfa-unvented-crawlspace.xml',
64
+ 'extra-sfa-unvented-crawlspace-right.xml' => 'extra-sfa-unvented-crawlspace.xml',
65
+ 'extra-sfa-unconditioned-basement-middle.xml' => 'extra-sfa-unconditioned-basement.xml',
66
+ 'extra-sfa-unconditioned-basement-right.xml' => 'extra-sfa-unconditioned-basement.xml',
67
67
 
68
- if File.basename(osw).start_with? 'extra-'
69
- next # No corresponding sample file
70
- end
68
+ 'extra-mf-slab.xml' => 'base-mf.xml',
69
+ 'extra-mf-vented-crawlspace.xml' => 'base-mf.xml',
70
+ 'extra-mf-unvented-crawlspace.xml' => 'base-mf.xml',
71
71
 
72
- # Compare the hpxml to the manually created one
73
- test_dir = File.basename(File.dirname(osw))
74
- hpxml_path = step['arguments']['hpxml_path']
75
- begin
76
- _check_hpxmls(workflow_dir, built_dir, test_dir, hpxml_path)
77
- rescue Exception => e
78
- puts "#{e}\n#{e.backtrace.join('\n')}"
79
- fail = true
80
- end
81
- end
82
- break if fail # FIXME: Temporary
83
- end
72
+ 'extra-mf-rear-units.xml' => 'base-mf.xml',
73
+ 'extra-mf-exterior-corridor.xml' => 'base-mf.xml',
84
74
 
85
- assert false if fail
86
- end
75
+ 'extra-mf-slab-left-bottom.xml' => 'extra-mf-slab.xml',
76
+ 'extra-mf-slab-left-middle.xml' => 'extra-mf-slab.xml',
77
+ 'extra-mf-slab-left-top.xml' => 'extra-mf-slab.xml',
78
+ 'extra-mf-slab-middle-bottom.xml' => 'extra-mf-slab.xml',
79
+ 'extra-mf-slab-middle-middle.xml' => 'extra-mf-slab.xml',
80
+ 'extra-mf-slab-middle-top.xml' => 'extra-mf-slab.xml',
81
+ 'extra-mf-slab-right-bottom.xml' => 'extra-mf-slab.xml',
82
+ 'extra-mf-slab-right-middle.xml' => 'extra-mf-slab.xml',
83
+ 'extra-mf-slab-right-top.xml' => 'extra-mf-slab.xml',
84
+ 'extra-mf-vented-crawlspace-left-bottom.xml' => 'extra-mf-vented-crawlspace.xml',
85
+ 'extra-mf-vented-crawlspace-left-middle.xml' => 'extra-mf-vented-crawlspace.xml',
86
+ 'extra-mf-vented-crawlspace-left-top.xml' => 'extra-mf-vented-crawlspace.xml',
87
+ 'extra-mf-vented-crawlspace-middle-bottom.xml' => 'extra-mf-vented-crawlspace.xml',
88
+ 'extra-mf-vented-crawlspace-middle-middle.xml' => 'extra-mf-vented-crawlspace.xml',
89
+ 'extra-mf-vented-crawlspace-middle-top.xml' => 'extra-mf-vented-crawlspace.xml',
90
+ 'extra-mf-vented-crawlspace-right-bottom.xml' => 'extra-mf-vented-crawlspace.xml',
91
+ 'extra-mf-vented-crawlspace-right-middle.xml' => 'extra-mf-vented-crawlspace.xml',
92
+ 'extra-mf-vented-crawlspace-right-top.xml' => 'extra-mf-vented-crawlspace.xml',
93
+ 'extra-mf-unvented-crawlspace-left-bottom.xml' => 'extra-mf-unvented-crawlspace.xml',
94
+ 'extra-mf-unvented-crawlspace-left-middle.xml' => 'extra-mf-unvented-crawlspace.xml',
95
+ 'extra-mf-unvented-crawlspace-left-top.xml' => 'extra-mf-unvented-crawlspace.xml',
96
+ 'extra-mf-unvented-crawlspace-middle-bottom.xml' => 'extra-mf-unvented-crawlspace.xml',
97
+ 'extra-mf-unvented-crawlspace-middle-middle.xml' => 'extra-mf-unvented-crawlspace.xml',
98
+ 'extra-mf-unvented-crawlspace-middle-top.xml' => 'extra-mf-unvented-crawlspace.xml',
99
+ 'extra-mf-unvented-crawlspace-right-bottom.xml' => 'extra-mf-unvented-crawlspace.xml',
100
+ 'extra-mf-unvented-crawlspace-right-middle.xml' => 'extra-mf-unvented-crawlspace.xml',
101
+ 'extra-mf-unvented-crawlspace-right-top.xml' => 'extra-mf-unvented-crawlspace.xml',
87
102
 
88
- def test_invalid_workflows
89
- require 'json'
103
+ 'extra-mf-slab-rear-units.xml' => 'extra-mf-slab.xml',
104
+ 'extra-mf-vented-crawlspace-rear-units.xml' => 'extra-mf-vented-crawlspace.xml',
105
+ 'extra-mf-unvented-crawlspace-rear-units.xml' => 'extra-mf-unvented-crawlspace.xml',
106
+ 'extra-mf-slab-left-bottom-rear-units.xml' => 'extra-mf-slab-left-bottom.xml',
107
+ 'extra-mf-slab-left-middle-rear-units.xml' => 'extra-mf-slab-left-middle.xml',
108
+ 'extra-mf-slab-left-top-rear-units.xml' => 'extra-mf-slab-left-top.xml',
109
+ 'extra-mf-slab-middle-bottom-rear-units.xml' => 'extra-mf-slab-middle-bottom.xml',
110
+ 'extra-mf-slab-middle-middle-rear-units.xml' => 'extra-mf-slab-middle-middle.xml',
111
+ 'extra-mf-slab-middle-top-rear-units.xml' => 'extra-mf-slab-middle-top.xml',
112
+ 'extra-mf-slab-right-bottom-rear-units.xml' => 'extra-mf-slab-right-bottom.xml',
113
+ 'extra-mf-slab-right-middle-rear-units.xml' => 'extra-mf-slab-right-middle.xml',
114
+ 'extra-mf-slab-right-top-rear-units.xml' => 'extra-mf-slab-right-top.xml',
115
+ 'extra-mf-vented-crawlspace-left-bottom-rear-units.xml' => 'extra-mf-vented-crawlspace-left-bottom.xml',
116
+ 'extra-mf-vented-crawlspace-left-middle-rear-units.xml' => 'extra-mf-vented-crawlspace-left-middle.xml',
117
+ 'extra-mf-vented-crawlspace-left-top-rear-units.xml' => 'extra-mf-vented-crawlspace-left-top.xml',
118
+ 'extra-mf-vented-crawlspace-middle-bottom-rear-units.xml' => 'extra-mf-vented-crawlspace-middle-bottom.xml',
119
+ 'extra-mf-vented-crawlspace-middle-middle-rear-units.xml' => 'extra-mf-vented-crawlspace-middle-middle.xml',
120
+ 'extra-mf-vented-crawlspace-middle-top-rear-units.xml' => 'extra-mf-vented-crawlspace-middle-top.xml',
121
+ 'extra-mf-vented-crawlspace-right-bottom-rear-units.xml' => 'extra-mf-vented-crawlspace-right-bottom.xml',
122
+ 'extra-mf-vented-crawlspace-right-middle-rear-units.xml' => 'extra-mf-vented-crawlspace-right-middle.xml',
123
+ 'extra-mf-vented-crawlspace-right-top-rear-units.xml' => 'extra-mf-vented-crawlspace-right-top.xml',
124
+ 'extra-mf-unvented-crawlspace-left-bottom-rear-units.xml' => 'extra-mf-unvented-crawlspace-left-bottom.xml',
125
+ 'extra-mf-unvented-crawlspace-left-middle-rear-units.xml' => 'extra-mf-unvented-crawlspace-left-middle.xml',
126
+ 'extra-mf-unvented-crawlspace-left-top-rear-units.xml' => 'extra-mf-unvented-crawlspace-left-top.xml',
127
+ 'extra-mf-unvented-crawlspace-middle-bottom-rear-units.xml' => 'extra-mf-unvented-crawlspace-middle-bottom.xml',
128
+ 'extra-mf-unvented-crawlspace-middle-middle-rear-units.xml' => 'extra-mf-unvented-crawlspace-middle-middle.xml',
129
+ 'extra-mf-unvented-crawlspace-middle-top-rear-units.xml' => 'extra-mf-unvented-crawlspace-middle-top.xml',
130
+ 'extra-mf-unvented-crawlspace-right-bottom-rear-units.xml' => 'extra-mf-unvented-crawlspace-right-bottom.xml',
131
+ 'extra-mf-unvented-crawlspace-right-middle-rear-units.xml' => 'extra-mf-unvented-crawlspace-right-middle.xml',
132
+ 'extra-mf-unvented-crawlspace-right-top-rear-units.xml' => 'extra-mf-unvented-crawlspace-right-top.xml',
90
133
 
91
- this_dir = File.dirname(__FILE__)
134
+ 'error-heating-system-and-heat-pump.xml' => 'base-sfd.xml',
135
+ 'error-cooling-system-and-heat-pump.xml' => 'base-sfd.xml',
136
+ 'error-non-integer-geometry-num-bathrooms.xml' => 'base-sfd.xml',
137
+ 'error-non-integer-ceiling-fan-quantity.xml' => 'base-sfd.xml',
138
+ 'error-sfd-conditioned-basement-zero-foundation-height.xml' => 'base-sfd.xml',
139
+ 'error-sfd-adiabatic-walls.xml' => 'base-sfd.xml',
140
+ 'error-sfa-ambient.xml' => 'base-sfa.xml',
141
+ 'error-mf-bottom-crawlspace-zero-foundation-height.xml' => 'base-mf.xml',
142
+ 'error-ducts-location-and-areas-not-same-type.xml' => 'base-sfd.xml',
143
+ 'error-second-heating-system-serves-total-heat-load.xml' => 'base-sfd.xml',
144
+ 'error-second-heating-system-but-no-primary-heating.xml' => 'base-sfd.xml',
145
+ 'error-sfa-no-building-num-units.xml' => 'base-sfa.xml',
146
+ 'error-sfa-above-apartment.xml' => 'base-sfa.xml',
147
+ 'error-sfa-below-apartment.xml' => 'base-sfa.xml',
148
+ 'error-sfa-all-adiabatic-walls.xml' => 'base-sfa.xml',
149
+ 'error-mf-no-building-num-units.xml' => 'base-mf.xml',
150
+ 'error-mf-all-adiabatic-walls.xml' => 'base-mf.xml',
151
+ 'error-mf-two-stories.xml' => 'base-mf.xml',
152
+ 'error-dhw-indirect-without-boiler.xml' => 'base-sfd.xml',
153
+ 'error-foundation-wall-insulation-greater-than-height.xml' => 'base-sfd.xml',
154
+ 'error-conditioned-attic-with-one-floor-above-grade.xml' => 'base-sfd.xml',
155
+ 'error-zero-number-of-bedrooms.xml' => 'base-sfd.xml',
156
+ 'error-sfd-with-shared-system.xml' => 'base-sfd.xml',
157
+ 'error-rim-joist-height-but-no-assembly-r.xml' => 'base-sfd.xml',
158
+ 'error-rim-joist-assembly-r-but-no-height.xml' => 'base-sfd.xml',
92
159
 
93
- tests_dir = File.expand_path(File.join(File.dirname(__FILE__), '../../BuildResidentialHPXML/tests'))
94
- built_dir = File.join(tests_dir, 'built_residential_hpxml')
95
- unless Dir.exist?(built_dir)
96
- Dir.mkdir(built_dir)
97
- end
160
+ 'warning-non-electric-heat-pump-water-heater.xml' => 'base-sfd.xml',
161
+ 'warning-sfd-slab-non-zero-foundation-height.xml' => 'base-sfd.xml',
162
+ 'warning-mf-bottom-slab-non-zero-foundation-height.xml' => 'base-mf.xml',
163
+ 'warning-slab-non-zero-foundation-height-above-grade.xml' => 'base-sfd.xml',
164
+ 'warning-second-heating-system-serves-majority-heat.xml' => 'base-sfd.xml',
165
+ 'warning-vented-crawlspace-with-wall-and-ceiling-insulation.xml' => 'base-sfd.xml',
166
+ 'warning-unvented-crawlspace-with-wall-and-ceiling-insulation.xml' => 'base-sfd.xml',
167
+ 'warning-unconditioned-basement-with-wall-and-ceiling-insulation.xml' => 'base-sfd.xml',
168
+ 'warning-vented-attic-with-floor-and-roof-insulation.xml' => 'base-sfd.xml',
169
+ 'warning-unvented-attic-with-floor-and-roof-insulation.xml' => 'base-sfd.xml',
170
+ 'warning-conditioned-basement-with-ceiling-insulation.xml' => 'base-sfd.xml',
171
+ 'warning-conditioned-attic-with-floor-insulation.xml' => 'base-sfd.xml',
172
+ 'warning-multipliers-without-tv-plug-loads.xml' => 'base-sfd.xml',
173
+ 'warning-multipliers-without-other-plug-loads.xml' => 'base-sfd.xml',
174
+ 'warning-multipliers-without-well-pump-plug-loads.xml' => 'base-sfd.xml',
175
+ 'warning-multipliers-without-vehicle-plug-loads.xml' => 'base-sfd.xml',
176
+ 'warning-multipliers-without-fuel-loads.xml' => 'base-sfd.xml',
177
+ }
98
178
 
99
- expected_warning_msgs = {
100
- 'non-electric-heat-pump-water-heater.osw' => 'water_heater_type=heat pump water heater and water_heater_fuel_type=natural gas',
101
- 'single-family-detached-slab-non-zero-foundation-height.osw' => 'geometry_unit_type=single-family detached and geometry_foundation_type=SlabOnGrade and geometry_foundation_height=8.0',
102
- 'multifamily-bottom-slab-non-zero-foundation-height.osw' => 'geometry_unit_type=apartment unit and geometry_level=Bottom and geometry_foundation_type=SlabOnGrade and geometry_foundation_height=8.0',
103
- 'slab-non-zero-foundation-height-above-grade.osw' => 'geometry_foundation_type=SlabOnGrade and geometry_foundation_height_above_grade=1.0',
104
- 'second-heating-system-serves-majority-heat.osw' => 'heating_system_type_2=Fireplace and heating_system_fraction_heat_load_served_2=0.6',
105
- 'vented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'geometry_foundation_type=VentedCrawlspace and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=false and floor_assembly_r=10.0',
106
- 'unvented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'geometry_foundation_type=UnventedCrawlspace and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=false and floor_assembly_r=10.0',
107
- 'unconditioned-basement-with-wall-and-ceiling-insulation.osw' => 'geometry_foundation_type=UnconditionedBasement and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=false and floor_assembly_r=10.0',
108
- 'vented-attic-with-floor-and-roof-insulation.osw' => 'geometry_attic_type=VentedAttic and ceiling_assembly_r=39.3 and roof_assembly_r=10.0',
109
- 'unvented-attic-with-floor-and-roof-insulation.osw' => 'geometry_attic_type=UnventedAttic and ceiling_assembly_r=39.3 and roof_assembly_r=10.0',
110
- 'conditioned-basement-with-ceiling-insulation.osw' => 'geometry_foundation_type=ConditionedBasement and floor_assembly_r=10.0',
111
- 'conditioned-attic-with-floor-insulation.osw' => 'geometry_attic_type=ConditionedAttic and ceiling_assembly_r=39.3',
112
- 'multipliers-without-tv-plug-loads.osw' => 'plug_loads_television_annual_kwh=0.0 and plug_loads_television_usage_multiplier=1.0',
113
- 'multipliers-without-other-plug-loads.osw' => 'plug_loads_other_annual_kwh=0.0 and plug_loads_other_usage_multiplier=1.0',
114
- 'multipliers-without-well-pump-plug-loads.osw' => 'plug_loads_well_pump_annual_kwh=0.0 and plug_loads_well_pump_usage_multiplier=1.0',
115
- 'multipliers-without-vehicle-plug-loads.osw' => 'plug_loads_vehicle_annual_kwh=0.0 and plug_loads_vehicle_usage_multiplier=1.0',
116
- 'multipliers-without-fuel-loads.osw' => 'fuel_loads_grill_present=false and fuel_loads_grill_usage_multiplier=1.0 and fuel_loads_lighting_present=false and fuel_loads_lighting_usage_multiplier=1.0 and fuel_loads_fireplace_present=false and fuel_loads_fireplace_usage_multiplier=1.0'
179
+ expected_errors = {
180
+ 'error-heating-system-and-heat-pump.xml' => 'heating_system_type=Furnace and heat_pump_type=air-to-air',
181
+ 'error-cooling-system-and-heat-pump.xml' => 'cooling_system_type=central air conditioner and heat_pump_type=air-to-air',
182
+ 'error-non-integer-geometry-num-bathrooms.xml' => 'geometry_unit_num_bathrooms=1.5',
183
+ 'error-non-integer-ceiling-fan-quantity.xml' => 'ceiling_fan_quantity=0.5',
184
+ 'error-sfd-conditioned-basement-zero-foundation-height.xml' => 'geometry_unit_type=single-family detached and geometry_foundation_type=ConditionedBasement and geometry_foundation_height=0.0',
185
+ 'error-sfd-adiabatic-walls.xml' => 'No adiabatic surfaces can be applied to single-family detached homes',
186
+ 'error-sfa-ambient.xml' => 'geometry_unit_type=single-family attached and geometry_foundation_type=Ambient',
187
+ 'error-mf-conditioned-basement' => 'geometry_unit_type=apartment unit and geometry_foundation_type=ConditionedBasement',
188
+ 'error-mf-conditioned-crawlspace' => 'geometry_unit_type=apartment unit and geometry_foundation_type=ConditionedCrawlspace',
189
+ 'error-mf-bottom-crawlspace-zero-foundation-height.xml' => 'geometry_unit_type=apartment unit and geometry_foundation_type=UnventedCrawlspace and geometry_foundation_height=0.0',
190
+ 'error-ducts-location-and-areas-not-same-type.xml' => 'ducts_supply_location=auto and ducts_supply_surface_area=150.0 and ducts_return_location=attic - unvented and ducts_return_surface_area=50.0',
191
+ 'error-second-heating-system-serves-total-heat-load.xml' => 'heating_system_2_type=Fireplace and heating_system_2_fraction_heat_load_served=1.0',
192
+ 'error-second-heating-system-but-no-primary-heating.xml' => 'heating_system_type=none and heat_pump_type=none and heating_system_2_type=Fireplace',
193
+ 'error-sfa-no-building-num-units.xml' => 'geometry_unit_type=single-family attached and geometry_building_num_units=not provided',
194
+ 'error-sfa-above-apartment.xml' => 'Single-family attached buildings cannot be above another unit',
195
+ 'error-sfa-below-apartment.xml' => 'Single-family attached buildings cannot be below another unit',
196
+ 'error-sfa-all-adiabatic-walls.xml' => 'At least one wall must be set to non-adiabatic',
197
+ 'error-mf-no-building-num-units.xml' => 'geometry_unit_type=apartment unit and geometry_building_num_units=not provided',
198
+ 'error-mf-all-adiabatic-walls.xml' => 'At least one wall must be set to non-adiabatic',
199
+ 'error-mf-two-stories.xml' => 'Apartment units can only have one above grade floor',
200
+ 'error-dhw-indirect-without-boiler.xml' => 'water_heater_type=space-heating boiler with storage tank and heating_system_type=Furnace',
201
+ 'error-conditioned-attic-with-one-floor-above-grade.xml' => 'geometry_unit_num_floors_above_grade=1 and geometry_attic_type=ConditionedAttic',
202
+ 'error-zero-number-of-bedrooms.xml' => 'geometry_unit_num_bedrooms=0',
203
+ 'error-sfd-with-shared-system.xml' => 'geometry_unit_type=single-family detached and heating_system_type=Shared Boiler w/ Baseboard',
204
+ 'error-rim-joist-height-but-no-assembly-r.xml' => 'geometry_rim_joist_height=9.25 and rim_joist_assembly_r=not provided',
205
+ 'error-rim-joist-assembly-r-but-no-height.xml' => 'rim_joist_assembly_r=23.0 and geometry_rim_joist_height=not provided',
117
206
  }
118
207
 
119
- expected_error_msgs = {
120
- 'heating-system-and-heat-pump.osw' => 'heating_system_type=Furnace and heat_pump_type=air-to-air',
121
- 'cooling-system-and-heat-pump.osw' => 'cooling_system_type=central air conditioner and heat_pump_type=air-to-air',
122
- 'non-integer-geometry-num-bathrooms.osw' => 'geometry_num_bathrooms=1.5',
123
- 'non-integer-ceiling-fan-quantity.osw' => 'ceiling_fan_quantity=0.5',
124
- 'single-family-detached-finished-basement-zero-foundation-height.osw' => 'geometry_unit_type=single-family detached and geometry_foundation_type=ConditionedBasement and geometry_foundation_height=0.0',
125
- 'single-family-attached-ambient.osw' => 'geometry_unit_type=single-family attached and geometry_foundation_type=Ambient',
126
- 'multifamily-bottom-crawlspace-zero-foundation-height.osw' => 'geometry_unit_type=apartment unit and geometry_level=Bottom and geometry_foundation_type=UnventedCrawlspace and geometry_foundation_height=0.0',
127
- 'ducts-location-and-areas-not-same-type.osw' => 'ducts_supply_location=auto and ducts_supply_surface_area=150.0 and ducts_return_location=attic - unvented and ducts_return_surface_area=50.0',
128
- 'second-heating-system-serves-total-heat-load.osw' => 'heating_system_type_2=Fireplace and heating_system_fraction_heat_load_served_2=1.0',
129
- 'second-heating-system-but-no-primary-heating.osw' => 'heating_system_type=none and heat_pump_type=none and heating_system_type_2=Fireplace',
130
- 'single-family-attached-no-building-orientation.osw' => 'geometry_unit_type=single-family attached and geometry_building_num_units=false and geometry_horizontal_location=false',
131
- 'multifamily-no-building-orientation.osw' => 'geometry_unit_type=apartment unit and geometry_building_num_units=false and geometry_level=false and geometry_horizontal_location=false',
132
- 'dhw-indirect-without-boiler.osw' => 'water_heater_type=space-heating boiler with storage tank and heating_system_type=Furnace',
133
- 'foundation-wall-insulation-greater-than-height.osw' => 'foundation_wall_insulation_distance_to_bottom=6.0 and geometry_foundation_height=4.0',
134
- 'conditioned-attic-with-one-floor-above-grade.osw' => 'geometry_num_floors_above_grade=1 and geometry_attic_type=ConditionedAttic',
135
- 'zero-number-of-bedrooms.osw' => 'geometry_num_bedrooms=0',
136
- 'single-family-detached-with-shared-system.osw' => 'geometry_unit_type=single-family detached and heating_system_type=Shared Boiler w/ Baseboard'
208
+ expected_warnings = {
209
+ 'warning-non-electric-heat-pump-water-heater.xml' => 'water_heater_type=heat pump water heater and water_heater_fuel_type=natural gas',
210
+ 'warning-sfd-slab-non-zero-foundation-height.xml' => 'geometry_unit_type=single-family detached and geometry_foundation_type=SlabOnGrade and geometry_foundation_height=8.0',
211
+ 'warning-mf-bottom-slab-non-zero-foundation-height.xml' => 'geometry_unit_type=apartment unit and geometry_foundation_type=SlabOnGrade and geometry_foundation_height=8.0',
212
+ 'warning-slab-non-zero-foundation-height-above-grade.xml' => 'geometry_foundation_type=SlabOnGrade and geometry_foundation_height_above_grade=1.0',
213
+ 'warning-second-heating-system-serves-majority-heat.xml' => 'heating_system_2_type=Fireplace and heating_system_2_fraction_heat_load_served=0.6',
214
+ 'warning-vented-crawlspace-with-wall-and-ceiling-insulation.xml' => 'geometry_foundation_type=VentedCrawlspace and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=10.0 and floor_over_foundation_assembly_r=10.0',
215
+ 'warning-unvented-crawlspace-with-wall-and-ceiling-insulation.xml' => 'geometry_foundation_type=UnventedCrawlspace and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=10.0 and floor_over_foundation_assembly_r=10.0',
216
+ 'warning-unconditioned-basement-with-wall-and-ceiling-insulation.xml' => 'geometry_foundation_type=UnconditionedBasement and foundation_wall_insulation_r=8.9 and foundation_wall_assembly_r=10.0 and floor_over_foundation_assembly_r=10.0',
217
+ 'warning-vented-attic-with-floor-and-roof-insulation.xml' => 'geometry_attic_type=VentedAttic and ceiling_assembly_r=39.3 and roof_assembly_r=10.0',
218
+ 'warning-unvented-attic-with-floor-and-roof-insulation.xml' => 'geometry_attic_type=UnventedAttic and ceiling_assembly_r=39.3 and roof_assembly_r=10.0',
219
+ 'warning-conditioned-basement-with-ceiling-insulation.xml' => 'geometry_foundation_type=ConditionedBasement and floor_over_foundation_assembly_r=10.0',
220
+ 'warning-conditioned-attic-with-floor-insulation.xml' => 'geometry_attic_type=ConditionedAttic and ceiling_assembly_r=39.3',
221
+ 'warning-multipliers-without-tv-plug-loads.xml' => 'misc_plug_loads_television_annual_kwh=0.0 and misc_plug_loads_television_usage_multiplier=1.0',
222
+ 'warning-multipliers-without-other-plug-loads.xml' => 'misc_plug_loads_other_annual_kwh=0.0 and misc_plug_loads_other_usage_multiplier=1.0',
223
+ 'warning-multipliers-without-well-pump-plug-loads.xml' => 'misc_plug_loads_well_pump_annual_kwh=0.0 and misc_plug_loads_well_pump_usage_multiplier=1.0',
224
+ 'warning-multipliers-without-vehicle-plug-loads.xml' => 'misc_plug_loads_vehicle_annual_kwh=0.0 and misc_plug_loads_vehicle_usage_multiplier=1.0',
225
+ 'warning-multipliers-without-fuel-loads.xml' => 'misc_fuel_loads_grill_present=false and misc_fuel_loads_grill_usage_multiplier=1.0 and misc_fuel_loads_lighting_present=false and misc_fuel_loads_lighting_usage_multiplier=1.0 and misc_fuel_loads_fireplace_present=false and misc_fuel_loads_fireplace_usage_multiplier=1.0',
137
226
  }
138
227
 
139
- measures = {}
140
- Dir["#{this_dir}/invalid_files/*.osw"].sort.each do |osw|
141
- puts "\nTesting #{File.basename(osw)}..."
142
-
143
- _setup(this_dir)
144
- osw_hash = JSON.parse(File.read(osw))
145
- measures_dir = File.join(File.dirname(__FILE__), osw_hash['measure_paths'][0])
146
- osw_hash['steps'].each do |step|
147
- measures[step['measure_dir_name']] = [step['arguments']]
148
- model = OpenStudio::Model::Model.new
149
- runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
150
-
151
- # Apply measure
152
- success = apply_measures(measures_dir, measures, runner, model)
153
-
154
- # Report warnings/errors
155
- if Gem::Specification::find_all_by_name('nokogiri').any?
156
- assert(runner.result.stepWarnings.length > 0 || runner.result.stepErrors.length > 0)
157
- else
158
- assert(runner.result.stepWarnings.length > 1 || runner.result.stepErrors.length > 0)
159
- end
160
- runner.result.stepWarnings.each do |s|
161
- next if s.include? 'nokogiri'
228
+ hpxmls_files.each_with_index do |(hpxml_file, parent), i|
229
+ puts "[#{i + 1}/#{hpxmls_files.size}] Testing #{hpxml_file}..."
162
230
 
163
- puts "Warning: #{s}"
164
- assert_equal(s, expected_warning_msgs[File.basename(osw)])
231
+ begin
232
+ all_hpxml_files = [hpxml_file]
233
+ unless parent.nil?
234
+ all_hpxml_files.unshift(parent)
165
235
  end
166
- runner.result.stepErrors.each do |s|
167
- puts "Error: #{s}"
168
- assert_equal(s, expected_error_msgs[File.basename(osw)])
236
+ while not parent.nil?
237
+ next unless hpxmls_files.keys.include? parent
238
+
239
+ unless hpxmls_files[parent].nil?
240
+ all_hpxml_files.unshift(hpxmls_files[parent])
241
+ end
242
+ parent = hpxmls_files[parent]
169
243
  end
170
244
 
171
- if expected_error_msgs.include? File.basename(osw)
172
- assert(!success)
173
- else
174
- assert(success)
245
+ args = {}
246
+ all_hpxml_files.each do |f|
247
+ _set_measure_argument_values(f, args)
175
248
  end
249
+
250
+ File.delete(args['hpxml_path']) if File.exist? args['hpxml_path']
251
+ _test_measure(args, expected_errors[hpxml_file], expected_warnings[hpxml_file])
252
+ File.delete(args['hpxml_path']) if File.exist? args['hpxml_path']
253
+ rescue Exception => e
254
+ puts "\n#{e}\n#{e.backtrace.join('\n')}"
255
+ puts "\nError: Did not successfully generate #{hpxml_file}."
256
+ exit!
176
257
  end
177
258
  end
178
259
  end
179
260
 
180
261
  private
181
262
 
182
- def _check_hpxmls(workflow_dir, built_dir, test_dir, hpxml_path)
183
- if test_dir == 'tests'
184
- test_dir = ''
185
- end
263
+ def _set_measure_argument_values(hpxml_file, args)
264
+ args['hpxml_path'] = File.absolute_path(File.join(File.dirname(__FILE__), hpxml_file))
186
265
 
187
- hpxml_path = {
188
- 'Rakefile' => File.join(workflow_dir, test_dir, File.basename(hpxml_path)),
189
- 'BuildResidentialHPXML' => File.join(built_dir, File.basename(hpxml_path))
190
- }
266
+ # Base
267
+ if ['base-sfd.xml'].include? hpxml_file
268
+ args['simulation_control_timestep'] = 60
269
+ args['weather_station_epw_filepath'] = 'USA_CO_Denver.Intl.AP.725650_TMY3.epw'
270
+ args['site_type'] = HPXML::SiteTypeSuburban
271
+ args['geometry_unit_type'] = HPXML::ResidentialTypeSFD
272
+ args['geometry_unit_cfa'] = 2700.0
273
+ args['geometry_unit_num_floors_above_grade'] = 1
274
+ args['geometry_average_ceiling_height'] = 8.0
275
+ args['geometry_unit_orientation'] = 180.0
276
+ args['geometry_unit_aspect_ratio'] = 1.5
277
+ args['geometry_garage_width'] = 0.0
278
+ args['geometry_garage_depth'] = 20.0
279
+ args['geometry_garage_protrusion'] = 0.0
280
+ args['geometry_garage_position'] = 'Right'
281
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementConditioned
282
+ args['geometry_foundation_height'] = 8.0
283
+ args['geometry_foundation_height_above_grade'] = 1.0
284
+ args['geometry_rim_joist_height'] = 9.25
285
+ args['geometry_roof_type'] = 'gable'
286
+ args['geometry_roof_pitch'] = '6:12'
287
+ args['geometry_attic_type'] = HPXML::AtticTypeUnvented
288
+ args['geometry_eaves_depth'] = 0
289
+ args['geometry_unit_num_bedrooms'] = 3
290
+ args['geometry_unit_num_bathrooms'] = 2
291
+ args['geometry_unit_num_occupants'] = 3
292
+ args['geometry_has_flue_or_chimney'] = Constants.Auto
293
+ args['floor_over_foundation_assembly_r'] = 0
294
+ args['floor_over_garage_assembly_r'] = 0
295
+ args['foundation_wall_insulation_r'] = 8.9
296
+ args['foundation_wall_insulation_distance_to_top'] = 0.0
297
+ args['foundation_wall_insulation_distance_to_bottom'] = 8.0
298
+ args['foundation_wall_thickness'] = 8.0
299
+ args['rim_joist_assembly_r'] = 23.0
300
+ args['slab_perimeter_insulation_r'] = 0
301
+ args['slab_perimeter_depth'] = 0
302
+ args['slab_under_insulation_r'] = 0
303
+ args['slab_under_width'] = 0
304
+ args['slab_thickness'] = 4.0
305
+ args['slab_carpet_fraction'] = 0.0
306
+ args['slab_carpet_r'] = 0.0
307
+ args['ceiling_assembly_r'] = 39.3
308
+ args['roof_material_type'] = HPXML::RoofTypeAsphaltShingles
309
+ args['roof_color'] = HPXML::ColorMedium
310
+ args['roof_assembly_r'] = 2.3
311
+ args['roof_radiant_barrier'] = false
312
+ args['roof_radiant_barrier_grade'] = 1
313
+ args['neighbor_front_distance'] = 0
314
+ args['neighbor_back_distance'] = 0
315
+ args['neighbor_left_distance'] = 0
316
+ args['neighbor_right_distance'] = 0
317
+ args['neighbor_front_height'] = Constants.Auto
318
+ args['neighbor_back_height'] = Constants.Auto
319
+ args['neighbor_left_height'] = Constants.Auto
320
+ args['neighbor_right_height'] = Constants.Auto
321
+ args['wall_type'] = HPXML::WallTypeWoodStud
322
+ args['wall_siding_type'] = HPXML::SidingTypeWood
323
+ args['wall_color'] = HPXML::ColorMedium
324
+ args['wall_assembly_r'] = 23
325
+ args['window_front_wwr'] = 0
326
+ args['window_back_wwr'] = 0
327
+ args['window_left_wwr'] = 0
328
+ args['window_right_wwr'] = 0
329
+ args['window_area_front'] = 108.0
330
+ args['window_area_back'] = 108.0
331
+ args['window_area_left'] = 72.0
332
+ args['window_area_right'] = 72.0
333
+ args['window_aspect_ratio'] = 1.333
334
+ args['window_fraction_operable'] = 0.67
335
+ args['window_ufactor'] = 0.33
336
+ args['window_shgc'] = 0.45
337
+ args['window_interior_shading_winter'] = 0.85
338
+ args['window_interior_shading_summer'] = 0.7
339
+ args['overhangs_front_depth'] = 0
340
+ args['overhangs_back_depth'] = 0
341
+ args['overhangs_left_depth'] = 0
342
+ args['overhangs_right_depth'] = 0
343
+ args['overhangs_front_distance_to_top_of_window'] = 0
344
+ args['overhangs_back_distance_to_top_of_window'] = 0
345
+ args['overhangs_left_distance_to_top_of_window'] = 0
346
+ args['overhangs_right_distance_to_top_of_window'] = 0
347
+ args['overhangs_front_distance_to_bottom_of_window'] = 0
348
+ args['overhangs_back_distance_to_bottom_of_window'] = 0
349
+ args['overhangs_left_distance_to_bottom_of_window'] = 0
350
+ args['overhangs_right_distance_to_bottom_of_window'] = 0
351
+ args['skylight_area_front'] = 0
352
+ args['skylight_area_back'] = 0
353
+ args['skylight_area_left'] = 0
354
+ args['skylight_area_right'] = 0
355
+ args['skylight_ufactor'] = 0.33
356
+ args['skylight_shgc'] = 0.45
357
+ args['door_area'] = 40.0
358
+ args['door_rvalue'] = 4.4
359
+ args['air_leakage_units'] = HPXML::UnitsACH
360
+ args['air_leakage_house_pressure'] = 50
361
+ args['air_leakage_value'] = 3
362
+ args['site_shielding_of_home'] = Constants.Auto
363
+ args['heating_system_type'] = HPXML::HVACTypeFurnace
364
+ args['heating_system_fuel'] = HPXML::FuelTypeNaturalGas
365
+ args['heating_system_heating_efficiency'] = 0.92
366
+ args['heating_system_heating_capacity'] = 36000.0
367
+ args['heating_system_fraction_heat_load_served'] = 1
368
+ args['cooling_system_type'] = HPXML::HVACTypeCentralAirConditioner
369
+ args['cooling_system_cooling_efficiency_type'] = HPXML::UnitsSEER
370
+ args['cooling_system_cooling_efficiency'] = 13.0
371
+ args['cooling_system_cooling_compressor_type'] = HPXML::HVACCompressorTypeSingleStage
372
+ args['cooling_system_cooling_sensible_heat_fraction'] = 0.73
373
+ args['cooling_system_cooling_capacity'] = 24000.0
374
+ args['cooling_system_fraction_cool_load_served'] = 1
375
+ args['cooling_system_is_ducted'] = false
376
+ args['heat_pump_type'] = 'none'
377
+ args['heat_pump_heating_efficiency_type'] = HPXML::UnitsHSPF
378
+ args['heat_pump_heating_efficiency'] = 7.7
379
+ args['heat_pump_cooling_efficiency_type'] = HPXML::UnitsSEER
380
+ args['heat_pump_cooling_efficiency'] = 13.0
381
+ args['heat_pump_cooling_compressor_type'] = HPXML::HVACCompressorTypeSingleStage
382
+ args['heat_pump_cooling_sensible_heat_fraction'] = 0.73
383
+ args['heat_pump_heating_capacity'] = 36000.0
384
+ args['heat_pump_heating_capacity_17_f'] = Constants.Auto
385
+ args['heat_pump_cooling_capacity'] = 36000.0
386
+ args['heat_pump_fraction_heat_load_served'] = 1
387
+ args['heat_pump_fraction_cool_load_served'] = 1
388
+ args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated
389
+ args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity
390
+ args['heat_pump_backup_heating_efficiency'] = 1
391
+ args['heat_pump_backup_heating_capacity'] = 36000.0
392
+ args['hvac_control_type'] = HPXML::HVACControlTypeManual
393
+ args['hvac_control_heating_weekday_setpoint'] = 68
394
+ args['hvac_control_heating_weekend_setpoint'] = 68
395
+ args['hvac_control_cooling_weekday_setpoint'] = 78
396
+ args['hvac_control_cooling_weekend_setpoint'] = 78
397
+ args['ducts_leakage_units'] = HPXML::UnitsCFM25
398
+ args['ducts_supply_leakage_to_outside_value'] = 75.0
399
+ args['ducts_return_leakage_to_outside_value'] = 25.0
400
+ args['ducts_supply_insulation_r'] = 4.0
401
+ args['ducts_return_insulation_r'] = 0.0
402
+ args['ducts_supply_location'] = HPXML::LocationAtticUnvented
403
+ args['ducts_return_location'] = HPXML::LocationAtticUnvented
404
+ args['ducts_supply_surface_area'] = 150.0
405
+ args['ducts_return_surface_area'] = 50.0
406
+ args['ducts_number_of_return_registers'] = 2
407
+ args['heating_system_2_type'] = 'none'
408
+ args['heating_system_2_fuel'] = HPXML::FuelTypeElectricity
409
+ args['heating_system_2_heating_efficiency'] = 1.0
410
+ args['heating_system_2_heating_capacity'] = Constants.Auto
411
+ args['heating_system_2_fraction_heat_load_served'] = 0.25
412
+ args['mech_vent_fan_type'] = 'none'
413
+ args['mech_vent_flow_rate'] = 110
414
+ args['mech_vent_hours_in_operation'] = 24
415
+ args['mech_vent_recovery_efficiency_type'] = 'Unadjusted'
416
+ args['mech_vent_total_recovery_efficiency'] = 0.48
417
+ args['mech_vent_sensible_recovery_efficiency'] = 0.72
418
+ args['mech_vent_fan_power'] = 30
419
+ args['mech_vent_num_units_served'] = 1
420
+ args['mech_vent_2_fan_type'] = 'none'
421
+ args['mech_vent_2_flow_rate'] = 110
422
+ args['mech_vent_2_hours_in_operation'] = 24
423
+ args['mech_vent_2_recovery_efficiency_type'] = 'Unadjusted'
424
+ args['mech_vent_2_total_recovery_efficiency'] = 0.48
425
+ args['mech_vent_2_sensible_recovery_efficiency'] = 0.72
426
+ args['mech_vent_2_fan_power'] = 30
427
+ args['kitchen_fans_quantity'] = 0
428
+ args['bathroom_fans_quantity'] = 0
429
+ args['whole_house_fan_present'] = false
430
+ args['whole_house_fan_flow_rate'] = 4500
431
+ args['whole_house_fan_power'] = 300
432
+ args['water_heater_type'] = HPXML::WaterHeaterTypeStorage
433
+ args['water_heater_fuel_type'] = HPXML::FuelTypeElectricity
434
+ args['water_heater_location'] = HPXML::LocationLivingSpace
435
+ args['water_heater_tank_volume'] = 40
436
+ args['water_heater_efficiency_type'] = 'EnergyFactor'
437
+ args['water_heater_efficiency'] = 0.95
438
+ args['water_heater_recovery_efficiency'] = 0.76
439
+ args['water_heater_heating_capacity'] = 18767
440
+ args['water_heater_standby_loss'] = 0
441
+ args['water_heater_jacket_rvalue'] = 0
442
+ args['water_heater_setpoint_temperature'] = 125
443
+ args['water_heater_num_units_served'] = 1
444
+ args['hot_water_distribution_system_type'] = HPXML::DHWDistTypeStandard
445
+ args['hot_water_distribution_standard_piping_length'] = 50
446
+ args['hot_water_distribution_recirc_control_type'] = HPXML::DHWRecirControlTypeNone
447
+ args['hot_water_distribution_recirc_piping_length'] = 50
448
+ args['hot_water_distribution_recirc_branch_piping_length'] = 50
449
+ args['hot_water_distribution_recirc_pump_power'] = 50
450
+ args['hot_water_distribution_pipe_r'] = 0.0
451
+ args['dwhr_facilities_connected'] = 'none'
452
+ args['dwhr_equal_flow'] = true
453
+ args['dwhr_efficiency'] = 0.55
454
+ args['water_fixtures_shower_low_flow'] = true
455
+ args['water_fixtures_sink_low_flow'] = false
456
+ args['water_fixtures_usage_multiplier'] = 1.0
457
+ args['solar_thermal_system_type'] = 'none'
458
+ args['solar_thermal_collector_area'] = 40.0
459
+ args['solar_thermal_collector_loop_type'] = HPXML::SolarThermalLoopTypeDirect
460
+ args['solar_thermal_collector_type'] = HPXML::SolarThermalTypeEvacuatedTube
461
+ args['solar_thermal_collector_azimuth'] = 180
462
+ args['solar_thermal_collector_tilt'] = 20
463
+ args['solar_thermal_collector_rated_optical_efficiency'] = 0.5
464
+ args['solar_thermal_collector_rated_thermal_losses'] = 0.2799
465
+ args['solar_thermal_storage_volume'] = Constants.Auto
466
+ args['solar_thermal_solar_fraction'] = 0
467
+ args['pv_system_module_type'] = 'none'
468
+ args['pv_system_location'] = Constants.Auto
469
+ args['pv_system_tracking'] = Constants.Auto
470
+ args['pv_system_array_azimuth'] = 180
471
+ args['pv_system_array_tilt'] = 20
472
+ args['pv_system_max_power_output'] = 4000
473
+ args['pv_system_inverter_efficiency'] = 0.96
474
+ args['pv_system_system_losses_fraction'] = 0.14
475
+ args['pv_system_num_bedrooms_served'] = 3
476
+ args['pv_system_2_module_type'] = 'none'
477
+ args['pv_system_2_location'] = Constants.Auto
478
+ args['pv_system_2_tracking'] = Constants.Auto
479
+ args['pv_system_2_array_azimuth'] = 180
480
+ args['pv_system_2_array_tilt'] = 20
481
+ args['pv_system_2_max_power_output'] = 4000
482
+ args['lighting_interior_fraction_cfl'] = 0.4
483
+ args['lighting_interior_fraction_lfl'] = 0.1
484
+ args['lighting_interior_fraction_led'] = 0.25
485
+ args['lighting_interior_usage_multiplier'] = 1.0
486
+ args['lighting_exterior_fraction_cfl'] = 0.4
487
+ args['lighting_exterior_fraction_lfl'] = 0.1
488
+ args['lighting_exterior_fraction_led'] = 0.25
489
+ args['lighting_exterior_usage_multiplier'] = 1.0
490
+ args['lighting_garage_fraction_cfl'] = 0.4
491
+ args['lighting_garage_fraction_lfl'] = 0.1
492
+ args['lighting_garage_fraction_led'] = 0.25
493
+ args['lighting_garage_usage_multiplier'] = 1.0
494
+ args['holiday_lighting_present'] = false
495
+ args['holiday_lighting_daily_kwh'] = Constants.Auto
496
+ args['dehumidifier_type'] = 'none'
497
+ args['dehumidifier_efficiency_type'] = 'EnergyFactor'
498
+ args['dehumidifier_efficiency'] = 1.8
499
+ args['dehumidifier_capacity'] = 40
500
+ args['dehumidifier_rh_setpoint'] = 0.5
501
+ args['dehumidifier_fraction_dehumidification_load_served'] = 1
502
+ args['clothes_washer_location'] = HPXML::LocationLivingSpace
503
+ args['clothes_washer_efficiency_type'] = 'IntegratedModifiedEnergyFactor'
504
+ args['clothes_washer_efficiency'] = 1.21
505
+ args['clothes_washer_rated_annual_kwh'] = 380.0
506
+ args['clothes_washer_label_electric_rate'] = 0.12
507
+ args['clothes_washer_label_gas_rate'] = 1.09
508
+ args['clothes_washer_label_annual_gas_cost'] = 27.0
509
+ args['clothes_washer_label_usage'] = 6.0
510
+ args['clothes_washer_capacity'] = 3.2
511
+ args['clothes_washer_usage_multiplier'] = 1.0
512
+ args['clothes_dryer_location'] = HPXML::LocationLivingSpace
513
+ args['clothes_dryer_fuel_type'] = HPXML::FuelTypeElectricity
514
+ args['clothes_dryer_efficiency_type'] = 'CombinedEnergyFactor'
515
+ args['clothes_dryer_efficiency'] = 3.73
516
+ args['clothes_dryer_vented_flow_rate'] = 150.0
517
+ args['clothes_dryer_usage_multiplier'] = 1.0
518
+ args['dishwasher_location'] = HPXML::LocationLivingSpace
519
+ args['dishwasher_efficiency_type'] = 'RatedAnnualkWh'
520
+ args['dishwasher_efficiency'] = 307
521
+ args['dishwasher_label_electric_rate'] = 0.12
522
+ args['dishwasher_label_gas_rate'] = 1.09
523
+ args['dishwasher_label_annual_gas_cost'] = 22.32
524
+ args['dishwasher_label_usage'] = 4.0
525
+ args['dishwasher_place_setting_capacity'] = 12
526
+ args['dishwasher_usage_multiplier'] = 1.0
527
+ args['refrigerator_location'] = HPXML::LocationLivingSpace
528
+ args['refrigerator_rated_annual_kwh'] = 650.0
529
+ args['refrigerator_usage_multiplier'] = 1.0
530
+ args['extra_refrigerator_location'] = 'none'
531
+ args['extra_refrigerator_rated_annual_kwh'] = Constants.Auto
532
+ args['extra_refrigerator_usage_multiplier'] = 1.0
533
+ args['freezer_location'] = 'none'
534
+ args['freezer_rated_annual_kwh'] = Constants.Auto
535
+ args['freezer_usage_multiplier'] = 1.0
536
+ args['cooking_range_oven_location'] = HPXML::LocationLivingSpace
537
+ args['cooking_range_oven_fuel_type'] = HPXML::FuelTypeElectricity
538
+ args['cooking_range_oven_is_induction'] = false
539
+ args['cooking_range_oven_is_convection'] = false
540
+ args['cooking_range_oven_usage_multiplier'] = 1.0
541
+ args['ceiling_fan_present'] = false
542
+ args['ceiling_fan_efficiency'] = Constants.Auto
543
+ args['ceiling_fan_quantity'] = Constants.Auto
544
+ args['ceiling_fan_cooling_setpoint_temp_offset'] = 0
545
+ args['misc_plug_loads_television_present'] = true
546
+ args['misc_plug_loads_television_annual_kwh'] = 620.0
547
+ args['misc_plug_loads_television_usage_multiplier'] = 1.0
548
+ args['misc_plug_loads_other_annual_kwh'] = 2457.0
549
+ args['misc_plug_loads_other_frac_sensible'] = 0.855
550
+ args['misc_plug_loads_other_frac_latent'] = 0.045
551
+ args['misc_plug_loads_other_usage_multiplier'] = 1.0
552
+ args['misc_plug_loads_well_pump_present'] = false
553
+ args['misc_plug_loads_well_pump_annual_kwh'] = Constants.Auto
554
+ args['misc_plug_loads_well_pump_usage_multiplier'] = 0.0
555
+ args['misc_plug_loads_vehicle_present'] = false
556
+ args['misc_plug_loads_vehicle_annual_kwh'] = Constants.Auto
557
+ args['misc_plug_loads_vehicle_usage_multiplier'] = 0.0
558
+ args['misc_fuel_loads_grill_present'] = false
559
+ args['misc_fuel_loads_grill_fuel_type'] = HPXML::FuelTypeNaturalGas
560
+ args['misc_fuel_loads_grill_annual_therm'] = Constants.Auto
561
+ args['misc_fuel_loads_grill_usage_multiplier'] = 0.0
562
+ args['misc_fuel_loads_lighting_present'] = false
563
+ args['misc_fuel_loads_lighting_fuel_type'] = HPXML::FuelTypeNaturalGas
564
+ args['misc_fuel_loads_lighting_annual_therm'] = Constants.Auto
565
+ args['misc_fuel_loads_lighting_usage_multiplier'] = 0.0
566
+ args['misc_fuel_loads_fireplace_present'] = false
567
+ args['misc_fuel_loads_fireplace_fuel_type'] = HPXML::FuelTypeNaturalGas
568
+ args['misc_fuel_loads_fireplace_annual_therm'] = Constants.Auto
569
+ args['misc_fuel_loads_fireplace_frac_sensible'] = Constants.Auto
570
+ args['misc_fuel_loads_fireplace_frac_latent'] = Constants.Auto
571
+ args['misc_fuel_loads_fireplace_usage_multiplier'] = 0.0
572
+ args['pool_present'] = false
573
+ args['pool_pump_annual_kwh'] = Constants.Auto
574
+ args['pool_pump_usage_multiplier'] = 1.0
575
+ args['pool_heater_type'] = HPXML::HeaterTypeElectricResistance
576
+ args['pool_heater_annual_kwh'] = Constants.Auto
577
+ args['pool_heater_annual_therm'] = Constants.Auto
578
+ args['pool_heater_usage_multiplier'] = 1.0
579
+ args['hot_tub_present'] = false
580
+ args['hot_tub_pump_annual_kwh'] = Constants.Auto
581
+ args['hot_tub_pump_usage_multiplier'] = 1.0
582
+ args['hot_tub_heater_type'] = HPXML::HeaterTypeElectricResistance
583
+ args['hot_tub_heater_annual_kwh'] = Constants.Auto
584
+ args['hot_tub_heater_annual_therm'] = Constants.Auto
585
+ args['hot_tub_heater_usage_multiplier'] = 1.0
586
+ elsif ['base-sfa.xml'].include? hpxml_file
587
+ args['geometry_unit_type'] = HPXML::ResidentialTypeSFA
588
+ args['geometry_unit_cfa'] = 1800.0
589
+ args['geometry_building_num_units'] = 3
590
+ args['geometry_unit_right_wall_is_adiabatic'] = true
591
+ args['window_front_wwr'] = 0.18
592
+ args['window_back_wwr'] = 0.18
593
+ args['window_left_wwr'] = 0.18
594
+ args['window_right_wwr'] = 0.18
595
+ args['window_area_front'] = 0
596
+ args['window_area_back'] = 0
597
+ args['window_area_left'] = 0
598
+ args['window_area_right'] = 0
599
+ elsif ['base-mf.xml'].include? hpxml_file
600
+ args['geometry_unit_type'] = HPXML::ResidentialTypeApartment
601
+ args['geometry_unit_cfa'] = 900.0
602
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementUnconditioned
603
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
604
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
605
+ args['geometry_unit_right_wall_is_adiabatic'] = true
606
+ args['geometry_building_num_units'] = 6
607
+ args['window_front_wwr'] = 0.18
608
+ args['window_back_wwr'] = 0.18
609
+ args['window_left_wwr'] = 0.18
610
+ args['window_right_wwr'] = 0.18
611
+ args['window_area_front'] = 0
612
+ args['window_area_back'] = 0
613
+ args['window_area_left'] = 0
614
+ args['window_area_right'] = 0
615
+ args['ducts_supply_leakage_to_outside_value'] = 0.0
616
+ args['ducts_return_leakage_to_outside_value'] = 0.0
617
+ args['ducts_supply_location'] = HPXML::LocationLivingSpace
618
+ args['ducts_return_location'] = HPXML::LocationLivingSpace
619
+ args['ducts_supply_insulation_r'] = 0.0
620
+ args['ducts_return_insulation_r'] = 0.0
621
+ args['ducts_number_of_return_registers'] = 1
622
+ args['door_area'] = 20.0
623
+ end
191
624
 
192
- hpxml_objs = {
193
- 'Rakefile' => HPXML.new(hpxml_path: hpxml_path['Rakefile']),
194
- 'BuildResidentialHPXML' => HPXML.new(hpxml_path: hpxml_path['BuildResidentialHPXML'])
195
- }
625
+ # Extras
626
+ if ['extra-auto.xml'].include? hpxml_file
627
+ args['geometry_unit_num_occupants'] = Constants.Auto
628
+ args['ducts_supply_location'] = Constants.Auto
629
+ args['ducts_return_location'] = Constants.Auto
630
+ args['ducts_supply_surface_area'] = Constants.Auto
631
+ args['ducts_return_surface_area'] = Constants.Auto
632
+ args['water_heater_location'] = Constants.Auto
633
+ args['water_heater_tank_volume'] = Constants.Auto
634
+ args['hot_water_distribution_standard_piping_length'] = Constants.Auto
635
+ args['clothes_washer_location'] = Constants.Auto
636
+ args['clothes_dryer_location'] = Constants.Auto
637
+ args['refrigerator_location'] = Constants.Auto
638
+ elsif ['extra-pv-roofpitch.xml'].include? hpxml_file
639
+ args['pv_system_module_type'] = HPXML::PVModuleTypeStandard
640
+ args['pv_system_2_module_type'] = HPXML::PVModuleTypeStandard
641
+ args['pv_system_array_tilt'] = 'roofpitch'
642
+ args['pv_system_2_array_tilt'] = 'roofpitch+15'
643
+ elsif ['extra-dhw-solar-latitude.xml'].include? hpxml_file
644
+ args['solar_thermal_system_type'] = HPXML::SolarThermalSystemType
645
+ args['solar_thermal_collector_tilt'] = 'latitude-15'
646
+ elsif ['extra-second-refrigerator.xml'].include? hpxml_file
647
+ args['extra_refrigerator_location'] = HPXML::LocationLivingSpace
648
+ elsif ['extra-second-heating-system-portable-heater-to-heating-system.xml'].include? hpxml_file
649
+ args['heating_system_fuel'] = HPXML::FuelTypeElectricity
650
+ args['heating_system_heating_capacity'] = 48000.0
651
+ args['heating_system_fraction_heat_load_served'] = 0.75
652
+ args['ducts_supply_leakage_to_outside_value'] = 0.0
653
+ args['ducts_return_leakage_to_outside_value'] = 0.0
654
+ args['ducts_supply_location'] = HPXML::LocationLivingSpace
655
+ args['ducts_return_location'] = HPXML::LocationLivingSpace
656
+ args['heating_system_2_type'] = HPXML::HVACTypePortableHeater
657
+ args['heating_system_2_heating_capacity'] = 16000.0
658
+ elsif ['extra-second-heating-system-fireplace-to-heating-system.xml'].include? hpxml_file
659
+ args['heating_system_type'] = HPXML::HVACTypeElectricResistance
660
+ args['heating_system_fuel'] = HPXML::FuelTypeElectricity
661
+ args['heating_system_heating_efficiency'] = 1.0
662
+ args['heating_system_heating_capacity'] = 48000.0
663
+ args['heating_system_fraction_heat_load_served'] = 0.75
664
+ args['cooling_system_type'] = 'none'
665
+ args['heating_system_2_type'] = HPXML::HVACTypeFireplace
666
+ args['heating_system_2_heating_capacity'] = 16000.0
667
+ elsif ['extra-second-heating-system-boiler-to-heating-system.xml'].include? hpxml_file
668
+ args['heating_system_type'] = HPXML::HVACTypeBoiler
669
+ args['heating_system_fraction_heat_load_served'] = 0.75
670
+ args['heating_system_2_type'] = HPXML::HVACTypeBoiler
671
+ elsif ['extra-second-heating-system-portable-heater-to-heat-pump.xml'].include? hpxml_file
672
+ args['heating_system_type'] = 'none'
673
+ args['cooling_system_type'] = 'none'
674
+ args['heat_pump_type'] = HPXML::HVACTypeHeatPumpAirToAir
675
+ args['heat_pump_heating_capacity_17_f'] = 22680.0
676
+ args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated
677
+ args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity
678
+ args['heat_pump_heating_capacity'] = 48000.0
679
+ args['heat_pump_fraction_heat_load_served'] = 0.75
680
+ args['ducts_supply_leakage_to_outside_value'] = 0.0
681
+ args['ducts_return_leakage_to_outside_value'] = 0.0
682
+ args['ducts_supply_location'] = HPXML::LocationLivingSpace
683
+ args['ducts_return_location'] = HPXML::LocationLivingSpace
684
+ args['heating_system_2_type'] = HPXML::HVACTypePortableHeater
685
+ args['heating_system_2_heating_capacity'] = 16000.0
686
+ elsif ['extra-second-heating-system-fireplace-to-heat-pump.xml'].include? hpxml_file
687
+ args['heating_system_type'] = 'none'
688
+ args['cooling_system_type'] = 'none'
689
+ args['heat_pump_type'] = HPXML::HVACTypeHeatPumpMiniSplit
690
+ args['heat_pump_heating_efficiency'] = 10.0
691
+ args['heat_pump_cooling_efficiency'] = 19.0
692
+ args['heat_pump_heating_capacity'] = 48000.0
693
+ args['heat_pump_is_ducted'] = true
694
+ args['heat_pump_fraction_heat_load_served'] = 0.75
695
+ args['heating_system_2_type'] = HPXML::HVACTypeFireplace
696
+ args['heating_system_2_heating_capacity'] = 16000.0
697
+ elsif ['extra-second-heating-system-boiler-to-heat-pump.xml'].include? hpxml_file
698
+ args['heating_system_type'] = 'none'
699
+ args['cooling_system_type'] = 'none'
700
+ args['heat_pump_type'] = HPXML::HVACTypeHeatPumpGroundToAir
701
+ args['heat_pump_heating_efficiency_type'] = HPXML::UnitsCOP
702
+ args['heat_pump_heating_efficiency'] = 3.6
703
+ args['heat_pump_cooling_efficiency_type'] = HPXML::UnitsEER
704
+ args['heat_pump_cooling_efficiency'] = 16.6
705
+ args['heat_pump_backup_type'] = HPXML::HeatPumpBackupTypeIntegrated
706
+ args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity
707
+ args['heat_pump_fraction_heat_load_served'] = 0.75
708
+ args['heating_system_2_type'] = HPXML::HVACTypeBoiler
709
+ elsif ['extra-enclosure-windows-shading.xml'].include? hpxml_file
710
+ args['window_interior_shading_winter'] = 0.99
711
+ args['window_interior_shading_summer'] = 0.01
712
+ args['window_exterior_shading_winter'] = 0.9
713
+ args['window_exterior_shading_summer'] = 0.1
714
+ elsif ['extra-enclosure-garage-partially-protruded.xml'].include? hpxml_file
715
+ args['geometry_garage_width'] = 12
716
+ args['geometry_garage_protrusion'] = 0.5
717
+ elsif ['extra-enclosure-garage-atticroof-conditioned.xml'].include? hpxml_file
718
+ args['geometry_garage_width'] = 30.0
719
+ args['geometry_garage_protrusion'] = 1.0
720
+ args['window_area_front'] = 12.0
721
+ args['window_aspect_ratio'] = 5.0 / 1.5
722
+ args['geometry_unit_cfa'] = 4500.0
723
+ args['geometry_unit_num_floors_above_grade'] = 2
724
+ args['geometry_attic_type'] = HPXML::AtticTypeConditioned
725
+ args['floor_over_garage_assembly_r'] = 39.3
726
+ args['ducts_supply_location'] = HPXML::LocationGarage
727
+ args['ducts_return_location'] = HPXML::LocationGarage
728
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-gable.xml'].include? hpxml_file
729
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
730
+ args['geometry_foundation_height'] = 0.0
731
+ args['geometry_foundation_height_above_grade'] = 0.0
732
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
733
+ args['geometry_unit_cfa'] = 4500.0
734
+ args['geometry_unit_num_floors_above_grade'] = 2
735
+ args['geometry_attic_type'] = HPXML::AtticTypeConditioned
736
+ args['geometry_eaves_depth'] = 2
737
+ args['ducts_supply_location'] = HPXML::LocationUnderSlab
738
+ args['ducts_return_location'] = HPXML::LocationUnderSlab
739
+ elsif ['extra-enclosure-atticroof-conditioned-eaves-hip.xml'].include? hpxml_file
740
+ args['geometry_roof_type'] = 'hip'
741
+ elsif ['extra-zero-refrigerator-kwh.xml'].include? hpxml_file
742
+ args['refrigerator_rated_annual_kwh'] = 0
743
+ elsif ['extra-zero-extra-refrigerator-kwh.xml'].include? hpxml_file
744
+ args['extra_refrigerator_rated_annual_kwh'] = 0
745
+ elsif ['extra-zero-freezer-kwh.xml'].include? hpxml_file
746
+ args['freezer_rated_annual_kwh'] = 0
747
+ elsif ['extra-zero-clothes-washer-kwh.xml'].include? hpxml_file
748
+ args['clothes_washer_rated_annual_kwh'] = 0
749
+ args['clothes_dryer_location'] = 'none'
750
+ elsif ['extra-zero-dishwasher-kwh.xml'].include? hpxml_file
751
+ args['dishwasher_efficiency'] = 0
752
+ elsif ['extra-sfa-atticroof-flat.xml'].include? hpxml_file
753
+ args['geometry_attic_type'] = HPXML::AtticTypeFlatRoof
754
+ args['ducts_supply_leakage_to_outside_value'] = 0.0
755
+ args['ducts_return_leakage_to_outside_value'] = 0.0
756
+ args['ducts_supply_location'] = HPXML::LocationBasementConditioned
757
+ args['ducts_return_location'] = HPXML::LocationBasementConditioned
758
+ elsif ['extra-gas-pool-heater-with-zero-kwh.xml'].include? hpxml_file
759
+ args['pool_present'] = true
760
+ args['pool_heater_type'] = HPXML::HeaterTypeGas
761
+ args['pool_heater_annual_kwh'] = 0
762
+ elsif ['extra-gas-hot-tub-heater-with-zero-kwh.xml'].include? hpxml_file
763
+ args['hot_tub_present'] = true
764
+ args['hot_tub_heater_type'] = HPXML::HeaterTypeGas
765
+ args['hot_tub_heater_annual_kwh'] = 0
766
+ elsif ['extra-no-rim-joists.xml'].include? hpxml_file
767
+ args.delete('geometry_rim_joist_height')
768
+ args.delete('rim_joist_assembly_r')
769
+ elsif ['extra-iecc-zone-different-than-epw.xml'].include? hpxml_file
770
+ args['site_iecc_zone'] = '6B'
771
+ elsif ['extra-state-code-different-than-epw.xml'].include? hpxml_file
772
+ args['site_state_code'] = 'WY'
773
+ elsif ['extra-sfa-atticroof-conditioned-eaves-gable.xml'].include? hpxml_file
774
+ args['geometry_unit_num_floors_above_grade'] = 2
775
+ args['geometry_attic_type'] = HPXML::AtticTypeConditioned
776
+ args['geometry_eaves_depth'] = 2
777
+ args['ducts_supply_location'] = HPXML::LocationLivingSpace
778
+ args['ducts_return_location'] = HPXML::LocationLivingSpace
779
+ elsif ['extra-sfa-atticroof-conditioned-eaves-hip.xml'].include? hpxml_file
780
+ args['geometry_roof_type'] = 'hip'
781
+ elsif ['extra-mf-eaves.xml'].include? hpxml_file
782
+ args['geometry_eaves_depth'] = 2
783
+ elsif ['extra-sfa-slab.xml'].include? hpxml_file
784
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
785
+ args['geometry_foundation_height'] = 0.0
786
+ args['geometry_foundation_height_above_grade'] = 0.0
787
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
788
+ elsif ['extra-sfa-vented-crawlspace.xml'].include? hpxml_file
789
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceVented
790
+ args['geometry_foundation_height'] = 4.0
791
+ args['floor_over_foundation_assembly_r'] = 18.7
792
+ args['foundation_wall_insulation_distance_to_bottom'] = 4.0
793
+ elsif ['extra-sfa-unvented-crawlspace.xml'].include? hpxml_file
794
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceUnvented
795
+ args['geometry_foundation_height'] = 4.0
796
+ args['floor_over_foundation_assembly_r'] = 18.7
797
+ args['foundation_wall_insulation_distance_to_bottom'] = 4.0
798
+ elsif ['extra-sfa-conditioned-crawlspace.xml'].include? hpxml_file
799
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceConditioned
800
+ args['geometry_foundation_height'] = 4.0
801
+ args['floor_over_foundation_assembly_r'] = 2.1
802
+ args['foundation_wall_insulation_distance_to_bottom'] = 4.0
803
+ elsif ['extra-sfa-unconditioned-basement.xml'].include? hpxml_file
804
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementUnconditioned
805
+ args['floor_over_foundation_assembly_r'] = 18.7
806
+ args['foundation_wall_insulation_r'] = 0
807
+ args['foundation_wall_insulation_distance_to_bottom'] = 0.0
808
+ elsif ['extra-sfa-rear-units.xml'].include? hpxml_file
809
+ args['geometry_building_num_units'] = 4
810
+ elsif ['extra-sfa-exterior-corridor.xml'].include? hpxml_file
811
+ args['geometry_building_num_units'] = 4
812
+ elsif ['extra-sfa-slab-middle.xml',
813
+ 'extra-sfa-vented-crawlspace-middle.xml',
814
+ 'extra-sfa-unvented-crawlspace-middle.xml',
815
+ 'extra-sfa-unconditioned-basement-middle.xml'].include? hpxml_file
816
+ args['geometry_unit_left_wall_is_adiabatic'] = true
817
+ args['geometry_unit_right_wall_is_adiabatic'] = true
818
+ elsif ['extra-sfa-slab-right.xml',
819
+ 'extra-sfa-vented-crawlspace-right.xml',
820
+ 'extra-sfa-unvented-crawlspace-right.xml',
821
+ 'extra-sfa-unconditioned-basement-right.xml'].include? hpxml_file
822
+ args['geometry_unit_left_wall_is_adiabatic'] = true
823
+ elsif ['extra-mf-slab.xml'].include? hpxml_file
824
+ args['geometry_building_num_units'] = 18
825
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
826
+ args['geometry_foundation_height'] = 0.0
827
+ args['geometry_foundation_height_above_grade'] = 0.0
828
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
829
+ elsif ['extra-mf-vented-crawlspace.xml'].include? hpxml_file
830
+ args['geometry_building_num_units'] = 18
831
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceVented
832
+ args['geometry_foundation_height'] = 4.0
833
+ args['floor_over_foundation_assembly_r'] = 18.7
834
+ args['foundation_wall_insulation_distance_to_bottom'] = 4.0
835
+ elsif ['extra-mf-unvented-crawlspace.xml'].include? hpxml_file
836
+ args['geometry_building_num_units'] = 18
837
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceUnvented
838
+ args['geometry_foundation_height'] = 4.0
839
+ args['floor_over_foundation_assembly_r'] = 18.7
840
+ args['foundation_wall_insulation_distance_to_bottom'] = 4.0
841
+ elsif ['extra-mf-rear-units.xml'].include? hpxml_file
842
+ args['geometry_building_num_units'] = 18
843
+ elsif ['extra-mf-exterior-corridor.xml'].include? hpxml_file
844
+ args['geometry_building_num_units'] = 18
845
+ elsif ['extra-mf-slab-left-bottom.xml',
846
+ 'extra-mf-vented-crawlspace-left-bottom.xml',
847
+ 'extra-mf-unvented-crawlspace-left-bottom.xml'].include? hpxml_file
848
+ args['geometry_unit_right_wall_is_adiabatic'] = true
849
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
850
+ elsif ['extra-mf-slab-left-middle.xml',
851
+ 'extra-mf-vented-crawlspace-left-middle.xml',
852
+ 'extra-mf-unvented-crawlspace-left-middle.xml'].include? hpxml_file
853
+ args['geometry_unit_right_wall_is_adiabatic'] = true
854
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
855
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
856
+ elsif ['extra-mf-slab-left-top.xml',
857
+ 'extra-mf-vented-crawlspace-left-top.xml',
858
+ 'extra-mf-unvented-crawlspace-left-top.xml'].include? hpxml_file
859
+ args['geometry_unit_right_wall_is_adiabatic'] = true
860
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
861
+ elsif ['extra-mf-slab-middle-bottom.xml',
862
+ 'extra-mf-vented-crawlspace-middle-bottom.xml',
863
+ 'extra-mf-unvented-crawlspace-middle-bottom.xml'].include? hpxml_file
864
+ args['geometry_unit_left_wall_is_adiabatic'] = true
865
+ args['geometry_unit_right_wall_is_adiabatic'] = true
866
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
867
+ elsif ['extra-mf-slab-middle-middle.xml',
868
+ 'extra-mf-vented-crawlspace-middle-middle.xml',
869
+ 'extra-mf-unvented-crawlspace-middle-middle.xml'].include? hpxml_file
870
+ args['geometry_unit_left_wall_is_adiabatic'] = true
871
+ args['geometry_unit_right_wall_is_adiabatic'] = true
872
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
873
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
874
+ elsif ['extra-mf-slab-middle-top.xml',
875
+ 'extra-mf-vented-crawlspace-middle-top.xml',
876
+ 'extra-mf-unvented-crawlspace-middle-top.xml'].include? hpxml_file
877
+ args['geometry_unit_left_wall_is_adiabatic'] = true
878
+ args['geometry_unit_right_wall_is_adiabatic'] = true
879
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
880
+ elsif ['extra-mf-slab-right-bottom.xml',
881
+ 'extra-mf-vented-crawlspace-right-bottom.xml',
882
+ 'extra-mf-unvented-crawlspace-right-bottom.xml'].include? hpxml_file
883
+ args['geometry_unit_left_wall_is_adiabatic'] = true
884
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
885
+ elsif ['extra-mf-slab-right-middle.xml',
886
+ 'extra-mf-vented-crawlspace-right-middle.xml',
887
+ 'extra-mf-unvented-crawlspace-right-middle.xml'].include? hpxml_file
888
+ args['geometry_unit_left_wall_is_adiabatic'] = true
889
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
890
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
891
+ elsif ['extra-mf-slab-right-top.xml',
892
+ 'extra-mf-vented-crawlspace-right-top.xml',
893
+ 'extra-mf-unvented-crawlspace-right-top.xml'].include? hpxml_file
894
+ args['geometry_unit_left_wall_is_adiabatic'] = true
895
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
896
+ elsif ['extra-mf-slab-rear-units.xml',
897
+ 'extra-mf-vented-crawlspace-rear-units.xml',
898
+ 'extra-mf-unvented-crawlspace-rear-units.xml',
899
+ 'extra-mf-slab-left-bottom-rear-units.xml',
900
+ 'extra-mf-slab-left-middle-rear-units.xml',
901
+ 'extra-mf-slab-left-top-rear-units.xml',
902
+ 'extra-mf-slab-middle-bottom-rear-units.xml',
903
+ 'extra-mf-slab-middle-middle-rear-units.xml',
904
+ 'extra-mf-slab-middle-top-rear-units.xml',
905
+ 'extra-mf-slab-right-bottom-rear-units.xml',
906
+ 'extra-mf-slab-right-middle-rear-units.xml',
907
+ 'extra-mf-slab-right-top-rear-units.xml',
908
+ 'extra-mf-vented-crawlspace-left-bottom-rear-units.xml',
909
+ 'extra-mf-vented-crawlspace-left-middle-rear-units.xml',
910
+ 'extra-mf-vented-crawlspace-left-top-rear-units.xml',
911
+ 'extra-mf-vented-crawlspace-middle-bottom-rear-units.xml',
912
+ 'extra-mf-vented-crawlspace-middle-middle-rear-units.xml',
913
+ 'extra-mf-vented-crawlspace-middle-top-rear-units.xml',
914
+ 'extra-mf-vented-crawlspace-right-bottom-rear-units.xml',
915
+ 'extra-mf-vented-crawlspace-right-middle-rear-units.xml',
916
+ 'extra-mf-vented-crawlspace-right-top-rear-units.xml',
917
+ 'extra-mf-unvented-crawlspace-left-bottom-rear-units.xml',
918
+ 'extra-mf-unvented-crawlspace-left-middle-rear-units.xml',
919
+ 'extra-mf-unvented-crawlspace-left-top-rear-units.xml',
920
+ 'extra-mf-unvented-crawlspace-middle-bottom-rear-units.xml',
921
+ 'extra-mf-unvented-crawlspace-middle-middle-rear-units.xml',
922
+ 'extra-mf-unvented-crawlspace-middle-top-rear-units.xml',
923
+ 'extra-mf-unvented-crawlspace-right-bottom-rear-units.xml',
924
+ 'extra-mf-unvented-crawlspace-right-middle-rear-units.xml',
925
+ 'extra-mf-unvented-crawlspace-right-top-rear-units.xml'].include? hpxml_file
926
+ args['geometry_unit_front_wall_is_adiabatic'] = true
927
+ end
196
928
 
197
- hpxml_objs.each do |version, hpxml|
198
- # Sort elements so we can diff them
199
- hpxml.neighbor_buildings.sort_by! { |neighbor_building| neighbor_building.azimuth }
200
- hpxml.roofs.sort_by! { |roof| roof.area }
201
- hpxml.walls.sort_by! { |wall| [wall.exterior_adjacent_to, wall.insulation_assembly_r_value, wall.area] }
202
- hpxml.foundation_walls.sort_by! { |foundation_wall| foundation_wall.area }
203
- hpxml.rim_joists.sort_by! { |rim_joist| [rim_joist.exterior_adjacent_to, rim_joist.insulation_assembly_r_value, rim_joist.area] }
204
- hpxml.frame_floors.sort_by! { |frame_floor| [frame_floor.insulation_assembly_r_value, frame_floor.area] }
205
- hpxml.slabs.sort_by! { |slab| slab.area }
206
- hpxml.windows.sort_by! { |window| [window.azimuth, window.area] }
207
- hpxml.plug_loads.sort_by! { |plug_load| [plug_load.plug_load_type, plug_load.kWh_per_year] }
208
-
209
- # Ignore elements that we aren't going to diff
210
- hpxml.header.xml_type = nil
211
- hpxml.header.xml_generated_by = nil
212
- hpxml.header.created_date_and_time = Time.new(2000, 1, 1).strftime('%Y-%m-%dT%H:%M:%S%:z')
213
- hpxml.header.schedules_path = nil
214
- hpxml.site.fuels = [] # Not used by model
215
- hpxml.climate_and_risk_zones.weather_station_name = nil
216
- hpxml.building_construction.conditioned_building_volume = nil
217
- hpxml.building_construction.average_ceiling_height = nil # Comparing conditioned volume instead
218
- hpxml.air_infiltration_measurements[0].infiltration_volume = nil
219
- hpxml.foundations.clear
220
- hpxml.attics.clear
221
- hpxml.foundation_walls.each do |foundation_wall|
222
- next if foundation_wall.insulation_assembly_r_value.nil?
223
- foundation_wall.insulation_assembly_r_value = foundation_wall.insulation_assembly_r_value.round(2)
224
- end
225
- if hpxml.rim_joists.length > 0
226
- (0...hpxml.rim_joists.length).to_a.reverse.each do |i|
227
- next unless [HPXML::LocationLivingSpace].include? hpxml.rim_joists[i].interior_adjacent_to
929
+ # Error
930
+ if ['error-heating-system-and-heat-pump.xml'].include? hpxml_file
931
+ args['cooling_system_type'] = 'none'
932
+ args['heat_pump_type'] = HPXML::HVACTypeHeatPumpAirToAir
933
+ elsif ['error-cooling-system-and-heat-pump.xml'].include? hpxml_file
934
+ args['heating_system_type'] = 'none'
935
+ args['heat_pump_type'] = HPXML::HVACTypeHeatPumpAirToAir
936
+ elsif ['error-non-integer-geometry-num-bathrooms.xml'].include? hpxml_file
937
+ args['geometry_unit_num_bathrooms'] = 1.5
938
+ elsif ['error-non-integer-ceiling-fan-quantity.xml'].include? hpxml_file
939
+ args['ceiling_fan_quantity'] = 0.5
940
+ elsif ['error-sfd-conditioned-basement-zero-foundation-height.xml'].include? hpxml_file
941
+ args['geometry_foundation_height'] = 0.0
942
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
943
+ elsif ['error-sfd-adiabatic-walls.xml'].include? hpxml_file
944
+ args['geometry_unit_left_wall_is_adiabatic'] = true
945
+ elsif ['error-sfa-ambient.xml'].include? hpxml_file
946
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAmbient
947
+ args.delete('geometry_rim_joist_height')
948
+ args.delete('rim_joist_assembly_r')
949
+ elsif ['error-mf-conditioned-basement'].include? hpxml_file
950
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementConditioned
951
+ elsif ['error-mf-conditioned-crawlspace'].include? hpxml_file
952
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceConditioned
953
+ elsif ['error-mf-bottom-crawlspace-zero-foundation-height.xml'].include? hpxml_file
954
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceUnvented
955
+ args['geometry_foundation_height'] = 0.0
956
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
957
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
958
+ elsif ['error-ducts-location-and-areas-not-same-type.xml'].include? hpxml_file
959
+ args['ducts_supply_location'] = Constants.Auto
960
+ elsif ['error-second-heating-system-serves-total-heat-load.xml'].include? hpxml_file
961
+ args['heating_system_2_type'] = HPXML::HVACTypeFireplace
962
+ args['heating_system_2_fraction_heat_load_served'] = 1.0
963
+ elsif ['error-second-heating-system-but-no-primary-heating.xml'].include? hpxml_file
964
+ args['heating_system_type'] = 'none'
965
+ args['heating_system_2_type'] = HPXML::HVACTypeFireplace
966
+ elsif ['error-sfa-no-building-num-units.xml'].include? hpxml_file
967
+ args.delete('geometry_building_num_units')
968
+ elsif ['error-sfa-above-apartment.xml'].include? hpxml_file
969
+ args['geometry_foundation_type'] = HPXML::FoundationTypeAboveApartment
970
+ elsif ['error-sfa-below-apartment.xml'].include? hpxml_file
971
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
972
+ elsif ['error-sfa-all-adiabatic-walls.xml'].include? hpxml_file
973
+ args['geometry_unit_left_wall_is_adiabatic'] = true
974
+ args['geometry_unit_right_wall_is_adiabatic'] = true
975
+ args['geometry_unit_front_wall_is_adiabatic'] = true
976
+ args['geometry_unit_back_wall_is_adiabatic'] = true
977
+ elsif ['error-mf-no-building-num-units.xml'].include? hpxml_file
978
+ args.delete('geometry_building_num_units')
979
+ elsif ['error-mf-all-adiabatic-walls.xml'].include? hpxml_file
980
+ args['geometry_unit_left_wall_is_adiabatic'] = true
981
+ args['geometry_unit_right_wall_is_adiabatic'] = true
982
+ args['geometry_unit_front_wall_is_adiabatic'] = true
983
+ args['geometry_unit_back_wall_is_adiabatic'] = true
984
+ elsif ['error-mf-two-stories.xml'].include? hpxml_file
985
+ args['geometry_unit_num_floors_above_grade'] = 2
986
+ elsif ['error-dhw-indirect-without-boiler.xml'].include? hpxml_file
987
+ args['water_heater_type'] = HPXML::WaterHeaterTypeCombiStorage
988
+ elsif ['error-conditioned-attic-with-one-floor-above-grade.xml'].include? hpxml_file
989
+ args['geometry_attic_type'] = HPXML::AtticTypeConditioned
990
+ args['ceiling_assembly_r'] = 0.0
991
+ elsif ['error-zero-number-of-bedrooms.xml'].include? hpxml_file
992
+ args['geometry_unit_num_bedrooms'] = 0
993
+ elsif ['error-sfd-with-shared-system.xml'].include? hpxml_file
994
+ args['heating_system_type'] = "Shared #{HPXML::HVACTypeBoiler} w/ Baseboard"
995
+ elsif ['error-rim-joist-height-but-no-assembly-r.xml'].include? hpxml_file
996
+ args.delete('rim_joist_assembly_r')
997
+ elsif ['error-rim-joist-assembly-r-but-no-height.xml'].include? hpxml_file
998
+ args.delete('geometry_rim_joist_height')
999
+ end
228
1000
 
229
- hpxml.rim_joists.delete_at(i)
230
- end
231
- end
232
- hpxml.rim_joists.each do |rim_joist|
233
- rim_joist.area = rim_joist.area.round
234
- rim_joist.insulation_assembly_r_value = rim_joist.insulation_assembly_r_value.round(2)
235
- rim_joist.solar_absorptance = nil
236
- rim_joist.emittance = nil
237
- rim_joist.color = nil
238
- end
239
- hpxml.roofs.each do |roof|
240
- roof.azimuth = nil
241
- roof.radiant_barrier = nil
242
- roof.solar_absorptance = nil
243
- roof.emittance = nil
244
- roof.roof_color = nil
245
- end
246
- hpxml.walls.each do |wall|
247
- wall.azimuth = nil
248
- wall.solar_absorptance = nil
249
- wall.emittance = nil
250
- wall.color = nil
251
- next if wall.exterior_adjacent_to != HPXML::LocationOutside
252
- next unless [HPXML::LocationAtticUnvented, HPXML::LocationAtticVented].include? wall.interior_adjacent_to
253
-
254
- wall.area = nil # TODO: Attic gable wall areas
255
- end
256
- hpxml.windows.each do |window|
257
- window.area = window.area.round
258
- window.overhangs_distance_to_bottom_of_window = nil # TODO: Height of windows
259
- end
260
- hpxml.doors.each do |door|
261
- door.azimuth = nil # Not important
262
- if door.id.include?('Garage')
263
- door.delete
264
- end
265
- end
266
- hpxml.heating_systems.each do |heating_system|
267
- heating_system.electric_auxiliary_energy = nil # Detailed input not offered
268
- heating_system.fan_watts = nil # Detailed input not offered
269
- heating_system.fan_watts_per_cfm = nil # Detailed input not offered
270
- heating_system.shared_loop_watts = nil # Always defaulted
271
- heating_system.fan_coil_watts = nil # Always defaulted
272
- end
273
- hpxml.cooling_systems.each do |cooling_system|
274
- cooling_system.fan_watts_per_cfm = nil # Detailed input not offered
275
- end
276
- hpxml.heat_pumps.each do |heat_pump|
277
- heat_pump.fan_watts_per_cfm = nil # Detailed input not offered
278
- heat_pump.pump_watts_per_ton = nil # Detailed input not offered
279
- next if heat_pump.backup_heating_efficiency_afue.nil?
280
-
281
- # These are treated the same in the model, so allow AFUE/percent comparison
282
- heat_pump.backup_heating_efficiency_percent = heat_pump.backup_heating_efficiency_afue
283
- heat_pump.backup_heating_efficiency_afue = nil
284
- end
285
- hpxml.ventilation_fans.each do |ventilation_fan|
286
- next unless ventilation_fan.used_for_whole_building_ventilation
287
- next if ventilation_fan.tested_flow_rate.nil?
1001
+ # Warning
1002
+ if ['warning-non-electric-heat-pump-water-heater.xml'].include? hpxml_file
1003
+ args['water_heater_type'] = HPXML::WaterHeaterTypeHeatPump
1004
+ args['water_heater_fuel_type'] = HPXML::FuelTypeNaturalGas
1005
+ args['water_heater_efficiency'] = 2.3
1006
+ elsif ['warning-sfd-slab-non-zero-foundation-height.xml'].include? hpxml_file
1007
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
1008
+ args['geometry_foundation_height_above_grade'] = 0.0
1009
+ elsif ['warning-mf-bottom-slab-non-zero-foundation-height.xml'].include? hpxml_file
1010
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
1011
+ args['geometry_foundation_height_above_grade'] = 0.0
1012
+ args['geometry_attic_type'] = HPXML::AtticTypeBelowApartment
1013
+ elsif ['warning-slab-non-zero-foundation-height-above-grade.xml'].include? hpxml_file
1014
+ args['geometry_foundation_type'] = HPXML::FoundationTypeSlab
1015
+ args['geometry_foundation_height'] = 0.0
1016
+ args['foundation_wall_insulation_distance_to_bottom'] = Constants.Auto
1017
+ elsif ['warning-second-heating-system-serves-majority-heat.xml'].include? hpxml_file
1018
+ args['heating_system_fraction_heat_load_served'] = 0.4
1019
+ args['heating_system_2_type'] = HPXML::HVACTypeFireplace
1020
+ args['heating_system_2_fraction_heat_load_served'] = 0.6
1021
+ elsif ['warning-vented-crawlspace-with-wall-and-ceiling-insulation.xml'].include? hpxml_file
1022
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceVented
1023
+ args['geometry_foundation_height'] = 3.0
1024
+ args['floor_over_foundation_assembly_r'] = 10
1025
+ args['foundation_wall_insulation_distance_to_bottom'] = 0.0
1026
+ args['foundation_wall_assembly_r'] = 10
1027
+ elsif ['warning-unvented-crawlspace-with-wall-and-ceiling-insulation.xml'].include? hpxml_file
1028
+ args['geometry_foundation_type'] = HPXML::FoundationTypeCrawlspaceUnvented
1029
+ args['geometry_foundation_height'] = 3.0
1030
+ args['floor_over_foundation_assembly_r'] = 10
1031
+ args['foundation_wall_insulation_distance_to_bottom'] = 0.0
1032
+ args['foundation_wall_assembly_r'] = 10
1033
+ elsif ['warning-unconditioned-basement-with-wall-and-ceiling-insulation.xml'].include? hpxml_file
1034
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementUnconditioned
1035
+ args['floor_over_foundation_assembly_r'] = 10
1036
+ args['foundation_wall_assembly_r'] = 10
1037
+ elsif ['warning-vented-attic-with-floor-and-roof-insulation.xml'].include? hpxml_file
1038
+ args['geometry_attic_type'] = HPXML::AtticTypeVented
1039
+ args['roof_assembly_r'] = 10
1040
+ args['ducts_supply_location'] = HPXML::LocationAtticVented
1041
+ args['ducts_return_location'] = HPXML::LocationAtticVented
1042
+ elsif ['warning-unvented-attic-with-floor-and-roof-insulation.xml'].include? hpxml_file
1043
+ args['geometry_attic_type'] = HPXML::AtticTypeUnvented
1044
+ args['roof_assembly_r'] = 10
1045
+ elsif ['warning-conditioned-basement-with-ceiling-insulation.xml'].include? hpxml_file
1046
+ args['geometry_foundation_type'] = HPXML::FoundationTypeBasementConditioned
1047
+ args['floor_over_foundation_assembly_r'] = 10
1048
+ elsif ['warning-conditioned-attic-with-floor-insulation.xml'].include? hpxml_file
1049
+ args['geometry_unit_num_floors_above_grade'] = 2
1050
+ args['geometry_attic_type'] = HPXML::AtticTypeConditioned
1051
+ args['ducts_supply_location'] = HPXML::LocationLivingSpace
1052
+ args['ducts_return_location'] = HPXML::LocationLivingSpace
1053
+ elsif ['warning-multipliers-without-tv-plug-loads.xml'].include? hpxml_file
1054
+ args['misc_plug_loads_television_annual_kwh'] = 0.0
1055
+ elsif ['warning-multipliers-without-other-plug-loads.xml'].include? hpxml_file
1056
+ args['misc_plug_loads_other_annual_kwh'] = 0.0
1057
+ elsif ['warning-multipliers-without-well-pump-plug-loads.xml'].include? hpxml_file
1058
+ args['misc_plug_loads_well_pump_annual_kwh'] = 0.0
1059
+ args['misc_plug_loads_well_pump_usage_multiplier'] = 1.0
1060
+ elsif ['warning-multipliers-without-vehicle-plug-loads.xml'].include? hpxml_file
1061
+ args['misc_plug_loads_vehicle_annual_kwh'] = 0.0
1062
+ args['misc_plug_loads_vehicle_usage_multiplier'] = 1.0
1063
+ elsif ['warning-multipliers-without-fuel-loads.xml'].include? hpxml_file
1064
+ args['misc_fuel_loads_grill_usage_multiplier'] = 1.0
1065
+ args['misc_fuel_loads_lighting_usage_multiplier'] = 1.0
1066
+ args['misc_fuel_loads_fireplace_usage_multiplier'] = 1.0
1067
+ end
1068
+ end
288
1069
 
289
- # These are treated the same in the model, so allow tested/rated comparison
290
- ventilation_fan.rated_flow_rate = ventilation_fan.tested_flow_rate
291
- ventilation_fan.tested_flow_rate = nil
292
- end
293
- hpxml.hvac_controls.each do |hvac_control|
294
- hvac_control.control_type = nil # Not used by model
295
- end
296
- if hpxml.hvac_distributions.length > 0
297
- (2..hpxml.hvac_distributions[0].ducts.length).to_a.reverse.each do |i|
298
- hpxml.hvac_distributions[0].ducts.delete_at(i) # Only compare first two ducts
299
- end
300
- end
301
- hpxml.water_heating_systems.each do |wh|
302
- wh.performance_adjustment = nil # Detailed input not exposed
303
- wh.heating_capacity = nil # Detailed input not exposed
304
- end
305
- if hpxml.refrigerators.length > 0
306
- (2..hpxml.refrigerators.length).to_a.reverse.each do |i|
307
- hpxml.refrigerators.delete_at(i) # Only compare first two refrigerators
308
- end
309
- end
310
- hpxml.refrigerators.each do |refrigerator|
311
- refrigerator.primary_indicator = nil
312
- refrigerator.adjusted_annual_kwh = nil
313
- refrigerator.weekday_fractions = nil
314
- refrigerator.weekend_fractions = nil
315
- refrigerator.monthly_multipliers = nil
316
- end
317
- if hpxml.freezers.length > 0
318
- (1..hpxml.freezers.length).to_a.reverse.each do |i|
319
- hpxml.freezers.delete_at(i) # Only compare first freezer
320
- end
321
- end
322
- hpxml.freezers.each do |freezer|
323
- freezer.weekday_fractions = nil
324
- freezer.weekend_fractions = nil
325
- freezer.monthly_multipliers = nil
326
- end
327
- hpxml.cooking_ranges.each do |cooking_range|
328
- cooking_range.weekday_fractions = nil
329
- cooking_range.weekend_fractions = nil
330
- cooking_range.monthly_multipliers = nil
331
- end
332
- hpxml.pools.each do |pool|
333
- pool.pump_weekday_fractions = nil
334
- pool.pump_weekend_fractions = nil
335
- pool.pump_monthly_multipliers = nil
336
- pool.heater_weekday_fractions = nil
337
- pool.heater_weekend_fractions = nil
338
- pool.heater_monthly_multipliers = nil
339
- end
340
- hpxml.hot_tubs.each do |hot_tub|
341
- hot_tub.pump_weekday_fractions = nil
342
- hot_tub.pump_weekend_fractions = nil
343
- hot_tub.pump_monthly_multipliers = nil
344
- hot_tub.heater_weekday_fractions = nil
345
- hot_tub.heater_weekend_fractions = nil
346
- hot_tub.heater_monthly_multipliers = nil
347
- end
348
- hpxml.lighting.interior_weekday_fractions = nil
349
- hpxml.lighting.interior_weekend_fractions = nil
350
- hpxml.lighting.interior_monthly_multipliers = nil
351
- hpxml.lighting.exterior_weekday_fractions = nil
352
- hpxml.lighting.exterior_weekend_fractions = nil
353
- hpxml.lighting.exterior_monthly_multipliers = nil
354
- hpxml.lighting.garage_weekday_fractions = nil
355
- hpxml.lighting.garage_weekend_fractions = nil
356
- hpxml.lighting.garage_monthly_multipliers = nil
357
- hpxml.lighting.holiday_weekday_fractions = nil
358
- hpxml.lighting.holiday_weekend_fractions = nil
359
- hpxml.plug_loads.each do |plug_load|
360
- plug_load.weekday_fractions = nil
361
- plug_load.weekend_fractions = nil
362
- plug_load.monthly_multipliers = nil
363
- end
364
- hpxml.fuel_loads.each do |fuel_load|
365
- fuel_load.weekday_fractions = nil
366
- fuel_load.weekend_fractions = nil
367
- fuel_load.monthly_multipliers = nil
368
- end
369
- hpxml.pv_systems.each do |pv_system|
370
- pv_system.year_modules_manufactured = nil
371
- end
372
- hpxml.collapse_enclosure_surfaces()
1070
+ def _test_measure(args_hash, expected_error, expected_warning)
1071
+ # create an instance of the measure
1072
+ measure = BuildResidentialHPXML.new
373
1073
 
374
- # Replace IDs/IDREFs with blank strings
375
- HPXML::HPXML_ATTRS.each do |attr|
376
- hpxml_obj = hpxml.send(attr)
377
- next unless hpxml_obj.is_a? HPXML::BaseArrayElement
1074
+ runner = OpenStudio::Measure::OSRunner.new(OpenStudio::WorkflowJSON.new)
1075
+ model = OpenStudio::Model::Model.new
378
1076
 
379
- hpxml_obj.each do |obj|
380
- obj.class::ATTRS.each do |obj_attr|
381
- next unless obj_attr.to_s.end_with?('id') || obj_attr.to_s.end_with?('_idref')
1077
+ # get arguments
1078
+ arguments = measure.arguments(model)
1079
+ argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
382
1080
 
383
- obj.send(obj_attr.to_s + '=', '')
384
- end
1081
+ # populate argument with specified hash value if specified
1082
+ arguments.each do |arg|
1083
+ temp_arg_var = arg.clone
1084
+ if args_hash.has_key?(arg.name)
1085
+ retval = temp_arg_var.setValue(args_hash[arg.name])
1086
+ if not retval # Try passing as string instead
1087
+ assert(temp_arg_var.setValue(args_hash[arg.name].to_s))
385
1088
  end
386
1089
  end
1090
+ argument_map[arg.name] = temp_arg_var
387
1091
  end
1092
+ args_hash.keys.each do |arg_name|
1093
+ next if argument_map.keys.include? arg_name
388
1094
 
389
- rakefile_doc = hpxml_objs['Rakefile'].to_oga()
390
- measure_doc = hpxml_objs['BuildResidentialHPXML'].to_oga()
391
-
392
- # Write files for inspection?
393
- if rakefile_doc.to_xml != measure_doc.to_xml
394
- rakefile_path = File.join(File.dirname(__FILE__), 'test_rakefile.xml')
395
- XMLHelper.write_file(rakefile_doc, rakefile_path)
396
- measure_path = File.join(File.dirname(__FILE__), 'test_measure.xml')
397
- XMLHelper.write_file(measure_doc, measure_path)
398
- flunk "ERROR: HPXML files don't match. Wrote #{rakefile_path} and #{measure_path} for inspection."
399
- else
400
- pass
1095
+ fail "Unexpected argument name: #{arg_name}"
401
1096
  end
402
- end
403
1097
 
404
- def _setup(this_dir)
405
- rundir = File.join(this_dir, 'run')
406
- _rm_path(rundir)
407
- Dir.mkdir(rundir)
408
- end
1098
+ # run the measure
1099
+ measure.run(model, runner, argument_map)
1100
+ result = runner.result
409
1101
 
410
- def _rm_path(path)
411
- if Dir.exist?(path)
412
- FileUtils.rm_r(path)
1102
+ # assert whether it ran correctly
1103
+ if expected_error.nil?
1104
+ # show the output
1105
+ show_output(result) unless result.value.valueName == 'Success'
1106
+
1107
+ assert_equal('Success', result.value.valueName)
1108
+ assert(File.exist?(args_hash['hpxml_path']))
1109
+ else
1110
+ assert_equal('Fail', result.value.valueName)
1111
+ assert(!File.exist?(args_hash['hpxml_path']))
413
1112
  end
414
- while true
415
- break if not Dir.exist?(path)
416
1113
 
417
- sleep(0.01)
1114
+ # check warnings/errors
1115
+ if not expected_error.nil?
1116
+ if runner.result.stepErrors.select { |s| s == expected_error }.size <= 0
1117
+ runner.result.stepErrors.each do |s|
1118
+ puts "ERROR: #{s}"
1119
+ end
1120
+ end
1121
+ assert(runner.result.stepErrors.select { |s| s == expected_error }.size > 0)
1122
+ end
1123
+ if not expected_warning.nil?
1124
+ if runner.result.stepWarnings.select { |s| s == expected_warning }.size <= 0
1125
+ runner.result.stepErrors.each do |s|
1126
+ puts "WARNING: #{s}"
1127
+ end
1128
+ end
1129
+ assert(runner.result.stepWarnings.select { |s| s == expected_warning }.size > 0)
418
1130
  end
419
1131
  end
420
1132
  end