-
Notifications
You must be signed in to change notification settings - Fork 463
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
Add unsteady aerodynamic model for turbine tail fin #1874
Conversation
562de8b
to
128ff34
Compare
There was a problem hiding this 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.
The documentation updates can be previewed here:
|
All issues from @ebranlard's review have been addressed. |
There was a problem hiding this 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] |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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)))) |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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} |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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?
Tail fin aerodynamics: address changes requested in pull request #1874
READY TO MERGE.
ToDo before pull request is ready
Feature or improvement description
Implement an unsteady aerodynamic model for tail fin of turbines.
Impacted areas of the software
AeroDyn
Additional supporting information
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