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.
Files changed (33) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +10 -10
  4. data/Rakefile +2 -0
  5. data/lib/openstudio-workflow.rb +2 -0
  6. data/lib/openstudio/workflow/adapters/input/local.rb +3 -0
  7. data/lib/openstudio/workflow/adapters/output/local.rb +3 -0
  8. data/lib/openstudio/workflow/adapters/output/socket.rb +2 -0
  9. data/lib/openstudio/workflow/adapters/output/web.rb +2 -0
  10. data/lib/openstudio/workflow/adapters/output_adapter.rb +4 -0
  11. data/lib/openstudio/workflow/job.rb +2 -0
  12. data/lib/openstudio/workflow/jobs/run_energyplus.rb +6 -3
  13. data/lib/openstudio/workflow/jobs/run_ep_measures.rb +5 -2
  14. data/lib/openstudio/workflow/jobs/run_initialization.rb +6 -3
  15. data/lib/openstudio/workflow/jobs/run_os_measures.rb +5 -2
  16. data/lib/openstudio/workflow/jobs/run_postprocess.rb +2 -0
  17. data/lib/openstudio/workflow/jobs/run_preprocess.rb +7 -4
  18. data/lib/openstudio/workflow/jobs/run_reporting_measures.rb +4 -0
  19. data/lib/openstudio/workflow/jobs/run_translation.rb +7 -4
  20. data/lib/openstudio/workflow/multi_delegator.rb +2 -0
  21. data/lib/openstudio/workflow/registry.rb +5 -0
  22. data/lib/openstudio/workflow/run.rb +4 -2
  23. data/lib/openstudio/workflow/time_logger.rb +2 -0
  24. data/lib/openstudio/workflow/util.rb +2 -0
  25. data/lib/openstudio/workflow/util/energyplus.rb +229 -226
  26. data/lib/openstudio/workflow/util/io.rb +2 -0
  27. data/lib/openstudio/workflow/util/model.rb +4 -0
  28. data/lib/openstudio/workflow/util/post_process.rb +4 -1
  29. data/lib/openstudio/workflow/util/weather_file.rb +5 -0
  30. data/lib/openstudio/workflow/version.rb +3 -1
  31. data/lib/openstudio/workflow_json.rb +5 -0
  32. data/lib/openstudio/workflow_runner.rb +4 -0
  33. metadata +56 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fb02ff2b9ba68076ad3bd7bdd0b07a790db0a90e
4
- data.tar.gz: 84f8b7b245040cbef4aae3b45a5b2fe973f0ace8
2
+ SHA256:
3
+ metadata.gz: d42b6a8aa0ff9fe8589c86c4861161d90a0b346c716871f134722e0c2a660d46
4
+ data.tar.gz: c11ab23043dbc0b42db813661e9658efa942a27ac87e20cabd7947b5f3aa757c
5
5
  SHA512:
6
- metadata.gz: 466afdf8aaea899d0567f97c1df7674b5a80af09ebc3044410cc3f6a752952e3d65fc9c281aea0480bdfdc13b239819ed4eab4e5d251d194f915929131741e4b
7
- data.tar.gz: 7c8f671a81404622f1257077cd24bfd77ab405efe4ec1d6fc8fe45688ed9905509005d27f55658dedecbc46be020c695ac41bc18431be7a22e355775499a6bc3
6
+ metadata.gz: d1ce7d5b9c49af0b765bd3ab0287eb8598f2f126ae778d32bd4d6425aa2d89ed7b8b7a7e3fa0e7a47fe3c7188b66698ffb00318a40ceddb0dff032991b7ebcd0
7
+ data.tar.gz: 9ea3be0074c46862e80e01931e2f89ec8a7443862493d021da3c0a735c00598e24d79f965fc052086aa859435a38ec4088b99b5b509ddde7e87c001c6f2c8bba
@@ -1,6 +1,12 @@
1
1
  OpenStudio::Workflow Change Log
2
2
  ==================================
3
3
 
4
+ Version 2.0.0 (Unreleased)
5
+ --------------------------
6
+
7
+ * Support Ruby > 2.5
8
+ * Support OpenStudio 3.x
9
+
4
10
  Version 1.3.5
5
11
  -------------
6
12
 
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.2.4
13
- * OpenStudio 2.x
12
+ * Ruby 2.5.5
13
+ * OpenStudio 3.x
14
14
 
15
- [OpenStudio](http://developer.nrel.gov/downloads/buildings/openstudio/builds/) 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 2.9.1 installed:
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-2.9.1/Ruby
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=2.9.1
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
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
  Bundler.setup
3
5
 
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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
- ep_path = @options[:energyplus_path] ? @options[:energyplus_path] : nil
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].start('Running EnergyPlus') if @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].stop('Running EnergyPlus') if @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
- @registry[:time_logger].start('Saving IDF') if @registry[:time_logger]
68
+
69
+ @registry[:time_logger]&.start('Saving IDF')
67
70
  idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
68
- @registry[:time_logger].stop('Saving IDF') if @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
- if @registry[:model]
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
- @registry[:time_logger].start('Saving OSM') if @registry[:time_logger]
84
+
85
+ @registry[:time_logger]&.start('Saving OSM')
83
86
  osm_name = save_osm(@registry[:model], @registry[:root_dir])
84
- @registry[:time_logger].stop('Saving OSM') if @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.
@@ -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].start('Running EnergyPlus Preprocess') if @registry[:time_logger]
83
+ @registry[:time_logger]&.start('Running EnergyPlus Preprocess')
82
84
  energyplus_preprocess(@registry[:model_idf], @logger)
83
- @registry[:time_logger].start('Running EnergyPlus Preprocess') if @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
- @registry[:time_logger].start('Saving IDF') if @registry[:time_logger]
99
+
100
+ @registry[:time_logger]&.start('Saving IDF')
98
101
  idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
99
- @registry[:time_logger].stop('Saving IDF') if @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].start('Translating to EnergyPlus') if @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].stop('Translating to EnergyPlus') if @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
- @registry[:time_logger].start('Saving IDF') if @registry[:time_logger]
79
+
80
+ @registry[:time_logger]&.start('Saving IDF')
78
81
  idf_name = save_idf(@registry[:model_idf], @registry[:root_dir])
79
- @registry[:time_logger].stop('Saving IDF') if @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.
@@ -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].setCompletedStatus('Fail') if @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].save(File.join(@registry[:run_dir], 'profile.json')) if @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.
@@ -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.
@@ -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.communicate_energyplus_stdout(line) if 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
- <<-HEREDOC
349
- Output:Table:Monthly,
350
- Building Energy Performance - Electricity, !- Name
351
- 2, !- Digits After Decimal
352
- InteriorLights:Electricity, !- Variable or Meter 1 Name
353
- SumOrAverage, !- Aggregation Type for Variable or Meter 1
354
- ExteriorLights:Electricity, !- Variable or Meter 2 Name
355
- SumOrAverage, !- Aggregation Type for Variable or Meter 2
356
- InteriorEquipment:Electricity, !- Variable or Meter 3 Name
357
- SumOrAverage, !- Aggregation Type for Variable or Meter 3
358
- ExteriorEquipment:Electricity, !- Variable or Meter 4 Name
359
- SumOrAverage, !- Aggregation Type for Variable or Meter 4
360
- Fans:Electricity, !- Variable or Meter 5 Name
361
- SumOrAverage, !- Aggregation Type for Variable or Meter 5
362
- Pumps:Electricity, !- Variable or Meter 6 Name
363
- SumOrAverage, !- Aggregation Type for Variable or Meter 6
364
- Heating:Electricity, !- Variable or Meter 7 Name
365
- SumOrAverage, !- Aggregation Type for Variable or Meter 7
366
- Cooling:Electricity, !- Variable or Meter 8 Name
367
- SumOrAverage, !- Aggregation Type for Variable or Meter 8
368
- HeatRejection:Electricity, !- Variable or Meter 9 Name
369
- SumOrAverage, !- Aggregation Type for Variable or Meter 9
370
- Humidifier:Electricity, !- Variable or Meter 10 Name
371
- SumOrAverage, !- Aggregation Type for Variable or Meter 10
372
- HeatRecovery:Electricity,!- Variable or Meter 11 Name
373
- SumOrAverage, !- Aggregation Type for Variable or Meter 11
374
- WaterSystems:Electricity,!- Variable or Meter 12 Name
375
- SumOrAverage, !- Aggregation Type for Variable or Meter 12
376
- Cogeneration:Electricity,!- Variable or Meter 13 Name
377
- SumOrAverage, !- Aggregation Type for Variable or Meter 13
378
- Refrigeration:Electricity,!- Variable or Meter 14 Name
379
- SumOrAverage; !- Aggregation Type for Variable or Meter 14
380
-
381
- Output:Table:Monthly,
382
- Building Energy Performance - Natural Gas, !- Name
383
- 2, !- Digits After Decimal
384
- InteriorEquipment:Gas, !- Variable or Meter 1 Name
385
- SumOrAverage, !- Aggregation Type for Variable or Meter 1
386
- ExteriorEquipment:Gas, !- Variable or Meter 2 Name
387
- SumOrAverage, !- Aggregation Type for Variable or Meter 2
388
- Heating:Gas, !- Variable or Meter 3 Name
389
- SumOrAverage, !- Aggregation Type for Variable or Meter 3
390
- Cooling:Gas, !- Variable or Meter 4 Name
391
- SumOrAverage, !- Aggregation Type for Variable or Meter 4
392
- WaterSystems:Gas, !- Variable or Meter 5 Name
393
- SumOrAverage, !- Aggregation Type for Variable or Meter 5
394
- Cogeneration:Gas, !- Variable or Meter 6 Name
395
- SumOrAverage; !- Aggregation Type for Variable or Meter 6
396
-
397
- Output:Table:Monthly,
398
- Building Energy Performance - District Heating, !- Name
399
- 2, !- Digits After Decimal
400
- InteriorLights:DistrictHeating, !- Variable or Meter 1 Name
401
- SumOrAverage, !- Aggregation Type for Variable or Meter 1
402
- ExteriorLights:DistrictHeating, !- Variable or Meter 2 Name
403
- SumOrAverage, !- Aggregation Type for Variable or Meter 2
404
- InteriorEquipment:DistrictHeating, !- Variable or Meter 3 Name
405
- SumOrAverage, !- Aggregation Type for Variable or Meter 3
406
- ExteriorEquipment:DistrictHeating, !- Variable or Meter 4 Name
407
- SumOrAverage, !- Aggregation Type for Variable or Meter 4
408
- Fans:DistrictHeating, !- Variable or Meter 5 Name
409
- SumOrAverage, !- Aggregation Type for Variable or Meter 5
410
- Pumps:DistrictHeating, !- Variable or Meter 6 Name
411
- SumOrAverage, !- Aggregation Type for Variable or Meter 6
412
- Heating:DistrictHeating, !- Variable or Meter 7 Name
413
- SumOrAverage, !- Aggregation Type for Variable or Meter 7
414
- Cooling:DistrictHeating, !- Variable or Meter 8 Name
415
- SumOrAverage, !- Aggregation Type for Variable or Meter 8
416
- HeatRejection:DistrictHeating, !- Variable or Meter 9 Name
417
- SumOrAverage, !- Aggregation Type for Variable or Meter 9
418
- Humidifier:DistrictHeating, !- Variable or Meter 10 Name
419
- SumOrAverage, !- Aggregation Type for Variable or Meter 10
420
- HeatRecovery:DistrictHeating,!- Variable or Meter 11 Name
421
- SumOrAverage, !- Aggregation Type for Variable or Meter 11
422
- WaterSystems:DistrictHeating,!- Variable or Meter 12 Name
423
- SumOrAverage, !- Aggregation Type for Variable or Meter 12
424
- Cogeneration:DistrictHeating,!- Variable or Meter 13 Name
425
- SumOrAverage; !- Aggregation Type for Variable or Meter 13
426
-
427
- Output:Table:Monthly,
428
- Building Energy Performance - District Cooling, !- Name
429
- 2, !- Digits After Decimal
430
- InteriorLights:DistrictCooling, !- Variable or Meter 1 Name
431
- SumOrAverage, !- Aggregation Type for Variable or Meter 1
432
- ExteriorLights:DistrictCooling, !- Variable or Meter 2 Name
433
- SumOrAverage, !- Aggregation Type for Variable or Meter 2
434
- InteriorEquipment:DistrictCooling, !- Variable or Meter 3 Name
435
- SumOrAverage, !- Aggregation Type for Variable or Meter 3
436
- ExteriorEquipment:DistrictCooling, !- Variable or Meter 4 Name
437
- SumOrAverage, !- Aggregation Type for Variable or Meter 4
438
- Fans:DistrictCooling, !- Variable or Meter 5 Name
439
- SumOrAverage, !- Aggregation Type for Variable or Meter 5
440
- Pumps:DistrictCooling, !- Variable or Meter 6 Name
441
- SumOrAverage, !- Aggregation Type for Variable or Meter 6
442
- Heating:DistrictCooling, !- Variable or Meter 7 Name
443
- SumOrAverage, !- Aggregation Type for Variable or Meter 7
444
- Cooling:DistrictCooling, !- Variable or Meter 8 Name
445
- SumOrAverage, !- Aggregation Type for Variable or Meter 8
446
- HeatRejection:DistrictCooling, !- Variable or Meter 9 Name
447
- SumOrAverage, !- Aggregation Type for Variable or Meter 9
448
- Humidifier:DistrictCooling, !- Variable or Meter 10 Name
449
- SumOrAverage, !- Aggregation Type for Variable or Meter 10
450
- HeatRecovery:DistrictCooling,!- Variable or Meter 11 Name
451
- SumOrAverage, !- Aggregation Type for Variable or Meter 11
452
- WaterSystems:DistrictCooling,!- Variable or Meter 12 Name
453
- SumOrAverage, !- Aggregation Type for Variable or Meter 12
454
- Cogeneration:DistrictCooling,!- Variable or Meter 13 Name
455
- SumOrAverage; !- Aggregation Type for Variable or Meter 13
456
-
457
- Output:Table:Monthly,
458
- Building Energy Performance - Electricity Peak Demand, !- Name
459
- 2, !- Digits After Decimal
460
- Electricity:Facility, !- Variable or Meter 1 Name
461
- Maximum, !- Aggregation Type for Variable or Meter 1
462
- InteriorLights:Electricity, !- Variable or Meter 1 Name
463
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
464
- ExteriorLights:Electricity, !- Variable or Meter 2 Name
465
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
466
- InteriorEquipment:Electricity, !- Variable or Meter 3 Name
467
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
468
- ExteriorEquipment:Electricity, !- Variable or Meter 4 Name
469
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
470
- Fans:Electricity, !- Variable or Meter 5 Name
471
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
472
- Pumps:Electricity, !- Variable or Meter 6 Name
473
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
474
- Heating:Electricity, !- Variable or Meter 7 Name
475
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
476
- Cooling:Electricity, !- Variable or Meter 8 Name
477
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
478
- HeatRejection:Electricity, !- Variable or Meter 9 Name
479
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
480
- Humidifier:Electricity, !- Variable or Meter 10 Name
481
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
482
- HeatRecovery:Electricity,!- Variable or Meter 11 Name
483
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
484
- WaterSystems:Electricity,!- Variable or Meter 12 Name
485
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
486
- Cogeneration:Electricity,!- Variable or Meter 13 Name
487
- ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
488
-
489
- Output:Table:Monthly,
490
- Building Energy Performance - Natural Gas Peak Demand, !- Name
491
- 2, !- Digits After Decimal
492
- Gas:Facility, !- Variable or Meter 1 Name
493
- Maximum, !- Aggregation Type for Variable or Meter 1
494
- InteriorEquipment:Gas, !- Variable or Meter 1 Name
495
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
496
- ExteriorEquipment:Gas, !- Variable or Meter 2 Name
497
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
498
- Heating:Gas, !- Variable or Meter 3 Name
499
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
500
- Cooling:Gas, !- Variable or Meter 4 Name
501
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
502
- WaterSystems:Gas, !- Variable or Meter 5 Name
503
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
504
- Cogeneration:Gas, !- Variable or Meter 6 Name
505
- ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 6
506
-
507
- Output:Table:Monthly,
508
- Building Energy Performance - District Heating Peak Demand, !- Name
509
- 2, !- Digits After Decimal
510
- DistrictHeating:Facility, !- Variable or Meter 1 Name
511
- Maximum, !- Aggregation Type for Variable or Meter 1
512
- InteriorLights:DistrictHeating, !- Variable or Meter 1 Name
513
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
514
- ExteriorLights:DistrictHeating, !- Variable or Meter 2 Name
515
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
516
- InteriorEquipment:DistrictHeating, !- Variable or Meter 3 Name
517
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
518
- ExteriorEquipment:DistrictHeating, !- Variable or Meter 4 Name
519
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
520
- Fans:DistrictHeating, !- Variable or Meter 5 Name
521
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
522
- Pumps:DistrictHeating, !- Variable or Meter 6 Name
523
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
524
- Heating:DistrictHeating, !- Variable or Meter 7 Name
525
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
526
- Cooling:DistrictHeating, !- Variable or Meter 8 Name
527
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
528
- HeatRejection:DistrictHeating, !- Variable or Meter 9 Name
529
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
530
- Humidifier:DistrictHeating, !- Variable or Meter 10 Name
531
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
532
- HeatRecovery:DistrictHeating,!- Variable or Meter 11 Name
533
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
534
- WaterSystems:DistrictHeating,!- Variable or Meter 12 Name
535
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
536
- Cogeneration:DistrictHeating,!- Variable or Meter 13 Name
537
- ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
538
-
539
- Output:Table:Monthly,
540
- Building Energy Performance - District Cooling Peak Demand, !- Name
541
- 2, !- Digits After Decimal
542
- DistrictCooling:Facility, !- Variable or Meter 1 Name
543
- Maximum, !- Aggregation Type for Variable or Meter 1
544
- InteriorLights:DistrictCooling, !- Variable or Meter 1 Name
545
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 1
546
- ExteriorLights:DistrictCooling, !- Variable or Meter 2 Name
547
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 2
548
- InteriorEquipment:DistrictCooling, !- Variable or Meter 3 Name
549
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 3
550
- ExteriorEquipment:DistrictCooling, !- Variable or Meter 4 Name
551
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 4
552
- Fans:DistrictCooling, !- Variable or Meter 5 Name
553
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 5
554
- Pumps:DistrictCooling, !- Variable or Meter 6 Name
555
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 6
556
- Heating:DistrictCooling, !- Variable or Meter 7 Name
557
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 7
558
- Cooling:DistrictCooling, !- Variable or Meter 8 Name
559
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 8
560
- HeatRejection:DistrictCooling, !- Variable or Meter 9 Name
561
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 9
562
- Humidifier:DistrictCooling, !- Variable or Meter 10 Name
563
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 10
564
- HeatRecovery:DistrictCooling,!- Variable or Meter 11 Name
565
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 11
566
- WaterSystems:DistrictCooling,!- Variable or Meter 12 Name
567
- ValueWhenMaximumOrMinimum, !- Aggregation Type for Variable or Meter 12
568
- Cogeneration:DistrictCooling,!- Variable or Meter 13 Name
569
- ValueWhenMaximumOrMinimum; !- Aggregation Type for Variable or Meter 13
570
- HEREDOC
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