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 unsteady aerodynamic model for turbine tail fin #1874

Merged
merged 9 commits into from
Mar 11, 2024

Conversation

abhineet-gupta
Copy link
Contributor

@abhineet-gupta abhineet-gupta commented Nov 15, 2023

READY TO MERGE.

ToDo before pull request is ready

  • Do existing tests pass (Same as the dev branch)
  • Update existing r-test for tail fin
  • Add a new r-test for the tail fin USB based on the validation exercise
  • Address review comments

Feature or improvement description
Implement an unsteady aerodynamic model for tail fin of turbines.

Impacted areas of the software
AeroDyn

Additional supporting information

  • Tail fin input file changed to obtain additional user-defined data
  • No changes in the structure of data passed to and from AeroDyn

Test results, if applicable
In future, add the distributed wind reference wind turbine being developed in r-test and add tests for tail fin aerodynamics

@abhineet-gupta abhineet-gupta changed the base branch from dev to rc-3.5.2 December 7, 2023 17:09
@abhineet-gupta abhineet-gupta changed the base branch from rc-3.5.2 to dev December 7, 2023 17:09
@abhineet-gupta abhineet-gupta force-pushed the f/tail_fin_unsteadymodel branch from 562de8b to 128ff34 Compare December 7, 2023 20:56
@abhineet-gupta abhineet-gupta marked this pull request as ready for review December 11, 2023 17:41
@ebranlard ebranlard self-requested a review December 11, 2023 18:10
Copy link
Contributor

@ebranlard ebranlard left a comment

Choose a reason for hiding this comment

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

I have some small suggestions for the documentation and code, but overall approve this pull request. Thanks a lot!

Please note that the tailfin r-test for the polar based does not seem to pass (likely due to the change of input file).

We would also need to add another r-test for the USB (one of your validation case for instance). Please make sure the unit tests runs quicly (e.g. around 0.5s) and generate minimal but useful data (e.g. few kb). Consider adding a README.md in your rtest folder to describe the system being used/tested.

docs/source/user/aerodyn/input.rst Outdated Show resolved Hide resolved
docs/source/user/aerodyn/input.rst Outdated Show resolved Hide resolved
docs/source/user/aerodyn/theory_tailfin.rst Outdated Show resolved Hide resolved
docs/source/user/aerodyn/theory_tailfin.rst Outdated Show resolved Hide resolved
docs/source/user/aerodyn/theory_tailfin.rst Outdated Show resolved Hide resolved
modules/aerodyn/src/AeroDyn.f90 Outdated Show resolved Hide resolved
modules/aerodyn/src/AeroDyn.f90 Outdated Show resolved Hide resolved
modules/aerodyn/src/AeroDyn.f90 Outdated Show resolved Hide resolved
@andrew-platt andrew-platt self-assigned this Jan 10, 2024
@andrew-platt andrew-platt added this to the v4.0.0 milestone Feb 15, 2024
@abhineet-gupta
Copy link
Contributor Author

The documentation updates can be previewed here:

  1. Section 4.2.1.9.3 of TailUnsteadyTheory.pdf
  2. Section 4.2.1.3.5 of TailUnsteadyInput.pdf

@andrew-platt andrew-platt requested a review from jjonkman March 7, 2024 20:18
@andrew-platt
Copy link
Collaborator

All issues from @ebranlard's review have been addressed.

@andrew-platt andrew-platt merged commit 6a419c7 into OpenFAST:dev Mar 11, 2024
21 checks passed
Copy link
Collaborator

@jjonkman jjonkman left a comment

Choose a reason for hiding this comment

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

Sorry for the delay. I see that this has been merged already, but I finally had a chance to review. Please find my comments below.

@@ -883,22 +883,26 @@ An example of tail fin input file is given below:
0 TFinIndMod - Model for induced velocity calculation {0: none, 1:rotor-average} (switch)
====== Polar-based model ================================ [used only when TFinMod=1]
1 TFinAFID - Index of Tail fin airfoil number [1 to NumAFfiles]
====== Unsteady slender body model ===================== [used only when TFinMod=2]
[TODO inputs for model 2]
====== Unsteady slender body model ===================== [used only when TFinMod=2]
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggest adding units after each variable.

For unitless variables, I would use (-). According to the theory/code, it looks like TFinSigma has the units of 1/degrees.

====== Unsteady slender body model ===================== [used only when TFinMod=2]
[TODO inputs for model 2]
====== Unsteady slender body model ===================== [used only when TFinMod=2]
0.9 TFinKp - Tail fin moment of area about reference point
Copy link
Collaborator

Choose a reason for hiding this comment

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

This comment for TFinKp is not correct. TFinKp is the potential lift coefficient.



where :math:`\sigma_i` are empirical constants characterizing the decay of separation functions, :math:`\gamma_{tf}` is the yaw angle of the tail fin with respect to the free-stream wind (:math:`V_{\text{wind}}`), :math:`\alpha^*_i` are the characteristics angles for separation functions.
:math:`x_i` takes on a value between 0 and 1, and are used to activate or deactivate a the contribution of potential lift, vortex lift and draft to the normal force on the tail fin.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Change "draft" to "drag here.

! Unsteady aerodynamic model

! Calculate separation function (quasi-steady)
x1 = 1.0_Reki/(1.0_Reki+exp(p%TFin%TFinSigma(1)*((ABS(gamma_tf)*180.0_ReKi/pi)-p%TFin%TFinAStar(1))))
Copy link
Collaborator

Choose a reason for hiding this comment

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

Could use NWTC Library parameter R2D instead of 180/pi here.

@@ -945,7 +949,21 @@ between 1 and ``NumAFfiles`` and is only used when TFinMod is set to 1. (-)

Unsteady slender body (USB) model inputs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Refer to :numref:`TF-aerotheory` and :cite:`ad-hammam_NREL:2023` for guidance on how to select parameters for the unsteady slender body theory based model.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Wasn't there supposed to be preprocessor developed by Hammam et al so that these parameters could be set directly based on the shape of the tail fin (delta, rectangular, elliptic, etc.)? Was this ever developed? If so, could we share a link?

@@ -163,9 +161,25 @@ The user only needs to indicate the index `TFinAFIndex` within the list `AFNames
Unsteady slender body model
---------------------------

The unsteady slender body (USB) model is documented in :cite:`ad-hammam2022`.
The unsteady aerodynamics of the tail fin is modeled based on Unsteady Slender Body Theory.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggest summarizing the limitations of the implementation here, i.e., tail fin chord assumed much smaller than tail fin arm length, and quasi-steady conditions (because your separation functions are implemented only quasi-statically). Perhaps there are others stated in Hammam et al.


.. math:: :label: TFUSBForce

N = \frac{\rho}{2} A_{tf} \bigg( K_p x_1 V_{\text{rel},x} V_{\text{rel},y} + \Big[x_2 K_v+(1- x_3)C_{Dc} \Big] V_{\text{rel},y}\big|V_{\text{rel},y}\big|\bigg)
Copy link
Collaborator

Choose a reason for hiding this comment

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

There is a negative sign out front in Hammam et al. I presume that is not needed here due to the sign convention used in AeroDyn? I haven't confirmed this, but it may be good to state that.

Presumably this implementation matches results from Hammam et al?


The theory will be implemented and documented in a future release.
x_i = (1+exp{[\sigma_i (|\gamma_{tf}|-\alpha^*_i)]})^{-1}
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't see an ABS() in Hammam et al. It makes sense to me that this would be needed, but I suggest mentioning that difference.



where :math:`\sigma_i` are empirical constants characterizing the decay of separation functions, :math:`\gamma_{tf}` is the yaw angle of the tail fin with respect to the free-stream wind (:math:`V_{\text{wind}}`), :math:`\alpha^*_i` are the characteristics angles for separation functions.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Why are the separation functions computed using ambient wind while the force calculation uses relative wind (including induction)? Shouldn't the same velocities (which I assume should be the relative velocity) be used for all?

abhineet-gupta added a commit to abhineet-gupta/AG_openfast that referenced this pull request Aug 16, 2024
andrew-platt added a commit that referenced this pull request Aug 26, 2024
Tail fin aerodynamics: address changes requested in pull request #1874
@andrew-platt andrew-platt mentioned this pull request Dec 24, 2024
38 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants