urbanopt-cli 0.1.0 → 0.2.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +28 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/pull_request_template.md +13 -0
- data/.gitignore +3 -0
- data/Gemfile +54 -0
- data/README.md +2 -2
- data/example_files/Gemfile +19 -4
- data/example_files/example_project.json +615 -579
- data/example_files/mappers/Baseline.rb +293 -158
- data/example_files/mappers/base_workflow.osw +19 -3
- data/example_files/osm_building/7.osm +14137 -0
- data/example_files/osm_building/8.osm +25793 -0
- data/example_files/osm_building/9.osm +15586 -0
- data/example_files/runner.conf +7 -0
- data/lib/uo_cli/version.rb +1 -1
- data/lib/uo_cli.rb +109 -41
- data/uo_cli.gemspec +8 -6
- metadata +37 -30
@@ -48,7 +48,7 @@ module URBANopt
|
|
48
48
|
# do initialization of class variables in thread safe way
|
49
49
|
@@instance_lock.synchronize do
|
50
50
|
if @@osw.nil?
|
51
|
-
|
51
|
+
|
52
52
|
# load the OSW for this class
|
53
53
|
osw_path = File.join(File.dirname(__FILE__), 'base_workflow.osw')
|
54
54
|
File.open(osw_path, 'r') do |file|
|
@@ -78,180 +78,315 @@ module URBANopt
|
|
78
78
|
feature_name = feature_names[0]
|
79
79
|
end
|
80
80
|
|
81
|
+
# deep clone of @@osw before we configure it
|
82
|
+
osw = Marshal.load(Marshal.dump(@@osw))
|
83
|
+
|
84
|
+
# now we have the feature, we can look up its properties and set arguments in the OSW
|
85
|
+
osw[:name] = feature_name
|
86
|
+
osw[:description] = feature_name
|
87
|
+
|
81
88
|
if feature_type == 'Building'
|
82
|
-
|
83
|
-
building_type_1 = feature.building_type
|
84
89
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
90
|
+
# set_run_period
|
91
|
+
begin
|
92
|
+
timesteps_per_hour = feature.timesteps_per_hour
|
93
|
+
if !timesteps_per_hour.empty?
|
94
|
+
OpenStudio::Extension.set_measure_argument(osw, 'set_run_period', 'timesteps_per_hour', timesteps_per_hour)
|
95
|
+
end
|
96
|
+
rescue
|
97
|
+
end
|
98
|
+
begin
|
99
|
+
begin_date = feature.begin_date
|
100
|
+
if !feature.begin_date.empty?
|
101
|
+
# check date-only YYYY-MM-DD
|
102
|
+
if feature.begin_date.length > 10
|
103
|
+
feature.begin_date = feature.begin_date[0, 10]
|
104
|
+
end
|
105
|
+
OpenStudio::Extension.set_measure_argument(osw, 'set_run_period', 'begin_date', begin_date)
|
106
|
+
end
|
107
|
+
rescue
|
108
|
+
end
|
109
|
+
begin
|
110
|
+
end_date = feature.end_date
|
111
|
+
if !feature.end_date.empty?
|
112
|
+
# check date-only YYYY-MM-DD
|
113
|
+
if feature.end_date.length > 10
|
114
|
+
feature.end_date = feature.end_date[0, 10]
|
115
|
+
end
|
116
|
+
OpenStudio::Extension.set_measure_argument(osw, 'set_run_period', 'end_date', end_date)
|
117
|
+
end
|
118
|
+
rescue
|
119
|
+
end
|
120
|
+
|
121
|
+
# ChangeBuildingLocation
|
122
|
+
# cec climate zone takes precedence
|
123
|
+
cec_found = false
|
124
|
+
begin
|
125
|
+
cec_climate_zone = feature.cec_climate_zone
|
126
|
+
if !cec_climate_zone.empty?
|
127
|
+
cec_climate_zone = "T24-CEC" + cec_climate_zone
|
128
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', cec_climate_zone)
|
129
|
+
cec_found = true
|
130
|
+
end
|
131
|
+
rescue
|
132
|
+
end
|
133
|
+
if !cec_found
|
134
|
+
begin
|
135
|
+
climate_zone = feature.climate_zone
|
136
|
+
if !climate_zone.empty?
|
137
|
+
climate_zone = "ASHRAE 169-2013-" + climate_zone
|
138
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', climate_zone)
|
139
|
+
end
|
140
|
+
rescue
|
141
|
+
end
|
142
|
+
end
|
120
143
|
|
121
|
-
|
122
|
-
|
123
|
-
|
144
|
+
begin
|
145
|
+
weather_filename = feature.weather_filename
|
146
|
+
if !feature.weather_filename.empty?
|
147
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', weather_filename)
|
148
|
+
end
|
149
|
+
rescue
|
150
|
+
end
|
151
|
+
# convert to hash
|
152
|
+
building_hash = feature.to_hash
|
153
|
+
# check for detailed model filename
|
154
|
+
if building_hash.key?(:detailed_model_filename)
|
155
|
+
detailed_model_filename = building_hash[:detailed_model_filename]
|
156
|
+
osw[:file_paths] << File.join(File.dirname(__FILE__), '../osm_building/')
|
157
|
+
osw[:seed_file] = detailed_model_filename
|
124
158
|
|
125
|
-
|
126
|
-
|
127
|
-
mixed_use_types << mixed_type_2
|
128
|
-
mixed_use_types << mixed_type_3
|
129
|
-
mixed_use_types << mixed_type_4
|
159
|
+
# skip PMV measure with detailed models:
|
160
|
+
OpenStudio::Extension.set_measure_argument(osw, 'PredictedMeanVote', '__SKIP__', true)
|
130
161
|
|
131
|
-
|
162
|
+
# in case detailed model filename is not present
|
163
|
+
else
|
164
|
+
building_type_1 = building_hash[:building_type]
|
165
|
+
case building_type_1
|
166
|
+
when 'Multifamily (5 or more units)'
|
167
|
+
building_type_1 = 'MidriseApartment'
|
168
|
+
when 'Multifamily (2 to 4 units)'
|
169
|
+
building_type_1 = 'MidriseApartment'
|
170
|
+
when 'Single-Family'
|
171
|
+
building_type_1 = 'MidriseApartment'
|
172
|
+
when 'Office'
|
173
|
+
building_type_1 = 'MediumOffice'
|
174
|
+
when 'Outpatient health care'
|
175
|
+
building_type_1 = 'Outpatient'
|
176
|
+
when 'Inpatient health care'
|
177
|
+
building_type_1 = 'Hospital'
|
178
|
+
when 'Lodging'
|
179
|
+
building_type_1 = 'LargeHotel'
|
180
|
+
when 'Food service'
|
181
|
+
building_type_1 = 'FullServiceRestaurant'
|
182
|
+
when 'Strip shopping mall'
|
183
|
+
building_type_1 = 'RetailStripmall'
|
184
|
+
when 'Retail other than mall'
|
185
|
+
building_type_1 = 'RetailStandalone'
|
186
|
+
when 'Education'
|
187
|
+
building_type_1 = 'SecondarySchool'
|
188
|
+
when 'Nursing'
|
189
|
+
building_type_1 = 'MidriseApartment'
|
190
|
+
when 'Mixed use'
|
191
|
+
mixed_type_1 = building_hash[:mixed_type_1]
|
192
|
+
mixed_type_2 = building_hash[:mixed_type_2]
|
193
|
+
mixed_type_2_percentage = building_hash[:mixed_type_2_percentage]
|
194
|
+
mixed_type_2_fract_bldg_area = mixed_type_2_percentage*0.01
|
195
|
+
|
196
|
+
mixed_type_3 = building_hash[:mixed_type_3]
|
197
|
+
mixed_type_3_percentage = building_hash[:mixed_type_3_percentage]
|
198
|
+
mixed_type_3_fract_bldg_area = mixed_type_3_percentage*0.01
|
199
|
+
|
200
|
+
mixed_type_4 = building_hash[:mixed_type_4]
|
201
|
+
mixed_type_4_percentage = building_hash[:mixed_type_4_percentage]
|
202
|
+
mixed_type_4_fract_bldg_area = mixed_type_4_percentage*0.01
|
203
|
+
|
204
|
+
mixed_use_types = []
|
205
|
+
mixed_use_types << mixed_type_1
|
206
|
+
mixed_use_types << mixed_type_2
|
207
|
+
mixed_use_types << mixed_type_3
|
208
|
+
mixed_use_types << mixed_type_4
|
209
|
+
|
210
|
+
openstudio_mixed_use_types = []
|
211
|
+
|
212
|
+
mixed_use_types.each do |mixed_use_type|
|
213
|
+
|
214
|
+
case mixed_use_type
|
215
|
+
when 'Multifamily (5 or more units)'
|
216
|
+
mixed_use_type = 'MidriseApartment'
|
217
|
+
when 'Multifamily (2 to 4 units)'
|
218
|
+
mixed_use_type = 'MidriseApartment'
|
219
|
+
when 'Single-Family'
|
220
|
+
mixed_use_type = 'MidriseApartment'
|
221
|
+
when 'Office'
|
222
|
+
mixed_use_type = 'MediumOffice'
|
223
|
+
when 'Outpatient health care'
|
224
|
+
mixed_use_type = 'Outpatient'
|
225
|
+
when 'Inpatient health care'
|
226
|
+
mixed_use_type = 'Hospital'
|
227
|
+
when 'Lodging'
|
228
|
+
mixed_use_type = 'LargeHotel'
|
229
|
+
when 'Food service'
|
230
|
+
mixed_use_type = 'FullServiceRestaurant'
|
231
|
+
when 'Strip shopping mall'
|
232
|
+
mixed_use_type = 'RetailStripmall'
|
233
|
+
when 'Retail other than mall'
|
234
|
+
mixed_use_type = 'RetailStandalone'
|
235
|
+
when 'Education'
|
236
|
+
mixed_use_type = 'SecondarySchool'
|
237
|
+
when 'Nursing'
|
238
|
+
mixed_use_type = 'MidriseApartment'
|
239
|
+
end
|
240
|
+
|
241
|
+
openstudio_mixed_use_types << mixed_use_type
|
242
|
+
end
|
243
|
+
|
244
|
+
openstudio_mixed_type_1 = openstudio_mixed_use_types[0]
|
245
|
+
openstudio_mixed_type_2 = openstudio_mixed_use_types[1]
|
246
|
+
openstudio_mixed_type_3 = openstudio_mixed_use_types[2]
|
247
|
+
openstudio_mixed_type_4 = openstudio_mixed_use_types[3]
|
248
|
+
|
249
|
+
end
|
250
|
+
footprint_area = building_hash[:footprint_area]
|
251
|
+
floor_height = 10
|
252
|
+
number_of_stories = building_hash[:number_of_stories]
|
253
|
+
if building_hash.key?(:number_of_stories_above_ground)
|
254
|
+
number_of_stories_above_ground = building_hash[:number_of_stories_above_ground]
|
255
|
+
number_of_stories_below_ground = number_of_stories - number_of_stories_above_ground
|
256
|
+
else
|
257
|
+
number_of_stories_above_ground = number_of_stories
|
258
|
+
number_of_stories_below_ground = 0
|
259
|
+
end
|
260
|
+
if building_hash.key?(:system_type)
|
261
|
+
system_type = building_hash[:system_type]
|
262
|
+
else
|
263
|
+
system_type = "Inferred"
|
264
|
+
end
|
132
265
|
|
133
|
-
|
266
|
+
def time_mapping(time)
|
267
|
+
hour = time.split(':')[0]
|
268
|
+
minute = time.split(':')[1]
|
269
|
+
fraction = minute.to_f/60
|
270
|
+
fraction_roundup = fraction.round(2)
|
271
|
+
minute_fraction = fraction_roundup.to_s.split('.')[1]
|
272
|
+
new_time = [hour, minute_fraction].join('.')
|
273
|
+
return new_time
|
274
|
+
end
|
134
275
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
mixed_use_type = 'MidriseApartment'
|
142
|
-
when 'Office'
|
143
|
-
mixed_use_type = 'MediumOffice'
|
144
|
-
when 'Outpatient health care'
|
145
|
-
mixed_use_type = 'Outpatient'
|
146
|
-
when 'Inpatient health care'
|
147
|
-
mixed_use_type = 'Hospital'
|
148
|
-
when 'Lodging'
|
149
|
-
mixed_use_type = 'LargeHotel'
|
150
|
-
when 'Food service'
|
151
|
-
mixed_use_type = 'FullServiceRestaurant'
|
152
|
-
when 'Strip shopping mall'
|
153
|
-
mixed_use_type = 'RetailStripmall'
|
154
|
-
when 'Retail other than mall'
|
155
|
-
mixed_use_type = 'RetailStandalone'
|
156
|
-
when 'Education'
|
157
|
-
mixed_use_type = 'SecondarySchool'
|
158
|
-
when 'Nursing'
|
159
|
-
mixed_use_type = 'MidriseApartment'
|
276
|
+
#set weekday start time
|
277
|
+
begin
|
278
|
+
weekday_start_time = feature.weekday_start_time
|
279
|
+
if !feature.weekday_start_time.empty?
|
280
|
+
new_weekday_start_time = time_mapping(weekday_start_time)
|
281
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'wkdy_op_hrs_start_time', new_weekday_start_time, 'create_typical_building_from_model 1')
|
160
282
|
end
|
283
|
+
rescue
|
284
|
+
end
|
161
285
|
|
162
|
-
|
286
|
+
# set weekday duration
|
287
|
+
begin
|
288
|
+
weekday_duration = feature.weekday_duration
|
289
|
+
if !feature.weekday_duration.empty?
|
290
|
+
new_weekday_duration = time_mapping(weekday_duration)
|
291
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'wkdy_op_hrs_duration', new_weekday_duration, 'create_typical_building_from_model 1')
|
292
|
+
end
|
293
|
+
rescue
|
294
|
+
end
|
295
|
+
|
296
|
+
# set weekend start time
|
297
|
+
begin
|
298
|
+
weekend_start_time = feature.weekend_start_time
|
299
|
+
if !feature.weekend_start_time.empty?
|
300
|
+
new_weekend_start_time = time_mapping(weekend_start_time)
|
301
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'wknd_op_hrs_start_time', new_weekend_start_time, 'create_typical_building_from_model 1')
|
302
|
+
end
|
303
|
+
rescue
|
304
|
+
end
|
305
|
+
|
306
|
+
# set weekend duration
|
307
|
+
begin
|
308
|
+
weekend_duration = feature.weekend_duration
|
309
|
+
if !feature.weekend_duration.empty?
|
310
|
+
new_weekend_duration = time_mapping(weekend_duration)
|
311
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'wknd_op_hrs_duration', new_weekend_duration, 'create_typical_building_from_model 1')
|
312
|
+
end
|
313
|
+
rescue
|
163
314
|
end
|
164
315
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
316
|
+
# template
|
317
|
+
begin
|
318
|
+
template = feature.template
|
319
|
+
if !feature.template.empty?
|
320
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'template', template)
|
321
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'template', feature.template, 'create_typical_building_from_model 1')
|
322
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'template', feature.template, 'create_typical_building_from_model 2')
|
323
|
+
end
|
324
|
+
rescue
|
325
|
+
end
|
326
|
+
|
327
|
+
# TODO: surface_elevation has no current mapping
|
328
|
+
# TODO: tariff_filename has no current mapping
|
329
|
+
|
330
|
+
# create a bar building, will have spaces tagged with individual space types given the
|
331
|
+
# input building types
|
332
|
+
# set skip measure to false
|
333
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', '__SKIP__', false)
|
334
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'single_floor_area', footprint_area)
|
335
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'floor_height', floor_height)
|
336
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'num_stories_above_grade', number_of_stories_above_ground)
|
337
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'num_stories_below_grade', number_of_stories_below_ground)
|
169
338
|
|
170
|
-
|
339
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_a', building_type_1)
|
171
340
|
|
172
|
-
|
173
|
-
floor_height = 10
|
174
|
-
number_of_stories = feature.number_of_stories
|
175
|
-
|
176
|
-
# default values
|
177
|
-
number_of_stories_above_ground = number_of_stories
|
178
|
-
number_of_stories_below_ground = 0
|
179
|
-
begin
|
180
|
-
number_of_stories_above_ground = feature.number_of_stories_above_ground
|
181
|
-
number_of_stories_below_ground = number_of_stories - number_of_stories_above_ground
|
182
|
-
rescue
|
183
|
-
end
|
184
|
-
#template = feature.template
|
185
|
-
end
|
341
|
+
if building_type_1 == 'Mixed use'
|
186
342
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
343
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_a', openstudio_mixed_type_1)
|
344
|
+
|
345
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_b', openstudio_mixed_type_2)
|
346
|
+
|
347
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_b_fract_bldg_area', mixed_type_2_fract_bldg_area)
|
348
|
+
|
349
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_c', openstudio_mixed_type_3)
|
350
|
+
|
351
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_c_fract_bldg_area', mixed_type_3_fract_bldg_area)
|
352
|
+
|
353
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_d', openstudio_mixed_type_4)
|
354
|
+
|
355
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_d_fract_bldg_area', mixed_type_4_fract_bldg_area)
|
356
|
+
|
357
|
+
end
|
193
358
|
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
# now we have the feature, we can look up its properties and set arguments in the OSW
|
198
|
-
osw[:name] = feature_name
|
199
|
-
osw[:description] = feature_name
|
200
|
-
|
201
|
-
# create a bar building, will have spaces tagged with individual space types given the input building types
|
202
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'single_floor_area', footprint_area)
|
203
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'floor_height', floor_height)
|
204
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'num_stories_above_grade', number_of_stories_above_ground)
|
205
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'num_stories_below_grade', number_of_stories_below_ground)
|
359
|
+
# calling create typical building the first time will create space types
|
360
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', '__SKIP__', false)
|
361
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'add_hvac', false, 'create_typical_building_from_model 1')
|
206
362
|
|
207
|
-
|
208
|
-
|
209
|
-
|
363
|
+
# create a blended space type for each story
|
364
|
+
OpenStudio::Extension.set_measure_argument(osw,
|
365
|
+
'blended_space_type_from_model', '__SKIP__', false)
|
366
|
+
OpenStudio::Extension.set_measure_argument(osw,
|
367
|
+
'blended_space_type_from_model', 'blend_method', 'Building Story')
|
368
|
+
|
369
|
+
# create geometry for the desired feature, this will reuse blended space types in the model for each story and remove the bar geometry
|
370
|
+
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', '__SKIP__', false)
|
371
|
+
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'geojson_file', scenario.feature_file.path)
|
372
|
+
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'feature_id', feature_id)
|
373
|
+
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'surrounding_buildings', 'ShadingOnly')
|
374
|
+
|
375
|
+
# call create typical building a second time, do not touch space types, only add hvac
|
376
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', '__SKIP__', false)
|
377
|
+
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'system_type', system_type, 'create_typical_building_from_model 2')
|
378
|
+
end
|
210
379
|
|
211
|
-
|
212
|
-
|
213
|
-
OpenStudio::Extension.set_measure_argument(osw, '
|
214
|
-
|
215
|
-
OpenStudio::Extension.set_measure_argument(osw, '
|
216
|
-
|
217
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_c', openstudio_mixed_type_3)
|
218
|
-
|
219
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_c_fract_bldg_area', mixed_type_3_fract_bldg_area)
|
220
|
-
|
221
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_d', openstudio_mixed_type_4)
|
222
|
-
|
223
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_bar_from_building_type_ratios', 'bldg_type_d_fract_bldg_area', mixed_type_4_fract_bldg_area)
|
224
|
-
|
225
|
-
end
|
226
|
-
|
227
|
-
# calling create typical building the first time will create space types
|
228
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'add_hvac', false, 'create_typical_building_from_model 1')
|
229
|
-
|
230
|
-
# create a blended space type for each story
|
231
|
-
OpenStudio::Extension.set_measure_argument(osw,
|
232
|
-
'blended_space_type_from_model', 'blend_method', 'Building Story')
|
233
|
-
|
234
|
-
# create geometry for the desired feature, this will reuse blended space types in the model for each story and remove the bar geometry
|
235
|
-
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'geojson_file', scenario.feature_file.path)
|
236
|
-
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'feature_id', feature_id)
|
237
|
-
OpenStudio::Extension.set_measure_argument(osw, 'urban_geometry_creation', 'surrounding_buildings', 'ShadingOnly')
|
238
|
-
|
239
|
-
if building_type_1 == 'MidriseApartment'
|
240
|
-
OpenStudio::Extension.set_measure_argument(osw, 'IncreaseInsulationRValueForExteriorWalls', '__SKIP__', true)
|
241
|
-
OpenStudio::Extension.set_measure_argument(osw, 'IncreaseInsulationRValueForExteriorWalls', 'r_value', 10)
|
242
|
-
end
|
243
|
-
|
244
|
-
# call create typical building a second time, do not touch space types, only add hvac
|
245
|
-
OpenStudio::Extension.set_measure_argument(osw, 'create_typical_building_from_model', 'system_type', system_type, 'create_typical_building_from_model 2')
|
246
|
-
|
247
|
-
# call the default feature reporting measure
|
248
|
-
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_id', feature_id)
|
249
|
-
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_name', feature_name)
|
250
|
-
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_type', feature_type)
|
380
|
+
|
381
|
+
# call the default feature reporting measure
|
382
|
+
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_id', feature_id)
|
383
|
+
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_name', feature_name)
|
384
|
+
OpenStudio::Extension.set_measure_argument(osw, 'default_feature_reports', 'feature_type', feature_type)
|
385
|
+
end # if Building
|
251
386
|
|
252
387
|
return osw
|
253
|
-
end
|
388
|
+
end # def
|
254
389
|
|
255
|
-
end
|
256
|
-
end
|
257
|
-
end
|
390
|
+
end #BaselineMapper
|
391
|
+
end #Scenario
|
392
|
+
end #URBANopt
|
@@ -9,7 +9,7 @@
|
|
9
9
|
{
|
10
10
|
"measure_dir_name": "set_run_period",
|
11
11
|
"arguments": {
|
12
|
-
"timesteps_per_hour":
|
12
|
+
"timesteps_per_hour": 4,
|
13
13
|
"begin_date": "2019-06-01",
|
14
14
|
"end_date": "2019-08-01"
|
15
15
|
}
|
@@ -17,11 +17,12 @@
|
|
17
17
|
"measure_dir_name": "ChangeBuildingLocation",
|
18
18
|
"arguments": {
|
19
19
|
"weather_file_name": "USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.epw",
|
20
|
-
"climate_zone": "6A"
|
20
|
+
"climate_zone": "ASHRAE 169-2013-6A"
|
21
21
|
}
|
22
22
|
},{
|
23
23
|
"measure_dir_name": "create_bar_from_building_type_ratios",
|
24
24
|
"arguments": {
|
25
|
+
"__SKIP__": true,
|
25
26
|
"bldg_type_a": null,
|
26
27
|
"bldg_type_a_num_units": 0,
|
27
28
|
"bldg_type_b": "SmallOffice",
|
@@ -49,16 +50,20 @@
|
|
49
50
|
"name": "create_typical_building_from_model 1",
|
50
51
|
"measure_dir_name": "create_typical_building_from_model",
|
51
52
|
"arguments": {
|
52
|
-
"
|
53
|
+
"__SKIP__": true,
|
54
|
+
"add_hvac": false,
|
55
|
+
"add_refrigeration": false
|
53
56
|
}
|
54
57
|
},{
|
55
58
|
"measure_dir_name": "blended_space_type_from_model",
|
56
59
|
"arguments": {
|
60
|
+
"__SKIP__": true,
|
57
61
|
"blend_method": "Building Story"
|
58
62
|
}
|
59
63
|
},{
|
60
64
|
"measure_dir_name": "urban_geometry_creation",
|
61
65
|
"arguments": {
|
66
|
+
"__SKIP__": true,
|
62
67
|
"geojson_file": "exportGeo.json",
|
63
68
|
"feature_id": "5",
|
64
69
|
"surrounding_buildings": "None"
|
@@ -67,6 +72,7 @@
|
|
67
72
|
"name": "create_typical_building_from_model 2",
|
68
73
|
"measure_dir_name": "create_typical_building_from_model",
|
69
74
|
"arguments": {
|
75
|
+
"__SKIP__": true,
|
70
76
|
"template": "90.1-2004",
|
71
77
|
"add_constructions": false,
|
72
78
|
"add_space_type_loads": false,
|
@@ -74,11 +80,21 @@
|
|
74
80
|
"add_exterior_lights": false,
|
75
81
|
"add_exhaust": false,
|
76
82
|
"add_swh": false,
|
83
|
+
"add_refrigeration": false,
|
77
84
|
"remove_objects": false,
|
78
85
|
"system_type": "Inferred",
|
79
86
|
"add_hvac": true,
|
80
87
|
"use_upstream_args": false
|
81
88
|
}
|
89
|
+
},{
|
90
|
+
"measure_dir_name":"PredictedMeanVote",
|
91
|
+
"arguments":{
|
92
|
+
"__SKIP__":false,
|
93
|
+
"comfortWarnings":true,
|
94
|
+
"workEfficiencySchedule":"Work Efficiency Schedule",
|
95
|
+
"clothingSchedule":"Clothing Schedule",
|
96
|
+
"airVelocitySchedule":"Air Velocity Schedule"
|
97
|
+
}
|
82
98
|
},{
|
83
99
|
"measure_dir_name": "IncreaseInsulationRValueForExteriorWalls",
|
84
100
|
"arguments": {
|