openstudio-model-articulation 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -1
- data/CHANGELOG.md +13 -0
- data/Gemfile +2 -2
- data/README.md +14 -0
- data/lib/measures/SetWindowToWallRatioByFacade/measure.rb +10 -3
- data/lib/measures/SetWindowToWallRatioByFacade/measure.xml +10 -4
- data/lib/measures/add_empd_material_properties/LICENSE.md +27 -0
- data/lib/measures/add_empd_material_properties/README.md +116 -0
- data/lib/measures/add_empd_material_properties/README.md.erb +42 -0
- data/lib/measures/add_empd_material_properties/docs/.gitkeep +0 -0
- data/lib/measures/add_empd_material_properties/measure.rb +247 -0
- data/lib/measures/add_empd_material_properties/measure.xml +201 -0
- data/lib/measures/create_DOE_prototype_building/measure.xml +2 -2
- data/lib/measures/create_bar_from_building_type_ratios/README.md +109 -35
- data/lib/measures/create_bar_from_building_type_ratios/README.md.erb +54 -35
- data/lib/measures/create_bar_from_building_type_ratios/measure.rb +5 -0
- data/lib/measures/create_bar_from_building_type_ratios/measure.xml +16 -16
- data/lib/measures/create_bar_from_deer_building_type_ratios/README.md +301 -79
- data/lib/measures/create_bar_from_deer_building_type_ratios/README.md.erb +62 -79
- data/lib/measures/create_bar_from_deer_building_type_ratios/measure.rb +6 -1
- data/lib/measures/create_bar_from_deer_building_type_ratios/measure.xml +19 -63
- data/lib/measures/create_bar_from_doe_building_type_ratios/README.md +298 -57
- data/lib/measures/create_bar_from_doe_building_type_ratios/README.md.erb +54 -57
- data/lib/measures/create_bar_from_doe_building_type_ratios/measure.rb +6 -1
- data/lib/measures/create_bar_from_doe_building_type_ratios/measure.xml +16 -20
- data/lib/measures/create_bar_from_space_type_ratios/README.md +94 -42
- data/lib/measures/create_bar_from_space_type_ratios/README.md.erb +60 -42
- data/lib/measures/create_bar_from_space_type_ratios/measure.rb +5 -0
- data/lib/measures/create_bar_from_space_type_ratios/measure.xml +19 -19
- data/lib/measures/create_baseline_building/measure.xml +2 -2
- data/lib/measures/create_deer_prototype_building/measure.xml +2 -2
- data/lib/measures/create_typical_building_from_model/README.md +81 -16
- data/lib/measures/create_typical_building_from_model/README.md.erb +36 -16
- data/lib/measures/create_typical_building_from_model/measure.rb +5 -0
- data/lib/measures/create_typical_building_from_model/measure.xml +19 -19
- data/lib/measures/create_typical_deer_building_from_model/README.md +173 -53
- data/lib/measures/create_typical_deer_building_from_model/README.md.erb +57 -53
- data/lib/measures/create_typical_deer_building_from_model/measure.rb +6 -1
- data/lib/measures/create_typical_deer_building_from_model/measure.xml +25 -25
- data/lib/measures/create_typical_doe_building_from_model/README.md +182 -44
- data/lib/measures/create_typical_doe_building_from_model/README.md.erb +58 -44
- data/lib/measures/create_typical_doe_building_from_model/measure.rb +6 -1
- data/lib/measures/create_typical_doe_building_from_model/measure.xml +25 -25
- data/lib/measures/radiant_slab_with_doas/measure.rb +5 -1
- data/lib/measures/radiant_slab_with_doas/measure.xml +9 -9
- data/lib/openstudio/model_articulation/version.rb +1 -1
- data/openstudio-model-articulation.gemspec +2 -2
- metadata +13 -7
@@ -12,33 +12,35 @@ The building floor area can be described as a footprint size or as a total build
|
|
12
12
|
## Measure Type
|
13
13
|
ModelMeasure
|
14
14
|
|
15
|
-
[//]: # (
|
16
|
-
|
17
|
-
|
15
|
+
[//]: # (Only finds value if taxonomy method is added to measure.rb, won't read out of measure.xml)
|
16
|
+
## Taxonomy
|
17
|
+
Envelope.Form
|
18
18
|
|
19
19
|
___
|
20
20
|
## Table of Contents
|
21
21
|
- [Measure Overview](#measure-overview)<br/>
|
22
22
|
- [DOE and DEER Template and Building Type Mapping](#doe-and-deer-template-and-building-type-mapping)<br/>
|
23
|
-
- [
|
24
|
-
- [
|
25
|
-
- [
|
26
|
-
- [
|
27
|
-
- [
|
28
|
-
- [
|
29
|
-
- [
|
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 and DEER 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
|
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 and DEER 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
|
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 and DEER Template and Building Type Mapping
|
40
42
|
|
41
|
-
Note, that this particular measure has access to both DOE and DEER building types
|
43
|
+
Note, that this particular measure has access to both DOE and DEER building types and templates (vintages). It is important when using this measure that the template and the selected building type(s) are all DOE or are all DEER. Below is a list of for each.
|
42
44
|
|
43
45
|
#### DOE
|
44
46
|
- Templates:
|
@@ -48,7 +50,15 @@ Note, that this particular measure has access to both DOE and DEER building type
|
|
48
50
|
- 90.1-2007
|
49
51
|
- 90.1-2010
|
50
52
|
- 90.1-2013
|
53
|
+
- 90.1-2016
|
54
|
+
- 90.1-2019
|
51
55
|
- NREL ZNE Ready 2017 (not currently complete for all building types)
|
56
|
+
- ComStock DOE Ref Pre-1980
|
57
|
+
- ComStock DOE Ref 1980-2004
|
58
|
+
- ComStock 90.1-2004
|
59
|
+
- ComStock 90.1-2007
|
60
|
+
- ComStock 90.1-2010
|
61
|
+
- ComStock 90.1-2013
|
52
62
|
- Building Types:
|
53
63
|
- SecondarySchool
|
54
64
|
- PrimarySchool
|
@@ -67,6 +77,11 @@ Note, that this particular measure has access to both DOE and DEER building type
|
|
67
77
|
- Hospital
|
68
78
|
- Outpatient
|
69
79
|
- SuperMarket
|
80
|
+
- Laboratory
|
81
|
+
- LargeDataCenterLowITE
|
82
|
+
- LargeDataCenterHighITE
|
83
|
+
- SmallDataCenterLowITE
|
84
|
+
- SmallDataCenterHighITE
|
70
85
|
|
71
86
|
#### DEER
|
72
87
|
- Templates:
|
@@ -127,13 +142,13 @@ Note, that this particular measure has access to both DOE and DEER building type
|
|
127
142
|
|
128
143
|
#### Building Type Mix
|
129
144
|
|
130
|
-
One to four building types can be combined into the building generated by this measure. For each of the four possible building types there are
|
145
|
+
One to four building types can be combined into the building generated by this measure. For each of the four possible building types there are two arguments. One to define the building type `Building Type B` and another to describe the fraction of the building this building type accounts for 'bldg_type_b_fract_bldg_area'. If the value of a specific building type's fraction is 0, then it doesn't matter what building type is selected, as it will not be added ot the model.
|
131
146
|
|
132
147
|
Building Type A is an exception from the others in that it doesn't have an argument for the fraction of building floor area, instead the remainder left after the other three is used. If the sum of fractions for building types b,c and d are greater than 1.0 an error will be thrown.
|
133
148
|
|
134
149
|
#### Floor Area
|
135
150
|
|
136
|
-
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
|
151
|
+
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.
|
137
152
|
|
138
153
|
[//]: # (todo - add screenshot of same floor area on different num stories and shapes)
|
139
154
|
|
@@ -141,7 +156,7 @@ The typical use case for this measure is to set the total building floor area us
|
|
141
156
|
|
142
157
|
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.
|
143
158
|
|
144
|
-
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
|
159
|
+
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'
|
145
160
|
|
146
161
|
![No Custom Height Space Types](./docs/custom_height_false.png?raw=true)
|
147
162
|
*Secondary school without custom space type heights enabled*
|
@@ -154,11 +169,11 @@ There are two arguments that control the number of stories the building has. `Nu
|
|
154
169
|
![Baesment](./docs/basement.png?raw=true)
|
155
170
|
*Secondary school with 1 below grade story*
|
156
171
|
|
157
|
-
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
|
172
|
+
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.
|
158
173
|
|
159
174
|
#### Template
|
160
175
|
|
161
|
-
The `Template` is
|
176
|
+
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.
|
162
177
|
|
163
178
|
#### Building Shape
|
164
179
|
|
@@ -168,12 +183,12 @@ While the floor area and number of stories arguments determine the size of the b
|
|
168
183
|
*Aspect Ratio of 2.0*
|
169
184
|
|
170
185
|
![Aspect Ratio 1.0](./docs/ar_1.png?raw=true)
|
171
|
-
*Aspect Ratio of
|
186
|
+
*Aspect Ratio of 1.0*
|
172
187
|
|
173
188
|
![Aspect Ratio 0.5](./docs/ar_05.png?raw=true)
|
174
189
|
*Aspect Ratio of 0.5*
|
175
190
|
|
176
|
-
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
|
191
|
+
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.
|
177
192
|
|
178
193
|
![Perim Mult b](./docs/perim_mult_2012.png?raw=true)
|
179
194
|
*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*
|
@@ -182,15 +197,15 @@ The `Perimeter Multiplier` provides a mechanism to maintain your target footprin
|
|
182
197
|
*Aspect Ratio of 2.0 with a Perimeter Multiplier of 2.0.*
|
183
198
|
|
184
199
|
`Perimeter Multiplier` example use case:
|
185
|
-
|
186
|
-
|
187
|
-
|
200
|
+
- inputs are for a 10,000 ft^2 2 story building with an aspect ratio of
|
201
|
+
- With a `Perimeter Multiplier` of one this would result in a single bar that is 50' by 100'. This would have a total perimeter of 300'
|
202
|
+
- With a `Perimeter Multiplier` of 1.5 the target perimeter value will be increased to 450'. This would result in two bar elements that have a combined footprint area of 5000 ft^2 (per story) and a combined perimeter of 450'.
|
188
203
|
|
189
|
-
|
204
|
+
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)
|
190
205
|
|
191
|
-
`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
|
206
|
+
`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.
|
192
207
|
|
193
|
-
`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
|
208
|
+
`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.
|
194
209
|
|
195
210
|
![Sept Dist 0.5](./docs/sep_05.png?raw=true)
|
196
211
|
*Bar Separation Distance Multiplier of 0.5*
|
@@ -210,7 +225,7 @@ There is just a single `Window to Wall Ratio` argument for this measure. It has
|
|
210
225
|
![Custom WWR](./docs/wwr_custom.png?raw=true)
|
211
226
|
*Example of space type specific WWR for warehouse model, shown with custom space type height enabled*
|
212
227
|
|
213
|
-
Orientation specific characteristics and/or overhangs may be added to this in the future, but are
|
228
|
+
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.
|
214
229
|
|
215
230
|
#### Party Walls and Exposure of Top and Bottom Stories
|
216
231
|
|
@@ -220,7 +235,7 @@ There are two approaches for the party walls. One approach is a single fraction
|
|
220
235
|
|
221
236
|
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.
|
222
237
|
|
223
|
-
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`
|
238
|
+
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`
|
224
239
|
|
225
240
|
![Party Wall](./docs/party.png?raw=true)
|
226
241
|
*1 story Party wall on south, 2 story on east, story multipliers not enabled*
|
@@ -233,11 +248,11 @@ The ability to model what is essence party floor/ceilings in your model are cont
|
|
233
248
|
|
234
249
|
#### Calculation Methods and Articulation Logic
|
235
250
|
|
236
|
-
- `Calculation Method for Story Multiplier` is used to determine if zone multipliers should be used as story multipliers on taller buildings. This reduces the
|
251
|
+
- `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.
|
237
252
|
|
238
253
|
- `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
|
239
254
|
|
240
|
-
- `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
|
255
|
+
- `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.
|
241
256
|
|
242
257
|
![Individualy Sliced](./docs/bar_sliced_indiv.png?raw=true)
|
243
258
|
*Multiple Space Types - Individual Stories Slice method that has been used through the examples above*
|
@@ -248,23 +263,24 @@ The ability to model what is essence party floor/ceilings in your model are cont
|
|
248
263
|
![Single Core Perimeter](./docs/bar_single_core_perim.png?raw=true)
|
249
264
|
*Single Space Type - Core and Perimeter, should not be a reason to use this*
|
250
265
|
|
251
|
-
- The `Double Loaded Corridor`
|
266
|
+
- 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.
|
267
|
+
- Not enabled for the DEER Building Types as of OpenStudio 3.2.
|
252
268
|
|
253
269
|
![Double Loaded Corridor](./docs/bar_double_loaded.png?raw=true)
|
254
270
|
*Double Loaded Corridor with classroom and corridor for secondary school.*
|
255
271
|
|
256
|
-
- 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
|
272
|
+
- 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.
|
257
273
|
|
258
274
|
![Sort Space Types by Building Types](./docs/story_sort.png?raw=true)
|
259
|
-
*Building Type > Size used to sort by
|
275
|
+
*Building Type > Size used to sort by building types, and then by space types.*
|
260
276
|
|
261
|
-
- `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
|
277
|
+
- `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.
|
262
278
|
|
263
279
|
- `Climate Zone` is not used at all by this measure but is necessary for an obscure reason
|
264
280
|
|
265
281
|
## Development Comments
|
266
282
|
|
267
|
-
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
|
283
|
+
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 updated from the shared library and not within this measure.
|
268
284
|
- os_lib_model_generation.rb
|
269
285
|
- os_lib_model_simplification.rb
|
270
286
|
- os_lib_geometry.rb
|
@@ -285,6 +301,9 @@ ___
|
|
285
301
|
**Required:** true,
|
286
302
|
**Model Dependent:** false
|
287
303
|
|
304
|
+
**Choice Display Names** ["SecondarySchool", "PrimarySchool", "SmallOffice", "MediumOffice", "LargeOffice", "SmallHotel", "LargeHotel", "Warehouse", "RetailStandalone", "RetailStripmall", "QuickServiceRestaurant", "FullServiceRestaurant", "MidriseApartment", "HighriseApartment", "Hospital", "Outpatient", "SuperMarket", "Laboratory", "LargeDataCenterLowITE", "LargeDataCenterHighITE", "SmallDataCenterLowITE", "SmallDataCenterHighITE", "Asm", "DMo", "ECC", "EPr", "ERC", "ESe", "EUn", "GHs", "Gro", "Hsp", "Htl", "MBT", "MFm", "MLI", "Mtl", "Nrs", "OfL", "OfS", "RFF", "RSD", "Rt3", "RtL", "RtS", "SCn", "SFm", "SUn", "WRf"]
|
305
|
+
|
306
|
+
|
288
307
|
### Primary Building Type Number of Units
|
289
308
|
Number of units argument not currently used by this measure
|
290
309
|
**Name:** bldg_type_a_num_units,
|
@@ -293,6 +312,7 @@ Number of units argument not currently used by this measure
|
|
293
312
|
**Required:** true,
|
294
313
|
**Model Dependent:** false
|
295
314
|
|
315
|
+
|
296
316
|
### Building Type B
|
297
317
|
|
298
318
|
**Name:** bldg_type_b,
|
@@ -301,6 +321,9 @@ Number of units argument not currently used by this measure
|
|
301
321
|
**Required:** true,
|
302
322
|
**Model Dependent:** false
|
303
323
|
|
324
|
+
**Choice Display Names** ["SecondarySchool", "PrimarySchool", "SmallOffice", "MediumOffice", "LargeOffice", "SmallHotel", "LargeHotel", "Warehouse", "RetailStandalone", "RetailStripmall", "QuickServiceRestaurant", "FullServiceRestaurant", "MidriseApartment", "HighriseApartment", "Hospital", "Outpatient", "SuperMarket", "Laboratory", "LargeDataCenterLowITE", "LargeDataCenterHighITE", "SmallDataCenterLowITE", "SmallDataCenterHighITE", "Asm", "DMo", "ECC", "EPr", "ERC", "ESe", "EUn", "GHs", "Gro", "Hsp", "Htl", "MBT", "MFm", "MLI", "Mtl", "Nrs", "OfL", "OfS", "RFF", "RSD", "Rt3", "RtL", "RtS", "SCn", "SFm", "SUn", "WRf"]
|
325
|
+
|
326
|
+
|
304
327
|
### Building Type B Fraction of Building Floor Area
|
305
328
|
|
306
329
|
**Name:** bldg_type_b_fract_bldg_area,
|
@@ -309,6 +332,7 @@ Number of units argument not currently used by this measure
|
|
309
332
|
**Required:** true,
|
310
333
|
**Model Dependent:** false
|
311
334
|
|
335
|
+
|
312
336
|
### Building Type B Number of Units
|
313
337
|
Number of units argument not currently used by this measure
|
314
338
|
**Name:** bldg_type_b_num_units,
|
@@ -317,6 +341,7 @@ Number of units argument not currently used by this measure
|
|
317
341
|
**Required:** true,
|
318
342
|
**Model Dependent:** false
|
319
343
|
|
344
|
+
|
320
345
|
### Building Type C
|
321
346
|
|
322
347
|
**Name:** bldg_type_c,
|
@@ -325,6 +350,9 @@ Number of units argument not currently used by this measure
|
|
325
350
|
**Required:** true,
|
326
351
|
**Model Dependent:** false
|
327
352
|
|
353
|
+
**Choice Display Names** ["SecondarySchool", "PrimarySchool", "SmallOffice", "MediumOffice", "LargeOffice", "SmallHotel", "LargeHotel", "Warehouse", "RetailStandalone", "RetailStripmall", "QuickServiceRestaurant", "FullServiceRestaurant", "MidriseApartment", "HighriseApartment", "Hospital", "Outpatient", "SuperMarket", "Laboratory", "LargeDataCenterLowITE", "LargeDataCenterHighITE", "SmallDataCenterLowITE", "SmallDataCenterHighITE", "Asm", "DMo", "ECC", "EPr", "ERC", "ESe", "EUn", "GHs", "Gro", "Hsp", "Htl", "MBT", "MFm", "MLI", "Mtl", "Nrs", "OfL", "OfS", "RFF", "RSD", "Rt3", "RtL", "RtS", "SCn", "SFm", "SUn", "WRf"]
|
354
|
+
|
355
|
+
|
328
356
|
### Building Type C Fraction of Building Floor Area
|
329
357
|
|
330
358
|
**Name:** bldg_type_c_fract_bldg_area,
|
@@ -333,6 +361,7 @@ Number of units argument not currently used by this measure
|
|
333
361
|
**Required:** true,
|
334
362
|
**Model Dependent:** false
|
335
363
|
|
364
|
+
|
336
365
|
### Building Type C Number of Units
|
337
366
|
Number of units argument not currently used by this measure
|
338
367
|
**Name:** bldg_type_c_num_units,
|
@@ -341,6 +370,7 @@ Number of units argument not currently used by this measure
|
|
341
370
|
**Required:** true,
|
342
371
|
**Model Dependent:** false
|
343
372
|
|
373
|
+
|
344
374
|
### Building Type D
|
345
375
|
|
346
376
|
**Name:** bldg_type_d,
|
@@ -349,6 +379,9 @@ Number of units argument not currently used by this measure
|
|
349
379
|
**Required:** true,
|
350
380
|
**Model Dependent:** false
|
351
381
|
|
382
|
+
**Choice Display Names** ["SecondarySchool", "PrimarySchool", "SmallOffice", "MediumOffice", "LargeOffice", "SmallHotel", "LargeHotel", "Warehouse", "RetailStandalone", "RetailStripmall", "QuickServiceRestaurant", "FullServiceRestaurant", "MidriseApartment", "HighriseApartment", "Hospital", "Outpatient", "SuperMarket", "Laboratory", "LargeDataCenterLowITE", "LargeDataCenterHighITE", "SmallDataCenterLowITE", "SmallDataCenterHighITE", "Asm", "DMo", "ECC", "EPr", "ERC", "ESe", "EUn", "GHs", "Gro", "Hsp", "Htl", "MBT", "MFm", "MLI", "Mtl", "Nrs", "OfL", "OfS", "RFF", "RSD", "Rt3", "RtL", "RtS", "SCn", "SFm", "SUn", "WRf"]
|
383
|
+
|
384
|
+
|
352
385
|
### Building Type D Fraction of Building Floor Area
|
353
386
|
|
354
387
|
**Name:** bldg_type_d_fract_bldg_area,
|
@@ -357,6 +390,7 @@ Number of units argument not currently used by this measure
|
|
357
390
|
**Required:** true,
|
358
391
|
**Model Dependent:** false
|
359
392
|
|
393
|
+
|
360
394
|
### Building Type D Number of Units
|
361
395
|
Number of units argument not currently used by this measure
|
362
396
|
**Name:** bldg_type_d_num_units,
|
@@ -365,6 +399,7 @@ Number of units argument not currently used by this measure
|
|
365
399
|
**Required:** true,
|
366
400
|
**Model Dependent:** false
|
367
401
|
|
402
|
+
|
368
403
|
### Total Building Floor Area
|
369
404
|
|
370
405
|
**Name:** total_bldg_floor_area,
|
@@ -373,6 +408,7 @@ Number of units argument not currently used by this measure
|
|
373
408
|
**Required:** true,
|
374
409
|
**Model Dependent:** false
|
375
410
|
|
411
|
+
|
376
412
|
### Single Floor Area
|
377
413
|
Non-zero value will fix the single floor area, overriding a user entry for Total Building Floor Area
|
378
414
|
**Name:** single_floor_area,
|
@@ -381,6 +417,7 @@ Non-zero value will fix the single floor area, overriding a user entry for Total
|
|
381
417
|
**Required:** true,
|
382
418
|
**Model Dependent:** false
|
383
419
|
|
420
|
+
|
384
421
|
### Typical Floor to FLoor Height
|
385
422
|
Selecting a typical floor height of 0 will trigger a smart building type default.
|
386
423
|
**Name:** floor_height,
|
@@ -389,6 +426,7 @@ Selecting a typical floor height of 0 will trigger a smart building type default
|
|
389
426
|
**Required:** true,
|
390
427
|
**Model Dependent:** false
|
391
428
|
|
429
|
+
|
392
430
|
### Enable Custom Height Bar Application
|
393
431
|
This is argument value is only relevant when smart default floor to floor height is used for a building type that has spaces with custom heights.
|
394
432
|
**Name:** custom_height_bar,
|
@@ -397,6 +435,7 @@ This is argument value is only relevant when smart default floor to floor height
|
|
397
435
|
**Required:** true,
|
398
436
|
**Model Dependent:** false
|
399
437
|
|
438
|
+
|
400
439
|
### Number of Stories Above Grade
|
401
440
|
|
402
441
|
**Name:** num_stories_above_grade,
|
@@ -405,6 +444,7 @@ This is argument value is only relevant when smart default floor to floor height
|
|
405
444
|
**Required:** true,
|
406
445
|
**Model Dependent:** false
|
407
446
|
|
447
|
+
|
408
448
|
### Number of Stories Below Grade
|
409
449
|
|
410
450
|
**Name:** num_stories_below_grade,
|
@@ -413,6 +453,7 @@ This is argument value is only relevant when smart default floor to floor height
|
|
413
453
|
**Required:** true,
|
414
454
|
**Model Dependent:** false
|
415
455
|
|
456
|
+
|
416
457
|
### Building Rotation
|
417
458
|
Set Building Rotation off of North (positive value is clockwise). Rotation applied after geometry generation. Values greater than +/- 45 will result in aspect ratio and party wall orientations that do not match cardinal directions of the inputs.
|
418
459
|
**Name:** building_rotation,
|
@@ -421,6 +462,7 @@ Set Building Rotation off of North (positive value is clockwise). Rotation appli
|
|
421
462
|
**Required:** true,
|
422
463
|
**Model Dependent:** false
|
423
464
|
|
465
|
+
|
424
466
|
### Target Standard
|
425
467
|
|
426
468
|
**Name:** template,
|
@@ -429,6 +471,9 @@ Set Building Rotation off of North (positive value is clockwise). Rotation appli
|
|
429
471
|
**Required:** true,
|
430
472
|
**Model Dependent:** false
|
431
473
|
|
474
|
+
**Choice Display Names** ["DOE Ref Pre-1980", "DOE Ref 1980-2004", "90.1-2004", "90.1-2007", "90.1-2010", "90.1-2013", "90.1-2016", "90.1-2019", "ComStock DOE Ref Pre-1980", "ComStock DOE Ref 1980-2004", "ComStock 90.1-2004", "ComStock 90.1-2007", "ComStock 90.1-2010", "ComStock 90.1-2013", "NREL ZNE Ready 2017", "DEER Pre-1975", "DEER 1985", "DEER 1996", "DEER 2003", "DEER 2007", "DEER 2011", "DEER 2014", "DEER 2015", "DEER 2017", "DEER 2020", "DEER 2025", "DEER 2030", "DEER 2035", "DEER 2040", "DEER 2045", "DEER 2050", "DEER 2055", "DEER 2060", "DEER 2065", "DEER 2070", "DEER 2075"]
|
475
|
+
|
476
|
+
|
432
477
|
### Ratio of North/South Facade Length Relative to East/West Facade Length
|
433
478
|
Selecting an aspect ratio of 0 will trigger a smart building type default. Aspect ratios less than one are not recommended for sliced bar geometry, instead rotate building and use a greater than 1 aspect ratio.
|
434
479
|
**Name:** ns_to_ew_ratio,
|
@@ -437,6 +482,7 @@ Selecting an aspect ratio of 0 will trigger a smart building type default. Aspec
|
|
437
482
|
**Required:** true,
|
438
483
|
**Model Dependent:** false
|
439
484
|
|
485
|
+
|
440
486
|
### Perimeter Multiplier
|
441
487
|
Selecting a value of 0 will trigger a smart building type default. This represents a multiplier for the building perimeter relative to the perimeter of a rectangular building that meets the area and aspect ratio inputs. Other than the smart default of 0.0 this argument should have a value of 1.0 or higher and is only applicable Multiple Space Types - Individual Stories Sliced division method.
|
442
488
|
**Name:** perim_mult,
|
@@ -445,6 +491,7 @@ Selecting a value of 0 will trigger a smart building type default. This represen
|
|
445
491
|
**Required:** true,
|
446
492
|
**Model Dependent:** false
|
447
493
|
|
494
|
+
|
448
495
|
### Bar Width
|
449
496
|
Non-zero value will fix the building width, overriding user entry for Perimeter Multiplier. NS/EW Aspect Ratio may be limited based on target width.
|
450
497
|
**Name:** bar_width,
|
@@ -453,6 +500,7 @@ Non-zero value will fix the building width, overriding user entry for Perimeter
|
|
453
500
|
**Required:** true,
|
454
501
|
**Model Dependent:** false
|
455
502
|
|
503
|
+
|
456
504
|
### Bar Separation Distance Multiplier
|
457
505
|
Multiplier of separation between bar elements relative to building height.
|
458
506
|
**Name:** bar_sep_dist_mult,
|
@@ -461,6 +509,7 @@ Multiplier of separation between bar elements relative to building height.
|
|
461
509
|
**Required:** true,
|
462
510
|
**Model Dependent:** false
|
463
511
|
|
512
|
+
|
464
513
|
### Window to Wall Ratio
|
465
514
|
Selecting a window to wall ratio of 0 will trigger a smart building type default.
|
466
515
|
**Name:** wwr,
|
@@ -469,6 +518,7 @@ Selecting a window to wall ratio of 0 will trigger a smart building type default
|
|
469
518
|
**Required:** true,
|
470
519
|
**Model Dependent:** false
|
471
520
|
|
521
|
+
|
472
522
|
### Fraction of Exterior Wall Area with Adjacent Structure
|
473
523
|
This will impact how many above grade exterior walls are modeled with adiabatic boundary condition.
|
474
524
|
**Name:** party_wall_fraction,
|
@@ -477,6 +527,7 @@ This will impact how many above grade exterior walls are modeled with adiabatic
|
|
477
527
|
**Required:** true,
|
478
528
|
**Model Dependent:** false
|
479
529
|
|
530
|
+
|
480
531
|
### Number of North facing stories with party wall
|
481
532
|
This will impact how many above grade exterior north walls are modeled with adiabatic boundary condition. If this is less than the number of above grade stoes, upper flor will reamin exterior
|
482
533
|
**Name:** party_wall_stories_north,
|
@@ -485,6 +536,7 @@ This will impact how many above grade exterior north walls are modeled with adia
|
|
485
536
|
**Required:** true,
|
486
537
|
**Model Dependent:** false
|
487
538
|
|
539
|
+
|
488
540
|
### Number of South facing stories with party wall
|
489
541
|
This will impact how many above grade exterior south walls are modeled with adiabatic boundary condition. If this is less than the number of above grade stoes, upper flor will reamin exterior
|
490
542
|
**Name:** party_wall_stories_south,
|
@@ -493,6 +545,7 @@ This will impact how many above grade exterior south walls are modeled with adia
|
|
493
545
|
**Required:** true,
|
494
546
|
**Model Dependent:** false
|
495
547
|
|
548
|
+
|
496
549
|
### Number of East facing stories with party wall
|
497
550
|
This will impact how many above grade exterior east walls are modeled with adiabatic boundary condition. If this is less than the number of above grade stoes, upper flor will reamin exterior
|
498
551
|
**Name:** party_wall_stories_east,
|
@@ -501,6 +554,7 @@ This will impact how many above grade exterior east walls are modeled with adiab
|
|
501
554
|
**Required:** true,
|
502
555
|
**Model Dependent:** false
|
503
556
|
|
557
|
+
|
504
558
|
### Number of West facing stories with party wall
|
505
559
|
This will impact how many above grade exterior west walls are modeled with adiabatic boundary condition. If this is less than the number of above grade stoes, upper flor will reamin exterior
|
506
560
|
**Name:** party_wall_stories_west,
|
@@ -509,6 +563,7 @@ This will impact how many above grade exterior west walls are modeled with adiab
|
|
509
563
|
**Required:** true,
|
510
564
|
**Model Dependent:** false
|
511
565
|
|
566
|
+
|
512
567
|
### Is the Bottom Story Exposed to Ground
|
513
568
|
This should be true unless you are modeling a partial building which doesn't include the lowest story. The bottom story floor will have an adiabatic boundary condition when false.
|
514
569
|
**Name:** bottom_story_ground_exposed_floor,
|
@@ -517,6 +572,7 @@ This should be true unless you are modeling a partial building which doesn't inc
|
|
517
572
|
**Required:** true,
|
518
573
|
**Model Dependent:** false
|
519
574
|
|
575
|
+
|
520
576
|
### Is the Top Story an Exterior Roof
|
521
577
|
This should be true unless you are modeling a partial building which doesn't include the highest story. The top story ceiling will have an adiabatic boundary condition when false.
|
522
578
|
**Name:** top_story_exterior_exposed_roof,
|
@@ -525,6 +581,7 @@ This should be true unless you are modeling a partial building which doesn't inc
|
|
525
581
|
**Required:** true,
|
526
582
|
**Model Dependent:** false
|
527
583
|
|
584
|
+
|
528
585
|
### Calculation Method for Story Multiplier
|
529
586
|
|
530
587
|
**Name:** story_multiplier,
|
@@ -533,6 +590,9 @@ This should be true unless you are modeling a partial building which doesn't inc
|
|
533
590
|
**Required:** true,
|
534
591
|
**Model Dependent:** false
|
535
592
|
|
593
|
+
**Choice Display Names** ["None", "Basements Ground Mid Top"]
|
594
|
+
|
595
|
+
|
536
596
|
### Make Mid Story Floor Surfaces Adiabatic
|
537
597
|
If set to true, this will skip surface intersection and make mid story floors and celings adiabatic, not just at multiplied gaps.
|
538
598
|
**Name:** make_mid_story_surfaces_adiabatic,
|
@@ -541,6 +601,7 @@ If set to true, this will skip surface intersection and make mid story floors an
|
|
541
601
|
**Required:** true,
|
542
602
|
**Model Dependent:** false
|
543
603
|
|
604
|
+
|
544
605
|
### Division Method for Bar Space Types
|
545
606
|
To use perimeter multiplier greater than 1 selected Multiple Space Types - Individual Stories Sliced.
|
546
607
|
**Name:** bar_division_method,
|
@@ -549,6 +610,9 @@ To use perimeter multiplier greater than 1 selected Multiple Space Types - Indiv
|
|
549
610
|
**Required:** true,
|
550
611
|
**Model Dependent:** false
|
551
612
|
|
613
|
+
**Choice Display Names** ["Multiple Space Types - Simple Sliced", "Multiple Space Types - Individual Stories Sliced", "Single Space Type - Core and Perimeter"]
|
614
|
+
|
615
|
+
|
552
616
|
### Double Loaded Corridor
|
553
617
|
Add double loaded corridor for building types that have a defined circulation space type, to the selected space types.
|
554
618
|
**Name:** double_loaded_corridor,
|
@@ -557,6 +621,9 @@ Add double loaded corridor for building types that have a defined circulation sp
|
|
557
621
|
**Required:** true,
|
558
622
|
**Model Dependent:** false
|
559
623
|
|
624
|
+
**Choice Display Names** ["None", "Primary Space Type"]
|
625
|
+
|
626
|
+
|
560
627
|
### Choose Space Type Sorting Method
|
561
628
|
|
562
629
|
**Name:** space_type_sort_logic,
|
@@ -565,6 +632,9 @@ Add double loaded corridor for building types that have a defined circulation sp
|
|
565
632
|
**Required:** true,
|
566
633
|
**Model Dependent:** false
|
567
634
|
|
635
|
+
**Choice Display Names** ["Size", "Building Type > Size"]
|
636
|
+
|
637
|
+
|
568
638
|
### Use Upstream Argument Values
|
569
639
|
When true this will look for arguments or registerValues in upstream measures that match arguments from this measure, and will use the value from the upstream measure in place of what is entered for this measure.
|
570
640
|
**Name:** use_upstream_args,
|
@@ -573,6 +643,7 @@ When true this will look for arguments or registerValues in upstream measures th
|
|
573
643
|
**Required:** true,
|
574
644
|
**Model Dependent:** false
|
575
645
|
|
646
|
+
|
576
647
|
### Climate Zone
|
577
648
|
Climate Zone argument is not used by this measure
|
578
649
|
**Name:** climate_zone,
|
@@ -581,6 +652,9 @@ Climate Zone argument is not used by this measure
|
|
581
652
|
**Required:** true,
|
582
653
|
**Model Dependent:** false
|
583
654
|
|
655
|
+
**Choice Display Names** ["Lookup From Stat File", "ASHRAE 169-2013-1A", "ASHRAE 169-2013-1B", "ASHRAE 169-2013-2A", "ASHRAE 169-2013-2B", "ASHRAE 169-2013-3A", "ASHRAE 169-2013-3B", "ASHRAE 169-2013-3C", "ASHRAE 169-2013-4A", "ASHRAE 169-2013-4B", "ASHRAE 169-2013-4C", "ASHRAE 169-2013-5A", "ASHRAE 169-2013-5B", "ASHRAE 169-2013-5C", "ASHRAE 169-2013-6A", "ASHRAE 169-2013-6B", "ASHRAE 169-2013-7A", "ASHRAE 169-2013-8A", "CEC T24-CEC1", "CEC T24-CEC2", "CEC T24-CEC3", "CEC T24-CEC4", "CEC T24-CEC5", "CEC T24-CEC6", "CEC T24-CEC7", "CEC T24-CEC8", "CEC T24-CEC9", "CEC T24-CEC10", "CEC T24-CEC11", "CEC T24-CEC12", "CEC T24-CEC13", "CEC T24-CEC14", "CEC T24-CEC15", "CEC T24-CEC16"]
|
656
|
+
|
657
|
+
|
584
658
|
|
585
659
|
|
586
660
|
|