Estimate Static Yaw Misalignment based on SCADA Data#
%load_ext autoreload
%autoreload 2
This notebook demonstrates how to use the Static Yaw Misalignment method in OpenOA to estimate yaw misalignment for the four wind turbines in the La Haute Borne wind plant based on turbine-level SCADA data.
At a high-level, static yaw misalignment is estimated as the difference between the wind vane angle where power performance is maximized and the mean wind vane angle at which the turbine operates. The static yaw misalignment is therefore the estimated offset that should be subtracted from the measured wind vane angle to maximize power production. For each turbine, yaw misalignment is estimated for a series of wind speed bins. An overall yaw misalignment is then calculated as the average yaw misalignment over all wind speed bins.
The approach used to estimate static yaw misalignment for each wind turbine is as follows.
First, timestamps when blade pitch angle is above a specified threshold or power curve outliers are detected are filtered out to remove periods when the turbine is operating abnormally or in above-rated conditions where yaw misalignment has little impact on power. This step increases the likelihood that power variations within a wind speed bin can be attributed to yaw misalignment.
Next, the filtered SCADA data are divided into specified wind speed bins based on the measured nacelle wind speed. The wind speed bins should be chosen to capture below-rated wind speeds of interest.
For each wind speed bin, the power performance is binned by wind vane angle, where power performance can be specified as either the raw power or a normalized coefficient of power formed by dividing the raw power by the cubed wind speed. Using the coefficient of power can help remove the confounding impact of wind speed differences within a wind speed bin on power performance.
A cosine-exponent curve as a function of wind vane angle is then fit to the binned power performance values for each wind speed bin, where the free parameters are the amplitude, the exponent applied to the cosine, and the wind vane angle offset where the peak of the cosine curve is located.
For each wind speed bin, the static yaw misalignment is estimated as the difference between the wind vane angle where power performance is maximized, given by the wind vane angle offset for the best-fit cosine curve, and the mean wind vane angle.
The overall yaw misalignment is estimated as the average yaw misalignment over all wind speed bins.
If uncertainty quantification (UQ) is selected, static yaw misalignment is calculated multiple times using a Monte Carlo approach using randomly chosen power curve filtering parameters and randomly sampled time steps each iteration. The resulting distribution of yaw misalignment estimates is used to compute 95% confidence intervals around the mean yaw misalginment estimates.
In this example, we will demonstrate static yaw misalignment detection 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.yaw_misalignment import StaticYawMisalignment
from openoa import PlantData
from openoa.utils import plot, filters
import project_ENGIE
%matplotlib inline