Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support OpenStudio 3.7 #188

Merged
merged 42 commits into from
Jan 18, 2024
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
00acd3d
point to os37-rc2 in CI, and remove old comments
vtnate Nov 13, 2023
91746ec
start with local branches with newer dependencies
vtnate Nov 13, 2023
d90788a
Merge commit 'da0ad127a4c506fe70c078224fc18cf711b70181' into os37
vtnate Nov 13, 2023
da0ad12
Squashed 'example_project/resources/hpxml-measures/' changes from e2f…
vtnate Nov 13, 2023
410b645
get new error message in baseline mapper from cli code
vtnate Nov 13, 2023
f33b774
openstudio:update_measures which just added license text
vtnate Nov 13, 2023
0fb5b8e
point to branches to test OS3.7
vtnate Nov 20, 2023
29a5b7d
also specify core-gem in this repo, at least during testing
vtnate Nov 20, 2023
7b74925
use official OS version 3.7.0 in CI
vtnate Nov 20, 2023
31ec325
Squashed 'example_project/resources/hpxml-measures/' changes from d74…
vtnate Nov 20, 2023
c829f41
Merge commit '31ec325904a8cc59a471301c643c124327e49694' into os37
vtnate Nov 20, 2023
c080412
update BuildResidentialModel measure
vtnate Nov 20, 2023
f0616d8
change building location even for osm buildings
vtnate Nov 30, 2023
2794d20
remove hardcoded local weatherfile path from osm buildings
vtnate Nov 30, 2023
2aff9bb
Update to OS-HPXML v1.7.0 (#189)
joseph-robertson Dec 1, 2023
5414635
add chilled_water_storage to <run/process/clear/visualize>_all rake t…
vtnate Dec 1, 2023
1da6608
point to davids os37-rc branch of load-flex-gem
vtnate Dec 8, 2023
181fb3f
fix license link in copyright notice
vtnate Dec 8, 2023
e134a73
adding geometry orientation and aspect ratio example for single-famil…
kflemin Dec 8, 2023
6aec0ab
updating openstudio measure gems versions
kflemin Dec 15, 2023
20865e1
use newly released version of openstudio-geb-gem
vtnate Dec 15, 2023
6aedc6d
allow allow_local to work again
vtnate Dec 18, 2023
ddfdc00
use http in example project_dir gemfile, to help installer
vtnate Dec 21, 2023
38b32fe
point gemfiles to develop branches of openstudio gems
vtnate Dec 21, 2023
a3879ea
use http://rubygems.org in gemfile
vtnate Dec 21, 2023
b04b5ce
Residential: add unit tests for BuildResidentialModel (#191)
joseph-robertson Dec 21, 2023
a441e4a
bump to newly released uo gems
vtnate Jan 12, 2024
a5ee888
bump action version in codeql workflow
vtnate Jan 12, 2024
cdd8c07
update license text to match reopt-gem, fix link, & include 2024
vtnate Jan 16, 2024
0ddf3b3
remove top-level requirement for oga (still needed for residential)
vtnate Jan 16, 2024
05debdf
use high-efficiency mapper on a residential building
vtnate Jan 16, 2024
101826b
ugh, use develop branch when favoring local gems
vtnate Jan 16, 2024
c5cabb8
ugh, fix copy/paste error in gemfile for local gems
vtnate Jan 16, 2024
71d8bba
yikes, I am crushing the stupid copy/paste mistakes today
vtnate Jan 16, 2024
7e2124d
re-install oga for residential measure-tests workflow
vtnate Jan 16, 2024
f19d355
no need for duplicate residential measure_test runs in CI
vtnate Jan 16, 2024
c3e681a
more specific name of failure artifact on github
vtnate Jan 16, 2024
8fcf9df
different way of specifying json & csv. Maybe this is cleaner?
vtnate Jan 16, 2024
910113f
Revert "different way of specifying json & csv. Maybe this is cleaner?"
vtnate Jan 16, 2024
3fb53cd
Update Gemfile dependencies
kflemin Jan 17, 2024
eb7f4eb
fix another copy paste error
vtnate Jan 18, 2024
f1157f0
Merge branch 'os37' of https://github.com/urbanopt/urbanopt-example-g…
vtnate Jan 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
Expand Down
22 changes: 10 additions & 12 deletions .github/workflows/weekly_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,32 @@ env:

jobs:
simulate-and-post-process:
# ubuntu-latest works since https://github.com/rbenv/ruby-build/releases/tag/v20220710 (July 10, 2022)
# https://github.com/rbenv/ruby-build/discussions/1940
strategy:
matrix:
scenario: [baseline, chilled_water_storage, flexible_hot_water, high_efficiency, mixed,
peak_hours_mels_shedding, peak_hours_thermostat_adjust, reopt, thermal_storage]
runs-on: ubuntu-latest
container:
image: docker://nrel/openstudio:3.6.1
image: docker://nrel/openstudio:3.7.0
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Update gems
run: |
bundle update
bundle exec certified-update
- name: Test residential measure variations
# We only need to run the residential measure_tests once, not for every iteration
if: matrix.scenario == 'baseline'
run: bundle exec rake residential:measure_tests
- name: Simulate
# Continue to upload step even if a test fails, so we can troubleshoot
# continue-on-error: true
run: bundle exec rake run_${{ matrix.scenario }}
- name: Post process
# continue-on-error: true
run: bundle exec rake post_process_${{ matrix.scenario }}
- name: Upload artifacts
# Save results for examination - useful for debugging
uses: actions/upload-artifact@v3
# Only upload if rspec fails
uses: actions/upload-artifact@v4
# Only upload if something fails
if: failure()
with:
name: rspec_results
path: example_project/run/*scenario/
retention-days: 7 # save for 1 week before deleting
path: example_project/run/${{ matrix.scenario }}_scenario/
retention-days: 7 # save for 1 week before deleting - useful for debugging
55 changes: 33 additions & 22 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
source 'https://rubygems.org'
source 'http://rubygems.org'

ruby '~> 2.7.0'
gem 'rspec', '~> 3.9'
gem 'rspec', '~> 3.9', require: false, group: :test
gem 'rubocop', '~> 1.15.0', require: false
gem 'rubocop-checkstyle_formatter', '~> 0.4.0'
gem 'rubocop-performance', '~> 1.11.3'
gem 'rubocop-checkstyle_formatter', '~> 0.4.0', require: false
gem 'rubocop-performance', '~> 1.11.3', require: false
gem 'simplecov', '~> 0.18.2', require: false, group: :test
gem 'simplecov-lcov', '~> 0.8.0'
gem 'simplecov-lcov', '~> 0.8.0', require: false, group: :test
gem 'oga', '~> 3.4.0'

# pin this dependency to avoid unicode_normalize error
gem 'addressable', '2.8.1'
Expand All @@ -33,85 +34,95 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
if allow_local && File.exist?('../openstudio-geb-gem')
gem 'openstudio-geb', path: '../openstudio-geb-gem'
elsif allow_local
gem 'openstudio-geb', github: 'LBNL-ETA/Openstudio-GEB-gem', branch: 'master'
gem 'openstudio-geb', github: 'LBNL-ETA/openstudio-geb-gem', branch: 'master'
else
gem 'openstudio-geb', '~> 0.3.2'
gem 'openstudio-geb', '~> 0.4.0'
end

if allow_local && File.exist?('../openstudio-common-measures-gem')
gem 'openstudio-common-measures', path: '../openstudio-common-measures-gem'
elsif allow_local
gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
else
gem 'openstudio-common-measures', '~> 0.8.0'
gem 'openstudio-common-measures', '~> 0.9.0'
end

if allow_local && File.exist?('../openstudio-model-articulation-gem')
gem 'openstudio-model-articulation', path: '../openstudio-model-articulation-gem'
elsif allow_local
gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
else
gem 'openstudio-model-articulation', '~> 0.8.0'
gem 'openstudio-model-articulation', '~> 0.9.0'
end

if allow_local && File.exist?('../openstudio-load-flexibility-measures-gem')
gem 'openstudio-load-flexibility-measures', path: '../openstudio-load-flexibility-measures-gem'
elsif allow_local
gem 'openstudio-load-flexibility-measures', github: 'NREL/openstudio-load-flexibility-measures-gem', branch: 'master'
gem 'openstudio-load-flexibility-measures', github: 'NREL/openstudio-load-flexibility-measures-gem', branch: 'develop'
else
gem 'openstudio-load-flexibility-measures', '~> 0.7.0'
gem 'openstudio-load-flexibility-measures', '~> 0.8.0'
end

if allow_local && File.exist?('../openstudio-ee-gem')
gem 'openstudio-ee', path: '../opesntudio-ee-gem'
elsif allow_local
gem 'openstudio-ee', github: 'NREL/openstudio-ee-gem', branch: 'develop'
gem 'openstudio-ee', github: 'NREL/openstudio-ee-gem', branch: 'develop'
else
gem 'openstudio-ee', '~> 0.8.0'
gem 'openstudio-ee', '~> 0.9.0'
end

if allow_local && File.exist?('../openstudio-calibration-gem')
gem 'openstudio-calibration', path: '../openstudio-calibration-gem'
elsif allow_local
gem 'openstudio-calibration', github: 'NREL/openstudio-calibration-gem', branch: 'develop'
gem 'openstudio-calibration', github: 'NREL/openstudio-calibration-gem', branch: 'develop'
else
gem 'openstudio-calibration', '~> 0.8.0'
gem 'openstudio-calibration', '~> 0.9.0'
end

# if allow_local && File.exist?('../urbanopt-core-gem')
# gem 'urbanopt-core', path: '../urbanopt-core-gem'
# elsif allow_local
# gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop'
# else
# gem 'urbanopt-core', '~> 0.11.0'
# end

if allow_local && File.exist?('../urbanopt-scenario-gem')
gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem'
elsif allow_local
gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'develop'
else
gem 'urbanopt-scenario', '~> 0.10.0'
gem 'urbanopt-scenario', '~> 0.11.0'
end

if allow_local && File.exist?('../urbanopt-reporting-gem')
gem 'urbanopt-reporting', path: '../urbanopt-reporting-gem'
elsif allow_local
gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
else
gem 'urbanopt-reporting', '~> 0.8.0'
gem 'urbanopt-reporting', '~> 0.9.1'
end

if allow_local && File.exist?('../urbanopt-geojson-gem')
gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
elsif allow_local
gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
else
gem 'urbanopt-geojson', '~> 0.10.0'
gem 'urbanopt-geojson', '~> 0.11.1'
end

if allow_local && File.exist?('../urbanopt-reopt-gem')
gem 'urbanopt-reopt', path: '../urbanopt-reopt-gem'
elsif allow_local
gem 'urbanopt-reopt', github: 'URBANopt/urbanopt-reopt-gem', branch: 'develop'
else
gem 'urbanopt-reopt', '0.10.0'
gem 'urbanopt-reopt', '0.11.0'
end

if allow_local && File.exist?('../urbanopt-rnm-us')
gem 'urbanopt-rnm-us', path: '../urbanopt/urbanopt-rnm-us-gem'
elsif allow_local
gem 'urbanopt-rnm-us', github: 'URBANopt/urbanopt-rnm-us-gem', branch: 'develop'
else
gem 'urbanopt-rnm-us', '~> 0.7.0'
end
43 changes: 16 additions & 27 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,18 @@
# *********************************************************************************
# URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
# contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this list
# of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
URBANopt (tm), Copyright (c) 2019-2024, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

Redistribution of this software, without modification, must refer to the software by the same designation. Redistribution of a modified version of this software (i) may not refer to the modified version by the same designation, or by any confusingly similar designation, and (ii) must refer to the underlying software originally provided by Alliance as “URBANopt”. Except to comply with the foregoing, the term “URBANopt”, or any confusingly similar designation may not be used to refer to any modified version of this software or any modified version of the underlying software originally provided by Alliance without the prior written consent of Alliance.

The name of the copyright holder(s), any contributors, the United States Government, the United States Department of Energy, or any of their employees may not be used to endorse or promote products derived from this software without specific prior written permission from the respective party.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# *********************************************************************************
58 changes: 28 additions & 30 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,31 +1,6 @@
# *********************************************************************************
# URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
# contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this list
# of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
# URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
# See also https://github.com/urbanopt/urbanopt-example-geojson-project/blob/develop/LICENSE.md
# *********************************************************************************

require 'openstudio/extension'
Expand Down Expand Up @@ -741,17 +716,17 @@ end
### All

desc 'Clear all scenarios'
task clear_all: [:clear_baseline, :clear_high_efficiency, :clear_thermal_storage, :clear_flexible_hot_water, :clear_reopt, :clear_mixed] do
task clear_all: [:clear_baseline, :clear_high_efficiency, :clear_chilled_water_storage, :clear_thermal_storage, :clear_flexible_hot_water, :clear_reopt, :clear_mixed] do
# clear all the scenarios
end

desc 'Run all scenarios'
task run_all: [:run_baseline, :run_high_efficiency, :run_thermal_storage, :run_flexible_hot_water, :run_reopt, :run_mixed] do
task run_all: [:run_baseline, :run_high_efficiency, :run_chilled_water_storage, :run_thermal_storage, :run_flexible_hot_water, :run_reopt, :run_mixed] do
# run all the scenarios
end

desc 'Post process all scenarios'
task post_process_all: [:post_process_baseline, :post_process_high_efficiency, :post_process_thermal_storage, :post_process_flexible_hot_water, :post_process_reopt, :post_process_mixed] do
task post_process_all: [:post_process_baseline, :post_process_high_efficiency, :post_process_chilled_water_storage, :post_process_thermal_storage, :post_process_flexible_hot_water, :post_process_reopt, :post_process_mixed] do
# post_process all the scenarios
end

Expand All @@ -769,12 +744,35 @@ task :visualize_all do
Rake::Task['visualize_features'].invoke('reopt_scenario.csv')
Rake::Task['visualize_features'].reenable
Rake::Task['visualize_features'].invoke('mixed_scenario.csv')
Rake::Task['visualize_features'].reenable
Rake::Task['visualize_features'].invoke('chilled_water_storage_scenario.csv')
Rake::Task['visualize_scenarios'].invoke

end

desc 'Run and post process all scenarios'
task update_all: [:run_all, :post_process_all, :visualize_all] do
# run and post_process all the scenarios
end

desc 'Run residential tasks'
namespace :residential do
desc 'Update residential resources'
task :update_resources do
prefix = 'example_project/resources/hpxml-measures'
repository = 'https://github.com/NREL/OpenStudio-HPXML.git'
branch_or_tag = 'v1.7.0' # update this when pulling in updated OS-HPXML

FileUtils.rm_rf(prefix)
system("git clone --depth 1 --branch #{branch_or_tag} #{repository} #{prefix}")
end

desc 'Run residential measure tests'
Rake::TestTask.new('measure_tests') do |t|
t.test_files = Dir['example_project/measures/*/tests/*.rb']
t.warning = false
t.verbose = true
end
end

task default: :update_all
29 changes: 2 additions & 27 deletions developer_nrel_key.rb
Original file line number Diff line number Diff line change
@@ -1,31 +1,6 @@
# *********************************************************************************
# URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
# contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this list
# of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice, this
# list of conditions and the following disclaimer in the documentation and/or other
# materials provided with the distribution.
#
# Neither the name of the copyright holder nor the names of its contributors may be
# used to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
# URBANopt (tm), Copyright (c) Alliance for Sustainable Energy, LLC.
# See also https://github.com/urbanopt/urbanopt-example-geojson-project/blob/develop/LICENSE.md
# *********************************************************************************

DEVELOPER_NREL_KEY = (ENV['GEM_DEVELOPER_KEY'] || '<your key here https://developer.nrel.gov/signup/>')
Loading
Loading