urbanopt-cli 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +11 -0
- data/CMakeLists.txt +7 -7
- data/Gemfile +5 -5
- data/example_files/Gemfile +6 -3
- data/example_files/base_workflow_res.osw +10 -0
- data/example_files/example_project_combined.json +13 -3
- data/example_files/example_project_with_PV.json +751 -0
- data/example_files/mappers/Baseline.rb +24 -3
- data/example_files/mappers/CreateBar.rb +30 -0
- data/example_files/mappers/FlexibleHotWater.rb +69 -0
- data/example_files/mappers/Floorspace.rb +30 -0
- data/example_files/mappers/base_workflow.osw +5 -0
- data/example_files/mappers/createbar_workflow.osw +3 -1
- data/example_files/mappers/floorspace_workflow.osw +2 -1
- data/example_files/osm_building/7.osm +0 -307
- data/example_files/osm_building/8.osm +0 -419
- data/example_files/osm_building/9.osm +0 -664
- data/example_files/reopt/base_assumptions.json +3 -3
- data/example_files/reopt/multiPV_assumptions.json +2 -2
- data/example_files/resources/hpxml-measures/Gemfile +1 -1
- data/example_files/resources/hpxml-measures/Gemfile.lock +6 -25
- data/example_files/visualization/input_visualization_feature.html +4 -4
- data/example_files/visualization/input_visualization_scenario.html +4 -4
- data/lib/uo_cli/version.rb +1 -1
- data/lib/uo_cli.rb +56 -14
- data/uo_cli.gemspec +5 -5
- metadata +14 -12
@@ -22,8 +22,8 @@
|
|
22
22
|
"net_metering_limit_kw": 0,
|
23
23
|
"interconnection_limit_kw": 100000000.0,
|
24
24
|
"blended_monthly_demand_charges_us_dollars_per_kw": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
|
25
|
-
"blended_monthly_rates_us_dollars_per_kwh": [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
|
26
|
-
|
25
|
+
"blended_monthly_rates_us_dollars_per_kwh": [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
|
26
|
+
},
|
27
27
|
"Wind": {
|
28
28
|
"min_kw": 0,
|
29
29
|
"max_kw": 0,
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"losses": 0.14,
|
78
78
|
"array_type": 1,
|
79
79
|
"module_type": 0,
|
80
|
-
"gcr":
|
80
|
+
"gcr": 1,
|
81
81
|
"dc_ac_ratio": 1.2,
|
82
82
|
"inv_eff": 0.96,
|
83
83
|
"radius": 0,
|
@@ -77,7 +77,7 @@
|
|
77
77
|
"losses": 0.14,
|
78
78
|
"array_type": 1,
|
79
79
|
"module_type": 0,
|
80
|
-
"gcr":
|
80
|
+
"gcr": 1,
|
81
81
|
"dc_ac_ratio": 1.2,
|
82
82
|
"inv_eff": 0.96,
|
83
83
|
"radius": 0,
|
@@ -113,7 +113,7 @@
|
|
113
113
|
"losses": 0.14,
|
114
114
|
"array_type": 0,
|
115
115
|
"module_type": 0,
|
116
|
-
"gcr":
|
116
|
+
"gcr": 1,
|
117
117
|
"dc_ac_ratio": 1.2,
|
118
118
|
"inv_eff": 0.96,
|
119
119
|
"radius": 0,
|
@@ -4,27 +4,17 @@ GEM
|
|
4
4
|
ansi (1.5.0)
|
5
5
|
ast (2.4.2)
|
6
6
|
builder (3.2.4)
|
7
|
-
|
8
|
-
builder (>= 2.1.2)
|
9
|
-
ci_reporter_minitest (1.0.0)
|
10
|
-
ci_reporter (~> 2.0)
|
11
|
-
minitest (~> 5.0)
|
12
|
-
codecov (0.2.12)
|
13
|
-
json
|
14
|
-
simplecov
|
15
|
-
docile (1.3.5)
|
16
|
-
json (2.5.1)
|
17
|
-
mini_portile2 (2.5.0)
|
7
|
+
mini_portile2 (2.6.1)
|
18
8
|
minitest (5.14.4)
|
19
9
|
minitest-reporters (1.4.3)
|
20
10
|
ansi
|
21
11
|
builder
|
22
12
|
minitest (>= 5.0)
|
23
13
|
ruby-progressbar
|
24
|
-
nokogiri (1.
|
25
|
-
mini_portile2 (~> 2.
|
14
|
+
nokogiri (1.12.5)
|
15
|
+
mini_portile2 (~> 2.6.1)
|
26
16
|
racc (~> 1.4)
|
27
|
-
nokogiri (1.
|
17
|
+
nokogiri (1.12.5-x64-mingw32)
|
28
18
|
racc (~> 1.4)
|
29
19
|
oga (3.3)
|
30
20
|
ast
|
@@ -38,28 +28,19 @@ GEM
|
|
38
28
|
ruby-progressbar (1.11.0)
|
39
29
|
schematron-nokogiri (0.0.3)
|
40
30
|
nokogiri (~> 1.6)
|
41
|
-
simplecov (0.21.2)
|
42
|
-
docile (~> 1.1)
|
43
|
-
simplecov-html (~> 0.11)
|
44
|
-
simplecov_json_formatter (~> 0.1)
|
45
|
-
simplecov-html (0.12.3)
|
46
|
-
simplecov_json_formatter (0.1.2)
|
47
31
|
|
48
32
|
PLATFORMS
|
49
33
|
ruby
|
50
34
|
x64-mingw32
|
51
35
|
|
52
36
|
DEPENDENCIES
|
53
|
-
ci_reporter_minitest (~> 1.0.0)
|
54
|
-
codecov (= 0.2.12)
|
55
37
|
minitest (~> 5.9)
|
56
38
|
minitest-reporters
|
57
|
-
nokogiri (~> 1.
|
39
|
+
nokogiri (~> 1.12)
|
58
40
|
oga
|
59
41
|
parallel
|
60
42
|
rake
|
61
43
|
schematron-nokogiri
|
62
|
-
simplecov
|
63
44
|
|
64
45
|
BUNDLED WITH
|
65
|
-
2.2.11
|
46
|
+
2.2.11
|
@@ -383,7 +383,7 @@
|
|
383
383
|
|
384
384
|
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
385
385
|
|
386
|
-
var datasets = ['Electricity:Facility', 'ElectricityProduced:
|
386
|
+
var datasets = ['Electricity:Facility', 'REopt:ElectricityProduced:Total', 'NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
|
387
387
|
|
388
388
|
var endUseKeys = ['Heating:Electricity', 'Cooling:Electricity', 'InteriorLights:Electricity', 'ExteriorLights:Electricity', 'ExteriorEquipment:Electricity', 'InteriorEquipment:Electricity', 'Fans:Electricity', 'Pumps:Electricity', 'HeatRejection:Electricity', 'WaterSystems:Electricity'];
|
389
389
|
|
@@ -483,7 +483,7 @@
|
|
483
483
|
datasetUnit = 'Electricity:Facility(kWh)';
|
484
484
|
}
|
485
485
|
}
|
486
|
-
} else if (dataset == 'ElectricityProduced:
|
486
|
+
} else if (dataset == 'REopt:ElectricityProduced:Total') {
|
487
487
|
// first check if there is data to include
|
488
488
|
if (!(values.every(item => item === 0))) {
|
489
489
|
if (changeToKbtu) {
|
@@ -543,13 +543,13 @@
|
|
543
543
|
values: _.map(months, function (month, i) {
|
544
544
|
var value = 0;
|
545
545
|
if (changeToKbtu){
|
546
|
-
value = feature.monthly_values['Electricity:Facility'][i]*3.41 - feature.monthly_values['ElectricityProduced:
|
546
|
+
value = feature.monthly_values['Electricity:Facility'][i]*3.41 - feature.monthly_values['REopt:ElectricityProduced:Total'][i]*3.41;
|
547
547
|
_.forEach(kbtu_datasets, function(ds){
|
548
548
|
value += feature.monthly_values[ds][i];
|
549
549
|
});
|
550
550
|
}
|
551
551
|
else {
|
552
|
-
value = feature.monthly_values['Electricity:Facility'][i] - feature.monthly_values['ElectricityProduced:
|
552
|
+
value = feature.monthly_values['Electricity:Facility'][i] - feature.monthly_values['REopt:ElectricityProduced:Total'][i]; //Values are in kWh
|
553
553
|
}
|
554
554
|
|
555
555
|
$scope.annualNetChartData[feature.name] += value;
|
@@ -373,7 +373,7 @@
|
|
373
373
|
|
374
374
|
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
375
375
|
|
376
|
-
var datasets = ['Electricity:Facility', 'ElectricityProduced:
|
376
|
+
var datasets = ['Electricity:Facility', 'REopt:ElectricityProduced:Total', 'NaturalGas:Facility', 'Propane:Facility', 'FuelOilNo2:Facility', 'OtherFuels:Facility'];
|
377
377
|
|
378
378
|
var endUseKeys = ['Heating:Electricity', 'Cooling:Electricity', 'InteriorLights:Electricity', 'ExteriorLights:Electricity', 'InteriorEquipment:Electricity', 'ExteriorEquipment:Electricity', 'Fans:Electricity', 'Pumps:Electricity', 'HeatRejection:Electricity', 'WaterSystems:Electricity'];
|
379
379
|
|
@@ -456,7 +456,7 @@
|
|
456
456
|
datasetUnit = 'Electricity:Facility(kWh)';
|
457
457
|
}
|
458
458
|
}
|
459
|
-
} else if (dataset == 'ElectricityProduced:
|
459
|
+
} else if (dataset == 'REopt:ElectricityProduced:Total') {
|
460
460
|
// first check if there is data to include
|
461
461
|
if (!(values.every(item => item === 0))) {
|
462
462
|
if (changeToKbtu) {
|
@@ -515,14 +515,14 @@
|
|
515
515
|
values: _.map(months, function (month, i) {
|
516
516
|
var value = 0;
|
517
517
|
if (changeToKbtu){
|
518
|
-
value = scenario.monthly_values['Electricity:Facility'][i]*3.41 - scenario.monthly_values['ElectricityProduced:
|
518
|
+
value = scenario.monthly_values['Electricity:Facility'][i]*3.41 - scenario.monthly_values['REopt:ElectricityProduced:Total'][i]*3.41 + scenario.monthly_values['NaturalGas:Facility'][i]; //Values are in kBtu
|
519
519
|
|
520
520
|
_.forEach(kbtu_datasets, function(ds){
|
521
521
|
value += scenario.monthly_values[ds][i];
|
522
522
|
});
|
523
523
|
}
|
524
524
|
else {
|
525
|
-
value = scenario.monthly_values['Electricity:Facility'][i] - scenario.monthly_values['ElectricityProduced:
|
525
|
+
value = scenario.monthly_values['Electricity:Facility'][i] - scenario.monthly_values['REopt:ElectricityProduced:Total'][i]; //Values are in kWh
|
526
526
|
}
|
527
527
|
// value;
|
528
528
|
$scope.annualNetChartData[scenario.name] += value;
|
data/lib/uo_cli/version.rb
CHANGED
data/lib/uo_cli.rb
CHANGED
@@ -129,6 +129,9 @@ module URBANopt
|
|
129
129
|
opt :streets, "\nCreate default project wiht FeatureFile containing streets, used for RNM analysis\n" \
|
130
130
|
"Example: uo create --project-folder urbanopt_example_project --streets", short: :t
|
131
131
|
|
132
|
+
opt :photovoltaic, "\nCreate default project with FeatureFile containing community photovoltaic for the district and ground-mount photovoltaic associated with buildings, used for REopt analysis \n" \
|
133
|
+
"Example: uo create --project-folder urbanopt_example_project --photovoltaic", short: :v
|
134
|
+
|
132
135
|
opt :empty, "\nUse with --project-folder argument to create an empty project folder\n" \
|
133
136
|
"Then add your own Feature file in the project directory you created,\n" \
|
134
137
|
"add Weather files in the weather folder and add OpenStudio models of Features\n" \
|
@@ -226,10 +229,10 @@ module URBANopt
|
|
226
229
|
"Example: uo rnm --scenario baseline_scenario.csv --feature example_project.json --reopt", short: :r
|
227
230
|
|
228
231
|
opt :extended_catalog, "\nUse this option to specify the extended electrical catalog path.\n" \
|
229
|
-
"If this option is not included, the default catalog will be used", short: :c
|
232
|
+
"If this option is not included, the default catalog will be used", type: String, short: :c
|
230
233
|
|
231
234
|
opt :average_peak_catalog, "\nUse this option to specify the average peak catalog path.\n" \
|
232
|
-
"If this option is not included, the default catalog will be used", short: :a
|
235
|
+
"If this option is not included, the default catalog will be used", type: String, short: :a
|
233
236
|
|
234
237
|
opt :opendss, "\n If this option is specified, an OpenDSS-compatible electrical database will be created \n" \
|
235
238
|
"Example: uo rnm --scenario baseline_scenario.csv --feature example_project_with_streets.json --opendss", short: :o
|
@@ -533,11 +536,13 @@ module URBANopt
|
|
533
536
|
FileUtils.cp(File.join(path_item, 'example_project_with_electric_network.json'), dir_name)
|
534
537
|
elsif @opthash.subopts[:streets] == true
|
535
538
|
FileUtils.cp(File.join(path_item, 'example_project_with_streets.json'), dir_name)
|
539
|
+
elsif @opthash.subopts[:photovoltaic] == true
|
540
|
+
FileUtils.cp(File.join(path_item, 'example_project_with_PV.json'), dir_name)
|
536
541
|
end
|
537
542
|
|
538
543
|
if @opthash.subopts[:floorspace] == false
|
539
544
|
|
540
|
-
if @opthash.subopts[:electric] != true && @opthash.subopts[:streets] != true
|
545
|
+
if @opthash.subopts[:electric] != true && @opthash.subopts[:streets] != true && @opthash.subopts[:photovoltaic] != true
|
541
546
|
# copy feature file
|
542
547
|
FileUtils.cp(File.join(path_item, 'example_project.json'), dir_name)
|
543
548
|
end
|
@@ -554,6 +559,7 @@ module URBANopt
|
|
554
559
|
FileUtils.cp(File.join(path_item, 'mappers/HighEfficiency.rb'), File.join(dir_name, 'mappers'))
|
555
560
|
FileUtils.cp(File.join(path_item, 'mappers/ThermalStorage.rb'), File.join(dir_name, 'mappers'))
|
556
561
|
FileUtils.cp(File.join(path_item, 'mappers/EvCharging.rb'), File.join(dir_name, 'mappers'))
|
562
|
+
FileUtils.cp(File.join(path_item, 'mappers/FlexibleHotWater.rb'), File.join(dir_name, 'mappers'))
|
557
563
|
|
558
564
|
# copy osw file
|
559
565
|
FileUtils.cp(File.join(path_item, 'mappers/base_workflow.osw'), File.join(dir_name, 'mappers'))
|
@@ -923,29 +929,57 @@ module URBANopt
|
|
923
929
|
scenario_assumptions = File.expand_path(@opthash.subopts[:reopt_scenario_assumptions_file]).to_s
|
924
930
|
end
|
925
931
|
puts "\nRunning the REopt Scenario post-processor with scenario assumptions file: #{scenario_assumptions}\n"
|
932
|
+
# Add community photovoltaic if present in the Feature File
|
933
|
+
community_photovoltaic = []
|
934
|
+
feature_file = JSON.parse(File.read(File.expand_path(@opthash.subopts[:feature])), symbolize_names: true)
|
935
|
+
feature_file[:features].each do |feature|
|
936
|
+
begin
|
937
|
+
if feature[:properties][:district_system_type]
|
938
|
+
if feature[:properties][:district_system_type] == 'Community Photovoltaic'
|
939
|
+
community_photovoltaic << feature
|
940
|
+
end
|
941
|
+
end
|
942
|
+
rescue
|
943
|
+
end
|
944
|
+
end
|
926
945
|
reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(
|
927
946
|
scenario_report,
|
928
947
|
scenario_assumptions,
|
929
948
|
scenario_base.reopt_feature_assumptions,
|
930
|
-
DEVELOPER_NREL_KEY
|
949
|
+
DEVELOPER_NREL_KEY,false
|
931
950
|
)
|
932
951
|
if @opthash.subopts[:reopt_scenario] == true
|
933
952
|
puts "\nPost-processing entire scenario with REopt\n"
|
934
953
|
scenario_report_scenario = reopt_post_processor.run_scenario_report(
|
935
954
|
scenario_report: scenario_report,
|
936
955
|
save_name: 'scenario_optimization',
|
937
|
-
run_resilience: @opthash.subopts[:reopt_resilience]
|
956
|
+
run_resilience: @opthash.subopts[:reopt_resilience],
|
957
|
+
community_photovoltaic: community_photovoltaic
|
938
958
|
)
|
939
959
|
results << { "process_type": 'reopt_scenario', "status": 'Complete', "timestamp": Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') }
|
940
960
|
puts "\nDone\n"
|
941
961
|
elsif @opthash.subopts[:reopt_feature] == true
|
942
962
|
puts "\nPost-processing each building individually with REopt\n"
|
963
|
+
# Add groundmount photovoltaic if present in the Feature File
|
964
|
+
groundmount_photovoltaic = {}
|
965
|
+
feature_file = JSON.parse(File.read(File.expand_path(@opthash.subopts[:feature])), symbolize_names: true)
|
966
|
+
feature_file[:features].each do |feature|
|
967
|
+
begin
|
968
|
+
if feature[:properties][:district_system_type]
|
969
|
+
if feature[:properties][:district_system_type] == 'Ground Mount Photovoltaic'
|
970
|
+
groundmount_photovoltaic[feature[:properties][:associated_building_id]] = feature[:properties][:footprint_area]
|
971
|
+
end
|
972
|
+
end
|
973
|
+
rescue
|
974
|
+
end
|
975
|
+
end
|
943
976
|
scenario_report_features = reopt_post_processor.run_scenario_report_features(
|
944
977
|
scenario_report: scenario_report,
|
945
978
|
save_names_feature_reports: ['feature_optimization'] * scenario_report.feature_reports.length,
|
946
979
|
save_name_scenario_report: 'feature_optimization',
|
947
980
|
run_resilience: @opthash.subopts[:reopt_resilience],
|
948
|
-
keep_existing_output: @opthash.subopts[:reopt_keep_existing]
|
981
|
+
keep_existing_output: @opthash.subopts[:reopt_keep_existing],
|
982
|
+
groundmount_photovoltaic: groundmount_photovoltaic
|
949
983
|
)
|
950
984
|
results << { "process_type": 'reopt_feature', "status": 'Complete', "timestamp": Time.now.strftime('%Y-%m-%dT%k:%M:%S.%L') }
|
951
985
|
puts "\nDone\n"
|
@@ -971,11 +1005,16 @@ module URBANopt
|
|
971
1005
|
scenario_folders = []
|
972
1006
|
scenario_report_exists = false
|
973
1007
|
Dir.glob(File.join(run_dir, '/*_scenario')) do |scenario_folder|
|
974
|
-
scenario_report = File.join(scenario_folder, '
|
975
|
-
if
|
976
|
-
|
1008
|
+
scenario_report = File.join(scenario_folder, 'scenario_optimization.csv')
|
1009
|
+
# Check if Scenario Optimization REopt file exists and add that
|
1010
|
+
if File.exist?(File.join(scenario_folder, 'scenario_optimization.csv'))
|
1011
|
+
scenario_folders << File.join(scenario_folder, 'scenario_optimization.csv')
|
977
1012
|
scenario_report_exists = true
|
978
|
-
|
1013
|
+
# Check if Default Feature Report exists and add that
|
1014
|
+
elsif File.exist?(File.join(scenario_folder, 'default_scenario_report.csv'))
|
1015
|
+
scenario_folders << File.join(scenario_folder, 'default_scenario_report.csv')
|
1016
|
+
scenario_report_exists = true
|
1017
|
+
elsif
|
979
1018
|
puts "\nERROR: Default reports not created for #{scenario_folder}. Please use 'process --default' to create default post processing reports for all scenarios first. Visualization not generated for #{scenario_folder}.\n"
|
980
1019
|
end
|
981
1020
|
end
|
@@ -1011,11 +1050,14 @@ module URBANopt
|
|
1011
1050
|
feature_folders = []
|
1012
1051
|
# loop through building feature ids from scenario csv
|
1013
1052
|
csv['Feature Id'].each do |feature|
|
1014
|
-
|
1015
|
-
if File.exist?(
|
1053
|
+
# Check if Feature Optimization REopt file exists and add that
|
1054
|
+
if File.exist?(File.join(run_dir, feature, 'feature_reports/feature_optimization.csv'))
|
1016
1055
|
feature_report_exists = true
|
1017
|
-
feature_folders << File.join(run_dir, feature)
|
1018
|
-
|
1056
|
+
feature_folders << File.join(run_dir, feature, 'feature_reports/feature_optimization.csv')
|
1057
|
+
elsif File.exist?(File.join(run_dir, feature, 'feature_reports/default_feature_report.csv'))
|
1058
|
+
feature_report_exists = true
|
1059
|
+
feature_folders << File.join(run_dir, feature, 'feature_reports/default_feature_report.csv')
|
1060
|
+
elsif
|
1019
1061
|
puts "\nERROR: Default reports not created for #{feature}. Please use 'process --default' to create default post processing reports for all features first. Visualization not generated for #{feature}.\n"
|
1020
1062
|
end
|
1021
1063
|
end
|
data/uo_cli.gemspec
CHANGED
@@ -34,11 +34,11 @@ Gem::Specification.new do |spec|
|
|
34
34
|
|
35
35
|
# use specific versions of urbanopt and openstudio dependencies while under heavy development
|
36
36
|
spec.add_runtime_dependency 'optimist', '~> 3'
|
37
|
-
spec.add_runtime_dependency 'urbanopt-geojson', '~> 0.6.
|
38
|
-
spec.add_runtime_dependency 'urbanopt-reporting', '~> 0.4.
|
39
|
-
spec.add_runtime_dependency 'urbanopt-scenario', '~> 0.6.
|
40
|
-
spec.add_runtime_dependency 'urbanopt-reopt', '~> 0.6.
|
41
|
-
spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 0.1.
|
37
|
+
spec.add_runtime_dependency 'urbanopt-geojson', '~> 0.6.6'
|
38
|
+
spec.add_runtime_dependency 'urbanopt-reporting', '~> 0.4.2'
|
39
|
+
spec.add_runtime_dependency 'urbanopt-scenario', '~> 0.6.3'
|
40
|
+
spec.add_runtime_dependency 'urbanopt-reopt', '~> 0.6.2'
|
41
|
+
spec.add_runtime_dependency 'urbanopt-rnm-us', '~> 0.1.1'
|
42
42
|
|
43
43
|
spec.add_development_dependency 'bundler', '>= 2.1.0'
|
44
44
|
spec.add_development_dependency 'rake', '~> 13.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanopt-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: optimist
|
@@ -30,70 +30,70 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.6.
|
33
|
+
version: 0.6.6
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.6.
|
40
|
+
version: 0.6.6
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: urbanopt-reporting
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.4.
|
47
|
+
version: 0.4.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.4.
|
54
|
+
version: 0.4.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: urbanopt-scenario
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.6.
|
61
|
+
version: 0.6.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.6.
|
68
|
+
version: 0.6.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: urbanopt-reopt
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.6.
|
75
|
+
version: 0.6.2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.6.
|
82
|
+
version: 0.6.2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: urbanopt-rnm-us
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.1.
|
89
|
+
version: 0.1.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 0.1.
|
96
|
+
version: 0.1.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -209,11 +209,13 @@ files:
|
|
209
209
|
- example_files/example_floorspace_project.json
|
210
210
|
- example_files/example_project.json
|
211
211
|
- example_files/example_project_combined.json
|
212
|
+
- example_files/example_project_with_PV.json
|
212
213
|
- example_files/example_project_with_electric_network.json
|
213
214
|
- example_files/example_project_with_streets.json
|
214
215
|
- example_files/mappers/Baseline.rb
|
215
216
|
- example_files/mappers/CreateBar.rb
|
216
217
|
- example_files/mappers/EvCharging.rb
|
218
|
+
- example_files/mappers/FlexibleHotWater.rb
|
217
219
|
- example_files/mappers/Floorspace.rb
|
218
220
|
- example_files/mappers/HighEfficiency.rb
|
219
221
|
- example_files/mappers/HighEfficiencyCreateBar.rb
|