Wind Turbines

Wind Turbine Generator

Wind Turbine Generators (WTGs)

A .wtg file can be read using the windkit.read_wtg() function.

import windkit as wk
wtg = wk.read_wtg("Bonus_1_MW.wtg")
print(wtg)
<xarray.Dataset>
Dimensions:                        (mode: 1, wind_speed: 22)
Coordinates:
* wind_speed                     (wind_speed) float64 4.0 5.0 ... 24.0 25.0
* mode                           (mode) int64 0
Data variables:
    power_output                   (mode, wind_speed) float64 2.41e+04 ... 1e+06
    thrust_coefficient             (mode, wind_speed) float64 0.915 ... 0.161
    air_density                    (mode) float64 1.225
    stationary_thrust_coefficient  (mode) float64 0.161
    wind_speed_cutin               (mode) float64 4.0
    wind_speed_cutout              (mode) float64 25.0
    rated_power                    (mode) float64 1e+06
    name                           <U10 'Bonus 1 MW'
    rotor_diameter                 float64 54.2
    hub_height                     float64 50.0
    regulation_type                int64 2
Attributes:
    Conventions:      CF-1.8
    Package name:     windkit
    Package version:  0.6.4.dev32+g349fa3c
    Creation date:    2023-10-31T09:04:58
    author:           Bjarke Tobias Olsen
    author_email:     btol@dtu.dk
    institution:      DTU Wind Energy

The wtg xarray.Dataset format contains a number of variables and attributes. The most important variables are:

  • power_output: The power output of the wind turbine generator in W.

  • thrust_coefficient: The thrust coefficient of the wind turbine generator.

  • air_density: The air density in kg/m3.

  • stationary_thrust_coefficient: The stationary thrust coefficient of the wind turbine generator.

  • wind_speed_cutin: The cut-in wind speed of the wind turbine generator in m/s.

  • wind_speed_cutout: The cut-out wind speed of the wind turbine generator in m/s.

  • rated_power: The rated power of the wind turbine generator in W.

The power output and the thrust coefficient are functions of the wind speed and the mode of the WTG. The mode is used to distinguish between different operating conditions of the WTG. Each mode is associated with a set of operating conditions, such as varying air density, cut-in and cut-out wind speeds, and rated power etc. In the WTG object above there is only one mode available.

To manually create a wind turbine generator, a xarray.Dataset following format desribed above can be created:

import numpy as np
import xarray as xr

# Create a wind turbine generator
power_output = np.random.rand(1, 22) * 1e6
thrust_coefficient = np.random.rand(1, 22)
air_density = np.array([1.225])
stationary_thrust_coefficient = np.array([0.161])
wind_speed_cutin = np.array([4.0])
wind_speed_cutout = np.array([25.0])
rated_power = np.array([1e6])
name = "Bonus 1 MW"
rotor_diameter = 54.2
hub_height = 50.0
regulation_type = 2  # 1=stall, 2=pitch

wind_speed = np.linspace(4.0, 25.0, 22)
mode = np.array([0])

wtg = xr.Dataset(
    data_vars=dict(
        power_output=(["mode", "wind_speed"], power_output),
        thrust_coefficient=(["mode", "wind_speed"], thrust_coefficient),
        air_density=(["mode"], air_density),
        stationary_thrust_coefficient=(["mode"], stationary_thrust_coefficient),
        wind_speed_cutin=(["mode"], wind_speed_cutin),
        wind_speed_cutout=(["mode"], wind_speed_cutout),
        rated_power=(["mode"], rated_power),
        name=name,
        rotor_diameter=rotor_diameter,
        hub_height=hub_height,
        regulation_type=regulation_type,
    ),
    coords=dict(
        wind_speed=wind_speed,
        mode=mode,
    ),
)

The resulting WTG is very similar to the one read from file above (apart from the randomly generated data).

Wind Turbines object

Groups of wind turbines can be created in WindKit Introduction can be created by instanciating a windkit.WindTurbines class object. This is done by providing a list of tuples of wind turbine generators and their respective positions:

import windkit as wk

wt_locs = wk.spatial.create_dataset(
    x=[0, 0, 0, 0, 0],
    y=[0, 1, 2, 3, 4],
    height=[50, 50, 50, 50, 50],
    crs="epsg:32632",
    struct="point"
)

wts = wk.WindTurbines([
    (wtg, wt_locs),
])

In this case, just a single turbine group of five turbines is added. More turbine groups can be added by providing more tuples of wind turbine generators and their respective positions.