urbanopt-reporting 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.rubocop.yml +10 -0
  4. data/CHANGELOG.md +7 -0
  5. data/CONTRIBUTING.md +58 -0
  6. data/Gemfile +18 -0
  7. data/Jenkinsfile +10 -0
  8. data/LICENSE.md +27 -0
  9. data/README.md +40 -0
  10. data/Rakefile +45 -0
  11. data/doc_templates/LICENSE.md +27 -0
  12. data/doc_templates/README.md.erb +42 -0
  13. data/doc_templates/copyright_erb.txt +31 -0
  14. data/doc_templates/copyright_js.txt +4 -0
  15. data/doc_templates/copyright_ruby.txt +29 -0
  16. data/lib/measures/.rubocop.yml +5 -0
  17. data/lib/measures/default_feature_reports/LICENSE.md +27 -0
  18. data/lib/measures/default_feature_reports/README.md +26 -0
  19. data/lib/measures/default_feature_reports/README.md.erb +42 -0
  20. data/lib/measures/default_feature_reports/measure.rb +1012 -0
  21. data/lib/measures/default_feature_reports/measure.xml +160 -0
  22. data/lib/urbanopt/reporting.rb +37 -0
  23. data/lib/urbanopt/reporting/default_reports.rb +44 -0
  24. data/lib/urbanopt/reporting/default_reports/construction_cost.rb +169 -0
  25. data/lib/urbanopt/reporting/default_reports/date.rb +97 -0
  26. data/lib/urbanopt/reporting/default_reports/distributed_generation.rb +379 -0
  27. data/lib/urbanopt/reporting/default_reports/end_use.rb +159 -0
  28. data/lib/urbanopt/reporting/default_reports/end_uses.rb +140 -0
  29. data/lib/urbanopt/reporting/default_reports/extension.rb +15 -0
  30. data/lib/urbanopt/reporting/default_reports/feature_report.rb +266 -0
  31. data/lib/urbanopt/reporting/default_reports/generator.rb +92 -0
  32. data/lib/urbanopt/reporting/default_reports/location.rb +99 -0
  33. data/lib/urbanopt/reporting/default_reports/logger.rb +44 -0
  34. data/lib/urbanopt/reporting/default_reports/power_distribution.rb +103 -0
  35. data/lib/urbanopt/reporting/default_reports/program.rb +265 -0
  36. data/lib/urbanopt/reporting/default_reports/reporting_period.rb +300 -0
  37. data/lib/urbanopt/reporting/default_reports/scenario_report.rb +317 -0
  38. data/lib/urbanopt/reporting/default_reports/schema/README.md +33 -0
  39. data/lib/urbanopt/reporting/default_reports/schema/scenario_csv_columns.txt +34 -0
  40. data/lib/urbanopt/reporting/default_reports/schema/scenario_schema.json +857 -0
  41. data/lib/urbanopt/reporting/default_reports/solar_pv.rb +93 -0
  42. data/lib/urbanopt/reporting/default_reports/storage.rb +105 -0
  43. data/lib/urbanopt/reporting/default_reports/timeseries_csv.rb +300 -0
  44. data/lib/urbanopt/reporting/default_reports/validator.rb +112 -0
  45. data/lib/urbanopt/reporting/default_reports/wind.rb +92 -0
  46. data/lib/urbanopt/reporting/derived_extension.rb +63 -0
  47. data/lib/urbanopt/reporting/version.rb +35 -0
  48. data/urbanopt-reporting-gem.gemspec +33 -0
  49. metadata +176 -0
@@ -0,0 +1,33 @@
1
+ # URBANopt Scenario Schema
2
+
3
+ The URBANopt Scenario Gem includes functionality for defining scenarios, running simulations, and post-processing results. An URBANopt Scenario describes a specific set of options to apply to each Feature in a FeatureFile (e.g. each GeoJSON Feature in an URBANopt GeoJSON File). User defined SimulationMapper classes translate each Feature to a SimulationDir which is a directory containing simulation input files. A ScenarioRunner is used to perform simulations for each SimulationDir. Finally, a ScenarioPostProcessor can run on a Scenario to generate scenario level results. The [URBANopt Scenario Gem Design Document](https://docs.google.com/document/d/1ExcGuHliaSvPlrYevAJTSV8XAtTQXz_KQqH3p4iQDwg/edit) describes the gem in more detail. The [URBANopt Example Project](https://github.com/urbanopt/urbanopt-example-project) demonstrates how to use the URBANopt Scenario Gem to perform a scenario analysis.
4
+
5
+ ## Reporting output units
6
+
7
+ **JSON Output Units**
8
+
9
+ - energy outputs: kbtu
10
+ - water rate outputs : GPM (gallon per minute)
11
+ - mass flow rate outputs : lbs/min
12
+ - Temperature outputs : °F
13
+ - area output: sf
14
+ - measured distance output: ft
15
+ - cost outputs: $
16
+
17
+ **CSV Output Units**
18
+
19
+ | output | unit |
20
+ | -----------------------------------------| ------- |
21
+ | Electricity:Facility | kWh |
22
+ | ElectricityProduced:Facility | kWh |
23
+ | Gas:Facility | kBtu |
24
+ | DistrictCooling:Facility | kWh |
25
+ | DistrictHeating:Facility | kWh |
26
+ | District Cooling Chilled Water Rate | GPM |
27
+ | District Cooling Mass Flow Rate | kg/s |
28
+ | District Cooling Inlet Temperature | °C |
29
+ | District Cooling Outlet Temperature | °C |
30
+ | District Heating Hot Water Rate | GPM |
31
+ | District Heating Mass Flow Rate | kg/s |
32
+ | District Heating Inlet Temperature | °C |
33
+ | District Heating Outlet Temperature | °C |
@@ -0,0 +1,34 @@
1
+ Datetime
2
+ Electricity:Facility
3
+ ElectricityProduced:Facility
4
+ Gas:Facility
5
+ Cooling:Electricity
6
+ Heating:Electricity
7
+ InteriorLights:Electricity
8
+ ExteriorLights:Electricity
9
+ InteriorEquipment:Electricity
10
+ Fans:Electricity
11
+ Pumps:Electricity
12
+ WaterSystems:Electricity
13
+ HeatRejection:Electricity
14
+ HeatRejection:Gas
15
+ Heating:Gas
16
+ WaterSystems:Gas
17
+ InteriorEquipment:Gas
18
+ DistrictCooling:Facility
19
+ DistrictHeating:Facility
20
+ District Cooling Chilled Water Rate
21
+ District Cooling Mass Flow Rate
22
+ District Cooling Inlet Temperature
23
+ District Cooling Outlet Temperature
24
+ District Heating Hot Water Rate
25
+ District Heating Mass Flow Rate
26
+ District Heating Inlet Temperature
27
+ District Heating Outlet Temperature
28
+ Net Electric Energy
29
+ Electricity:Facility Power
30
+ ElectricityProduced:Facility Power
31
+ Electricity:Facility Apparent Power
32
+ ElectricityProduced:Facility Apparent Power
33
+ Net Power
34
+ Net Apparent Power
@@ -0,0 +1,857 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "description": "Comment describing your JSON Schema",
4
+ "type": "object",
5
+ "properties": {
6
+ "scenario_report": {
7
+ "$ref": "#/definitions/ScenarioReport"
8
+ },
9
+ "feature_reports": {
10
+ "description": "features of each data point in the scenario",
11
+ "type": "array",
12
+ "items": {
13
+ "$ref": "#/definitions/FeatureReport"
14
+ }
15
+ }
16
+ },
17
+ "required": [
18
+ "scenario_report"
19
+ ],
20
+ "additionalProperties": false,
21
+ "definitions": {
22
+ "ScenarioReport": {
23
+ "type": "object",
24
+ "properties": {
25
+ "id": {
26
+ "type": "string"
27
+ },
28
+ "name": {
29
+ "type": "string"
30
+ },
31
+ "directory_name": {
32
+ "type": "string"
33
+ },
34
+ "timesteps_per_hour": {
35
+ "$ref": "#/definitions/TimestepsPerHour"
36
+ },
37
+ "number_of_not_started_simulations": {
38
+ "type": "number"
39
+ },
40
+ "number_of_started_simulations": {
41
+ "type": "number"
42
+ },
43
+ "number_of_complete_simulations": {
44
+ "type": "number"
45
+ },
46
+ "number_of_failed_simulations": {
47
+ "type": "number"
48
+ },
49
+ "location": {
50
+ "$ref": "#/definitions/Location"
51
+ },
52
+ "timeseries_csv": {
53
+ "$ref": "#/definitions/TimeseriesCSV"
54
+ },
55
+ "program": {
56
+ "$ref": "#/definitions/Program"
57
+ },
58
+ "construction_costs": {
59
+ "$ref": "#/definitions/ConstructionCosts"
60
+ },
61
+ "reporting_periods": {
62
+ "$ref": "#/definitions/ReportingPeriods"
63
+ },
64
+ "distributed_generation": {
65
+ "$ref": "#/definitions/DistributedGeneration"
66
+ }
67
+ },
68
+ "required": [
69
+ "id",
70
+ "name",
71
+ "directory_name",
72
+ "timesteps_per_hour",
73
+ "number_of_not_started_simulations",
74
+ "number_of_started_simulations",
75
+ "number_of_complete_simulations",
76
+ "number_of_failed_simulations",
77
+ "program"
78
+ ],
79
+ "additionalProperties": false
80
+ },
81
+ "DistributedGeneration": {
82
+ "type": "object",
83
+ "properties": {
84
+ "lcc_us_dollars": {
85
+ "description": "Optimal lifecycle cost",
86
+ "type": "number"
87
+ },
88
+ "npv_us_dollars": {
89
+ "description": "Net present value of savings realized by the project",
90
+ "type": "number"
91
+ },
92
+ "year_one_energy_cost_us_dollars": {
93
+ "description": "Optimal year one utility energy cost",
94
+ "type": "number"
95
+ },
96
+ "year_one_demand_cost_us_dollars": {
97
+ "description": "Optimal year one utility demand cost",
98
+ "type": "number"
99
+ },
100
+ "year_one_bill_us_dollars": {
101
+ "description": "Optimal year one utility bill",
102
+ "type": "number"
103
+ },
104
+ "total_energy_cost_us_dollars": {
105
+ "description": "Total utility energy cost over the lifecycle, after-tax",
106
+ "type": "number"
107
+ },
108
+ "SolarPV": {
109
+ "$ref": "#/definitions/SolarPV"
110
+ },
111
+ "Wind": {
112
+ "$ref": "#/definitions/Wind"
113
+ },
114
+ "Generator": {
115
+ "$ref": "#/definitions/Generator"
116
+ },
117
+ "Storage": {
118
+ "$ref": "#/definitions/Storage"
119
+ }
120
+ }
121
+ },
122
+ "SolarPV": {
123
+ "type": "object",
124
+ "properties": {
125
+ "size_kw": {
126
+ "description": "rated power in kW",
127
+ "type": "string"
128
+ }
129
+ }
130
+ },
131
+ "Wind": {
132
+ "type": "object",
133
+ "properties": {
134
+ "size_kw": {
135
+ "description": "rated power in kW",
136
+ "type": "string"
137
+ }
138
+ }
139
+ },
140
+ "Generator": {
141
+ "type": "object",
142
+ "properties": {
143
+ "size_kw": {
144
+ "description": "rated power in kW",
145
+ "type": "string"
146
+ }
147
+ }
148
+ },
149
+ "Storage": {
150
+ "type": "object",
151
+ "properties": {
152
+ "size_kw": {
153
+ "description": "rated power in kW",
154
+ "type": "string"
155
+ },
156
+ "size_kw": {
157
+ "description": "rated capacity in kWh",
158
+ "type": "string"
159
+ }
160
+ }
161
+ },
162
+ "FeatureReport": {
163
+ "type": "object",
164
+ "properties": {
165
+ "id": {
166
+ "description": "Id refers to the id of a building/feature",
167
+ "type": "string"
168
+ },
169
+ "name": {
170
+ "description": "name refers to the name of the feature (eg. Building 1, tranformer 5)",
171
+ "type": "string"
172
+ },
173
+ "directory_name": {
174
+ "type": "string"
175
+ },
176
+ "feature_type": {
177
+ "type": "string",
178
+ "enum": [
179
+ "Building",
180
+ "District System",
181
+ "Transformer"
182
+ ]
183
+ },
184
+ "timesteps_per_hour": {
185
+ "$ref": "#/definitions/TimestepsPerHour"
186
+ },
187
+ "simulation_status": {
188
+ "type": "string",
189
+ "enum": [
190
+ "Not Started",
191
+ "Started",
192
+ "Complete",
193
+ "Failed"
194
+ ]
195
+ },
196
+ "timeseries_csv": {
197
+ "$ref": "#/definitions/TimeseriesCSV"
198
+ },
199
+ "location": {
200
+ "$ref": "#/definitions/Location"
201
+ },
202
+ "program": {
203
+ "$ref": "#/definitions/Program"
204
+ },
205
+ "design_parameters": {
206
+ "$ref": "#/definitions/DesignParameters"
207
+ },
208
+ "construction_costs": {
209
+ "$ref": "#/definitions/ConstructionCosts"
210
+ },
211
+ "reporting_periods": {
212
+ "$ref": "#/definitions/ReportingPeriods"
213
+ },
214
+ "distributed_generation": {
215
+ "$ref": "#/definitions/DistributedGeneration"
216
+ },
217
+ "power_distribution": {
218
+ "$ref": "#/definitions/PowerDistribution"
219
+ }
220
+ },
221
+ "required": [
222
+ "id",
223
+ "name",
224
+ "directory_name",
225
+ "feature_type",
226
+ "timesteps_per_hour",
227
+ "simulation_status"
228
+ ],
229
+ "additionalProperties": false
230
+ },
231
+ "ReportingPeriods": {
232
+ "type": "array",
233
+ "items": {
234
+ "$ref": "#/definitions/ReportingPeriod"
235
+ }
236
+ },
237
+ "ReportingPeriod": {
238
+ "description": "Non-overlapping reporting periods",
239
+ "type": "object",
240
+ "properties": {
241
+ "id": {
242
+ "description": "Id refers to the id of the reporting period. Ids of reporting periods are matched across simulations, so the same period of time gets the same id for all simulations.",
243
+ "type": "number"
244
+ },
245
+ "name": {
246
+ "description": "name refers to the name of the reporting period(eg. Annual, January)",
247
+ "type": "string"
248
+ },
249
+ "multiplier": {
250
+ "description": "Multiplier used if this reporting period is representative of mulitple periods. For example one week simulation that represents entire month.",
251
+ "type": "number",
252
+ "default": 1
253
+ },
254
+ "start_date": {
255
+ "$ref": "#/definitions/Date"
256
+ },
257
+ "end_date": {
258
+ "$ref": "#/definitions/Date"
259
+ },
260
+ "total_site_energy": {
261
+ "description": "Total energy used on site, does not include generation (kBtu)",
262
+ "type": "number"
263
+ },
264
+ "total_source_energy": {
265
+ "description": "Total source energy used, does not include generation (kBtu)",
266
+ "type": "number"
267
+ },
268
+ "net_site_energy": {
269
+ "description": "Net site energy (kBtu)",
270
+ "type": "number"
271
+ },
272
+ "net_source_energy": {
273
+ "description": "Net source energy (kBtu)",
274
+ "type": "number"
275
+ },
276
+ "total_utility_cost": {
277
+ "description": "Total utility cost",
278
+ "type": "number"
279
+ },
280
+ "net_utility_cost": {
281
+ "description": "Net utility cost for reporting period includes generation",
282
+ "type": "number"
283
+ },
284
+ "utility_costs": {
285
+ "type": "array",
286
+ "items": {
287
+ "$ref": "#/definitions/UtilityCost"
288
+ }
289
+ },
290
+ "electricity": {
291
+ "description": "Sum of all electricity used, does not include electricity produced (kWh)",
292
+ "type": "number"
293
+ },
294
+ "natural_gas": {
295
+ "description": "Sum of all natural gas end uses consumption (kBtu)",
296
+ "type": "number"
297
+ },
298
+ "additional_fuel": {
299
+ "description": "Sum of all additional fuel end uses consumption (kBtu)",
300
+ "type": "number"
301
+ },
302
+ "district_cooling": {
303
+ "description": "Sum of all distric cooling end uses consumption (kBtu)",
304
+ "type": "number"
305
+ },
306
+ "district_heating": {
307
+ "description": "Sum of all distric heating end uses consumption (kBtu)",
308
+ "type": "number"
309
+ },
310
+ "water": {
311
+ "description": "Sum of all water end uses consumption (ft^3)",
312
+ "type": "number"
313
+ },
314
+ "electricity_produced": {
315
+ "description": "Sum of all electricity produced (kWh)",
316
+ "type": "number"
317
+ },
318
+ "end_uses": {
319
+ "$ref": "#/definitions/EndUses"
320
+ },
321
+ "energy_production": {
322
+ "description": "Energy produced for reporting period. Electricity reported in kWh, water in m^3, all others in kBtu.",
323
+ "type": "object",
324
+ "properties": {
325
+ "electricity_produced": {
326
+ "type": "object",
327
+ "properties": {
328
+ "photovoltaic": {
329
+ "type": "number"
330
+ }
331
+ },
332
+ "additionalProperties": false
333
+ }
334
+ },
335
+ "additionalProperties": false
336
+ },
337
+ "comfort_result": {
338
+ "$ref": "#/definitions/ComfortResult"
339
+ }
340
+ },
341
+ "additionalProperties": false
342
+ },
343
+ "Date": {
344
+ "type": "object",
345
+ "properties": {
346
+ "month": {
347
+ "type": "integer"
348
+ },
349
+ "day_of_month": {
350
+ "type": "integer"
351
+ },
352
+ "year": {
353
+ "type": "integer"
354
+ }
355
+ },
356
+ "additionalProperties": false
357
+ },
358
+ "EndUses": {
359
+ "description": "End uses for reporting period. Does not include energy produced. Electricity reported in kWh, water in m^3, all others in kBtu.",
360
+ "type": "object",
361
+ "properties": {
362
+ "electricity": {
363
+ "$ref": "#/definitions/EndUse"
364
+ },
365
+ "natural_gas": {
366
+ "$ref": "#/definitions/EndUse"
367
+ },
368
+ "additional_fuel": {
369
+ "$ref": "#/definitions/EndUse"
370
+ },
371
+ "district_cooling": {
372
+ "$ref": "#/definitions/EndUse"
373
+ },
374
+ "district_heating": {
375
+ "$ref": "#/definitions/EndUse"
376
+ },
377
+ "water": {
378
+ "$ref": "#/definitions/EndUse"
379
+ }
380
+ },
381
+ "additionalProperties": false
382
+ },
383
+ "EndUse": {
384
+ "type": "object",
385
+ "properties": {
386
+ "heating": {
387
+ "type": "number"
388
+ },
389
+ "cooling": {
390
+ "type": "number"
391
+ },
392
+ "interior_lighting": {
393
+ "type": "number"
394
+ },
395
+ "exterior_lighting": {
396
+ "type": "number"
397
+ },
398
+ "interior_equipment": {
399
+ "type": "number"
400
+ },
401
+ "exterior_equipment": {
402
+ "type": "number"
403
+ },
404
+ "fans": {
405
+ "type": "number"
406
+ },
407
+ "pumps": {
408
+ "type": "number"
409
+ },
410
+ "heat_rejection": {
411
+ "type": "number"
412
+ },
413
+ "humidification": {
414
+ "type": "number"
415
+ },
416
+ "heat_recovery": {
417
+ "type": "number"
418
+ },
419
+ "water_systems": {
420
+ "type": "number"
421
+ },
422
+ "refrigeration": {
423
+ "type": "number"
424
+ },
425
+ "generators": {
426
+ "type": "number"
427
+ }
428
+ },
429
+ "additionalProperties": false
430
+ },
431
+ "ComfortResult": {
432
+ "type": "object",
433
+ "properties": {
434
+ "time_setpoint_not_met_during_occupied_cooling": {
435
+ "description": "(hrs)",
436
+ "type": "number"
437
+ },
438
+ "time_setpoint_not_met_during_occupied_heating": {
439
+ "description": "(hrs)",
440
+ "type": "number"
441
+ },
442
+ "time_setpoint_not_met_during_occupied_hours": {
443
+ "description": "(hrs)",
444
+ "type": "number"
445
+ },
446
+ "hours_out_of_comfort_bounds_PMV": {
447
+ "type": "number"
448
+ },
449
+ "hours_out_of_comfort_bounds_PPD": {
450
+ "type": "number"
451
+ }
452
+ },
453
+ "additionalProperties": false
454
+ },
455
+ "ConstructionCosts": {
456
+ "type": "array",
457
+ "items": {
458
+ "$ref": "#/definitions/ConstructionCost"
459
+ }
460
+ },
461
+ "ConstructionCost": {
462
+ "description": "Program related information, does not change in time",
463
+ "type": "object",
464
+ "properties": {
465
+ "category": {
466
+ "type": "string",
467
+ "enum": [
468
+ "Construction",
469
+ "Building",
470
+ "Space",
471
+ "ThermalZone",
472
+ "AirLoop",
473
+ "PlantLoop",
474
+ "ZoneHVAC",
475
+ "Lights",
476
+ "Luminaire",
477
+ "Equipment",
478
+ "HVACComponent",
479
+ "ZoneHVACComponent"
480
+ ]
481
+ },
482
+ "item_name": {
483
+ "description": "Name of the item being costed, e.g. the name of the exterior wall construction",
484
+ "type": "string"
485
+ },
486
+ "unit_cost": {
487
+ "description": "Cost per unit of item, e.g. cost per area of construction. This can be adjusted in post processing.",
488
+ "type": "number"
489
+ },
490
+ "cost_units": {
491
+ "description": "Unit of cost for this item",
492
+ "type": "string",
493
+ "enum": [
494
+ "CostPerEach",
495
+ "CostPerFt2",
496
+ "CostPerKW",
497
+ "CostPerCFM"
498
+ ]
499
+ },
500
+ "item_quantity": {
501
+ "description": "Amount of the item in units corresponding to cost_units",
502
+ "type": "number"
503
+ },
504
+ "total_cost": {
505
+ "description": "Total cost is unit_cost multiplied by item_quantity. Can be updated if unit_cost is changed.",
506
+ "type": "number"
507
+ }
508
+ },
509
+ "additionalProperties": false
510
+ },
511
+ "UtilityCost": {
512
+ "type": "object",
513
+ "properties": {
514
+ "fuel_type": {
515
+ "type": "string",
516
+ "enum": [
517
+ "Electricity",
518
+ "Natural Gas",
519
+ "District Cooling",
520
+ "District Heating",
521
+ "Additional Fuel",
522
+ "Water"
523
+ ]
524
+ },
525
+ "total_cost": {
526
+ "description": "($)",
527
+ "type": "number"
528
+ },
529
+ "usage_cost": {
530
+ "description": "($)",
531
+ "type": "number"
532
+ },
533
+ "demand_cost": {
534
+ "description": "($)",
535
+ "type": "number"
536
+ }
537
+ },
538
+ "additionalProperties": false
539
+ },
540
+ "Location": {
541
+ "type": "object",
542
+ "properties": {
543
+ "latitude": {
544
+ "description": "(deg)",
545
+ "type": "number"
546
+ },
547
+ "longitude": {
548
+ "description": "(deg)",
549
+ "type": "number"
550
+ },
551
+ "surface_elevation": {
552
+ "description": "The surface elevation (above NAVD88 datum) (ft).",
553
+ "type": "number"
554
+ },
555
+ "weather_filename": {
556
+ "description": "Name of EPW weather file.",
557
+ "type": "string"
558
+ }
559
+ },
560
+ "additionalProperties": false
561
+ },
562
+ "TimestepsPerHour": {
563
+ "type": "integer",
564
+ "minimum": 1,
565
+ "maximum": 60
566
+ },
567
+ "Program": {
568
+ "type": "object",
569
+ "properties": {
570
+ "site_area": {
571
+ "description": "Area of the entire site or lot (ft^2)",
572
+ "type": "number"
573
+ },
574
+ "floor_area": {
575
+ "description": "Building gross floor area (ft^2)",
576
+ "type": "number"
577
+ },
578
+ "conditioned_area": {
579
+ "description": "Building conditioned floor area (ft^2)",
580
+ "type": "number"
581
+ },
582
+ "unconditioned_area": {
583
+ "description": "Building unconditioned floor area (ft^2)",
584
+ "type": "number"
585
+ },
586
+ "footprint_area": {
587
+ "description": "Building floorprint area (ft^2)",
588
+ "type": "number"
589
+ },
590
+ "maximum_roof_height": {
591
+ "description": "Maximum height of the roof relative to surface elevation (ft)",
592
+ "type": "number"
593
+ },
594
+ "maximum_number_of_stories": {
595
+ "description": "The maximum number of building stories, sum of number of above and below ground stories.",
596
+ "type": "number"
597
+ },
598
+ "maximum_number_of_stories_above_ground": {
599
+ "description": "The maximum number of building stories above ground",
600
+ "type": "number"
601
+ },
602
+ "parking_area": {
603
+ "description": "Parking gross area (ft^2)",
604
+ "type": "number"
605
+ },
606
+ "number_of_parking_spaces": {
607
+ "description": "Number of parking spaces",
608
+ "type": "number"
609
+ },
610
+ "number_of_parking_spaces_charging": {
611
+ "description": "Number of parking spaces with electric vehicle charging",
612
+ "type": "number"
613
+ },
614
+ "parking_footprint_area": {
615
+ "description": "Parking floorprint area (ft^2)",
616
+ "type": "number"
617
+ },
618
+ "maximum_parking_height": {
619
+ "description": "Maximum height of the parking structure relative to surface elevation (ft)",
620
+ "type": "number"
621
+ },
622
+ "maximum_number_of_parking_stories": {
623
+ "description": "The maximum number of parking stories, sum of number of above and below ground stories.",
624
+ "type": "number"
625
+ },
626
+ "maximum_number_of_parking_stories_above_ground": {
627
+ "description": "The maximum number of parking stories above ground",
628
+ "type": "number"
629
+ },
630
+ "number_of_residential_units": {
631
+ "description": "Total number of residential units.",
632
+ "type": "integer"
633
+ },
634
+ "building_types": {
635
+ "type": "array",
636
+ "items": {
637
+ "$ref": "#/definitions/BuildingType"
638
+ }
639
+ },
640
+ "window_area": {
641
+ "description": "Exterior windows gross area (ft^2)",
642
+ "type": "object",
643
+ "properties": {
644
+ "north_window_area": {
645
+ "type": "number"
646
+ },
647
+ "south_window_area": {
648
+ "type": "number"
649
+ },
650
+ "east_window_area": {
651
+ "type": "number"
652
+ },
653
+ "west_window_area": {
654
+ "type": "number"
655
+ },
656
+ "total_window_area": {
657
+ "type": "number"
658
+ }
659
+ },
660
+ "required": [
661
+ "total_window_area"
662
+ ],
663
+ "additionalProperties": false
664
+ },
665
+ "wall_area": {
666
+ "description": "exterior walls gross area (ft^2)",
667
+ "type": "object",
668
+ "properties": {
669
+ "north_wall_area": {
670
+ "type": "number"
671
+ },
672
+ "south_wall_area": {
673
+ "type": "number"
674
+ },
675
+ "east_wall_area": {
676
+ "type": "number"
677
+ },
678
+ "west_wall_area": {
679
+ "type": "number"
680
+ },
681
+ "total_wall_area": {
682
+ "type": "number"
683
+ }
684
+ },
685
+ "required": [
686
+ "north_wall_area",
687
+ "south_wall_area",
688
+ "east_wall_area",
689
+ "west_wall_area",
690
+ "total_wall_area"
691
+ ],
692
+ "additionalProperties": false
693
+ },
694
+ "roof_area": {
695
+ "type": "object",
696
+ "properties": {
697
+ "equipment_roof_area": {
698
+ "type": "number"
699
+ },
700
+ "photovoltaic_roof_area": {
701
+ "type": "number"
702
+ },
703
+ "available_roof_area": {
704
+ "description": "gross roof area (ft^2)",
705
+ "type": "number"
706
+ },
707
+ "total_roof_area": {
708
+ "description": "Exterior roofs gross area (ft^2)",
709
+ "type": "number"
710
+ }
711
+ },
712
+ "required": [
713
+ "total_roof_area"
714
+ ],
715
+ "additionalProperties": false
716
+ },
717
+ "orientation": {
718
+ "description": "Rotation of longest axis from East-West,about up axis (deg)",
719
+ "type": "number"
720
+ },
721
+ "aspect_ratio": {
722
+ "description": "Ratio of longest to shortest axis",
723
+ "type": "number"
724
+ },
725
+ "total_construction_cost": {
726
+ "description": "total construction cost calculated from the defined cost per floor area ($)",
727
+ "type": "number"
728
+ }
729
+ },
730
+ "required": [
731
+ "floor_area",
732
+ "conditioned_area",
733
+ "unconditioned_area",
734
+ "footprint_area",
735
+ "maximum_roof_height",
736
+ "number_of_residential_units",
737
+ "building_types",
738
+ "window_area",
739
+ "wall_area",
740
+ "roof_area"
741
+ ],
742
+ "additionalProperties": false
743
+ },
744
+ "BuildingType": {
745
+ "type": "object",
746
+ "properties": {
747
+ "building_type": {
748
+ "description": "Primary building space type",
749
+ "type": "string",
750
+ "enum": [
751
+ "Single-Family",
752
+ "Multifamily (2 to 4 units)",
753
+ "Multifamily (5 or more units)",
754
+ "Mobile Home",
755
+ "Vacant",
756
+ "Office",
757
+ "Laboratory",
758
+ "Nonrefrigerated warehouse",
759
+ "Food sales",
760
+ "Public order and safety",
761
+ "Outpatient health care",
762
+ "Refrigerated warehouse",
763
+ "Religious worship",
764
+ "Public assembly",
765
+ "Education",
766
+ "Food service",
767
+ "Inpatient health care",
768
+ "Nursing",
769
+ "Lodging",
770
+ "Strip shopping mall",
771
+ "Enclosed mall",
772
+ "Retail other than mall",
773
+ "Service"
774
+ ]
775
+ },
776
+ "maximum_occupancy": {
777
+ "description": "Maximum number of occupants ",
778
+ "type": "number"
779
+ },
780
+ "floor_area": {
781
+ "description": "Building gross floor area of this type (ft^2)",
782
+ "type": "number"
783
+ }
784
+ },
785
+ "required": [
786
+ "building_type",
787
+ "maximum_occupancy",
788
+ "floor_area"
789
+ ],
790
+ "additionalProperties": false
791
+ },
792
+ "DesignParameters": {
793
+ "type": "object",
794
+ "properties": {
795
+ "district_cooling_chilled_water_rate": {
796
+ "type": "number"
797
+ },
798
+ "district_cooling_mass_flow_rate": {
799
+ "type": "number"
800
+ },
801
+ "district_cooling_inlet_temperature": {
802
+ "type": "number"
803
+ },
804
+ "district_cooling_outlet_temperature": {
805
+ "type": "number"
806
+ },
807
+ "district_heating_hot_water_rate": {
808
+ "type": "number"
809
+ },
810
+ "district_heating_mass_flow_rate": {
811
+ "type": "number"
812
+ },
813
+ "district_heating_inlet_temperature": {
814
+ "type": "number"
815
+ },
816
+ "district_heating_outlet_temperature": {
817
+ "type": "number"
818
+ }
819
+ },
820
+ "additionalProperties": false
821
+ },
822
+ "TimeseriesCSV": {
823
+ "type": "object",
824
+ "properties": {
825
+ "path": {
826
+ "type": "string"
827
+ },
828
+ "first_report_datetime": {
829
+ "type": "string"
830
+ },
831
+ "column_names": {
832
+ "type": "array",
833
+ "items": {
834
+ "type": "string"
835
+ }
836
+ }
837
+ },
838
+ "required": [
839
+ "path",
840
+ "first_report_datetime",
841
+ "column_names"
842
+ ],
843
+ "additionalProperties": false
844
+ },
845
+ "PowerDistribution": {
846
+ "type": "object",
847
+ "properties": {
848
+ "over_voltage_hours": {
849
+ "type": "number"
850
+ },
851
+ "under_voltage_hours": {
852
+ "type": "number"
853
+ }
854
+ }
855
+ }
856
+ }
857
+ }