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

Drive layout optimizations using WindData objects #822

Merged
merged 36 commits into from
Mar 7, 2024

Conversation

paulf81
Copy link
Collaborator

@paulf81 paulf81 commented Feb 22, 2024

Drive layout optimizations using WindData objects

This pull request reorients the layout optimization classes to accept WindData objects (WindRose or TimeSeries), in place of freq tables, in order to facilitate allowing change of optimization from maximizing AEP to maximizing other quantities such as revenue. Changing to passing the WindData objects facilitates this because these objects hold the value per bin (WindRose) or as a time series (TimeSeries).

(Note this will appear to be many changes at first since built off of #819 ) but once that PR is merged, this will look much simpler

Related issue

#779

@paulf81 paulf81 added the v4 Focus of FLORIS v4 label Feb 22, 2024
@paulf81 paulf81 added this to the v4.0 milestone Feb 22, 2024
@paulf81 paulf81 self-assigned this Feb 22, 2024
Copy link
Collaborator

@ejsimley ejsimley left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @paulf81, the WindData additions all look good here.

@bayc
Copy link
Collaborator

bayc commented Feb 26, 2024

I merged v4 in to make the changes easier to review.

floris/tools/__init__.py Outdated Show resolved Hide resolved
@paulf81
Copy link
Collaborator Author

paulf81 commented Mar 1, 2024

Merged v4 back in again

@paulf81 paulf81 marked this pull request as ready for review March 1, 2024 04:46

from ....logging_manager import LoggingManager


class LayoutOptimization(LoggingManager):
def __init__(self, fi, boundaries, min_dist=None, freq=None, enable_geometric_yaw=False):
Copy link
Collaborator

@misi9170 misi9170 Mar 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this mean that, if the user would like to provide a weighting to different wind speed bins; they must provide a wind_data object (whereas if they want to use uniform weighting, just supplying fi will suffice)?

Could we instead leave thefreq option, which will be ignored if wind_data is None, but which otherwise will be used in the creation of the TimeSeries object in LayoutOptimization.__init__()?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@misi9170 let's chat about this one tomorrow,

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok good point @misi9170 , as discussed changing wind_data to required input to avoid supplying a use case no one is likely to want but could get accidentally

@rafmudaf rafmudaf self-requested a review March 7, 2024 15:23
@paulf81 paulf81 merged commit 3517d2c into NREL:v4 Mar 7, 2024
8 checks passed
@paulf81 paulf81 deleted the feature/drive_opt_wind_data branch March 7, 2024 18:47
@misi9170 misi9170 mentioned this pull request Apr 8, 2024
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v4 Focus of FLORIS v4
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

5 participants