urbanopt-reporting 0.1.0

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