openstudio-workflow 1.3.5 → 2.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
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