urbanopt-reporting 0.2.0 → 0.3.3

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