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.
- 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
|
},
|