urbanopt-geojson 0.2.0.pre3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +1 -1
  3. data/CHANGELOG.md +77 -0
  4. data/CONTRIBUTING.md +1 -1
  5. data/Gemfile +0 -3
  6. data/LICENSE.md +1 -1
  7. data/RDOC_MAIN.md +1 -1
  8. data/README.md +1 -1
  9. data/Rakefile +2 -2
  10. data/doc_templates/LICENSE.md +1 -1
  11. data/doc_templates/copyright_erb.txt +1 -1
  12. data/doc_templates/copyright_js.txt +1 -1
  13. data/doc_templates/copyright_ruby.txt +1 -1
  14. data/docs/README.md +1 -1
  15. data/docs/package-lock.json +5206 -6883
  16. data/docs/package.json +12 -9
  17. data/lib/measures/.rubocop.yml +1 -1
  18. data/lib/measures/urban_geometry_creation/LICENSE.md +1 -1
  19. data/lib/measures/urban_geometry_creation/README.md +2 -2
  20. data/lib/measures/urban_geometry_creation/measure.rb +21 -2
  21. data/lib/measures/urban_geometry_creation/measure.xml +17 -20
  22. data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +1 -1
  23. data/lib/measures/urban_geometry_creation_zoning/README.md +1 -1
  24. data/lib/measures/urban_geometry_creation_zoning/measure.rb +5 -4
  25. data/lib/measures/urban_geometry_creation_zoning/measure.xml +15 -18
  26. data/lib/urbanopt-geojson.rb +1 -1
  27. data/lib/urbanopt/geojson.rb +2 -1
  28. data/lib/urbanopt/geojson/building.rb +74 -26
  29. data/lib/urbanopt/geojson/derived_extension.rb +1 -1
  30. data/lib/urbanopt/geojson/district_system.rb +1 -1
  31. data/lib/urbanopt/geojson/feature.rb +116 -2
  32. data/lib/urbanopt/geojson/geo_file.rb +28 -29
  33. data/lib/urbanopt/geojson/helper.rb +42 -7
  34. data/lib/urbanopt/geojson/logging.rb +1 -1
  35. data/lib/urbanopt/geojson/mapper_classes.rb +47 -47
  36. data/lib/urbanopt/geojson/model.rb +3 -4
  37. data/lib/urbanopt/geojson/region.rb +1 -1
  38. data/lib/urbanopt/geojson/scale_area.rb +91 -0
  39. data/lib/urbanopt/geojson/schema/building_properties.json +252 -80
  40. data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +9 -9
  41. data/lib/urbanopt/geojson/schema/electrical_junction_properties.json +4 -5
  42. data/lib/urbanopt/geojson/schema/thermal_connector_properties.json +1 -1
  43. data/lib/urbanopt/geojson/schema/thermal_junction_properties.json +1 -1
  44. data/lib/urbanopt/geojson/update_areas.rb +2 -2
  45. data/lib/urbanopt/geojson/validate_geojson.rb +3 -1
  46. data/lib/urbanopt/geojson/version.rb +2 -2
  47. data/lib/urbanopt/geojson/workflows/building.osw.out +4 -4
  48. data/lib/urbanopt/geojson/zoning.rb +21 -16
  49. data/urbanopt-geojson-gem.gemspec +10 -17
  50. metadata +29 -48
  51. data/lib/change_log.rb +0 -147
  52. data/lib/measures/urban_geometry_creation/tests/nrel_stm_footprints.geojson +0 -3238
  53. data/lib/measures/urban_geometry_creation/tests/shadowed_tests.rb +0 -80
  54. data/lib/measures/urban_geometry_creation/tests/urban_geometry_creation_test.rb +0 -139
  55. data/lib/measures/urban_geometry_creation_zoning/tests/nrel_stm_footprints.geojson +0 -3238
  56. data/lib/measures/urban_geometry_creation_zoning/tests/urban_geometry_creation_zoning_test.rb +0 -139
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -65,17 +65,16 @@ module URBANopt
65
65
  # * +runner+ - _Type:String_ - Measure run's instance of +OpenStudio::Measure::OSRunner+ .
66
66
  def self.change_adjacent_surfaces_to_adiabatic(model, runner)
67
67
  runner.registerInfo('Changing adjacent surfaces to adiabatic')
68
- model.getSurfaces.each do |surface|
68
+ model.getSurfaces.sort.each do |surface|
69
69
  adjacent_surface = surface.adjacentSurface
70
70
  if !adjacent_surface.empty?
71
71
  surface_construction = surface.construction
72
72
  if !surface_construction.empty?
73
73
  surface.setConstruction(surface_construction.get)
74
74
  end
75
- surface.setOutsideBoundaryCondition('Adiabatic')
76
-
77
75
  adjacent_surface_construction = adjacent_surface.get.construction
78
76
  if !adjacent_surface_construction.empty?
77
+ surface.setOutsideBoundaryCondition('Adiabatic')
79
78
  adjacent_surface.get.setConstruction(adjacent_surface_construction.get)
80
79
  end
81
80
  adjacent_surface.get.setOutsideBoundaryCondition('Adiabatic')
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt, Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -0,0 +1,91 @@
1
+ # *********************************************************************************
2
+ # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
3
+ # contributors. All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without modification,
6
+ # are permitted provided that the following conditions are met:
7
+ #
8
+ # Redistributions of source code must retain the above copyright notice, this list
9
+ # of conditions and the following disclaimer.
10
+ #
11
+ # Redistributions in binary form must reproduce the above copyright notice, this
12
+ # list of conditions and the following disclaimer in the documentation and/or other
13
+ # materials provided with the distribution.
14
+ #
15
+ # Neither the name of the copyright holder nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without specific
17
+ # prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
+ # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
+ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22
+ # IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
23
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
24
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25
+ # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27
+ # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
29
+ # *********************************************************************************
30
+ require 'json'
31
+ require 'net/http'
32
+ require 'uri'
33
+ require 'openssl'
34
+ require 'bigdecimal/newton'
35
+
36
+ module Newton
37
+ def self.jacobian(f, fx, x)
38
+ Jacobian.jacobian(f, fx, x)
39
+ end
40
+
41
+ def self.ludecomp(a, n, zero = 0, one = 1)
42
+ LUSolve.ludecomp(a, n, zero, one)
43
+ end
44
+
45
+ def self.lusolve(a, b, ps, zero = 0.0)
46
+ LUSolve.lusolve(a, b, ps, zero)
47
+ end
48
+ end
49
+
50
+ module URBANopt
51
+ module GeoJSON
52
+ class ScaleArea
53
+ def initialize(vertices, desired_area, runner, eps)
54
+ @vertices = vertices
55
+ @centroid = OpenStudio.getCentroid(vertices)
56
+ raise "Cannot compute centroid for '#{vertices}'" if @centroid.empty?
57
+ @centroid = @centroid.get
58
+ @desired_area = desired_area
59
+ @new_vertices = vertices
60
+ @runner = runner
61
+ @zero = BigDecimal('0.0')
62
+ @one = BigDecimal('1.0')
63
+ @two = BigDecimal('2.0')
64
+ @ten = BigDecimal('10.0')
65
+ @eps = eps # BigDecimal::new(eps)
66
+ end
67
+
68
+ attr_reader :zero
69
+
70
+ attr_reader :one
71
+
72
+ attr_reader :two
73
+
74
+ attr_reader :ten
75
+
76
+ attr_reader :eps
77
+
78
+ # compute value
79
+ def values(x)
80
+ @new_vertices = URBANopt::GeoJSON::Zoning.divide_floor_print(@vertices, x[0].to_f, @runner, scale = true)
81
+ new_area = OpenStudio.getArea(@new_vertices)
82
+ raise "Cannot compute area for '#{@new_vertices}'" if new_area.empty?
83
+ new_area = new_area.get
84
+
85
+ return [new_area - @desired_area]
86
+ end
87
+
88
+ attr_reader :new_vertices
89
+ end # ScaleArea
90
+ end # GeoJSON
91
+ end # URBANopt
@@ -87,7 +87,7 @@
87
87
  "type": "string"
88
88
  },
89
89
  "floor_area": {
90
- "description": "Usable floor area (ft^2).",
90
+ "description": "Usable floor area (ft^2). Required for residential buildings, this represents conditioned floor area.",
91
91
  "type": "number"
92
92
  },
93
93
  "number_of_stories": {
@@ -95,7 +95,7 @@
95
95
  "type": "integer"
96
96
  },
97
97
  "number_of_stories_above_ground": {
98
- "description": "The number of building stories above ground. Defaults to number_of_stories.",
98
+ "description": "The number of building stories above ground. Defaults to number_of_stories. Required for residential buildings.",
99
99
  "type": "integer"
100
100
  },
101
101
  "maximum_roof_height": {
@@ -111,6 +111,12 @@
111
111
  "Hip"
112
112
  ]
113
113
  },
114
+ "foundation_type": {
115
+ "$ref": "#/definitions/foundationType"
116
+ },
117
+ "attic_type": {
118
+ "$ref": "#/definitions/atticType"
119
+ },
114
120
  "footprint_area": {
115
121
  "description": "Area of the footprint (ft^2). Calculated on export.",
116
122
  "type": "number"
@@ -132,6 +138,9 @@
132
138
  "system_type": {
133
139
  "$ref": "#/definitions/systemType"
134
140
  },
141
+ "heating_system_fuel_type": {
142
+ "$ref": "#/definitions/heatingSystemFuelType"
143
+ },
135
144
  "weekday_start_time": {
136
145
  "description": "Weekday operating hours start time in 08:30 format, using 24-hr clock. Leave blank to use default. Should this be part of a mixed type struct?",
137
146
  "type": "string"
@@ -185,7 +194,11 @@
185
194
  "maximum": 100
186
195
  },
187
196
  "number_of_residential_units": {
188
- "description": "Total number of residential units in the building. Required for residential buildings or mixed-use buildings with residential use types.",
197
+ "description": "Total number of residential units in the building. Required for single-family attached and multifamily residential buildings.",
198
+ "type": "integer"
199
+ },
200
+ "number_of_bedrooms": {
201
+ "description": "Total number of bedrooms in the building. Required for residential buildings. Must be divisible by the number of residential units.",
189
202
  "type": "integer"
190
203
  },
191
204
  "exterior_lighting_zone": {
@@ -214,14 +227,113 @@
214
227
  "description": "Arbitrary user data"
215
228
  }
216
229
  },
217
- "required": [
218
- "id",
219
- "type",
220
- "name",
221
- "floor_area",
222
- "number_of_stories",
223
- "footprint_area",
224
- "building_type"
230
+ "oneOf": [
231
+ {
232
+ "properties": {
233
+ "building_type": {
234
+ "enum": [
235
+ "Single-Family Detached"
236
+ ]
237
+ }
238
+ },
239
+ "required": [
240
+ "id",
241
+ "type",
242
+ "name",
243
+ "floor_area",
244
+ "number_of_stories_above_ground",
245
+ "number_of_stories",
246
+ "building_type",
247
+ "number_of_bedrooms",
248
+ "foundation_type",
249
+ "attic_type"
250
+ ]
251
+ },
252
+ {
253
+ "properties": {
254
+ "building_type": {
255
+ "enum": [
256
+ "Single-Family Attached"
257
+ ]
258
+ }
259
+ },
260
+ "required": [
261
+ "id",
262
+ "type",
263
+ "name",
264
+ "floor_area",
265
+ "number_of_stories_above_ground",
266
+ "number_of_stories",
267
+ "building_type",
268
+ "number_of_residential_units",
269
+ "number_of_bedrooms",
270
+ "foundation_type",
271
+ "attic_type"
272
+ ]
273
+ },
274
+ {
275
+ "properties": {
276
+ "building_type": {
277
+ "enum": [
278
+ "Multifamily"
279
+ ]
280
+ }
281
+ },
282
+ "required": [
283
+ "id",
284
+ "type",
285
+ "name",
286
+ "floor_area",
287
+ "number_of_stories_above_ground",
288
+ "number_of_stories",
289
+ "building_type",
290
+ "number_of_residential_units",
291
+ "number_of_bedrooms",
292
+ "foundation_type"
293
+ ]
294
+ },
295
+ {
296
+ "properties": {
297
+ "building_type": {
298
+ "enum": [
299
+ "Single-Family",
300
+ "Multifamily (2 to 4 units)",
301
+ "Multifamily (5 or more units)",
302
+ "Vacant",
303
+ "Office",
304
+ "Laboratory",
305
+ "Nonrefrigerated warehouse",
306
+ "Food sales",
307
+ "Public order and safety",
308
+ "Outpatient health care",
309
+ "Refrigerated warehouse",
310
+ "Religious worship",
311
+ "Public assembly",
312
+ "Education",
313
+ "Food service",
314
+ "Inpatient health care",
315
+ "Nursing",
316
+ "Lodging",
317
+ "Strip shopping mall",
318
+ "Enclosed mall",
319
+ "Retail other than mall",
320
+ "Service",
321
+ "Mixed use",
322
+ "Uncovered Parking",
323
+ "Covered Parking"
324
+ ]
325
+ }
326
+ },
327
+ "required": [
328
+ "id",
329
+ "type",
330
+ "name",
331
+ "floor_area",
332
+ "number_of_stories",
333
+ "footprint_area",
334
+ "building_type"
335
+ ]
336
+ }
225
337
  ],
226
338
  "additionalProperties": true,
227
339
  "definitions": {
@@ -229,10 +341,12 @@
229
341
  "description": "Primary building space type.",
230
342
  "type": "string",
231
343
  "enum": [
344
+ "Single-Family Detached",
345
+ "Single-Family Attached",
346
+ "Multifamily",
232
347
  "Single-Family",
233
348
  "Multifamily (2 to 4 units)",
234
349
  "Multifamily (5 or more units)",
235
- "Mobile Home",
236
350
  "Vacant",
237
351
  "Office",
238
352
  "Laboratory",
@@ -262,85 +376,116 @@
262
376
  "description": "Building HVAC system type. Should this be part of a mixed type struct?",
263
377
  "type": "string",
264
378
  "enum": [
265
- "Ideal Air Loads",
266
- "PTAC with hot water heat",
267
- "PTAC with hot water heat with central air source heat pump",
268
- "PTAC with gas coil heat",
269
- "PTAC with electric baseboard heat",
379
+ "PTAC with baseboard electric",
380
+ "PTAC with baseboard gas boiler",
381
+ "PTAC with baseboard district hot water",
382
+ "PTAC with gas unit heaters",
383
+ "PTAC with electric coil",
384
+ "PTAC with gas coil",
385
+ "PTAC with gas boiler",
270
386
  "PTAC with no heat",
271
- "PTAC with district hot water heat",
272
- "PTAC with central air source heat pump heat",
387
+ "PTAC with district hot water",
388
+ "PTAC with central air source heat pump",
273
389
  "PTHP",
274
- "PSZ-AC with gas coil heat",
275
- "PSZ-AC with electric baseboard heat",
390
+ "PSZ-AC with gas coil",
391
+ "PSZ-AC with baseboard electric",
276
392
  "PSZ-AC with no heat",
277
- "PSZ-AC with district hot water heat",
278
- "PSZ-AC with central air source heat pump heat",
393
+ "PSZ-AC with district hot water",
394
+ "PSZ-AC with central air source heat pump",
279
395
  "PSZ-HP",
280
396
  "Fan coil district chilled water with no heat",
281
- "Fan coil district chilled water and boiler",
282
- "Fan coil district chilled water and central air source heat pump",
283
- "Fan coil district chilled water unit heaters",
284
- "Fan coil district chilled water electric baseboard heat",
285
- "Fan coil district hot and chilled water",
286
- "Fan coil district hot water and chiller",
287
- "Fan coil district hot water and air-cooled chiller",
288
- "Fan coil chiller and boiler",
289
- "Fan coil air-cooled chiller and boiler",
290
- "Fan coil chiller and central air source heat pump",
291
- "Fan coil air-cooled chiller and central air source heat pump",
397
+ "Fan coil district chilled water with boiler",
398
+ "Fan coil district chilled water with central air source heat pump",
399
+ "Fan coil district chilled water with gas unit heaters",
400
+ "Fan coil district chilled water with baseboard electric",
401
+ "Fan coil district chilled water with district hot water",
402
+ "Fan coil chiller with district hot water",
403
+ "Fan coil air-cooled chiller with district hot water",
404
+ "Fan coil chiller with boiler",
405
+ "Fan coil air-cooled chiller with boiler",
406
+ "Fan coil chiller with central air source heat pump",
407
+ "Fan coil air-cooled chiller with central air source heat pump",
292
408
  "Fan coil chiller with no heat",
293
409
  "DOAS with fan coil district chilled water with no heat",
294
410
  "DOAS with fan coil district chilled water and boiler",
295
- "DOAS with fan coil district chilled water and central air source heat pump",
296
- "DOAS with fan coil district chilled water unit heaters",
297
- "DOAS with fan coil district chilled water electric baseboard heat",
298
- "DOAS with fan coil district hot and chilled water",
299
- "DOAS with fan coil district hot water and chiller",
300
- "DOAS with fan coil district hot water and air-cooled chiller",
301
- "DOAS with fan coil chiller and boiler",
302
- "DOAS with fan coil air-cooled chiller and boiler",
303
- "DOAS with fan coil chiller and central air source heat pump",
304
- "DOAS with fan coil air-cooled chiller and central air source heat pump",
411
+ "DOAS with fan coil district chilled water with central air source heat pump",
412
+ "DOAS with fan coil district chilled water with gas unit heaters",
413
+ "DOAS with fan coil district chilled water with baseboard electric",
414
+ "DOAS with fan coil district chilled water with district hot water",
415
+ "DOAS with fan coil chiller with district hot water",
416
+ "DOAS with fan coil air-cooled chiller with district hot water",
417
+ "DOAS with fan coil air-cooled chiller with boiler",
418
+ "DOAS with fan coil chiller with central air source heat pump",
419
+ "DOAS with fan coil air-cooled chiller with central air source heat pump",
305
420
  "DOAS with fan coil chiller with no heat",
306
- "VRF with DOAS",
307
- "Ground Source Heat Pumps with DOAS",
308
- "Baseboard district hot water heat",
309
- "Baseboard district hot water heat with direct evap coolers",
310
- "Baseboard electric heat",
311
- "Baseboard electric heat with direct evap coolers",
312
- "Baseboard hot water heat",
313
- "Baseboard hot water heat with direct evap coolers",
421
+ "DOAS with VRF",
422
+ "VRF",
423
+ "DOAS with water source heat pumps with ground source heat pump",
424
+ "Forced air furnace",
425
+ "Baseboard district hot water",
426
+ "Baseboard electric",
427
+ "Baseboard gas boiler",
428
+ "Baseboard central air source heat pump",
314
429
  "Window AC with no heat",
315
430
  "Window AC with forced air furnace",
316
- "Window AC with district hot water baseboard heat",
317
- "Window AC with hot water baseboard heat",
318
- "Window AC with electric baseboard heat",
431
+ "Window AC with baseboard district hot water",
432
+ "Window AC with baseboard electric",
319
433
  "Window AC with unit heaters",
320
- "Direct evap coolers",
321
- "Direct evap coolers with unit heaters",
322
- "Unit heaters",
323
- "Heat pump heat with no cooling",
324
- "Heat pump heat with direct evap cooler",
325
- "VAV with reheat",
326
- "VAV with reheat central air source heat pump",
327
- "VAV with PFP boxes",
328
- "VAV with gas reheat",
329
- "VAV with zone unit heaters",
330
- "VAV with electric baseboard heat",
331
- "VAV cool with zone heat pump heat",
332
- "PVAV with reheat",
333
- "PVAV with reheat with central air source heat pump",
434
+ "Window AC with baseboard gas boiler",
435
+ "Window AC with baseboard central air source heat pump",
436
+ "Direct evap coolers with baseboard district hot water",
437
+ "Direct evap coolers with baseboard electric",
438
+ "Direct evap coolers with baseboard gas boiler",
439
+ "Direct evap coolers with baseboard central air source heat pump",
440
+ "Direct evap coolers with no heat",
441
+ "Direct evap coolers with gas unit heaters",
442
+ "Direct evap coolers with forced air furnace",
443
+ "Gas unit heaters",
444
+ "VAV chiller with gas boiler reheat",
445
+ "VAV chiller with gas coil reheat",
446
+ "VAV chiller with central air source heat pump reheat",
447
+ "VAV chiller with PFP boxes",
448
+ "VAV air-cooled chiller with gas boiler reheat",
449
+ "VAV air-cooled chiller with central air source heat pump reheat",
450
+ "VAV air-cooled chiller with district hot water reheat",
451
+ "VAV air-cooled chiller with gas coil reheat",
452
+ "VAV air-cooled chiller with no reheat with gas unit heaters",
453
+ "VAV district chilled water with gas boiler reheat",
454
+ "VAV district chilled water with central air source heat pump reheat",
455
+ "VAV district chilled water with no reheat with zone heat pump",
456
+ "VAV chiller with no reheat with baseboard electric",
457
+ "VAV air-cooled chiller with no reheat with zone heat pump",
458
+ "VAV district chilled water with district hot water reheat",
459
+ "VAV district chilled water with gas coil reheat",
460
+ "PVAV with gas heat with electric reheat",
461
+ "PVAV with central air source heat pump reheat",
334
462
  "PVAV with PFP boxes",
335
- "Residential forced air",
336
- "Residential forced air cooling hot water baseboard heat",
337
- "Residential forced air with district hot water",
338
- "Residential heat pump",
339
- "Forced air furnace",
340
- "Forced air furnace district chilled water fan coil",
341
- "Forced air furnace direct evap cooler",
342
- "Residential AC with no heat",
343
- "Residential AC with electric baseboard heat"
463
+ "Residential - electric resistance and no cooling",
464
+ "Residential - electric resistance and central air conditioner",
465
+ "Residential - electric resistance and room air conditioner",
466
+ "Residential - electric resistance and evaporative cooler",
467
+ "Residential - furnace and no cooling",
468
+ "Residential - furnace and central air conditioner",
469
+ "Residential - furnace and room air conditioner",
470
+ "Residential - furnace and evaporative cooler",
471
+ "Residential - boiler and no cooling",
472
+ "Residential - boiler and central air conditioner",
473
+ "Residential - boiler and room air conditioner",
474
+ "Residential - boiler and evaporative cooler",
475
+ "Residential - air-to-air heat pump",
476
+ "Residential - mini-split heat pump",
477
+ "Residential - ground-to-air heat pump"
478
+ ]
479
+ },
480
+ "heatingSystemFuelType": {
481
+ "description": "The fuel type of the heating system. This does not apply for certain system types (e.g., electric resistance or heat pumps).",
482
+ "type": "string",
483
+ "enum": [
484
+ "electricity",
485
+ "natural gas",
486
+ "fuel oil",
487
+ "propane",
488
+ "wood"
344
489
  ]
345
490
  },
346
491
  "templateType": {
@@ -374,8 +519,35 @@
374
519
  "DEER 2060",
375
520
  "DEER 2065",
376
521
  "DEER 2070",
377
- "DEER 2075"
522
+ "DEER 2075",
523
+ "Residential IECC 2006 - Customizable Template Sep 2020",
524
+ "Residential IECC 2009 - Customizable Template Sep 2020",
525
+ "Residential IECC 2012 - Customizable Template Sep 2020",
526
+ "Residential IECC 2015 - Customizable Template Sep 2020",
527
+ "Residential IECC 2018 - Customizable Template Sep 2020"
528
+ ]
529
+ },
530
+ "foundationType": {
531
+ "description": "The foundation type of the building. Required for residential buildings.",
532
+ "type": "string",
533
+ "enum": [
534
+ "slab",
535
+ "crawlspace - vented",
536
+ "crawlspace - unvented",
537
+ "basement - unconditioned",
538
+ "basement - conditioned",
539
+ "ambient"
540
+ ]
541
+ },
542
+ "atticType": {
543
+ "description": "The attic type of the building. Required for single-family residential buildings.",
544
+ "type": "string",
545
+ "enum": [
546
+ "attic - vented",
547
+ "attic - unvented",
548
+ "attic - conditioned",
549
+ "flat roof"
378
550
  ]
379
551
  }
380
552
  }
381
- }
553
+ }