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

Add MIT yaw correction model (3rd pass) #924

Open
wants to merge 15 commits into
base: develop
Choose a base branch
from

Conversation

jaimeliew1
Copy link

@jaimeliew1 jaimeliew1 commented Jun 18, 2024

Add MIT yaw correction model (3rd pass)

This pull request implements an interpretation of the yawed actuator disk as described in Heck et al. (2023):
https://www.cambridge.org/core/journals/journal-of-fluid-mechanics/article/modelling-the-induction-thrust-and-power-of-a-yawmisaligned-actuator-disk/3A34FC48A6BC52A78B6D221C13F4FC3A

The method assumes that $C_T'$ is invariant to yaw misalignment (an assumption still to be verified), and preforms a wind speed reduction based on the model equations.

Related issue

The structure of the code changes resembles those in the previous pull request (#638) , but now compatible with Floris V4.

Another older pull request can be found here (#624)

Impacted areas of the software

A new operation model is added mit_loss (name to be decided).

I added the code used to calculate the MIT operational model to floris/core/mit_models, but please move this to wherever you think is best.

Additional supporting information

An example has been modified to show the operational models at different controller operation points. The added model is able to transition from below-rated to above-rated wind speeds in a realistic manner as shown in the following figure. I.e. The power output is "clipped" near rated wind speed, and is invariant to yaw far above rated wind speed.
floris_power_loss

Test results, if applicable

Relevant tests are still to be added.

@paulf81
Copy link
Collaborator

paulf81 commented Jun 20, 2024

Thank you @jaimeliew1 for this exciting contribution! We'll start working on the review/merge soon!

@rafmudaf
Copy link
Collaborator

rafmudaf commented Nov 7, 2024

A summary of changes I've made:

  • Consolidated all of the model implementation to one file at floris/core/turbine/mit_turbine.py
  • Arranged that module in the following order:
    1. Turbine operation module functions; these are the hooks to incorporate this model into the power, thrust, and axial_induction functions defined in the BaseOperationModel interface
    2. Iteration functions
    3. The BaseOperationModel subclass for the MIT Turbine model
    4. Functions implementing the model as described in the paper
  • Added a brief description of the model, some equivalent figures from the paper, and a link to the paper in the docs

Notes / suggestions:

  • I propose to change the name from "mit-loss" / "MITTurbine" to something like "YawCorrectedADM" or "YawAwareADM"; to a user who has not seen this pull request, the option for a "mit-loss" model will not have much meaning, so it would be helpful to introduce a more descriptive name
  • The implementation is elegantly implemented and easy to map back to the model described in the paper. However, the programming paradigm is different than the rest of FLORIS and it may be challenging to maintain in the future. I don't recommend to change the implementation, but this difference is worth noting for our future reference. If there are any maintenance challenges, it might be worthwhile to refactor to match the rest of the FLORIS paradigm.

@rafmudaf rafmudaf marked this pull request as ready for review November 7, 2024 18:57
@rafmudaf
Copy link
Collaborator

rafmudaf commented Nov 7, 2024

@jaimeliew1 I wasn't able to understand where mit_rotor_axial_induction and mit_rotor_velocity_yaw_correction are described in the paper. Could you explain this portion a bit more?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants