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,98 @@
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 'uri'
40
+ require 'net/http'
41
+ require 'net/http/post/multipart'
42
+
43
+ module BuildingSync
44
+ # Class for communicating with SelectionTool
45
+ class SelectionTool
46
+ # initialize the selection tools class
47
+ # @note See documentation here: https://github.com/buildingsync/selection-tool#validator
48
+ # @note Use core Net::HTTPS
49
+ # @param xml_path [String]
50
+ def initialize(xml_path, version = '2.0.0')
51
+ @hash_response = nil
52
+ version = '2.0.0' if version.nil?
53
+ url = URI.parse('https://selectiontool.buildingsync.net/api/validate')
54
+
55
+ params = { 'schema_version' => version }
56
+ params[:file] = UploadIO.new(xml_path, 'text/xml', File.basename(xml_path))
57
+
58
+ request = Net::HTTP::Post::Multipart.new(url.path, params)
59
+ http = Net::HTTP.new(url.host, url.port)
60
+ http.use_ssl = true
61
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
62
+ response = http.request(request)
63
+
64
+ @hash_response = JSON.parse(response.read_body)
65
+ end
66
+
67
+ # validate use case
68
+ # @param use_case [String]
69
+ # @return boolean
70
+ def validate_use_case(use_case)
71
+ use_cases = @hash_response['validation_results']['use_cases']
72
+ if use_cases.key?(use_case)
73
+ if !use_cases[use_case]['valid']
74
+ use_cases[use_case]['errors'].each do |error|
75
+ puts error
76
+ end
77
+ end
78
+ return use_cases[use_case]['valid']
79
+ else
80
+ puts "BuildingSync::SelectionTool.validate_use_case, Use Case #{use_case} is not an option. The available use cases to validate against are: #{use_cases}"
81
+ return false
82
+ end
83
+ end
84
+
85
+ # validate schema
86
+ # @return boolean
87
+ def validate_schema
88
+ if !@hash_response['validation_results']['schema']['valid']
89
+ @hash_response['validation_results']['schema']['errors'].each do |error|
90
+ puts error
91
+ end
92
+ end
93
+ return @hash_response['validation_results']['schema']['valid']
94
+ end
95
+
96
+ attr_reader :hash_response
97
+ end
98
+ end
@@ -0,0 +1,85 @@
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
+ # TimeSeries class
41
+ class TimeSeries
42
+ include BuildingSync::Helper
43
+ include BuildingSync::XmlGetSet
44
+ # initialize
45
+ # @param @base_xml [REXML::Element]
46
+ # @param ns [String]
47
+ def initialize(base_xml, ns)
48
+ @base_xml = base_xml
49
+ @ns = ns
50
+ help_element_class_type_check(base_xml, 'TimeSeries')
51
+
52
+ # translates to: 2020-01-01T00:00:00
53
+ @timestamp_format = '%FT%T'
54
+ end
55
+
56
+ # Creates monthly start and end times for the element.
57
+ # @param start_date_time [DateTime] should be the zeroth second of the month, i.e. 2020-01-01T00:00:00
58
+ def set_start_and_end_timestamps_monthly(start_date_time)
59
+ xset_or_create('StartTimestamp', start_date_time.strftime(@timestamp_format))
60
+
61
+ # >>= shifts a datetime by 1 month
62
+ end_date = start_date_time >>= 1
63
+
64
+ # += shifts a datetime by 1 day. the following shifts it by negative 1 minute
65
+ end_date += - Rational(1, 24.0 * 60)
66
+
67
+ # Always sets to last minute of the month:
68
+ # 2020-01-31T23:59:00
69
+ xset_or_create('EndTimestamp', end_date.strftime(@timestamp_format))
70
+ end
71
+
72
+ # @param start_date_time [DateTime] should be the zeroth second of the month, i.e. 2020-01-01T00:00:00
73
+ # @param interval_reading_value [Numeric] the value to use for IntervalReading
74
+ # @param resource_use_id [String] the ID of the ResourceUse to point to
75
+ def set_monthly_energy_reading(start_date_time, interval_reading_value, resource_use_id)
76
+ xset_or_create('ReadingType', 'Total')
77
+ xset_or_create('TimeSeriesReadingQuantity', 'Energy')
78
+ set_start_and_end_timestamps_monthly(start_date_time)
79
+ xset_or_create('IntervalFrequency', 'Month')
80
+ xset_or_create('IntervalReading', interval_reading_value)
81
+ ru_id_element = xget_or_create('ResourceUseID')
82
+ ru_id_element.add_attribute('IDref', resource_use_id)
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,167 @@
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 'rexml/document'
40
+ require 'buildingsync/constants'
41
+
42
+ require_relative 'model_articulation/spatial_element'
43
+ require_relative 'makers/workflow_maker'
44
+ require_relative 'selection_tool'
45
+ require_relative 'extension'
46
+
47
+ module BuildingSync
48
+ # Translator class
49
+ class Translator < WorkflowMaker
50
+ include BuildingSync::Helper
51
+ # load the building sync file
52
+ # @param xml_file_path [String]
53
+ # @param output_dir [String]
54
+ # @param epw_file_path [String] if provided, full/path/to/my.epw
55
+ # @param standard_to_be_used [String]
56
+ # @param validate_xml_file_against_schema [Boolean]
57
+ def initialize(xml_file_path, output_dir, epw_file_path = nil, standard_to_be_used = ASHRAE90_1, validate_xml_file_against_schema = true)
58
+ @schema_version = nil
59
+ @xml_file_path = xml_file_path
60
+ @output_dir = output_dir
61
+ @standard_to_be_used = standard_to_be_used
62
+ @epw_path = epw_file_path
63
+
64
+ @results_gathered = false
65
+ @final_xml_prepared = false
66
+
67
+ # to further reduce the log messages we can change the log level with this command
68
+ # OpenStudio::Logger.instance.standardOutLogger.setLogLevel(OpenStudio::Error)
69
+ # Open a log for the library
70
+ log_file = OpenStudio::FileLogSink.new(OpenStudio::Path.new("#{output_dir}/in.log"))
71
+ log_file.setLogLevel(OpenStudio::Info)
72
+
73
+ # parse the xml
74
+ if !File.exist?(xml_file_path)
75
+ OpenStudio.logFree(OpenStudio::Error, 'BuildingSync.Translator.initialize', "File '#{xml_file_path}' does not exist")
76
+ raise "File '#{xml_file_path}' does not exist" unless File.exist?(xml_file_path)
77
+ end
78
+
79
+ doc = help_load_doc(xml_file_path)
80
+
81
+ @schema_version = doc.root.attributes['version']
82
+ if @schema_version.nil?
83
+ @schema_version = '2.0.0'
84
+ end
85
+
86
+ # test for the namespace
87
+ ns = 'auc'
88
+ doc.root.namespaces.each_pair do |k, v|
89
+ ns = k if /bedes-auc/.match(v)
90
+ end
91
+
92
+ if validate_xml_file_against_schema
93
+ validate_xml
94
+ else
95
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Translator.initialize', "File '#{xml_file_path}' was not validated against the BuildingSync schema")
96
+ puts "File '#{xml_file_path}' was not validated against the BuildingSync schema"
97
+ end
98
+
99
+ super(doc, ns)
100
+ end
101
+
102
+ # Validate the xml file against the schema
103
+ # using the SelectionTool
104
+ def validate_xml
105
+ # we wil try to validate the file, but if it fails, we will not cancel the process, but log an error
106
+
107
+ selection_tool = BuildingSync::SelectionTool.new(@xml_file_path, @schema_version)
108
+ if !selection_tool.validate_schema
109
+ raise "File '#{@xml_file_path}' does not valid against the BuildingSync schema"
110
+ else
111
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Translator.initialize', "File '#{@xml_file_path}' is valid against the BuildingSync schema")
112
+ puts "File '#{@xml_file_path}' is valid against the BuildingSync schema"
113
+ end
114
+ rescue StandardError
115
+ OpenStudio.logFree(OpenStudio::Error, 'BuildingSync.Translator.initialize', "File '#{@xml_file_path}' does not valid against the BuildingSync schema")
116
+ end
117
+
118
+ # @see WorkflowMaker.setup_and_sizing_run
119
+ # @param ddy_file [String]
120
+ def setup_and_sizing_run(ddy_file = nil)
121
+ super(@output_dir, @epw_path, @standard_to_be_used, ddy_file)
122
+ end
123
+
124
+ # write osws - write all workflows into osw files
125
+ def write_osws(only_cb_modeled = false)
126
+ super(@output_dir, only_cb_modeled)
127
+ end
128
+
129
+ # gather results from simulated scenarios, for all or just the baseline scenario
130
+ # @param year_val [Integer] year to use when processing monthly results as TimeSeries elements
131
+ # @param baseline_only [Boolean] whether to only process the Baseline (or current building modeled) Scenario
132
+ def gather_results(year_val = Date.today.year, baseline_only = false)
133
+ @results_gathered = true
134
+ return super(year_val, baseline_only)
135
+ end
136
+
137
+ # run osws - running all scenario simulations
138
+ # @param runner_options [hash]
139
+ def run_osws(only_cb_modeled = false, runner_options = { run_simulations: true, verbose: false, num_parallel: 7, max_to_run: Float::INFINITY })
140
+ super(@output_dir, only_cb_modeled, runner_options)
141
+ end
142
+
143
+ # write parameters to xml file
144
+ def prepare_final_xml
145
+ if @results_gathered
146
+ super
147
+ else
148
+ OpenStudio.logFree(OpenStudio::Info, 'BuildingSync.Translator.prepare_final_xml', 'All results have not yet been gathered.')
149
+ super
150
+ end
151
+ @final_xml_prepared = true
152
+ end
153
+
154
+ # save xml that includes the results
155
+ # @param file_name [String]
156
+ def save_xml(file_name = 'results.xml')
157
+ output_file = File.join(@output_dir, file_name)
158
+ if @final_xml_prepared
159
+ super(output_file)
160
+ else
161
+ puts 'Prepare final file before attempting to save (translator.prepare_final_xml)'
162
+ end
163
+ end
164
+
165
+ attr_accessor :doc, :results_gathered, :final_xml_prepared, :ns
166
+ end
167
+ end
@@ -0,0 +1,67 @@
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
+ # Utility class
42
+ class Utility
43
+ include BuildingSync::Helper
44
+ include BuildingSync::XmlGetSet
45
+ # @param base_xml [REXML::Element]
46
+ # @param ns [String]
47
+ def initialize(base_xml, ns)
48
+ @base_xml = base_xml
49
+ @ns = ns
50
+ help_element_class_type_check(base_xml, 'Utility')
51
+ end
52
+
53
+ # @return [Array<REXML::Element>]
54
+ def get_rate_schedules
55
+ rs = []
56
+ @base_xml.elements.each("#{@ns}:RateSchedules/#{@ns}:RateSchedule") do |rate_schedule|
57
+ rs << rate_schedule
58
+ end
59
+ return rs
60
+ end
61
+
62
+ # @return [Array<String>]
63
+ def get_utility_meter_numbers
64
+ return xget_plurals_text_value('UtilityMeterNumber')
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,45 @@
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
+ # BuildingSync module
41
+ # provides features for reading BldgSync XML files, generating baseline models, creating scenario workflows, running simulations and adding simulation results to the BldgSync file
42
+ module BuildingSync
43
+ # version of the BuildingSync gem
44
+ VERSION = '0.2.0'
45
+ end