urbanopt-reporting 0.2.0 → 0.3.3

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
  4. data/.github/pull_request_template.md +13 -0
  5. data/.rdoc_options +36 -0
  6. data/CHANGELOG.md +43 -1
  7. data/LICENSE.md +1 -1
  8. data/RDOC_MAIN.md +10 -0
  9. data/deploy_docs.sh +5 -0
  10. data/doc_templates/LICENSE.md +1 -1
  11. data/doc_templates/copyright_erb.txt +1 -1
  12. data/doc_templates/copyright_js.txt +1 -1
  13. data/doc_templates/copyright_ruby.txt +1 -1
  14. data/docs/.gitignore +3 -0
  15. data/docs/.vuepress/components/InnerJsonSchema.vue +76 -0
  16. data/docs/.vuepress/components/JsonSchema.vue +12 -0
  17. data/docs/.vuepress/components/ScenarioSchema.vue +12 -0
  18. data/docs/.vuepress/components/StaticLink.vue +8 -0
  19. data/docs/.vuepress/config.js +25 -0
  20. data/docs/.vuepress/highlight.js +8 -0
  21. data/docs/.vuepress/json-schema-deref-loader.js +22 -0
  22. data/docs/.vuepress/public/custom_rdoc_styles.css +78 -0
  23. data/docs/.vuepress/styles/palette.styl +1 -0
  24. data/docs/.vuepress/utils.js +17 -0
  25. data/docs/README.md +9 -0
  26. data/docs/package-lock.json +10018 -0
  27. data/docs/package.json +30 -0
  28. data/docs/schemas/scenario-schema.md +3 -0
  29. data/lib/measures/default_feature_reports/LICENSE.md +1 -1
  30. data/lib/measures/default_feature_reports/measure.rb +231 -87
  31. data/lib/measures/default_feature_reports/measure.xml +11 -11
  32. data/lib/measures/export_modelica_loads/LICENSE.md +27 -0
  33. data/lib/measures/export_modelica_loads/README.md +26 -0
  34. data/lib/measures/export_modelica_loads/README.md.erb +42 -0
  35. data/lib/measures/export_modelica_loads/docs/.gitkeep +0 -0
  36. data/lib/measures/export_modelica_loads/measure.rb +367 -0
  37. data/lib/measures/export_modelica_loads/measure.xml +92 -0
  38. data/lib/measures/export_modelica_loads/resources/report.html.in +13 -0
  39. data/lib/measures/export_time_series_modelica/LICENSE.md +1 -0
  40. data/lib/measures/export_time_series_modelica/README.md +59 -0
  41. data/lib/measures/export_time_series_modelica/README.md.erb +42 -0
  42. data/lib/measures/export_time_series_modelica/docs/.gitkeep +0 -0
  43. data/lib/measures/export_time_series_modelica/measure.rb +433 -0
  44. data/lib/measures/export_time_series_modelica/measure.xml +147 -0
  45. data/lib/measures/export_time_series_modelica/resources/os_lib_helper_methods.rb +399 -0
  46. data/lib/measures/export_time_series_modelica/resources/report.html.in +13 -0
  47. data/lib/urbanopt/reporting/default_reports/end_uses.rb +52 -38
  48. data/lib/urbanopt/reporting/default_reports/feature_report.rb +79 -8
  49. data/lib/urbanopt/reporting/default_reports/location.rb +11 -11
  50. data/lib/urbanopt/reporting/default_reports/program.rb +86 -86
  51. data/lib/urbanopt/reporting/default_reports/reporting_period.rb +98 -78
  52. data/lib/urbanopt/reporting/default_reports/scenario_report.rb +7 -4
  53. data/lib/urbanopt/reporting/default_reports/schema/scenario_csv_columns.txt +15 -0
  54. data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +108 -80
  55. data/lib/urbanopt/reporting/default_reports/thermal_storage.rb +10 -10
  56. data/lib/urbanopt/reporting/version.rb +1 -1
  57. data/urbanopt-reporting-gem.gemspec +4 -4
  58. metadata +50 -13
@@ -43,16 +43,16 @@ module URBANopt
43
43
  # ReportingPeriod includes all the results of a specific reporting period.
44
44
  ##
45
45
  class ReportingPeriod
46
- attr_accessor :id, :name, :multiplier, :start_date, :end_date, :month, :day_of_month, :year, :total_site_energy, :total_source_energy,
47
- :net_site_energy, :net_source_energy, :total_utility_cost, :net_utility_cost, :utility_costs, :electricity, :natural_gas, :additional_fuel, :district_cooling,
48
- :district_heating, :water, :electricity_produced, :end_uses, :energy_production, :photovoltaic,
49
- :fuel_type, :total_cost, :usage_cost, :demand_cost, :comfort_result, :time_setpoint_not_met_during_occupied_cooling,
46
+ attr_accessor :id, :name, :multiplier, :start_date, :end_date, :month, :day_of_month, :year, :total_site_energy_kwh, :total_source_energy_kwh, :site_EUI_kwh_per_m2, :site_EUI_kbtu_per_ft2, :source_EUI_kwh_per_m2, :source_EUI_kbtu_per_ft2,
47
+ :net_site_energy_kwh, :net_source_energy_kwh, :total_utility_cost_dollar, :net_utility_cost_dollar, :utility_costs_dollar, :electricity_kwh, :natural_gas_kwh, :propane_kwh, :fuel_oil_kwh, :other_fuels_kwh, :district_cooling_kwh,
48
+ :district_heating_kwh, :water_qbft, :electricity_produced_kwh, :end_uses, :energy_production_kwh, :photovoltaic,
49
+ :fuel_type, :total_cost_dollar, :usage_cost_dollar, :demand_cost_dollar, :comfort_result, :time_setpoint_not_met_during_occupied_cooling,
50
50
  :time_setpoint_not_met_during_occupied_heating, :time_setpoint_not_met_during_occupied_hours, :hours_out_of_comfort_bounds_PMV, :hours_out_of_comfort_bounds_PPD #:nodoc:
51
51
  # ReportingPeriod class initializes the reporting period attributes:
52
- # +:id+ , +:name+ , +:multiplier+ , +:start_date+ , +:end_date+ , +:month+ , +:day_of_month+ , +:year+ , +:total_site_energy+ , +:total_source_energy+ ,
53
- # +:net_site_energy+ , +:net_source_energy+ , +:total_utility_cost , +:net_utility_cost+ , +:utility_costs+ , +:electricity+ , +:natural_gas+ , +:additional_fuel+ , +:district_cooling+ ,
54
- # +:district_heating+ , +:water+ , +:electricity_produced+ , +:end_uses+ , +:energy_production+ , +:photovoltaic+ ,
55
- # +:fuel_type+ , +:total_cost+ , +:usage_cost+ , +:demand_cost+ , +:comfort_result+ , +:time_setpoint_not_met_during_occupied_cooling+ ,
52
+ # +:id+ , +:name+ , +:multiplier+ , +:start_date+ , +:end_date+ , +:month+ , +:day_of_month+ , +:year+ , +:total_site_energy_kwh+ , +:total_source_energy_kwh+ , +:site_EUI_kwh_per_m2+, +:site_EUI_kbtu_per_ft2+, +:source_EUI_kwh_per_m2+, +:source_EUI_kbtu_per_ft2+,
53
+ # +:net_site_energy_kwh+ , +:net_source_energy_kwh+ , +:total_utility_cost_dollar , +:net_utility_cost_dollar+ , +:utility_costs_dollar+ , +:electricity_kwh+ , +:natural_gas_kwh+ , +:propane_kwh+ , +:fuel_oil_kwh+ , +:other_fuels_kwh+ , +:district_cooling_kwh+ ,
54
+ # +:district_heating_kwh+ , +:water_qbft+ , +:electricity_produced_kwh+ , +:end_uses+ , +:energy_production_kwh+ , +:photovoltaic_kwh+ ,
55
+ # +:fuel_type+ , +:total_cost_dollar+ , +:usage_cost_dollar+ , +:demand_cost_dollar+ , +:comfort_result+ , +:time_setpoint_not_met_during_occupied_cooling+ ,
56
56
  # +:time_setpoint_not_met_during_occupied_heating+ , +:time_setpoint_not_met_during_occupied_hours+
57
57
  ##
58
58
  # [parameters:]
@@ -68,24 +68,30 @@ module URBANopt
68
68
  @start_date = Date.new(hash[:start_date])
69
69
  @end_date = Date.new(hash[:end_date])
70
70
 
71
- @total_site_energy = hash[:total_site_energy]
72
- @total_source_energy = hash[:total_source_energy]
73
- @net_site_energy = hash [:net_site_energy]
74
- @net_source_energy = hash [:net_source_energy]
75
- @net_utility_cost = hash [:net_utility_cost]
76
- @total_utility_cost = hash [:total_utility_cost]
77
- @electricity = hash [:electricity]
78
- @natural_gas = hash [:natural_gas]
79
- @additional_fuel = hash [:additional_fuel]
80
- @district_cooling = hash [:district_cooling]
81
- @district_heating = hash[:district_heating]
82
- @water = hash[:water]
83
- @electricity_produced = hash[:electricity_produced]
71
+ @total_site_energy_kwh = hash[:total_site_energy_kwh]
72
+ @total_source_energy_kwh = hash[:total_source_energy_kwh]
73
+ @site_EUI_kwh_per_m2 = hash[:site_EUI_kwh_per_m2]
74
+ @site_EUI_kbtu_per_ft2 = hash[:site_EUI_kbtu_per_ft2]
75
+ @source_EUI_kwh_per_m2 = hash[:source_EUI_kwh_per_m2]
76
+ @source_EUI_kbtu_per_ft2 = hash[:source_EUI_kbtu_per_ft2]
77
+ @net_site_energy_kwh = hash[:net_site_energy_kwh]
78
+ @net_source_energy_kwh = hash[:net_source_energy_kwh]
79
+ @net_utility_cost_dollar = hash[:net_utility_cost_dollar]
80
+ @total_utility_cost_dollar = hash[:total_utility_cost_dollar]
81
+ @electricity_kwh = hash[:electricity_kwh]
82
+ @natural_gas_kwh = hash[:natural_gas_kwh]
83
+ @propane_kwh = hash[:propane_kwh]
84
+ @fuel_oil_kwh = hash[:fuel_oil_kwh]
85
+ @other_fuels_kwh = hash[:other_fuels_kwh]
86
+ @district_cooling_kwh = hash[:district_cooling_kwh]
87
+ @district_heating_kwh = hash[:district_heating_kwh]
88
+ @water_qbft = hash[:water_qbft]
89
+ @electricity_produced_kwh = hash[:electricity_produced_kwh]
84
90
  @end_uses = EndUses.new(hash[:end_uses])
85
91
 
86
- @energy_production = hash[:energy_production]
92
+ @energy_production_kwh = hash[:energy_production_kwh]
87
93
 
88
- @utility_costs = hash[:utility_costs]
94
+ @utility_costs_dollar = hash[:utility_costs_dollar]
89
95
 
90
96
  @comfort_result = hash[:comfort_result]
91
97
 
@@ -106,22 +112,28 @@ module URBANopt
106
112
  hash[:start_date] = Date.new.to_hash
107
113
  hash[:end_date] = Date.new.to_hash
108
114
 
109
- hash[:total_site_energy] = nil
110
- hash[:total_source_energy] = nil
111
- hash [:net_site_energy] = nil
112
- hash [:net_source_energy] = nil
113
- hash [:net_utility_cost] = nil
114
- hash [:total_utility_cost] = nil
115
- hash [:electricity] = nil
116
- hash [:natural_gas] = nil
117
- hash [:additional_fuel] = nil
118
- hash [:district_cooling] = nil
119
- hash[:district_heating] = nil
120
-
121
- hash[:electricity_produced] = nil
115
+ hash[:total_site_energy_kwh] = nil
116
+ hash[:total_source_energy_kwh] = nil
117
+ hash[:site_EUI_kwh_per_m2] = nil
118
+ hash[:site_EUI_kbtu_per_ft2] = nil
119
+ hash[:source_EUI_kwh_per_m2] = nil
120
+ hash[:source_EUI_kbtu_per_ft2] = nil
121
+ hash[:net_site_energy_kwh] = nil
122
+ hash[:net_source_energy_kwh] = nil
123
+ hash[:net_utility_cost_dollar] = nil
124
+ hash[:total_utility_cost_dollar] = nil
125
+ hash[:electricity_kwh] = nil
126
+ hash[:natural_gas_kwh] = nil
127
+ hash[:propane_kwh] = nil
128
+ hash[:fuel_oil_kwh] = nil
129
+ hash[:other_fuels_kwh] = nil
130
+ hash[:district_cooling_kwh] = nil
131
+ hash[:district_heating_kwh] = nil
132
+
133
+ hash[:electricity_produced_kwh] = nil
122
134
  hash[:end_uses] = EndUses.new.to_hash
123
- hash[:energy_production] = { electricity_produced: { photovoltaic: nil } }
124
- hash[:utility_costs] = [{ fuel_type: nil, total_cost: nil, usage_cost: nil, demand_cost: nil }]
135
+ hash[:energy_production_kwh] = { electricity_produced: { photovoltaic: nil } }
136
+ hash[:utility_costs_dollar] = [{ fuel_type: nil, total_cost_dollar: nil, usage_cost_dollar: nil, demand_cost_dollar: nil }]
125
137
  hash[:comfort_result] = { time_setpoint_not_met_during_occupied_cooling: nil, time_setpoint_not_met_during_occupied_heating: nil,
126
138
  time_setpoint_not_met_during_occupied_hours: nil, hours_out_of_comfort_bounds_PMV: nil, hours_out_of_comfort_bounds_PPD: nil }
127
139
 
@@ -142,32 +154,38 @@ module URBANopt
142
154
  result[:multiplier] = @multiplier if @multiplier
143
155
  result[:start_date] = @start_date.to_hash if @start_date
144
156
  result[:end_date] = @end_date.to_hash if @end_date
145
- result[:total_site_energy] = @total_site_energy if @total_site_energy
146
- result[:total_source_energy] = @total_source_energy if @total_source_energy
147
- result[:net_site_energy] = @net_site_energy if @net_site_energy
148
- result[:net_source_energy] = @net_source_energy if @net_source_energy
149
- result[:net_utility_cost] = @net_utility_cost if @net_utility_cost
150
- result[:total_utility_cost] = @total_utility_cost if @total_utility_cost
151
- result[:electricity] = @electricity if @electricity
152
- result[:natural_gas] = @natural_gas if @natural_gas
153
- result[:additional_fuel] = @additional_fuel if @additional_fuel
154
- result[:district_cooling] = @district_cooling if @district_cooling
155
- result[:district_heating] = @district_heating if @district_heating
156
- result[:water] = @water if @water
157
- result[:electricity_produced] = @electricity_produced if @electricity_produced
157
+ result[:total_site_energy_kwh] = @total_site_energy_kwh if @total_site_energy_kwh
158
+ result[:total_source_energy_kwh] = @total_source_energy_kwh if @total_source_energy_kwh
159
+ result[:site_EUI_kwh_per_m2] = @site_EUI_kwh_per_m2 if @site_EUI_kwh_per_m2
160
+ result[:site_EUI_kbtu_per_ft2] = @site_EUI_kbtu_per_ft2 if @site_EUI_kbtu_per_ft2
161
+ result[:source_EUI_kwh_per_m2] = @source_EUI_kwh_per_m2 if @source_EUI_kwh_per_m2
162
+ result[:source_EUI_kbtu_per_ft2] = @source_EUI_kbtu_per_ft2 if @source_EUI_kbtu_per_ft2
163
+ result[:net_site_energy_kwh] = @net_site_energy_kwh if @net_site_energy_kwh
164
+ result[:net_source_energy_kwh] = @net_source_energy_kwh if @net_source_energy_kwh
165
+ result[:net_utility_cost_dollar] = @net_utility_cost_dollar if @net_utility_cost_dollar
166
+ result[:total_utility_cost_dollar] = @total_utility_cost_dollar if @total_utility_cost_dollar
167
+ result[:electricity_kwh] = @electricity_kwh if @electricity_kwh
168
+ result[:natural_gas_kwh] = @natural_gas_kwh if @natural_gas_kwh
169
+ result[:propane_kwh] = @propane_kwh if @propane_kwh
170
+ result[:fuel_oil_kwh] = @fuel_oil_kwh if @fuel_oil_kwh
171
+ result[:other_fuels_kwh] = @other_fuels_kwh if @other_fuels_kwh
172
+ result[:district_cooling_kwh] = @district_cooling_kwh if @district_cooling_kwh
173
+ result[:district_heating_kwh] = @district_heating_kwh if @district_heating_kwh
174
+ result[:water_qbft] = @water_qbft if @water_qbft
175
+ result[:electricity_produced_kwh] = @electricity_produced_kwh if @electricity_produced_kwh
158
176
  result[:end_uses] = @end_uses.to_hash if @end_uses
159
177
 
160
- energy_production_hash = @energy_production if @energy_production
161
- energy_production_hash.delete_if { |k, v| v.nil? }
162
- energy_production_hash.each do |eph|
178
+ energy_production_kwh_hash = @energy_production_kwh if @energy_production_kwh
179
+ energy_production_kwh_hash.delete_if { |k, v| v.nil? }
180
+ energy_production_kwh_hash.each do |eph|
163
181
  eph.delete_if { |k, v| v.nil? }
164
182
  end
165
183
 
166
- result[:energy_production] = energy_production_hash if @energy_production
184
+ result[:energy_production_kwh] = energy_production_kwh_hash if @energy_production_kwh
167
185
 
168
- if @utility_costs.any?
169
- result[:utility_costs] = @utility_costs
170
- @utility_costs.each do |uc|
186
+ if @utility_costs_dollar.any?
187
+ result[:utility_costs_dollar] = @utility_costs_dollar
188
+ @utility_costs_dollar.each do |uc|
171
189
  uc&.delete_if { |k, v| v.nil? }
172
190
  end
173
191
  end
@@ -211,34 +229,36 @@ module URBANopt
211
229
  ##
212
230
  def self.merge_reporting_period(existing_period, new_period)
213
231
  # modify the existing_period by summing up the results
214
- existing_period.total_site_energy = add_values(existing_period.total_site_energy, new_period.total_site_energy)
215
- existing_period.total_source_energy = add_values(existing_period.total_source_energy, new_period.total_source_energy)
216
- existing_period.net_source_energy = add_values(existing_period.net_source_energy, new_period.net_source_energy)
217
- existing_period.net_utility_cost = add_values(existing_period.net_utility_cost, new_period.net_utility_cost)
218
- existing_period.total_utility_cost = add_values(existing_period.total_utility_cost, new_period.total_utility_cost)
219
- existing_period.electricity = add_values(existing_period.electricity, new_period.electricity)
220
- existing_period.natural_gas = add_values(existing_period.natural_gas, new_period.natural_gas)
221
- existing_period.additional_fuel = add_values(existing_period.additional_fuel, new_period.additional_fuel)
222
- existing_period.district_cooling = add_values(existing_period.district_cooling, new_period.district_cooling)
223
- existing_period.district_heating = add_values(existing_period.district_heating, new_period.district_heating)
224
- existing_period.water = add_values(existing_period.water, new_period.water)
225
- existing_period.electricity_produced = add_values(existing_period.electricity_produced, new_period.electricity_produced)
232
+ existing_period.total_site_energy_kwh = add_values(existing_period.total_site_energy_kwh, new_period.total_site_energy_kwh)
233
+ existing_period.total_source_energy_kwh = add_values(existing_period.total_source_energy_kwh, new_period.total_source_energy_kwh)
234
+ existing_period.net_source_energy_kwh = add_values(existing_period.net_source_energy_kwh, new_period.net_source_energy_kwh)
235
+ existing_period.net_utility_cost_dollar = add_values(existing_period.net_utility_cost_dollar, new_period.net_utility_cost_dollar)
236
+ existing_period.total_utility_cost_dollar = add_values(existing_period.total_utility_cost_dollar, new_period.total_utility_cost_dollar)
237
+ existing_period.electricity_kwh = add_values(existing_period.electricity_kwh, new_period.electricity_kwh)
238
+ existing_period.natural_gas_kwh = add_values(existing_period.natural_gas_kwh, new_period.natural_gas_kwh)
239
+ existing_period.propane_kwh = add_values(existing_period.propane_kwh, new_period.propane_kwh)
240
+ existing_period.fuel_oil_kwh = add_values(existing_period.fuel_oil_kwh, new_period.fuel_oil_kwh)
241
+ existing_period.other_fuels_kwh = add_values(existing_period.other_fuels_kwh, new_period.other_fuels_kwh)
242
+ existing_period.district_cooling_kwh = add_values(existing_period.district_cooling_kwh, new_period.district_cooling_kwh)
243
+ existing_period.district_heating_kwh = add_values(existing_period.district_heating_kwh, new_period.district_heating_kwh)
244
+ existing_period.water_qbft = add_values(existing_period.water_qbft, new_period.water_qbft)
245
+ existing_period.electricity_produced_kwh = add_values(existing_period.electricity_produced_kwh, new_period.electricity_produced_kwh)
226
246
 
227
247
  # merge end uses
228
248
  new_end_uses = new_period.end_uses
229
249
  existing_period.end_uses&.merge_end_uses!(new_end_uses)
230
250
 
231
- if existing_period.energy_production
232
- if existing_period.energy_production[:electricity_produced]
233
- existing_period.energy_production[:electricity_produced][:photovoltaic] = add_values(existing_period.energy_production[:electricity_produced][:photovoltaic], new_period.energy_production[:electricity_produced][:photovoltaic])
251
+ if existing_period.energy_production_kwh
252
+ if existing_period.energy_production_kwh[:electricity_produced_kwh]
253
+ existing_period.energy_production_kwh[:electricity_produced_kwh][:photovoltaic_kwh] = add_values(existing_period.energy_production_kwh[:electricity_produced][:photovoltaic], new_period.energy_production_kwh[:electricity_produced_kwh][:photovoltaic_kwh])
234
254
  end
235
255
  end
236
256
 
237
- existing_period.utility_costs&.each_with_index do |item, i|
238
- existing_period.utility_costs[i][:fuel_type] = existing_period.utility_costs[i][:fuel_type]
239
- existing_period.utility_costs[i][:total_cost] = add_values(existing_period.utility_costs[i][:total_cost], new_period.utility_costs[i][:total_cost])
240
- existing_period.utility_costs[i][:usage_cost] = add_values(existing_period.utility_costs[i][:usage_cost], new_period.utility_costs[i][:usage_cost])
241
- existing_period.utility_costs[i][:demand_cost] = add_values(existing_period.utility_costs[i][:demand_cost], new_period.utility_costs[i][:demand_cost])
257
+ existing_period.utility_costs_dollar&.each_with_index do |item, i|
258
+ existing_period.utility_costs_dollar[i][:fuel_type] = existing_period.utility_costs_dollar[i][:fuel_type]
259
+ existing_period.utility_costs_dollar[i][:total_cost] = add_values(existing_period.utility_costs_dollar[i][:total_cost], new_period.utility_costs_dollar[i][:total_cost])
260
+ existing_period.utility_costs_dollar[i][:usage_cost] = add_values(existing_period.utility_costs_dollar[i][:usage_cost], new_period.utility_costs_dollar[i][:usage_cost])
261
+ existing_period.utility_costs_dollar[i][:demand_cost] = add_values(existing_period.utility_costs_dollar[i][:demand_cost], new_period.utility_costs_dollar[i][:demand_cost])
242
262
  end
243
263
 
244
264
  if existing_period.comfort_result
@@ -185,10 +185,13 @@ module URBANopt
185
185
  @timeseries_csv.path = File.join(@directory_name, file_name + '.csv')
186
186
  end
187
187
 
188
- # save the feature reports csv and json data
189
- # @feature_reports.each do |feature_report|
190
- # feature_report.save_feature_report()
191
- # end
188
+ if file_name == 'default_scenario_report'
189
+ file_name = 'default_feature_report'
190
+ end
191
+ #save the feature reports csv and json data
192
+ @feature_reports.each do |feature_report|
193
+ feature_report.save file_name
194
+ end
192
195
 
193
196
  return true
194
197
  end
@@ -2,6 +2,9 @@ Datetime
2
2
  Electricity:Facility
3
3
  ElectricityProduced:Facility
4
4
  Gas:Facility
5
+ Propane:Facility
6
+ FuelOil#2:Facility
7
+ OtherFuels:Facility
5
8
  Cooling:Electricity
6
9
  Heating:Electricity
7
10
  InteriorLights:Electricity
@@ -15,6 +18,18 @@ HeatRejection:Gas
15
18
  Heating:Gas
16
19
  WaterSystems:Gas
17
20
  InteriorEquipment:Gas
21
+ HeatRejection:Propane
22
+ Heating:Propane
23
+ WaterSystems:Propane
24
+ InteriorEquipment:Propane
25
+ HeatRejection:FuelOil#2
26
+ Heating:FuelOil#2
27
+ WaterSystems:FuelOil#2
28
+ InteriorEquipment:FuelOil#2
29
+ HeatRejection:OtherFuels
30
+ Heating:OtherFuels
31
+ WaterSystems:OtherFuels
32
+ InteriorEquipment:OtherFuels
18
33
  DistrictCooling:Facility
19
34
  DistrictHeating:Facility
20
35
  District Cooling Chilled Water Rate
@@ -263,69 +263,89 @@
263
263
  "end_date": {
264
264
  "$ref": "#/definitions/Date"
265
265
  },
266
- "total_site_energy": {
267
- "description": "Total energy used on site, does not include generation (kBtu)",
266
+ "total_site_energy_kwh": {
267
+ "description": "Total energy used on site, does not include generation (kWh)",
268
268
  "type": "number"
269
269
  },
270
- "total_source_energy": {
271
- "description": "Total source energy used, does not include generation (kBtu)",
270
+ "total_source_energy_kwh": {
271
+ "description": "Total source energy used, does not include generation (kWh)",
272
272
  "type": "number"
273
273
  },
274
- "net_site_energy": {
275
- "description": "Net site energy (kBtu)",
274
+ "site_EUI_kwh_per_m2": {
276
275
  "type": "number"
277
276
  },
278
- "net_source_energy": {
279
- "description": "Net source energy (kBtu)",
277
+ "site_EUI_kBtu_per_ft2": {
280
278
  "type": "number"
281
279
  },
282
- "total_utility_cost": {
283
- "description": "Total utility cost",
280
+ "source_EUI_kwh_per_m2": {
284
281
  "type": "number"
285
282
  },
286
- "net_utility_cost": {
287
- "description": "Net utility cost for reporting period includes generation",
283
+ "source_EUI_kBtu_per_ft2": {
288
284
  "type": "number"
289
285
  },
290
- "utility_costs": {
286
+ "net_site_energy_kwh": {
287
+ "description": "Net site energy (kWh)",
288
+ "type": "number"
289
+ },
290
+ "net_source_energy_kwh": {
291
+ "description": "Net source energy (kWh)",
292
+ "type": "number"
293
+ },
294
+ "total_utility_cost_dollar": {
295
+ "description": "Total utility cost ($)",
296
+ "type": "number"
297
+ },
298
+ "net_utility_cost_dollar": {
299
+ "description": "Net utility cost for reporting period includes generation ($)",
300
+ "type": "number"
301
+ },
302
+ "utility_costs_dollar": {
291
303
  "type": "array",
292
304
  "items": {
293
305
  "$ref": "#/definitions/UtilityCost"
294
306
  }
295
307
  },
296
- "electricity": {
308
+ "electricity_kwh": {
297
309
  "description": "Sum of all electricity used, does not include electricity produced (kWh)",
298
310
  "type": "number"
299
311
  },
300
- "natural_gas": {
301
- "description": "Sum of all natural gas end uses consumption (kBtu)",
312
+ "natural_gas_kwh": {
313
+ "description": "Sum of all natural gas end uses consumption (kWh)",
302
314
  "type": "number"
303
315
  },
304
- "additional_fuel": {
305
- "description": "Sum of all additional fuel end uses consumption (kBtu)",
316
+ "propane_kwh": {
317
+ "description": "Sum of all propane end uses consumption (kWh)",
306
318
  "type": "number"
307
319
  },
308
- "district_cooling": {
309
- "description": "Sum of all distric cooling end uses consumption (kBtu)",
320
+ "fuel_oil_kwh": {
321
+ "description": "Sum of all fuel oil #2 end uses consumption (kWh)",
310
322
  "type": "number"
311
323
  },
312
- "district_heating": {
313
- "description": "Sum of all distric heating end uses consumption (kBtu)",
324
+ "other_fuels_kwh": {
325
+ "description": "Sum of all other (fuel oil #1, diesel, gasoline, coal, steam) fuel end uses consumption (kWh)",
314
326
  "type": "number"
315
327
  },
316
- "water": {
328
+ "district_cooling_kwh": {
329
+ "description": "Sum of all distric cooling end uses consumption (kWh)",
330
+ "type": "number"
331
+ },
332
+ "district_heating_kwh": {
333
+ "description": "Sum of all distric heating end uses consumption (kWh)",
334
+ "type": "number"
335
+ },
336
+ "water_qbft": {
317
337
  "description": "Sum of all water end uses consumption (ft^3)",
318
338
  "type": "number"
319
339
  },
320
- "electricity_produced": {
340
+ "electricity_produced_kwh": {
321
341
  "description": "Sum of all electricity produced (kWh)",
322
342
  "type": "number"
323
343
  },
324
344
  "end_uses": {
325
345
  "$ref": "#/definitions/EndUses"
326
346
  },
327
- "energy_production": {
328
- "description": "Energy produced for reporting period. Electricity reported in kWh, water in m^3, all others in kBtu.",
347
+ "energy_production_kwh": {
348
+ "description": "Energy produced for reporting period. Water reported in m^3, all others in kWh.",
329
349
  "type": "object",
330
350
  "properties": {
331
351
  "electricity_produced": {
@@ -362,25 +382,31 @@
362
382
  "additionalProperties": false
363
383
  },
364
384
  "EndUses": {
365
- "description": "End uses for reporting period. Does not include energy produced. Electricity reported in kWh, water in m^3, all others in kBtu.",
385
+ "description": "End uses for reporting period. Does not include energy produced. Water reported in m^3, all others in kWh.",
366
386
  "type": "object",
367
387
  "properties": {
368
- "electricity": {
388
+ "electricity_kwh": {
389
+ "$ref": "#/definitions/EndUse"
390
+ },
391
+ "natural_gas_kwh": {
392
+ "$ref": "#/definitions/EndUse"
393
+ },
394
+ "propane_kwh": {
369
395
  "$ref": "#/definitions/EndUse"
370
396
  },
371
- "natural_gas": {
397
+ "fuel_oil_kwh": {
372
398
  "$ref": "#/definitions/EndUse"
373
399
  },
374
- "additional_fuel": {
400
+ "other_fuels_kwh": {
375
401
  "$ref": "#/definitions/EndUse"
376
402
  },
377
- "district_cooling": {
403
+ "district_cooling_kwh": {
378
404
  "$ref": "#/definitions/EndUse"
379
405
  },
380
- "district_heating": {
406
+ "district_heating_kwh": {
381
407
  "$ref": "#/definitions/EndUse"
382
408
  },
383
- "water": {
409
+ "water_qbft": {
384
410
  "$ref": "#/definitions/EndUse"
385
411
  }
386
412
  },
@@ -522,9 +548,11 @@
522
548
  "enum": [
523
549
  "Electricity",
524
550
  "Natural Gas",
551
+ "Propane",
552
+ "Fuel Oil",
525
553
  "District Cooling",
526
554
  "District Heating",
527
- "Additional Fuel",
555
+ "Other Fuels",
528
556
  "Water"
529
557
  ]
530
558
  },
@@ -546,15 +574,15 @@
546
574
  "Location": {
547
575
  "type": "object",
548
576
  "properties": {
549
- "latitude": {
577
+ "latitude_deg": {
550
578
  "description": "latitude for the centroid of the feature (deg)",
551
579
  "type": "number"
552
580
  },
553
- "longitude": {
581
+ "longitude_deg": {
554
582
  "description": "longitude for the centroid of the feature (deg)",
555
583
  "type": "number"
556
584
  },
557
- "surface_elevation": {
585
+ "surface_elevation_ft": {
558
586
  "description": "The surface elevation (above NAVD88 datum) (ft).",
559
587
  "type": "number"
560
588
  },
@@ -573,27 +601,27 @@
573
601
  "Program": {
574
602
  "type": "object",
575
603
  "properties": {
576
- "site_area": {
604
+ "site_area_sqft": {
577
605
  "description": "Area of the entire site or lot (ft^2)",
578
606
  "type": "number"
579
607
  },
580
- "floor_area": {
608
+ "floor_area_sqft": {
581
609
  "description": "Building gross floor area (ft^2)",
582
610
  "type": "number"
583
611
  },
584
- "conditioned_area": {
612
+ "conditioned_area_sqft": {
585
613
  "description": "Building conditioned floor area (ft^2)",
586
614
  "type": "number"
587
615
  },
588
- "unconditioned_area": {
616
+ "unconditioned_area_sqft": {
589
617
  "description": "Building unconditioned floor area (ft^2)",
590
618
  "type": "number"
591
619
  },
592
- "footprint_area": {
620
+ "footprint_area_sqft": {
593
621
  "description": "Building floorprint area (ft^2)",
594
622
  "type": "number"
595
623
  },
596
- "maximum_roof_height": {
624
+ "maximum_roof_height_ft": {
597
625
  "description": "Maximum height of the roof relative to surface elevation (ft)",
598
626
  "type": "number"
599
627
  },
@@ -605,7 +633,7 @@
605
633
  "description": "The maximum number of building stories above ground",
606
634
  "type": "number"
607
635
  },
608
- "parking_area": {
636
+ "parking_area_sqft": {
609
637
  "description": "Parking gross area (ft^2)",
610
638
  "type": "number"
611
639
  },
@@ -617,11 +645,11 @@
617
645
  "description": "Number of parking spaces with electric vehicle charging",
618
646
  "type": "number"
619
647
  },
620
- "parking_footprint_area": {
648
+ "parking_footprint_area_sqft": {
621
649
  "description": "Parking floorprint area (ft^2)",
622
650
  "type": "number"
623
651
  },
624
- "maximum_parking_height": {
652
+ "maximum_parking_height_ft": {
625
653
  "description": "Maximum height of the parking structure relative to surface elevation (ft)",
626
654
  "type": "number"
627
655
  },
@@ -643,84 +671,84 @@
643
671
  "$ref": "#/definitions/BuildingType"
644
672
  }
645
673
  },
646
- "window_area": {
674
+ "window_area_sqft": {
647
675
  "description": "Exterior windows gross area (ft^2)",
648
676
  "type": "object",
649
677
  "properties": {
650
- "north_window_area": {
678
+ "north_window_area_sqft": {
651
679
  "type": "number"
652
680
  },
653
- "south_window_area": {
681
+ "south_window_area_sqft": {
654
682
  "type": "number"
655
683
  },
656
- "east_window_area": {
684
+ "east_window_area_sqft": {
657
685
  "type": "number"
658
686
  },
659
- "west_window_area": {
687
+ "west_window_area_sqft": {
660
688
  "type": "number"
661
689
  },
662
- "total_window_area": {
690
+ "total_window_area_sqft": {
663
691
  "type": "number"
664
692
  }
665
693
  },
666
694
  "required": [
667
- "total_window_area"
695
+ "total_window_area_sqft"
668
696
  ],
669
697
  "additionalProperties": false
670
698
  },
671
- "wall_area": {
699
+ "wall_area_sqft": {
672
700
  "description": "exterior walls gross area (ft^2)",
673
701
  "type": "object",
674
702
  "properties": {
675
- "north_wall_area": {
703
+ "north_wall_area_sqft": {
676
704
  "type": "number"
677
705
  },
678
- "south_wall_area": {
706
+ "south_wall_area_sqft": {
679
707
  "type": "number"
680
708
  },
681
- "east_wall_area": {
709
+ "east_wall_area_sqft": {
682
710
  "type": "number"
683
711
  },
684
- "west_wall_area": {
712
+ "west_wall_area_sqft": {
685
713
  "type": "number"
686
714
  },
687
- "total_wall_area": {
715
+ "total_wall_area_sqft": {
688
716
  "type": "number"
689
717
  }
690
718
  },
691
719
  "required": [
692
- "north_wall_area",
693
- "south_wall_area",
694
- "east_wall_area",
695
- "west_wall_area",
696
- "total_wall_area"
720
+ "north_wall_area_sqft",
721
+ "south_wall_area_sqft",
722
+ "east_wall_area_sqft",
723
+ "west_wall_area_sqft",
724
+ "total_wall_area_sqft"
697
725
  ],
698
726
  "additionalProperties": false
699
727
  },
700
- "roof_area": {
728
+ "roof_area_sqft": {
701
729
  "type": "object",
702
730
  "properties": {
703
- "equipment_roof_area": {
731
+ "equipment_roof_area_sqft": {
704
732
  "type": "number"
705
733
  },
706
- "photovoltaic_roof_area": {
734
+ "photovoltaic_roof_area_sqft": {
707
735
  "type": "number"
708
736
  },
709
- "available_roof_area": {
737
+ "available_roof_area_sqft": {
710
738
  "description": "gross roof area (ft^2)",
711
739
  "type": "number"
712
740
  },
713
- "total_roof_area": {
741
+ "total_roof_area_sqft": {
714
742
  "description": "Exterior roofs gross area (ft^2)",
715
743
  "type": "number"
716
744
  }
717
745
  },
718
746
  "required": [
719
- "total_roof_area"
747
+ "total_roof_area_sqft"
720
748
  ],
721
749
  "additionalProperties": false
722
750
  },
723
- "orientation": {
751
+ "orientation_deg": {
724
752
  "description": "Rotation of longest axis from East-West,about up axis (deg)",
725
753
  "type": "number"
726
754
  },
@@ -728,22 +756,22 @@
728
756
  "description": "Ratio of longest to shortest axis",
729
757
  "type": "number"
730
758
  },
731
- "total_construction_cost": {
759
+ "total_construction_cost_dollar": {
732
760
  "description": "total construction cost calculated from the defined cost per floor area ($)",
733
761
  "type": "number"
734
762
  }
735
763
  },
736
764
  "required": [
737
- "floor_area",
738
- "conditioned_area",
739
- "unconditioned_area",
740
- "footprint_area",
741
- "maximum_roof_height",
765
+ "floor_area_sqft",
766
+ "conditioned_area_sqft",
767
+ "unconditioned_area_sqft",
768
+ "footprint_area_sqft",
769
+ "maximum_roof_height_ft",
742
770
  "number_of_residential_units",
743
771
  "building_types",
744
- "window_area",
745
- "wall_area",
746
- "roof_area"
772
+ "window_area_sqft",
773
+ "wall_area_sqft",
774
+ "roof_area_sqft"
747
775
  ],
748
776
  "additionalProperties": false
749
777
  },