openstudio-workflow 1.3.4 → 1.3.5

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +89 -77
  3. data/README.md +67 -93
  4. data/Rakefile +36 -36
  5. data/lib/openstudio-workflow.rb +65 -65
  6. data/lib/openstudio/workflow/adapters/input/local.rb +311 -324
  7. data/lib/openstudio/workflow/adapters/output/local.rb +158 -161
  8. data/lib/openstudio/workflow/adapters/output/socket.rb +106 -107
  9. data/lib/openstudio/workflow/adapters/output/web.rb +82 -82
  10. data/lib/openstudio/workflow/adapters/output_adapter.rb +163 -163
  11. data/lib/openstudio/workflow/job.rb +57 -57
  12. data/lib/openstudio/workflow/jobs/resources/monthly_report.idf +222 -222
  13. data/lib/openstudio/workflow/jobs/run_energyplus.rb +70 -70
  14. data/lib/openstudio/workflow/jobs/run_ep_measures.rb +73 -73
  15. data/lib/openstudio/workflow/jobs/run_initialization.rb +203 -203
  16. data/lib/openstudio/workflow/jobs/run_os_measures.rb +89 -89
  17. data/lib/openstudio/workflow/jobs/run_postprocess.rb +73 -73
  18. data/lib/openstudio/workflow/jobs/run_preprocess.rb +104 -104
  19. data/lib/openstudio/workflow/jobs/run_reporting_measures.rb +118 -118
  20. data/lib/openstudio/workflow/jobs/run_translation.rb +84 -84
  21. data/lib/openstudio/workflow/multi_delegator.rb +62 -62
  22. data/lib/openstudio/workflow/registry.rb +172 -172
  23. data/lib/openstudio/workflow/run.rb +342 -328
  24. data/lib/openstudio/workflow/time_logger.rb +96 -96
  25. data/lib/openstudio/workflow/util.rb +49 -49
  26. data/lib/openstudio/workflow/util/energyplus.rb +575 -605
  27. data/lib/openstudio/workflow/util/io.rb +68 -68
  28. data/lib/openstudio/workflow/util/measure.rb +658 -650
  29. data/lib/openstudio/workflow/util/model.rb +151 -151
  30. data/lib/openstudio/workflow/util/post_process.rb +235 -238
  31. data/lib/openstudio/workflow/util/weather_file.rb +143 -143
  32. data/lib/openstudio/workflow/version.rb +40 -40
  33. data/lib/openstudio/workflow_json.rb +475 -476
  34. data/lib/openstudio/workflow_runner.rb +263 -268
  35. metadata +24 -24
@@ -1,118 +1,118 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- # Run reporting measures and execute scripts to post-process objective functions and results on the filesystem
37
- class RunReportingMeasures < OpenStudio::Workflow::Job
38
- require 'csv'
39
- require 'ostruct'
40
- require 'openstudio/workflow/util'
41
- include OpenStudio::Workflow::Util::Model
42
- include OpenStudio::Workflow::Util::Measure
43
- include OpenStudio::Workflow::Util::PostProcess
44
-
45
- def initialize(input_adapter, output_adapter, registry, options = {})
46
- defaults = {
47
- load_simulation_osm: false,
48
- load_simulation_idf: false,
49
- load_simulation_sql: false
50
- }
51
- options = defaults.merge(options)
52
- super
53
- end
54
-
55
- def perform
56
- @logger.debug "Calling #{__method__} in the #{self.class} class"
57
- @logger.debug 'RunPostProcess Retrieving datapoint and problem'
58
-
59
- # halted workflow is handled in apply_measures
60
-
61
- # Ensure output_attributes is initialized in the registry
62
- @registry.register(:output_attributes) { {} } unless @registry[:output_attributes]
63
-
64
- # Load simulation files as required
65
- unless @registry[:runner].halted
66
- if @registry[:model].nil?
67
- osm_path = File.absolute_path(File.join(@registry[:run_dir], 'in.osm'))
68
- @logger.debug "Attempting to load #{osm_path}"
69
- @registry.register(:model) { load_osm('.', osm_path) }
70
- raise "Unable to load #{osm_path}" unless @registry[:model]
71
- @logger.debug "Successfully loaded #{osm_path}"
72
- end
73
- if @registry[:model_idf].nil?
74
- idf_path = File.absolute_path(File.join(@registry[:run_dir], 'in.idf'))
75
- @logger.debug "Attempting to load #{idf_path}"
76
- @registry.register(:model_idf) { load_idf(idf_path, @logger) }
77
- raise "Unable to load #{idf_path}" unless @registry[:model_idf]
78
- @logger.debug "Successfully loaded #{idf_path}"
79
- end
80
- if @registry[:sql].nil?
81
- sql_path = File.absolute_path(File.join(@registry[:run_dir], 'eplusout.sql'))
82
- if File.exists?(sql_path)
83
- @registry.register(:sql) { sql_path }
84
- @logger.debug "Registered the sql filepath as #{@registry[:sql]}"
85
- end
86
- #raise "Unable to load #{sql_path}" unless @registry[:sql]
87
- end
88
- if @registry[:wf].nil?
89
- epw_path = File.absolute_path(File.join(@registry[:run_dir], 'in.epw'))
90
- if File.exists?(epw_path)
91
- @registry.register(:wf) { epw_path }
92
- @logger.debug "Registered the wf filepath as #{@registry[:wf]}"
93
- end
94
- #raise "Unable to load #{epw_path}" unless @registry[:wf]
95
- end
96
- end
97
-
98
- # Apply reporting measures
99
- @options[:output_adapter] = @output_adapter
100
- @logger.info 'Beginning to execute Reporting measures.'
101
- apply_measures('ReportingMeasure'.to_MeasureType, @registry, @options)
102
- @logger.info('Finished applying Reporting measures.')
103
-
104
- # Send the updated measure_attributes to the output adapter
105
- @logger.debug 'Communicating measures output attributes to the output adapter'
106
- @output_adapter.communicate_measure_attributes @registry[:output_attributes]
107
-
108
- # Parse the files generated by the local output adapter
109
- results, objective_functions = run_extract_inputs_and_outputs @registry[:run_dir], @logger
110
- @registry.register(:results) { results }
111
-
112
- # Send the objective function results to the output adapter
113
- @logger.debug "Objective Function JSON is #{objective_functions}"
114
- @output_adapter.communicate_objective_function objective_functions
115
-
116
- nil
117
- end
118
- end
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
+ # All rights reserved.
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # (1) Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ #
10
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
11
+ # this list of conditions and the following disclaimer in the documentation
12
+ # and/or other materials provided with the distribution.
13
+ #
14
+ # (3) Neither the name of the copyright holder nor the names of any contributors
15
+ # may be used to endorse or promote products derived from this software without
16
+ # specific prior written permission from the respective party.
17
+ #
18
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
19
+ # of modifications or other derivative works may not use the "OpenStudio"
20
+ # trademark, "OS", "os", or any other confusingly similar designation without
21
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
+ #
23
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
+ # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
+ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
+ # *******************************************************************************
35
+
36
+ # Run reporting measures and execute scripts to post-process objective functions and results on the filesystem
37
+ class RunReportingMeasures < OpenStudio::Workflow::Job
38
+ require 'csv'
39
+ require 'ostruct'
40
+ require 'openstudio/workflow/util'
41
+ include OpenStudio::Workflow::Util::Model
42
+ include OpenStudio::Workflow::Util::Measure
43
+ include OpenStudio::Workflow::Util::PostProcess
44
+
45
+ def initialize(input_adapter, output_adapter, registry, options = {})
46
+ defaults = {
47
+ load_simulation_osm: false,
48
+ load_simulation_idf: false,
49
+ load_simulation_sql: false
50
+ }
51
+ options = defaults.merge(options)
52
+ super
53
+ end
54
+
55
+ def perform
56
+ @logger.debug "Calling #{__method__} in the #{self.class} class"
57
+ @logger.debug 'RunPostProcess Retrieving datapoint and problem'
58
+
59
+ # halted workflow is handled in apply_measures
60
+
61
+ # Ensure output_attributes is initialized in the registry
62
+ @registry.register(:output_attributes) { {} } unless @registry[:output_attributes]
63
+
64
+ # Load simulation files as required
65
+ unless @registry[:runner].halted
66
+ if @registry[:model].nil?
67
+ osm_path = File.absolute_path(File.join(@registry[:run_dir], 'in.osm'))
68
+ @logger.debug "Attempting to load #{osm_path}"
69
+ @registry.register(:model) { load_osm('.', osm_path) }
70
+ raise "Unable to load #{osm_path}" unless @registry[:model]
71
+ @logger.debug "Successfully loaded #{osm_path}"
72
+ end
73
+ if @registry[:model_idf].nil?
74
+ idf_path = File.absolute_path(File.join(@registry[:run_dir], 'in.idf'))
75
+ @logger.debug "Attempting to load #{idf_path}"
76
+ @registry.register(:model_idf) { load_idf(idf_path, @logger) }
77
+ raise "Unable to load #{idf_path}" unless @registry[:model_idf]
78
+ @logger.debug "Successfully loaded #{idf_path}"
79
+ end
80
+ if @registry[:sql].nil?
81
+ sql_path = File.absolute_path(File.join(@registry[:run_dir], 'eplusout.sql'))
82
+ if File.exist?(sql_path)
83
+ @registry.register(:sql) { sql_path }
84
+ @logger.debug "Registered the sql filepath as #{@registry[:sql]}"
85
+ end
86
+ # raise "Unable to load #{sql_path}" unless @registry[:sql]
87
+ end
88
+ if @registry[:wf].nil?
89
+ epw_path = File.absolute_path(File.join(@registry[:run_dir], 'in.epw'))
90
+ if File.exist?(epw_path)
91
+ @registry.register(:wf) { epw_path }
92
+ @logger.debug "Registered the wf filepath as #{@registry[:wf]}"
93
+ end
94
+ # raise "Unable to load #{epw_path}" unless @registry[:wf]
95
+ end
96
+ end
97
+
98
+ # Apply reporting measures
99
+ @options[:output_adapter] = @output_adapter
100
+ @logger.info 'Beginning to execute Reporting measures.'
101
+ apply_measures('ReportingMeasure'.to_MeasureType, @registry, @options)
102
+ @logger.info('Finished applying Reporting measures.')
103
+
104
+ # Send the updated measure_attributes to the output adapter
105
+ @logger.debug 'Communicating measures output attributes to the output adapter'
106
+ @output_adapter.communicate_measure_attributes @registry[:output_attributes]
107
+
108
+ # Parse the files generated by the local output adapter
109
+ results, objective_functions = run_extract_inputs_and_outputs @registry[:run_dir], @logger
110
+ @registry.register(:results) { results }
111
+
112
+ # Send the objective function results to the output adapter
113
+ @logger.debug "Objective Function JSON is #{objective_functions}"
114
+ @output_adapter.communicate_objective_function objective_functions
115
+
116
+ nil
117
+ end
118
+ end
@@ -1,84 +1,84 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- # Run the initialization job to validate the directory and initialize the adapters.
37
- class RunTranslation < OpenStudio::Workflow::Job
38
- require 'openstudio/workflow/util/model'
39
- include OpenStudio::Workflow::Util::Model
40
-
41
- def initialize(input_adapter, output_adapter, registry, options = {})
42
- super
43
- end
44
-
45
- def perform
46
- @logger.debug "Calling #{__method__} in the #{self.class} class"
47
-
48
- # skip if halted
49
- if @registry[:runner].halted
50
- @logger.info 'Workflow halted, skipping OSM to IDF translation'
51
- @registry.register(:model_idf) { OpenStudio::Workspace.new } # This allows model arguments to still be calculated
52
- return nil
53
- end
54
-
55
- # Ensure that the run directory is created
56
- FileUtils.mkdir_p(@registry[:run_dir])
57
-
58
- # Copy in the weather file defined in the registry, or alternately in the options
59
- if @registry[:wf]
60
- @logger.info "Weather file for EnergyPlus simulation is #{@registry[:wf]}"
61
- FileUtils.copy(@registry[:wf], "#{@registry[:run_dir]}/in.epw")
62
- @registry.register(:wf) { "#{@registry[:run_dir]}/in.epw" }
63
- else
64
- @logger.warn "EPW file not found or not sent to #{self.class}"
65
- end
66
-
67
- # Translate the OSM to an IDF
68
- @logger.info 'Beginning the translation to IDF'
69
- @registry[:time_logger].start('Translating to EnergyPlus') if @registry[:time_logger]
70
- model_idf = translate_to_energyplus @registry[:model], @logger
71
- @registry[:time_logger].stop('Translating to EnergyPlus') if @registry[:time_logger]
72
- @registry.register(:model_idf) { model_idf }
73
- @logger.info 'Successfully translated to IDF'
74
-
75
- # Save the generated IDF file if the :debug option is true
76
- return nil unless @options[:debug]
77
- @registry[:time_logger].start('Saving IDF') if @registry[:time_logger]
78
- idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
79
- @registry[:time_logger].stop('Saving IDF') if @registry[:time_logger]
80
- @logger.debug "Saved IDF as #{idf_name}"
81
-
82
- nil
83
- end
84
- end
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
+ # All rights reserved.
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # (1) Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ #
10
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
11
+ # this list of conditions and the following disclaimer in the documentation
12
+ # and/or other materials provided with the distribution.
13
+ #
14
+ # (3) Neither the name of the copyright holder nor the names of any contributors
15
+ # may be used to endorse or promote products derived from this software without
16
+ # specific prior written permission from the respective party.
17
+ #
18
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
19
+ # of modifications or other derivative works may not use the "OpenStudio"
20
+ # trademark, "OS", "os", or any other confusingly similar designation without
21
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
+ #
23
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
+ # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
+ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
+ # *******************************************************************************
35
+
36
+ # Run the initialization job to validate the directory and initialize the adapters.
37
+ class RunTranslation < OpenStudio::Workflow::Job
38
+ require 'openstudio/workflow/util/model'
39
+ include OpenStudio::Workflow::Util::Model
40
+
41
+ def initialize(input_adapter, output_adapter, registry, options = {})
42
+ super
43
+ end
44
+
45
+ def perform
46
+ @logger.debug "Calling #{__method__} in the #{self.class} class"
47
+
48
+ # skip if halted
49
+ if @registry[:runner].halted
50
+ @logger.info 'Workflow halted, skipping OSM to IDF translation'
51
+ @registry.register(:model_idf) { OpenStudio::Workspace.new } # This allows model arguments to still be calculated
52
+ return nil
53
+ end
54
+
55
+ # Ensure that the run directory is created
56
+ FileUtils.mkdir_p(@registry[:run_dir])
57
+
58
+ # Copy in the weather file defined in the registry, or alternately in the options
59
+ if @registry[:wf]
60
+ @logger.info "Weather file for EnergyPlus simulation is #{@registry[:wf]}"
61
+ FileUtils.copy(@registry[:wf], "#{@registry[:run_dir]}/in.epw")
62
+ @registry.register(:wf) { "#{@registry[:run_dir]}/in.epw" }
63
+ else
64
+ @logger.warn "EPW file not found or not sent to #{self.class}"
65
+ end
66
+
67
+ # Translate the OSM to an IDF
68
+ @logger.info 'Beginning the translation to IDF'
69
+ @registry[:time_logger].start('Translating to EnergyPlus') if @registry[:time_logger]
70
+ model_idf = translate_to_energyplus @registry[:model], @logger
71
+ @registry[:time_logger].stop('Translating to EnergyPlus') if @registry[:time_logger]
72
+ @registry.register(:model_idf) { model_idf }
73
+ @logger.info 'Successfully translated to IDF'
74
+
75
+ # Save the generated IDF file if the :debug option is true
76
+ return nil unless @options[:debug]
77
+ @registry[:time_logger].start('Saving IDF') if @registry[:time_logger]
78
+ idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
79
+ @registry[:time_logger].stop('Saving IDF') if @registry[:time_logger]
80
+ @logger.debug "Saved IDF as #{idf_name}"
81
+
82
+ nil
83
+ end
84
+ end
@@ -1,62 +1,62 @@
1
- # *******************************************************************************
2
- # OpenStudio(R), Copyright (c) 2008-2018, Alliance for Sustainable Energy, LLC.
3
- # All rights reserved.
4
- # Redistribution and use in source and binary forms, with or without
5
- # modification, are permitted provided that the following conditions are met:
6
- #
7
- # (1) Redistributions of source code must retain the above copyright notice,
8
- # this list of conditions and the following disclaimer.
9
- #
10
- # (2) Redistributions in binary form must reproduce the above copyright notice,
11
- # this list of conditions and the following disclaimer in the documentation
12
- # and/or other materials provided with the distribution.
13
- #
14
- # (3) Neither the name of the copyright holder nor the names of any contributors
15
- # may be used to endorse or promote products derived from this software without
16
- # specific prior written permission from the respective party.
17
- #
18
- # (4) Other than as required in clauses (1) and (2), distributions in any form
19
- # of modifications or other derivative works may not use the "OpenStudio"
20
- # trademark, "OS", "os", or any other confusingly similar designation without
21
- # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
- #
23
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
- # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
- # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
- # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
- # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
- # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
- # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
- # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
- # *******************************************************************************
35
-
36
- require 'logger'
37
-
38
- class Logger
39
- def format_message(severity, datetime, _progname, msg)
40
- "[%s %s] %s\n" % [datetime.strftime('%H:%M:%S.%6N'), severity, msg]
41
- end
42
- end
43
-
44
- # Class to allow multiple logging paths
45
- class MultiDelegator
46
- def initialize(*targets)
47
- @targets = targets
48
- end
49
-
50
- def self.delegate(*methods)
51
- methods.each do |m|
52
- define_method(m) do |*args|
53
- @targets.map { |t| t.send(m, *args) }
54
- end
55
- end
56
- self
57
- end
58
-
59
- class <<self
60
- alias to new
61
- end
62
- end
1
+ # *******************************************************************************
2
+ # OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
3
+ # All rights reserved.
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions are met:
6
+ #
7
+ # (1) Redistributions of source code must retain the above copyright notice,
8
+ # this list of conditions and the following disclaimer.
9
+ #
10
+ # (2) Redistributions in binary form must reproduce the above copyright notice,
11
+ # this list of conditions and the following disclaimer in the documentation
12
+ # and/or other materials provided with the distribution.
13
+ #
14
+ # (3) Neither the name of the copyright holder nor the names of any contributors
15
+ # may be used to endorse or promote products derived from this software without
16
+ # specific prior written permission from the respective party.
17
+ #
18
+ # (4) Other than as required in clauses (1) and (2), distributions in any form
19
+ # of modifications or other derivative works may not use the "OpenStudio"
20
+ # trademark, "OS", "os", or any other confusingly similar designation without
21
+ # specific prior written permission from Alliance for Sustainable Energy, LLC.
22
+ #
23
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER, THE UNITED STATES
27
+ # GOVERNMENT, OR ANY CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29
+ # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
+ # PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
33
+ # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
+ # *******************************************************************************
35
+
36
+ require 'logger'
37
+
38
+ class Logger
39
+ def format_message(severity, datetime, _progname, msg)
40
+ format("[%s %s] %s\n", datetime.strftime('%H:%M:%S.%6N'), severity, msg)
41
+ end
42
+ end
43
+
44
+ # Class to allow multiple logging paths
45
+ class MultiDelegator
46
+ def initialize(*targets)
47
+ @targets = targets
48
+ end
49
+
50
+ def self.delegate(*methods)
51
+ methods.each do |m|
52
+ define_method(m) do |*args|
53
+ @targets.map { |t| t.send(m, *args) }
54
+ end
55
+ end
56
+ self
57
+ end
58
+
59
+ class <<self
60
+ alias to new
61
+ end
62
+ end