buildingsync 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/continuous_integration.yml +146 -0
  3. data/.gitignore +33 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +10 -0
  6. data/CHANGELOG.md +50 -0
  7. data/Gemfile +31 -0
  8. data/Jenkinsfile +10 -0
  9. data/LICENSE.md +29 -0
  10. data/README.md +105 -0
  11. data/Rakefile +77 -0
  12. data/bin/console +15 -0
  13. data/bin/setup +8 -0
  14. data/buildingsync.gemspec +37 -0
  15. data/config.rb.in +26 -0
  16. data/doc_templates/LICENSE.md +29 -0
  17. data/doc_templates/README.md.erb +42 -0
  18. data/doc_templates/copyright_erb.txt +38 -0
  19. data/doc_templates/copyright_js.txt +5 -0
  20. data/doc_templates/copyright_ruby.txt +36 -0
  21. data/lib/buildingsync.rb +43 -0
  22. data/lib/buildingsync/all_resource_total.rb +54 -0
  23. data/lib/buildingsync/audit_date.rb +54 -0
  24. data/lib/buildingsync/constants.rb +49 -0
  25. data/lib/buildingsync/contact.rb +54 -0
  26. data/lib/buildingsync/extension.rb +57 -0
  27. data/lib/buildingsync/generator.rb +584 -0
  28. data/lib/buildingsync/get_bcl_weather_file.rb +326 -0
  29. data/lib/buildingsync/helpers/Model.hvac.rb +216 -0
  30. data/lib/buildingsync/helpers/helper.rb +494 -0
  31. data/lib/buildingsync/helpers/xml_get_set.rb +215 -0
  32. data/lib/buildingsync/makers/phase_zero_base.osw +178 -0
  33. data/lib/buildingsync/makers/workflow_maker.json +811 -0
  34. data/lib/buildingsync/makers/workflow_maker.rb +581 -0
  35. data/lib/buildingsync/makers/workflow_maker_base.rb +167 -0
  36. data/lib/buildingsync/model_articulation/building.rb +1119 -0
  37. data/lib/buildingsync/model_articulation/building_and_system_types.json +121 -0
  38. data/lib/buildingsync/model_articulation/building_section.rb +190 -0
  39. data/lib/buildingsync/model_articulation/building_system.rb +49 -0
  40. data/lib/buildingsync/model_articulation/envelope_system.rb +102 -0
  41. data/lib/buildingsync/model_articulation/exterior_floor_system_type.rb +64 -0
  42. data/lib/buildingsync/model_articulation/facility.rb +439 -0
  43. data/lib/buildingsync/model_articulation/foundation_system_type.rb +64 -0
  44. data/lib/buildingsync/model_articulation/hvac_system.rb +395 -0
  45. data/lib/buildingsync/model_articulation/lighting_system.rb +102 -0
  46. data/lib/buildingsync/model_articulation/loads_system.rb +287 -0
  47. data/lib/buildingsync/model_articulation/location_element.rb +129 -0
  48. data/lib/buildingsync/model_articulation/measure.rb +57 -0
  49. data/lib/buildingsync/model_articulation/roof_system_type.rb +64 -0
  50. data/lib/buildingsync/model_articulation/service_hot_water_system.rb +87 -0
  51. data/lib/buildingsync/model_articulation/site.rb +242 -0
  52. data/lib/buildingsync/model_articulation/spatial_element.rb +343 -0
  53. data/lib/buildingsync/model_articulation/wall_system_type.rb +64 -0
  54. data/lib/buildingsync/report.rb +217 -0
  55. data/lib/buildingsync/resource_use.rb +55 -0
  56. data/lib/buildingsync/scenario.rb +622 -0
  57. data/lib/buildingsync/selection_tool.rb +98 -0
  58. data/lib/buildingsync/time_series.rb +85 -0
  59. data/lib/buildingsync/translator.rb +167 -0
  60. data/lib/buildingsync/utility.rb +67 -0
  61. data/lib/buildingsync/version.rb +45 -0
  62. metadata +223 -0
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # *******************************************************************************
4
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
5
+ # BuildingSync(R), Copyright (c) 2015-2020, Alliance for Sustainable Energy, LLC.
6
+ # All rights reserved.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions are met:
10
+ #
11
+ # (1) Redistributions of source code must retain the above copyright notice,
12
+ # this list of conditions and the following disclaimer.
13
+ #
14
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
15
+ # this list of conditions and the following disclaimer in the documentation
16
+ # and/or other materials provided with the distribution.
17
+ #
18
+ # (3) Neither the name of the copyright holder nor the names of any contributors
19
+ # may be used to endorse or promote products derived from this software without
20
+ # specific prior written permission from the respective party.
21
+ #
22
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
23
+ # of modifications or other derivative works may not use the "OpenStudio"
24
+ # trademark, "OS", "os", or any other confusingly similar designation without
25
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
26
+ #
27
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
28
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
31
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
32
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
34
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ # *******************************************************************************
39
+ require 'buildingsync/helpers/helper'
40
+ require 'buildingsync/helpers/xml_get_set'
41
+
42
+ module BuildingSync
43
+ # Measure class
44
+ class Measure
45
+ include BuildingSync::Helper
46
+ include BuildingSync::XmlGetSet
47
+ # initialize
48
+ # @param @base_xml [REXML::Element]
49
+ # @param ns [String]
50
+ def initialize(base_xml, ns)
51
+ @base_xml = base_xml
52
+ @ns = ns
53
+
54
+ help_element_class_type_check(base_xml, 'Measure')
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ # *******************************************************************************
4
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
5
+ # BuildingSync(R), Copyright (c) 2015-2020, Alliance for Sustainable Energy, LLC.
6
+ # All rights reserved.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions are met:
10
+ #
11
+ # (1) Redistributions of source code must retain the above copyright notice,
12
+ # this list of conditions and the following disclaimer.
13
+ #
14
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
15
+ # this list of conditions and the following disclaimer in the documentation
16
+ # and/or other materials provided with the distribution.
17
+ #
18
+ # (3) Neither the name of the copyright holder nor the names of any contributors
19
+ # may be used to endorse or promote products derived from this software without
20
+ # specific prior written permission from the respective party.
21
+ #
22
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
23
+ # of modifications or other derivative works may not use the "OpenStudio"
24
+ # trademark, "OS", "os", or any other confusingly similar designation without
25
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
26
+ #
27
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
28
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
31
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
32
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
34
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ # *******************************************************************************
39
+
40
+ module BuildingSync
41
+ # Roof System Type
42
+ class RoofSystemType
43
+ # initialize a specific floor system type given a ref
44
+ # @param doc [REXML::Document]
45
+ # @param ns [String]
46
+ # @param ref [String]
47
+ def initialize(doc, ns, ref)
48
+ @id = nil
49
+ doc.elements.each("#{ns}:Systems/#{ns}:RoofSystems/#{ns}:RoofSystem") do |roof_system|
50
+ if roof_system.attributes['ID'] == ref
51
+ read(roof_system, ns)
52
+ end
53
+ end
54
+ end
55
+
56
+ # read
57
+ # @param roof_system [REXML:Element]
58
+ # @param ns [String]
59
+ def read(roof_system, ns)
60
+ # ID
61
+ @id = roof_system.attributes['ID'] if roof_system.attributes['ID']
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ # *******************************************************************************
4
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
5
+ # BuildingSync(R), Copyright (c) 2015-2020, Alliance for Sustainable Energy, LLC.
6
+ # All rights reserved.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions are met:
10
+ #
11
+ # (1) Redistributions of source code must retain the above copyright notice,
12
+ # this list of conditions and the following disclaimer.
13
+ #
14
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
15
+ # this list of conditions and the following disclaimer in the documentation
16
+ # and/or other materials provided with the distribution.
17
+ #
18
+ # (3) Neither the name of the copyright holder nor the names of any contributors
19
+ # may be used to endorse or promote products derived from this software without
20
+ # specific prior written permission from the respective party.
21
+ #
22
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
23
+ # of modifications or other derivative works may not use the "OpenStudio"
24
+ # trademark, "OS", "os", or any other confusingly similar designation without
25
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
26
+ #
27
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
28
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
31
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
32
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
34
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ # *******************************************************************************
39
+ module BuildingSync
40
+ # ServiceHotWaterSystem class to add a SHW system to the model
41
+ class ServiceHotWaterSystem < BuildingSystem
42
+ # initialize
43
+ def initialize
44
+ # code to initialize
45
+ end
46
+
47
+ # add
48
+ # @param model [OpenStudio::Model]
49
+ # @param standard [Standard]
50
+ # @param remove_objects [Boolean]
51
+ # @return [Boolean]
52
+ def add(model, standard, remove_objects)
53
+ # remove water use equipment and water use connections
54
+ if remove_objects
55
+ # TODO: - remove plant loops used for service water heating
56
+ model.getWaterUseEquipments.each(&:remove)
57
+ model.getWaterUseConnectionss.each(&:remove)
58
+ end
59
+
60
+ typical_swh = standard.model_add_typical_swh(model)
61
+ mid_rise_swh_loops = []
62
+ strip_mall_swh_loops = []
63
+ typical_swh.each do |loop|
64
+ if loop.name.get.include?('MidriseApartment')
65
+ mid_rise_swh_loops << loop
66
+ elsif loop.name.get.include?('RetailStripmall')
67
+ strip_mall_swh_loops << loop
68
+ else
69
+ water_use_connections = []
70
+ loop.demandComponents.each do |component|
71
+ next if !component.to_WaterUseConnections.is_initialized
72
+
73
+ water_use_connections << component
74
+ end
75
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Facility.create_building_system', "Adding #{loop.name} to the building. It has #{water_use_connections.size} water use connections.")
76
+ end
77
+ end
78
+ if !mid_rise_swh_loops.empty?
79
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Facility.create_building_system', "Adding #{mid_rise_swh_loops.size} MidriseApartment service water heating loops.")
80
+ end
81
+ if !strip_mall_swh_loops.empty?
82
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Facility.create_building_system', "Adding #{strip_mall_swh_loops.size} RetailStripmall service water heating loops.")
83
+ end
84
+ return true
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,242 @@
1
+ # frozen_string_literal: true
2
+
3
+ # *******************************************************************************
4
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
5
+ # BuildingSync(R), Copyright (c) 2015-2020, Alliance for Sustainable Energy, LLC.
6
+ # All rights reserved.
7
+ #
8
+ # Redistribution and use in source and binary forms, with or without
9
+ # modification, are permitted provided that the following conditions are met:
10
+ #
11
+ # (1) Redistributions of source code must retain the above copyright notice,
12
+ # this list of conditions and the following disclaimer.
13
+ #
14
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
15
+ # this list of conditions and the following disclaimer in the documentation
16
+ # and/or other materials provided with the distribution.
17
+ #
18
+ # (3) Neither the name of the copyright holder nor the names of any contributors
19
+ # may be used to endorse or promote products derived from this software without
20
+ # specific prior written permission from the respective party.
21
+ #
22
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
23
+ # of modifications or other derivative works may not use the "OpenStudio"
24
+ # trademark, "OS", "os", or any other confusingly similar designation without
25
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
26
+ #
27
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
28
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29
+ # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
31
+ # UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
32
+ # THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33
+ # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
34
+ # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
35
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
36
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
37
+ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38
+ # *******************************************************************************
39
+ require_relative 'building'
40
+ module BuildingSync
41
+ # Site class
42
+ class Site < LocationElement
43
+ # initialize
44
+ # @param base_xml [REXML::Element] an element corresponding to a single auc:Site
45
+ # @param ns [String] namespace, likely 'auc'
46
+ def initialize(base_xml, ns)
47
+ super(base_xml, ns)
48
+ @base_xml = base_xml
49
+ @ns = ns
50
+ help_element_class_type_check(base_xml, 'Site')
51
+
52
+ @building = nil
53
+ @all_set = false
54
+
55
+ # using the XML snippet to search for the buildings on the site
56
+ read_xml
57
+ end
58
+
59
+ # read xml
60
+ def read_xml
61
+ # first we check if the number of buildings is ok
62
+ building_xml_temp = @base_xml.get_elements("#{@ns}:Buildings/#{@ns}:Building")
63
+
64
+ if building_xml_temp.nil? || building_xml_temp.empty?
65
+ OpenStudio.logFree(OpenStudio::Error, 'BuildingSync.Site.read_xml', "Site with ID: #{xget_id} has no Building elements. Cannot initialize Site.")
66
+ raise StandardError, "Site with ID: #{xget_id} has no Building elements. Cannot initialize Site."
67
+ elsif building_xml_temp.size > 1
68
+ @building_xml = building_xml_temp.first
69
+ OpenStudio.logFree(OpenStudio::Error, 'BuildingSync.Site.read_xml', "Site ID: #{xget_id}. There is more than one (#{building_xml_temp.size}) Building elements. Only the first Building will be considered (ID: #{@building_xml.attributes['ID']}.")
70
+ else
71
+ @building_xml = building_xml_temp.first
72
+ end
73
+
74
+ # read other data
75
+ @total_floor_area = read_floor_areas(nil)
76
+ read_location_values
77
+
78
+ @building = BuildingSync::Building.new(@building_xml, xget_text('OccupancyClassification'), @total_floor_area, @ns)
79
+ end
80
+
81
+ # set all function to set all parameters for each building
82
+ def set_all
83
+ if !@all_set
84
+ @all_set = true
85
+ @building.set_all
86
+ end
87
+ end
88
+
89
+ # build zone hash that stores zone lists for buildings and building sections
90
+ # @return [hash<string, array<OpenStudio::Model::ThermalZone>>]
91
+ def build_zone_hash
92
+ return @building.build_zone_hash
93
+ end
94
+
95
+ # get the model
96
+ # @return [OpenStudio::Model]
97
+ def get_model
98
+ return @building.get_model
99
+ end
100
+
101
+ # get space types
102
+ # @return [array<OpenStudio::Model::SpaceType>]
103
+ def get_space_types
104
+ return @building.get_space_types
105
+ end
106
+
107
+ # get peak occupancy
108
+ # @return [hash<string, float>]
109
+ def get_peak_occupancy
110
+ return @building.get_peak_occupancy
111
+ end
112
+
113
+ # get floor area
114
+ # @return [hash<string, float>]
115
+ def get_floor_area
116
+ return @building.get_floor_area
117
+ end
118
+
119
+ # get building sections
120
+ # @return [array<BuildingSection>]
121
+ def get_building_sections
122
+ return @building.building_sections
123
+ end
124
+
125
+ # determine the open studio standard and call the set_all function
126
+ # @param standard_to_be_used [String]
127
+ # @return [Standard]
128
+ def determine_open_studio_standard(standard_to_be_used)
129
+ set_all
130
+ return @building.determine_open_studio_standard(standard_to_be_used)
131
+ end
132
+
133
+ # determine the open studio system standard and call the set_all function
134
+ # @return [Standard]
135
+ def determine_open_studio_system_standard
136
+ set_all
137
+ return Standard.build(get_standard_template)
138
+ end
139
+
140
+ # get @standard_template
141
+ # @return [String]
142
+ def get_standard_template
143
+ return @building.get_standard_template
144
+ end
145
+
146
+ # get space types from hash
147
+ # @param id [String]
148
+ # @return [hash<string, array<hash<string, string>>]
149
+ def get_space_types_from_hash(id)
150
+ return @building.build_space_type_hash[id]
151
+ end
152
+
153
+ # get system type
154
+ # @return [String]
155
+ def get_system_type
156
+ return @building.get_system_type
157
+ end
158
+
159
+ # get building type
160
+ # @return [String]
161
+ def get_building_type
162
+ if @standards_building_type.nil?
163
+ return @building.get_building_type
164
+ else
165
+ return @standards_building_type
166
+ end
167
+ end
168
+
169
+ # get climate zone
170
+ # @return [String]
171
+ def get_climate_zone
172
+ if @climate_zone.nil?
173
+ return @building.get_climate_zone
174
+ else
175
+ return @climate_zone
176
+ end
177
+ end
178
+
179
+ # get building
180
+ # @return [Array<BuildingSync::Building>]
181
+ def get_building
182
+ return @building
183
+ end
184
+
185
+ # get full path to epw file
186
+ # @return [String]
187
+ def get_epw_file_path
188
+ return @building.get_epw_file_path
189
+ end
190
+
191
+ # generate baseline model in osm file format
192
+ # @param epw_file_path [String]
193
+ # @param standard_to_be_used [String]
194
+ # @param ddy_file [String]
195
+ def generate_baseline_osm(epw_file_path, standard_to_be_used, ddy_file = nil)
196
+ set_all
197
+ determine_climate_zone(standard_to_be_used)
198
+
199
+ # If we can't get the CZ from the site, we attempt to get from the building
200
+ @climate_zone = @building.get_climate_zone if @climate_zone.nil?
201
+
202
+ OpenStudio.logFree(OpenStudio::Warn, 'BuildingSync.Site.generate_baseline_osm', 'Could not find a climate zone in the BuildingSync file.') if @climate_zone.nil?
203
+ lat = @building.xget_text('Latitude').nil? ? xget_text('Latitude') : @building.xget_text('Latitude')
204
+ long = @building.xget_text('Longitude').nil? ? xget_text('Longitude') : @building.xget_text('Longitude')
205
+ weather_station_name = @building.xget_text('WeatherStationName').nil? ? xget_text('WeatherStationName') : @building.xget_text('WeatherStationName')
206
+ weather_station_id = @building.xget_text('WeatherDataStationID').nil? ? xget_text('WeatherDataStationID') : @building.xget_text('WeatherDataStationID')
207
+ @building.set_weather_and_climate_zone(@climate_zone, epw_file_path, standard_to_be_used, lat, long, ddy_file, weather_station_name, weather_station_id, @state_name, @city_name)
208
+ @building.generate_baseline_osm
209
+ end
210
+
211
+ # write model to osm file
212
+ # @param dir [String]
213
+ # @return [hash<string, string>]
214
+ def write_osm(dir)
215
+ @building.write_osm(dir)
216
+ scenario_types = {}
217
+ scenario_types['system_type'] = get_system_type
218
+ scenario_types['bldg_type'] = get_building_type
219
+ scenario_types['template'] = get_standard_template
220
+ return scenario_types
221
+ end
222
+
223
+ # write parameters to xml file
224
+ # @param site [Site]
225
+ # @param ns [String]
226
+ def prepare_final_xml
227
+ @base_xml.elements["#{@ns}:ClimateZoneType/#{@ns}:ASHRAE/#{@ns}:ClimateZone"].text = @climate_zone_ashrae if !@climate_zone_ashrae.nil?
228
+ @base_xml.elements["#{@ns}:ClimateZoneType/#{@ns}:CaliforniaTitle24/#{@ns}:ClimateZone"].text = @climate_zone_ca_t24 if !@climate_zone_ca_t24.nil?
229
+
230
+ @base_xml.elements["#{@ns}:Address/#{@ns}:City"].text = @city_name if !@city_name.nil?
231
+ @base_xml.elements["#{@ns}:Address/#{@ns}:State"].text = @state_name if !@state_name.nil?
232
+
233
+ # TODO: probably set these as UDFs from actual openstudio model
234
+ @base_xml.elements["#{@ns}:WeatherStationName"].text = @weather_file_name if !@weather_file_name.nil?
235
+ @base_xml.elements["#{@ns}:WeatherDataStationID"].text = @weather_station_id if !@weather_station_id.nil?
236
+
237
+ prepare_final_xml_for_spatial_element
238
+
239
+ @building.prepare_final_xml
240
+ end
241
+ end
242
+ end