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
@@ -1,252 +0,0 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
24
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
27
- # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
28
- # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
30
- # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32
- # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33
- # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- module OsLib_Cofee
37
- # create def to use later to make bar
38
- def self.createBar(model, spaceTypeHash, lengthXTarget, lengthYTarget, totalFloorArea, numStories, midFloorMultiplier, xmin, ymin, lengthX, lengthY, zmin, zmax, endZones)
39
- # floor to floor height
40
- floor_to_floor_height = (zmax - zmin) / numStories
41
-
42
- # perimeter depth
43
- perimeterDepth = OpenStudio.convert(12, 'ft', 'm').get
44
- perimeterBufferFactor = 1.5 # this is a margin below which I won't bother splitting the two largest spaces
45
-
46
- # create an array to control sort order of spaces in bar
47
- customSpaceTypeBar = []
48
- counter = 0
49
- spaceTypeHash.sort_by { |key, value| value }.reverse.each do |k, v|
50
- next if v == 0 # this line adds support for fractional values of 0
51
- if counter == 1
52
- if (lengthXTarget * (v / totalFloorArea) > perimeterDepth * perimeterBufferFactor) && endZones
53
- customSpaceTypeBar << [k, totalFloorArea * (perimeterDepth / lengthXTarget)]
54
- customSpaceTypeBar << [k, v - (totalFloorArea * (perimeterDepth / lengthXTarget))]
55
- else
56
- customSpaceTypeBar << [k, v]
57
- end
58
- elsif counter > 1
59
- customSpaceTypeBar << [k, v]
60
- end
61
- counter += 1
62
- end
63
-
64
- # add the largest space type to the end
65
- counter = 0
66
- spaceTypeHash.sort_by { |key, value| value }.reverse.each do |k, v|
67
- if counter == 0
68
- # if width is greater than 1.5x perimeter depth then split in half
69
- if (lengthXTarget * (v / totalFloorArea) > perimeterDepth * perimeterBufferFactor) && endZones
70
- customSpaceTypeBar << [k, v - (totalFloorArea * (perimeterDepth / lengthXTarget))]
71
- customSpaceTypeBar << [k, totalFloorArea * (perimeterDepth / lengthXTarget)]
72
- else
73
- customSpaceTypeBar << [k, v]
74
- end
75
- end
76
- break
77
- end
78
-
79
- # starting z level
80
- z = zmin
81
- storyCounter = 0
82
- barSpaceArray = []
83
-
84
- # create new stories and then add spaces
85
- [numStories, 3].min.times do # no more than tree loops through this
86
- story = OpenStudio::Model::BuildingStory.new(model)
87
- story.setNominalFloortoFloorHeight(floor_to_floor_height)
88
- story.setNominalZCoordinate(z)
89
-
90
- # starting position for first space
91
- x = (lengthX - lengthXTarget) * 0.5 + xmin
92
- y = (lengthY - lengthYTarget) * 0.5 + ymin
93
-
94
- # temp array of spaces (this is to change floor boundary when there is mid floor multiplier)
95
- tempSpaceArray = []
96
-
97
- # loop through space types making diagram and spaces.
98
- # spaceTypeHash.sort_by {|key, value| value}.reverse.each do |k,v|
99
- customSpaceTypeBar.each do |object|
100
- # get values from what was hash
101
- k = object[0]
102
- v = object[1]
103
-
104
- # get proper zone multiplier value
105
- if (storyCounter == 1) && (midFloorMultiplier > 1)
106
- thermalZoneMultiplier = midFloorMultiplier
107
- else
108
- thermalZoneMultiplier = 1
109
- end
110
-
111
- options = {
112
- 'name' => nil,
113
- 'spaceType' => k,
114
- 'story' => story,
115
- 'makeThermalZone' => true,
116
- 'thermalZone' => nil,
117
- 'thermalZoneMultiplier' => thermalZoneMultiplier,
118
- 'floor_to_floor_height' => floor_to_floor_height
119
- }
120
-
121
- # three paths for spaces depending upon building depth (3, 2 or one cross slices)
122
- if lengthYTarget > perimeterDepth * 3 # slice into core and perimeter
123
-
124
- # perimeter polygon a
125
- perim_polygon_a = OpenStudio::Point3dVector.new
126
- perim_origin_a = OpenStudio::Point3d.new(x, y, z)
127
- perim_polygon_a << perim_origin_a
128
- perim_polygon_a << OpenStudio::Point3d.new(x, y + perimeterDepth, z)
129
- perim_polygon_a << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + perimeterDepth, z)
130
- perim_polygon_a << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y, z)
131
-
132
- # create core polygon
133
- core_polygon = OpenStudio::Point3dVector.new
134
- core_origin = OpenStudio::Point3d.new(x, y + perimeterDepth, z)
135
- core_polygon << core_origin
136
- core_polygon << OpenStudio::Point3d.new(x, y + lengthYTarget - perimeterDepth, z)
137
- core_polygon << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget - perimeterDepth, z)
138
- core_polygon << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + perimeterDepth, z)
139
-
140
- # perimeter polygon b w
141
- perim_polygon_b = OpenStudio::Point3dVector.new
142
- perim_origin_b = OpenStudio::Point3d.new(x, y + lengthYTarget - perimeterDepth, z)
143
- perim_polygon_b << perim_origin_b
144
- perim_polygon_b << OpenStudio::Point3d.new(x, y + lengthYTarget, z)
145
- perim_polygon_b << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget, z)
146
- perim_polygon_b << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget - perimeterDepth, z)
147
-
148
- # run method to make spaces
149
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, perim_origin_a, perim_polygon_a, options) # model, origin, polygon, options
150
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, core_origin, core_polygon, options) # model, origin, polygon, options
151
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, perim_origin_b, perim_polygon_b, options) # model, origin, polygon, options
152
-
153
- elsif lengthYTarget > perimeterDepth * 2 # slice into two peremeter zones but no core
154
-
155
- # perimeter polygon a
156
- perim_polygon_a = OpenStudio::Point3dVector.new
157
- perim_origin_a = OpenStudio::Point3d.new(x, y, z)
158
- perim_polygon_a << perim_origin_a
159
- perim_polygon_a << OpenStudio::Point3d.new(x, y + lengthYTarget / 2, z)
160
- perim_polygon_a << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget / 2, z)
161
- perim_polygon_a << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y, z)
162
-
163
- # perimeter polygon b
164
- perim_polygon_b = OpenStudio::Point3dVector.new
165
- perim_origin_b = OpenStudio::Point3d.new(x, y + lengthYTarget / 2, z)
166
- perim_polygon_b << perim_origin_b
167
- perim_polygon_b << OpenStudio::Point3d.new(x, y + lengthYTarget, z)
168
- perim_polygon_b << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget, z)
169
- perim_polygon_b << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget / 2, z)
170
-
171
- # run method to make spaces
172
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, perim_origin_a, perim_polygon_a, options) # model, origin, polygon, options
173
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, perim_origin_b, perim_polygon_b, options) # model, origin, polygon, options
174
-
175
- else # don't slice into core and perimeter
176
-
177
- # create polygon
178
- core_polygon = OpenStudio::Point3dVector.new
179
- core_origin = OpenStudio::Point3d.new(x, y, z)
180
- core_polygon << core_origin
181
- core_polygon << OpenStudio::Point3d.new(x, y + lengthYTarget, z)
182
- core_polygon << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y + lengthYTarget, z)
183
- core_polygon << OpenStudio::Point3d.new(x + lengthXTarget * (v / totalFloorArea), y, z)
184
-
185
- # run method to make space
186
- tempSpaceArray << OsLib_Geometry.makeSpaceFromPolygon(model, core_origin, core_polygon, options) # model, origin, polygon, options
187
-
188
- end
189
-
190
- # update points for next run
191
- x += lengthXTarget * (v / totalFloorArea)
192
- end
193
-
194
- # set flags for adiabatic surfaces
195
- floorAdiabatic = false
196
- ceilingAdiabatic = false
197
-
198
- # update z
199
- if midFloorMultiplier == 1
200
- z += floor_to_floor_height
201
- else
202
- z += floor_to_floor_height * midFloorMultiplier - floor_to_floor_height
203
-
204
- if storyCounter == 0
205
- ceilingAdiabatic = true
206
- elsif storyCounter == 1
207
- floorAdiabatic = true
208
- ceilingAdiabatic = true
209
- else
210
- floorAdiabatic = true
211
- end
212
-
213
- # alter surfaces boundary conditions and constructions as described above
214
- tempSpaceArray.each do |space|
215
- space.surfaces.each do |surface|
216
- if (surface.surfaceType == 'RoofCeiling') && ceilingAdiabatic
217
- construction = surface.construction # TODO: - this isn't really the construction I want since it wasn't an interior one, but will work for now
218
- surface.setOutsideBoundaryCondition('Adiabatic')
219
- if !construction.empty?
220
- surface.setConstruction(construction.get)
221
- end
222
- end
223
- if (surface.surfaceType == 'Floor') && floorAdiabatic
224
- construction = surface.construction # TODO: - this isn't really the construction I want since it wasn't an interior one, but will work for now
225
- surface.setOutsideBoundaryCondition('Adiabatic')
226
- if !construction.empty?
227
- surface.setConstruction(construction.get)
228
- end
229
- end
230
- end
231
- end
232
-
233
- # populate bar space array from temp array
234
- barSpaceArray << tempSpaceArray
235
-
236
- end
237
-
238
- # update storyCounter
239
- storyCounter += 1
240
- end
241
-
242
- # surface matching (seems more complex than necessary)
243
- spaces = OpenStudio::Model::SpaceVector.new
244
- model.getSpaces.each do |space|
245
- spaces << space
246
- end
247
- OpenStudio::Model.matchSurfaces(spaces)
248
-
249
- result = barSpaceArray
250
- return result
251
- end
252
- end