urbanopt-reopt 1.1.0 → 1.3.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/CHANGELOG.md +12 -0
  4. data/CONTRIBUTING.md +4 -4
  5. data/Gemfile +13 -6
  6. data/LICENSE.md +1 -1
  7. data/RDOC_MAIN.md +10 -10
  8. data/README.md +61 -10
  9. data/Rakefile +1 -1
  10. data/{developer_nrel_key.rb → developer_api_key.rb} +2 -2
  11. data/doc_templates/LICENSE.md +1 -1
  12. data/doc_templates/copyright_erb.txt +1 -1
  13. data/doc_templates/copyright_js.txt +1 -1
  14. data/doc_templates/copyright_ruby.txt +1 -1
  15. data/docs/README.md +12 -12
  16. data/docs/package.json +1 -1
  17. data/docs/schemas/reopt-input-schema.md +4 -4
  18. data/docs/schemas/reopt-output-schema.md +5 -5
  19. data/index.md +10 -10
  20. data/lib/urbanopt/reopt/extension.rb +1 -1
  21. data/lib/urbanopt/reopt/feature_report_adapter.rb +27 -17
  22. data/lib/urbanopt/reopt/{reopt_lite_api.rb → reopt_api.rb} +83 -57
  23. data/lib/urbanopt/reopt/reopt_ghp_adapter_ghp.rb +563 -0
  24. data/lib/urbanopt/reopt/reopt_ghp_api.rb +26 -24
  25. data/lib/urbanopt/reopt/reopt_ghp_files/reopt_ghp_assumption.json +3 -3
  26. data/lib/urbanopt/reopt/reopt_ghp_post_processor.rb +16 -8
  27. data/lib/urbanopt/reopt/reopt_ghp_result.rb +145 -0
  28. data/lib/urbanopt/reopt/reopt_logger.rb +1 -1
  29. data/lib/urbanopt/reopt/reopt_post_processor.rb +59 -25
  30. data/lib/urbanopt/reopt/reopt_schema/REopt-BAU-input.json +174 -0
  31. data/lib/urbanopt/reopt/reopt_schema/REopt-GHP-input.json +263 -95
  32. data/lib/urbanopt/reopt/scenario/reopt_scenario_csv.rb +1 -1
  33. data/lib/urbanopt/reopt/scenario_report_adapter.rb +27 -16
  34. data/lib/urbanopt/reopt/url_config.rb +152 -0
  35. data/lib/urbanopt/reopt/utilities.rb +18 -1
  36. data/lib/urbanopt/reopt/version.rb +2 -2
  37. data/lib/urbanopt/reopt.rb +5 -3
  38. data/lib/urbanopt/reopt_scenario.rb +1 -1
  39. data/lib/urbanopt-reopt.rb +1 -1
  40. data/urbanopt-reopt.gemspec +1 -1
  41. metadata +10 -7
  42. data/lib/urbanopt/reopt/reopt_ghp_adapter.rb +0 -337
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08720d2d382b148c63ee68975a27430291e55874404f84b9a41e6ae24b2f7243'
4
- data.tar.gz: 288f60fd246337f62e770197e452237ccef0519ce36d16b60503b454397f9ae2
3
+ metadata.gz: 56b147451f96d95e26e2ea20dfb9b408b4677dae6ae8d9233008ce7a07f4cb2d
4
+ data.tar.gz: 93660c184fdd2dcdfc20386c7230a96b3627ea38b751f08c8774b440fe4794dd
5
5
  SHA512:
6
- metadata.gz: fe5c4c30111deb10c1a5b7e3a804ecb3d666feb3c3f8e40705046a531c765c6fbea4e47f725b4e9b7cfa7dff716c9a12b1250058bc1b5d6a57faa4bb4f0b0f1c
7
- data.tar.gz: 034bf2e923102c9c30cc7f1aee476c3c580e9d27750988bf38ea654db2b8f285c4e9dbe12f8993562f53bb1a467bab38c85555f7ad63e7f93dd376f22c0983b2
6
+ metadata.gz: 502fabf84a4d43b93ba7b91ebe206f55eb7b117b310809592dc5190821bc7e36804feab7bee916b38ee9b7a66781cd23c0db95f8d373b03f68baff96ab9a8f52
7
+ data.tar.gz: 8049c39934e712e76db8d9dd6c4ac54b0c7788bc6f0129ec92cab1d929b15e253f6ff2df51893e995578107a91975e86f742a06a6d145aebd7ba1747c7487059
data/.gitignore CHANGED
@@ -19,6 +19,8 @@
19
19
  spec/files/run/baseline_scenario_ghe/reopt_ghp/
20
20
 
21
21
  developer_nrel_key.rb
22
+ developer_api_key.rb
23
+
22
24
  # rspec failure tracking
23
25
  .rspec_status
24
26
 
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # URBANopt REopt Gem
2
2
 
3
+ ## Version 1.3.0
4
+ * Updates for developer.nlr.gov URL change
5
+ * Timeseries shift bug fix
6
+ * Added Domestic Hot Water to baseline load
7
+
8
+ ## Version 1.2.0
9
+
10
+ * Updates for name change and license
11
+ * Lifecycle Cost Analysis (LCCA) Functionality for UO-REopt GHP workflow
12
+ * Updates to support system parameters file schema changes
13
+ * Updates to support URBANopt-REopt Cost Analysis capabilities
14
+
3
15
  ## Version 1.1.0
4
16
 
5
17
  * Upgrade to OpenStudio 3.10
data/CONTRIBUTING.md CHANGED
@@ -10,7 +10,7 @@ The contribution process for URBANopt is composed of three steps:
10
10
 
11
11
  In order for us to distribute your code as part of URBANopt under the URBANopt SDK [license](https://github.com/urbanopt/urbanopt-reopt-gem/blob/develop/LICENSE.md), we’ll need your consent. An email acknowledging your understanding of these terms and agreeing to them is all that will be asked of any contributor. Send an email to the URBANopt project manager ([see below](#documentation) for the address) including the following text and a list of co-contributors (if any):
12
12
 
13
- *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Sustainable Energy, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
13
+ *I agree to contribute to the URBANopt SDK. I agree to the following terms and conditions for my contributions: First, I agree that I am licensing the copyright to my contributions under the terms of the current URBANopt SDK license. Second, I hereby grant to Alliance for Energy Innovation, LLC, to any successor manager and distributor of URBANopt SDK appointed by the U.S. Department of Energy, and to all recipients of a version of URBANopt SDK that includes my contributions, a non-exclusive, worldwide, royalty-free, irrevocable patent license under any patent claims owned by me, or owned by my employer and known to me, that are or will be,necessarily infringed upon by my contributions alone, or by combination of my contributions with the version of URBANopt SDK to which they are contributed, to make, have made, use, offer to sell, sell, import, and otherwise transfer any version of URBANopt SDK that includes my contributions, in source code and object code form. Third, I represent and warrant that I am authorized to make the contributions and grant the foregoing license(s). Additionally, if, to my knowledge, my employer has rights to intellectual property that covers my contributions, I represent and warrant that I have received permission to make these contributions and grant the foregoing license(s) on behalf of my employer.*
14
14
 
15
15
  Once we have your consent on file, you’ll only need to redo it if conditions change (e.g. a change of employer).
16
16
 
@@ -50,9 +50,9 @@ For further questions or information:
50
50
 
51
51
  - Ben Polly\
52
52
  URBANopt Project Management\
53
- ben.polly@nrel.gov\
53
+ ben.polly@nlr.gov\
54
54
  (303) 384-7429
55
55
 
56
- URBANopt is funded by the U.S. Department of Energy (DOE) and managed by the National Renewable Energy Laboratory (NREL).
56
+ URBANopt is funded by the U.S. Department of Energy (DOE) and managed by the National Laboratory of the Rockies (NLR).
57
57
 
58
- URBANopt is developed in collaboration with NREL, LBNL, and private firms.
58
+ URBANopt is developed in collaboration with NLR, LBNL, and private firms.
data/Gemfile CHANGED
@@ -17,7 +17,7 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
17
17
  # if allow_local && File.exist?('../OpenStudio-extension-gem')
18
18
  # gem 'openstudio-extension', path: '../OpenStudio-extension-gem'
19
19
  # elsif allow_local
20
- # gem 'openstudio-extension', github: 'NREL/OpenStudio-extension-gem', branch: 'faraday'
20
+ # gem 'openstudio-extension', github: 'NatLabRockies/OpenStudio-extension-gem', branch: 'develop'
21
21
  # else
22
22
  # gem 'openstudio-extension', '~> 0.8.1'
23
23
  # end
@@ -25,7 +25,7 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
25
25
  # if allow_local && File.exist?('../openstudio-common-measures-gem')
26
26
  # gem 'openstudio-common-measures', path: '../openstudio-common-measures-gem'
27
27
  # elsif allow_local
28
- # gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'faraday'
28
+ # gem 'openstudio-common-measures', github: 'NatLabRockies/openstudio-common-measures-gem', branch: 'develop'
29
29
  # else
30
30
  # gem 'openstudio-common-measures', '0.12.3'
31
31
  # end
@@ -33,13 +33,13 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
33
33
  # if allow_local && File.exist?('../urbanopt-core-gem')
34
34
  # gem 'urbanopt-core', path: '../urbanopt-core-gem'
35
35
  # elsif allow_local
36
- # gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'faraday'
36
+ # gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop'
37
37
  # end
38
38
  #
39
39
  # if allow_local && File.exist?('../openstudio-model-articulation-gem')
40
40
  # gem 'openstudio-model-articulation', path: '../openstudio-model-articulation-gem'
41
41
  # elsif allow_local
42
- # gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'faraday'
42
+ # gem 'openstudio-model-articulation', github: 'NatLabRockies/openstudio-model-articulation-gem', branch: 'develop'
43
43
  # else
44
44
  # gem 'openstudio-model-articulation', '0.12.2'
45
45
  # end
@@ -47,11 +47,18 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
47
47
  # if allow_local && File.exist?('../urbanopt-scenario-gem')
48
48
  # gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem'
49
49
  # elsif allow_local
50
- # gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'faraday'
50
+ # gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'develop'
51
51
  # end
52
52
 
53
53
  # if allow_local && File.exist?('../urbanopt-geojson-gem')
54
54
  # gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
55
55
  # elsif allow_local
56
- # gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'faraday'
56
+ # gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
57
+ # end
58
+
59
+
60
+ # if allow_local && File.exist?('../urbanopt-geojson-gem')
61
+ # gem 'urbanopt-reporting', path: '../urbanopt-reporting-gem'
62
+ # elsif allow_local
63
+ # gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
57
64
  # end
data/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
data/RDOC_MAIN.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # **URBANopt REopt Gem**
2
2
 
3
- The **URBANopt™ REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nrel.gov/tool) decision support platform.
4
- REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nrel.gov/docs/energy-optimization/reopt/v2/](https://developer.nrel.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
3
+ The **URBANopt™ REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nlr.gov/tool) decision support platform.
4
+ REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nlr.gov/docs/energy-optimization/reopt/v2/](https://developer.nlr.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
5
5
 
6
6
  See the [example project](https://github.com/urbanopt/urbanopt-example-reopt-project.git) for more infomation about usage of this gem.
7
7
 
8
- <b>Note:</b> This module requires an API Key from the [NREL Developer Network](https://developer.nrel.gov/)
8
+ <b>Note:</b> This module requires an API Key from the [NLR Developer Network](https://developer.nlr.gov/)
9
9
 
10
10
  ## Installation
11
11
 
@@ -83,7 +83,7 @@ Moreover, the following optimal dispatch fields are added to its timeseries CSV.
83
83
  | ElectricityProduced:Wind:ToGrid | kWh |
84
84
  ```
85
85
 
86
- The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See [https://developer.nrel.gov/docs/energy-optimization/reopt/v2/](https://developer.nrel.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
86
+ The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See [https://developer.nlr.gov/docs/energy-optimization/reopt/v2/](https://developer.nlr.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
87
87
 
88
88
  <b>Note:</b> Required attributes for a REopt run include latitude and longitude. If no utility rate is specified in your REopt assumption settings, then a constant default rate of $0.13 is assumed without demand charges. Also, by default, only solar PV and storage are considered in the analysis (i.e. Wind and Generators are excluded from consideration).
89
89
 
@@ -110,8 +110,8 @@ timeseries_output_file = File.join(feature_report.directory_name, 'feature_repor
110
110
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
111
111
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
112
112
 
113
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
114
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_NREL_KEY)
113
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
114
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_API_KEY)
115
115
 
116
116
  #Call REopt with the post processor to update the feature's distributed generation attributes and timeseries CSV.
117
117
  updated_feature_report = reopt_post_processor.run_feature_report(feature_report,reopt_assumptions_file,reopt_output_file,timeseries_output_file)
@@ -145,8 +145,8 @@ end
145
145
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
146
146
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
147
147
 
148
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
149
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_NREL_KEY)
148
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
149
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_API_KEY)
150
150
 
151
151
  #Call REopt with the post processor once on the sceanrio's aggregated load to update the scenario's distributed generation attributes and timeseries CSV.
152
152
  updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_report)
@@ -157,9 +157,9 @@ updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_repo
157
157
 
158
158
  First, check out the repository (i.e. git clone this repo).
159
159
 
160
- Next, obtain a developer.nrel.gov API key from the [NREL Developer Network](https://developer.nrel.gov/]). Copy and paste your key in to the _developer_nrel_key_._rb_ file then save the file:
160
+ Next, obtain a developer.nlr.gov API key from the [NLR Developer Network](https://developer.nlr.gov/]). Copy and paste your key in to the _developer_api_key_._rb_ file then save the file:
161
161
 
162
- DEVELOPER_NREL_KEY = '<insert your key here>'
162
+ DEVELOPER_API_KEY = '<insert your key here>'
163
163
 
164
164
  Finally, execute:
165
165
 
data/README.md CHANGED
@@ -3,13 +3,13 @@
3
3
  [![Coverage Status](https://coveralls.io/repos/github/urbanopt/urbanopt-reopt-gem/badge.svg?branch=develop)](https://coveralls.io/github/urbanopt/urbanopt-reopt-gem?branch=develop)
4
4
  [![nightly_build](https://github.com/urbanopt/urbanopt-reopt-gem/actions/workflows/nightly_ci_build.yml/badge.svg)](https://github.com/urbanopt/urbanopt-reopt-gem/actions/workflows/nightly_ci_build.yml)
5
5
 
6
- The **URBANopt<sup>&trade;</sup> REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nrel.gov/tool) decision support platform.
7
- REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nrel.gov/docs/energy-optimization/reopt/v2/](https://developer.nrel.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
6
+ The **URBANopt<sup>&trade;</sup> REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nlr.gov/tool) decision support platform.
7
+ REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nlr.gov/docs/energy-optimization/reopt/v2/](https://developer.nlr.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
8
8
 
9
9
  See the [example project](https://github.com/urbanopt/urbanopt-example-geojson-reopt-project) for more infomation about usage of this gem.
10
10
 
11
11
  <b>Note:</b> this module requires an API Key from the
12
- [NREL Developer Network](https://developer.nrel.gov/)
12
+ [NLR Developer Network](https://developer.nlr.gov/)
13
13
 
14
14
  [RDoc Documentation](https://urbanopt.github.io/urbanopt-reopt-gem/)
15
15
 
@@ -88,7 +88,7 @@ Moreover, the following optimal dispatch fields are added to its timeseries CSV.
88
88
  | ElectricityProduced:Wind:ToGrid | kWh |
89
89
 
90
90
 
91
- The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See <StaticLink target="\_blank" href="https://developer.nrel.gov/docs/energy-optimization/reopt/v2/">https://developer.nrel.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
91
+ The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See <StaticLink target="\_blank" href="https://developer.nlr.gov/docs/energy-optimization/reopt/v2/">https://developer.nlr.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
92
92
 
93
93
  <b>Note:</b> Required attributes for a REopt run include latitude and longitude. If no utility rate is specified in your REopt assumption settings, then a constant default rate of $0.13 is assumed without demand charges. Also, by default, only solar PV and storage are considered in the analysis (i.e. Wind and Generators are excluded from consideration).
94
94
 
@@ -115,8 +115,8 @@ timeseries_output_file = File.join(feature_report.directory_name, 'feature_repor
115
115
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
116
116
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
117
117
 
118
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
119
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_NREL_KEY)
118
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
119
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_API_KEY)
120
120
 
121
121
  #Call REopt with the post processor to update the feature's distributed generation attributes and timeseries CSV.
122
122
  updated_feature_report = reopt_post_processor.run_feature_report(feature_report,reopt_assumptions_file,reopt_output_file,timeseries_output_file)
@@ -149,8 +149,8 @@ end
149
149
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
150
150
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
151
151
 
152
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
153
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_NREL_KEY)
152
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
153
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_API_KEY)
154
154
 
155
155
  #Call REopt with the post processor once on the sceanrio's aggregated load to update the scenario's distributed generation attributes and timeseries CSV.
156
156
  updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_report)
@@ -161,9 +161,60 @@ updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_repo
161
161
 
162
162
  First, check out the repository (i.e. git clone this repo).
163
163
 
164
- Next, obtain a developer.nrel.gov API key from the [NREL Developer Network](https://developer.nrel.gov/]). Copy and paste your key in to the _developer_nrel_key_._rb_ file then save the file:
164
+ Next, obtain a developer.nlr.gov API key from the [NLR Developer Network](https://developer.nlr.gov/]). Copy and paste your key in to the _developer_api_key.rb_ file then save the file:
165
165
 
166
- DEVELOPER_NREL_KEY = '<insert your key here>'
166
+ DEVELOPER_API_KEY = '<insert your key here>'
167
+
168
+ ## Configuration
169
+
170
+ ### API Key Setup
171
+
172
+ The gem supports multiple ways to provide your developer API key:
173
+
174
+ 1. **Environment Variable (Recommended):**
175
+ ```bash
176
+ export GEM_DEVELOPER_KEY=your_api_key_here
177
+ # Then API instances automatically use this key
178
+ api = URBANopt::REopt::REoptAPI.new()
179
+ ```
180
+
181
+ 2. **Direct Parameter:**
182
+ ```ruby
183
+ api = URBANopt::REopt::REoptAPI.new('your_api_key_here')
184
+ ```
185
+
186
+ 3. **Edit developer_api_key.rb file:**
187
+ ```ruby
188
+ DEVELOPER_API_KEY = 'your_api_key_here'
189
+ ```
190
+
191
+ ### Environment Variables
192
+
193
+ You can customize the REopt API endpoints using environment variables:
194
+
195
+ - `REOPT_BASE_URL`: Override the default base URL for all REopt API endpoints.
196
+ - Default: `https://developer.nlr.gov/api/reopt/v3`
197
+ - Example: `export REOPT_BASE_URL=https://test.example.com/api/reopt/v3`
198
+
199
+ - `GEM_DEVELOPER_KEY`: Set the developer API key via environment variable instead of editing the source file.
200
+ - Example: `export GEM_DEVELOPER_KEY=your_api_key_here`
201
+ - This automatically becomes available as `DEVELOPER_API_KEY` constant in the code
202
+
203
+ ### Localhost Development
204
+
205
+ For development against a local REopt instance, use the `REOPT_BASE_URL` environment variable:
206
+
207
+ ```bash
208
+ # Use localhost (no API key needed)
209
+ export REOPT_BASE_URL=http://127.0.0.1:8000/v3
210
+
211
+ # Then create API instances normally
212
+ api = URBANopt::REopt::REoptAPI.new()
213
+ ```
214
+
215
+ Note: When using custom URLs via `REOPT_BASE_URL`, API keys are automatically bypassed for non-official endpoints.
216
+
217
+ ## Running Tests
167
218
 
168
219
  Finally, execute:
169
220
 
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
 
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,6 +1,6 @@
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
- DEVELOPER_NREL_KEY = (ENV['GEM_DEVELOPER_KEY'] || '< your key here https://developer.nrel.gov/signup >')
6
+ DEVELOPER_API_KEY = (ENV['GEM_DEVELOPER_KEY'] || '< your key here https://developer.nlr.gov/signup >')
@@ -1,4 +1,4 @@
1
- URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
1
+ URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
2
2
  contributors. All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification,
@@ -1,6 +1,6 @@
1
1
  <%
2
2
  # *********************************************************************************
3
- # URBANopt (tm), Copyright (c) 2019-2025, Alliance for Sustainable Energy, LLC, and other
3
+ # URBANopt (tm), Copyright (c) 2019-2026, Alliance for Energy Innovation, LLC, and other
4
4
  # contributors. All rights reserved.
5
5
 
6
6
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,4 +1,4 @@
1
1
  /* @preserve
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
  */
@@ -1,4 +1,4 @@
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
  # *********************************************************************************
data/docs/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  ### <StaticLink target="\_blank" href="rdoc/">Rdocs</StaticLink>
4
4
 
5
- The **URBANopt<sup>&trade;</sup> REopt Gem** extends a **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the <StaticLink target="\_blank" href="https://reopt.nrel.gov/tool">REopt</StaticLink> decision support platform.
6
- REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See <StaticLink target="\_blank" href="https://developer.nrel.gov/docs/energy-optimization/reopt/v2/">https://developer.nrel.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
5
+ The **URBANopt<sup>&trade;</sup> REopt Gem** extends a **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the <StaticLink target="\_blank" href="https://reopt.nlr.gov/tool">REopt</StaticLink> decision support platform.
6
+ REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See <StaticLink target="\_blank" href="https://developer.nlr.gov/docs/energy-optimization/reopt/v2/">https://developer.nlr.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
7
7
 
8
8
  The REopt Gem accomplishes three basic functions (described more below in the _Functionality_ section):
9
9
 
@@ -20,7 +20,7 @@ Moreover, the REopt Gem can be run in several modes, either on:
20
20
 
21
21
  See the <StaticLink target="\_blank" href="https://github.com/urbanopt/urbanopt-example-reopt-project.git">example project</StaticLink> for more infomation about usage of this gem.
22
22
 
23
- <b>Note:</b> This module requires an API Key from the <StaticLink target='blank' href="https://developer.nrel.gov/">NREL Developer Network</StaticLink>.
23
+ <b>Note:</b> This module requires an API Key from the <StaticLink target='blank' href="https://developer.nlr.gov/">NLR Developer Network</StaticLink>.
24
24
 
25
25
  <StaticLink target="\_blank" href="https://urbanopt.github.io/urbanopt-reopt-gem/">RDoc Documentation</StaticLink>
26
26
 
@@ -99,7 +99,7 @@ Moreover, the following optimal dispatch fields are added to its timeseries CSV.
99
99
  | ElectricityProduced:Wind:ToGrid | kWh |
100
100
 
101
101
 
102
- The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See <StaticLink target="\_blank" href="https://developer.nrel.gov/docs/energy-optimization/reopt/v2/">https://developer.nrel.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
102
+ The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See <StaticLink target="\_blank" href="https://developer.nlr.gov/docs/energy-optimization/reopt/v2/">https://developer.nlr.gov/docs/energy-optimization/reopt/v2/</StaticLink> for more detailed information on input parameters and default assumptions.
103
103
 
104
104
  <b>Note:</b> Required attributes for a REopt run include latitude and longitude, parsed from the Feature or Scenario Report attributes. If no utility rate is specified in your assumptions, then a constant rate of $0.13 is assumed without demand charges. Also, by default, only solar PV and storage are considered in the analysis (i.e. Wind and Generators are excluded from consideration).
105
105
 
@@ -112,7 +112,7 @@ The code below shows how to run the REopt API on a single Feature Report hash us
112
112
  ```ruby
113
113
  require 'urbanopt/reopt'
114
114
 
115
- DEVELOPER_NREL_KEY = "" # <insert a valid API key from https://developer.nrel.gov/signup >
115
+ DEVELOPER_API_KEY = "" # <insert a valid API key from https://developer.nlr.gov/signup >
116
116
 
117
117
  #Load a Feature Report Hash
118
118
  feature_reports_hash = {} # <insert a valid Feature Report hash here with latitude and longitude filled in>
@@ -129,8 +129,8 @@ timeseries_output_file = File.join(feature_report.directory_name, 'feature_repor
129
129
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
130
130
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
131
131
 
132
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
133
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_NREL_KEY)
132
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
133
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_API_KEY)
134
134
 
135
135
  #Call REopt with the post processor to update the feature's distributed generation attributes and timeseries CSV.
136
136
  updated_feature_report = reopt_post_processor.run_feature_report(feature_report,reopt_assumptions_file,reopt_output_file,timeseries_output_file)
@@ -140,7 +140,7 @@ updated_feature_report = reopt_post_processor.run_feature_report(feature_report,
140
140
  More commonly, this gem can be used to run REopt a collection of features stored in a Scenario Report as show here:
141
141
  ```ruby
142
142
  require 'urbanopt/reopt'
143
- DEVELOPER_NREL_KEY = "" # <insert a valid API key from https://developer.nrel.gov/signup >
143
+ DEVELOPER_API_KEY = "" # <insert a valid API key from https://developer.nlr.gov/signup >
144
144
 
145
145
  #Create a Scenario Report
146
146
  scenario_report = URBANopt::Reporting::DefaultReports::ScenarioReport.new({:directory_name => File.join(File.dirname(__FILE__), 'run/example_scenario'), :timeseries_csv => {:path => File.join(File.dirname(__FILE__), 'run/example_scenario/timeseries.csv') }})
@@ -165,8 +165,8 @@ end
165
165
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
166
166
  reopt_assumptions_file = File.join(File.dirname(__FILE__), 'files/reopt_assumptions_basic.json')
167
167
 
168
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
169
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_NREL_KEY)
168
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
169
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_API_KEY)
170
170
 
171
171
  #Call REopt with the post processor once on the sceanrio's aggregated load to update the scenario's distributed generation attributes and timeseries CSV.
172
172
  updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_report)
@@ -177,9 +177,9 @@ updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_repo
177
177
 
178
178
  First, check out the repository (i.e. git clone this repo).
179
179
 
180
- Next, obtain a developer.nrel.gov API key from the [NREL Developer Network](https://developer.nrel.gov/]). Copy and paste your key in to the _developer_nrel_key_._rb_ file then save the file:
180
+ Next, obtain a developer.nlr.gov API key from the [NLR Developer Network](https://developer.nlr.gov/]). Copy and paste your key in to the _developer_api_key_._rb_ file then save the file:
181
181
 
182
- DEVELOPER_NREL_KEY = '<insert your key here>'
182
+ DEVELOPER_API_KEY = '<insert your key here>'
183
183
 
184
184
  Finally, execute:
185
185
 
data/docs/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "build": "vuepress build",
9
9
  "deploy": "gh-pages -d .vuepress/dist"
10
10
  },
11
- "author": "NREL",
11
+ "author": "NLR",
12
12
  "dependencies": {
13
13
  "highlight.js": "^10.4.1",
14
14
  "json-schema-ref-parser": "^6.1.0",
@@ -1,6 +1,6 @@
1
- # REopt Lite Inputs Schema
1
+ # REopt Inputs Schema
2
2
 
3
- The following shows the complete set of inputs to the REopt Lite AP which is called internally by the REopt Gem. You may refer to the data dictionary below in creating similarly formatted .json files containing alternatives to the defaults for optional parameters (i.e. specific utility rate, installed cost assumptions, solar PV losses, ...). The URBANopt REopt Gem will overwrite latitude, longitude, land_acres, roof_squarefeet, and loads_kw where possible from attributes of a Scenario Report and FeatureReports.
3
+ The following shows the complete set of inputs to the REopt API which is called internally by the REopt Gem. You may refer to the data dictionary below in creating similarly formatted .json files containing alternatives to the defaults for optional parameters (i.e. specific utility rate, installed cost assumptions, solar PV losses, ...). The URBANopt REopt Gem will overwrite latitude, longitude, land_acres, roof_squarefeet, and loads_kw where possible from attributes of a Scenario Report and FeatureReports.
4
4
 
5
5
  ## Data Dictionary
6
6
 
@@ -8,7 +8,7 @@ The following shows the complete set of inputs to the REopt Lite AP which is cal
8
8
 
9
9
  ## Required Inputs
10
10
 
11
- The only required parameters to the REopt Lite API (called internally by the gem) are:
11
+ The only required parameters to the REopt API (called internally by the gem) are:
12
12
  - *latitude*
13
13
  - *longitude*
14
14
  - *urdb_response* OR one of the following sets:
@@ -24,7 +24,7 @@ The only required parameters to the REopt Lite API (called internally by the gem
24
24
 
25
25
  The gem sources *latitude*, *longitude* and *loads_kw* from a Feature or Scenario Report directly. If no specific *urdb_response* or *urdb_label* is specified as an custom assumption (see below), then a constant rate of $0.13/kWh with no demand charge is provided by the gem as a default to the REopt API.
26
26
 
27
- Otherwise, all non-required input parameters will be filled in with default values unless otherwise specified. For an example of a minimally viable REopt Lite input, see:
27
+ Otherwise, all non-required input parameters will be filled in with default values unless otherwise specified. For an example of a minimally viable REopt input, see:
28
28
 
29
29
 
30
30
  ```
@@ -1,6 +1,6 @@
1
- # REopt Lite Outputs Schema
1
+ # REopt Outputs Schema
2
2
 
3
- When the gem calls the REopt Lite APUI it receives the following complete set of results described in the data dictionary below. Only those needed to update a Feature or Scenario Report's distributed_generation attribute set and timeseries CSV are pulled from the response and transferred to the Feature or Scenario Report. You may choose to modify the code to include more or less of the full REopt Lite response.
3
+ When the gem calls the REopt API it receives the following complete set of results described in the data dictionary below. Only those needed to update a Feature or Scenario Report's distributed_generation attribute set and timeseries CSV are pulled from the response and transferred to the Feature or Scenario Report. You may choose to modify the code to include more or less of the full REopt response.
4
4
 
5
5
  ## Data Dictionary
6
6
  <ReoptOutputSchema />
@@ -8,7 +8,7 @@ When the gem calls the REopt Lite APUI it receives the following complete set of
8
8
  ## Updated from the Data Dictionary
9
9
 
10
10
  ### Distributed Generation Attributes
11
- The REopt Lite API updates the distributed_generation attributes of a Scenario or Feature Report as shown in an example below.
11
+ The REopt API updates the distributed_generation attributes of a Scenario or Feature Report as shown in an example below.
12
12
 
13
13
  ```
14
14
  "distributed_generation": {
@@ -35,7 +35,7 @@ The REopt Lite API updates the distributed_generation attributes of a Scenario o
35
35
  ```
36
36
 
37
37
  ### Timeseries CSV
38
- REopt Lite API responses also map dispatches to the following columns in an updated timeseries CSV for a Feature or Scenario Report.
38
+ REopt API responses also map dispatches to the following columns in an updated timeseries CSV for a Feature or Scenario Report.
39
39
 
40
40
  | output | unit |
41
41
  | -----------------------------------------| ------- |
@@ -62,5 +62,5 @@ REopt Lite API responses also map dispatches to the following columns in an upda
62
62
  <style type="text/css">
63
63
  .content { max-width: 1200px !important; }
64
64
  span.default { color: yellow !important; }
65
- .description { color: #E0E0E0 !important; }
65
+ .description { color: #E0E0E0 !important; }
66
66
  </style>
data/index.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # **URBANopt REopt Gem**
2
2
 
3
- The **URBANopt<sup>&trade;</sup> REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nrel.gov/tool) decision support platform.
4
- REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nrel.gov/docs/energy-optimization/reopt/v2/](https://developer.nrel.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
3
+ The **URBANopt<sup>&trade;</sup> REopt Gem** extends **URBANopt::Reporting::DefaultReports::ScenarioReport** and **URBANopt::Reporting::DefaultReports::FeatureReport** with the ability to derive cost-optimal distributed energy resource (DER) technology sizes and annual dispatch strageties via the [REopt](https://reopt.nlr.gov/tool) decision support platform.
4
+ REopt is a technoeconomic model which leverages mixed integer linear programming to identify the cost-optimal sizing of solar PV, Wind, Storage and/or diesel generation given an electric load profile, a utility rate tariff and other technoeconomic parameters. See [https://developer.nlr.gov/docs/energy-optimization/reopt/v2/](https://developer.nlr.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
5
5
 
6
6
  See the [example project](https://github.com/urbanopt/urbanopt-example-reopt-project.git) for more infomation about usage of this gem.
7
7
 
8
- <b>Note:</b> This module requires an API Key from the [NREL Developer Network](https://developer.nrel.gov/)
8
+ <b>Note:</b> This module requires an API Key from the [NLR Developer Network](https://developer.nlr.gov/)
9
9
 
10
10
  ## Installation
11
11
 
@@ -83,7 +83,7 @@ Moreover, the following optimal dispatch fields are added to its timeseries CSV.
83
83
  | ElectricityProduced:Wind:ToGrid | kWh |
84
84
  ```
85
85
 
86
- The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See [https://developer.nrel.gov/docs/energy-optimization/reopt/v2/](https://developer.nrel.gov/docs/energy-optimization/reopt/v2/) for more detailed information on input parameters and default assumptions.
86
+ The REopt has default values for all non-required input parameters that are used unless the user specifies custom assumptions. See [https://developer..gov/docs/energy-optimization/reopt/v3/](https://developer.nlr.gov/docs/energy-optimization/reopt/v3/) for more detailed information on input parameters and default assumptions.
87
87
 
88
88
  <b>Note:</b> Required attributes for a REopt run include latitude and longitude. If no utility rate is specified in your REopt assumption settings, then a constant default rate of $0.13 is assumed without demand charges. Also, by default, only solar PV and storage are considered in the analysis (i.e. Wind and Generators are excluded from consideration).
89
89
 
@@ -110,8 +110,8 @@ timeseries_output_file = File.join(feature_report.directory_name, 'feature_repor
110
110
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
111
111
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
112
112
 
113
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
114
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_NREL_KEY)
113
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
114
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(nil, nil, nil, DEVELOPER_API_KEY)
115
115
 
116
116
  #Call REopt with the post processor to update the feature's distributed generation attributes and timeseries CSV.
117
117
  updated_feature_report = reopt_post_processor.run_feature_report(feature_report,reopt_assumptions_file,reopt_output_file,timeseries_output_file)
@@ -145,8 +145,8 @@ end
145
145
  #Specify non-default REopt assumptions, saved in JSON format, to be used in calling the API
146
146
  reopt_assumptions_file = File.join(File.dirname(__FILE__), '../files/reopt_assumptions_basic.json')
147
147
 
148
- #Create a REopt Post Processor to call the API, note you will need a Developer.nrel.gov API key in this step
149
- reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_NREL_KEY)
148
+ #Create a REopt Post Processor to call the API, note you will need a Developer.nlr.gov API key in this step
149
+ reopt_post_processor = URBANopt::REopt::REoptPostProcessor.new(scenario_report, reopt_assumptions_file, nil, DEVELOPER_API_KEY)
150
150
 
151
151
  #Call REopt with the post processor once on the sceanrio's aggregated load to update the scenario's distributed generation attributes and timeseries CSV.
152
152
  updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_report)
@@ -157,9 +157,9 @@ updated_scenario_report = reopt_post_processor.run_scenario_report(scenario_repo
157
157
 
158
158
  First, check out the repository (i.e. git clone this repo).
159
159
 
160
- Next, obtain a developer.nrel.gov API key from the [NREL Developer Network](https://developer.nrel.gov/]). Copy and paste your key in to the _developer_nrel_key_._rb_ file then save the file:
160
+ Next, obtain a developer.nlr.gov API key from the [NLR Developer Network](https://developer.nlr.gov/]). Copy and paste your key in to the _developer_api_key_._rb_ file then save the file:
161
161
 
162
- DEVELOPER_NREL_KEY = '<insert your key here>'
162
+ DEVELOPER_API_KEY = '<insert your key here>'
163
163
 
164
164
  Finally, execute:
165
165
 
@@ -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