Tilt Cosine Law #1124
-
Hello, I believe the way rotor effective velocities are calculated at the moment for tilt is wrong. I'm happy to be corrected though! From FLORIS:
From this it can be seen that the cosine law is applied relative to the reference tilt at which the cp/ct curves are defined. I see three possible issues with this:
I have read #1055 but I believe that is asking a slightly different question. Regards, Max |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 6 replies
-
Hi @mkrause-strath , Thanks for raising this! I believe that you're right, it would be more correct to use the ratio of the tilts, rather than the difference. I don't quite follow your math (or perhaps there are some typos?) but I believe what you are suggesting is that, letting should instead be replaced by Is that right? When I made a short script to look at the differences between them: import numpy as np
import matplotlib.pyplot as plt
tilt_ref = 5
tilt_test = 15
tilt_test_2 = -5
tilt_test_3 = 5
C_T = 1.88
base = 3.0
def cosd(x):
return np.cos(np.deg2rad(x))
# Test 1: 15 degrees of tilt
# Current approach
correction_current = (cosd(tilt_test - tilt_ref))**(C_T / base)
print("Current approach correction: {0:.4f}".format(correction_current))
# Proposed approach
correction_proposed = (cosd(tilt_test)/cosd(tilt_ref))**(C_T / base)
print("Proposed approach correction: {0:.4f}".format(correction_proposed))
# Test 2: -5 degrees of tilt
# Current approach
correction_current_2 = (cosd(tilt_test_2 - tilt_ref))**(C_T / base)
print("Current approach correction (negative tilt): {0:.4f}".format(correction_current_2))
# Proposed approach
correction_proposed_2 = (cosd(tilt_test_2)/cosd(tilt_ref))**(C_T / base)
print("Proposed approach correction (negative tilt): {0:.4f}".format(correction_proposed_2))
# Test 3: 5 degrees of tilt (reference)
# Current approach
correction_current_3 = (cosd(tilt_test_3 - tilt_ref))**(C_T / base)
print("Current approach correction (reference tilt): {0:.4f}".format(correction_current_3))
# Proposed approach
correction_proposed_3 = (cosd(tilt_test_3)/cosd(tilt_ref))**(C_T / base)
print("Proposed approach correction (reference tilt): {0:.4f}".format(correction_proposed_3))
# Visualize differences
tilts = np.linspace(-20, 20, 100)
corrections_current = (cosd(tilts - tilt_ref))**(C_T / base)
corrections_proposed = (cosd(tilts)/cosd(tilt_ref))**(C_T / base)
fig, ax = plt.subplots(1,1)
ax.plot(tilts, corrections_current, label="Current approach", color="k", linestyle="--")
ax.plot(tilts, corrections_proposed, label="Proposed approach", color="C0", linestyle="-")
ax.plot([tilt_ref, tilt_ref], [0, 1.2], color="k", linestyle=":", label="Reference angle")
ax.grid()
ax.set_xlabel("Tilt angle [deg]")
ax.set_ylabel("Velocity correction factor [-]")
ax.legend()
ax.set_ylim([0.9, 1.1])
plt.show() and
There are some differences between the value you reported in your question, but again that may be a typo. I think you're right about this, and I'd be happy to support a bug fix if you'd like to open a pull request (alternatively, I can begin the PR if you'd prefer). Regarding the use of Cheers, |
Beta Was this translation helpful? Give feedback.
Hi @mkrause-strath ,
Thanks for raising this! I believe that you're right, it would be more correct to use the ratio of the tilts, rather than the difference. I don't quite follow your math (or perhaps there are some typos?) but I believe what you are suggesting is that, letting$\theta_\text{ref}$ denote the reference tilt, and $\theta$ denote the "actual" tilt, the expression
should instead be replaced by
Is that right?
When$\theta = \theta_\text{ref}$ , these evaluate to the same thing; but when $\theta \neq \thet…