urbanopt-scenario 0.1.1

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