-
Notifications
You must be signed in to change notification settings - Fork 185
Closed
Labels
enhancementAn improvement of an existing featureAn improvement of an existing featurev4Focus of FLORIS v4Focus of FLORIS v4
Milestone
Description
Allow TI to impact turbine power production
In V4, TI can be set per time step in TimeSeries or wd/ws bin in WindRose. It would be useful to reflect TI impact on power production of a turbine, separate of wake model impacts. Talking this over with @ejsimley we think we have a way forward with 90% of the details in mind. Here is the proposed solution to implement:
- As with tilt, assume a given power curve is defined at a certain reference turbulence intensity. The power curves included with FLORIS are rather sharp and I believe our 0% TI, but it is on common to have a power curve defined for a certain TI. So, include into turbine yaml the ref_ti value
- Therefore the amount to correct a given power should be:
- 0 if TI <= ref_ti
- delta_ti = ti - ref_ti if ti > ref_ti
- Correct the power curve (and ct) using a version of the method previously implemented in v2:
# define wind speed, ti, and power curve components
ws = np.array(self.power_thrust_table["wind_speed"])
cp = np.array(self.power_thrust_table["power"])
ws = ws[np.where(cp != 0)]
ciws = ws[0] # cut in wind speed
cows = ws[len(ws) - 1] # cut out wind speed
speed = self.average_velocity
ti = self.current_turbulence_intensity
if ciws >= speed or cows <= speed or ti == 0.0 or math.isnan(speed):
return 1.0
else:
# define mean and standard deviation to create normalized pdf with sum = 1
mu = speed
sigma = ti * mu
if mu + sigma >= cows:
xp = np.linspace((mu - sigma), cows, 100)
else:
xp = np.linspace((mu - sigma), (mu + sigma), 100)
pdf = norm.pdf(xp, mu, sigma)
npdf = np.array(pdf) * (1 / np.sum(pdf))
# calculate turbulence parameter (ratio of corrected power to original power)
return np.sum([npdf[k] * self.powInterp(xp[k]) for k in range(100)]) / (
self.powInterp(mu)
)
- Note in essence the code returns a gaussian blur of points on the power (or thrust) curve. I think in v4 we should implement the logic of this, but find a way to precompute this effect
- Then just need to route this logic around
- Finally, in v2 there was a boolean value whether the user wanted this turbulence correction applied (default to False) do we want the same?
@ejsimley @misi9170 @rafmudaf : Thought I'd start with this issue before starting the pull request so we have a place to iron out the intention before starting. I will link this issue to the card in the project board.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementAn improvement of an existing featureAn improvement of an existing featurev4Focus of FLORIS v4Focus of FLORIS v4
Type
Projects
Status
Done