openstudio-common-measures 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -1
  3. data/README.md +7 -2
  4. data/doc_templates/copyright_erb.txt +1 -1
  5. data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.xml +2 -8
  6. data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.xml +9 -3
  7. data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.xml +2 -2
  8. data/lib/measures/RemoveUnusedDefaultProfiles/measure.xml +2 -2
  9. data/lib/measures/ReportModelChanges/measure.xml +2 -2
  10. data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.xml +4 -4
  11. data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.xml +4 -4
  12. data/lib/measures/SetGasBurnerEfficiency/measure.xml +4 -4
  13. data/lib/measures/ShiftScheduleProfileTime/measure.xml +4 -4
  14. data/lib/measures/SwapLightsDefinition/measure.xml +3 -5
  15. data/lib/measures/add_ems_emissions_reporting/measure.rb +236 -29
  16. data/lib/measures/add_ems_emissions_reporting/measure.xml +362 -10
  17. data/lib/measures/add_ev_load/measure.rb +51 -8
  18. data/lib/measures/add_ev_load/measure.xml +23 -5
  19. data/lib/measures/envelope_and_internal_load_breakdown/measure.xml +3 -3
  20. data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +5 -1
  21. data/lib/measures/example_report/measure.xml +3 -3
  22. data/lib/measures/example_report/resources/report.html.erb +5 -1
  23. data/lib/measures/generic_qaqc/README.md +19 -4
  24. data/lib/measures/generic_qaqc/README.md.erb +7 -1
  25. data/lib/measures/generic_qaqc/docs/generic_qaqc_detailed.jpg +0 -0
  26. data/lib/measures/generic_qaqc/docs/generic_qaqc_summary.jpg +0 -0
  27. data/lib/measures/generic_qaqc/measure.rb +34 -29
  28. data/lib/measures/generic_qaqc/measure.xml +181 -82
  29. data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +3 -1
  30. data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +13 -8
  31. data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +330 -231
  32. data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +59 -20
  33. data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +58 -20
  34. data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +57 -56
  35. data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +4 -1
  36. data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +27 -22
  37. data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +4 -1
  38. data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +3 -3
  39. data/lib/measures/generic_qaqc/resources/check_schedules.rb +65 -101
  40. data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +3 -1
  41. data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +3 -1
  42. data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +49 -15
  43. data/lib/measures/generic_qaqc/resources/report.html.erb +5 -1
  44. data/lib/measures/hvac_psychrometric_chart/measure.xml +3 -3
  45. data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +5 -1
  46. data/lib/measures/openstudio_results/measure.xml +3 -3
  47. data/lib/measures/openstudio_results/resources/report.html.erb +5 -1
  48. data/lib/measures/set_run_period/measure.xml +2 -2
  49. data/lib/measures/view_data/measure.xml +4 -4
  50. data/lib/measures/view_data/resources/report.html.in +189 -19
  51. data/lib/measures/view_data/resources/va3c.rb +1 -0
  52. data/lib/measures/view_model/measure.xml +9 -9
  53. data/lib/measures/view_model/resources/report.html.in +189 -19
  54. data/lib/measures/view_model/resources/va3c.rb +1 -0
  55. data/lib/openstudio/common_measures/version.rb +1 -1
  56. data/openstudio-common-measures.gemspec +1 -1
  57. metadata +7 -5
@@ -59,50 +59,152 @@ class AddEMSEmissionsReporting < OpenStudio::Measure::ModelMeasure
59
59
  args = OpenStudio::Measure::OSArgumentVector.new
60
60
 
61
61
  # future subregion
62
- future_subregion = OpenStudio::Measure::OSArgument.makeStringArgument('future_subregion', true)
62
+ future_subregion_chs = OpenStudio::StringVector.new
63
+ future_subregion_chs << 'AZNMc'
64
+ future_subregion_chs << 'CAMXc'
65
+ future_subregion_chs << 'ERCTc'
66
+ future_subregion_chs << 'FRCCc'
67
+ future_subregion_chs << 'MROEc'
68
+ future_subregion_chs << 'MROWc'
69
+ future_subregion_chs << 'NEWEc'
70
+ future_subregion_chs << 'NWPPc'
71
+ future_subregion_chs << 'NYSTc'
72
+ future_subregion_chs << 'RFCEc'
73
+ future_subregion_chs << 'RFCMc'
74
+ future_subregion_chs << 'RFCWc'
75
+ future_subregion_chs << 'RMPAc'
76
+ future_subregion_chs << 'SPNOc'
77
+ future_subregion_chs << 'SPSOc'
78
+ future_subregion_chs << 'SRMVc'
79
+ future_subregion_chs << 'SRMWc'
80
+ future_subregion_chs << 'SRSOc'
81
+ future_subregion_chs << 'SRTVc'
82
+ future_subregion_chs << 'SRVCc'
83
+
84
+ future_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('future_subregion', future_subregion_chs, true)
63
85
  future_subregion.setDisplayName('Future subregion')
64
86
  future_subregion.setDescription('Future subregion. Options are: AZNMc, CAMXc, ERCTc, FRCCc, MROEc, MROWc, NEWEc, NWPPc, NYSTc, RFCEc, RFCMc, RFCWc, RMPAc, SPNOc, SPSOc, SRMVc, SRMWc, SRSOc, SRTVc, and SRVCc')
65
87
  future_subregion.setDefaultValue('RMPAc')
66
88
  args << future_subregion
67
89
 
68
90
  # historical hourly subregion
69
- hourly_historical_subregion = OpenStudio::Measure::OSArgument.makeStringArgument('hourly_historical_subregion', true)
91
+ hourly_historical_subregion_chs = OpenStudio::StringVector.new
92
+ hourly_historical_subregion_chs << 'California'
93
+ hourly_historical_subregion_chs << 'Carolinas'
94
+ hourly_historical_subregion_chs << 'Central'
95
+ hourly_historical_subregion_chs << 'Florida'
96
+ hourly_historical_subregion_chs << 'Mid-Atlantic'
97
+ hourly_historical_subregion_chs << 'Midwest'
98
+ hourly_historical_subregion_chs << 'New England'
99
+ hourly_historical_subregion_chs << 'New York'
100
+ hourly_historical_subregion_chs << 'Northwest'
101
+ hourly_historical_subregion_chs << 'Rocky Mountains'
102
+ hourly_historical_subregion_chs << 'Southeast'
103
+ hourly_historical_subregion_chs << 'Southwest'
104
+ hourly_historical_subregion_chs << 'Tennessee'
105
+ hourly_historical_subregion_chs << 'Texas'
106
+
107
+ hourly_historical_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('hourly_historical_subregion', hourly_historical_subregion_chs, true)
70
108
  hourly_historical_subregion.setDisplayName('Historical hourly subregion')
71
109
  hourly_historical_subregion.setDescription('Historical hourly subregion. Options are: California, Carolinas, Central, Florida, Mid-Atlantic, Midwest, New England, New York, Northwest, Rocky Mountains, Southeast, Southwest, Tennessee, and Texas')
72
110
  hourly_historical_subregion.setDefaultValue('Rocky Mountains')
73
111
  args << hourly_historical_subregion
74
112
 
75
113
  # historical annual subregion
76
- annual_historical_subregion = OpenStudio::Measure::OSArgument.makeStringArgument('annual_historical_subregion', true)
114
+ annual_historical_subregion_chs = OpenStudio::StringVector.new
115
+ annual_historical_subregion_chs << 'AKGD'
116
+ annual_historical_subregion_chs << 'AKMS'
117
+ annual_historical_subregion_chs << 'AZNM'
118
+ annual_historical_subregion_chs << 'CAMX'
119
+ annual_historical_subregion_chs << 'ERCT'
120
+ annual_historical_subregion_chs << 'FRCC'
121
+ annual_historical_subregion_chs << 'HIMS'
122
+ annual_historical_subregion_chs << 'HIOA'
123
+ annual_historical_subregion_chs << 'MROE'
124
+ annual_historical_subregion_chs << 'MROW'
125
+ annual_historical_subregion_chs << 'NEWE'
126
+ annual_historical_subregion_chs << 'NWPP'
127
+ annual_historical_subregion_chs << 'NYCW'
128
+ annual_historical_subregion_chs << 'NYLI'
129
+ annual_historical_subregion_chs << 'NYUP'
130
+ annual_historical_subregion_chs << 'RFCE'
131
+ annual_historical_subregion_chs << 'RFCM'
132
+ annual_historical_subregion_chs << 'RFCW'
133
+ annual_historical_subregion_chs << 'RMPA'
134
+ annual_historical_subregion_chs << 'SPNO'
135
+ annual_historical_subregion_chs << 'SPSO'
136
+ annual_historical_subregion_chs << 'SRMV'
137
+ annual_historical_subregion_chs << 'SRMW'
138
+ annual_historical_subregion_chs << 'SRSO'
139
+ annual_historical_subregion_chs << 'SRTV'
140
+ annual_historical_subregion_chs << 'SRVC'
141
+
142
+ annual_historical_subregion = OpenStudio::Measure::OSArgument.makeChoiceArgument('annual_historical_subregion', annual_historical_subregion_chs, true)
77
143
  annual_historical_subregion.setDisplayName('Historical annual subregion')
78
144
  annual_historical_subregion.setDescription('Historical annual subregion. Options are: AKGD, AKMS, AZNM, CAMX, ERCT, FRCC, HIMS, HIOA, MROE, MROW, NEWE, NWPP, NYCW, NYLI, NYUP, RFCE, RFCM, RFCW, RMPA, SPNO, SPSO, SRMV, SRMW, SRSO, SRTV, and SRVC')
79
145
  annual_historical_subregion.setDefaultValue('RMPA')
80
146
  args << annual_historical_subregion
81
147
 
82
148
  # future year
83
- future_year = OpenStudio::Measure::OSArgument.makeIntegerArgument('future_year', true)
149
+ future_year_chs = OpenStudio::StringVector.new
150
+ future_year_chs << '2020'
151
+ future_year_chs << '2022'
152
+ future_year_chs << '2024'
153
+ future_year_chs << '2026'
154
+ future_year_chs << '2028'
155
+ future_year_chs << '2030'
156
+ future_year_chs << '2032'
157
+ future_year_chs << '2034'
158
+ future_year_chs << '2036'
159
+ future_year_chs << '2038'
160
+ future_year_chs << '2040'
161
+ future_year_chs << '2042'
162
+ future_year_chs << '2044'
163
+ future_year_chs << '2046'
164
+ future_year_chs << '2048'
165
+ future_year_chs << '2050'
166
+
167
+
168
+ future_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('future_year', future_year_chs, true)
84
169
  future_year.setDisplayName('Future Year')
85
170
  future_year.setDescription('Future Year. Options are: 2020 to 2050 in two year increments')
86
- future_year.setDefaultValue(2020)
171
+ future_year.setDefaultValue('2020')
87
172
  args << future_year
88
173
 
89
174
  # hourly historical year
90
- hourly_historical_year = OpenStudio::Measure::OSArgument.makeIntegerArgument('hourly_historical_year', true)
175
+ hourly_historical_year_chs = OpenStudio::StringVector.new
176
+ hourly_historical_year_chs << '2019'
177
+
178
+ hourly_historical_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('hourly_historical_year', hourly_historical_year_chs, true)
91
179
  hourly_historical_year.setDisplayName('Hourly Historical Year')
92
180
  hourly_historical_year.setDescription('Hourly Historical Year. Options are: 2019.')
93
- hourly_historical_year.setDefaultValue(2019)
181
+ hourly_historical_year.setDefaultValue('2019')
94
182
  args << hourly_historical_year
95
183
 
96
184
  # annual historical year
97
- annual_historical_year = OpenStudio::Measure::OSArgument.makeIntegerArgument('annual_historical_year', true)
185
+ annual_historical_year_chs = OpenStudio::StringVector.new
186
+ annual_historical_year_chs << '2007'
187
+ annual_historical_year_chs << '2009'
188
+ annual_historical_year_chs << '2010'
189
+ annual_historical_year_chs << '2012'
190
+ annual_historical_year_chs << '2014'
191
+ annual_historical_year_chs << '2016'
192
+ annual_historical_year_chs << '2018'
193
+ annual_historical_year_chs << '2019'
194
+
195
+ annual_historical_year = OpenStudio::Measure::OSArgument.makeChoiceArgument('annual_historical_year', annual_historical_year_chs, true)
196
+
197
+ #puts "annual_historical_year = #{annual_historical_year}"
198
+
98
199
  annual_historical_year.setDisplayName('Annual Historical Year')
99
200
  annual_historical_year.setDescription('Annual Historical Year. Options are: 2007, 2009, 2010, 2012, 2014, 2016, 2018, and 2019.')
100
- annual_historical_year.setDefaultValue(2019)
201
+ annual_historical_year.setDefaultValue('2019')
101
202
  args << annual_historical_year
102
203
 
103
204
  return args
104
205
  end
105
206
 
207
+
106
208
  # define what happens when the measure is run
107
209
  def run(model, runner, usr_args)
108
210
  super(model, runner, usr_args)
@@ -114,9 +216,43 @@ class AddEMSEmissionsReporting < OpenStudio::Measure::ModelMeasure
114
216
  future_subregion = runner.getStringArgumentValue('future_subregion', usr_args)
115
217
  hourly_historical_subregion = runner.getStringArgumentValue('hourly_historical_subregion', usr_args)
116
218
  annual_historical_subregion = runner.getStringArgumentValue('annual_historical_subregion', usr_args)
117
- future_year = runner.getIntegerArgumentValue('future_year', usr_args)
118
- hourly_historical_year = runner.getIntegerArgumentValue('hourly_historical_year', usr_args)
119
- annual_historical_year = runner.getIntegerArgumentValue('annual_historical_year', usr_args)
219
+ future_year = runner.getStringArgumentValue('future_year', usr_args).to_i
220
+ hourly_historical_year = runner.getStringArgumentValue('hourly_historical_year', usr_args).to_i
221
+ annual_historical_year = runner.getStringArgumentValue('annual_historical_year', usr_args).to_i
222
+
223
+ # log errors if users select arguments not supported by the measure
224
+ arguments(model).each do |argument|
225
+
226
+ case argument.name
227
+
228
+ when 'future_subregion'
229
+ if !argument.choiceValues.include? future_subregion
230
+ runner.registerError("#{future_subregion} is not a valid option. Please select from of the following future_subregion options #{argument.choiceValues}")
231
+ end
232
+ when 'hourly_historical_subregion'
233
+ if !argument.choiceValues.include? hourly_historical_subregion
234
+ runner.registerError("#{hourly_historical_subregion} is not a valid option. Please select from of the following hourly_historical_subregion options #{argument.choiceValues}")
235
+ end
236
+ when 'annual_historical_subregion'
237
+ if !argument.choiceValues.include? annual_historical_subregion
238
+ runner.registerError("#{annual_historical_subregion} is not a valid option. Please select from of the following annual_historical_subregion options #{argument.choiceValues}")
239
+ end
240
+ when 'future_year'
241
+ if !argument.choiceValues.include? future_year.to_s
242
+ runner.registerError("#{future_year} is not a valid option. Please select from of the following future_year options #{argument.choiceValues}")
243
+ end
244
+ when 'hourly_historical_year'
245
+ if !argument.choiceValues.include? hourly_historical_year.to_s
246
+ runner.registerError("#{hourly_historical_year} is not a valid option. Please select from of the following hourly_historical_year options #{argument.choiceValues}")
247
+ end
248
+ when 'annual_historical_year'
249
+ if !argument.choiceValues.include? annual_historical_year.to_s
250
+ runner.registerError("#{annual_historical_year} is not a valid option. Please select from of the following annual_historical_year options #{argument.choiceValues}")
251
+ end
252
+
253
+ end
254
+
255
+ end
120
256
 
121
257
  fut_hr_path = "#{__dir__}/resources/future_hourly_co2e_#{future_year}.csv"
122
258
  his_hr_path = "#{__dir__}/resources/historical_hourly_co2e_#{hourly_historical_year}.csv"
@@ -193,11 +329,23 @@ class AddEMSEmissionsReporting < OpenStudio::Measure::ModelMeasure
193
329
  his_yr_data.each {|r| ems_prgm.addLine("SET his_yr_val = #{r[annual_historical_subregion]}") if r[0].to_i == annual_historical_year}
194
330
  ems_prgm.addLine('SET elec = Ele_Sen')
195
331
  ems_prgm.addLine('SET conv = 1000000 * 60 * 60') # J to MWh (1000000J/MJ * 60hr/min * 60 min/sec)
196
- ems_prgm.addLine('SET fut_hr = fut_hr_val * elec / conv')
197
- ems_prgm.addLine('SET his_hr = his_hr_val * elec / conv')
198
- ems_prgm.addLine('SET fut_yr = fut_yr_val * elec / conv')
199
- ems_prgm.addLine('SET his_yr = his_yr_val * elec / conv')
200
-
332
+ ems_prgm.addLine('SET conv_kg_mt = 0.001') # kg to metric ton
333
+ ems_prgm.addLine('SET fut_hr = (fut_hr_val * elec / conv) * conv_kg_mt')
334
+ ems_prgm.addLine('SET his_hr = (his_hr_val * elec / conv) * conv_kg_mt')
335
+ ems_prgm.addLine('SET fut_yr = (fut_yr_val * elec / conv) * conv_kg_mt')
336
+ ems_prgm.addLine('SET his_yr = (his_yr_val * elec / conv) * conv_kg_mt')
337
+
338
+
339
+ #### add emissions intensity metric
340
+ # get building from model
341
+ building = model.getBuilding
342
+ floor_area = building.floorArea * 10.764 #change from m2 to ft2
343
+ #add metric
344
+ ems_prgm.addLine("SET fut_hr_intensity = fut_hr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
345
+ ems_prgm.addLine("SET his_hr_intensity = his_hr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
346
+ ems_prgm.addLine("SET fut_yr_intensity = fut_yr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
347
+ ems_prgm.addLine("SET his_yr_intensity = his_yr * 1000 / #{floor_area}") # unit: kg/ft2 - changed mt to kg
348
+
201
349
  # add EMS program calling manager
202
350
  mgr_prgm = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
203
351
  mgr_prgm.setName('Emissions Calc Prgm')
@@ -206,60 +354,119 @@ class AddEMSEmissionsReporting < OpenStudio::Measure::ModelMeasure
206
354
 
207
355
  # add future hourly EMS output variable
208
356
  ems_var1 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_hr')
209
- ems_var1.setName("#{future_subregion}_#{future_year}_Hourly_Emissions_Var")
357
+ ems_var1.setName('Future_Hourly_Emissions_Var')
210
358
  ems_var1.setEMSVariableName('fut_hr')
211
359
  ems_var1.setTypeOfDataInVariable('Summed')
212
360
  ems_var1.setUpdateFrequency('SystemTimestep')
213
361
  ems_var1.setEMSProgramOrSubroutineName(ems_prgm)
214
- ems_var1.setUnits('kg')
362
+ ems_var1.setUnits('mt')
215
363
 
216
364
  # add historical hourly EMS output variable
217
365
  ems_var2 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_hr')
218
- ems_var2.setName("#{hourly_historical_subregion.gsub(' ','_')}_#{hourly_historical_year}_Hourly_Emissions_Var")
366
+ ems_var2.setName('Historical_Hourly_Emissions_Var')
219
367
  ems_var2.setEMSVariableName('his_hr')
220
368
  ems_var2.setTypeOfDataInVariable('Summed')
221
369
  ems_var2.setUpdateFrequency('SystemTimestep')
222
370
  ems_var2.setEMSProgramOrSubroutineName(ems_prgm)
223
- ems_var2.setUnits('kg')
371
+ ems_var2.setUnits('mt')
224
372
 
225
373
  # add future annual EMS output variable
226
374
  ems_var3 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_yr')
227
- ems_var3.setName("#{future_subregion}_#{future_year}_Annual_Emissions_Var")
375
+ ems_var3.setName('Future_Annual_Emissions_Var')
228
376
  ems_var3.setEMSVariableName('fut_yr')
229
377
  ems_var3.setTypeOfDataInVariable('Summed')
230
378
  ems_var3.setUpdateFrequency('SystemTimestep')
231
379
  ems_var3.setEMSProgramOrSubroutineName(ems_prgm)
232
- ems_var3.setUnits('kg')
380
+ ems_var3.setUnits('mt')
233
381
 
234
382
  # add historical annual EMS output variable
235
383
  ems_var4 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_yr')
236
- ems_var4.setName("#{annual_historical_subregion}_#{annual_historical_year}_Annual_Emissions_Var")
384
+ ems_var4.setName('Historical_Annual_Emissions_Var')
237
385
  ems_var4.setEMSVariableName('his_yr')
238
386
  ems_var4.setTypeOfDataInVariable('Summed')
239
387
  ems_var4.setUpdateFrequency('SystemTimestep')
240
388
  ems_var4.setEMSProgramOrSubroutineName(ems_prgm)
241
- ems_var4.setUnits('kg')
389
+ ems_var4.setUnits('mt')
390
+
391
+
392
+ ##### add emissions intensity
393
+ # add future hourly EMS output variable
394
+ ems_var5 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_hr_intensity')
395
+ ems_var5.setName('Future_Hourly_Emissions_Intensity_Var')
396
+ ems_var5.setEMSVariableName('fut_hr_intensity')
397
+ ems_var5.setTypeOfDataInVariable('Summed')
398
+ ems_var5.setUpdateFrequency('SystemTimestep')
399
+ ems_var5.setEMSProgramOrSubroutineName(ems_prgm)
400
+ ems_var5.setUnits('kg/ft2')
401
+
402
+ # add historical hourly EMS output variable
403
+ ems_var6 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_hr_intensity')
404
+ ems_var6.setName('Historical_Hourly_Emissions_Intensity_Var')
405
+ ems_var6.setEMSVariableName('his_hr_intensity')
406
+ ems_var6.setTypeOfDataInVariable('Summed')
407
+ ems_var6.setUpdateFrequency('SystemTimestep')
408
+ ems_var6.setEMSProgramOrSubroutineName(ems_prgm)
409
+ ems_var6.setUnits('kg/ft2')
410
+
411
+ # add future annual EMS output variable
412
+ ems_var7 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'fut_yr_intensity')
413
+ ems_var7.setName('Future_Annual_Emissions_Intensity_Var')
414
+ ems_var7.setEMSVariableName('fut_yr_intensity')
415
+ ems_var7.setTypeOfDataInVariable('Summed')
416
+ ems_var7.setUpdateFrequency('SystemTimestep')
417
+ ems_var7.setEMSProgramOrSubroutineName(ems_prgm)
418
+ ems_var7.setUnits('kg/ft2')
419
+
420
+ # add historical annual EMS output variable
421
+ ems_var8 = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, 'his_yr_intensity')
422
+ ems_var8.setName('Historical_Annual_Emissions_Intensity_Var')
423
+ ems_var8.setEMSVariableName('his_yr_intensity')
424
+ ems_var8.setTypeOfDataInVariable('Summed')
425
+ ems_var8.setUpdateFrequency('SystemTimestep')
426
+ ems_var8.setEMSProgramOrSubroutineName(ems_prgm)
427
+ ems_var8.setUnits('kg/ft2')
242
428
 
243
429
  # add future hourly reporting output variable
244
- out_var1 = OpenStudio::Model::OutputVariable.new("#{future_subregion}_#{future_year}_Hourly_Emissions_Var", model)
430
+ out_var1 = OpenStudio::Model::OutputVariable.new('Future_Hourly_Emissions_Var', model)
245
431
  out_var1.setKeyValue('EMS')
246
432
  out_var1.setReportingFrequency('hourly')
247
433
 
248
434
  # add historical hourly reporting output variable
249
- out_var2 = OpenStudio::Model::OutputVariable.new("#{hourly_historical_subregion.gsub(' ','_')}_#{hourly_historical_year}_Hourly_Emissions_Var", model)
435
+ out_var2 = OpenStudio::Model::OutputVariable.new('Historical_Hourly_Emissions_Var', model)
250
436
  out_var2.setKeyValue('EMS')
251
437
  out_var2.setReportingFrequency('hourly')
252
438
 
253
439
  # add future annual reporting output variable
254
- out_var3 = OpenStudio::Model::OutputVariable.new("#{future_subregion}_#{future_year}_Annual_Emissions_Var", model)
440
+ out_var3 = OpenStudio::Model::OutputVariable.new('Future_Annual_Emissions_Var', model)
255
441
  out_var3.setKeyValue('EMS')
256
442
  out_var3.setReportingFrequency('hourly')
257
443
 
258
444
  # add historical annual reporting output variable
259
- out_var4 = OpenStudio::Model::OutputVariable.new("#{annual_historical_subregion}_#{annual_historical_year}_Annual_Emissions_Var", model)
445
+ out_var4 = OpenStudio::Model::OutputVariable.new('Historical_Annual_Emissions_Var', model)
260
446
  out_var4.setKeyValue('EMS')
261
447
  out_var4.setReportingFrequency('hourly')
262
448
 
449
+ # add future hourly intensity reporting output variable
450
+ out_var5 = OpenStudio::Model::OutputVariable.new('Future_Hourly_Emissions_Intensity_Var', model)
451
+ out_var5.setKeyValue('EMS')
452
+ out_var5.setReportingFrequency('hourly')
453
+
454
+ # add historical hourly intensity reporting output variable
455
+ out_var6 = OpenStudio::Model::OutputVariable.new('Historical_Hourly_Emissions_Intensity_Var', model)
456
+ out_var6.setKeyValue('EMS')
457
+ out_var6.setReportingFrequency('hourly')
458
+
459
+ # add future annual intensity reporting output variable
460
+ out_var7 = OpenStudio::Model::OutputVariable.new('Future_Annual_Emissions_Intensity_Var', model)
461
+ out_var7.setKeyValue('EMS')
462
+ out_var7.setReportingFrequency('hourly')
463
+
464
+ # add historical annual intensity reporting output variable
465
+ out_var8 = OpenStudio::Model::OutputVariable.new('Historical_Annual_Emissions_Intensity_Var', model)
466
+ out_var8.setKeyValue('EMS')
467
+ out_var8.setReportingFrequency('hourly')
468
+
469
+
263
470
  return true
264
471
  end
265
472
  end