# Wake effects

## What are Wake effects?

When placed in a farm, wind turbines produce disturbances to the air as
they extract kinetic energy. These disturbances are commonly referred to as **wakes**.

Due to the complex aero-dynamic interactions, wakes may affect down-wind turbines in a non-obvious manner while evolving on real wind farms. Moreover, different ambient wind conditions, such as turbullence and temperature affect how wakes evolve. Wakes affect dramatically the power production of windfarms, making the minimum spacing of wind turbines an important design constraint. In order to obtain reliable estimates on power production, and potentially to structural dynamic loads of wind turbine components, it is important to have an automated and scalable technique to statistically model the effect of wakes under different wind conditions.

This work is based on a Monte-Carlo simulation of a wind-farm, containing 1000 cases with different wind turbulence intensity, wind orientation and mean windspeed conditions using NREL-OpenFAST [1] and the Dynamic Wake Meandering subroutines [2]. Each simulation required approximately 13 hours to complete, and the volume of the data was too large to post-process in a single machine. Therefore a fully distributed workflow (simulation and post-processing) was implemented in ETH cluster Euler (IBM spectrum LSF system). This also led to my first small contribution on an open source project, which was to refactor parts of the source code of NREL-OpenFAST to compile and run under Linux.
In our related work , presented on the IMAC XXXVI conference , it was demonstrated how deep generative models, namely the **Variational Autoencoder** (VAE)[3] can effectively represent the statistics of the effect of wakes on the operational characteristics of a wind farm, with a limited amount of samples considering the dimensionality of the problem.

The loss function of the VAE reads:

\[ELBO(X,z) = E[\log P(X \vert z)] - D_{KL}[Q(z \vert X) \Vert P(z)]\]Where \(X\) are the raw monitoring variables, \(z\) is a lower dimensional representation of the raw variables.

The loss function of the VAE attempts to jointly discover a lower dimensional representation for the data, while at the same time *warping* the raw data in such a way that it is modelled with
a simple probability distribution. The \(D_{KL}\) term *pushes* the lower dimensional representation
\(z\) to a simple probability distribution, whereas the second term helps is forcing the identification of the latent structure in the data.

Actually, a conditional VAE is used, which is better described in my other post where I applied this to simulated fatigue loads of wind turbine blades.

## Some Results

In the following animation, samples from the trained autoencoder are shown, where the mean wind speed of the farm is controlled. The arrows represent the wind orientation as it is sensed from each turbine

Effective turbulence intensity is another parameter affected by the wakes.

Red dots correspond to the simulated cases. The rest of the data points correspond to samples from the VAE, which generalizes in a realistic manner from the available data.

The orange dots corresponds to VAE-sampled data, whereas the blue correspond to real data. The VAE captures effectively the joint distribution of the wind characteristics at different points, accounting for the effect of wakes.