Skip to content

Allow TI to impact turbine power production #785

@paulf81

Description

@paulf81

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.

Metadata

Metadata

Assignees

Labels

enhancementAn improvement of an existing featurev4Focus of FLORIS v4

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions