openstudio-common-measures 0.5.0 → 0.6.0

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 (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