urbanopt-cli 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/CHANGELOG.md +7 -0
- data/CMakeLists.txt +7 -7
- data/FindOpenStudioSDK.cmake +6 -6
- data/README.md +3 -3
- data/example_files/Gemfile +6 -7
- data/example_files/example_project.json +9 -14
- data/example_files/example_project_combined.json +10 -22
- data/example_files/example_project_with_PV.json +8 -1
- data/example_files/example_project_with_electric_network.json +8 -1
- data/example_files/example_project_with_streets.json +9 -2
- data/example_files/mappers/Baseline.rb +283 -256
- data/example_files/validation_schema.yaml +11 -11
- data/example_files/visualization/input_visualization_feature.html +246 -9
- data/example_files/visualization/input_visualization_scenario.html +119 -11
- data/lib/uo_cli/version.rb +1 -1
- data/lib/uo_cli.rb +58 -49
- data/uo_cli.gemspec +2 -2
- metadata +6 -6
@@ -37,11 +37,13 @@ require 'openstudio/load_flexibility_measures'
|
|
37
37
|
|
38
38
|
require 'json'
|
39
39
|
require 'rexml/document'
|
40
|
+
require 'logger'
|
40
41
|
|
41
42
|
module URBANopt
|
42
43
|
module Scenario
|
43
44
|
class BaselineMapper < SimulationMapperBase
|
44
45
|
# class level variables
|
46
|
+
@@logger = Logger.new($stdout)
|
45
47
|
@@instance_lock = Mutex.new
|
46
48
|
@@osw = nil
|
47
49
|
@@geometry = nil
|
@@ -383,222 +385,215 @@ module URBANopt
|
|
383
385
|
end
|
384
386
|
|
385
387
|
# epw_state to subregions mapping methods
|
386
|
-
#REK: Maybe we can move these method to the geojson gem
|
388
|
+
# REK: Maybe we can move these method to the geojson gem
|
387
389
|
def get_future_emissions_region(feature)
|
388
390
|
# Options are: AZNMc, CAMXc, ERCTc, FRCCc, MROEc, MROWc, NEWEc, NWPPc, NYSTc, RFCEc, RFCMc, RFCWc, RMPAc, SPNOc, SPSOc, SRMVc, SRMWc, SRSOc, SRTVc, and SRVCc
|
389
391
|
# egrid subregions can map directly to zipcodes but not to states. Some state might include multiple egrid subregions. the default mapper prioritize the egrid subregion that is most common in the state (covers the biggest number of zipcodes)
|
390
|
-
future_emissions_mapping_hash =
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
#get the state from weather file
|
392
|
+
future_emissions_mapping_hash =
|
393
|
+
{ 'FL': 'FRCCc', # ['FRCCc', 'SRSOc']
|
394
|
+
'MS': 'SRMVc', # ['SRMVc', 'SRTVc']
|
395
|
+
'NE': 'MROWc', # ['MROWc', 'RMPAc']
|
396
|
+
'OR': 'NWPPc',
|
397
|
+
'CA': 'CAMXc', # ['CAMXc', 'NWPPc']
|
398
|
+
'VA': 'SRVCc', # ['SRVCc', 'RFCWc', 'RFCEc'],
|
399
|
+
'AR': 'SRMVc', # ['SRMVc', 'SPSOc']
|
400
|
+
'TX': 'ERCTc', # ['ERCTc', 'SRMVc', 'SPSOc', 'AZNMc']
|
401
|
+
'OH': 'RFCWc',
|
402
|
+
'UT': 'NWPPc',
|
403
|
+
'MT': 'NWPPc', # ['NWPPc', 'MROWc']
|
404
|
+
'TN': 'SRTVc',
|
405
|
+
'ID': 'NWPPc',
|
406
|
+
'WI': 'MROEc', # ['RFCWc', 'MROEc', 'MROWc']
|
407
|
+
'WV': 'RFCWc',
|
408
|
+
'NC': 'SRVCc',
|
409
|
+
'LA': 'SRMVc',
|
410
|
+
'IL': 'SRMWc', # ['RFCWc', 'SRMWc']
|
411
|
+
'OK': 'SPSOc',
|
412
|
+
'IA': 'MROWc',
|
413
|
+
'WA': 'NWPPc',
|
414
|
+
'SD': 'MROWc', # ['MROWc', 'RMPAc']
|
415
|
+
'MN': 'MROWc',
|
416
|
+
'KY': 'SRTVc', # ['SRTVc', 'RFCWc']
|
417
|
+
'MI': 'RFCMc', # ['RFCMc', 'MROEc']
|
418
|
+
'KS': 'SPNOc',
|
419
|
+
'NJ': 'RFCEc',
|
420
|
+
'NY': 'NYSTc',
|
421
|
+
'IN': 'RFCWc',
|
422
|
+
'VT': 'NEWEc',
|
423
|
+
'NM': 'AZNMc', # ['AZNMc', 'SPSOc']
|
424
|
+
'WY': 'RMPAc', # ['RMPAc', 'NWPPc']
|
425
|
+
'GA': 'SRSOc',
|
426
|
+
'MO': 'SRMWc', # ['SRMWc', 'SPNOc']
|
427
|
+
'DC': 'RFCEc',
|
428
|
+
'SC': 'SRVCc',
|
429
|
+
'PA': 'RFCEc', # ['RFCEc', 'RFCWc']
|
430
|
+
'CO': 'RMPAc',
|
431
|
+
'AZ': 'AZNMc',
|
432
|
+
'ME': 'NEWEc',
|
433
|
+
'AL': 'SRSOc',
|
434
|
+
'MD': 'RFCEc', # ['RFCEc', 'RFCWc']
|
435
|
+
'NH': 'NEWEc',
|
436
|
+
'MA': 'NEWEc',
|
437
|
+
'ND': 'MROWc',
|
438
|
+
'NV': 'NWPPc', # ['NWPPc', 'AZNMc']
|
439
|
+
'CT': 'NEWEc',
|
440
|
+
'DE': 'RFCEc',
|
441
|
+
'RI': 'NEWEc' }
|
442
|
+
|
443
|
+
# get the state from weather file
|
442
444
|
state = feature.weather_filename.split('_', -1)[1]
|
443
|
-
|
444
|
-
#find region input based on the state
|
445
|
+
|
446
|
+
# find region input based on the state
|
445
447
|
region = future_emissions_mapping_hash[state.to_sym]
|
446
448
|
|
447
|
-
|
448
|
-
|
449
|
+
@@logger.warn("emissions_future_subregion for #{state} is assigned to: #{region}. Note: Not all states have a 1 to 1 mapping with a subregion. Some states('ND','IN', 'MN', 'SD', 'IA', 'WV', 'OH', 'NE' ) include 2 subregions.
|
450
|
+
The default mapper maps to the subregion that includes the most zipcodes in the corresponding state. You can overwrite this assigned input by specifiying the emissions_future_subregion input in the FeatureFile.")
|
449
451
|
|
450
452
|
return region
|
451
|
-
|
452
453
|
end
|
453
454
|
|
454
455
|
def get_hourly_historical_emissions_region(feature)
|
455
|
-
|
456
456
|
# Options are: California, Carolinas, Central, Florida, Mid-Atlantic, Midwest, New England, New York, Northwest, Rocky Mountains, Southeast, Southwest, Tennessee, and Texas
|
457
|
-
# There is no "correct" mapping of eGrid to AVERT regions as they are both large geographical areas that partially overlap.
|
458
|
-
# Mapping is done using mapping tools from eGrid and AVERT (ZipCode for eGrid and fraction of state for AVERT).
|
457
|
+
# There is no "correct" mapping of eGrid to AVERT regions as they are both large geographical areas that partially overlap.
|
458
|
+
# Mapping is done using mapping tools from eGrid and AVERT (ZipCode for eGrid and fraction of state for AVERT).
|
459
459
|
# Mapped based on the maps of each set of regions:
|
460
|
-
hourly_historical_mapping_hash =
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
#get the state from weather file
|
460
|
+
hourly_historical_mapping_hash =
|
461
|
+
{ 'FL': 'Florida',
|
462
|
+
'MS': 'Midwest',
|
463
|
+
'NE': 'Midwest', # MRWO could be Midwest / Central
|
464
|
+
'OR': 'Northwest',
|
465
|
+
'CA': 'California',
|
466
|
+
'VA': 'Carolinas',
|
467
|
+
'AR': 'Midwest',
|
468
|
+
'TX': 'Texas',
|
469
|
+
'OH': 'Midwest', # RFCW could be Midwest / Mid Atlantic
|
470
|
+
'UT': 'Northwest',
|
471
|
+
'MT': 'Northwest',
|
472
|
+
'TN': 'Tennessee',
|
473
|
+
'ID': 'Northwest',
|
474
|
+
'WI': 'Midwest',
|
475
|
+
'WV': 'Midwest', # RFCW could be Midwest / Mid Atlantic
|
476
|
+
'NC': 'Carolinas',
|
477
|
+
'LA': 'Midwest',
|
478
|
+
'IL': 'Midwest',
|
479
|
+
'OK': 'Central',
|
480
|
+
'IA': 'Midwest', # MRWO could be Midwest / Central
|
481
|
+
'WA': 'Northwest',
|
482
|
+
'SD': 'Midwest', # MRWO could be Midwest / Central
|
483
|
+
'MN': 'Midwest', # MRWO could be Midwest / Central
|
484
|
+
'KY': 'Tennessee',
|
485
|
+
'MI': 'Midwest',
|
486
|
+
'KS': 'Central',
|
487
|
+
'NJ': 'Mid-Atlantic',
|
488
|
+
'NY': 'New York',
|
489
|
+
'IN': 'Midwest', # RFCW could be Midwest / Mid Atlantic
|
490
|
+
'VT': 'New England',
|
491
|
+
'NM': 'Southwest',
|
492
|
+
'WY': 'Rocky Mountains',
|
493
|
+
'GA': 'SRSO',
|
494
|
+
'MO': 'Midwest',
|
495
|
+
'DC': 'Mid-Atlantic',
|
496
|
+
'SC': 'Carolinas',
|
497
|
+
'PA': 'Mid-Atlantic',
|
498
|
+
'CO': 'Rocky Mountains',
|
499
|
+
'AZ': 'Southwest',
|
500
|
+
'ME': 'New England',
|
501
|
+
'AL': 'Southeast',
|
502
|
+
'MD': 'Mid-Atlantic',
|
503
|
+
'NH': 'New England',
|
504
|
+
'MA': 'New England',
|
505
|
+
'ND': 'Midwest', # MRWO could be Midwest / Central
|
506
|
+
'NV': 'Northwest',
|
507
|
+
'CT': 'New England',
|
508
|
+
'DE': 'Mid-Atlantic',
|
509
|
+
'RI': 'New England' }
|
510
|
+
|
511
|
+
# get the state from weather file
|
512
512
|
state = feature.weather_filename.split('_', -1)[1]
|
513
513
|
|
514
|
-
#find region input based on the state
|
515
|
-
region = hourly_historical_mapping_hash[state.to_sym]
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
return region
|
514
|
+
# find region input based on the state
|
515
|
+
region = hourly_historical_mapping_hash[state.to_sym]
|
516
|
+
@@logger.warn("emissions_hourly_historical_subregion for #{state} is assigned to: #{region}. Note: Not all states have a 1 to 1 mapping with a subregion. Some states('ND','IN', 'MN', 'SD', 'IA', 'WV', 'OH', 'NE' ) include 2 subregions.
|
517
|
+
The default mapper maps to the subregion that includes the most zipcodes in the corresponding state. You can overwrite this assigned input by specifiying the emissions_hourly_historical_subregion input in the FeatureFile.")
|
520
518
|
|
519
|
+
return region
|
521
520
|
end
|
522
521
|
|
523
|
-
|
524
522
|
def get_annual_historical_emissions_region(feature)
|
525
|
-
|
526
523
|
# Options are: AKGD, AKMS, AZNM, CAMX, ERCT, FRCC, HIMS, HIOA, MROE, MROW, NEWE, NWPP, NYCW, NYLI, NYUP, RFCE, RFCM, RFCW, RMPA, SPNO, SPSO, SRMV, SRMW, SRSO, SRTV, and SRVC
|
527
524
|
# egrid subregions can map directly to zipcodes but not to states. Some state might include multiple egrid subregions. the default mapper prioritize the egrid subregion that is most common in the state (covers the biggest number of zipcodes)
|
528
|
-
annual_historical_mapping_hash =
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
#get the state from weather file
|
525
|
+
annual_historical_mapping_hash =
|
526
|
+
{ 'FL': 'FRCC',
|
527
|
+
'MS': 'SRMV',
|
528
|
+
'NE': 'MROW',
|
529
|
+
'OR': 'NWPP',
|
530
|
+
'CA': 'CAMX',
|
531
|
+
'VA': 'SRVC',
|
532
|
+
'AR': 'SRMV',
|
533
|
+
'TX': 'ERCT',
|
534
|
+
'OH': 'RFCW',
|
535
|
+
'UT': 'NWPP',
|
536
|
+
'MT': 'NWPP',
|
537
|
+
'TN': 'SRTV',
|
538
|
+
'ID': 'NWPP',
|
539
|
+
'WI': 'MROE',
|
540
|
+
'WV': 'RFCW',
|
541
|
+
'NC': 'SRVC',
|
542
|
+
'LA': 'SRMV',
|
543
|
+
'IL': 'SRMW',
|
544
|
+
'OK': 'SPSO',
|
545
|
+
'IA': 'MROW',
|
546
|
+
'WA': 'NWPP',
|
547
|
+
'SD': 'MROW',
|
548
|
+
'MN': 'MROW',
|
549
|
+
'KY': 'SRTV',
|
550
|
+
'MI': 'RFCM',
|
551
|
+
'KS': 'SPNO',
|
552
|
+
'NJ': 'RFCE',
|
553
|
+
'NY': 'NYCW',
|
554
|
+
'IN': 'RFCW',
|
555
|
+
'VT': 'NEWE',
|
556
|
+
'NM': 'AZNM',
|
557
|
+
'WY': 'RMPA',
|
558
|
+
'GA': 'SRSO',
|
559
|
+
'MO': 'SRMW',
|
560
|
+
'DC': 'RFCE',
|
561
|
+
'SC': 'SRVC',
|
562
|
+
'PA': 'RFCE',
|
563
|
+
'CO': 'RMPA',
|
564
|
+
'AZ': 'AZNM',
|
565
|
+
'ME': 'NEWE',
|
566
|
+
'AL': 'SRSO',
|
567
|
+
'MD': 'RFCE',
|
568
|
+
'NH': 'NEWE',
|
569
|
+
'MA': 'NEWE',
|
570
|
+
'ND': 'MROW',
|
571
|
+
'NV': 'NWPP',
|
572
|
+
'CT': 'NEWE',
|
573
|
+
'DE': 'RFCE',
|
574
|
+
'RI': 'NEWE' }
|
575
|
+
# get the state from weather file
|
579
576
|
state = feature.weather_filename.split('_', -1)[1]
|
580
|
-
|
581
|
-
#finf region input based on the state
|
577
|
+
|
578
|
+
# finf region input based on the state
|
582
579
|
region = annual_historical_mapping_hash[state.to_sym]
|
583
580
|
|
584
|
-
|
585
|
-
|
586
|
-
|
581
|
+
@@logger.warn("electricity_emissions_annual_historical_subregion for #{state} is assigned to: #{region}. Note: Not all states have a 1 to 1 mapping with a subregion. Some states('ND','IN', 'MN', 'SD', 'IA', 'WV', 'OH', 'NE' ) include 2 subregions.
|
582
|
+
The default mapper maps to the subregion that includes the most zipcodes in the corresponding state. You can overwrite this assigned input by specifiying the electricity_emissions_annual_historical_subregion input in the FeatureFile.")
|
583
|
+
|
587
584
|
return region
|
585
|
+
end
|
588
586
|
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
begin
|
593
|
-
if feature.method_missing(method_name)
|
594
|
-
return true
|
595
|
-
end
|
596
|
-
rescue NoMethodError
|
597
|
-
if raise_error
|
598
|
-
raise "*** ERROR *** #{method_name} is not set on this feature"
|
599
|
-
end
|
600
|
-
return false
|
587
|
+
def is_defined(feature, method_name, raise_error = true)
|
588
|
+
if feature.method_missing(method_name)
|
589
|
+
return true
|
601
590
|
end
|
591
|
+
rescue NoMethodError
|
592
|
+
if raise_error
|
593
|
+
raise "*** ERROR *** #{method_name} is not set on this feature"
|
594
|
+
end
|
595
|
+
|
596
|
+
return false
|
602
597
|
end
|
603
598
|
|
604
599
|
def create_osw(scenario, features, feature_names)
|
@@ -641,8 +636,8 @@ module URBANopt
|
|
641
636
|
# Check for required residential fields
|
642
637
|
is_defined(feature, :number_of_stories_above_ground)
|
643
638
|
is_defined(feature, :foundation_type)
|
644
|
-
|
645
|
-
if
|
639
|
+
|
640
|
+
if !is_defined(feature, :hpxml_directory, false)
|
646
641
|
# check additional fields when HPXML dir is not given
|
647
642
|
is_defined(feature, :attic_type)
|
648
643
|
is_defined(feature, :number_of_bedrooms)
|
@@ -782,7 +777,7 @@ module URBANopt
|
|
782
777
|
|
783
778
|
args[:geometry_unit_num_occupants] = 'auto'
|
784
779
|
begin
|
785
|
-
args[:geometry_unit_num_occupants] =
|
780
|
+
args[:geometry_unit_num_occupants] = (feature.number_of_occupants / args[:geometry_building_num_units]).to_s
|
786
781
|
rescue StandardError
|
787
782
|
end
|
788
783
|
|
@@ -1018,11 +1013,10 @@ module URBANopt
|
|
1018
1013
|
elsif commercial_building_types.include? building_type
|
1019
1014
|
# set_run_period
|
1020
1015
|
OpenStudio::Extension.set_measure_argument(osw, 'set_run_period', '__SKIP__', false)
|
1021
|
-
|
1022
1016
|
# can enable reporting (commercial building types only for now)
|
1023
|
-
#OpenStudio::Extension.set_measure_argument(osw, 'openstudio_results', '__SKIP__', false)
|
1024
|
-
#OpenStudio::Extension.set_measure_argument(osw, 'envelope_and_internal_load_breakdown', '__SKIP__', false)
|
1025
|
-
#OpenStudio::Extension.set_measure_argument(osw, 'generic_qaqc', '__SKIP__', false)
|
1017
|
+
# OpenStudio::Extension.set_measure_argument(osw, 'openstudio_results', '__SKIP__', false)
|
1018
|
+
# OpenStudio::Extension.set_measure_argument(osw, 'envelope_and_internal_load_breakdown', '__SKIP__', false)
|
1019
|
+
# OpenStudio::Extension.set_measure_argument(osw, 'generic_qaqc', '__SKIP__', false)
|
1026
1020
|
|
1027
1021
|
begin
|
1028
1022
|
timesteps_per_hour = feature.timesteps_per_hour
|
@@ -1353,111 +1347,144 @@ module URBANopt
|
|
1353
1347
|
else
|
1354
1348
|
raise "Building type #{building_type} not currently supported."
|
1355
1349
|
end
|
1350
|
+
|
1356
1351
|
end
|
1357
|
-
|
1358
|
-
|
1352
|
+
|
1353
|
+
######## Emissions Adition from add_ems_emissions_reporting
|
1359
1354
|
if feature_type == 'Building'
|
1360
1355
|
|
1356
|
+
# emissions options
|
1357
|
+
future_regions = ['AZNMc', 'CAMXc', 'ERCTc', 'FRCCc', 'MROEc', 'MROWc', 'NEWEc', 'NWPPc', 'NYSTc', 'RFCEc', 'RFCMc', 'RFCWc', 'RMPAc', 'SPNOc', 'SPSOc', 'SRMVc', 'SRMWc', 'SRSOc', 'SRTVc', 'SRVCc']
|
1358
|
+
hourly_historical_regions = ['California', 'Carolinas', 'Central', 'Florida', 'Mid-Atlantic', 'Midwest', 'New England', 'New York', 'Northwest', 'Rocky Mountains', 'Southeast', 'Southwest', 'Tennessee', 'Texas']
|
1359
|
+
annual_historical_regions = ['AKGD', 'AKMS', 'AZNM', 'CAMX', 'ERCT', 'FRCC', 'HIMS', 'HIOA', 'MROE', 'MROW', 'NEWE', 'NWPP', 'NYCW', 'NYLI', 'NYUP', 'RFCE', 'RFCM', 'RFCW', 'RMPA', 'SPNO', 'SPSO', 'SRMV', 'SRMW', 'SRSO', 'SRTV', 'SRVC']
|
1360
|
+
annual_historical_years = ['2007', '2009', '2010', '2012', '2014', '2016', '2018', '2019']
|
1361
|
+
future_years = ['2020', '2022', '2024', '2026', '2028', '2030', '2032', '2034', '2036', '2038', '2040', '2042', '2044', '2046', '2048', '2050']
|
1362
|
+
hourly_historical_years = ['2019']
|
1363
|
+
|
1361
1364
|
# add Emissions
|
1362
1365
|
emissions = nil
|
1363
1366
|
|
1364
1367
|
begin
|
1365
1368
|
emissions = feature.emissions
|
1366
|
-
rescue
|
1369
|
+
rescue StandardError
|
1367
1370
|
end
|
1368
|
-
|
1371
|
+
|
1369
1372
|
if emissions != true
|
1370
|
-
|
1373
|
+
@@logger.info('Emissions is not activated for this feature. Please set emissions to true in the the Feature properties in the GeoJSON file to add emissions results.')
|
1371
1374
|
|
1372
1375
|
elsif emissions == true
|
1373
|
-
|
1374
|
-
#activate emissions measure
|
1376
|
+
|
1377
|
+
# activate emissions measure
|
1375
1378
|
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', '__SKIP__', false)
|
1376
1379
|
|
1377
|
-
#get emissions inputs if they are available or get them from the mapping methods if the are not
|
1380
|
+
# get emissions inputs if they are available or get them from the mapping methods if the are not
|
1378
1381
|
begin
|
1379
|
-
|
1380
|
-
rescue
|
1381
|
-
|
1382
|
-
|
1382
|
+
electricity_emissions_future_subregion = feature.electricity_emissions_future_subregion
|
1383
|
+
rescue StandardError
|
1384
|
+
@@logger.info("\nelectricity_emission_future_subregion is not assigned for feature #{feature_id}. Defining subregion based on the State....")
|
1385
|
+
electricity_emissions_future_subregion = get_future_emissions_region(feature)
|
1383
1386
|
end
|
1384
1387
|
|
1385
1388
|
begin
|
1386
|
-
|
1387
|
-
rescue
|
1388
|
-
|
1389
|
-
|
1389
|
+
electricity_emissions_hourly_historical_subregion = feature.electricity_emissions_hourly_historical_subregion
|
1390
|
+
rescue StandardError
|
1391
|
+
@@logger.info("\nelectricity_emissions_hourly_historical_subregion is not assigned for feature #{feature_id}. Defining subregion based on the State....")
|
1392
|
+
electricity_emissions_hourly_historical_subregion = get_hourly_historical_emissions_region(feature)
|
1390
1393
|
end
|
1391
1394
|
|
1392
1395
|
begin
|
1393
|
-
|
1394
|
-
rescue
|
1395
|
-
|
1396
|
-
|
1396
|
+
electricity_emissions_annual_historical_subregion = feature.electricity_emissions_annual_historical_subregion
|
1397
|
+
rescue StandardError
|
1398
|
+
@@logger.info("\nelectricity_emissions_annual_historical_subregion is not assigned for feature #{feature_id}. Defining subregion based on the State....")
|
1399
|
+
electricity_emissions_annual_historical_subregion = get_annual_historical_emissions_region(feature)
|
1397
1400
|
end
|
1398
1401
|
|
1399
1402
|
begin
|
1400
|
-
|
1401
|
-
rescue
|
1402
|
-
|
1403
|
+
electricity_emissions_future_year = feature.electricity_emissions_future_year
|
1404
|
+
rescue StandardError
|
1405
|
+
@@logger.info("\nelectricity_emissions_future_year was not assigned by the user. The assigned default value is 2030")
|
1406
|
+
electricity_emissions_future_year = '2030'
|
1403
1407
|
end
|
1404
1408
|
|
1405
1409
|
begin
|
1406
|
-
|
1407
|
-
rescue
|
1408
|
-
|
1410
|
+
electricity_emissions_hourly_historical_year = feature.electricity_emissions_hourly_historical_year
|
1411
|
+
rescue StandardError
|
1412
|
+
@@logger.info("\nelectricity_emissions_hourly_historical_year was not assigned by the user. The assigned default value is 2019")
|
1413
|
+
electricity_emissions_hourly_historical_year = '2019'
|
1409
1414
|
end
|
1410
1415
|
|
1411
1416
|
begin
|
1412
|
-
|
1413
|
-
rescue
|
1414
|
-
|
1417
|
+
electricity_emissions_annual_historical_year = feature.electricity_emissions_annual_historical_year
|
1418
|
+
rescue StandardError
|
1419
|
+
@@logger.info("\nelectricity_emissions_annual_historical_year was not assigned by the user. The assigned default value is 2019")
|
1420
|
+
electricity_emissions_annual_historical_year = '2019'
|
1415
1421
|
end
|
1416
1422
|
|
1417
|
-
puts "\n building #{feature_id} emission inputs summarry:
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1423
|
+
# puts "\n building #{feature_id} emission inputs summarry:
|
1424
|
+
# electricity_emissions_future_subregion = #{electricity_emissions_future_subregion};
|
1425
|
+
# electricity_emissions_hourly_historical_subregion = #{electricity_emissions_hourly_historical_subregion};
|
1426
|
+
# electricity_emissions_annual_historical_subregion = #{electricity_emissions_annual_historical_subregion};
|
1427
|
+
# electricity_emissions_future_year = #{electricity_emissions_future_year};
|
1428
|
+
# electricity_emissions_hourly_historical_year = #{electricity_emissions_hourly_historical_year};
|
1429
|
+
# electricity_emissions_annual_historical_year = #{electricity_emissions_annual_historical_year}\n "
|
1424
1430
|
|
1425
1431
|
## Assign the OS measure arguments
|
1426
1432
|
begin
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1433
|
+
# emissions_future_subregion
|
1434
|
+
if !electricity_emissions_future_subregion.nil? && !electricity_emissions_future_subregion.empty?
|
1435
|
+
if future_regions.include? electricity_emissions_future_subregion
|
1436
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'future_subregion', electricity_emissions_future_subregion)
|
1437
|
+
else
|
1438
|
+
@@logger.error(" '#{electricity_emissions_future_subregion}' is not valid option for electricity_emissions_future_subregion. Please choose an input from #{future_regions}")
|
1439
|
+
end
|
1431
1440
|
end
|
1432
1441
|
|
1433
|
-
#hourly_historical_subregion
|
1434
|
-
if !
|
1435
|
-
|
1442
|
+
# hourly_historical_subregion
|
1443
|
+
if !electricity_emissions_hourly_historical_subregion.nil? && !electricity_emissions_hourly_historical_subregion.empty?
|
1444
|
+
if hourly_historical_regions.include? electricity_emissions_hourly_historical_subregion
|
1445
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'hourly_historical_subregion', electricity_emissions_hourly_historical_subregion)
|
1446
|
+
else
|
1447
|
+
@@logger.error(" '#{electricity_emissions_hourly_historical_subregion}' is not valid option for electricity_emissions_hourly_historical_subregion. Please choose an input from #{hourly_historical_regions}")
|
1448
|
+
end
|
1436
1449
|
end
|
1437
1450
|
|
1438
|
-
#annual_historical_subregion
|
1439
|
-
if !
|
1440
|
-
|
1451
|
+
# annual_historical_subregion
|
1452
|
+
if !electricity_emissions_annual_historical_subregion.nil? && !electricity_emissions_annual_historical_subregion.empty?
|
1453
|
+
if annual_historical_regions.include? electricity_emissions_annual_historical_subregion
|
1454
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'annual_historical_subregion', electricity_emissions_annual_historical_subregion)
|
1455
|
+
else
|
1456
|
+
@@logger.error(" '#{electricity_emissions_annual_historical_subregion}' is not valid option for electricity_emissions_annual_historical_subregion. Please choose an input from #{annual_historical_regions}")
|
1457
|
+
end
|
1441
1458
|
end
|
1442
1459
|
|
1443
|
-
#future_year
|
1444
|
-
if !
|
1445
|
-
|
1460
|
+
# future_year
|
1461
|
+
if !electricity_emissions_future_year.nil? && !electricity_emissions_future_year.empty?
|
1462
|
+
|
1463
|
+
if future_years.include? electricity_emissions_future_year
|
1464
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'future_year', electricity_emissions_future_year)
|
1465
|
+
else
|
1466
|
+
@@logger.error(" '#{electricity_emissions_future_year}' is not valid option for electricity_emissions_future_year. Please choose an input from #{future_years}")
|
1467
|
+
end
|
1446
1468
|
end
|
1447
1469
|
|
1448
|
-
#hourly_historical_year
|
1449
|
-
if !
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1470
|
+
# hourly_historical_year
|
1471
|
+
if !electricity_emissions_hourly_historical_year.nil? && !electricity_emissions_hourly_historical_year.empty?
|
1472
|
+
if hourly_historical_years.include? electricity_emissions_hourly_historical_year
|
1473
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'hourly_historical_year', electricity_emissions_hourly_historical_year)
|
1474
|
+
else
|
1475
|
+
@@logger.error(" '#{electricity_emissions_hourly_historical_year}' is not valid option for electricity_emissions_hourly_historical_year. Please choose an input from #{hourly_historical_years}")
|
1476
|
+
end
|
1453
1477
|
end
|
1454
|
-
|
1455
|
-
#annual_historical_year'
|
1456
|
-
if !emissions_annual_historical_year.nil? && !emissions_annual_historical_year.empty?
|
1457
|
-
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'annual_historical_year', emissions_annual_historical_year)
|
1458
|
-
end
|
1459
1478
|
|
1460
|
-
|
1479
|
+
# annual_historical_year
|
1480
|
+
if !electricity_emissions_annual_historical_year.nil? && !electricity_emissions_annual_historical_year.empty?
|
1481
|
+
if annual_historical_years.include? electricity_emissions_annual_historical_year
|
1482
|
+
OpenStudio::Extension.set_measure_argument(osw, 'add_ems_emissions_reporting', 'annual_historical_year', electricity_emissions_annual_historical_year)
|
1483
|
+
else
|
1484
|
+
@@logger.error("'#{electricity_emissions_annual_historical_year}' is not valid option for electricity_emissions_annual_historical_year. Please choose an input from #{annual_historical_years}")
|
1485
|
+
end
|
1486
|
+
end
|
1487
|
+
rescue StandardError
|
1461
1488
|
end
|
1462
1489
|
|
1463
1490
|
end
|