openstudio-model-articulation 0.2.0 → 0.2.1
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/CHANGELOG.md +21 -0
- data/Rakefile +20 -1
- data/lib/measures/AssignConstructionSetToBuilding/measure.rb +2 -0
- data/lib/measures/AssignSpaceTypeBySpaceName/measure.rb +2 -0
- data/lib/measures/AssignSpaceTypeToBuilding/measure.rb +2 -0
- data/lib/measures/AssignSpacesToStories/measure.rb +2 -0
- data/lib/measures/BarAspectRatioSlicedBySpaceType/measure.rb +2 -0
- data/lib/measures/BarAspectRatioSlicedBySpaceType/measure.xml +0 -6
- data/lib/measures/BarAspectRatioSlicedBySpaceType/resources/os_lib_cofee.rb +2 -0
- data/lib/measures/BarAspectRatioStudy/measure.rb +2 -0
- data/lib/measures/CleanupSpaceOrigins/measure.rb +2 -0
- data/lib/measures/FindAndReplaceObjectNames/measure.rb +2 -0
- data/lib/measures/InjectOsmGeometryIntoAnExternalIdf/measure.rb +2 -0
- data/lib/measures/InjectOsmGeometryIntoAnExternalIdf/measure.xml +9 -9
- data/lib/measures/RemoveHardAssignedConstructions/measure.rb +2 -0
- data/lib/measures/RenameSpaceSurfacesBasedonParentSpaceandOrientation/measure.rb +2 -0
- data/lib/measures/RotateBuilding/measure.rb +2 -0
- data/lib/measures/SetExtWallToGroundBoundaryConditionByStory/measure.rb +2 -0
- data/lib/measures/SetInteriorWallsAndFloorsToAdiabatic/measure.rb +2 -0
- data/lib/measures/SetInteriorWallsToSelectedConstruction/measure.rb +2 -0
- data/lib/measures/SetWindowToWallRatioByFacade/measure.rb +21 -31
- data/lib/measures/SetWindowToWallRatioByFacade/measure.xml +4 -4
- data/lib/measures/SimplifyGeometryToSlicedBar/measure.rb +2 -0
- data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_cofee.rb +2 -0
- data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_geometry.rb +2 -0
- data/lib/measures/SimplifyGeometryToSlicedBar/resources/os_lib_helper_methods.rb +3 -1
- data/lib/measures/SpaceTypeAndConstructionSetWizard/measure.rb +2 -0
- data/lib/measures/SpaceTypeAndConstructionSetWizard/measure.xml +1 -1
- data/lib/measures/SurfaceMatching/measure.rb +2 -0
- data/lib/measures/blended_space_type_from_floor_area_ratios/measure.rb +2 -0
- data/lib/measures/blended_space_type_from_model/measure.rb +2 -0
- data/lib/measures/blended_space_type_from_model/resources/os_lib_model_simplification.rb +2 -0
- data/lib/measures/clone_building_from_external_model/measure.rb +2 -0
- data/lib/measures/clone_building_from_external_model/measure.xml +4 -4
- data/lib/measures/create_DOE_prototype_building/measure.rb +8 -1
- data/lib/measures/create_DOE_prototype_building/measure.xml +2 -2
- data/lib/measures/create_and_assign_thermal_zones_for_unassigned_spaces/measure.rb +2 -0
- data/lib/measures/create_bar_from_building_type_ratios/measure.rb +3 -1
- data/lib/measures/create_bar_from_deer_building_type_ratios/measure.rb +2 -0
- data/lib/measures/create_bar_from_doe_building_type_ratios/measure.rb +2 -0
- data/lib/measures/create_bar_from_model/measure.rb +2 -0
- data/lib/measures/create_baseline_building/measure.rb +3 -1
- data/lib/measures/create_baseline_building/measure.xml +2 -2
- data/lib/measures/create_deer_prototype_building/measure.rb +2 -0
- data/lib/measures/create_deer_prototype_building/measure.xml +2 -2
- data/lib/measures/create_deer_prototype_building/resources/deer_building_types.rb +2 -0
- data/lib/measures/create_parametric_schedules/measure.rb +2 -0
- data/lib/measures/create_typical_building_from_model/measure.rb +2 -0
- data/lib/measures/create_typical_building_from_model/measure.xml +11 -11
- data/lib/measures/create_typical_building_from_model/resources/Model.hvac.rb +3 -1
- data/lib/measures/create_typical_deer_building_from_model/measure.rb +2 -0
- data/lib/measures/create_typical_deer_building_from_model/measure.xml +11 -11
- data/lib/measures/create_typical_deer_building_from_model/resources/Model.hvac.rb +3 -1
- data/lib/measures/create_typical_doe_building_from_model/measure.rb +2 -0
- data/lib/measures/create_typical_doe_building_from_model/measure.xml +19 -19
- data/lib/measures/create_typical_doe_building_from_model/resources/Model.hvac.rb +3 -1
- data/lib/measures/deer_space_type_and_construction_set_wizard/measure.rb +2 -0
- data/lib/measures/find_and_replace_in_all_thermal_zone_names/measure.rb +2 -0
- data/lib/measures/make_shading_surfaces_based_on_zone_multipliers/measure.rb +2 -0
- data/lib/measures/merge_floorspace_js_with_model/measure.rb +2 -0
- data/lib/measures/merge_floorspace_js_with_model/measure.xml +9 -15
- data/lib/measures/merge_spaces_from_external_file/measure.rb +2 -0
- data/lib/measures/merge_spaces_from_external_file/measure.xml +4 -4
- data/lib/measures/merge_spaces_from_external_file/resources/ScheduleTranslator.rb +6 -4
- data/lib/measures/radiance_measure/measure.rb +2 -0
- data/lib/measures/radiance_measure/measure.xml +9 -9
- data/lib/measures/radiant_slab_with_doas/LICENSE.md +27 -0
- data/lib/measures/radiant_slab_with_doas/README.md +156 -0
- data/lib/measures/radiant_slab_with_doas/README.md.erb +42 -0
- data/lib/measures/radiant_slab_with_doas/measure.rb +406 -0
- data/lib/measures/radiant_slab_with_doas/measure.xml +346 -0
- data/lib/measures/replace_geometry_by_story/measure.rb +2 -0
- data/lib/measures/scale_geometry/measure.rb +2 -0
- data/lib/openstudio/model_articulation/version.rb +1 -1
- metadata +12 -8
- data/lib/measures/merge_floorspace_js_with_model/docs/.gitkeep +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ba519a8dc1aaa822a60d944a97d548f9ab33b0dd5be3833d274453bbd523d785
|
|
4
|
+
data.tar.gz: 05aa260fa5e8a14aeca00d85a9f0bb30a1a04a55f9545650d71b0230ac366b88
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 14f1b3be45603f98d6f9f1268888a29c10dc6e2218b440717863e3118260b9eed133320f9332fe02bee4a1d11337a329caa673f737b5e57baaa3a643b02469b0
|
|
7
|
+
data.tar.gz: 344bb6bcbc66ffde8aff858b7829599de5cbfca0d4efcbbbac3a91e3a45f6ca6630b5393075222e2259b3ba261b00a9211f02c161c036222037878e6ae0853f1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# OpenStudio Model Articulation Gems
|
|
2
2
|
|
|
3
|
+
## Version 0.2.1
|
|
4
|
+
* Add rubocop to Rakefile
|
|
5
|
+
* Updates the following in lib/measures:
|
|
6
|
+
* BarAspectRationSlicedBySpaceType
|
|
7
|
+
* InjectOsmGeometryIntoAnExternalIdf
|
|
8
|
+
* SetWindowToWallRatioByFacade
|
|
9
|
+
* SpaceTypeAndConstructionSetWizard
|
|
10
|
+
* clone_building_from_external_model
|
|
11
|
+
* create_DOE_prototype_building
|
|
12
|
+
* create_baseline_building
|
|
13
|
+
* create_deer_prototype_building
|
|
14
|
+
* create_typical_building_from_model
|
|
15
|
+
* create_typical_deer_building_from_model
|
|
16
|
+
* create_typical_doe_building_from_model
|
|
17
|
+
* merge_floorspace_js_with_model
|
|
18
|
+
* merge_spaces_from_external_file
|
|
19
|
+
* radiance_measure
|
|
20
|
+
* Adds the following to lib/measures:
|
|
21
|
+
* radiant_slab_with_doas
|
|
22
|
+
|
|
23
|
+
|
|
3
24
|
## Version 0.2.0
|
|
4
25
|
|
|
5
26
|
* Support for OpenStudio 3.0
|
data/Rakefile
CHANGED
|
@@ -38,13 +38,32 @@ require 'rspec/core/rake_task'
|
|
|
38
38
|
|
|
39
39
|
RSpec::Core::RakeTask.new(:spec)
|
|
40
40
|
|
|
41
|
+
require 'rubocop/rake_task'
|
|
42
|
+
RuboCop::RakeTask.new
|
|
43
|
+
|
|
41
44
|
# Load in the rake tasks from the base extension gem
|
|
42
45
|
require 'openstudio/extension/rake_task'
|
|
43
46
|
require 'openstudio/model_articulation'
|
|
44
47
|
rake_task = OpenStudio::Extension::RakeTask.new
|
|
45
|
-
rake_task.set_extension_class(OpenStudio::ModelArticulation::Extension)
|
|
48
|
+
rake_task.set_extension_class(OpenStudio::ModelArticulation::Extension, 'nrel/openstudio-model-articulation-gem')
|
|
46
49
|
|
|
47
50
|
require 'openstudio_measure_tester/rake_task'
|
|
48
51
|
OpenStudioMeasureTester::RakeTask.new
|
|
49
52
|
|
|
50
53
|
task default: :spec
|
|
54
|
+
|
|
55
|
+
desc 'Delete measure test output'
|
|
56
|
+
task :delete_measure_test_outputs do
|
|
57
|
+
require 'fileutils'
|
|
58
|
+
|
|
59
|
+
puts 'Deleting tests/output directory from measures.'
|
|
60
|
+
|
|
61
|
+
# get measures in repo
|
|
62
|
+
measures = Dir.glob('**/**/**/measure.rb')
|
|
63
|
+
|
|
64
|
+
# create unique list of parent directories for measures.
|
|
65
|
+
measures.each do |i|
|
|
66
|
+
FileUtils.rm_rf(i.gsub('measure.rb', 'tests/output'))
|
|
67
|
+
end
|
|
68
|
+
puts 'deleteting test outputs'
|
|
69
|
+
end
|
|
@@ -85,12 +85,6 @@
|
|
|
85
85
|
<usage_type>test</usage_type>
|
|
86
86
|
<checksum>3FDFD18A</checksum>
|
|
87
87
|
</file>
|
|
88
|
-
<file>
|
|
89
|
-
<filename>test.osm</filename>
|
|
90
|
-
<filetype>osm</filetype>
|
|
91
|
-
<usage_type>test</usage_type>
|
|
92
|
-
<checksum>60715087</checksum>
|
|
93
|
-
</file>
|
|
94
88
|
<file>
|
|
95
89
|
<filename>README.md</filename>
|
|
96
90
|
<filetype>md</filetype>
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<schema_version>3.0</schema_version>
|
|
4
4
|
<name>inject_osm_geometry_into_an_external_idf</name>
|
|
5
5
|
<uid>633cd1c5-5b55-4b50-ab20-cf2d2f7ddff8</uid>
|
|
6
|
-
<version_id>
|
|
7
|
-
<version_modified>
|
|
6
|
+
<version_id>280b80cc-c941-463b-bfd1-dbc3bd969f25</version_id>
|
|
7
|
+
<version_modified>20200624T003817Z</version_modified>
|
|
8
8
|
<xml_checksum>3BE1CF9C</xml_checksum>
|
|
9
9
|
<class_name>InjectOsmGeometryIntoAnExternalIdf</class_name>
|
|
10
10
|
<display_name>InjectOsmGeometryIntoAnExternalIdf</display_name>
|
|
@@ -136,7 +136,7 @@ Constructions and other resources won?t be moved back and forth but the surface
|
|
|
136
136
|
<checksum>56ED3E65</checksum>
|
|
137
137
|
</file>
|
|
138
138
|
<file>
|
|
139
|
-
<filename>
|
|
139
|
+
<filename>measure_test.osw</filename>
|
|
140
140
|
<filetype>osw</filetype>
|
|
141
141
|
<usage_type>test</usage_type>
|
|
142
142
|
<checksum>F5FABCCF</checksum>
|
|
@@ -159,12 +159,6 @@ Constructions and other resources won?t be moved back and forth but the surface
|
|
|
159
159
|
<usage_type>readme</usage_type>
|
|
160
160
|
<checksum>6FF2AF68</checksum>
|
|
161
161
|
</file>
|
|
162
|
-
<file>
|
|
163
|
-
<filename>InjectOsmGeometryIntoAnExternalIdf_Test.rb</filename>
|
|
164
|
-
<filetype>rb</filetype>
|
|
165
|
-
<usage_type>test</usage_type>
|
|
166
|
-
<checksum>91289177</checksum>
|
|
167
|
-
</file>
|
|
168
162
|
<file>
|
|
169
163
|
<version>
|
|
170
164
|
<software_program>OpenStudio</software_program>
|
|
@@ -176,5 +170,11 @@ Constructions and other resources won?t be moved back and forth but the surface
|
|
|
176
170
|
<usage_type>script</usage_type>
|
|
177
171
|
<checksum>A76C44E1</checksum>
|
|
178
172
|
</file>
|
|
173
|
+
<file>
|
|
174
|
+
<filename>InjectOsmGeometryIntoAnExternalIdf_Test.rb</filename>
|
|
175
|
+
<filetype>rb</filetype>
|
|
176
|
+
<usage_type>test</usage_type>
|
|
177
|
+
<checksum>A4070AAC</checksum>
|
|
178
|
+
</file>
|
|
179
179
|
</files>
|
|
180
180
|
</measure>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
# *******************************************************************************
|
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
|
3
5
|
# All rights reserved.
|
|
@@ -176,7 +178,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
176
178
|
|
|
177
179
|
# calculate initial envelope cost as negative value
|
|
178
180
|
envelope_cost = 0
|
|
179
|
-
constructions = model.getConstructions
|
|
181
|
+
constructions = model.getConstructions.sort
|
|
180
182
|
constructions.each do |construction|
|
|
181
183
|
const_llcs = construction.lifeCycleCosts
|
|
182
184
|
const_llcs.each do |const_llc|
|
|
@@ -190,14 +192,14 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
190
192
|
if exl_spaces_not_incl_fl_area
|
|
191
193
|
# loop through spaces to gather surfaces.
|
|
192
194
|
surfaces = []
|
|
193
|
-
model.getSpaces.each do |space|
|
|
195
|
+
model.getSpaces.sort.each do |space|
|
|
194
196
|
next if !space.partofTotalFloorArea
|
|
195
|
-
space.surfaces.each do |surface|
|
|
197
|
+
space.surfaces.sort.each do |surface|
|
|
196
198
|
surfaces << surface
|
|
197
199
|
end
|
|
198
200
|
end
|
|
199
201
|
else
|
|
200
|
-
surfaces = model.getSurfaces
|
|
202
|
+
surfaces = model.getSurfaces.sort
|
|
201
203
|
end
|
|
202
204
|
|
|
203
205
|
# used for new sub surfaces to find target construction
|
|
@@ -205,7 +207,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
205
207
|
orig_sub_surf_const_for_target_all_ext = {}
|
|
206
208
|
|
|
207
209
|
# pre-loop through sub-surfaces to store constructions
|
|
208
|
-
model.getSubSurfaces.each do |sub_surf|
|
|
210
|
+
model.getSubSurfaces.sort.each do |sub_surf|
|
|
209
211
|
# store constructions for entire building
|
|
210
212
|
next if sub_surf.subSurfaceType == 'Door' || sub_surf.subSurfaceType == 'OverheadDoor'
|
|
211
213
|
if sub_surf.construction.is_initialized
|
|
@@ -248,7 +250,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
248
250
|
# hash for sub surfaces removed from non rectangular surfaces
|
|
249
251
|
non_rect_parent = {}
|
|
250
252
|
|
|
251
|
-
surfaces.each do |s|
|
|
253
|
+
surfaces.sort.each do |s|
|
|
252
254
|
next if s.surfaceType != 'Wall'
|
|
253
255
|
next if s.outsideBoundaryCondition != 'Outdoors'
|
|
254
256
|
if s.space.empty?
|
|
@@ -296,7 +298,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
296
298
|
# loop through sub surfaces and add area including multiplier
|
|
297
299
|
ext_window_area = 0
|
|
298
300
|
has_doors = false
|
|
299
|
-
s.subSurfaces.each do |subSurface|
|
|
301
|
+
s.subSurfaces.sort.each do |subSurface|
|
|
300
302
|
# stop if non window or glass door
|
|
301
303
|
if subSurface.subSurfaceType == 'Door' || subSurface.subSurfaceType == 'OverheadDoor'
|
|
302
304
|
if split_at_doors == 'Remove Doors'
|
|
@@ -321,7 +323,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
321
323
|
split_surfaces = s.splitSurfaceForSubSurfaces.to_a # frozen array
|
|
322
324
|
|
|
323
325
|
# add original surface to new surfaces
|
|
324
|
-
split_surfaces.each do |ss|
|
|
326
|
+
split_surfaces.sort.each do |ss|
|
|
325
327
|
all_surfaces << ss
|
|
326
328
|
end
|
|
327
329
|
end
|
|
@@ -329,7 +331,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
329
331
|
if wwr > 0 && triangulate
|
|
330
332
|
|
|
331
333
|
all_surfaces2 = []
|
|
332
|
-
all_surfaces.each do |ss|
|
|
334
|
+
all_surfaces.sort.each do |ss|
|
|
333
335
|
# see if surface is rectangular (only checking non rotated on vertical wall)
|
|
334
336
|
# todo - add in more robust rectangle check that can look for rotate and tilted rectangles
|
|
335
337
|
rect_tri = false
|
|
@@ -350,7 +352,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
350
352
|
end
|
|
351
353
|
|
|
352
354
|
has_doors = false
|
|
353
|
-
ss.subSurfaces.each do |subSurface|
|
|
355
|
+
ss.subSurfaces.sort.each do |subSurface|
|
|
354
356
|
if subSurface.subSurfaceType == 'Door' || subSurface.subSurfaceType == 'OverheadDoor'
|
|
355
357
|
has_doors = true
|
|
356
358
|
end
|
|
@@ -366,7 +368,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
366
368
|
|
|
367
369
|
# get construction from sub-surfaces and then delete them
|
|
368
370
|
pre_tri_sub_const = {}
|
|
369
|
-
ss.subSurfaces.each do |subSurface|
|
|
371
|
+
ss.subSurfaces.sort.each do |subSurface|
|
|
370
372
|
if subSurface.construction.is_initialized && !subSurface.isConstructionDefaulted
|
|
371
373
|
if pre_tri_sub_const.key?(subSurface.construction.get)
|
|
372
374
|
pre_tri_sub_const[subSurface.construction.get] = subSurface.grossArea
|
|
@@ -398,9 +400,9 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
398
400
|
end
|
|
399
401
|
|
|
400
402
|
# add windows
|
|
401
|
-
all_surfaces2.each do |ss|
|
|
403
|
+
all_surfaces2.sort.each do |ss|
|
|
402
404
|
orig_sub_surf_constructions = {}
|
|
403
|
-
ss.subSurfaces.each do |sub_surf|
|
|
405
|
+
ss.subSurfaces.sort.each do |sub_surf|
|
|
404
406
|
next if sub_surf.subSurfaceType == 'Door' || sub_surf.subSurfaceType == 'OverheadDoor'
|
|
405
407
|
if sub_surf.construction.is_initialized
|
|
406
408
|
if orig_sub_surf_constructions.key?(sub_surf.construction.get)
|
|
@@ -414,7 +416,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
414
416
|
# remove windows if ratio 0 or add in other cases
|
|
415
417
|
if wwr == 0
|
|
416
418
|
# remove all sub surfaces
|
|
417
|
-
ss.subSurfaces.each(&:remove)
|
|
419
|
+
ss.subSurfaces.sort.each(&:remove)
|
|
418
420
|
new_window = []
|
|
419
421
|
window_confirmed = true
|
|
420
422
|
else
|
|
@@ -522,7 +524,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
522
524
|
end
|
|
523
525
|
|
|
524
526
|
# data for final condition wwr
|
|
525
|
-
surfaces.each do |s|
|
|
527
|
+
surfaces.sort.each do |s|
|
|
526
528
|
next if s.surfaceType != 'Wall'
|
|
527
529
|
next if s.outsideBoundaryCondition != 'Outdoors'
|
|
528
530
|
if s.space.empty?
|
|
@@ -565,7 +567,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
565
567
|
|
|
566
568
|
# loop through sub surfaces and add area including multiplier
|
|
567
569
|
ext_window_area = 0
|
|
568
|
-
s.subSurfaces.each do |subSurface| # onlky one and should have multiplier of 1
|
|
570
|
+
s.subSurfaces.sort.each do |subSurface| # onlky one and should have multiplier of 1
|
|
569
571
|
ext_window_area += subSurface.grossArea * subSurface.multiplier * zone_multiplier
|
|
570
572
|
end
|
|
571
573
|
|
|
@@ -573,27 +575,15 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
573
575
|
final_ext_window_area += ext_window_area
|
|
574
576
|
end
|
|
575
577
|
|
|
576
|
-
# short def to make numbers pretty (converts 4125001.25641 to 4,125,001.26 or 4,125,001). The definition be called through this measure
|
|
577
|
-
def neat_numbers(number, roundto = 2) # round to 0 or 2)
|
|
578
|
-
# round to zero or two decimals
|
|
579
|
-
if roundto == 2
|
|
580
|
-
number = format '%.2f', number
|
|
581
|
-
else
|
|
582
|
-
number = number.round
|
|
583
|
-
end
|
|
584
|
-
# regex to add commas
|
|
585
|
-
number.to_s.reverse.gsub(/([0-9]{3}(?=([0-9])))/, '\\1,').reverse
|
|
586
|
-
end
|
|
587
|
-
|
|
588
578
|
# get delta in ft^2 for final - starting window area
|
|
589
579
|
increase_window_area_si = OpenStudio::Quantity.new(final_ext_window_area - starting_ext_window_area, unit_area_si)
|
|
590
580
|
increase_window_area_ip = OpenStudio.convert(increase_window_area_si, unit_area_ip).get
|
|
591
581
|
|
|
592
582
|
# calculate final envelope cost as positive value
|
|
593
|
-
constructions = model.getConstructions
|
|
583
|
+
constructions = model.getConstructions.sort
|
|
594
584
|
constructions.each do |construction|
|
|
595
585
|
const_llcs = construction.lifeCycleCosts
|
|
596
|
-
const_llcs.each do |const_llc|
|
|
586
|
+
const_llcs.sort.each do |const_llc|
|
|
597
587
|
if const_llc.category == 'Construction'
|
|
598
588
|
envelope_cost += const_llc.totalCost
|
|
599
589
|
end
|
|
@@ -602,7 +592,7 @@ class SetWindowToWallRatioByFacade < OpenStudio::Measure::ModelMeasure
|
|
|
602
592
|
|
|
603
593
|
# report final condition
|
|
604
594
|
final_wwr = format('%.02f', (final_ext_window_area / final_gross_ext_wall_area))
|
|
605
|
-
runner.registerFinalCondition("The model's final window to wall ratio for #{facade} facing exterior walls is #{final_wwr}. Window area increased by #{
|
|
595
|
+
runner.registerFinalCondition("The model's final window to wall ratio for #{facade} facing exterior walls is #{final_wwr}. Window area increased by #{OpenStudio.toNeatString(increase_window_area_ip.value, 0)} (ft^2). The material and construction costs increased by $#{OpenStudio.toNeatString(envelope_cost, 0)}.")
|
|
606
596
|
|
|
607
597
|
return true
|
|
608
598
|
end
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
<schema_version>3.0</schema_version>
|
|
4
4
|
<name>set_window_to_wall_ratio_by_facade</name>
|
|
5
5
|
<uid>c567a0bf-a7d9-4a06-afe9-bf7df79e6bf8</uid>
|
|
6
|
-
<version_id>
|
|
7
|
-
<version_modified>
|
|
6
|
+
<version_id>ba8a1d2e-0d49-4e86-9aba-f4d55097f358</version_id>
|
|
7
|
+
<version_modified>20200928T200703Z</version_modified>
|
|
8
8
|
<xml_checksum>6DE831F7</xml_checksum>
|
|
9
9
|
<class_name>SetWindowToWallRatioByFacade</class_name>
|
|
10
10
|
<display_name>Set Window to Wall Ratio by Facade</display_name>
|
|
@@ -233,13 +233,13 @@ The measure doesn?t have any cost or lifecycle arguments, however If lifecycle o
|
|
|
233
233
|
<filename>measure.rb</filename>
|
|
234
234
|
<filetype>rb</filetype>
|
|
235
235
|
<usage_type>script</usage_type>
|
|
236
|
-
<checksum>
|
|
236
|
+
<checksum>CB9895D2</checksum>
|
|
237
237
|
</file>
|
|
238
238
|
<file>
|
|
239
239
|
<filename>SetWindowToWallRatioByFacade_Test.rb</filename>
|
|
240
240
|
<filetype>rb</filetype>
|
|
241
241
|
<usage_type>test</usage_type>
|
|
242
|
-
<checksum>
|
|
242
|
+
<checksum>268FC2B7</checksum>
|
|
243
243
|
</file>
|
|
244
244
|
</files>
|
|
245
245
|
</measure>
|