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

Tum misalignment model #832

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

Conversation

sTamaroTum
Copy link

@sTamaroTum sTamaroTum commented Mar 6, 2024

TUM misalignment model

This is a proposal to include the misalignment model developed by TUM to floris v4. The methodology is based on the preprint available currently at https://wes.copernicus.org/preprints/wes-2023-133/ .
The model is coded into simulation/turbine/operation_models.py . It consists of the usual power(), thrust(), axial_induction() functions. There are two extra functions called compute_local_vertical_shear() and control_trajectory().

  • compute_local_vertical_shear() is called to evaluate the vertical (linear) shear that each rotor experience, based on the inflow velocity. This allows to make the power curve asymmetric w.r.t. yaw misalignment.
  • control_trajectory() determines the tip-speed-ratio and pitch angles that occur in operation. This routine assumes a standard region 2 control approach (i.e. k*rpm^2) and a region 3. Also region 2 1/2 is considered. In the future, different control strategies could be included, even user-defined.

The model requires a few new inputs that were added to the power_thrust_table in the yaml file. It also requires the cp-pitch-tsr curves for the turbine model considered. An .npz file is added to the turbine_library folder, as well as a file iea_3mw.yaml file ready for use with the model. This file refers to the IEA 3 MW reference turbine by Bortolotti et al. (2019). In the future, more wind turbine models could be added.

The model accepts power_setpoints inputs in watts to simulate derating.

The model allows also to obtain the pitch and tip speed ratio of the wind turbine. Right now the code is printing the values of tip speed ratio and pitch to screen. This could be removed for clarity, but get_pitch() and get_tsr() functions could be coded (?).

Related issue

Impacted areas of the software

simulation/turbine/operation_models.py

Additional supporting information

The model seem to work well with the examples, but it crashes at wind speeds higher than 18 m/s, because the operating tip-speed-ratio gets too low.

In the tum model, the tilt is negative when tower clearance is created. This seems conflicting with floris convention, so there is a sign change at the start of the power(), thrust() and axial_induction() functions.

Sorry if something is wrong, this is the first time I work with github.

Test results, if applicable

@sTamaroTum sTamaroTum changed the title Tum model 2 Tum misalignment model Mar 6, 2024
@@ -29,31 +29,44 @@ operation_model: 'cosine-loss'
###
# Parameters needed to evaluate the power and thrust produced by the turbine.
power_thrust_table:
### Power thrust table parameters
### General parameters
Copy link
Collaborator

Choose a reason for hiding this comment

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

Just a heads up that these comments are used to automatically generate this page in the docs: https://nrel.github.io/floris/input_reference_turbine.html. The structure (number of hashes) and location relative to the key/value pairs does matter. If you haven't it's worthwhile to build the docs locally and see the result.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Oh, my bad, thanks---I'll do that and adjust as needed

Copy link
Collaborator

Choose a reason for hiding this comment

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

More and more, having yet another version of the inputs defined in this standalone class only for testing seems wasteful. I'm suggesting it be addressed here, but just pointing it out.

@misi9170
Copy link
Collaborator

misi9170 commented Dec 4, 2024

Tests that are currently failing are expected; these are comparisons between the Cp/Ct data for the reference turbines and the basic power/thrust curves. We are working on a fix for this.

@misi9170
Copy link
Collaborator

misi9170 commented Feb 3, 2025

Test are now fixed. The Cp/Ct surfaces for the reference wind turbines are not perfect matches to the reference thrust and power curves, so the tests do not attempt to assert this claim. However, the discrepancy is now clearly described in the documentation, and a warning is now raised when running with the "controller-dependent" model:

floris.logging_manager.LoggingManager WARNING Cp/Ct data provided with FLORIS is for demonstration purposes only, and may not accurately reflect the actual Cp/Ct surfaces of reference wind turbines.

@misi9170
Copy link
Collaborator

misi9170 commented Feb 3, 2025

Thanks @sTamaroTum for the updated description---the documentation for the model is now complete.

I've uploaded a couple of screenshots of compiled documentation here, but for further details, see the Controller-dependent Model section of docs/operation_models_user.ipynb.

image
image
image
image

@misi9170 misi9170 marked this pull request as ready for review February 3, 2025 20:28
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.

4 participants