openstudio-workflow 1.3.5 → 2.0.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +6 -0
- data/README.md +10 -10
- data/Rakefile +2 -0
- data/lib/openstudio-workflow.rb +2 -0
- data/lib/openstudio/workflow/adapters/input/local.rb +3 -0
- data/lib/openstudio/workflow/adapters/output/local.rb +3 -0
- data/lib/openstudio/workflow/adapters/output/socket.rb +2 -0
- data/lib/openstudio/workflow/adapters/output/web.rb +2 -0
- data/lib/openstudio/workflow/adapters/output_adapter.rb +4 -0
- data/lib/openstudio/workflow/job.rb +2 -0
- data/lib/openstudio/workflow/jobs/run_energyplus.rb +6 -3
- data/lib/openstudio/workflow/jobs/run_ep_measures.rb +5 -2
- data/lib/openstudio/workflow/jobs/run_initialization.rb +6 -3
- data/lib/openstudio/workflow/jobs/run_os_measures.rb +5 -2
- data/lib/openstudio/workflow/jobs/run_postprocess.rb +2 -0
- data/lib/openstudio/workflow/jobs/run_preprocess.rb +7 -4
- data/lib/openstudio/workflow/jobs/run_reporting_measures.rb +4 -0
- data/lib/openstudio/workflow/jobs/run_translation.rb +7 -4
- data/lib/openstudio/workflow/multi_delegator.rb +2 -0
- data/lib/openstudio/workflow/registry.rb +5 -0
- data/lib/openstudio/workflow/run.rb +4 -2
- data/lib/openstudio/workflow/time_logger.rb +2 -0
- data/lib/openstudio/workflow/util.rb +2 -0
- data/lib/openstudio/workflow/util/energyplus.rb +229 -226
- data/lib/openstudio/workflow/util/io.rb +2 -0
- data/lib/openstudio/workflow/util/model.rb +4 -0
- data/lib/openstudio/workflow/util/post_process.rb +4 -1
- data/lib/openstudio/workflow/util/weather_file.rb +5 -0
- data/lib/openstudio/workflow/version.rb +3 -1
- data/lib/openstudio/workflow_json.rb +5 -0
- data/lib/openstudio/workflow_runner.rb +4 -0
- metadata +56 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d42b6a8aa0ff9fe8589c86c4861161d90a0b346c716871f134722e0c2a660d46
|
4
|
+
data.tar.gz: c11ab23043dbc0b42db813661e9658efa942a27ac87e20cabd7947b5f3aa757c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d1ce7d5b9c49af0b765bd3ab0287eb8598f2f126ae778d32bd4d6425aa2d89ed7b8b7a7e3fa0e7a47fe3c7188b66698ffb00318a40ceddb0dff032991b7ebcd0
|
7
|
+
data.tar.gz: 9ea3be0074c46862e80e01931e2f89ec8a7443862493d021da3c0a735c00598e24d79f965fc052086aa859435a38ec4088b99b5b509ddde7e87c001c6f2c8bba
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -4,30 +4,30 @@
|
|
4
4
|
|
5
5
|
## OpenStudio Workflow Gem
|
6
6
|
|
7
|
-
This branch is the development branch for the OpenStudio workflow gem.
|
7
|
+
This branch is the development branch for the OpenStudio workflow gem.
|
8
8
|
## Installation
|
9
9
|
|
10
10
|
The OpenStudio Workflow Gem has the following dependencies:
|
11
11
|
|
12
|
-
* Ruby 2.
|
13
|
-
* OpenStudio
|
12
|
+
* Ruby 2.5.5
|
13
|
+
* OpenStudio 3.x
|
14
14
|
|
15
|
-
[OpenStudio](
|
15
|
+
[OpenStudio](https://www.openstudio.net/) needs to be installed and in your path. On Mac/Linux it is easiest to add the following to your .bash_profile or /etc/profile.d/<file>.sh to ensure OpenStudio loads. Assuming OpenStudio 3.0.0 installed:
|
16
16
|
|
17
|
-
export RUBYLIB=/usr/local/openstudio-
|
17
|
+
export RUBYLIB=/usr/local/openstudio-3.0.0/Ruby
|
18
18
|
|
19
19
|
Add this line to your application's Gemfile:
|
20
20
|
|
21
21
|
gem 'OpenStudio-workflow'
|
22
22
|
|
23
23
|
And then execute:
|
24
|
-
|
24
|
+
|
25
25
|
bundle install
|
26
|
-
|
26
|
+
|
27
27
|
Or install it yourself as:
|
28
|
-
|
28
|
+
|
29
29
|
$ gem install openstudio-workflow
|
30
|
-
|
30
|
+
|
31
31
|
## Usage
|
32
32
|
|
33
33
|
There are currently two adapters to run OpenStudio workflow. The first is a simple Local adapter allowing the user to pass in the directory to simulation. The directory must have an [analysis/problem JSON file](spec/files/local_ex1/analysis_1.json) and a [datapoint JSON file](spec/files/local_ex1/datapoint_1.json).
|
@@ -52,7 +52,7 @@ rspec spec/
|
|
52
52
|
### Docker
|
53
53
|
|
54
54
|
```
|
55
|
-
export OPENSTUDIO_VERSION=
|
55
|
+
export OPENSTUDIO_VERSION=3.0.0
|
56
56
|
docker run -v $(pwd):/var/simdata/openstudio \
|
57
57
|
nrel/openstudio:$OPENSTUDIO_VERSION \
|
58
58
|
/var/simdata/openstudio/test/bin/docker-run.sh
|
data/Rakefile
CHANGED
data/lib/openstudio-workflow.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -77,6 +79,7 @@ module OpenStudio
|
|
77
79
|
#
|
78
80
|
def workflow
|
79
81
|
raise "Could not read workflow from #{@osw_abs_path}" if @workflow.nil?
|
82
|
+
|
80
83
|
@workflow
|
81
84
|
end
|
82
85
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -42,6 +44,7 @@ module OpenStudio
|
|
42
44
|
class Local < OutputAdapters
|
43
45
|
def initialize(options = {})
|
44
46
|
raise 'The required :output_directory option was not passed to the local output adapter' unless options[:output_directory]
|
47
|
+
|
45
48
|
super
|
46
49
|
end
|
47
50
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -109,6 +111,7 @@ module OpenStudio
|
|
109
111
|
if File.basename(file) =~ /seed|measures|weather/
|
110
112
|
next
|
111
113
|
end
|
114
|
+
|
112
115
|
# skip x-large directory
|
113
116
|
if File.size?(file)
|
114
117
|
next if File.size?(file) >= 15000000
|
@@ -117,6 +120,7 @@ module OpenStudio
|
|
117
120
|
else
|
118
121
|
next if File.extname(file) =~ /\.rb.*/
|
119
122
|
next if File.extname(file) =~ /\.zip.*/
|
123
|
+
|
120
124
|
# skip large non-osm/idf files
|
121
125
|
if File.size(file)
|
122
126
|
if File.size(file) >= 100000000
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -52,13 +54,14 @@ class RunEnergyPlus < OpenStudio::Workflow::Job
|
|
52
54
|
|
53
55
|
# Checks and configuration
|
54
56
|
raise 'No run_dir specified in the registry' unless @registry[:run_dir]
|
55
|
-
|
57
|
+
|
58
|
+
ep_path = @options[:energyplus_path] || nil
|
56
59
|
@logger.warn "Using EnergyPlus path specified in options #{ep_path}" if ep_path
|
57
60
|
|
58
61
|
@logger.info 'Starting the EnergyPlus simulation'
|
59
|
-
@registry[:time_logger]
|
62
|
+
@registry[:time_logger]&.start('Running EnergyPlus')
|
60
63
|
call_energyplus(@registry[:run_dir], ep_path, @output_adapter, @logger, @registry[:workflow_json])
|
61
|
-
@registry[:time_logger]
|
64
|
+
@registry[:time_logger]&.stop('Running EnergyPlus')
|
62
65
|
@logger.info 'Completed the EnergyPlus simulation'
|
63
66
|
|
64
67
|
sql_path = File.join(@registry[:run_dir], 'eplusout.sql')
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -63,9 +65,10 @@ class RunEnergyPlusMeasures < OpenStudio::Workflow::Job
|
|
63
65
|
|
64
66
|
# Save both the OSM and IDF if the :debug option is true
|
65
67
|
return nil unless @options[:debug]
|
66
|
-
|
68
|
+
|
69
|
+
@registry[:time_logger]&.start('Saving IDF')
|
67
70
|
idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
|
68
|
-
@registry[:time_logger]
|
71
|
+
@registry[:time_logger]&.stop('Saving IDF')
|
69
72
|
@logger.debug "Saved IDF as #{idf_name}"
|
70
73
|
|
71
74
|
nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -62,6 +64,7 @@ class RunInitialization < OpenStudio::Workflow::Job
|
|
62
64
|
# DLM: this key is the raw JSON object, it is deprecated and should not be used, use :workflow_json instead
|
63
65
|
@registry.register(:workflow) { @input_adapter.workflow }
|
64
66
|
raise 'Specified workflow was nil' unless @registry[:workflow]
|
67
|
+
|
65
68
|
@logger.debug 'Retrieved the workflow from the adapter'
|
66
69
|
|
67
70
|
@registry.register(:osw_dir) { @input_adapter.osw_dir }
|
@@ -129,6 +132,7 @@ class RunInitialization < OpenStudio::Workflow::Job
|
|
129
132
|
if model_full_path.empty?
|
130
133
|
raise "Seed model #{model_path.get} specified in OSW cannot be found"
|
131
134
|
end
|
135
|
+
|
132
136
|
model_full_path = model_full_path.get
|
133
137
|
|
134
138
|
if File.extname(model_full_path.to_s) == '.idf'
|
@@ -157,9 +161,7 @@ class RunInitialization < OpenStudio::Workflow::Job
|
|
157
161
|
end
|
158
162
|
|
159
163
|
if @registry[:openstudio_2]
|
160
|
-
|
161
|
-
@registry[:model].setWorkflowJSON(workflow_json.clone)
|
162
|
-
end
|
164
|
+
@registry[:model]&.setWorkflowJSON(workflow_json.clone)
|
163
165
|
end
|
164
166
|
|
165
167
|
# DLM: TODO, load weather_file from options so it can be overriden by user_options
|
@@ -189,6 +191,7 @@ class RunInitialization < OpenStudio::Workflow::Job
|
|
189
191
|
if weather_full_path.empty?
|
190
192
|
raise "Weather file '#{weather_path}' specified but cannot be found"
|
191
193
|
end
|
194
|
+
|
192
195
|
weather_full_path = weather_full_path.get
|
193
196
|
|
194
197
|
@registry.register(:wf) { weather_full_path.to_s }
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -79,9 +81,10 @@ class RunOpenStudioMeasures < OpenStudio::Workflow::Job
|
|
79
81
|
|
80
82
|
# Save the OSM if the :debug option is true
|
81
83
|
return nil unless @options[:debug]
|
82
|
-
|
84
|
+
|
85
|
+
@registry[:time_logger]&.start('Saving OSM')
|
83
86
|
osm_name = save_osm(@registry[:model], @registry[:root_dir])
|
84
|
-
@registry[:time_logger]
|
87
|
+
@registry[:time_logger]&.stop('Saving OSM')
|
85
88
|
@logger.debug "Saved model as #{osm_name}"
|
86
89
|
|
87
90
|
nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -78,9 +80,9 @@ class RunPreprocess < OpenStudio::Workflow::Job
|
|
78
80
|
|
79
81
|
# Perform pre-processing on in.idf to capture logic in RunManager
|
80
82
|
if !@options[:skip_energyplus_preprocess]
|
81
|
-
@registry[:time_logger]
|
83
|
+
@registry[:time_logger]&.start('Running EnergyPlus Preprocess')
|
82
84
|
energyplus_preprocess(@registry[:model_idf], @logger)
|
83
|
-
@registry[:time_logger]
|
85
|
+
@registry[:time_logger]&.start('Running EnergyPlus Preprocess')
|
84
86
|
@logger.info 'Finished preprocess job for EnergyPlus simulation'
|
85
87
|
end
|
86
88
|
|
@@ -94,9 +96,10 @@ class RunPreprocess < OpenStudio::Workflow::Job
|
|
94
96
|
|
95
97
|
# Save the generated IDF file if the :debug option is true
|
96
98
|
return nil unless @options[:debug]
|
97
|
-
|
99
|
+
|
100
|
+
@registry[:time_logger]&.start('Saving IDF')
|
98
101
|
idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
|
99
|
-
@registry[:time_logger]
|
102
|
+
@registry[:time_logger]&.stop('Saving IDF')
|
100
103
|
@logger.debug "Saved IDF as #{idf_name}"
|
101
104
|
|
102
105
|
nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -68,6 +70,7 @@ class RunReportingMeasures < OpenStudio::Workflow::Job
|
|
68
70
|
@logger.debug "Attempting to load #{osm_path}"
|
69
71
|
@registry.register(:model) { load_osm('.', osm_path) }
|
70
72
|
raise "Unable to load #{osm_path}" unless @registry[:model]
|
73
|
+
|
71
74
|
@logger.debug "Successfully loaded #{osm_path}"
|
72
75
|
end
|
73
76
|
if @registry[:model_idf].nil?
|
@@ -75,6 +78,7 @@ class RunReportingMeasures < OpenStudio::Workflow::Job
|
|
75
78
|
@logger.debug "Attempting to load #{idf_path}"
|
76
79
|
@registry.register(:model_idf) { load_idf(idf_path, @logger) }
|
77
80
|
raise "Unable to load #{idf_path}" unless @registry[:model_idf]
|
81
|
+
|
78
82
|
@logger.debug "Successfully loaded #{idf_path}"
|
79
83
|
end
|
80
84
|
if @registry[:sql].nil?
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -66,17 +68,18 @@ class RunTranslation < OpenStudio::Workflow::Job
|
|
66
68
|
|
67
69
|
# Translate the OSM to an IDF
|
68
70
|
@logger.info 'Beginning the translation to IDF'
|
69
|
-
@registry[:time_logger]
|
71
|
+
@registry[:time_logger]&.start('Translating to EnergyPlus')
|
70
72
|
model_idf = translate_to_energyplus @registry[:model], @logger
|
71
|
-
@registry[:time_logger]
|
73
|
+
@registry[:time_logger]&.stop('Translating to EnergyPlus')
|
72
74
|
@registry.register(:model_idf) { model_idf }
|
73
75
|
@logger.info 'Successfully translated to IDF'
|
74
76
|
|
75
77
|
# Save the generated IDF file if the :debug option is true
|
76
78
|
return nil unless @options[:debug]
|
77
|
-
|
79
|
+
|
80
|
+
@registry[:time_logger]&.start('Saving IDF')
|
78
81
|
idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
|
79
|
-
@registry[:time_logger]
|
82
|
+
@registry[:time_logger]&.stop('Saving IDF')
|
80
83
|
@logger.debug "Saved IDF as #{idf_name}"
|
81
84
|
|
82
85
|
nil
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -60,6 +62,7 @@ module OpenStudio
|
|
60
62
|
#
|
61
63
|
def register(key, &block)
|
62
64
|
raise ArgumentError, 'block required' unless block_given?
|
65
|
+
|
63
66
|
@items[key] = block
|
64
67
|
@results_cache[key] = @items[key].call
|
65
68
|
end
|
@@ -71,6 +74,7 @@ module OpenStudio
|
|
71
74
|
#
|
72
75
|
def get(key)
|
73
76
|
return nil unless @items.key?(key)
|
77
|
+
|
74
78
|
@results_cache[key]
|
75
79
|
end
|
76
80
|
alias [] get
|
@@ -83,6 +87,7 @@ module OpenStudio
|
|
83
87
|
#
|
84
88
|
def eval(key)
|
85
89
|
return nil unless @items.key?(key)
|
90
|
+
|
86
91
|
begin
|
87
92
|
@items[key].call
|
88
93
|
rescue StandardError
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -248,7 +250,7 @@ module OpenStudio
|
|
248
250
|
end
|
249
251
|
|
250
252
|
if @current_state == :errored
|
251
|
-
@registry[:workflow_json]
|
253
|
+
@registry[:workflow_json]&.setCompletedStatus('Fail')
|
252
254
|
else
|
253
255
|
# completed status will already be set if workflow was halted
|
254
256
|
if @registry[:workflow_json].completedStatus.empty?
|
@@ -268,7 +270,7 @@ module OpenStudio
|
|
268
270
|
end
|
269
271
|
|
270
272
|
# Write out the TimeLogger to the filesystem
|
271
|
-
@registry[:time_logger]
|
273
|
+
@registry[:time_logger]&.save(File.join(@registry[:run_dir], 'profile.json'))
|
272
274
|
|
273
275
|
if @current_state == :errored
|
274
276
|
@output_adapter.communicate_failure
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# *******************************************************************************
|
2
4
|
# OpenStudio(R), Copyright (c) 2008-2020, Alliance for Sustainable Energy, LLC.
|
3
5
|
# All rights reserved.
|
@@ -41,8 +43,8 @@ module OpenStudio
|
|
41
43
|
module EnergyPlus
|
42
44
|
require 'openstudio/workflow/util/io'
|
43
45
|
include OpenStudio::Workflow::Util::IO
|
44
|
-
ENERGYPLUS_REGEX = /^energyplus\D{0,4}$/i
|
45
|
-
EXPAND_OBJECTS_REGEX = /^expandobjects\D{0,4}$/i
|
46
|
+
ENERGYPLUS_REGEX = /^energyplus\D{0,4}$/i.freeze
|
47
|
+
EXPAND_OBJECTS_REGEX = /^expandobjects\D{0,4}$/i.freeze
|
46
48
|
|
47
49
|
# Find the installation directory of EnergyPlus linked to the OpenStudio version being used
|
48
50
|
#
|
@@ -51,6 +53,7 @@ module OpenStudio
|
|
51
53
|
def find_energyplus
|
52
54
|
path = OpenStudio.getEnergyPlusDirectory.to_s
|
53
55
|
raise 'Unable to find the EnergyPlus executable' unless File.exist? path
|
56
|
+
|
54
57
|
path
|
55
58
|
end
|
56
59
|
|
@@ -156,7 +159,7 @@ module OpenStudio
|
|
156
159
|
::IO.popen(command) do |io|
|
157
160
|
while (line = io.gets)
|
158
161
|
file << line
|
159
|
-
output_adapter
|
162
|
+
output_adapter&.communicate_energyplus_stdout(line)
|
160
163
|
end
|
161
164
|
end
|
162
165
|
end
|
@@ -345,229 +348,229 @@ module OpenStudio
|
|
345
348
|
end
|
346
349
|
|
347
350
|
def self.monthly_report_idf_text
|
348
|
-
|
349
|
-
Output:Table:Monthly,
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
Output:Table:Monthly,
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
Output:Table:Monthly,
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
Output:Table:Monthly,
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
Output:Table:Monthly,
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
Output:Table:Monthly,
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
Output:Table:Monthly,
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
Output:Table:Monthly,
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
351
|
+
<<~HEREDOC
|
352
|
+
Output:Table:Monthly,
|
353
|
+
Building Energy Performance - Electricity, !- Name
|
354
|
+
2, !- Digits After Decimal
|
355
|
+
InteriorLights:Electricity, !- Variable or Meter 1 Name
|
356
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 1
|
357
|
+
ExteriorLights:Electricity, !- Variable or Meter 2 Name
|
358
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 2
|
359
|
+
InteriorEquipment:Electricity, !- Variable or Meter 3 Name
|
360
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 3
|
361
|
+
ExteriorEquipment:Electricity, !- Variable or Meter 4 Name
|
362
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 4
|
363
|
+
Fans:Electricity, !- Variable or Meter 5 Name
|
364
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 5
|
365
|
+
Pumps:Electricity, !- Variable or Meter 6 Name
|
366
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 6
|
367
|
+
Heating:Electricity, !- Variable or Meter 7 Name
|
368
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 7
|
369
|
+
Cooling:Electricity, !- Variable or Meter 8 Name
|
370
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 8
|
371
|
+
HeatRejection:Electricity, !- Variable or Meter 9 Name
|
372
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 9
|
373
|
+
Humidifier:Electricity, !- Variable or Meter 10 Name
|
374
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 10
|
375
|
+
HeatRecovery:Electricity,!- Variable or Meter 11 Name
|
376
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 11
|
377
|
+
WaterSystems:Electricity,!- Variable or Meter 12 Name
|
378
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 12
|
379
|
+
Cogeneration:Electricity,!- Variable or Meter 13 Name
|
380
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 13
|
381
|
+
Refrigeration:Electricity,!- Variable or Meter 14 Name
|
382
|
+
SumOrAverage; !- Aggregation Type for Variable or Meter 14
|
383
|
+
|
384
|
+
Output:Table:Monthly,
|
385
|
+
Building Energy Performance - Natural Gas, !- Name
|
386
|
+
2, !- Digits After Decimal
|
387
|
+
InteriorEquipment:Gas, !- Variable or Meter 1 Name
|
388
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 1
|
389
|
+
ExteriorEquipment:Gas, !- Variable or Meter 2 Name
|
390
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 2
|
391
|
+
Heating:Gas, !- Variable or Meter 3 Name
|
392
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 3
|
393
|
+
Cooling:Gas, !- Variable or Meter 4 Name
|
394
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 4
|
395
|
+
WaterSystems:Gas, !- Variable or Meter 5 Name
|
396
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 5
|
397
|
+
Cogeneration:Gas, !- Variable or Meter 6 Name
|
398
|
+
SumOrAverage; !- Aggregation Type for Variable or Meter 6
|
399
|
+
|
400
|
+
Output:Table:Monthly,
|
401
|
+
Building Energy Performance - District Heating, !- Name
|
402
|
+
2, !- Digits After Decimal
|
403
|
+
InteriorLights:DistrictHeating, !- Variable or Meter 1 Name
|
404
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 1
|
405
|
+
ExteriorLights:DistrictHeating, !- Variable or Meter 2 Name
|
406
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 2
|
407
|
+
InteriorEquipment:DistrictHeating, !- Variable or Meter 3 Name
|
408
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 3
|
409
|
+
ExteriorEquipment:DistrictHeating, !- Variable or Meter 4 Name
|
410
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 4
|
411
|
+
Fans:DistrictHeating, !- Variable or Meter 5 Name
|
412
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 5
|
413
|
+
Pumps:DistrictHeating, !- Variable or Meter 6 Name
|
414
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 6
|
415
|
+
Heating:DistrictHeating, !- Variable or Meter 7 Name
|
416
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 7
|
417
|
+
Cooling:DistrictHeating, !- Variable or Meter 8 Name
|
418
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 8
|
419
|
+
HeatRejection:DistrictHeating, !- Variable or Meter 9 Name
|
420
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 9
|
421
|
+
Humidifier:DistrictHeating, !- Variable or Meter 10 Name
|
422
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 10
|
423
|
+
HeatRecovery:DistrictHeating,!- Variable or Meter 11 Name
|
424
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 11
|
425
|
+
WaterSystems:DistrictHeating,!- Variable or Meter 12 Name
|
426
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 12
|
427
|
+
Cogeneration:DistrictHeating,!- Variable or Meter 13 Name
|
428
|
+
SumOrAverage; !- Aggregation Type for Variable or Meter 13
|
429
|
+
|
430
|
+
Output:Table:Monthly,
|
431
|
+
Building Energy Performance - District Cooling, !- Name
|
432
|
+
2, !- Digits After Decimal
|
433
|
+
InteriorLights:DistrictCooling, !- Variable or Meter 1 Name
|
434
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 1
|
435
|
+
ExteriorLights:DistrictCooling, !- Variable or Meter 2 Name
|
436
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 2
|
437
|
+
InteriorEquipment:DistrictCooling, !- Variable or Meter 3 Name
|
438
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 3
|
439
|
+
ExteriorEquipment:DistrictCooling, !- Variable or Meter 4 Name
|
440
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 4
|
441
|
+
Fans:DistrictCooling, !- Variable or Meter 5 Name
|
442
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 5
|
443
|
+
Pumps:DistrictCooling, !- Variable or Meter 6 Name
|
444
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 6
|
445
|
+
Heating:DistrictCooling, !- Variable or Meter 7 Name
|
446
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 7
|
447
|
+
Cooling:DistrictCooling, !- Variable or Meter 8 Name
|
448
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 8
|
449
|
+
HeatRejection:DistrictCooling, !- Variable or Meter 9 Name
|
450
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 9
|
451
|
+
Humidifier:DistrictCooling, !- Variable or Meter 10 Name
|
452
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 10
|
453
|
+
HeatRecovery:DistrictCooling,!- Variable or Meter 11 Name
|
454
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 11
|
455
|
+
WaterSystems:DistrictCooling,!- Variable or Meter 12 Name
|
456
|
+
SumOrAverage, !- Aggregation Type for Variable or Meter 12
|
457
|
+
Cogeneration:DistrictCooling,!- Variable or Meter 13 Name
|
458
|
+
SumOrAverage; !- Aggregation Type for Variable or Meter 13
|
459
|
+
|
460
|
+
Output:Table:Monthly,
|
461
|
+
Building Energy Performance - Electricity Peak Demand, !- Name
|
462
|
+
2, !- Digits After Decimal
|
463
|
+
Electricity:Facility, !- Variable or Meter 1 Name
|
464
|
+
Maximum, !- Aggregation Type for Variable or Meter 1
|
465
|
+
InteriorLights:Electricity, !- Variable or Meter 1 Name
|
466
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
|
467
|
+
ExteriorLights:Electricity, !- Variable or Meter 2 Name
|
468
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
|
469
|
+
InteriorEquipment:Electricity, !- Variable or Meter 3 Name
|
470
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
|
471
|
+
ExteriorEquipment:Electricity, !- Variable or Meter 4 Name
|
472
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
|
473
|
+
Fans:Electricity, !- Variable or Meter 5 Name
|
474
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
|
475
|
+
Pumps:Electricity, !- Variable or Meter 6 Name
|
476
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
|
477
|
+
Heating:Electricity, !- Variable or Meter 7 Name
|
478
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
|
479
|
+
Cooling:Electricity, !- Variable or Meter 8 Name
|
480
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
|
481
|
+
HeatRejection:Electricity, !- Variable or Meter 9 Name
|
482
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
|
483
|
+
Humidifier:Electricity, !- Variable or Meter 10 Name
|
484
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
|
485
|
+
HeatRecovery:Electricity,!- Variable or Meter 11 Name
|
486
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
|
487
|
+
WaterSystems:Electricity,!- Variable or Meter 12 Name
|
488
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
|
489
|
+
Cogeneration:Electricity,!- Variable or Meter 13 Name
|
490
|
+
ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
|
491
|
+
|
492
|
+
Output:Table:Monthly,
|
493
|
+
Building Energy Performance - Natural Gas Peak Demand, !- Name
|
494
|
+
2, !- Digits After Decimal
|
495
|
+
Gas:Facility, !- Variable or Meter 1 Name
|
496
|
+
Maximum, !- Aggregation Type for Variable or Meter 1
|
497
|
+
InteriorEquipment:Gas, !- Variable or Meter 1 Name
|
498
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
|
499
|
+
ExteriorEquipment:Gas, !- Variable or Meter 2 Name
|
500
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
|
501
|
+
Heating:Gas, !- Variable or Meter 3 Name
|
502
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
|
503
|
+
Cooling:Gas, !- Variable or Meter 4 Name
|
504
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
|
505
|
+
WaterSystems:Gas, !- Variable or Meter 5 Name
|
506
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
|
507
|
+
Cogeneration:Gas, !- Variable or Meter 6 Name
|
508
|
+
ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 6
|
509
|
+
|
510
|
+
Output:Table:Monthly,
|
511
|
+
Building Energy Performance - District Heating Peak Demand, !- Name
|
512
|
+
2, !- Digits After Decimal
|
513
|
+
DistrictHeating:Facility, !- Variable or Meter 1 Name
|
514
|
+
Maximum, !- Aggregation Type for Variable or Meter 1
|
515
|
+
InteriorLights:DistrictHeating, !- Variable or Meter 1 Name
|
516
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
|
517
|
+
ExteriorLights:DistrictHeating, !- Variable or Meter 2 Name
|
518
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
|
519
|
+
InteriorEquipment:DistrictHeating, !- Variable or Meter 3 Name
|
520
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
|
521
|
+
ExteriorEquipment:DistrictHeating, !- Variable or Meter 4 Name
|
522
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
|
523
|
+
Fans:DistrictHeating, !- Variable or Meter 5 Name
|
524
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
|
525
|
+
Pumps:DistrictHeating, !- Variable or Meter 6 Name
|
526
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
|
527
|
+
Heating:DistrictHeating, !- Variable or Meter 7 Name
|
528
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
|
529
|
+
Cooling:DistrictHeating, !- Variable or Meter 8 Name
|
530
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
|
531
|
+
HeatRejection:DistrictHeating, !- Variable or Meter 9 Name
|
532
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
|
533
|
+
Humidifier:DistrictHeating, !- Variable or Meter 10 Name
|
534
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
|
535
|
+
HeatRecovery:DistrictHeating,!- Variable or Meter 11 Name
|
536
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
|
537
|
+
WaterSystems:DistrictHeating,!- Variable or Meter 12 Name
|
538
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
|
539
|
+
Cogeneration:DistrictHeating,!- Variable or Meter 13 Name
|
540
|
+
ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
|
541
|
+
|
542
|
+
Output:Table:Monthly,
|
543
|
+
Building Energy Performance - District Cooling Peak Demand, !- Name
|
544
|
+
2, !- Digits After Decimal
|
545
|
+
DistrictCooling:Facility, !- Variable or Meter 1 Name
|
546
|
+
Maximum, !- Aggregation Type for Variable or Meter 1
|
547
|
+
InteriorLights:DistrictCooling, !- Variable or Meter 1 Name
|
548
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
|
549
|
+
ExteriorLights:DistrictCooling, !- Variable or Meter 2 Name
|
550
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
|
551
|
+
InteriorEquipment:DistrictCooling, !- Variable or Meter 3 Name
|
552
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
|
553
|
+
ExteriorEquipment:DistrictCooling, !- Variable or Meter 4 Name
|
554
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
|
555
|
+
Fans:DistrictCooling, !- Variable or Meter 5 Name
|
556
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
|
557
|
+
Pumps:DistrictCooling, !- Variable or Meter 6 Name
|
558
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
|
559
|
+
Heating:DistrictCooling, !- Variable or Meter 7 Name
|
560
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
|
561
|
+
Cooling:DistrictCooling, !- Variable or Meter 8 Name
|
562
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
|
563
|
+
HeatRejection:DistrictCooling, !- Variable or Meter 9 Name
|
564
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
|
565
|
+
Humidifier:DistrictCooling, !- Variable or Meter 10 Name
|
566
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
|
567
|
+
HeatRecovery:DistrictCooling,!- Variable or Meter 11 Name
|
568
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
|
569
|
+
WaterSystems:DistrictCooling,!- Variable or Meter 12 Name
|
570
|
+
ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
|
571
|
+
Cogeneration:DistrictCooling,!- Variable or Meter 13 Name
|
572
|
+
ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
|
573
|
+
HEREDOC
|
571
574
|
end
|
572
575
|
end
|
573
576
|
end
|