Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
968 commits
Select commit Hold shift + click to select a range
f71279f
Merge branch 'master' into develop
hdunham Oct 1, 2025
61680f8
Update CHANGELOG.md
hdunham Oct 1, 2025
69b7017
Update CHANGELOG.md
hdunham Oct 1, 2025
f642d24
change version back since not immediately merging to master
hdunham Oct 1, 2025
4f340f4
Update CHANGELOG.md
hdunham Oct 1, 2025
5fa0412
move big-M calculation to separate functionss
zolanaj Oct 2, 2025
132bab3
add docstrings for new functions
zolanaj Oct 2, 2025
b77499a
Merge branch 'develop' into tariff-bigM-updates
zolanaj Oct 2, 2025
f12cb24
Update src/results/ghp.jl
hdunham Oct 7, 2025
5e44e4a
rm commented out code
hdunham Oct 7, 2025
ee7f482
list sector options in Site docstring
hdunham Oct 7, 2025
a90ced0
update version num
hdunham Oct 7, 2025
4899ead
Merge pull request #518 from NREL/develop
hdunham Oct 7, 2025
681f2a3
better checks for time_steps_per_hour
adfarth Oct 15, 2025
0453a29
Add CST to initial_capital_costs output
Bill-Becker Oct 16, 2025
761d3a2
Update CHANGELOG with new features and changes
zolanaj Oct 16, 2025
5fc41ed
Change CST change from Added to Fixed
Bill-Becker Oct 16, 2025
de77f79
implement monthly peak scaling
adfarth Oct 16, 2025
63f2ac7
Merge pull request #525 from NREL/cst-init-capex
Bill-Becker Oct 16, 2025
dd97e25
Add URDB metadata fields to tariff structures
gellwood Oct 16, 2025
7805378
don't duplicate existing function
adfarth Oct 16, 2025
7a86729
clarify and adjust for units in electric_load.jl
adfarth Oct 16, 2025
88f01c6
ts updates
adfarth Oct 16, 2025
cb1d66a
allow for loads_kw without normalizing
adfarth Oct 16, 2025
2031bac
fix failing test
adfarth Oct 17, 2025
6306207
time step corrections
adfarth Oct 17, 2025
a8be681
Update heating_cooling_loads.jl
adfarth Oct 17, 2025
3570e54
undo change to heat load processing
adfarth Oct 17, 2025
74a1822
small copilot fixes
adfarth Oct 17, 2025
5431957
fix overscaling
adfarth Oct 20, 2025
5464fe1
add ts per hour to fn
adfarth Oct 20, 2025
3147a34
improve doc strings
adfarth Oct 20, 2025
7ab9915
Merge branch 'develop' into peak-scaling
adfarth Oct 20, 2025
cd74687
correct chp test
adfarth Oct 20, 2025
ca94791
incr tolerance on ghp test
adfarth Oct 20, 2025
8b52cbd
merge h2-tldrd-mpc into h2--tldrd-mpc
zolanaj Oct 20, 2025
2f009b5
Fix CST NSRDB API Call for New Dataset
Bill-Becker Oct 21, 2025
4b51db9
Update CHANGELOG with NSRDB API update
Bill-Becker Oct 21, 2025
25d3327
Allow peak scaling without energy input
Bill-Becker Oct 21, 2025
f186b9d
Refactor functions used in scale_load_to_monthly_peaks
Bill-Becker Oct 21, 2025
c6846ed
Merge pull request #527 from NREL/fix-cst-nsrdb
Bill-Becker Oct 21, 2025
3749869
Add test for peak load scaling with custom loads_kw profile
Bill-Becker Oct 21, 2025
c956798
Update CHANGELOG for version 0.55.1
Bill-Becker Oct 21, 2025
e048570
Merge branch 'develop' into peak-scaling
Bill-Becker Oct 21, 2025
37cd30d
Merge pull request #528 from NREL/develop
Bill-Becker Oct 21, 2025
7e489d1
Bump version from 0.55.0 to 0.55.1 in Project.toml
Bill-Becker Oct 21, 2025
d147bf4
Fix case with only monthly_peaks_kw to avoid normalizing the loads_kw…
Bill-Becker Oct 21, 2025
d3b2c90
Update peak-scaling test to make monthly_totals_kwh input different f…
Bill-Becker Oct 21, 2025
5c09a4b
Handle peak scaling without doe_reference_name - loads_kw with norm_a…
Bill-Becker Oct 22, 2025
fe76343
Add peak scaling to simulated_load
Bill-Becker Oct 22, 2025
d61031d
Add test for simulated_load peak scaling
Bill-Becker Oct 22, 2025
be20f48
add test in which bypass occurs when it shouldn't
zolanaj Oct 22, 2025
bbebd38
Add calculated monthly energy and peaks to simulated_load outputs
Bill-Becker Oct 22, 2025
5b971ac
Add time_steps_per_hour input to simulated_load() for non-hourly norm…
Bill-Becker Oct 22, 2025
b69a385
Add 15-min interval test for simulated_load()
Bill-Becker Oct 22, 2025
a55bb7a
Merge branch 'develop' into elec_util_usage
Bill-Becker Oct 22, 2025
a7d1a52
Merge branch 'develop' into elec_util_usage
Bill-Becker Oct 22, 2025
c98f36e
Handle non-URDB runs and clean up ElectricTariff results
Bill-Becker Oct 22, 2025
fa83292
More consistent way to handle urdb_metadata in constructor when no UR…
Bill-Becker Oct 23, 2025
c0258b4
Merge branch 'develop' into tariff-bigM-updates
zolanaj Oct 23, 2025
7c8c565
Merge pull request #513 from NREL/tariff-bigM-updates
zolanaj Oct 23, 2025
33a5c3d
Merge branch 'develop' into no-hot-tes-bypass
zolanaj Oct 23, 2025
a2a3b95
adjust tests to ensure Hot TES can't serve as bypass to process heat …
zolanaj Oct 23, 2025
154abb1
fix storage restriction if max size == 0
zolanaj Oct 23, 2025
1d8a6d0
add tes flow restrictions for incompatible techs and loads
zolanaj Oct 23, 2025
5a241c8
Update CHANGELOG for version v0.55.2
zolanaj Oct 23, 2025
c7da04d
Update src/constraints/electric_utility_constraints.jl
zolanaj Oct 23, 2025
e71d5ac
small markdown update
adfarth Oct 23, 2025
efc6785
Align monthly load metric naming in simulated_load
Bill-Becker Oct 24, 2025
3083169
Change monthly_peak_kw to monthly_peaks_kw to be consistent with peak…
Bill-Becker Oct 24, 2025
a142f93
Update electric_tariff.jl
rathod-b Oct 24, 2025
bc9b314
Merge branch 'elec_util_usage' into anccr
Bill-Becker Oct 24, 2025
fd8247d
Conditionally include ElectricTariff outputs
rathod-b Oct 24, 2025
b94160d
fix and cleanup add_hot_tes_flow_restrictions
zolanaj Oct 24, 2025
60e738b
Merge branch 'elec_util_usage' into anccr
Bill-Becker Oct 24, 2025
13a88fd
Merge branch 'develop' into anccr
Bill-Becker Oct 24, 2025
889974e
Add placeholder CHANGELOG entry, but TODO add all the new inputs and …
Bill-Becker Oct 24, 2025
2d59c6e
Merge branch 'elec_util_usage' into anccr
Bill-Becker Oct 24, 2025
06f6c76
Add peak-scaling test comparing workbook calculations
indu-manogaran Oct 24, 2025
10d21fb
Fix 15-min interval normalize and scale
Bill-Becker Oct 26, 2025
d6e3382
Add test-check for 15-min loads_kw for scaling in simulated_load() an…
Bill-Becker Oct 26, 2025
00928e7
Actually add the peak load scaling test with CRB for run_reopt() (men…
Bill-Becker Oct 26, 2025
602e9de
Merge branch 'peak-scaling' into anccr
Bill-Becker Oct 26, 2025
e461f0c
Bump project version from 0.55.1 to 0.55.2
zolanaj Oct 27, 2025
a02905c
Merge pull request #529 from NREL/develop
zolanaj Oct 27, 2025
5e6cac7
Sum across tiers for (total) monthly facility demand charge output
Bill-Becker Oct 28, 2025
9a6d063
Updates to ElectricTariff results names and some types
Bill-Becker Oct 28, 2025
1b5a668
Add test for monthly ElectricTariff results
Bill-Becker Oct 28, 2025
2aaa1b8
Merge branch 'elec_util_usage' into anccr
Bill-Becker Oct 28, 2025
32d5a75
Remove duplicate function from merge
Bill-Becker Oct 28, 2025
b7719c7
Refactor and move get_load_metrics() to utils.jl
Bill-Becker Oct 29, 2025
e43cb82
export get_load_metrics() function
Bill-Becker Oct 29, 2025
6984376
Update peak loading spreadsheet results in runtests
indu-manogaran Oct 29, 2025
2eab2cb
Update get_load_metrics() to return a dictionary
Bill-Becker Oct 29, 2025
11f8cd4
update requirements for addition to heating_loads_served_by_tes
zolanaj Oct 29, 2025
2664d1e
Merge branch 'develop' into merge-dev-into-h2-and-fix-tests
zolanaj Oct 30, 2025
fd53ae5
separate turbine output to different hot TES media
zolanaj Oct 30, 2025
3d3cdf4
update storage constraints to match prior method
zolanaj Oct 30, 2025
3eef09f
remove redundant constraints from src/constraints/storage_constraints.jl
zolanaj Oct 30, 2025
34b37e4
add TODO for future refactoring of TES heat flow variables
zolanaj Oct 30, 2025
46002e1
Revert "add TODO for future refactoring of TES heat flow variables"
zolanaj Oct 30, 2025
a7b95e3
add TODO for future refactoring
zolanaj Oct 30, 2025
93e0341
add gneral constraints back in and remove only the specific dvHeatToS…
zolanaj Oct 30, 2025
58b06d4
Update README.md
adfarth Nov 3, 2025
df8fd83
README and docs
adfarth Nov 3, 2025
b3e543c
Decrease optimization step size for exponential peak scaling
indu-manogaran Nov 4, 2025
2c1b13f
Merge branch 'develop' into peak-scaling
adfarth Nov 4, 2025
2f8aa2f
Converting linear peak scaling method from numerical to analytical
indu-manogaran Nov 4, 2025
efe0908
do set_sector_defaults after dictkeys_tosymbols
hdunham Nov 4, 2025
be1900c
fix tabs in runtests.jl
hdunham Nov 4, 2025
2ae3942
comment passing tests
hdunham Nov 4, 2025
a1a7ff4
Revert "do set_sector_defaults after dictkeys_tosymbols"
hdunham Nov 4, 2025
5c528d9
debugging
hdunham Nov 4, 2025
556d85c
Reapply "do set_sector_defaults after dictkeys_tosymbols"
hdunham Nov 4, 2025
bd3d1c1
Revert "Reapply "do set_sector_defaults after dictkeys_tosymbols""
hdunham Nov 4, 2025
5c92356
Update CHANGELOG.md
hdunham Nov 4, 2025
9a94b7d
debugging
hdunham Nov 4, 2025
4268fe7
Reapply "Reapply "do set_sector_defaults after dictkeys_tosymbols""
hdunham Nov 4, 2025
ae7665d
new REoptInputs to dict function
hdunham Nov 4, 2025
237d030
debug, save REoptInputs after changes
hdunham Nov 4, 2025
720dfaf
Revert "do set_sector_defaults after dictkeys_tosymbols"
hdunham Nov 4, 2025
cb1dc01
debug, save REoptInputs before changes
hdunham Nov 4, 2025
07c1c2e
debug: compare inputs
hdunham Nov 4, 2025
308c1e5
Reapply "do set_sector_defaults after dictkeys_tosymbols"
hdunham Nov 4, 2025
50af6af
fix type bug in set_sector_defaults
hdunham Nov 4, 2025
cdb8550
rm debugging changes
hdunham Nov 4, 2025
7f37df5
Revert "comment passing tests"
hdunham Nov 4, 2025
c568cb1
rm debug print
hdunham Nov 4, 2025
6e0213a
Merge pull request #526 from NREL/peak-scaling
adfarth Nov 4, 2025
5c4566d
Initial plan
Copilot Nov 4, 2025
cac7bbf
Update src/results/electric_tariff.jl
Bill-Becker Nov 4, 2025
d214bc6
Merge branch 'develop' into anccr
Bill-Becker Nov 4, 2025
2c8e83a
Fix rate_effective_date parsing to handle Unix timestamp correctly
Copilot Nov 5, 2025
d0ff4f6
Remove TODO after tests were added
Bill-Becker Nov 5, 2025
c154e7c
Merge branch 'develop' into elec_util_usage
Bill-Becker Nov 5, 2025
1f42a86
Merge branch 'elec_util_usage' of https://github.com/NREL/REopt.jl in…
Bill-Becker Nov 5, 2025
c0acd86
Merge branch 'elec_util_usage' into anccr
Bill-Becker Nov 5, 2025
b9e395f
Initial plan
Copilot Nov 5, 2025
ffac1a9
Merge pull request #533 from NREL/copilot/sub-pr-502
Bill-Becker Nov 5, 2025
112056d
Fix variable usage order in get_load_metrics()
Copilot Nov 5, 2025
ca9511f
Merge pull request #535 from NREL/copilot/sub-pr-534
Bill-Becker Nov 5, 2025
d330edc
Merge pull request #534 from NREL/anccr
Bill-Becker Nov 5, 2025
fbc6049
use string interpolation not concat for symbol compat
hdunham Nov 5, 2025
1bb3c63
fix > typo
hdunham Nov 5, 2025
9b428f8
Merge branch 'fix_sector_bugs' of https://github.com/NREL/REopt.jl in…
hdunham Nov 5, 2025
bb19774
Update CHANGELOG.md
hdunham Nov 5, 2025
bf21899
Merge branch 'develop' into fix_sector_bugs
hdunham Nov 5, 2025
1bfa9dd
Merge branch 'develop' into elec_util_usage
Bill-Becker Nov 5, 2025
3237d5e
Merge pull request #502 from NREL/elec_util_usage
Bill-Becker Nov 5, 2025
0983242
Merge branch 'develop' into fix_sector_bugs
hdunham Nov 5, 2025
1936678
Changes based on #536
rathod-b Nov 10, 2025
4ac8b52
Fix export series sums for non-hourly loads
Bill-Becker Nov 11, 2025
0720c86
Add more tests for ElectricTariff, incl 15-min interval
Bill-Becker Nov 11, 2025
64b916c
Make monthly_fixed_cost name consistent with other monthly series
Bill-Becker Nov 11, 2025
cae7975
Update src/results/electric_tariff.jl
Bill-Becker Nov 11, 2025
f6ced8f
Update test/runtests.jl
Bill-Becker Nov 11, 2025
e1d4ea6
Update test/runtests.jl with minor formatting
Bill-Becker Nov 11, 2025
6c369c6
Fix year input for ElectricTariff 15-min test, refactor
Bill-Becker Nov 11, 2025
7ca2116
Merge branch 'temp-fixes' of https://github.com/NREL/REopt.jl into te…
Bill-Becker Nov 11, 2025
339b128
Merge pull request #537 from NREL/temp-fixes
Bill-Becker Nov 11, 2025
3a981de
Update CHANGELOG for v0.56.0 release
Bill-Becker Nov 11, 2025
49fc209
ElectricTariff results doc string description updates
Bill-Becker Nov 11, 2025
5b6fb9b
Add explanation for all periods have the same tier limits
Bill-Becker Nov 11, 2025
881ae17
Merge pull request #536 from NREL/develop
Bill-Becker Nov 11, 2025
7b38053
Update project version to 0.56.0
Bill-Becker Nov 11, 2025
6e277a9
Change peaks type from Float64 to <:Real
Bill-Becker Nov 18, 2025
a447a7f
Use 'startdate' for rate effective date in URDBrate
gellwood Nov 18, 2025
f7fd29c
Merge pull request #541 from NREL/fix-peaks-type
Bill-Becker Nov 18, 2025
1767d13
Merge pull request #531 from NREL/no-hot-tes-bypass
Bill-Becker Nov 18, 2025
62418e2
Update Changelog with fixes
Bill-Becker Nov 18, 2025
8b228b1
Merge branch 'master' into develop
Bill-Becker Nov 18, 2025
2698dea
Merge pull request #542 from NREL/api-urdbmeta-updates
Bill-Becker Nov 18, 2025
394e948
Bump version from 0.56.0 to 0.56.1 in Project.toml
Bill-Becker Nov 18, 2025
b34682c
Merge pull request #543 from NREL/develop
Bill-Becker Nov 18, 2025
f059d29
Robust fix for type-error for monthly_peaks_kw
Bill-Becker Nov 18, 2025
f96a208
Merge branch 'develop'
Bill-Becker Nov 18, 2025
6353661
Bump patch version in Project.toml
Bill-Becker Nov 19, 2025
32a0921
Bump patch version in Project.toml
Bill-Becker Nov 19, 2025
13881aa
Update electric_tariff.jl
rathod-b Nov 21, 2025
04283e8
Correct dollar sign escape
rathod-b Nov 24, 2025
a2cbe67
Merge pull request #544 from NREL/fix-electric-tariff-outputs-docs
rathod-b Nov 25, 2025
c9d7ac2
Merge branch 'master' into develop
rathod-b Dec 1, 2025
967da69
bump version in changelog and TOML
rathod-b Dec 1, 2025
593fc63
Merge pull request #545 from NREL/develop
rathod-b Dec 1, 2025
6225387
Update logging.jl
adfarth Dec 15, 2025
864d7ae
Merge pull request #546 from NREL/logging-patch
adfarth Dec 15, 2025
daf0c1d
Merge branch 'develop' into merge-dev-into-h2-and-fix-tests
zolanaj Dec 18, 2025
953949e
make self discharge parameters consistent for all storage types, usin…
zolanaj Dec 18, 2025
75f1c88
rm old loading of HighTempThermalStorage
zolanaj Dec 18, 2025
2d0f849
Update utils.jl
adfarth Dec 18, 2025
67f829c
Update CHANGELOG with type-bug fix details
zolanaj Dec 18, 2025
81912da
Update formatting for bug fix in CHANGELOG
zolanaj Dec 18, 2025
09568f2
Merge pull request #549 from NREL/type-bug
adfarth Dec 18, 2025
30f441b
update test cases for new nomenclature
zolanaj Dec 29, 2025
4230b2a
Merge branch 'develop' into fix_sector_bugs
adfarth Dec 30, 2025
a33ea90
fix syntax in steam turbine results
zolanaj Dec 30, 2025
faff9e5
rm REoptInputs_to_dict
hdunham Dec 30, 2025
4ec4a06
Merge branch 'fix_sector_bugs' of https://github.com/NREL/REopt.jl in…
hdunham Dec 30, 2025
7d34bdd
handle incorrect region name in avert_102008.shp
hdunham Dec 30, 2025
2fdce1f
Update CHANGELOG.md
hdunham Dec 30, 2025
55ae260
Merge pull request #532 from NREL/fix_sector_bugs
hdunham Dec 30, 2025
2c232dc
Update CHANGELOG.md
hdunham Dec 30, 2025
7085ee8
Merge branch 'develop' into hi-avert-bug
hdunham Dec 30, 2025
8ccdd47
Merge pull request #563 from NREL/hi-avert-bug
hdunham Jan 1, 2026
f15a58c
Update CHANGELOG.md
hdunham Jan 1, 2026
44079f4
Merge branch 'develop' of https://github.com/NREL/REopt.jl into develop
hdunham Jan 1, 2026
c7e9017
Update CHANGELOG.md
hdunham Jan 1, 2026
e838ada
update version number
hdunham Jan 2, 2026
cc66293
Merge pull request #562 from NREL/develop
hdunham Jan 2, 2026
e9d0a1f
fix boiler
adfarth Jan 2, 2026
029db01
Revise GhpGhx.jl installation instructions
hdunham Jan 4, 2026
9392cbc
Create PULL_REQUEST_TEMPLATE.md
hdunham Jan 5, 2026
93f7ff8
Merge branch 'master' into pr-template
hdunham Jan 5, 2026
8204b6e
Update PULL_REQUEST_TEMPLATE.md
hdunham Jan 5, 2026
784d58a
Merge pull request #566 from NREL/pr-template
hdunham Jan 5, 2026
680c8c3
add test to ensure emissions factor for boiler loads properly
zolanaj Jan 5, 2026
efd7b57
Merge branch 'develop' into boiler-emissions
adfarth Jan 5, 2026
0a62c15
Merge pull request #565 from NREL/boiler-emissions
adfarth Jan 6, 2026
4f9315b
Merge branch 'develop' into merge-dev-into-h2-and-fix-tests
zolanaj Jan 8, 2026
b2d0598
fix steam turbine to TES results
zolanaj Jan 9, 2026
96273cf
update federal sector offtaker discount rate
hdunham Jan 15, 2026
b2b1250
update fed sector o&m cost escalation default
hdunham Jan 15, 2026
365b897
update regions in get_NIST_EERC_rate_region()
hdunham Jan 15, 2026
093258a
update fuel/elec escalation rate fed defaults
hdunham Jan 15, 2026
23f2f4d
Update CHANGELOG.md
hdunham Jan 15, 2026
519f793
update sector defaults test
hdunham Jan 15, 2026
728da3b
fix typo in tests
hdunham Jan 16, 2026
d176219
fix another typo
hdunham Jan 16, 2026
2d91328
Update CHANGELOG.md
adfarth Jan 22, 2026
20acbee
update NREL -> NLR references and urls
hdunham Jan 22, 2026
60ca735
update docs url
hdunham Jan 22, 2026
7baade4
Merge pull request #570 from NatLabRockies/fed-updates
hdunham Jan 22, 2026
a0f62a2
merge changelog entries
hdunham Jan 22, 2026
2ac689a
Update CHANGELOG.md
hdunham Jan 27, 2026
6ce34fc
Merge branch 'develop' into docs-domain
hdunham Jan 27, 2026
1c1f921
Merge pull request #572 from NatLabRockies/docs-domain
hdunham Jan 28, 2026
04e495e
Update index.md
hdunham Jan 29, 2026
99c0548
update solar dataset tests
hdunham Feb 3, 2026
2e17052
Merge branch 'develop' into merge-dev-into-h2-and-fix-tests
zolanaj Feb 3, 2026
7d84bfd
Merge branch 'h2-tldrd-mpc' into merge-dev-into-h2-and-fix-tests
zolanaj Feb 3, 2026
d93fbfa
update version number
hdunham Feb 5, 2026
79aa941
Merge branch 'develop' into merge-dev-into-h2-and-fix-tests
zolanaj Feb 27, 2026
46b9bdb
rm old MPC comment from merge
zolanaj Feb 27, 2026
1d27231
update H2 tests with new input names
zolanaj Feb 27, 2026
4d08bb2
rm unnecessary summation and update expression math to remove warnings
zolanaj Feb 28, 2026
66b2739
merge changes
zolanaj Mar 14, 2026
6dd72ba
Merge branch 'h2-tldrd-mpc' into merge-dev-into-h2-and-fix-tests
zolanaj Mar 14, 2026
89e4d86
add tolerance in fixed_dispatch_series constraint
hdunham Mar 20, 2026
3596680
Merge branch 'h2-tldrd-mpc' into merge-dev-into-h2-and-fix-tests
zolanaj May 11, 2026
b81571d
Update runtests.jl
zolanaj May 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
### Please check if the PR fulfills these requirements
- [ ] CHANGELOG.md is updated
- [ ] Docs have been added / updated if applicable
- [ ] Any new packages have been added to the [compat] section of Project.toml
- [ ] REopt version number is updated in Project.toml and CHANGELOG.md if merging into master (do this right before or right after merging)
- [ ] Tests for the changes have been added. These tests should compare against expected values that are calculated independently of running REopt. Tests should also include garbage collection (see other tests for examples).
- [ ] Any new REopt outputs and required inputs have been added to the corresponding Django model in the REopt API

### Replace this with a description of the changes (can just copy from CHANGELOG.md)
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ jobs:
version: ${{ matrix.julia-version }}
- uses: julia-actions/julia-buildpkg@latest
# - uses: mxschmitt/action-tmate@v3 # for interactive debugging
- run: julia --project=. -e 'using Pkg; Pkg.activate("test"); Pkg.rm("Xpress"); Pkg.activate("."); using TestEnv; TestEnv.activate(); Pkg.add(PackageSpec(name="GhpGhx", url="https://github.com/NREL/GhpGhx.jl.git")); using GhpGhx; cd("test"); include("runtests.jl")'
- run: julia --project=. -e 'using Pkg; Pkg.activate("test"); Pkg.rm("Xpress"); Pkg.activate("."); using TestEnv; TestEnv.activate(); Pkg.add(PackageSpec(name="GhpGhx", url="https://github.com/NatLabRockies/GhpGhx.jl.git")); using GhpGhx; cd("test"); include("runtests.jl")'
shell: bash
138 changes: 135 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Formatting
- Use **bold** markup for field and model names (i.e. **outage_start_time_step**)
- Use `code` markup for REopt-specific file names, classes and endpoints (e.g. `src/REopt.jl`)
- Use `code` markup for REopt-specific file names, functions, and endpoints (e.g. `src/REopt.jl`)
- Use _italic_ for code terms (i.e. _list_)
- Prepend change with tag(s) directing where it is in the repository:
`src`,`constraints`,`*.jl`
Expand All @@ -25,10 +25,142 @@ Classify the change according to the following categories:
### Deprecated
### Removed

## test-runners
## v0.57.0
### Fixed
- Include boiler emissions in emissions calculations
- Update links that broke with NLR domain change and update other references to NREL
### Changed
- Updated defaults for **Financial** inputs **elec_cost_escalation_rate_fraction**, **boiler_fuel_cost_escalation_rate_fraction**, **existing_boiler_fuel_cost_escalation_rate_fraction**, **chp_fuel_cost_escalation_rate_fraction**, **generator_fuel_cost_escalation_rate_fraction**, **om_cost_escalation_rate_fraction**, and **offtaker_discount_rate_fraction** when **sector** is "federal" (based on the 2025 NIST Handbook and Annual Supplement)
- Changed expected best dataset determined from Solar Dataset Query API in response to addition of Polar data to NSRDB
### Added
- Created a default PR template

## v0.56.4
### Fixed
- Bug where storage input with only _Int_ values restricted _Dict_ subtype passed into `set_sector_defaults!` and caused _InexactError_
- Bug where **ElectricStorage** input with only _Real_ values restricted _Dict_ subtype, causing **off_grid_flag** to be added as an _Int_ instead of _Bool_, leading to a conversion error in **ElectricStorageDefaults**
- Fixed a bug in the type handling of **emissions_factor_series_lb_XXX_per_kwh** in which `xxx` is in the group **[CO2, SO2, NOx, PM25]**.
- Handle "HIMS" region incorrectly named "HI" in avert_102008.shp

## v0.56.3
### Fixed
- Correctly escape the \$ symbol in docstring for `REopt.add_electric_tariff_results` in `results/electric_tariff.jl`

## v0.56.2
### Fixed
- Robust fix for type error with `ElectricLoad.monthly_peaks_kw` so that it now converts Vector{Any} to Vector{Float64} in scenario.jl before constructing `ElectricLoad`. Also converted `ElectricLoad.monthly_totals_kwh` to Vector{Float64} for good measure even though we weren't getting errors with that.

## v0.56.1
### Fixed
- `CST` bypassing constraints for not serving (`can_serve_.. = false`) heating load types by going through the `HighTempThermalStorage`
- Type error with `ElectricLoad.monthly_peaks_kw` so that it now converts Vector{Any} to Vector{<:Real}
- `ElectricTariff.urdb_metadata.rate_effective_date` with the right URDB parameter

## v0.56.0
### Added
- **ElectricLoad** input **monthly_peaks_kw**. Can be used to scale loads_kw or doe_reference loads to monthly peaks while maintaining monthly energy.
- Ability to use monthly energy and peak scaling with timesteps_per_hour > 1
- `ElectricTariff` and `ElectricLoad` inputs and outputs; mostly outputs related to monthly and per-timestep series rates and costs, and `urdb_metadata` which contains additional information about the URDB rate.
- New function in **utils.jl** called get_load_metrics() which gets the annual and monthly energy and peak load values (units depends on the input `load_profile`, so that it can be used with any load type).

## v0.55.2
### Fixed
- fixed a bug in which demand and energy charges are applied to incorrect tiers in instances where tiered rates decrease as consumption increases, and the limits on the last tier are very large.

## v0.55.1
### Fixed
- Updated from the deprecated NSRDB API call to the suggested new URL which uses the GOES dataset
- Added `CST` to `Financial.initial_capital_costs` output
### Changed
- The solar resource data for CST changed with the new API call for the GOES dataset

## v0.55.0
### Added
- Added **Site** inputs **sector**, **federal_sector_state**, and **federal_procurement_type**
- Alternative defaults used when **sector** is "federal"
- **GHPOutputs** fields **hybrid_solution_type**, **solve_time_min**, **number_of_boreholes_nonhybrid**, **number_of_boreholes_auto_guess**,
**number_of_boreholes_flipped_guess**, **iterations_nonhybrid**, **iterations_auto_guess**, **iterations_flipped_guess**
### Changed
- Change hybrid GHP workflow from (1) running a 2-year simulation to guess if an auxiliary heating or cooling unit is required and outputting results to (2) running non-hybrid first in all hybrid runs and comparing to hybrid outputs to guarantee an actual hybrid solution where possible

## v0.54.1
### Added
- Added attribute `can_waste_heat` to CST module, allowing for CST to curtail heat.
### Changed
- Use ARM version of SAM library file if processor architecture is ARM
- Fixed some docstrings in the CST source code.
### Fixed
- Fix `CHP` and `Boiler` results when there is HighTempThermalStorage

## v0.54.0
### Changed
Update the following inputs from the previous --> new values:
- `Financial.offtaker_discount_rate_fraction`: 0.0638 --> 0.0624
- `Financial.owner_discount_rate_fraction`: 0.0638 --> 0.0624
- `Financial.elec_cost_escalation_rate_fraction`: 0.017 --> 0.0166
- `Financial.existing_boiler_fuel_cost_escalation_rate_fraction `: 0.015 --> 0.0348
- `Financial.boiler_fuel_cost_escalation_rate_fraction `: 0.015 --> 0.0348
- `Financial.chp_fuel_cost_escalation_rate_fraction `: 0.015 --> 0.0348
- `Financial.generator_fuel_cost_escalation_rate_fraction `: 0.012 --> 0.0197
- `Generator.fuel_cost_per_gallon`: 3.61 --> 2.25
- `ColdThermalStorage`, `HotThermalStorage`, `ElectricStorage` `macrs_option_years`: 7 --> 5
- `CHP`, `ColdThermalStorage`, `HotThermalStorage`, `ElectricStorage`, `PV`, `Wind` `macrs_bonus_fraction` 0.6 --> 1.0
- `GHP.macrs_bonus_fraction`: 0.4 --> 0.0
- `GHP.macrs_option_years`: 5 --> 0
- `SteamTurbine.macrs_bonus_fraction`: 0 --> 1.0
- `SteamTurbine.macrs_option_years`: 0 --> 5 (in order for 100% bonus depr to apply)
- `CHP.federal_itc_fraction`: 0.3 --> 0.0
- `Wind.om_cost_per_kw`: 36.0 --> 42.0
- `Wind.size_class_to_installed_cost` = Dict(
"residential"=> 6339.0, --> 7692.0
"commercial"=> 4760.0, --> 5776.0
"medium"=> 3137.0, --> 3807.0
"large"=> 2386.0 --> 2896.0)
- Changed **cycle_fade_coefficient** input to be a vector and accept vector of inputs.
- Changed default inputs for degradation module to match parameters for NMC-Gr Kokam 75Ah cell.
- Changed residual battery fraction calculation to calculate useful healthy capacity for residual value and capacity calculations.
- Require NREL Developer API email set as ENV["NREL_DEVELOPER_EMAIL"] = 'your contact email' for CST runs (also requires ENV["NREL_DEVELOPER_API_KEY"])
### Added
- Added constraints in `src/constraints/battery_degradation.jl` to allow use of segmented cycle fade coefficients in the model.
- Added **cycle_fade_fraction** as an input for portion of BESS that is tied to each cycle fade coefficient.
- Added **total_residual_kwh** output which captures healthy residual battery capacity due to degradation and the replacement strategy
- Added ARM version of SAM library file `src/sam/libssc_arm.dylib`, which can be renamed to `libssc.dylib` for running REopt.jl locally on an ARM Mac.
- Added new file `src/core/cst.jl` with new technology **CST**, which provides heating as output; technology-specific sets and results have been updated and added accordingly.
- Added new file `src/core/cst_ssc.jl` to interface with SAM when populating inputs (i.e., performance profile) with new technology **CST**.
- Added to file `src/core/energy_storage/thermal_storage.jl` with new technology **HighTempThermalStorage**, which stores heat for industrial processes primarily; technology-specific sets have been updated and added accordingly.
- Added new file `src/results/cst.jl` to provide results from new technology **CST**.
- Added to file `src/results/thermal_storage.jl` to provide results from new storage technology **HighTempThermalStorage**.
- Added new file `test/scenarios/cst.json` with new test for technologies **CST**.
### Fixed
- Corrected pv_defaults.jl "Small Commercial" "om_premium" from 0.95 to 1.0

## v0.53.2
### Fixed
- `PV` `size_class` and cost defaults not updating correctly when both `max_kw` and the site's land or roof space are input

## v0.53.1
### Fixed
- Issue with `CHP` and `PV` cost curves when with-incentives segments is greater than no-incentives segments

## v0.53.0
### Added
- Add new **ElectricStorage** input fields **installed_cost_constant**, **replace_cost_constant** (both default to 0), and **cost_constant_replacement_year** (defaults to year 10).
- Added new binary variable **binIncludeStorageCostConstant** which is indexed on `p.s.storage.types.elec`
- Added `ElectricStorage.om_cost_fraction_of_installed_cost` input, default, and model expression as the main battery O&M
- New inputs for `PV` to determine default cost parameters and optional piece-wise linear (PWL) cost curves: `size_class`, `tech_sizes_for_cost_curve`, and `use_detailed_cost_curve`. The `installed_cost_per_kw` can also now be an array to go along with the `tech_sizes_for_cost_curve` input.
- New function for calculating `PV` size class and cost parameters from other inputs
- Memory-clearing commands after each JuMP model instance in `runtests.jl` to avoid memory buildup which were slowing down Actions test job
- Added back `ubuntu` OS as an additional runner OS for the tests Action job, now that memory buildup is reduced (removed a year ago due to memory crashing the runner)
- Add `installed_cost...` for `ExistingBoiler` and `ExistingChiller` which is incurred in the BAU scenario, and may be avoided with other heating and cooling technologies in the Optimal scenario.
### Changed
- Updated default `ElectricStorage` cost values per ATB 2024
- Zeroed-out `ElectricStorage` replacement costs because they are now included in the default O&M as fraction of installed cost
- `PV.installed_cost_per_kw` and `PV.om_cost_per_kw` does not have a fixed default value, and instead it is dependent on other inputs such as the `ElectricLoad.annual_kwh` and `Site.roof_squarefeet` to determine the `size_class` based on an estimated `PV` size which is calculated from those inputs.
- The default `installed_cost_per_kw` is a fixed/single value for the calculated `size_class`, but if `use_detailed_cost_curve` is set to `true`, then it will use a 2-point PWL cost curve with `tech_sizes_for_cost_curve`.
### Fixed
- Correctly apply zero/no MACRS for `ElectricStorage`, `HotThermalStorage`, and `ColdThermalStorage` which were always using 5 years MACRS schedules if not the default 7
- Fixed bug by setting `min_initial_capital_costs_before_incentives` and `max_initial_capital_costs_before_incentives` to nothing for BAU Scenario
- Fixed handling of non-hourly (e.g. 15-min interval) fuel cost

## v0.52.0
### Added
Expand Down Expand Up @@ -185,7 +317,7 @@ Classify the change according to the following categories:
- Refactored various functions to ensure **ProcessHeatLoad** is processed correctly in line with other heating loads.
- When the URDB response `energyratestructure` has a "unit" value that is not "kWh", throw an error instead of averaging rates in each energy tier.
- Refactored heating flow constraints to be in ./src/constraints/thermal_tech_constraints.jl instead of its previous separate locations in the storage and turbine constraints.
- Changed default Financial **owner_tax_rate_fraction** and **offtaker_tax_rate_fraction** from 0.257 to 0.26 to align with API and user manual defaults.
- Changed default Financial **owner_tax_rate_fraction** and **offtaker_tax_rate_fraction** from 0.257 to 0.26 to align with API and user manual defaults.
### Fixed
- Updated the PV result **lifecycle_om_cost_after_tax** to account for the third-party factor for third-party ownership analyses.
- Convert `max_electric_load_kw` to _Float64_ before passing to function `get_chp_defaults_prime_mover_size_class`
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "REopt"
uuid = "d36ad4e8-d74a-4f7a-ace1-eaea049febf6"
authors = ["Nick Laws", "Hallie Dunham <[email protected]>", "Bill Becker <[email protected]>", "Bhavesh Rathod <[email protected]>", "Alex Zolan <[email protected]>", "Amanda Farthing <[email protected]>", "Xiangkun Li <[email protected]>", "An Pham <[email protected]>", "Byron Pullutasig <[email protected]>"]
version = "0.52.0"
version = "0.57.0"

[deps]
ArchGDAL = "c9ce4bd3-c3d5-55b8-8973-c0e20141b8c3"
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# REopt® Julia package
REopt.jl is the core module of the [REopt® techno-economic decision support platform](https://www.nrel.gov/reopt/), developed by the National Renewable Energy Laboratory (NREL). REopt® stands for **R**enewable **E**nergy integration and **opt**imization. REopt.jl is used within the publicly-accessible and open-source [REopt API](https://github.com/NREL/REopt_API), and the publicly available [REopt Web Tool](https://reopt.nrel.gov/tool) calls the REopt API.
REopt.jl is the core module of the [REopt® techno-economic decision support platform](https://www.nlr.gov/reopt/), developed by the National Laboratory of the Rockies (NLR). REopt optimizes the sizing and dispatch of energy systems for buildings, campuses, communities, microgrids, and more. REopt identifies the cost-optimal mix of generation, storage, and heating and cooling technologies to meet cost savings, resilience, emissions reductions, and energy performance goals.

The REopt® techno-economic decision support platform is used by researchers to optimize energy systems for buildings, campuses, communities, microgrids, and more. REopt identifies the optimal mix of renewable energy, conventional generation, storage, and electrification technologies to meet cost savings, resilience, emissions reductions, and energy performance goals.
REopt.jl (this package) is used within the publicly-accessible and open-source [REopt API](https://github.com/NatLabRockies/REopt_API), and the publicly-available [REopt Web Tool](https://reopt.nlr.gov/tool) calls the REopt API.

For more information about REopt.jl please see the Julia documentation:
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://nrel.github.io/REopt.jl/stable) -->
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://nrel.github.io/REopt.jl/dev)
<!-- [![](https://img.shields.io/badge/docs-stable-blue.svg)](https://natlabrockies.github.io/REopt.jl/stable) -->
[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://natlabrockies.github.io/REopt.jl/dev)


## Quick Start
Expand All @@ -20,4 +20,4 @@ results = run_reopt(m, "pv_storage.json")
```
See the `test/scenarios` directory for examples of `scenario.json`.

For more details, including installation instructions, see the [documentation](https://nrel.github.io/REopt.jl/dev).
For more details, including installation instructions, see the [documentation](https://natlabrockies.github.io/REopt.jl/dev).
77 changes: 77 additions & 0 deletions data/cst/cst_defaults.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
{
"ptc": {
"max_kw": 99999999,
"installed_cost_per_kw": 2200.0,
"om_cost_per_kw": 33.0,
"om_cost_per_kwh": 0.0,
"acres_per_kw": 0.000939,
"macrs_option_years": 0,
"macrs_bonus_fraction": 0.0,
"can_supply_steam_turbine": true,
"can_serve_process_heat": true,
"can_serve_dhw": true,
"can_serve_space_heating": true,
"can_waste_heat": true,
"charge_storage_only": false
},
"mst": {
"max_kw": 99999999,
"installed_cost_per_kw": 1000,
"om_cost_per_kw": 40,
"om_cost_per_kwh": 0.0035,
"acres_per_kw": 0.00003,
"macrs_option_years": 0,
"macrs_bonus_fraction": 0.0,
"can_supply_steam_turbine": true,
"can_serve_process_heat": true,
"can_serve_dhw": true,
"can_serve_space_heating": true,
"can_waste_heat": true,
"charge_storage_only": false
},
"lf": {
"max_kw": 99999999,
"installed_cost_per_kw": 1200,
"om_cost_per_kw": 40,
"om_cost_per_kwh": 0.0035,
"acres_per_kw": 0.001786,
"macrs_option_years": 0,
"macrs_bonus_fraction": 0.0,
"can_supply_steam_turbine": true,
"can_serve_process_heat": true,
"can_serve_dhw": true,
"can_serve_space_heating": true,
"can_waste_heat": true,
"charge_storage_only": false
},
"swh_evactube": {
"max_kw": 99999999,
"installed_cost_per_kw": 1000,
"om_cost_per_kw": 40,
"om_cost_per_kwh": 0.0035,
"acres_per_kw": 0.00003,
"macrs_option_years": 0,
"macrs_bonus_fraction": 0.0,
"can_supply_steam_turbine": true,
"can_serve_process_heat": true,
"can_serve_dhw": true,
"can_serve_space_heating": true,
"can_waste_heat": true,
"charge_storage_only": false
},
"swh_flatplate": {
"max_kw": 99999999,
"installed_cost_per_kw": 1868.13,
"om_cost_per_kw": 16,
"om_cost_per_kwh": 0.0,
"acres_per_kw": 0.000769,
"macrs_option_years": 0,
"macrs_bonus_fraction": 0.0,
"can_supply_steam_turbine": true,
"can_serve_process_heat": true,
"can_serve_dhw": true,
"can_serve_space_heating": true,
"can_waste_heat": true,
"charge_storage_only": false
}
}
Loading
Loading