Estimate Operational Wake Losses based on SCADA Data#

%load_ext autoreload
%autoreload 2

This notebook demonstrates how to use the Wake Losses method in OpenOA to estimate operational wake losses for the La Haute Borne wind plant based on turbine-level SCADA data. Operational wake losses are estimated at the wind plant level and for each individual wind turbine during the period of record (POR) when data are available as well as for the estimated long-term wind conditions the wind plant will experience based on historical reanalysis wind resource data.

At a high-level, wake losses are estimated by comparing the actual energy produced by the wind plant (or turbine) to the potential energy that would have been produced without wake losses, which is treated as the average energy produced by the turbines experiencing freestream inflow multiplied by the number of turbines in the wind plant. Note that this method therefore assumes that without wake losses, each turbine would be capable of producing the same power as the freestream wind turbines, which may not be a valid assumption in some cases, such as in complex terrain or when wake effects from neighboring wind plants are present.

The approach used to estimate wake losses is as follows.

  1. First, a representative wind plant-level wind direction is calculated at each time step using the mean value of the wind direction signals for a user-specified set of wind turbines or meteorological (met) towers. Time steps for which any necessary plant-level or turbine-level data are missing are discarded.

  2. Next, the set of derated, curtailed, or unavailable turbines (i.e., turbines whose power production is limited not by wake losses but by operating mode) is identified for each time step using power curve outlier detection.

  3. For a sequence of wind direction bins, using the representative wind plant-level wind direction, the set of freestream turbines is identified based on whether any other wind turbines are located upstream of a turbine within a user-specified sector of wind directions. The average power production and average wind speed are then calculated for the set of freestream turbines operating normally (i.e., not derated) for each time step.

  4. Period-of-record wake losses are then calculated for the wind plant by comparing the potential energy production (calculated as the sum of the mean freestream power production for each time step multiplied by the number of turbines in the wind plant) to the actual energy production (given by the sum of the actual wind power production for each turbine and each time step). However, if specified by the user, the potential power production of the wind plant at each time step is assumed to be limited to the actual power produced by the derated turbines plus the mean power production of the freestream turbines for all other turbines in the wind plant. This same basic procedure is then used to estimate the wake losses for each individual wind turbine.

  5. Lastly, the long-term corrected wake losses are estimated using historical reanalysis data. The long-term frequencies of occurence are calculated for a set of wind direction and wind speed bins, based on historical hourly reanalysis data. Using the representative wind plant wind directions from SCADA or met tower data and the freestream wind speeds based on the turbine SCADA data, the average potential and actual wind plant power production are computed for each wind direction and wind speed bin. The long-term corrected wake losses are then estimated by comparing the long-term corrected potential and actual energy production, which are in turn determined by weighting the average potential and actual power production in each wind condition bin by the long-term frequencies. This basic process is then repeated to estimate the long-term corrected wake losses for each individual turbine.

If uncertainty quantification (UQ) is selected, wake losses are calculated multiple times using a Monte Carlo approach using randomly chosen analysis parameters and reanalysis products as well as randomly sampled time steps each iteration. If UQ is not used, wake losses are calculated using the specified analysis parameters for the full set of available time steps once for each reanalysis product.

In this example, we will demonstrate wake loss analysis both with and without UQ.

# Import required packages
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

from bokeh.plotting import show
from bokeh.io import output_notebook
from bokeh.resources import INLINE
output_notebook(INLINE)

from openoa.analysis.wake_losses import WakeLosses
from openoa import PlantData
from openoa.utils import met_data_processing as met
from openoa.utils import plot

import project_ENGIE

%matplotlib inline
Loading BokehJS ...