urbanopt-reopt 1.1.0 → 1.2.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.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/CONTRIBUTING.md +3 -3
  4. data/Gemfile +13 -6
  5. data/LICENSE.md +1 -1
  6. data/RDOC_MAIN.md +2 -2
  7. data/README.md +2 -2
  8. data/Rakefile +1 -1
  9. data/developer_nrel_key.rb +1 -1
  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 +2 -2
  15. data/docs/package.json +1 -1
  16. data/index.md +2 -2
  17. data/lib/urbanopt/reopt/extension.rb +1 -1
  18. data/lib/urbanopt/reopt/feature_report_adapter.rb +10 -11
  19. data/lib/urbanopt/reopt/{reopt_ghp_adapter.rb → reopt_ghp_adapter_ghp.rb} +238 -48
  20. data/lib/urbanopt/reopt/reopt_ghp_api.rb +3 -3
  21. data/lib/urbanopt/reopt/reopt_ghp_files/reopt_ghp_assumption.json +3 -3
  22. data/lib/urbanopt/reopt/reopt_ghp_post_processor.rb +13 -4
  23. data/lib/urbanopt/reopt/reopt_ghp_result.rb +145 -0
  24. data/lib/urbanopt/reopt/reopt_lite_api.rb +54 -13
  25. data/lib/urbanopt/reopt/reopt_logger.rb +1 -1
  26. data/lib/urbanopt/reopt/reopt_post_processor.rb +54 -18
  27. data/lib/urbanopt/reopt/reopt_schema/REopt-BAU-input.json +174 -0
  28. data/lib/urbanopt/reopt/reopt_schema/REopt-GHP-input.json +263 -95
  29. data/lib/urbanopt/reopt/scenario/reopt_scenario_csv.rb +1 -1
  30. data/lib/urbanopt/reopt/scenario_report_adapter.rb +8 -9
  31. data/lib/urbanopt/reopt/utilities.rb +1 -1
  32. data/lib/urbanopt/reopt/version.rb +2 -2
  33. data/lib/urbanopt/reopt.rb +3 -2
  34. data/lib/urbanopt/reopt_scenario.rb +1 -1
  35. data/lib/urbanopt-reopt.rb +1 -1
  36. data/urbanopt-reopt.gemspec +1 -1
  37. metadata +7 -5
@@ -1,148 +1,316 @@
1
1
  {
2
+ "title": "URBANopt REopt GHP Inputs",
3
+ "type": "object",
4
+ "properties": {
2
5
  "Site": {
6
+ "type": "object",
7
+ "properties": {
3
8
  "latitude": {
4
- "type": "float",
5
- "required": true
9
+ "type": "number",
10
+ "minimum": -90,
11
+ "maximum": 90,
12
+ "description": "The approximate latitude of the site in decimal degrees."
6
13
  },
7
14
  "longitude": {
8
- "type": "float",
9
- "required": true
15
+ "type": "number",
16
+ "minimum": -180,
17
+ "maximum": 180,
18
+ "description": "The approximate longitude of the site in decimal degrees."
10
19
  }
20
+ },
21
+ "required": [
22
+ "latitude",
23
+ "longitude"
24
+ ]
11
25
  },
12
26
  "SpaceHeatingLoad": {
27
+ "type": "object",
28
+ "properties": {
13
29
  "fuel_loads_mmbtu_per_hour": {
14
- "type": "array",
15
- "required": true,
16
- "description": "8760 timeseries",
17
- "note": "This parameter is required to run REopt's GHP module but is not used to calculate URBANopt's GHP system LCCA. Users can set this to small numbers in GHP scenario"
30
+ "type": "array",
31
+ "items": {
32
+ "type": "number"
33
+ },
34
+ "description": "Fuel energy consumption for space heating at building level (8760 timeseries). Used in BAU LCCA for the GHP iteration.",
35
+ "note": "This parameter is required to run REopt's GHP module as per the REopt formatting requirements, but is not used to calculate URBANopt's GHP system LCCA.\nUsers can set this to values close to 0 (but have to be > 0) in the GHP scenario."
18
36
  }
37
+ },
38
+ "required": [
39
+ "fuel_loads_mmbtu_per_hour"
40
+ ]
19
41
  },
20
42
  "DomesticHotWaterLoad": {
43
+ "type": "object",
44
+ "properties": {
21
45
  "fuel_loads_mmbtu_per_hour": {
22
- "type": "array",
23
- "required": true,
24
- "description": "8760 timeseries, if GHP not providing DHW set to zeros"
46
+ "type": "array",
47
+ "items": {
48
+ "type": "number"
49
+ },
50
+ "description": "Fuel consumption for DHW at building level (8760 timeseries). Used in LCCA per iteration context.",
51
+ "note": "15 min interval data do not work in GHP module. Please make sure all timeseries are 8760."
25
52
  }
53
+ },
54
+ "required": [
55
+ "fuel_loads_mmbtu_per_hour"
56
+ ]
26
57
  },
27
58
  "ElectricLoad": {
28
- "load_kw": {
29
- "type": "array",
30
- "required": true,
31
- "description": "8760 timeseries",
32
- "note": "15 min interval data do not work in GHP module. Please make sure all timeseries are 8760"
59
+ "type": "object",
60
+ "properties": {
61
+ "loads_kw": {
62
+ "type": "array",
63
+ "items": {
64
+ "type": "number"
65
+ },
66
+ "description": "Building electric load (kW) for the GHP scenario (8760). Sum of secondary pump, heat pump, and ETS pump powers.",
67
+ "note": "15 min interval data do not work in GHP module. Please make sure all timeseries are 8760."
33
68
  }
69
+ },
70
+ "required": [
71
+ "loads_kw"
72
+ ]
34
73
  },
35
- "ElectricTarriff": {
36
- "urdb_label": "string",
37
- "required": true
74
+ "ElectricTariff": {
75
+ "type": "object",
76
+ "description": "Define electric tariff by exactly ONE of: (1) urdb_label, (2) blended_annual_energy_rate, (3) urdb_response.",
77
+ "properties": {
78
+ "urdb_label": {
79
+ "type": "string",
80
+ "description": "Label attribute of utility rate structure from https://openei.org/services/doc/rest/util_rates/?version=3"
81
+ },
82
+ "blended_annual_energy_rate": {
83
+ "type": "number",
84
+ "description": "Annual blended energy rate [$ per kWh] (total annual energy kWh / annual cost $)."
85
+ },
86
+ "urdb_response": {
87
+ "type": "object",
88
+ "description": "Utility Rate Database API JSON (if user-provided, ensure periods are zero-indexed)."
89
+ }
90
+ },
91
+ "oneOf": [
92
+ {
93
+ "required": [
94
+ "urdb_label"
95
+ ]
96
+ },
97
+ {
98
+ "required": [
99
+ "blended_annual_energy_rate"
100
+ ]
101
+ },
102
+ {
103
+ "required": [
104
+ "urdb_response"
105
+ ]
106
+ }
107
+ ]
38
108
  },
39
109
  "GHP": {
110
+ "type": "object",
111
+ "properties": {
40
112
  "require_ghp_purchase": {
41
- "type": "boolean",
42
- "required": true,
43
- "description": "choices of 0 or 1. Always set at 1 for URBANopt's LCCA"
113
+ "type": "number",
114
+ "description": "Always set to true (1) for URBANopt's LCCA."
44
115
  },
45
116
  "building_sqft": {
46
- "type": "float",
47
- "required": true,
48
- "description": "to calculate cost of hydronic loop",
49
- "note": "for the GHX iteration, set building_sqft to a number close to 0 but not exactly 0"
117
+ "type": "number",
118
+ "description": "Building footprint area (sq.ft.) used to calculate hydronic loop cost.",
119
+ "note": "For the GHX iteration, set building_sqft to 0."
50
120
  },
51
121
  "heatpump_capacity_sizing_factor_on_peak_load": {
52
- "type": "float",
53
- "required": true,
54
- "description": "always set to 1"
122
+ "type": "number",
123
+ "description": "Always set to 1."
55
124
  },
56
- "ghpghx_responses":{
57
- "outputs": {
58
- "heat_pump_configuration": {
125
+ "ghpghx_responses": {
126
+ "type": "array",
127
+ "minItems": 1,
128
+ "items": {
129
+ "type": "object",
130
+ "properties": {
131
+ "outputs": {
132
+ "type": "object",
133
+ "properties": {
134
+ "heat_pump_configuration": {
59
135
  "type": "string",
60
- "required": true,
61
- "description": "set as WSHP"
62
- },
63
- "peak_combined_heatpump_thermal_ton": {
64
- "type": "float",
65
- "required": true,
66
- "description": "size of GHP in ton",
67
- "note": "in the GHX iteration, set this value to a number close to 0 but NOT exactly 0S"
68
- },
69
- "number_of_boreholes": {
70
- "type": "int",
71
- "required": true,
72
- "note": "in the GHP iteration, set this value to 0"
73
- },
74
- "length_boreholes_ft": {
75
- "type": "float",
76
- "required": true,
77
- "note": "in the GHP iteration, set this value to 0"
78
- },
79
- "yearly_total_electric_consumption_series_kw": {
136
+ "description": "Set as WSHP"
137
+ },
138
+ "peak_combined_heatpump_thermal_ton": {
139
+ "type": "number",
140
+ "description": "Max of GHP heating/cooling capacity (tons) from Modelica; used in GHP LCCA.",
141
+ "note": "In the GHX iteration, set to a small positive number (NOT 0)."
142
+ },
143
+ "number_of_boreholes": {
144
+ "type": "integer",
145
+ "description": "Count from Thermal Network sizing; used in GHX LCCA.",
146
+ "note": "In the GHP iteration, set to 0."
147
+ },
148
+ "length_boreholes_ft": {
149
+ "type": "number",
150
+ "description": "Borehole length (ft) from Thermal Network sizing; used in GHX LCCA.",
151
+ "note": "In the GHP iteration, set to 0."
152
+ },
153
+ "yearly_total_electric_consumption_series_kw": {
154
+ "type": "array",
155
+ "items": {
156
+ "type": "number"
157
+ },
158
+ "description": "8760 series of building total electric consumption (kW).",
159
+ "note": "Set to 0 for all GHP and GHX iterations."
160
+ },
161
+ "yearly_ghx_pump_electric_consumption_series_kw": {
80
162
  "type": "array",
81
- "required": true,
82
- "description": "8760 timeseries of building total electric consumption",
83
- "note": "in the GHX iteration, set this value to a number close to 0 but not exactly 0"
163
+ "items": {
164
+ "type": "number"
165
+ },
166
+ "description": "8760 series of district pump electric power (kW); used in GHX LCCA.",
167
+ "note": "In the GHP iteration, set to 0."
168
+ }
84
169
  },
85
- "yearly_ghx_pump_electric_consumption_series_kw": {
170
+ "required": [
171
+ "heat_pump_configuration",
172
+ "peak_combined_heatpump_thermal_ton",
173
+ "number_of_boreholes",
174
+ "length_boreholes_ft",
175
+ "yearly_total_electric_consumption_series_kw",
176
+ "yearly_ghx_pump_electric_consumption_series_kw"
177
+ ]
178
+ },
179
+ "inputs": {
180
+ "type": "object",
181
+ "properties": {
182
+ "heating_thermal_load_mmbtu_per_hr": {
86
183
  "type": "array",
87
- "required": true,
88
- "description": "8760 timeseries of ghx's total electric consumption",
89
- "note": "in the GHP iteration, set this value to 0"
90
- }
91
- },
92
- "inputs": {
93
- "heating_thermal_load_mmbtu_per_hr": {
184
+ "items": {
185
+ "type": "number"
186
+ },
187
+ "description": "Required by REopt formatting; not used for URBANopt GHP LCCA. Set to near-zero positives."
188
+ },
189
+ "cooling_thermal_load_ton": {
94
190
  "type": "array",
95
- "required": true,
96
- "description": "not used for URBANopt's GHP LCCA but required for formatting, set to number close to 0"
191
+ "items": {
192
+ "type": "number"
193
+ },
194
+ "description": "Required by REopt formatting; not used for URBANopt GHP LCCA. Can be zeros."
195
+ }
97
196
  },
98
- "cooling_thermal_load_ton": {
99
- "type": "array",
100
- "required": true,
101
- "description": "not used for URBANopt's GHP LCCA but required for formatting, can set as zeros"
102
- }
103
- }
197
+ "required": [
198
+ "heating_thermal_load_mmbtu_per_hr",
199
+ "cooling_thermal_load_ton"
200
+ ]
201
+ }
202
+ },
203
+ "required": [
204
+ "outputs",
205
+ "inputs"
206
+ ]
207
+ }
104
208
  },
105
209
  "installed_cost_heatpump_per_ton": {
106
- "type": "float",
107
- "required": false,
108
- "description": "installation cost per unit (ton) of GHP"
210
+ "type": "number",
211
+ "description": "Installed cost per ton of GHP ($/ton). Optional; defaults may be applied."
109
212
  },
110
213
  "installed_cost_ghx_per_ft": {
111
- "type": "float",
112
- "required": false,
113
- "description": "installation cost per unit (ft) of GHX"
214
+ "type": "number",
215
+ "description": "Installed cost per ft of GHX ($/ft). Optional; defaults may be applied."
114
216
  },
115
217
  "installed_cost_building_hydronic_loop_per_sqft": {
116
- "type": "float",
117
- "required": false,
118
- "description": "installation cost per sqft of building hydronic loop"
218
+ "type": "number",
219
+ "description": "Installed cost for building hydronic loop ($/sqft of footprint). Optional; defaults may be applied."
119
220
  },
120
221
  "om_cost_per_sqft_year": {
121
- "type": "float",
122
- "required": false,
123
- "description": "if not specified, the value is -$0.51, capturing saving from HVAC operation. Recommended setting at 0"
222
+ "type": "number",
223
+ "description": "O&M cost ($/sqft-year). Default often negative (savings); 0 recommended for positive NPV clarity."
124
224
  },
125
225
  "macrs_bonus_fraction": {
126
- "type": "float",
127
- "required": false,
128
- "description": "Percentage of macrs benefits for GHP. Value between 0 and 1"
226
+ "type": "number",
227
+ "minimum": 0,
228
+ "maximum": 1,
229
+ "description": "MACRS bonus fraction for GHP."
129
230
  },
130
231
  "macrs_itc_reduction": {
131
- "type": "float",
132
- "required": false,
133
- "description": "Percentage of macrs benefits for GHP. Value between 0 and 1"
232
+ "type": "number",
233
+ "minimum": 0,
234
+ "maximum": 1,
235
+ "description": "MACRS ITC reduction fraction."
134
236
  },
135
237
  "federal_itc_fraction": {
136
- "type": "float",
137
- "required": false,
138
- "description": "Percentage of ITC benefits for GHP. Value between 0 and 1"
238
+ "type": "number",
239
+ "minimum": 0,
240
+ "maximum": 1,
241
+ "description": "Investment Tax Credit fraction."
242
+ },
243
+ "avoided_capex_by_ghp_present_value": {
244
+ "type": "number",
245
+ "description": "Present value of avoided BAU capital expenses.",
246
+ "note": "Use to capture avoided BAU system cost when switching to GHP for accurate NPV."
139
247
  }
248
+ },
249
+ "required": [
250
+ "require_ghp_purchase",
251
+ "building_sqft",
252
+ "heatpump_capacity_sizing_factor_on_peak_load",
253
+ "ghpghx_responses"
254
+ ]
140
255
  },
141
256
  "ExistingBoiler": {
257
+ "type": "object",
258
+ "properties": {
142
259
  "fuel_cost_per_mmbtu": {
143
- "type": "float",
144
- "required": true,
145
- "description": "to calculate BAU cost, and required for formatting in GHP scenario"
260
+ "type": "number",
261
+ "description": "Fuel cost for existing boiler ($/MMBtu). Required for BAU LCCA; required as formatting in GHP scenario."
262
+ }
263
+ },
264
+ "required": [
265
+ "fuel_cost_per_mmbtu"
266
+ ]
267
+ },
268
+ "Financial": {
269
+ "type": "object",
270
+ "properties": {
271
+ "elec_cost_escalation_rate_fraction": {
272
+ "type": "number",
273
+ "minimum": -1,
274
+ "maximum": 1,
275
+ "default": 0.026,
276
+ "description": "Annual nominal utility electricity cost escalation rate."
277
+ },
278
+ "owner_discount_rate_fraction": {
279
+ "type": "number",
280
+ "minimum": 0,
281
+ "maximum": 1,
282
+ "default": 0.081,
283
+ "description": "Nominal host discount rate (owner-occupied)."
284
+ },
285
+ "offtaker_discount_rate_fraction": {
286
+ "type": "number",
287
+ "minimum": 0,
288
+ "maximum": 1,
289
+ "default": 0.081,
290
+ "description": "Nominal discount rate (third-party financed)."
291
+ },
292
+ "owner_tax_rate_fraction": {
293
+ "type": "number",
294
+ "minimum": 0,
295
+ "maximum": 1,
296
+ "default": 0.26,
297
+ "description": "Owner tax rate (owner-occupied case)."
298
+ },
299
+ "offtaker_tax_rate_fraction": {
300
+ "type": "number",
301
+ "minimum": 0,
302
+ "maximum": 1,
303
+ "default": 0.26,
304
+ "description": "Offtaker tax rate (third-party financed case)."
305
+ },
306
+ "om_cost_escalation_rate_fraction": {
307
+ "type": "number",
308
+ "minimum": -1,
309
+ "maximum": 1,
310
+ "default": 0.025,
311
+ "description": "Annual nominal O&M cost escalation rate."
146
312
  }
313
+ }
147
314
  }
315
+ }
148
316
  }
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -211,14 +211,13 @@ module URBANopt # :nodoc:
211
211
  scenario_report.distributed_generation.year_one_bill_before_tax_bau = reopt_output['outputs']['ElectricTariff']['year_one_bill_before_tax_bau'] || 0
212
212
  scenario_report.distributed_generation.lifecycle_demand_cost_after_tax_bau = reopt_output['outputs']['ElectricTariff']['lifecycle_demand_cost_after_tax_bau'] || 0
213
213
  scenario_report.distributed_generation.lifecycle_energy_cost_after_tax_bau = reopt_output['outputs']['ElectricTariff']['lifecycle_energy_cost_after_tax_bau'] || 0
214
- if !resilience_stats.nil?
215
- scenario_report.distributed_generation.resilience_hours_min = resilience_stats['resilience_hours_min']
216
- scenario_report.distributed_generation.resilience_hours_max = resilience_stats['resilience_hours_max']
217
- scenario_report.distributed_generation.resilience_hours_avg = resilience_stats['resilience_hours_avg']
218
- scenario_report.distributed_generation.probs_of_surviving = resilience_stats['probs_of_surviving']
219
- scenario_report.distributed_generation.probs_of_surviving_by_month = resilience_stats['probs_of_surviving_by_month']
220
- scenario_report.distributed_generation.probs_of_surviving_by_hour_of_the_day = resilience_stats['probs_of_surviving_by_hour_of_the_day']
221
- end
214
+
215
+ # Additional Cost Analysis Fields (includes NPV already added above)
216
+ scenario_report.distributed_generation.initial_capital_costs = reopt_output['outputs']['Financial']['initial_capital_costs']
217
+ scenario_report.distributed_generation.initial_capital_costs_after_incentives = reopt_output['outputs']['Financial']['initial_capital_costs_after_incentives']
218
+ scenario_report.distributed_generation.lifecycle_capital_costs = reopt_output['outputs']['Financial']['lifecycle_capital_costs']
219
+ scenario_report.distributed_generation.lifecycle_fuel_costs_after_tax = reopt_output['outputs']['Financial']['lifecycle_fuel_costs_after_tax']
220
+ scenario_report.distributed_generation.lifecycle_elecbill_after_tax = reopt_output['outputs']['Financial']['lifecycle_elecbill_after_tax']
222
221
 
223
222
  if reopt_output['outputs']['PV'].is_a?(Hash)
224
223
  reopt_output['outputs']['PV'] = [reopt_output['outputs']['PV']]
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,10 +1,10 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
6
6
  module URBANopt # :nodoc:
7
7
  module REopt # :nodoc:
8
- VERSION = '1.1.0'.freeze
8
+ VERSION = '1.2.0'.freeze
9
9
  end
10
10
  end
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -10,5 +10,6 @@ require 'urbanopt/reopt/scenario_report_adapter'
10
10
  require 'urbanopt/reopt/reopt_post_processor'
11
11
  require 'urbanopt/reopt/version'
12
12
  require 'urbanopt/reopt/reopt_ghp_post_processor'
13
- require 'urbanopt/reopt/reopt_ghp_adapter'
13
+ require 'urbanopt/reopt/reopt_ghp_adapter_ghp'
14
14
  require 'urbanopt/reopt/reopt_ghp_api'
15
+ require 'urbanopt/reopt/reopt_ghp_result'
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
2
+ # URBANopt (tm), Copyright (c) Alliance for Energy Innovation, LLC.
3
3
  # See also https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md
4
4
  # *********************************************************************************
5
5
 
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'openstudio-extension', '~> 0.9.4'
29
29
  # Matrix is in stdlib, but needs to be specifically added here for compatibility with Ruby 3.2
30
30
  spec.add_dependency 'matrix', '~> 0.4.2'
31
- spec.add_dependency 'urbanopt-scenario', '~> 1.1.0'
31
+ spec.add_dependency 'urbanopt-scenario', '~> 1.2.0'
32
32
 
33
33
  spec.add_development_dependency 'rake', '~> 13.0'
34
34
  spec.add_development_dependency 'rspec', '~> 3.9'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: urbanopt-reopt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-06 00:00:00.000000000 Z
11
+ date: 2026-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openstudio-extension
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.1.0
47
+ version: 1.2.0
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: 1.1.0
54
+ version: 1.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -189,13 +189,15 @@ 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
192
+ - lib/urbanopt/reopt/reopt_ghp_adapter_ghp.rb
193
193
  - lib/urbanopt/reopt/reopt_ghp_api.rb
194
194
  - lib/urbanopt/reopt/reopt_ghp_files/reopt_ghp_assumption.json
195
195
  - lib/urbanopt/reopt/reopt_ghp_post_processor.rb
196
+ - lib/urbanopt/reopt/reopt_ghp_result.rb
196
197
  - lib/urbanopt/reopt/reopt_lite_api.rb
197
198
  - lib/urbanopt/reopt/reopt_logger.rb
198
199
  - lib/urbanopt/reopt/reopt_post_processor.rb
200
+ - lib/urbanopt/reopt/reopt_schema/REopt-BAU-input.json
199
201
  - lib/urbanopt/reopt/reopt_schema/REopt-GHP-input.json
200
202
  - lib/urbanopt/reopt/reopt_schema/reopt_input_schema.json
201
203
  - lib/urbanopt/reopt/reopt_schema/reopt_output_schema.json