urbanopt-reopt 0.12.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/nightly_ci_build.yml +4 -7
- data/.gitignore +1 -1
- data/CHANGELOG.md +22 -0
- data/Gemfile +14 -11
- data/LICENSE.md +1 -1
- data/doc_templates/LICENSE.md +1 -1
- data/doc_templates/copyright_erb.txt +1 -1
- data/docs/schemas/reopt-output-schema.md +1 -1
- data/lib/urbanopt/reopt/feature_report_adapter.rb +6 -7
- data/lib/urbanopt/reopt/reopt_ghp_adapter.rb +337 -0
- data/lib/urbanopt/reopt/reopt_ghp_api.rb +156 -0
- data/lib/urbanopt/reopt/reopt_ghp_files/reopt_ghp_assumption.json +27 -0
- data/lib/urbanopt/reopt/reopt_ghp_post_processor.rb +149 -0
- data/lib/urbanopt/reopt/reopt_lite_api.rb +8 -9
- data/lib/urbanopt/reopt/reopt_logger.rb +1 -1
- data/lib/urbanopt/reopt/reopt_post_processor.rb +2 -3
- data/lib/urbanopt/reopt/reopt_schema/REopt-GHP-input.json +148 -0
- data/lib/urbanopt/reopt/reopt_schema/reopt_input_schema.json +2 -2
- data/lib/urbanopt/reopt/reopt_schema/reopt_output_schema.json +40 -0
- data/lib/urbanopt/reopt/scenario_report_adapter.rb +6 -10
- data/lib/urbanopt/reopt/utilities.rb +2 -2
- data/lib/urbanopt/reopt/version.rb +1 -1
- data/lib/urbanopt/reopt.rb +3 -0
- data/urbanopt-reopt.gemspec +10 -8
- metadata +42 -37
@@ -43,9 +43,9 @@ module URBANopt # :nodoc:
|
|
43
43
|
else
|
44
44
|
@@logger.info('Using default REopt assumptions')
|
45
45
|
reopt_inputs = {
|
46
|
-
Settings:{},
|
46
|
+
Settings: {},
|
47
47
|
Site: {},
|
48
|
-
Financial:{},
|
48
|
+
Financial: {},
|
49
49
|
ElectricTariff: {
|
50
50
|
monthly_demand_rates: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
51
51
|
monthly_energy_rates: [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
|
@@ -277,12 +277,8 @@ module URBANopt # :nodoc:
|
|
277
277
|
wind = reopt_output['outputs']['Wind']
|
278
278
|
# find size_class
|
279
279
|
size_class = nil
|
280
|
-
|
281
|
-
|
282
|
-
else
|
283
|
-
size_class = 'commercial' # default
|
284
|
-
end
|
285
|
-
scenario_report.distributed_generation.add_tech 'wind', URBANopt::Reporting::DefaultReports::Wind.new({ size_kw: (wind['size_kw'] || 0), size_class: size_class, average_yearly_energy_produced_kwh: (wind['average_yearly_energy_produced_kwh'] || 0) })
|
280
|
+
size_class = reopt_output['inputs']['Wind']['size_class'] || 'commercial'
|
281
|
+
scenario_report.distributed_generation.add_tech 'wind', URBANopt::Reporting::DefaultReports::Wind.new({ size_kw: (wind['size_kw'] || 0), size_class:, average_yearly_energy_produced_kwh: (wind['average_yearly_energy_produced_kwh'] || 0) })
|
286
282
|
end
|
287
283
|
|
288
284
|
if reopt_output['outputs'].key?('Generator')
|
@@ -491,7 +487,7 @@ module URBANopt # :nodoc:
|
|
491
487
|
data[$storage_to_grid_col] = $storage_to_grid[idx] || 0 if defined?(storage)
|
492
488
|
data[$storage_soc_col] = $storage_soc[idx] || 0 if defined?(storage)
|
493
489
|
data[$generator_total_col] = $generator_total[idx] || 0 if defined?(generator)
|
494
|
-
data[$generator_to_battery_col] = $generator_to_battery[idx] || 0 if
|
490
|
+
data[$generator_to_battery_col] = $generator_to_battery[idx] || 0 if defined?(generator) && defined?(storage)
|
495
491
|
data[$generator_to_load_col] = $generator_to_load[idx] || 0 if defined?(generator)
|
496
492
|
data[$generator_to_grid_col] = $generator_to_grid[idx] || 0 if defined?(generator)
|
497
493
|
data[$pv_total_col] = $pv_total[idx] || 0
|
@@ -499,7 +495,7 @@ module URBANopt # :nodoc:
|
|
499
495
|
data[$pv_to_load_col] = $pv_to_load[idx] || 0
|
500
496
|
data[$pv_to_grid_col] = $pv_to_grid[idx] || 0
|
501
497
|
data[$wind_total_col] = $wind_total[idx] || 0 if defined?(wind)
|
502
|
-
data[$wind_to_battery_col] = $wind_to_battery[idx] || 0 if
|
498
|
+
data[$wind_to_battery_col] = $wind_to_battery[idx] || 0 if defined?(wind) && defined?(storage)
|
503
499
|
data[$wind_to_load_col] = $wind_to_load[idx] || 0 if defined?(wind)
|
504
500
|
data[$wind_to_grid_col] = $wind_to_grid[idx] || 0 if defined?(wind)
|
505
501
|
return data
|
@@ -36,7 +36,7 @@ def convert_powerflow_resolution(timeseries_kw, original_res, destination_res)
|
|
36
36
|
current_origin_idx = 0 # current integer index of the origin timeseries
|
37
37
|
(0..(8760 * destination_res - 1)).each do |ts|
|
38
38
|
next_stopping_ts = current_origin_ts + stepping_interval # stop at the next destination interval
|
39
|
-
total_power = [] # create to store
|
39
|
+
total_power = [] # create to store weighted origin timestep values to average
|
40
40
|
while current_origin_ts != next_stopping_ts
|
41
41
|
next_origin_ts_int = Integer(current_origin_ts) + 1
|
42
42
|
# Calc next stopping point that will being you to the next origin or destination time step
|
@@ -61,7 +61,7 @@ def convert_powerflow_resolution(timeseries_kw, original_res, destination_res)
|
|
61
61
|
# Timesteps will be expanded, i.e. 8760 -> 35040
|
62
62
|
|
63
63
|
# This algorithm works by stepping along the destination timeseries. Steps are made to the next
|
64
|
-
# destination or origin breakpoint, and at each step the
|
64
|
+
# destination or origin breakpoint, and at each step the proportional amount of the origin stepped
|
65
65
|
# is added to the destination. For example, in in EX 1 below 4 steps are made each with adding the full amount of
|
66
66
|
# the origin (1, 1, 2 and 2) since each in the destination overlaps perfectly with 2 origin
|
67
67
|
# timesteps. In EX 2, the origin overlaps with the first 2 destination timesteps but the third
|
data/lib/urbanopt/reopt.rb
CHANGED
@@ -9,3 +9,6 @@ require 'urbanopt/reopt/feature_report_adapter'
|
|
9
9
|
require 'urbanopt/reopt/scenario_report_adapter'
|
10
10
|
require 'urbanopt/reopt/reopt_post_processor'
|
11
11
|
require 'urbanopt/reopt/version'
|
12
|
+
require 'urbanopt/reopt/reopt_ghp_post_processor'
|
13
|
+
require 'urbanopt/reopt/reopt_ghp_adapter'
|
14
|
+
require 'urbanopt/reopt/reopt_ghp_api'
|
data/urbanopt-reopt.gemspec
CHANGED
@@ -21,17 +21,19 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.bindir = 'exe'
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
|
+
# We support exactly Ruby v3.2.2 because os-extension requires bundler==2.4.10 and that requires Ruby 3.2.2: https://stdgems.org/bundler/
|
25
|
+
# It would be nice to be able to use newer patches of Ruby 3.2, which would require os-extension to relax its dependency on bundler.
|
26
|
+
spec.required_ruby_version = '3.2.2'
|
24
27
|
|
25
|
-
spec.
|
28
|
+
spec.add_dependency 'openstudio-extension', '~> 0.9.4'
|
29
|
+
# Matrix is in stdlib, but needs to be specifically added here for compatibility with Ruby 3.2
|
30
|
+
spec.add_dependency 'matrix', '~> 0.4.2'
|
31
|
+
spec.add_dependency 'urbanopt-scenario', '~> 1.1.0'
|
26
32
|
|
27
|
-
spec.add_development_dependency 'bundler', '~> 2.1'
|
28
33
|
spec.add_development_dependency 'rake', '~> 13.0'
|
29
34
|
spec.add_development_dependency 'rspec', '~> 3.9'
|
30
|
-
spec.add_development_dependency 'rubocop', '~> 1.
|
31
|
-
spec.add_development_dependency '
|
35
|
+
spec.add_development_dependency 'rubocop', '~> 1.50'
|
36
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.20'
|
37
|
+
spec.add_development_dependency 'simplecov', '~> 0.22.0'
|
32
38
|
spec.add_development_dependency 'simplecov-lcov', '~> 0.8.0'
|
33
|
-
spec.add_development_dependency 'openstudio-extension', '~> 0.7.1'
|
34
|
-
|
35
|
-
spec.add_dependency 'certified', '~> 1'
|
36
|
-
spec.add_dependency 'urbanopt-scenario', '~> 0.12.0'
|
37
39
|
end
|
metadata
CHANGED
@@ -1,141 +1,141 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: urbanopt-reopt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ''
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: openstudio-extension
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
-
type: :
|
19
|
+
version: 0.9.4
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.9.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: matrix
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
34
|
-
type: :
|
33
|
+
version: 0.4.2
|
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:
|
40
|
+
version: 0.4.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: urbanopt-scenario
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
type: :
|
47
|
+
version: 1.1.0
|
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:
|
54
|
+
version: 1.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: '13.0'
|
62
62
|
type: :development
|
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:
|
68
|
+
version: '13.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: '3.9'
|
76
76
|
type: :development
|
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:
|
82
|
+
version: '3.9'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: '1.50'
|
90
90
|
type: :development
|
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:
|
96
|
+
version: '1.50'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: rubocop-performance
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: '1.20'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: '1.20'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
118
|
-
type: :
|
117
|
+
version: 0.22.0
|
118
|
+
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 0.22.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: simplecov-lcov
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
132
|
-
type: :
|
131
|
+
version: 0.8.0
|
132
|
+
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
138
|
+
version: 0.8.0
|
139
139
|
description: Classes and measures for utilizing the REopt API within OpenStudio workflows.
|
140
140
|
email:
|
141
141
|
- ''
|
@@ -189,9 +189,14 @@ files:
|
|
189
189
|
- lib/urbanopt/reopt.rb
|
190
190
|
- lib/urbanopt/reopt/extension.rb
|
191
191
|
- lib/urbanopt/reopt/feature_report_adapter.rb
|
192
|
+
- lib/urbanopt/reopt/reopt_ghp_adapter.rb
|
193
|
+
- lib/urbanopt/reopt/reopt_ghp_api.rb
|
194
|
+
- lib/urbanopt/reopt/reopt_ghp_files/reopt_ghp_assumption.json
|
195
|
+
- lib/urbanopt/reopt/reopt_ghp_post_processor.rb
|
192
196
|
- lib/urbanopt/reopt/reopt_lite_api.rb
|
193
197
|
- lib/urbanopt/reopt/reopt_logger.rb
|
194
198
|
- lib/urbanopt/reopt/reopt_post_processor.rb
|
199
|
+
- lib/urbanopt/reopt/reopt_schema/REopt-GHP-input.json
|
195
200
|
- lib/urbanopt/reopt/reopt_schema/reopt_input_schema.json
|
196
201
|
- lib/urbanopt/reopt/reopt_schema/reopt_output_schema.json
|
197
202
|
- lib/urbanopt/reopt/scenario/reopt_scenario_csv.rb
|
@@ -210,16 +215,16 @@ require_paths:
|
|
210
215
|
- lib
|
211
216
|
required_ruby_version: !ruby/object:Gem::Requirement
|
212
217
|
requirements:
|
213
|
-
- -
|
218
|
+
- - '='
|
214
219
|
- !ruby/object:Gem::Version
|
215
|
-
version: 2.
|
220
|
+
version: 3.2.2
|
216
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
217
222
|
requirements:
|
218
223
|
- - ">="
|
219
224
|
- !ruby/object:Gem::Version
|
220
225
|
version: '0'
|
221
226
|
requirements: []
|
222
|
-
rubygems_version: 3.
|
227
|
+
rubygems_version: 3.4.10
|
223
228
|
signing_key:
|
224
229
|
specification_version: 4
|
225
230
|
summary: Accessing the REopt API within OpenStudio workflows.
|