openstudio-workflow 0.2.0 → 1.0.0.pat0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -6
- data/lib/openstudio-workflow.rb +2 -0
- data/lib/openstudio/extended_runner.rb +12 -1
- data/lib/openstudio/workflow/adapters/local.rb +2 -2
- data/lib/openstudio/workflow/adapters/mongo.rb +1 -1
- data/lib/openstudio/workflow/jobs/lib/apply_measures.rb +9 -1
- data/lib/openstudio/workflow/jobs/run_energyplus/run_energyplus.rb +7 -54
- data/lib/openstudio/workflow/jobs/run_openstudio/run_openstudio.rb +3 -2
- data/lib/openstudio/workflow/jobs/run_postprocess/run_postprocess.rb +2 -1
- data/lib/openstudio/workflow/jobs/run_preflight/run_preflight.rb +2 -1
- data/lib/openstudio/workflow/jobs/run_reporting_measures/run_reporting_measures.rb +22 -12
- data/lib/openstudio/workflow/jobs/run_runmanager/run_runmanager.rb +2 -1
- data/lib/openstudio/workflow/jobs/run_xml/run_xml.rb +2 -1
- data/lib/openstudio/workflow/run.rb +2 -1
- data/lib/openstudio/workflow/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8358ab81f9a6e7ba628d2d890aa6b072e855fa7c
|
4
|
+
data.tar.gz: 775d5d17b2d109c175d3bba6037edd9b577f20a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2a92837bef82dc5f6fd3cbc07bcf01d50c865c6a6ed5ac26922836c20741eb903743946836489a671e643f4cd2412d1178f440b7d9908a77304b991f2cb6813
|
7
|
+
data.tar.gz: de3843c61ab7cb9c575579347800196c46f822a0a2009f803e5c1c415217d92530c320f3b90584f1b2517dc7fb56a8cbb9a20ccf80c6e6ada5a3e02a4dbf6333
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# OpenStudio::Workflow
|
2
|
-
[![Circle CI](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/
|
3
|
-
[![Coverage Status](https://coveralls.io/repos/NREL/OpenStudio-workflow-gem/badge.svg?branch=
|
2
|
+
[![Circle CI](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/develop.svg?style=svg)](https://circleci.com/gh/NREL/OpenStudio-workflow-gem/tree/develop)
|
3
|
+
[![Coverage Status](https://coveralls.io/repos/NREL/OpenStudio-workflow-gem/badge.svg?branch=develop&service=github)](https://coveralls.io/github/NREL/OpenStudio-workflow-gem?branch=develop)
|
4
4
|
[![Dependency Status](https://www.versioneye.com/user/projects/5531fb7b10e714121100102e/badge.svg?style=flat)](https://www.versioneye.com/user/projects/5531fb7b10e714121100102e)
|
5
5
|
|
6
6
|
Run an EnergyPlus simulation using a file-based workflow that is read from a Local or MongoDB adapter.
|
@@ -24,10 +24,6 @@ Add this line to your application's Gemfile:
|
|
24
24
|
|
25
25
|
gem 'OpenStudio-workflow'
|
26
26
|
|
27
|
-
Use this line if you want the bleeding edge:
|
28
|
-
|
29
|
-
gem 'OpenStudio-workflow', github: 'NREL/OpenStudio-workflow-gem', branch: 'EnergyPlus-8.2.0'
|
30
|
-
|
31
27
|
And then execute:
|
32
28
|
|
33
29
|
Mac/Linux:
|
data/lib/openstudio-workflow.rb
CHANGED
@@ -62,6 +62,8 @@ module OpenStudio
|
|
62
62
|
def load(adapter_name, run_directory, options = {})
|
63
63
|
defaults = { adapter_options: {} }
|
64
64
|
options = defaults.merge(options)
|
65
|
+
# We don't have deep merge so just check for the rails_env
|
66
|
+
options[:adapter_options][:rails_env] = :development unless options[:adapter_options][:rails_env]
|
65
67
|
|
66
68
|
# Convert various paths to absolute paths
|
67
69
|
if options[:adapter_options] && options[:adapter_options][:mongoid_path] &&
|
@@ -3,15 +3,26 @@ class ExtendedRunner < OpenStudio::Ruleset::OSRunner
|
|
3
3
|
# Allow former arguments to be set and read
|
4
4
|
# TODO: Consider having the former arguments passed in in initialization, and define as attr_reader
|
5
5
|
attr_accessor :former_workflow_arguments
|
6
|
+
attr_accessor :past_results
|
6
7
|
attr_reader :workflow_arguments
|
7
8
|
|
8
9
|
# Add in @workflow_arguments
|
9
|
-
def initialize(multi_logger)
|
10
|
+
def initialize(multi_logger, analysis_hash, datapoint_hash)
|
10
11
|
@multi_logger = multi_logger
|
12
|
+
@analysis = analysis_hash
|
13
|
+
@datapoint = datapoint_hash
|
11
14
|
@workflow_arguments = nil
|
12
15
|
super()
|
13
16
|
end
|
14
17
|
|
18
|
+
def analysis
|
19
|
+
return @analysis
|
20
|
+
end
|
21
|
+
|
22
|
+
def datapoint
|
23
|
+
return @datapoint
|
24
|
+
end
|
25
|
+
|
15
26
|
# Take the OS Argument type and map it correctly to the argument value.
|
16
27
|
# OPENSTUDIO_ENUM( OSArgumentType,
|
17
28
|
# ((Boolean)(Bool)(0))
|
@@ -41,7 +41,7 @@ module OpenStudio
|
|
41
41
|
|
42
42
|
# how do we log within this file?
|
43
43
|
if File.exist? "#{directory}/#{options[:datapoint_filename]}"
|
44
|
-
::
|
44
|
+
::JSON.parse(File.read("#{directory}/#{options[:datapoint_filename]}"), symbolize_names: true)
|
45
45
|
else
|
46
46
|
fail "Data point file does not exist for #{directory}/#{options[:datapoint_filename]}"
|
47
47
|
end
|
@@ -54,7 +54,7 @@ module OpenStudio
|
|
54
54
|
options = defaults.merge(options)
|
55
55
|
|
56
56
|
if File.exist? "#{directory}/#{options[:problem_filename]}"
|
57
|
-
::
|
57
|
+
::JSON.parse(File.read("#{directory}/#{options[:problem_filename]}"), symbolize_names: true)
|
58
58
|
else
|
59
59
|
fail "Problem file does not exist for #{directory}/#{options[:problem_filename]}"
|
60
60
|
end
|
@@ -46,7 +46,7 @@ module OpenStudio
|
|
46
46
|
base_path = @options[:mongoid_path] ? @options[:mongoid_path] : "#{File.dirname(__FILE__)}/mongo"
|
47
47
|
|
48
48
|
Dir["#{base_path}/models/*.rb"].each { |f| require f }
|
49
|
-
Mongoid.load!("#{base_path}/mongoid.yml", :
|
49
|
+
Mongoid.load!("#{base_path}/mongoid.yml", @options[:rails_env])
|
50
50
|
end
|
51
51
|
|
52
52
|
# Tell the system that the process has started
|
@@ -126,8 +126,9 @@ module OpenStudio
|
|
126
126
|
begin
|
127
127
|
require measure_file_path
|
128
128
|
measure = Object.const_get(measure_name).new
|
129
|
-
runner = ExtendedRunner.new @
|
129
|
+
runner = ExtendedRunner.new(@logger, @analysis_json, @datapoint_json)
|
130
130
|
runner.former_workflow_arguments = @workflow_arguments
|
131
|
+
runner.past_results = @past_results
|
131
132
|
rescue => e
|
132
133
|
log_message = "Error requiring measure #{__FILE__}. Failed with #{e.message}, #{e.backtrace.join("\n")}"
|
133
134
|
raise log_message
|
@@ -190,6 +191,8 @@ module OpenStudio
|
|
190
191
|
end
|
191
192
|
@workflow_arguments[workflow_item[:name].to_sym] = runner.workflow_arguments
|
192
193
|
@logger.info "Finished measure.run for '#{workflow_item[:name]}'"
|
194
|
+
|
195
|
+
# run garbage collector after every measure to help address race conditions
|
193
196
|
GC.start
|
194
197
|
rescue => e
|
195
198
|
log_message = "Runner error #{__FILE__} failed with #{e.message}, #{e.backtrace.join("\n")}"
|
@@ -209,6 +212,11 @@ module OpenStudio
|
|
209
212
|
begin
|
210
213
|
measure_attributes = JSON.parse(OpenStudio.toJSON(result.attributes), symbolize_names: true)
|
211
214
|
@output_attributes[workflow_item[:name].to_sym] = measure_attributes[:attributes]
|
215
|
+
@past_results[workflow_item[:name].to_sym] = measure_attributes[:attributes]
|
216
|
+
|
217
|
+
# add an applicability flag to all the measure results
|
218
|
+
@output_attributes[workflow_item[:name].to_sym][:applicable] = result.value.value != -1
|
219
|
+
@past_results[workflow_item[:name].to_sym][:applicable] = result.value.value != -1
|
212
220
|
rescue => e
|
213
221
|
log_message = "#{__FILE__} failed with #{e.message}, #{e.backtrace.join("\n")}"
|
214
222
|
@logger.error log_message
|
@@ -24,7 +24,7 @@ class RunEnergyplus
|
|
24
24
|
# Initialize
|
25
25
|
# param directory: base directory where the simulation files are prepared
|
26
26
|
# param logger: logger object in which to write log messages
|
27
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
27
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
28
28
|
@logger = logger
|
29
29
|
|
30
30
|
energyplus_path = find_energyplus
|
@@ -39,6 +39,7 @@ class RunEnergyplus
|
|
39
39
|
@adapter = adapter
|
40
40
|
@time_logger = time_logger
|
41
41
|
@workflow_arguments = workflow_arguments
|
42
|
+
@past_results = past_results
|
42
43
|
@results = {}
|
43
44
|
|
44
45
|
# container for storing the energyplus files there were copied into the local directory. These will be
|
@@ -258,12 +259,6 @@ class RunEnergyplus
|
|
258
259
|
new_objects = []
|
259
260
|
needs_monthlyoutput = false
|
260
261
|
|
261
|
-
# this is a workaround for OpenStudio issue #1699
|
262
|
-
needs_detailedvariable = false
|
263
|
-
needs_hourlyvariable = false
|
264
|
-
needs_dailyvariable = false
|
265
|
-
needs_runperiodvariable = false
|
266
|
-
|
267
262
|
idf = OpenStudio::IdfFile.load(idf_filename).get
|
268
263
|
# save the pre-preprocess file
|
269
264
|
File.open("#{File.dirname(idf_filename)}/pre-preprocess.idf", 'w') { |f| f << idf.to_s }
|
@@ -275,43 +270,11 @@ class RunEnergyplus
|
|
275
270
|
idf.getObjectsByName('Building Energy Performance - District Heating').empty? ||
|
276
271
|
idf.getObjectsByName('Building Energy Performance - District Cooling').empty?
|
277
272
|
|
278
|
-
# this is a workaround for issue #1699 --
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
meters += idf.getObjectsByType('Output:Meter:Cumulative:MeterFileOnly'.to_IddObjectType) unless idf.getObjectsByType('Output:Meter:Cumulative:MeterFileOnly'.to_IddObjectType).empty?
|
284
|
-
|
285
|
-
# go through each meter and check the reporting frequency
|
286
|
-
meters.each do |meter|
|
287
|
-
reporting_frequency = meter.getString(1, true)
|
288
|
-
if reporting_frequency =~ /detailed/i
|
289
|
-
needs_detailedvariable = true
|
290
|
-
elsif reporting_frequency =~ /hourly/i
|
291
|
-
needs_hourlyvariable = true
|
292
|
-
elsif reporting_frequency =~ /daily/i
|
293
|
-
needs_dailyvariable = true
|
294
|
-
elsif reporting_frequency =~ /monthly/i
|
295
|
-
needs_monthlyvariable = true
|
296
|
-
elsif reporting_frequency =~ /runperiod|environment|annual/i
|
297
|
-
needs_runperiodvariable = true
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
# turn off the requests if the meter is already a variable
|
302
|
-
variables = idf.getObjectsByType('Output:Variable'.to_IddObjectType)
|
303
|
-
variables.each do |variable|
|
304
|
-
reporting_frequency = variable.getString(2, true)
|
305
|
-
if reporting_frequency =~ /detailed/i
|
306
|
-
needs_detailedvariable = false
|
307
|
-
elsif reporting_frequency =~ /hourly/i
|
308
|
-
needs_hourlyvariable = false
|
309
|
-
elsif reporting_frequency =~ /daily/i
|
310
|
-
needs_dailyvariable = false
|
311
|
-
elsif reporting_frequency =~ /runperiod|environment|annual/i
|
312
|
-
needs_runperiodvariable = false
|
313
|
-
end
|
314
|
-
end
|
273
|
+
# this is a workaround for issue #1699 -- remove when 1699 is closed.
|
274
|
+
new_objects << 'Output:Variable,*,Zone Air Temperature,Hourly;'
|
275
|
+
new_objects << 'Output:Variable,*,Zone Air Relative Humidity,Daily;'
|
276
|
+
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Monthly;'
|
277
|
+
new_objects << 'Output:Variable,*,Site Outdoor Air Wetbulb Temperature,Timestep;'
|
315
278
|
|
316
279
|
if needs_sqlobj
|
317
280
|
@logger.info 'Adding SQL Output to IDF'
|
@@ -323,24 +286,14 @@ class RunEnergyplus
|
|
323
286
|
|
324
287
|
if needs_monthlyoutput
|
325
288
|
monthly_report_idf = File.join(File.dirname(__FILE__), 'monthly_report.idf')
|
326
|
-
|
327
289
|
idf_file = OpenStudio::IdfFile.load(File.read(monthly_report_idf), 'EnergyPlus'.to_IddFileType).get
|
328
290
|
idf.addObjects(idf_file.objects)
|
329
291
|
end
|
330
292
|
|
331
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Detailed;' if needs_detailedvariable
|
332
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Hourly;' if needs_hourlyvariable
|
333
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Daily;' if needs_dailyvariable
|
334
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,RunPeriod;' if needs_runperiodvariable
|
335
|
-
|
336
293
|
# These are supposedly needed for the calibration report
|
337
294
|
new_objects << 'Output:Meter:MeterFileOnly,Gas:Facility,Daily;'
|
338
295
|
new_objects << 'Output:Meter:MeterFileOnly,Electricity:Facility,Timestep;'
|
339
296
|
new_objects << 'Output:Meter:MeterFileOnly,Electricity:Facility,Daily;'
|
340
|
-
new_objects << 'Output:Variable,*,Zone Air Temperature,Hourly;'
|
341
|
-
new_objects << 'Output:Variable,*,Zone Air Relative Humidity,Hourly;'
|
342
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Monthly;'
|
343
|
-
new_objects << 'Output:Variable,*,Site Outdoor Air Drybulb Temperature,Timestep;'
|
344
297
|
|
345
298
|
# Always add in the timestep facility meters
|
346
299
|
new_objects << 'Output:Meter,Electricity:Facility,Timestep;'
|
@@ -24,8 +24,8 @@ class RunOpenstudio
|
|
24
24
|
# Initialize
|
25
25
|
# param directory: base directory where the simulation files are prepared
|
26
26
|
# param logger: logger object in which to write log messages
|
27
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
28
|
-
defaults = { format: 'hash',
|
27
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
28
|
+
defaults = { format: 'hash', analysis_root_path: '.' }
|
29
29
|
warn 'Option of use_monthly_reports is deprecated. Monthly reports are always generated.' if options[:use_monthly_reports]
|
30
30
|
|
31
31
|
@options = defaults.merge(options)
|
@@ -37,6 +37,7 @@ class RunOpenstudio
|
|
37
37
|
@logger = logger
|
38
38
|
@time_logger = time_logger
|
39
39
|
@workflow_arguments = workflow_arguments
|
40
|
+
@past_results = past_results
|
40
41
|
@logger.info "#{self.class} passed the following options #{@options}"
|
41
42
|
|
42
43
|
# initialize instance variables that are needed in the perform section
|
@@ -27,7 +27,7 @@ class RunPostprocess
|
|
27
27
|
# Mixin the MeasureApplication module to apply measures
|
28
28
|
include OpenStudio::Workflow::ApplyMeasures
|
29
29
|
|
30
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
30
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
31
31
|
defaults = {}
|
32
32
|
@options = defaults.merge(options)
|
33
33
|
@directory = directory
|
@@ -36,6 +36,7 @@ class RunPostprocess
|
|
36
36
|
@logger = logger
|
37
37
|
@time_logger = time_logger
|
38
38
|
@workflow_arguments = workflow_arguments
|
39
|
+
@past_results = past_results
|
39
40
|
@results = {}
|
40
41
|
@output_attributes = {}
|
41
42
|
|
@@ -19,7 +19,7 @@
|
|
19
19
|
|
20
20
|
# Run Prelight job to prepare the directory for simulations.
|
21
21
|
class RunPreflight
|
22
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
22
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
23
23
|
defaults = {}
|
24
24
|
@options = defaults.merge(options)
|
25
25
|
@directory = directory
|
@@ -27,6 +27,7 @@ class RunPreflight
|
|
27
27
|
@logger = logger
|
28
28
|
@time_logger = time_logger
|
29
29
|
@workflow_arguments = workflow_arguments
|
30
|
+
@past_results = past_results
|
30
31
|
@results = {}
|
31
32
|
end
|
32
33
|
|
@@ -25,7 +25,7 @@ class RunReportingMeasures
|
|
25
25
|
# Mixin the MeasureApplication module to apply measures
|
26
26
|
include OpenStudio::Workflow::ApplyMeasures
|
27
27
|
|
28
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
28
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
29
29
|
defaults = {}
|
30
30
|
@options = defaults.merge(options)
|
31
31
|
@directory = directory
|
@@ -34,6 +34,7 @@ class RunReportingMeasures
|
|
34
34
|
@logger = logger
|
35
35
|
@time_logger = time_logger
|
36
36
|
@workflow_arguments = workflow_arguments
|
37
|
+
@past_results = past_results
|
37
38
|
@results = {}
|
38
39
|
@output_attributes = {}
|
39
40
|
|
@@ -139,7 +140,9 @@ class RunReportingMeasures
|
|
139
140
|
# TODO: move this to cleaner logic. Use ostruct?
|
140
141
|
if variable[:name].include? '.'
|
141
142
|
k, v = variable[:name].split('.')
|
142
|
-
|
143
|
+
|
144
|
+
# look for the objective function key and make sure that it is not nil. False is an okay obj function.
|
145
|
+
if @results.key?(k.to_sym) && !@results[k.to_sym][v.to_sym].nil?
|
143
146
|
@objective_functions["objective_function_#{variable[:objective_function_index] + 1}"] = @results[k.to_sym][v.to_sym]
|
144
147
|
if variable[:objective_function_target]
|
145
148
|
@logger.info "Found objective function target for #{variable[:name]}"
|
@@ -229,17 +232,24 @@ class RunReportingMeasures
|
|
229
232
|
name: 'standard_reports'
|
230
233
|
}
|
231
234
|
@logger.info 'Running packaged Standard Reports measures'
|
232
|
-
|
235
|
+
begin
|
236
|
+
apply_measure(workflow_item)
|
237
|
+
rescue => e
|
238
|
+
@logger.warn "Error applying Standard Reports measure. Failed with #{e.message}, #{e.backtrace.join("\n")} \n Continuing."
|
239
|
+
end
|
233
240
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
241
|
+
@logger.info "Found #{@model.getUtilityBills.length} utility bills"
|
242
|
+
if @model.getUtilityBills.length > 0
|
243
|
+
workflow_item = {
|
244
|
+
display_name: 'Calibration Reports',
|
245
|
+
measure_definition_directory: File.expand_path(File.join(OpenStudio::BCLMeasure.calibrationReportMeasure.directory.to_s, 'measure.rb')),
|
246
|
+
measure_definition_class_name: 'CalibrationReports',
|
247
|
+
measure_type: 'CalibrationReports',
|
248
|
+
name: 'calibration_reports'
|
249
|
+
}
|
250
|
+
@logger.info 'Running packaged Calibration Reports measures'
|
251
|
+
apply_measure(workflow_item)
|
252
|
+
end
|
243
253
|
|
244
254
|
@logger.info 'Finished Running Packaged Measures'
|
245
255
|
end
|
@@ -27,7 +27,7 @@ class RunRunmanager
|
|
27
27
|
# Initialize
|
28
28
|
# param directory: base directory where the simulation files are prepared
|
29
29
|
# param logger: logger object in which to write log messages
|
30
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
30
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
31
31
|
@logger = logger
|
32
32
|
|
33
33
|
energyplus_path = find_energyplus
|
@@ -46,6 +46,7 @@ class RunRunmanager
|
|
46
46
|
@logger.info "#{self.class} passed the following options #{@options}"
|
47
47
|
@time_logger = time_logger
|
48
48
|
@workflow_arguments = workflow_arguments
|
49
|
+
@past_results = past_results
|
49
50
|
|
50
51
|
# initialize instance variables that are needed in the perform section
|
51
52
|
@model = nil
|
@@ -22,7 +22,7 @@ require 'libxml'
|
|
22
22
|
# This actually belongs as another class that gets added as a state dynamically
|
23
23
|
class RunXml
|
24
24
|
# RunXml
|
25
|
-
def initialize(directory, logger, time_logger, adapter, workflow_arguments, options = {})
|
25
|
+
def initialize(directory, logger, time_logger, adapter, workflow_arguments, past_results, options = {})
|
26
26
|
defaults = { analysis_root_path: '.', xml_library_file: 'xml_runner.rb' }
|
27
27
|
@options = defaults.merge(options)
|
28
28
|
@directory = directory
|
@@ -33,6 +33,7 @@ class RunXml
|
|
33
33
|
@logger = logger
|
34
34
|
@time_logger = time_logger
|
35
35
|
@workflow_arguments = workflow_arguments
|
36
|
+
@past_results = past_results
|
36
37
|
@logger.info "#{self.class} passed the following options #{@options}"
|
37
38
|
|
38
39
|
# initialize instance variables that are needed in the perform section
|
@@ -95,6 +95,7 @@ module OpenStudio
|
|
95
95
|
@directory = directory
|
96
96
|
@time_logger = TimeLogger.new
|
97
97
|
@workflow_arguments = {}
|
98
|
+
@past_results = {}
|
98
99
|
# TODO: run directory is a convention right now. Move to a configuration item
|
99
100
|
@run_directory = "#{@directory}/run"
|
100
101
|
|
@@ -310,7 +311,7 @@ module OpenStudio
|
|
310
311
|
require_relative "jobs/#{from_method}/#{from_method}"
|
311
312
|
klass_name = from_method.to_s.split('_').map(&:capitalize) * ''
|
312
313
|
@logger.info "Getting method for state transition '#{from_method}'"
|
313
|
-
klass = Object.const_get(klass_name).new(@directory, @logger, @time_logger, @adapter, @workflow_arguments, get_job_options)
|
314
|
+
klass = Object.const_get(klass_name).new(@directory, @logger, @time_logger, @adapter, @workflow_arguments, @past_results, get_job_options)
|
314
315
|
klass
|
315
316
|
end
|
316
317
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openstudio-workflow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pat0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Long
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-06-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.2.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.2.0
|
111
111
|
description: Run OpenStudio based simulations using EnergyPlus
|
112
112
|
email:
|
113
113
|
- nicholas.long@nrel.gov
|
@@ -115,6 +115,10 @@ executables: []
|
|
115
115
|
extensions: []
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
|
+
- CHANGELOG.md
|
119
|
+
- README.md
|
120
|
+
- Rakefile
|
121
|
+
- lib/openstudio-workflow.rb
|
118
122
|
- lib/openstudio/extended_runner.rb
|
119
123
|
- lib/openstudio/workflow/adapter.rb
|
120
124
|
- lib/openstudio/workflow/adapters/local.rb
|
@@ -132,10 +136,6 @@ files:
|
|
132
136
|
- lib/openstudio/workflow/run.rb
|
133
137
|
- lib/openstudio/workflow/time_logger.rb
|
134
138
|
- lib/openstudio/workflow/version.rb
|
135
|
-
- lib/openstudio-workflow.rb
|
136
|
-
- README.md
|
137
|
-
- CHANGELOG.md
|
138
|
-
- Rakefile
|
139
139
|
homepage: https://github.com/NREL/OpenStudio-workflow-gem
|
140
140
|
licenses:
|
141
141
|
- LGPL
|
@@ -151,12 +151,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: 1.9.3
|
152
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
153
|
requirements:
|
154
|
-
- - '
|
154
|
+
- - '>'
|
155
155
|
- !ruby/object:Gem::Version
|
156
|
-
version:
|
156
|
+
version: 1.3.1
|
157
157
|
requirements: []
|
158
158
|
rubyforge_project:
|
159
|
-
rubygems_version: 2.
|
159
|
+
rubygems_version: 2.6.6
|
160
160
|
signing_key:
|
161
161
|
specification_version: 4
|
162
162
|
summary: Workflow Manager
|