Skip to content

Wind Power

Estimates wind turbine power output from a wind speed variable.


winpow

Converts wind speed to power using a third-order polynomial fitted to a reference turbine power curve, then applies cut-in, rated, and cut-out speed limits.

Parameter Type Default Description
turbine_power float Rated power output in kW. Required.
cutin float 3.0 Cut-in wind speed (m/s). Output is zero below this.
rated float 10.61 Rated wind speed (m/s). Output is capped at turbine_power above this.
cutout float 25.0 Cut-out wind speed (m/s). Output is zero above this.
agg str | null "mean" Aggregation applied after computing instantaneous power ("mean", "max", etc.). Set to null to return the full power time series.
group str | null null Time grouping (month, season, year). Only valid when agg is set.

Power curve

The polynomial is fitted to a reference 16 MW offshore turbine curve. The relationship between wind speed and output power follows:

P(v) = a·v + b·v² + c·v³ + d    for  cutin < v < rated
P(v) = turbine_power              for  rated ≤ v < cutout
P(v) = 0                          for  v ≤ cutin  or  v ≥ cutout

The polynomial coefficients are fitted internally — only turbine_power is needed to scale the output to your turbine's rated capacity.


Examples

Mean power output for a 15 MW turbine:

- func: winpow
  dim: time
  data_vars: [wspd]
  turbine_power: 15000   # kW
  agg: mean

Monthly mean and maximum power with custom speed limits:

- func: winpow
  dim: time
  data_vars: [wspd]
  turbine_power: 8000
  cutin: 4.0
  rated: 12.0
  cutout: 25.0
  agg: mean
  group: month

Return the full instantaneous power time series (no aggregation):

- func: winpow
  dim: time
  data_vars: [wspd]
  turbine_power: 15000
  agg: null

Note

winpow operates on the first variable in data_vars. Pass a single wind-speed variable per call.


API reference

gridstats.ops.windpower.winpow(data: xr.Dataset, *, dim: str = 'time', turbine_power: float, cutin: float = 3.0, rated: float = 10.61, cutout: float = 25.0, agg: str | None = 'mean', group: str | None = None, **kwargs) -> xr.Dataset

Estimate wind turbine power from wind speed.

Fits a third-order polynomial to a reference power curve, then applies cut-in, rated, and cut-out speed thresholds.

Parameters:

Name Type Description Default
data Dataset

Input dataset. Must contain a wind-speed variable (first data var is used as the wind-speed input).

required
dim str

Time dimension name.

'time'
turbine_power float

Rated mechanical power output (kW).

required
cutin float

Cut-in wind speed below which output is zero (m/s).

3.0
rated float

Rated wind speed above which output is capped (m/s).

10.61
cutout float

Cut-out wind speed above which output is zero (m/s).

25.0
agg str | None

Aggregation to apply after computing instantaneous power ('mean', 'max', etc.). Pass None to return the full time series.

'mean'
group str | None

Time component to group by (only supported when agg is set).

None

Returns:

Type Description
Dataset

Dataset with wind power variable(s).

Raises:

Type Description
NotImplementedError

If group is provided without agg.