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.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +19 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +15 -0
- data/.github/pull_request_template.md +13 -0
- data/.rdoc_options +36 -0
- data/CHANGELOG.md +43 -1
- data/LICENSE.md +1 -1
- data/RDOC_MAIN.md +10 -0
- data/deploy_docs.sh +5 -0
- data/doc_templates/LICENSE.md +1 -1
- data/doc_templates/copyright_erb.txt +1 -1
- data/doc_templates/copyright_js.txt +1 -1
- data/doc_templates/copyright_ruby.txt +1 -1
- data/docs/.gitignore +3 -0
- data/docs/.vuepress/components/InnerJsonSchema.vue +76 -0
- data/docs/.vuepress/components/JsonSchema.vue +12 -0
- data/docs/.vuepress/components/ScenarioSchema.vue +12 -0
- data/docs/.vuepress/components/StaticLink.vue +8 -0
- data/docs/.vuepress/config.js +25 -0
- data/docs/.vuepress/highlight.js +8 -0
- data/docs/.vuepress/json-schema-deref-loader.js +22 -0
- data/docs/.vuepress/public/custom_rdoc_styles.css +78 -0
- data/docs/.vuepress/styles/palette.styl +1 -0
- data/docs/.vuepress/utils.js +17 -0
- data/docs/README.md +9 -0
- data/docs/package-lock.json +10018 -0
- data/docs/package.json +30 -0
- data/docs/schemas/scenario-schema.md +3 -0
- data/lib/measures/default_feature_reports/LICENSE.md +1 -1
- data/lib/measures/default_feature_reports/measure.rb +231 -87
- data/lib/measures/default_feature_reports/measure.xml +11 -11
- data/lib/measures/export_modelica_loads/LICENSE.md +27 -0
- data/lib/measures/export_modelica_loads/README.md +26 -0
- data/lib/measures/export_modelica_loads/README.md.erb +42 -0
- data/lib/measures/export_modelica_loads/docs/.gitkeep +0 -0
- data/lib/measures/export_modelica_loads/measure.rb +367 -0
- data/lib/measures/export_modelica_loads/measure.xml +92 -0
- data/lib/measures/export_modelica_loads/resources/report.html.in +13 -0
- data/lib/measures/export_time_series_modelica/LICENSE.md +1 -0
- data/lib/measures/export_time_series_modelica/README.md +59 -0
- data/lib/measures/export_time_series_modelica/README.md.erb +42 -0
- data/lib/measures/export_time_series_modelica/docs/.gitkeep +0 -0
- data/lib/measures/export_time_series_modelica/measure.rb +433 -0
- data/lib/measures/export_time_series_modelica/measure.xml +147 -0
- data/lib/measures/export_time_series_modelica/resources/os_lib_helper_methods.rb +399 -0
- data/lib/measures/export_time_series_modelica/resources/report.html.in +13 -0
- data/lib/urbanopt/reporting/default_reports/end_uses.rb +52 -38
- data/lib/urbanopt/reporting/default_reports/feature_report.rb +79 -8
- data/lib/urbanopt/reporting/default_reports/location.rb +11 -11
- data/lib/urbanopt/reporting/default_reports/program.rb +86 -86
- data/lib/urbanopt/reporting/default_reports/reporting_period.rb +98 -78
- data/lib/urbanopt/reporting/default_reports/scenario_report.rb +7 -4
- data/lib/urbanopt/reporting/default_reports/schema/scenario_csv_columns.txt +15 -0
- data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +108 -80
- data/lib/urbanopt/reporting/default_reports/thermal_storage.rb +10 -10
- data/lib/urbanopt/reporting/version.rb +1 -1
- data/urbanopt-reporting-gem.gemspec +4 -4
- 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, :
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:fuel_type, :
|
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+ , +:
|
53
|
-
# +:
|
54
|
-
# +:
|
55
|
-
# +:fuel_type+ , +:
|
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
|
-
@
|
72
|
-
@
|
73
|
-
@
|
74
|
-
@
|
75
|
-
@
|
76
|
-
@
|
77
|
-
@
|
78
|
-
@
|
79
|
-
@
|
80
|
-
@
|
81
|
-
@
|
82
|
-
@
|
83
|
-
@
|
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
|
-
@
|
92
|
+
@energy_production_kwh = hash[:energy_production_kwh]
|
87
93
|
|
88
|
-
@
|
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[:
|
110
|
-
hash[:
|
111
|
-
hash
|
112
|
-
hash
|
113
|
-
hash
|
114
|
-
hash
|
115
|
-
hash
|
116
|
-
hash
|
117
|
-
hash
|
118
|
-
hash
|
119
|
-
hash[:
|
120
|
-
|
121
|
-
hash[:
|
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[:
|
124
|
-
hash[:
|
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[:
|
146
|
-
result[:
|
147
|
-
result[:
|
148
|
-
result[:
|
149
|
-
result[:
|
150
|
-
result[:
|
151
|
-
result[:
|
152
|
-
result[:
|
153
|
-
result[:
|
154
|
-
result[:
|
155
|
-
result[:
|
156
|
-
result[:
|
157
|
-
result[:
|
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
|
-
|
161
|
-
|
162
|
-
|
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[:
|
184
|
+
result[:energy_production_kwh] = energy_production_kwh_hash if @energy_production_kwh
|
167
185
|
|
168
|
-
if @
|
169
|
-
result[:
|
170
|
-
@
|
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.
|
215
|
-
existing_period.
|
216
|
-
existing_period.
|
217
|
-
existing_period.
|
218
|
-
existing_period.
|
219
|
-
existing_period.
|
220
|
-
existing_period.
|
221
|
-
existing_period.
|
222
|
-
existing_period.
|
223
|
-
existing_period.
|
224
|
-
existing_period.
|
225
|
-
existing_period.
|
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.
|
232
|
-
if existing_period.
|
233
|
-
existing_period.
|
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.
|
238
|
-
existing_period.
|
239
|
-
existing_period.
|
240
|
-
existing_period.
|
241
|
-
existing_period.
|
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
|
-
|
189
|
-
|
190
|
-
|
191
|
-
#
|
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
|
-
"
|
267
|
-
"description": "Total energy used on site, does not include generation (
|
266
|
+
"total_site_energy_kwh": {
|
267
|
+
"description": "Total energy used on site, does not include generation (kWh)",
|
268
268
|
"type": "number"
|
269
269
|
},
|
270
|
-
"
|
271
|
-
"description": "Total source energy used, does not include generation (
|
270
|
+
"total_source_energy_kwh": {
|
271
|
+
"description": "Total source energy used, does not include generation (kWh)",
|
272
272
|
"type": "number"
|
273
273
|
},
|
274
|
-
"
|
275
|
-
"description": "Net site energy (kBtu)",
|
274
|
+
"site_EUI_kwh_per_m2": {
|
276
275
|
"type": "number"
|
277
276
|
},
|
278
|
-
"
|
279
|
-
"description": "Net source energy (kBtu)",
|
277
|
+
"site_EUI_kBtu_per_ft2": {
|
280
278
|
"type": "number"
|
281
279
|
},
|
282
|
-
"
|
283
|
-
"description": "Total utility cost",
|
280
|
+
"source_EUI_kwh_per_m2": {
|
284
281
|
"type": "number"
|
285
282
|
},
|
286
|
-
"
|
287
|
-
"description": "Net utility cost for reporting period includes generation",
|
283
|
+
"source_EUI_kBtu_per_ft2": {
|
288
284
|
"type": "number"
|
289
285
|
},
|
290
|
-
"
|
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
|
-
"
|
308
|
+
"electricity_kwh": {
|
297
309
|
"description": "Sum of all electricity used, does not include electricity produced (kWh)",
|
298
310
|
"type": "number"
|
299
311
|
},
|
300
|
-
"
|
301
|
-
"description": "Sum of all natural gas end uses consumption (
|
312
|
+
"natural_gas_kwh": {
|
313
|
+
"description": "Sum of all natural gas end uses consumption (kWh)",
|
302
314
|
"type": "number"
|
303
315
|
},
|
304
|
-
"
|
305
|
-
"description": "Sum of all
|
316
|
+
"propane_kwh": {
|
317
|
+
"description": "Sum of all propane end uses consumption (kWh)",
|
306
318
|
"type": "number"
|
307
319
|
},
|
308
|
-
"
|
309
|
-
"description": "Sum of all
|
320
|
+
"fuel_oil_kwh": {
|
321
|
+
"description": "Sum of all fuel oil #2 end uses consumption (kWh)",
|
310
322
|
"type": "number"
|
311
323
|
},
|
312
|
-
"
|
313
|
-
"description": "Sum of all
|
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
|
-
"
|
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
|
-
"
|
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
|
-
"
|
328
|
-
"description": "Energy produced for reporting period.
|
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.
|
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
|
-
"
|
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
|
-
"
|
397
|
+
"fuel_oil_kwh": {
|
372
398
|
"$ref": "#/definitions/EndUse"
|
373
399
|
},
|
374
|
-
"
|
400
|
+
"other_fuels_kwh": {
|
375
401
|
"$ref": "#/definitions/EndUse"
|
376
402
|
},
|
377
|
-
"
|
403
|
+
"district_cooling_kwh": {
|
378
404
|
"$ref": "#/definitions/EndUse"
|
379
405
|
},
|
380
|
-
"
|
406
|
+
"district_heating_kwh": {
|
381
407
|
"$ref": "#/definitions/EndUse"
|
382
408
|
},
|
383
|
-
"
|
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
|
-
"
|
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
|
-
"
|
577
|
+
"latitude_deg": {
|
550
578
|
"description": "latitude for the centroid of the feature (deg)",
|
551
579
|
"type": "number"
|
552
580
|
},
|
553
|
-
"
|
581
|
+
"longitude_deg": {
|
554
582
|
"description": "longitude for the centroid of the feature (deg)",
|
555
583
|
"type": "number"
|
556
584
|
},
|
557
|
-
"
|
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
|
-
"
|
604
|
+
"site_area_sqft": {
|
577
605
|
"description": "Area of the entire site or lot (ft^2)",
|
578
606
|
"type": "number"
|
579
607
|
},
|
580
|
-
"
|
608
|
+
"floor_area_sqft": {
|
581
609
|
"description": "Building gross floor area (ft^2)",
|
582
610
|
"type": "number"
|
583
611
|
},
|
584
|
-
"
|
612
|
+
"conditioned_area_sqft": {
|
585
613
|
"description": "Building conditioned floor area (ft^2)",
|
586
614
|
"type": "number"
|
587
615
|
},
|
588
|
-
"
|
616
|
+
"unconditioned_area_sqft": {
|
589
617
|
"description": "Building unconditioned floor area (ft^2)",
|
590
618
|
"type": "number"
|
591
619
|
},
|
592
|
-
"
|
620
|
+
"footprint_area_sqft": {
|
593
621
|
"description": "Building floorprint area (ft^2)",
|
594
622
|
"type": "number"
|
595
623
|
},
|
596
|
-
"
|
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
|
-
"
|
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
|
-
"
|
648
|
+
"parking_footprint_area_sqft": {
|
621
649
|
"description": "Parking floorprint area (ft^2)",
|
622
650
|
"type": "number"
|
623
651
|
},
|
624
|
-
"
|
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
|
-
"
|
674
|
+
"window_area_sqft": {
|
647
675
|
"description": "Exterior windows gross area (ft^2)",
|
648
676
|
"type": "object",
|
649
677
|
"properties": {
|
650
|
-
"
|
678
|
+
"north_window_area_sqft": {
|
651
679
|
"type": "number"
|
652
680
|
},
|
653
|
-
"
|
681
|
+
"south_window_area_sqft": {
|
654
682
|
"type": "number"
|
655
683
|
},
|
656
|
-
"
|
684
|
+
"east_window_area_sqft": {
|
657
685
|
"type": "number"
|
658
686
|
},
|
659
|
-
"
|
687
|
+
"west_window_area_sqft": {
|
660
688
|
"type": "number"
|
661
689
|
},
|
662
|
-
"
|
690
|
+
"total_window_area_sqft": {
|
663
691
|
"type": "number"
|
664
692
|
}
|
665
693
|
},
|
666
694
|
"required": [
|
667
|
-
"
|
695
|
+
"total_window_area_sqft"
|
668
696
|
],
|
669
697
|
"additionalProperties": false
|
670
698
|
},
|
671
|
-
"
|
699
|
+
"wall_area_sqft": {
|
672
700
|
"description": "exterior walls gross area (ft^2)",
|
673
701
|
"type": "object",
|
674
702
|
"properties": {
|
675
|
-
"
|
703
|
+
"north_wall_area_sqft": {
|
676
704
|
"type": "number"
|
677
705
|
},
|
678
|
-
"
|
706
|
+
"south_wall_area_sqft": {
|
679
707
|
"type": "number"
|
680
708
|
},
|
681
|
-
"
|
709
|
+
"east_wall_area_sqft": {
|
682
710
|
"type": "number"
|
683
711
|
},
|
684
|
-
"
|
712
|
+
"west_wall_area_sqft": {
|
685
713
|
"type": "number"
|
686
714
|
},
|
687
|
-
"
|
715
|
+
"total_wall_area_sqft": {
|
688
716
|
"type": "number"
|
689
717
|
}
|
690
718
|
},
|
691
719
|
"required": [
|
692
|
-
"
|
693
|
-
"
|
694
|
-
"
|
695
|
-
"
|
696
|
-
"
|
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
|
-
"
|
728
|
+
"roof_area_sqft": {
|
701
729
|
"type": "object",
|
702
730
|
"properties": {
|
703
|
-
"
|
731
|
+
"equipment_roof_area_sqft": {
|
704
732
|
"type": "number"
|
705
733
|
},
|
706
|
-
"
|
734
|
+
"photovoltaic_roof_area_sqft": {
|
707
735
|
"type": "number"
|
708
736
|
},
|
709
|
-
"
|
737
|
+
"available_roof_area_sqft": {
|
710
738
|
"description": "gross roof area (ft^2)",
|
711
739
|
"type": "number"
|
712
740
|
},
|
713
|
-
"
|
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
|
-
"
|
747
|
+
"total_roof_area_sqft"
|
720
748
|
],
|
721
749
|
"additionalProperties": false
|
722
750
|
},
|
723
|
-
"
|
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
|
-
"
|
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
|
-
"
|
738
|
-
"
|
739
|
-
"
|
740
|
-
"
|
741
|
-
"
|
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
|
-
"
|
745
|
-
"
|
746
|
-
"
|
772
|
+
"window_area_sqft",
|
773
|
+
"wall_area_sqft",
|
774
|
+
"roof_area_sqft"
|
747
775
|
],
|
748
776
|
"additionalProperties": false
|
749
777
|
},
|