Theory error in Gaussian wake models
@rafmudaf is already working on this.
Since Jul 12, 2023.
Assessment
This issue has not been assessed yet.
Description
Gaussian wake models have 2 errors that do not align with theory
This doesn't fit the typical issue template since it is just comparing code with theory. I will do my best to justify everything with references.
The first reference is the research paper that the Gaussian wake model is based off of:
Bastankhah, Majid, and Fernando Porté-Agel.
"Experimental and theoretical study of wind turbine wakes in yawed conditions."
Journal of Fluid Mechanics 806 (2016): 506-541.
which may be accessed publicly here. The main equations I am looking at are Eq. (6.4)
$$\frac{u_R}{u_\infty} = \frac{C_T \cos \gamma}{2 ( 1 - \sqrt{1-C_T \cos \gamma} )}$$
and Eq. (6.16)
$$\frac{x_0}{D} = \frac{\cos \gamma (1+\sqrt{1-C_T})}{\sqrt{2} [ 4 \alpha I + 2 \beta (1-\sqrt{1-C_T})]}$$
I am specifically referencing the code within the following files:
floris/simulation/wake_velocity/gauss.py
(herein referred to as wake_velocity) and
floris/simulation/wake_deflection/gauss.py
(herein referred to as wake_deflection)
Error 1 in wake_velocity
The first error occurs in wake_velocity, with respect to Eq. (6.4) where $u_R$ is calculated on line 87.
uR = u_initial * ct_i / ( 2.0 * (1 - np.sqrt(1 - ct_i) ) )
This equation does not match up with Eq. (6.4), and it should be
uR = u_initial * ct_i * cosd(yaw_angle) / ( 2.0 * (1 - np.sqrt(1 - ct_i) ) )
(note that cosine is multiplied in the numerator)
For additional verification, I also noticed that in wake_deflection lines 150-156, $u_R$ is calculated by
uR = (
freestream_velocity
* ct_i
* cosd(tilt)
* cosd(yaw_i)
/ (2.0 * (1 - np.sqrt(1 - (ct_i * cosd(tilt) * cosd(yaw_i)))))
)
further confirming the inconsistency with theory.
Error 2 in wake_deflection
The first error occurs in wake_deflection, with respect to Eq. (6.16) where $x_0$ is calculated on lines 160-166.
x0 = (
rotor_diameter_i
* (cosd(yaw_i) * (1 + np.sqrt(1 - ct_i * cosd(yaw_i))))
/ (np.sqrt(2) * (
4 * self.alpha * turbulence_intensity_i + 2 * self.beta * (1 - np.sqrt(1 - ct_i))
)) + x_i
)
This equation does not match up with Eq. (6.16), and it should be
x0 = (
rotor_diameter_i
* (cosd(yaw_i) * (1 + np.sqrt(1 - ct_i)))
/ (np.sqrt(2) * (
4 * self.alpha * turbulence_intensity_i + 2 * self.beta * (1 - np.sqrt(1 - ct_i))
)) + x_i
)
(note that cosine is removed within the square root)
For additional verification, I also noticed that in wake_velocity line 102, $x_0$ is calculated by
x0 *= rotor_diameter_i * cosd(yaw_angle) * (1 + np.sqrt(1 - ct_i) )
further confirming the inconsistency with theory.
Floris version
v3.4 (latest)
I installed by
git clone git@github.com:NREL/floris.git
Before submitting I made sure to git pull and it appears this has not yet been spotted.
- Dominant language
- Python
- Stars
- 301
- Forks
- 188
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from NatLabRockies/floris
-
on-hold package
NatLabRockies/floris#1173 · 2 assignees ·
-
enhancement ideas-list
Difficulty 5/5 Over a week Newbie friendliness 25/100
NatLabRockies/floris#1147 ·
-
ideas-list new-feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
NatLabRockies/floris#1140 ·
-
Bug with y cut plane Opendocumentation ideas-list new-feature
Difficulty 3/5 1-2 days Newbie friendliness 45/100
NatLabRockies/floris#1123 · 8 comments ·
-
ideas-list package
Difficulty 3/5 1-2 days Newbie friendliness 35/100
NatLabRockies/floris#1091 · 1 comment ·
All issues in NatLabRockies/floris
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100