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.
@@ -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
- if reopt_output['inputs']['Wind']['size_class']
281
- size_class = reopt_output['inputs']['Wind']['size_class']
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 (defined?(generator) && defined?(storage))
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 (defined?(wind) && defined?(storage))
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 wieghted origin timestep values to average
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 propotional amount of the origin stepped
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
@@ -5,6 +5,6 @@
5
5
 
6
6
  module URBANopt # :nodoc:
7
7
  module REopt # :nodoc:
8
- VERSION = '0.12.0'.freeze
8
+ VERSION = '1.1.0'.freeze
9
9
  end
10
10
  end
@@ -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'
@@ -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.required_ruby_version = '~> 2.7.0'
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.15.0'
31
- spec.add_development_dependency 'simplecov', '~> 0.18.2'
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: 0.12.0
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: 2024-05-07 00:00:00.000000000 Z
11
+ date: 2025-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: openstudio-extension
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.1'
20
- type: :development
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: '2.1'
26
+ version: 0.9.4
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: matrix
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '13.0'
34
- type: :development
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: '13.0'
40
+ version: 0.4.2
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: urbanopt-scenario
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.9'
48
- type: :development
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: '3.9'
54
+ version: 1.1.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rubocop
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.15.0
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: 1.15.0
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: simplecov
70
+ name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.18.2
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: 0.18.2
82
+ version: '3.9'
83
83
  - !ruby/object:Gem::Dependency
84
- name: simplecov-lcov
84
+ name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.8.0
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: 0.8.0
96
+ version: '1.50'
97
97
  - !ruby/object:Gem::Dependency
98
- name: openstudio-extension
98
+ name: rubocop-performance
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.7.1
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: 0.7.1
110
+ version: '1.20'
111
111
  - !ruby/object:Gem::Dependency
112
- name: certified
112
+ name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1'
118
- type: :runtime
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: '1'
124
+ version: 0.22.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: urbanopt-scenario
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.12.0
132
- type: :runtime
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.12.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.7.0
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.1.4
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.