openstudio-model-articulation 0.3.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -1
  3. data/CHANGELOG.md +28 -0
  4. data/Gemfile +6 -0
  5. data/Jenkinsfile +1 -0
  6. data/LICENSE.md +1 -1
  7. data/README.md +22 -3
  8. data/doc_templates/LICENSE.md +1 -1
  9. data/doc_templates/copyright_erb.txt +1 -1
  10. data/doc_templates/copyright_js.txt +1 -1
  11. data/doc_templates/copyright_ruby.txt +1 -1
  12. data/lib/measures/AssignConstructionSetToBuilding/LICENSE.md +1 -1
  13. data/lib/measures/AssignConstructionSetToBuilding/measure.rb +1 -1
  14. data/lib/measures/AssignConstructionSetToBuilding/measure.xml +16 -15
  15. data/lib/measures/AssignSpaceTypeBySpaceName/LICENSE.md +1 -1
  16. data/lib/measures/AssignSpaceTypeBySpaceName/measure.rb +1 -1
  17. data/lib/measures/AssignSpaceTypeBySpaceName/measure.xml +32 -13
  18. data/lib/measures/AssignSpaceTypeToBuilding/LICENSE.md +1 -1
  19. data/lib/measures/AssignSpaceTypeToBuilding/measure.rb +1 -1
  20. data/lib/measures/AssignSpaceTypeToBuilding/measure.xml +16 -15
  21. data/lib/measures/AssignSpacesToStories/LICENSE.md +1 -1
  22. data/lib/measures/AssignSpacesToStories/measure.rb +3 -5
  23. data/lib/measures/AssignSpacesToStories/measure.xml +14 -13
  24. data/lib/measures/BarAspectRatioStudy/LICENSE.md +1 -1
  25. data/lib/measures/BarAspectRatioStudy/measure.rb +3 -2
  26. data/lib/measures/BarAspectRatioStudy/measure.xml +8 -7
  27. data/lib/measures/CleanupSpaceOrigins/LICENSE.md +1 -1
  28. data/lib/measures/CleanupSpaceOrigins/measure.rb +4 -1
  29. data/lib/measures/CleanupSpaceOrigins/measure.xml +14 -13
  30. data/lib/measures/FindAndReplaceObjectNames/LICENSE.md +1 -1
  31. data/lib/measures/FindAndReplaceObjectNames/measure.rb +1 -1
  32. data/lib/measures/FindAndReplaceObjectNames/measure.xml +13 -12
  33. data/lib/measures/InjectOsmGeometryIntoAnExternalIdf/LICENSE.md +1 -1
  34. data/lib/measures/InjectOsmGeometryIntoAnExternalIdf/measure.rb +3 -3
  35. data/lib/measures/InjectOsmGeometryIntoAnExternalIdf/measure.xml +28 -10
  36. data/lib/measures/RemoveHardAssignedConstructions/LICENSE.md +1 -1
  37. data/lib/measures/RemoveHardAssignedConstructions/measure.rb +1 -1
  38. data/lib/measures/RemoveHardAssignedConstructions/measure.xml +13 -12
  39. data/lib/measures/RenameSpaceSurfacesBasedonParentSpaceandOrientation/LICENSE.md +1 -1
  40. data/lib/measures/RenameSpaceSurfacesBasedonParentSpaceandOrientation/measure.rb +1 -1
  41. data/lib/measures/RenameSpaceSurfacesBasedonParentSpaceandOrientation/measure.xml +42 -11
  42. data/lib/measures/RotateBuilding/LICENSE.md +1 -1
  43. data/lib/measures/RotateBuilding/measure.rb +1 -1
  44. data/lib/measures/RotateBuilding/measure.xml +13 -12
  45. data/lib/measures/SetExtWallToGroundBoundaryConditionByStory/LICENSE.md +1 -1
  46. data/lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb +1 -1
  47. data/lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.xml +17 -10
  48. data/lib/measures/SetInteriorWallsAndFloorsToAdiabatic/LICENSE.md +1 -1
  49. data/lib/measures/SetInteriorWallsAndFloorsToAdiabatic/measure.rb +2 -2
  50. data/lib/measures/SetInteriorWallsAndFloorsToAdiabatic/measure.xml +13 -12
  51. data/lib/measures/SetInteriorWallsToSelectedConstruction/LICENSE.md +1 -1
  52. data/lib/measures/SetInteriorWallsToSelectedConstruction/measure.rb +2 -2
  53. data/lib/measures/SetInteriorWallsToSelectedConstruction/measure.xml +13 -12
  54. data/lib/measures/SetWindowToWallRatioByFacade/LICENSE.md +1 -1
  55. data/lib/measures/SetWindowToWallRatioByFacade/README.md +11 -0
  56. data/lib/measures/SetWindowToWallRatioByFacade/measure.rb +91 -143
  57. data/lib/measures/SetWindowToWallRatioByFacade/measure.xml +32 -11
  58. data/lib/measures/SetWindowToWallRatioByFacade/resources/functions.rb +176 -0
  59. data/lib/measures/SimplifyGeometryToSlicedBar/LICENSE.md +1 -1
  60. data/lib/measures/SimplifyGeometryToSlicedBar/measure.rb +9 -5
  61. data/lib/measures/SimplifyGeometryToSlicedBar/measure.xml +31 -13
  62. data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_cofee.rb +7 -5
  63. data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_geometry.rb +14 -9
  64. data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_helper_methods.rb +3 -5
  65. data/lib/measures/SpaceTypeAndConstructionSetWizard/LICENSE.md +1 -1
  66. data/lib/measures/SpaceTypeAndConstructionSetWizard/measure.rb +2 -2
  67. data/lib/measures/SpaceTypeAndConstructionSetWizard/measure.xml +63 -11
  68. data/lib/measures/SurfaceMatching/LICENSE.md +1 -1
  69. data/lib/measures/SurfaceMatching/measure.rb +2 -1
  70. data/lib/measures/SurfaceMatching/measure.xml +13 -12
  71. data/lib/measures/{BarAspectRatioSlicedBySpaceType → add_empd_material_properties}/LICENSE.md +1 -1
  72. data/lib/measures/add_empd_material_properties/README.md +116 -0
  73. data/lib/measures/{BarAspectRatioSlicedBySpaceType → add_empd_material_properties}/README.md.erb +0 -0
  74. data/lib/measures/add_empd_material_properties/docs/.gitkeep +0 -0
  75. data/lib/measures/add_empd_material_properties/measure.rb +247 -0
  76. data/lib/measures/add_empd_material_properties/measure.xml +201 -0
  77. data/lib/measures/blended_space_type_from_floor_area_ratios/LICENSE.md +1 -1
  78. data/lib/measures/blended_space_type_from_floor_area_ratios/measure.rb +5 -4
  79. data/lib/measures/blended_space_type_from_floor_area_ratios/measure.xml +5 -5
  80. data/lib/measures/blended_space_type_from_model/LICENSE.md +1 -1
  81. data/lib/measures/blended_space_type_from_model/{resources → docs}/replace_occupied_spaces_with_blended_space_type_design_doc.txt +0 -0
  82. data/lib/measures/blended_space_type_from_model/measure.rb +16 -4
  83. data/lib/measures/blended_space_type_from_model/measure.xml +16 -22
  84. data/lib/measures/clone_building_from_external_model/LICENSE.md +1 -1
  85. data/lib/measures/clone_building_from_external_model/measure.rb +1 -1
  86. data/lib/measures/clone_building_from_external_model/measure.xml +5 -5
  87. data/lib/measures/create_DOE_prototype_building/LICENSE.md +1 -1
  88. data/lib/measures/create_DOE_prototype_building/measure.rb +4 -3
  89. data/lib/measures/create_DOE_prototype_building/measure.xml +163 -27
  90. data/lib/measures/create_and_assign_thermal_zones_for_unassigned_spaces/LICENSE.md +1 -1
  91. data/lib/measures/create_and_assign_thermal_zones_for_unassigned_spaces/measure.rb +1 -1
  92. data/lib/measures/create_and_assign_thermal_zones_for_unassigned_spaces/measure.xml +5 -5
  93. data/lib/measures/create_bar_from_building_type_ratios/LICENSE.md +1 -1
  94. data/lib/measures/create_bar_from_building_type_ratios/README.md +109 -35
  95. data/lib/measures/create_bar_from_building_type_ratios/README.md.erb +54 -35
  96. data/lib/measures/create_bar_from_building_type_ratios/measure.rb +9 -4
  97. data/lib/measures/create_bar_from_building_type_ratios/measure.xml +124 -12
  98. data/lib/measures/create_bar_from_deer_building_type_ratios/LICENSE.md +1 -1
  99. data/lib/measures/create_bar_from_deer_building_type_ratios/README.md +301 -79
  100. data/lib/measures/create_bar_from_deer_building_type_ratios/README.md.erb +62 -79
  101. data/lib/measures/create_bar_from_deer_building_type_ratios/measure.rb +10 -5
  102. data/lib/measures/create_bar_from_deer_building_type_ratios/measure.xml +15 -59
  103. data/lib/measures/create_bar_from_doe_building_type_ratios/LICENSE.md +1 -1
  104. data/lib/measures/create_bar_from_doe_building_type_ratios/README.md +298 -57
  105. data/lib/measures/create_bar_from_doe_building_type_ratios/README.md.erb +54 -57
  106. data/lib/measures/create_bar_from_doe_building_type_ratios/measure.rb +10 -5
  107. data/lib/measures/create_bar_from_doe_building_type_ratios/measure.xml +122 -14
  108. data/lib/measures/create_bar_from_model/LICENSE.md +1 -1
  109. data/lib/measures/create_bar_from_model/measure.rb +11 -7
  110. data/lib/measures/create_bar_from_model/measure.xml +5 -5
  111. data/lib/measures/create_bar_from_space_type_ratios/LICENSE.md +27 -0
  112. data/lib/measures/create_bar_from_space_type_ratios/README.md +556 -0
  113. data/lib/measures/create_bar_from_space_type_ratios/README.md.erb +324 -0
  114. data/lib/measures/create_bar_from_space_type_ratios/docs/ar_05.png +0 -0
  115. data/lib/measures/create_bar_from_space_type_ratios/docs/ar_1.png +0 -0
  116. data/lib/measures/create_bar_from_space_type_ratios/docs/ar_2.png +0 -0
  117. data/lib/measures/create_bar_from_space_type_ratios/docs/bar_double_loaded.png +0 -0
  118. data/lib/measures/create_bar_from_space_type_ratios/docs/bar_single_core_perim.png +0 -0
  119. data/lib/measures/create_bar_from_space_type_ratios/docs/bar_sliced_indiv.png +0 -0
  120. data/lib/measures/create_bar_from_space_type_ratios/docs/bar_sliced_simple.png +0 -0
  121. data/lib/measures/create_bar_from_space_type_ratios/docs/basement.png +0 -0
  122. data/lib/measures/create_bar_from_space_type_ratios/docs/custom_height_false.png +0 -0
  123. data/lib/measures/create_bar_from_space_type_ratios/docs/custom_height_true.png +0 -0
  124. data/lib/measures/create_bar_from_space_type_ratios/docs/no_party_mult.png +0 -0
  125. data/lib/measures/create_bar_from_space_type_ratios/docs/party.png +0 -0
  126. data/lib/measures/create_bar_from_space_type_ratios/docs/party_multi.png +0 -0
  127. data/lib/measures/create_bar_from_space_type_ratios/docs/perim_mult_2010.png +0 -0
  128. data/lib/measures/create_bar_from_space_type_ratios/docs/perim_mult_2012.png +0 -0
  129. data/lib/measures/create_bar_from_space_type_ratios/docs/perim_mult_2020.png +0 -0
  130. data/lib/measures/create_bar_from_space_type_ratios/docs/sep_05.png +0 -0
  131. data/lib/measures/create_bar_from_space_type_ratios/docs/sep_10.png +0 -0
  132. data/lib/measures/create_bar_from_space_type_ratios/docs/sep_3.png +0 -0
  133. data/lib/measures/create_bar_from_space_type_ratios/docs/story_sort.png +0 -0
  134. data/lib/measures/create_bar_from_space_type_ratios/docs/wwr_custom.png +0 -0
  135. data/lib/measures/create_bar_from_space_type_ratios/measure.rb +314 -0
  136. data/lib/measures/create_bar_from_space_type_ratios/measure.xml +687 -0
  137. data/lib/measures/create_baseline_building/LICENSE.md +1 -1
  138. data/lib/measures/create_baseline_building/measure.rb +4 -3
  139. data/lib/measures/create_baseline_building/measure.xml +5 -5
  140. data/lib/measures/create_deer_prototype_building/LICENSE.md +1 -1
  141. data/lib/measures/create_deer_prototype_building/measure.rb +1 -1
  142. data/lib/measures/create_deer_prototype_building/measure.xml +6 -6
  143. data/lib/measures/create_deer_prototype_building/resources/deer_building_types.rb +1 -1
  144. data/lib/measures/create_parametric_schedules/LICENSE.md +1 -1
  145. data/lib/measures/create_parametric_schedules/measure.rb +16 -11
  146. data/lib/measures/create_parametric_schedules/measure.xml +5 -5
  147. data/lib/measures/create_typical_building_from_model/LICENSE.md +1 -1
  148. data/lib/measures/create_typical_building_from_model/README.md +82 -17
  149. data/lib/measures/create_typical_building_from_model/README.md.erb +36 -16
  150. data/lib/measures/create_typical_building_from_model/measure.rb +8 -6
  151. data/lib/measures/create_typical_building_from_model/measure.xml +59 -27
  152. data/lib/measures/create_typical_building_from_model/resources/Model.hvac.rb +8 -5
  153. data/lib/measures/create_typical_deer_building_from_model/LICENSE.md +1 -1
  154. data/lib/measures/create_typical_deer_building_from_model/README.md +173 -53
  155. data/lib/measures/create_typical_deer_building_from_model/README.md.erb +57 -53
  156. data/lib/measures/create_typical_deer_building_from_model/measure.rb +8 -3
  157. data/lib/measures/create_typical_deer_building_from_model/measure.xml +26 -26
  158. data/lib/measures/create_typical_deer_building_from_model/resources/Model.hvac.rb +8 -5
  159. data/lib/measures/create_typical_doe_building_from_model/LICENSE.md +1 -1
  160. data/lib/measures/create_typical_doe_building_from_model/README.md +182 -44
  161. data/lib/measures/create_typical_doe_building_from_model/README.md.erb +58 -44
  162. data/lib/measures/create_typical_doe_building_from_model/measure.rb +8 -3
  163. data/lib/measures/create_typical_doe_building_from_model/measure.xml +60 -28
  164. data/lib/measures/create_typical_doe_building_from_model/resources/Model.hvac.rb +8 -5
  165. data/lib/measures/deer_space_type_and_construction_set_wizard/LICENSE.md +1 -1
  166. data/lib/measures/deer_space_type_and_construction_set_wizard/measure.rb +2 -2
  167. data/lib/measures/deer_space_type_and_construction_set_wizard/measure.xml +17 -17
  168. data/lib/measures/find_and_replace_in_all_thermal_zone_names/LICENSE.md +1 -1
  169. data/lib/measures/find_and_replace_in_all_thermal_zone_names/measure.rb +1 -1
  170. data/lib/measures/find_and_replace_in_all_thermal_zone_names/measure.xml +8 -7
  171. data/lib/measures/make_shading_surfaces_based_on_zone_multipliers/LICENSE.md +1 -1
  172. data/lib/measures/make_shading_surfaces_based_on_zone_multipliers/measure.rb +3 -1
  173. data/lib/measures/make_shading_surfaces_based_on_zone_multipliers/measure.xml +5 -5
  174. data/lib/measures/merge_floorspace_js_with_model/LICENSE.md +1 -1
  175. data/lib/measures/merge_floorspace_js_with_model/measure.rb +5 -2
  176. data/lib/measures/merge_floorspace_js_with_model/measure.xml +5 -5
  177. data/lib/measures/merge_spaces_from_external_file/LICENSE.md +1 -1
  178. data/lib/measures/merge_spaces_from_external_file/measure.rb +1 -1
  179. data/lib/measures/merge_spaces_from_external_file/measure.xml +6 -6
  180. data/lib/measures/merge_spaces_from_external_file/resources/ScheduleTranslator.rb +1 -1
  181. data/lib/measures/radiance_measure/LICENSE.md +1 -1
  182. data/lib/measures/radiance_measure/measure.rb +63 -57
  183. data/lib/measures/radiance_measure/measure.xml +11 -11
  184. data/lib/measures/radiant_slab_with_doas/LICENSE.md +1 -1
  185. data/lib/measures/radiant_slab_with_doas/measure.rb +9 -2
  186. data/lib/measures/radiant_slab_with_doas/measure.xml +10 -10
  187. data/lib/measures/replace_geometry_by_story/LICENSE.md +1 -1
  188. data/lib/measures/replace_geometry_by_story/measure.rb +5 -1
  189. data/lib/measures/replace_geometry_by_story/measure.xml +5 -5
  190. data/lib/measures/scale_geometry/LICENSE.md +1 -1
  191. data/lib/measures/scale_geometry/measure.rb +1 -1
  192. data/lib/measures/scale_geometry/measure.xml +5 -5
  193. data/lib/openstudio/model_articulation/extension.rb +1 -1
  194. data/lib/openstudio/model_articulation/version.rb +2 -2
  195. data/lib/openstudio/model_articulation.rb +1 -1
  196. data/lib/openstudio-model-articulation.rb +1 -1
  197. data/openstudio-model-articulation.gemspec +3 -3
  198. metadata +42 -16
  199. data/lib/measures/BarAspectRatioSlicedBySpaceType/README.md +0 -64
  200. data/lib/measures/BarAspectRatioSlicedBySpaceType/measure.rb +0 -184
  201. data/lib/measures/BarAspectRatioSlicedBySpaceType/measure.xml +0 -130
  202. data/lib/measures/BarAspectRatioSlicedBySpaceType/resources/os_lib_cofee.rb +0 -252
  203. data/lib/measures/blended_space_type_from_model/resources/os_lib_model_simplification.rb +0 -1049
@@ -12,59 +12,55 @@
12
12
  ## Measure Type
13
13
  <%= measureType %>
14
14
 
15
- [//]: # (Commenting out until it works in SDK)
16
- [//]: # (## Taxonomy)
17
- [//]: # (<%= taxonomy %>)
15
+ [//]: # (Only finds value if taxonomy method is added to measure.rb, won't read out of measure.xml)
16
+ ## Taxonomy
17
+ <%= taxonomy %>
18
18
 
19
19
  ___
20
20
  ## Table of Contents
21
21
  - [Measure Overview](#measure-overview)<br/>
22
22
  - [DOE Template and Building Type Mapping](#doe-template-and-building-type-mapping)<br/>
23
- - [Building Type Mix](#building-type-mix)<br/>
24
- - [Floor Area](#floor-area)<br/>
25
- - [Height, Stories, and Orientation](#height-stories-and-orientation)<br/>
26
- - [Building Shape](#building-shape)<br/>
27
- - [Window to Wall Ratio](#window-to-wall-ratio)<br/>
28
- - [Party Walls and Exposure of Top and Bottom Stories](#party-walls-and-exposure-of-top-and-bottom-stories)<br/>
29
- - [Calculation Methods and Articulation Logic](#calculation-methods-and-articulation-logic)<br/>
23
+ - [Functionality and Input Overview](#functionality-and-input-overview)<br/>
24
+ - [Building Type Mix](#building-type-mix)<br/>
25
+ - [Floor Area](#floor-area)<br/>
26
+ - [Height, Stories, and Orientation](#height-stories-and-orientation)<br/>
27
+ - [Template](#template)<br/>
28
+ - [Building Shape](#building-shape)<br/>
29
+ - [Window to Wall Ratio](#window-to-wall-ratio)<br/>
30
+ - [Party Walls and Exposure of Top and Bottom Stories](#party-walls-and-exposure-of-top-and-bottom-stories)<br/>
31
+ - [Calculation Methods and Articulation Logic](#calculation-methods-and-articulation-logic)<br/>
30
32
  - [Development Comments](#development-comments)<br/>
31
33
  - [Automatically Generated Argument List](#arguments)<br/>
32
34
 
33
35
  ## Measure Overview
34
36
 
35
- The intent of this measure is to create basic geometry given a mix of building types and high level characteristics about the building envelope like the number of stories, aspect ratio, orientation etc. This will result in one or more rectangular building elements. The spaces will have stub space type assignments but will not have any internal loads or and the surfaces will not have constructions. The stub space type ratios are based on DOE prototype buildings, depending on the building type you select. The typical workflow is to run other measures after this measure that populate the stub space types and other model elements. This measure has 38 arguments and can look intimidating, but all of them have defaults, so it will run properly without you changing any arguments; however at a minimum you will typically want to at least choose the primary building type, building floor area, and number of stories above grade. Make use of additional arguments as you have a need to.
37
+ The intent of this measure is to create basic geometry given a mix of building types and high level characteristics about the building envelope like the number of stories, aspect ratio, orientation etc. This will result in one or more rectangular building elements. The spaces will have stub space type assignments but will not have any internal loads or and the surfaces will not have constructions. The stub space type ratios are based on DOE prototype buildings, depending on the building type you select. The typical workflow is to run other measures after this measure that populate the stub space types and other model elements. This measure has more than 30 arguments and can look intimidating, but all of them have defaults, so it will run properly without you changing any arguments; however at a minimum you will typically want to at least choose the primary building type, building floor area, and number of stories above grade. Make use of additional arguments as you have a need to.
36
38
 
37
- This is generally meant to run on an empty model, but it does not activily delete any geometry or objects that may already be in the model.
39
+ This is generally meant to run on an empty model, but it does not actively delete any geometry or objects that may already be in the model.
38
40
 
39
41
  ## DOE Template and Building Type Mapping
40
42
 
41
- - Templates:
42
- - DOE Ref Pre-1980
43
- - DOE Ref 1980 - 2004
44
- - 90.1-2004
45
- - 90.1-2007
46
- - 90.1-2010
47
- - 90.1-2013
48
- - Building Types:
49
- - SecondarySchool
50
- - PrimarySchool
51
- - SmallOffice
52
- - MediumOffice
53
- - LargeOffice
54
- - SmallHotel
55
- - LargeHotel
56
- - Warehouse
57
- - RetailStandalone
58
- - RetailStripmall
59
- - QuickServiceRestaurant
60
- - FullServiceRestaurant
61
- - MidriseApartment
62
- - HighriseApartment
63
- - Hospital
64
- - Outpatient
65
- - SuperMarket
66
-
67
- [//]: # (Would be nice to make these lists dynamic from the measure to they don't become outdated)
43
+ The Templates prefixed with "Comstock"" have been slightly modified over the template of the same name without the prefix to be more representation of general use inputs."
44
+
45
+ #### Templates:
46
+ <% arguments.each do |argument| %>
47
+ <% if argument[:name] == 'template'%>
48
+ <% argument[:choice_display_names].each do |choice|%>
49
+ - <%= choice %><br/>
50
+ <% end %>
51
+ <% end %>
52
+ <% end %>
53
+
54
+ #### Building Types::
55
+ <% arguments.each do |argument| %>
56
+ <% if argument[:name] == 'bldg_type_a'%>
57
+ <% argument[:choice_display_names].each do |choice|%>
58
+ - <%= choice %><br/>
59
+ <% end %>
60
+ <% end %>
61
+ <% end %>
62
+
63
+ [//]: # (argument values for template and bldg_type_a are dynamically generated from current version of the measure.)
68
64
 
69
65
  ## Functionality and Input Overview
70
66
 
@@ -76,7 +72,7 @@ Building Type A is an exception from the others in that it doesn't have an argum
76
72
 
77
73
  #### Floor Area
78
74
 
79
- The typical use case for this measure is to set the total building floor area using the `Total Building Floor Area` argument. With this approach you can maintain a set building floor area while changing the number of stories. An alternate workflow is to set a static footprint area. This alternate workflow is enabled by seeting a non-zero value for the `Single Floor Area` argument.
75
+ The typical use case for this measure is to set the total building floor area using the `Total Building Floor Area` argument. With this approach you can maintain a set building floor area while changing the number of stories. An alternate workflow is to set a static footprint area. This alternate workflow is enabled by setting a non-zero value for the `Single Floor Area` argument.
80
76
 
81
77
  [//]: # (todo - add screenshot of same floor area on different num stories and shapes)
82
78
 
@@ -84,7 +80,7 @@ The typical use case for this measure is to set the total building floor area us
84
80
 
85
81
  The Floor to floor height for the building is controlled through the `Typical Floor to FLoor Height` argument. It is the first of a number of arguments where a value of 0 represents a **smart default**. If leave the default value of zero in place it will pick a building specific floor to floor height. For example 9' would be picked for a small hotel and 14' for a hospital.
86
82
 
87
- Some building types have space type specific definitions for height that can be enabled with the `Enable Custom Height Bar Application` argument. If I building doesn't have any custom heights defined the value of this argument will not matter. One example of where this argument would have an impact is for the gym and auditorum in the SecondarySchool which would have a height 26' instead of the default school height of 13'. This is accomplished by pulling space types with a custom height into a separate rectangular building that sits away from the main structure. If this argument is set to false then all of the space types will have the same height, which for the school would be the default of 13'
83
+ Some building types have space type specific definitions for height that can be enabled with the `Enable Custom Height Bar Application` argument. If I building doesn't have any custom heights defined the value of this argument will not matter. One example of where this argument would have an impact is for the gym and auditorium in the SecondarySchool which would have a height 26' instead of the default school height of 13'. This is accomplished by pulling space types with a custom height into a separate rectangular building that sits away from the main structure. If this argument is set to false then all of the space types will have the same height, which for the school would be the default of 13'
88
84
 
89
85
  ![No Custom Height Space Types](./docs/custom_height_false.png?raw=true)
90
86
  *Secondary school without custom space type heights enabled*
@@ -97,11 +93,11 @@ There are two arguments that control the number of stories the building has. `Nu
97
93
  ![Baesment](./docs/basement.png?raw=true)
98
94
  *Secondary school with 1 below grade story*
99
95
 
100
- The `Building Rotation` argument will rotate the building after the geometry is created. So if you for example make a bar oriented east/west and then rotate it 80 degrees, the end result will be a bar just off of being north/south orientation. A positive value rotates clockwise. If you had a party wall assigned to the south facade, after the 80 degree rotation, those party walls would not be 10 degress south of due west.
96
+ The `Building Rotation` argument will rotate the building after the geometry is created. So if you for example make a bar oriented east/west and then rotate it 80 degrees, the end result will be a bar just off of being north/south orientation. A positive value rotates clockwise. If you had a party wall assigned to the south facade, after the 80 degree rotation, those party walls would not be 10 degrees south of due west.
101
97
 
102
98
  #### Template
103
99
 
104
- The `Template` is uesed in OpenStudio measures and the OpenStudio standards gem to refer to a specific target building code standard or vintage. For exampe ASHRAE 90.1 2004 or the DOE Ref Pre-1980 vintage used for the DOE reference buildings. Template is used here along with the building types selected to define the list and ratios of space types in the model. While generally the space type ratio is the same across different templates there are exceptions to this such as the inclusion of data centers in newer LargeOffice buildings.
100
+ The `Template` is used in OpenStudio measures and the OpenStudio standards gem to refer to a specific target building code standard or vintage. For example ASHRAE 90.1 2004 or the DOE Ref Pre-1980 vintage used for the DOE reference buildings. Template is used here along with the building types selected to define the list and ratios of space types in the model. While generally the space type ratio is the same across different templates there are exceptions to this such as the inclusion of data centers in newer LargeOffice buildings.
105
101
 
106
102
  #### Building Shape
107
103
 
@@ -111,12 +107,12 @@ While the floor area and number of stories arguments determine the size of the b
111
107
  *Aspect Ratio of 2.0*
112
108
 
113
109
  ![Aspect Ratio 1.0](./docs/ar_1.png?raw=true)
114
- *Aspect Ratio of 2.0*
110
+ *Aspect Ratio of 1.0*
115
111
 
116
112
  ![Aspect Ratio 0.5](./docs/ar_05.png?raw=true)
117
113
  *Aspect Ratio of 0.5*
118
114
 
119
- The `Perimeter Multiplier` provides a mechanism to maintain your target footprint floor area and your target aspect ratio while increasing the total exterior perimeter exposure. The intent here is to support, in a simplified way, the impacts of non-rectangular buildings. This is accomplished by adding a second bar when necessary that is turned 90 degrees relative ot the primary bar but maintains the same width. These two building elements are separate from each other and from the custom height bar, if it exists. If you keep the default value of 0.0 the measure will lookup a value inferred from the prototype buidling. For most prototype buidling types this will result in a value of 1.0, because the buildings are rectangular, but for PrimarySchool, SecondarySchool, and Outpatient a value larger than 1.0 will be used. If you use or a smart default of 1.0 applied for this argument you get a single bar. As you increase the multiplier higher than 1.0 it will add a second bar to increase the building perimeter while maintaining both the floor area and the north south to east west aspect ratio. Below is an example of the calculation method. If you use a very small multiplier such as 1.05, a situation may exist that would have too small of a secondary bar to properly model. In this case the single bar will just be extended a bit to achive the target total perimeter, but will sacrifice meeting the requested north/south versus east/west aspect ratio. In some cases with when the multiplier is not high enough above 1 the ends of the secondary bar may be made adiabatic to achive target values.
115
+ The `Perimeter Multiplier` provides a mechanism to maintain your target footprint floor area and your target aspect ratio while increasing the total exterior perimeter exposure. The intent here is to support, in a simplified way, the impacts of non-rectangular buildings. This is accomplished by adding a second bar when necessary that is turned 90 degrees relative ot the primary bar but maintains the same width. These two building elements are separate from each other and from the custom height bar, if it exists. If you keep the default value of 0.0 the measure will lookup a value inferred from the prototype building. For most prototype building types this will result in a value of 1.0, because the buildings are rectangular, but for PrimarySchool, SecondarySchool, and Outpatient a value larger than 1.0 will be used. If you use or a smart default of 1.0 applied for this argument you get a single bar. As you increase the multiplier higher than 1.0 it will add a second bar to increase the building perimeter while maintaining both the floor area and the north south to east west aspect ratio. Below is an example of the calculation method. If you use a very small multiplier such as 1.05, a situation may exist that would have too small of a secondary bar to properly model. In this case the single bar will just be extended a bit to achieve the target total perimeter, but will sacrifice meeting the requested north/south versus east/west aspect ratio. In some cases with when the multiplier is not high enough above 1 the ends of the secondary bar may be made adiabatic to achieve target values.
120
116
 
121
117
  ![Perim Mult b](./docs/perim_mult_2012.png?raw=true)
122
118
  *Aspect Ratio of 2.0 with a Perimeter Multiplier of 1.2. Able to add second bar but needs to have adiabatic ends. See earlier screenshot for Aspect Ratio of 2.0 with Perimeter Multiplier of 1.0*
@@ -131,9 +127,9 @@ The `Perimeter Multiplier` provides a mechanism to maintain your target footprin
131
127
 
132
128
  Representing for example a U shaped footprint (which might have a "Perimeter Multiplier" of 3 or higher) with a single bar would either under-estimate the perimeter if a reduced bounding box was fit around it to match the area, or over skew the orientation if a single long skinny bar was created with almost all of the exposure in only two opposing cardinal directions. A more common term that could have been used for an argument would have been a 1building perimeter to floor area ratio(P/A)`. That was considered but there could have been incompatible inputs passed in where the target P/A isn't possible for the given footprint area and aspect ratio. A 100' square has a P/A of 0.04 while a 1000' square has a ratio 0.004. In addition to changing with size it would also change with the shape of the rectangle. This measure in uses the multiplier to increase the perimeter of the foorprint(s) given a specified area and aspect ratio above the minim possible rectangular perimeter value. If you just want to make a single bar, you can leave the value at 1.0 and not worry about it. As a last note, if you also are using a custom height bar, that excluded from the calculation of the primary bar(s)
133
129
 
134
- `Bar Width` can be specified. If you know due to the layout of your building or other factors that you have a specific building width you would like to have you can enter that in the `Bar Width` argument. `Perimeter Multiplier` will be engored when a non-zero `Bar Width` is used. If you leave this argument value at the default value of 0 then it will not impact the model. A non-zero value here will also bypass the `Perimeter Multiplier` argument.
130
+ `Bar Width` can be specified. If you know due to the layout of your building or other factors that you have a specific building width you would like to have you can enter that in the `Bar Width` argument. `Perimeter Multiplier` will be ignored when a non-zero `Bar Width` is used. If you leave this argument value at the default value of 0 then it will not impact the model. A non-zero value here will also bypass the `Perimeter Multiplier` argument.
135
131
 
136
- `Bar Separation Distance Multiplier` is used when there is more than one bar, to specify the distance between the bars as a multiple of the building height. The default value is 10 x the height of the building, but that can be customized here. Currently 0 is not a valid multiplier, since all the intersection, matching, and fenestration occur in the indivdual bar elements. When two bars are required to meet the `Perimeter Multiplier` target they are in configruation of an with the vertical leg to the right of the horizontal leg, like a backwards "L". If a custom heigth bar was use that will be positioned ot the left of the other bars.
132
+ `Bar Separation Distance Multiplier` is used when there is more than one bar, to specify the distance between the bars as a multiple of the building height. The default value is 10 x the height of the building, but that can be customized here. Currently 0 is not a valid multiplier, since all the intersection, matching, and fenestration occur in the individual bar elements. When two bars are required to meet the `Perimeter Multiplier` target they are in configuration of an with the vertical leg to the right of the horizontal leg, like a backwards "L". If a custom height bar was used that will be positioned to the left of the other bars.
137
133
 
138
134
  ![Sept Dist 0.5](./docs/sep_05.png?raw=true)
139
135
  *Bar Separation Distance Multiplier of 0.5*
@@ -153,7 +149,7 @@ There is just a single `Window to Wall Ratio` argument for this measure. It has
153
149
  ![Custom WWR](./docs/wwr_custom.png?raw=true)
154
150
  *Example of space type specific WWR for warehouse model, shown with custom space type height enabled*
155
151
 
156
- Orientation specific characteristics and/or overhangs may be added to this in the future, but are currenty possible by adding existing measure to the workflow after this measure. Currently skylights are not directly supported either, but can be added outside of this measure.
152
+ Orientation specific characteristics and/or overhangs may be added to this in the future, but are currently possible by adding existing measure to the workflow after this measure. Currently skylights are not directly supported either, but can be added outside of this measure.
157
153
 
158
154
  #### Party Walls and Exposure of Top and Bottom Stories
159
155
 
@@ -163,7 +159,7 @@ There are two approaches for the party walls. One approach is a single fraction
163
159
 
164
160
  The second approach is ideal when you know more about the conditions of a specific condition and allows you to enter an integer for reach cardinal direction with arguments named `Number of North facing stories with party wall` etc. You can for example have a 5 story building that has a 1 story building to the west, a 3 story building to the east, a 2 story building to the north, and exterior exposure to the south. If you are using this as part of a parametric study where number of stories is changeling and you want all of a specific facade to be adjacent to a building that is taller, You can enter an large value such as 99 for the value; the overly large value relative to number of stories in the building will not create any issues.
165
161
 
166
- The ability to model what is essence party floor/ceilings in your model are controlled through two bool arguments named `Is the Bottom Story Exposed to Ground` and `Is the Top Story an Exterior Roof`
162
+ The ability to model what is in essence party floor/ceilings in your model are controlled through two bool arguments named `Is the Bottom Story Exposed to Ground` and `Is the Top Story an Exterior Roof`
167
163
 
168
164
  ![Party Wall](./docs/party.png?raw=true)
169
165
  *1 story Party wall on south, 2 story on east, story multipliers not enabled*
@@ -176,11 +172,11 @@ The ability to model what is essence party floor/ceilings in your model are cont
176
172
 
177
173
  #### Calculation Methods and Articulation Logic
178
174
 
179
- - `Calculation Method for Story Multiplier` is used to determine if zone multipliers should be used as story multipliers on taller buildings. This reduces the nubmer of zones and should speed up simulations, but may not be approriate in all cases. If you select a value of `None` then no (non 1) zone multipliers will be used and zones will be modeled for all building stories. The other choice currently available is `Basements Ground Mid Top` which for a building without party walls will never have more than 4 modeled stories regardless of the number of stories. The measure will evaluate uniqueness of stories taking into account party walls and may add additional stories to accommodate this. Note that while the size of space types on a story with a multiplier greater than 1 may appear smaller, they may be larger once the multiplier is applied. More options may be added in the future, specifically vacations of something like `Basements Ground Midx5 Top` that for very tall buildings would and multiple mid-stories vs. a single mid-story.
175
+ - `Calculation Method for Story Multiplier` is used to determine if zone multipliers should be used as story multipliers on taller buildings. This reduces the number of zones and should speed up simulations, but may not be appropriate in all cases. If you select a value of `None` then no (non 1) zone multipliers will be used and zones will be modeled for all building stories. The other choice currently available is `Basements Ground Mid Top` which for a building without party walls will never have more than 4 modeled stories regardless of the number of stories. The measure will evaluate uniqueness of stories taking into account party walls and may add additional stories to accommodate this. Note that while the size of space types on a story with a multiplier greater than 1 may appear smaller, they may be larger once the multiplier is applied. More options may be added in the future, specifically vacations of something like `Basements Ground Midx5 Top` that for very tall buildings would and multiple mid-stories vs. a single mid-story.
180
176
 
181
177
  - `Make Mid Story Floor Surfaces Adiabatic` determines of surface intersection and surface matching should be applied between stories (when they are adjacent and capable of being matched e.g. story multiplier not used). Setting this to true can reduce the number of surfaces in the model
182
178
 
183
- - `Division Method for Bar Space Types` is used to determine how the internal zoning and space type division of the bar(s) is approached. The default vaue of `Multiple Space Types - Individual Stories Sliced` is the primary method that should be used. It creates what looks like a core and perimeter model, but slices it up by space type, with large space types moving towards the upper stories. There is some basic logic to minimize small slivers of a space type being createe that would create thermal zones with small volumes that may not simulate well. The two largest space types will be at the ends of the bars to minimize having excessive exterior exosure on a zone with a small floor area. `Multiple Space Types - Simple Sliced` is an earlier method that pre-dates the indivdual sliced stories. The logic is similar but it puts all space types on every building story and creates multiple stories with the exact same slicing logic. `Single Space Type - Core and Perimeter` is not sliced up by space type and isn't relevant for building types with multiple space types. If you do have a building type with only a single space type, like small or medium office, the multiple space type methods will still work. The single space type method will eventually be deprecated.
179
+ - `Division Method for Bar Space Types` is used to determine how the internal zoning and space type division of the bar(s) is approached. The default value of `Multiple Space Types - Individual Stories Sliced` is the primary method that should be used. It creates what looks like a core and perimeter model, but slices it up by space type, with large space types moving towards the upper stories. There is some basic logic to minimize small slivers of a space type being created that would create thermal zones with small volumes that may not simulate well. The two largest space types will be at the ends of the bars to minimize having excessive exterior exposure on a zone with a small floor area. `Multiple Space Types - Simple Sliced` is an earlier method that pre-dates the individual sliced stories. The logic is similar but it puts all space types on every building story and creates multiple stories with the exact same slicing logic. `Single Space Type - Core and Perimeter` is not sliced up by space type and isn't relevant for building types with multiple space types. If you do have a building type with only a single space type, like small or medium office, the multiple space type methods will still work. The single space type method will eventually be deprecated.
184
180
 
185
181
  ![Individualy Sliced](./docs/bar_sliced_indiv.png?raw=true)
186
182
  *Multiple Space Types - Individual Stories Slice method that has been used through the examples above*
@@ -191,23 +187,21 @@ The ability to model what is essence party floor/ceilings in your model are cont
191
187
  ![Single Core Perimeter](./docs/bar_single_core_perim.png?raw=true)
192
188
  *Single Space Type - Core and Perimeter, should not be a reason to use this*
193
189
 
194
- - The `Double Loaded Corridor` arguemtn when enabled, take a circulation space type, when it exists, and pair it with the default space type, and will create a double loaded corridor for the space division and theral zoning, instead of the typical sliced core and perimeter zoning. This not only alters the geometry of the internal division, but creates a hybrid slice that instead of being a single space type, contains a circulation space type running down the center of the bar, surrounded by spaces of another space type. For an example, with a primary school the corridor will be paired with the classrooms. The width of the corridor is determined to achive the proper space type ratios of the two space types.
190
+ - The `Double Loaded Corridor` argument when enabled, take a circulation space type, when it exists, and pair it with the default space type, and will create a double loaded corridor for the space division and thermal zoning, instead of the typical sliced core and perimeter zoning. This not only alters the geometry of the internal division, but creates a hybrid slice that instead of being a single space type, contains a circulation space type running down the center of the bar, surrounded by spaces of another space type. For an example, with a primary school the corridor will be paired with the classrooms. The width of the corridor is determined to achieve the proper space type ratios of the two space types.
195
191
 
196
192
  ![Double Loaded Corridor](./docs/bar_double_loaded.png?raw=true)
197
193
  *Double Loaded Corridor with classroom and corridor for secondary school.*
198
194
 
199
- - The `Choose Space Type Sorting Method` only comes into play when you are modeling a building with more than one building type. With `Size` selected the space types are organized by size, independent of the building type, with smaller space types on lower stories and larger space types on higher stories. `Building Type > Size` is a newer method that first sorts by buidling type, putting smaller building types on lower stories, and then within a buildng type will sort by size. An exmaple use case for this method is when modeling a 4 story building with 25% office and 75% large hotel. With the `Building Type > Size` value the first story will be entirly office, with the rest of the stories large hotel. If the `Size` value is selected, building types wll be mixed together.
195
+ - The `Choose Space Type Sorting Method` only comes into play when you are modeling a building with more than one building type. With `Size` selected the space types are organized by size, independent of the building type, with smaller space types on lower stories and larger space types on higher stories. `Building Type > Size` is a newer method that first sorts by building type, putting smaller building types on lower stories, and then within a building type will sort by size. An example use case for this method is when modeling a 4 story building with 25% office and 75% large hotel. With the `Building Type > Size` value the first story will be entirely office, with the rest of the stories large hotel. If the `Size` value is selected, building types wll be mixed together.
200
196
 
201
197
  ![Sort Space Types by Building Types](./docs/story_sort.png?raw=true)
202
198
  *Building Type > Size used to sort by buiding types, and then by space types.*
203
199
 
204
- - `Use Upstream Argument Values` can be left at the default value of true for most cases. This argument shows up in a number of measures, and then intent is to enable the synchronization of arguments that may be used as a variable in a parametric study across multiple measures. Generally measure ahve uqniue argument names that don't exist, but some such ase `template` are used frequently. This argument, when set to true, will use the value of `Template` from an earlier measure in the workflow, if found, in place of what is entered as the value for this measure.
205
-
206
- - `Climate Zone` is not used at all by this measure but is necessary for an obscure reason
200
+ - `Use Upstream Argument Values` can be left at the default value of true for most cases. This argument shows up in a number of measures, and then intent is to enable the synchronization of arguments that may be used as a variable in a parametric study across multiple measures. Generally a measures has unique argument names that don't exist in other measures, but some such ase `template` are used frequently. This argument, when set to true, will use the value of `template` from an earlier measure in the workflow, if found, in place of what is entered as the argument value for this measure.
207
201
 
208
202
  ## Development Comments
209
203
 
210
- This measure relies on the openstudio-standards gem which is included in the OpenStudio CLI as well as a number of resources files listed below that are contained in the measure's `resources` directory. Other than the arguments almost none of the measure code is in the measure.rb file. The resource files are used by a number of measures and should be udpated from the shared library and not within this measure.
204
+ This measure relies on the openstudio-standards gem which is included in the OpenStudio CLI as well as a number of resources files listed below that are contained in the openstudio-extension gem which is also included in the OpenStudio CLI. Other than the arguments almost none of the measure code is in the measure.rb file. The resource files are used by a number of measures and should be updated from the shared library and not within this measure.
211
205
  - os_lib_model_generation.rb
212
206
  - os_lib_model_simplification.rb
213
207
  - os_lib_geometry.rb
@@ -227,6 +221,9 @@ ___
227
221
  **Units:** <%= argument[:units] %>,
228
222
  **Required:** <%= argument[:required] %>,
229
223
  **Model Dependent:** <%= argument[:model_dependent] %>
224
+ <% if argument[:type] == "Choice" && !argument[:model_dependent]%>
225
+ **Choice Display Names** <%= argument[:choice_display_names] %>
226
+ <% end %>
230
227
  <% end %>
231
228
 
232
229
  <% if arguments.size == 0 %>
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -41,9 +41,9 @@ require 'openstudio-standards'
41
41
  # load OpenStudio measure libraries from openstudio-extension gem
42
42
  require 'openstudio-extension'
43
43
  require 'openstudio/extension/core/os_lib_helper_methods'
44
- require 'openstudio/extension/core/os_lib_geometry.rb'
45
- require 'openstudio/extension/core/os_lib_model_generation.rb'
46
- require 'openstudio/extension/core/os_lib_model_simplification.rb'
44
+ require 'openstudio/extension/core/os_lib_geometry'
45
+ require 'openstudio/extension/core/os_lib_model_generation'
46
+ require 'openstudio/extension/core/os_lib_model_simplification'
47
47
 
48
48
  # start the measure
49
49
  class CreateBarFromDOEBuildingTypeRatios < OpenStudio::Measure::ModelMeasure
@@ -68,6 +68,11 @@ class CreateBarFromDOEBuildingTypeRatios < OpenStudio::Measure::ModelMeasure
68
68
  return 'The building floor area can be described as a footprint size or as a total building area. The shape can be described by its aspect ratio or can be defined as a set width.'
69
69
  end
70
70
 
71
+ # used to populate taxonomy in readme.md
72
+ def taxonomy
73
+ return 'Envelope.Form'
74
+ end
75
+
71
76
  # define the arguments that the user will input
72
77
  def arguments(model)
73
78
  args = OpenStudio::Measure::OSArgumentVector.new
@@ -165,7 +170,7 @@ class CreateBarFromDOEBuildingTypeRatios < OpenStudio::Measure::ModelMeasure
165
170
  args << building_rotation
166
171
 
167
172
  # Make argument for template
168
- template = OpenStudio::Measure::OSArgument.makeChoiceArgument('template', get_doe_templates(true), true)
173
+ template = OpenStudio::Measure::OSArgument.makeChoiceArgument('template', get_doe_templates(false), true)
169
174
  template.setDisplayName('Target Standard')
170
175
  template.setDefaultValue('90.1-2004')
171
176
  args << template
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>create_bar_from_doe_building_type_ratios</name>
5
5
  <uid>0de3cff9-c805-42c4-964e-18cb43a22c63</uid>
6
- <version_id>1e92f356-df92-40c7-838e-30843c91521c</version_id>
7
- <version_modified>20200509T155941Z</version_modified>
6
+ <version_id>f5f51bc7-16a3-4829-82fb-3bcbb773a33a</version_id>
7
+ <version_modified>20220505T182934Z</version_modified>
8
8
  <xml_checksum>5F523097</xml_checksum>
9
9
  <class_name>CreateBarFromDOEBuildingTypeRatios</class_name>
10
10
  <display_name>Create Bar From DOE Building Type Ratios</display_name>
@@ -87,6 +87,26 @@
87
87
  <value>SuperMarket</value>
88
88
  <display_name>SuperMarket</display_name>
89
89
  </choice>
90
+ <choice>
91
+ <value>Laboratory</value>
92
+ <display_name>Laboratory</display_name>
93
+ </choice>
94
+ <choice>
95
+ <value>LargeDataCenterLowITE</value>
96
+ <display_name>LargeDataCenterLowITE</display_name>
97
+ </choice>
98
+ <choice>
99
+ <value>LargeDataCenterHighITE</value>
100
+ <display_name>LargeDataCenterHighITE</display_name>
101
+ </choice>
102
+ <choice>
103
+ <value>SmallDataCenterLowITE</value>
104
+ <display_name>SmallDataCenterLowITE</display_name>
105
+ </choice>
106
+ <choice>
107
+ <value>SmallDataCenterHighITE</value>
108
+ <display_name>SmallDataCenterHighITE</display_name>
109
+ </choice>
90
110
  </choices>
91
111
  </argument>
92
112
  <argument>
@@ -165,6 +185,26 @@
165
185
  <value>SuperMarket</value>
166
186
  <display_name>SuperMarket</display_name>
167
187
  </choice>
188
+ <choice>
189
+ <value>Laboratory</value>
190
+ <display_name>Laboratory</display_name>
191
+ </choice>
192
+ <choice>
193
+ <value>LargeDataCenterLowITE</value>
194
+ <display_name>LargeDataCenterLowITE</display_name>
195
+ </choice>
196
+ <choice>
197
+ <value>LargeDataCenterHighITE</value>
198
+ <display_name>LargeDataCenterHighITE</display_name>
199
+ </choice>
200
+ <choice>
201
+ <value>SmallDataCenterLowITE</value>
202
+ <display_name>SmallDataCenterLowITE</display_name>
203
+ </choice>
204
+ <choice>
205
+ <value>SmallDataCenterHighITE</value>
206
+ <display_name>SmallDataCenterHighITE</display_name>
207
+ </choice>
168
208
  </choices>
169
209
  </argument>
170
210
  <argument>
@@ -251,6 +291,26 @@
251
291
  <value>SuperMarket</value>
252
292
  <display_name>SuperMarket</display_name>
253
293
  </choice>
294
+ <choice>
295
+ <value>Laboratory</value>
296
+ <display_name>Laboratory</display_name>
297
+ </choice>
298
+ <choice>
299
+ <value>LargeDataCenterLowITE</value>
300
+ <display_name>LargeDataCenterLowITE</display_name>
301
+ </choice>
302
+ <choice>
303
+ <value>LargeDataCenterHighITE</value>
304
+ <display_name>LargeDataCenterHighITE</display_name>
305
+ </choice>
306
+ <choice>
307
+ <value>SmallDataCenterLowITE</value>
308
+ <display_name>SmallDataCenterLowITE</display_name>
309
+ </choice>
310
+ <choice>
311
+ <value>SmallDataCenterHighITE</value>
312
+ <display_name>SmallDataCenterHighITE</display_name>
313
+ </choice>
254
314
  </choices>
255
315
  </argument>
256
316
  <argument>
@@ -337,6 +397,26 @@
337
397
  <value>SuperMarket</value>
338
398
  <display_name>SuperMarket</display_name>
339
399
  </choice>
400
+ <choice>
401
+ <value>Laboratory</value>
402
+ <display_name>Laboratory</display_name>
403
+ </choice>
404
+ <choice>
405
+ <value>LargeDataCenterLowITE</value>
406
+ <display_name>LargeDataCenterLowITE</display_name>
407
+ </choice>
408
+ <choice>
409
+ <value>LargeDataCenterHighITE</value>
410
+ <display_name>LargeDataCenterHighITE</display_name>
411
+ </choice>
412
+ <choice>
413
+ <value>SmallDataCenterLowITE</value>
414
+ <display_name>SmallDataCenterLowITE</display_name>
415
+ </choice>
416
+ <choice>
417
+ <value>SmallDataCenterHighITE</value>
418
+ <display_name>SmallDataCenterHighITE</display_name>
419
+ </choice>
340
420
  </choices>
341
421
  </argument>
342
422
  <argument>
@@ -454,8 +534,36 @@
454
534
  <display_name>90.1-2013</display_name>
455
535
  </choice>
456
536
  <choice>
457
- <value>NREL ZNE Ready 2017</value>
458
- <display_name>NREL ZNE Ready 2017</display_name>
537
+ <value>90.1-2016</value>
538
+ <display_name>90.1-2016</display_name>
539
+ </choice>
540
+ <choice>
541
+ <value>90.1-2019</value>
542
+ <display_name>90.1-2019</display_name>
543
+ </choice>
544
+ <choice>
545
+ <value>ComStock DOE Ref Pre-1980</value>
546
+ <display_name>ComStock DOE Ref Pre-1980</display_name>
547
+ </choice>
548
+ <choice>
549
+ <value>ComStock DOE Ref 1980-2004</value>
550
+ <display_name>ComStock DOE Ref 1980-2004</display_name>
551
+ </choice>
552
+ <choice>
553
+ <value>ComStock 90.1-2004</value>
554
+ <display_name>ComStock 90.1-2004</display_name>
555
+ </choice>
556
+ <choice>
557
+ <value>ComStock 90.1-2007</value>
558
+ <display_name>ComStock 90.1-2007</display_name>
559
+ </choice>
560
+ <choice>
561
+ <value>ComStock 90.1-2010</value>
562
+ <display_name>ComStock 90.1-2010</display_name>
563
+ </choice>
564
+ <choice>
565
+ <value>ComStock 90.1-2013</value>
566
+ <display_name>ComStock 90.1-2013</display_name>
459
567
  </choice>
460
568
  </choices>
461
569
  </argument>
@@ -880,23 +988,23 @@
880
988
  <usage_type>doc</usage_type>
881
989
  <checksum>D1E7B644</checksum>
882
990
  </file>
991
+ <file>
992
+ <filename>LICENSE.md</filename>
993
+ <filetype>md</filetype>
994
+ <usage_type>license</usage_type>
995
+ <checksum>A21A3ED2</checksum>
996
+ </file>
883
997
  <file>
884
998
  <filename>README.md.erb</filename>
885
999
  <filetype>erb</filetype>
886
1000
  <usage_type>readmeerb</usage_type>
887
- <checksum>87CB14B2</checksum>
1001
+ <checksum>764EC4D9</checksum>
888
1002
  </file>
889
1003
  <file>
890
1004
  <filename>README.md</filename>
891
1005
  <filetype>md</filetype>
892
1006
  <usage_type>readme</usage_type>
893
- <checksum>8A37AD01</checksum>
894
- </file>
895
- <file>
896
- <filename>LICENSE.md</filename>
897
- <filetype>md</filetype>
898
- <usage_type>license</usage_type>
899
- <checksum>E0468DD6</checksum>
1007
+ <checksum>7D3973D6</checksum>
900
1008
  </file>
901
1009
  <file>
902
1010
  <version>
@@ -907,13 +1015,13 @@
907
1015
  <filename>measure.rb</filename>
908
1016
  <filetype>rb</filetype>
909
1017
  <usage_type>script</usage_type>
910
- <checksum>6B0D2DD7</checksum>
1018
+ <checksum>415570D1</checksum>
911
1019
  </file>
912
1020
  <file>
913
1021
  <filename>create_bar_from_doe_building_type_ratios_test.rb</filename>
914
1022
  <filetype>rb</filetype>
915
1023
  <usage_type>test</usage_type>
916
- <checksum>1C04409F</checksum>
1024
+ <checksum>0CABBDFA</checksum>
917
1025
  </file>
918
1026
  </files>
919
1027
  </measure>
@@ -1,4 +1,4 @@
1
- OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC. All rights reserved.
1
+ OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
2
2
 
3
3
  Redistribution and use in source and binary forms, with or without modification, are permitted
4
4
  provided that the following conditions are met:
@@ -1,5 +1,5 @@
1
1
  # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
2
+ # OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
3
3
  # All rights reserved.
4
4
  # Redistribution and use in source and binary forms, with or without
5
5
  # modification, are permitted provided that the following conditions are met:
@@ -39,9 +39,9 @@
39
39
  # load OpenStudio measure libraries from openstudio-extension gem
40
40
  require 'openstudio-extension'
41
41
  require 'openstudio/extension/core/os_lib_helper_methods'
42
- require 'openstudio/extension/core/os_lib_geometry.rb'
43
- require 'openstudio/extension/core/os_lib_model_generation.rb'
44
- require 'openstudio/extension/core/os_lib_model_simplification.rb'
42
+ require 'openstudio/extension/core/os_lib_geometry'
43
+ require 'openstudio/extension/core/os_lib_model_generation'
44
+ require 'openstudio/extension/core/os_lib_model_simplification'
45
45
 
46
46
  # start the measure
47
47
  class CreateBarFromModel < OpenStudio::Measure::ModelMeasure
@@ -302,11 +302,12 @@ class CreateBarFromModel < OpenStudio::Measure::ModelMeasure
302
302
  # end
303
303
 
304
304
  # define length and with of bar
305
- if bar_calc_method == 'Bar - Reduced Bounding Box'
305
+ case bar_calc_method
306
+ when 'Bar - Reduced Bounding Box'
306
307
  bar_calc = calc_bar_reduced_bounding_box(envelope_data_hash)
307
- elsif bar_calc_method == 'Bar - Reduced Width'
308
+ when 'Bar - Reduced Width'
308
309
  bar_calc = calc_bar_reduced_width(envelope_data_hash)
309
- elsif bar_calc_method == 'Bar - Stretched'
310
+ when 'Bar - Stretched'
310
311
  bar_calc = calc_bar_stretched(envelope_data_hash)
311
312
  end
312
313
 
@@ -345,6 +346,7 @@ class CreateBarFromModel < OpenStudio::Measure::ModelMeasure
345
346
  zone_hash = {} # key is zone value is floor area. It excludes zones with non 1 multiplier
346
347
  model.getThermalZones.each do |thermal_zone|
347
348
  next if thermal_zone.multiplier > 1
349
+
348
350
  zone_hash[thermal_zone] = thermal_zone.floorArea
349
351
  end
350
352
  target_zone = zone_hash.key(zone_hash.values.max)
@@ -372,6 +374,7 @@ class CreateBarFromModel < OpenStudio::Measure::ModelMeasure
372
374
  # restore thermostats for space type saved from old geometry
373
375
  model.getThermalZones.each do |thermal_zone|
374
376
  next if !thermal_zone.spaces.first.spaceType.is_initialized
377
+
375
378
  space_type = thermal_zone.spaces.first.spaceType.get
376
379
  new_thermostat = OpenStudio::Model::ThermostatSetpointDualSetpoint.new(model)
377
380
  new_thermostat.setHeatingSetpointTemperatureSchedule(htg_setpoints[space_type])
@@ -388,6 +391,7 @@ class CreateBarFromModel < OpenStudio::Measure::ModelMeasure
388
391
  final_ratios = {}
389
392
  model.getSpaceTypes.each do |space_type|
390
393
  next if space_type.floorArea == 0.0
394
+
391
395
  final_ratios[space_type] = space_type.floorArea / final_floor_area
392
396
  end
393
397
  Hash[final_ratios.sort_by { |k, v| v }.reverse].each do |k, v|
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>create_bar_from_model</name>
5
5
  <uid>87fb0783-7a38-4900-8969-40e744c67814</uid>
6
- <version_id>5eff35df-f390-4ac9-8bd6-683400df6e2a</version_id>
7
- <version_modified>20200509T155940Z</version_modified>
6
+ <version_id>c5c23516-2e33-4fe3-8c26-bfedc90f3584</version_id>
7
+ <version_modified>20220505T182934Z</version_modified>
8
8
  <xml_checksum>2AF3A68E</xml_checksum>
9
9
  <class_name>CreateBarFromModel</class_name>
10
10
  <display_name>Create Bar From Model</display_name>
@@ -142,7 +142,7 @@
142
142
  <filename>LICENSE.md</filename>
143
143
  <filetype>md</filetype>
144
144
  <usage_type>license</usage_type>
145
- <checksum>E0468DD6</checksum>
145
+ <checksum>A21A3ED2</checksum>
146
146
  </file>
147
147
  <file>
148
148
  <version>
@@ -153,13 +153,13 @@
153
153
  <filename>measure.rb</filename>
154
154
  <filetype>rb</filetype>
155
155
  <usage_type>script</usage_type>
156
- <checksum>B7B7B95D</checksum>
156
+ <checksum>364B6970</checksum>
157
157
  </file>
158
158
  <file>
159
159
  <filename>create_bar_from_model_test.rb</filename>
160
160
  <filetype>rb</filetype>
161
161
  <usage_type>test</usage_type>
162
- <checksum>AE3DA592</checksum>
162
+ <checksum>B77C7D72</checksum>
163
163
  </file>
164
164
  </files>
165
165
  </measure>
@@ -0,0 +1,27 @@
1
+ OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted
4
+ provided that the following conditions are met:
5
+
6
+ (1) Redistributions of source code must retain the above copyright notice, this list of conditions
7
+ and the following disclaimer.
8
+
9
+ (2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions
10
+ and the following disclaimer in the documentation and/or other materials provided with the distribution.
11
+
12
+ (3) Neither the name of the copyright holder nor the names of any contributors may be used to endorse
13
+ or promote products derived from this software without specific prior written permission from the
14
+ respective party.
15
+
16
+ (4) Other than as required in clauses (1) and (2), distributions in any form of modifications or other
17
+ derivative works may not use the "OpenStudio" trademark, "OS", "os", or any other confusingly similar
18
+ designation without specific prior written permission from Alliance for Sustainable Energy, LLC.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
21
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22
+ PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES GOVERNMENT,
23
+ OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
25
+ OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.