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
Before submitting I made sure to git pull and it appears this has not yet been spotted.
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:
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} )}$$
$$\frac{x_0}{D} = \frac{\cos \gamma (1+\sqrt{1-C_T})}{\sqrt{2} [ 4 \alpha I + 2 \beta (1-\sqrt{1-C_T})]}$$
and Eq. (6.16)
I am specifically referencing the code within the following files:
(herein referred to as wake_velocity) and
(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.
This equation does not match up with Eq. (6.4), and it should be
(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
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.
This equation does not match up with Eq. (6.16), and it should be
(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
further confirming the inconsistency with theory.
Floris version
v3.4 (latest)
I installed by
Before submitting I made sure to git pull and it appears this has not yet been spotted.