NREL / reV

Renewable Energy Potential (reV) Model
https://nrel.github.io/reV/
BSD 3-Clause "New" or "Revised" License
107 stars 24 forks source link

Pp/bespoke wake loss multiplier #367

Closed ppinchuk closed 2 years ago

ppinchuk commented 2 years ago

Added option to scale wake losses during the optimization step only.

codecov-commenter commented 2 years ago

Codecov Report

Merging #367 (305fdfa) into main (4a91140) will increase coverage by 0.07%. The diff coverage is 93.54%.

@@            Coverage Diff             @@
##             main     #367      +/-   ##
==========================================
+ Coverage   79.21%   79.28%   +0.07%     
==========================================
  Files         135      135              
  Lines       18453    18517      +64     
==========================================
+ Hits        14617    14682      +65     
+ Misses       3836     3835       -1     
Flag Coverage Δ
unittests 79.28% <93.54%> (+0.07%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
reV/bespoke/cli_bespoke.py 30.32% <25.00%> (-0.09%) :arrow_down:
reV/config/bespoke.py 62.36% <66.66%> (+0.14%) :arrow_up:
reV/bespoke/bespoke.py 88.78% <100.00%> (+0.08%) :arrow_up:
reV/bespoke/place_turbines.py 91.46% <100.00%> (+0.46%) :arrow_up:
tests/test_bespoke.py 100.00% <100.00%> (ø)
reV/config/project_points.py 85.41% <0.00%> (+0.04%) :arrow_up:
reV/handlers/collection.py 78.80% <0.00%> (+0.06%) :arrow_up:
tests/test_hybrids.py 96.43% <0.00%> (+0.23%) :arrow_up:
tests/test_gen_pv.py 94.67% <0.00%> (+0.38%) :arrow_up:
reV/handlers/transmission.py 78.54% <0.00%> (+0.49%) :arrow_up:
... and 2 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 4a91140...305fdfa. Read the comment docs.

ppinchuk commented 2 years ago

The multiplier (as it's implemented) can only be applied on an annual scale, meaning we wouldn't be able to scale the wake loss contribution on an hourly level. This is the main reason it's left out of the final optimization results as well as any multiyear timeseries.

I believe (and please very much correct me if I'm wrong here) the only way to pull out hourly wake losses is to do 2 reV runs... one for lossless generation and one for generation with wake losses. The two can then be compared to extract the hourly wake loss profile and use it to scale the wake losses. I personally think this is a bit extra for what we wanted to achieve and the team didn't really push back on that

grantbuster commented 2 years ago

Well pysam appears to output a wake losses percent variable... Would we want to use that to re-scale the capacity factors? The big problem with doing something like that is if the user requests something uncommon like monthly_energy that we haven't scaled... So I guess this depends on whether we want the wake loss multiplier to be applied just for the optimization or whether it would be a really nice thing for the output CF data as well.

ppinchuk commented 2 years ago

Yes, that output is just a single percentage value for annual energy lost due to wake losses and it is what we use in the current implementation. I suppose we could scale that and apply it as a haircut energy loss across the time series, but then you wouldn't get the hourly effect of wakes.

People would probably love to see the multiplier applied to CF data etc., I just don't know how we could do that correctly without 2 reV runs.

grantbuster commented 2 years ago

Ah annual value. Got it. Let's merge this in and if we get the demand we can add in timeseries loss multiplier later.