Closed-loop model-based wind farm control using FLORIS under time-varying inflow conditions

Wind farm (WF) controllers adjust the control settings of individual turbines to enhance the total performance of a wind farm. Most WF controllers proposed in the literature assume a time-invariant inflow, whereas important quantities such as the wind direction and speed continuously change over time in reality. Furthermore, properties of the inflow are often assumed known, which is a fundamentally compromising assumption to make. This paper presents a novel, closed-loop WF controller that continuously estimates the inflow and maximizes the energy yield of the farm through yaw-based wake steering. The controller is tested in a high-fidelity simulation of a 6-turbine wind farm. The WF controller is stress-tested by subjecting it to strongly-time-varying inflow conditions over 5000 s of simulation. A time-averaged improvement in energy yield of 1:4% is achieved compared to a baseline, greedy controller. Moreover, the instantaneous energy gain is up to 11% for wake-loss-heavy situations. Note that this is the first closed-loop and model-based WF controller tested for time-varying inflow conditions (i.e., where the mean wind direction and wind speed change over time) at such fidelity. This solidifies the WF controller as the first realistic closed-loop control solution for yaw-based wake steering. © 2020 The Authors. Published by Elsevier Ltd. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/).


Introduction
In the ''Klimaatakkoord'' [1], the Dutch government pledges to significantly reduce carbon-dioxide emissions over the next decade, lowering emissions to 49% of the levels measured in 1990. In pursuit of this goal, the Dutch government has been installing an increasing number of wind farms in the North Sea. The intention is to have 11 GW of wind energy installed off the coast of The Netherlands by 2030, thereby accounting for 40% of the Dutch national electricity demand.
As the globally installed capacity of wind energy continues to grow, so does the interest towards further improving the efficiency of wind turbines and wind farms. The research field of control engineering plays a significant role in this process. In the past, the focus of control engineering has been on individual wind turbine control. More recently, the focus has shifted from wind turbine towards wind farm control, in which turbines are coordinated with one another to achieve a collective objective [2].
A distinction can be made between two strategies of wind farm control, namely induction control and wake steering. The first strategy aims at derating upstream turbines, which purposely lowers their energy yield through pitching the turbine blades and adjusting the generator torque. Induction control is typically used for active power control (e.g. Ref. [3,4], load mitigation strategies (e.g. Refs. [5], and more recently power maximization (e.g., Ref. [6]. The second strategy, wake steering, displaces the wake downstream by purposely misaligning the rotor plane with the incoming air stream. Wake steering is typically done using yaw control. The most common objective of wake steering is power maximization (e.g., Ref. [7e9]. Yaw-based wake steering has shown significant potential in high-fidelity simulations and real-world experiments. For example, Gebraad et al. [7] show an increase in energy extraction of up to 13% for a 6-turbine wind farm in a large-eddy simulation. Furthermore, Campagnolo et al. [10] show an increase in energy extraction of up to 21% for an array of 3 turbines in a wind tunnel. Additionally, Fleming et al. [9] show an increase in energy extraction of up to 4% for an array of 3 turbines in a field experiment. Moreover, Howland et al. [8] demonstrate wake steering through field experiments on an array of 6 wind turbines, showing an increase of up to 47% at low wind speeds (due to cut-in behaviour of downstream turbines) and an increase of up to 13% for higher wind speeds. Due to its promising potential, the paper at hand focuses on yaw-based wake steering for power maximization.
However, a crucial limitation of most wind farm controllers proposed in the literature is that the incoming wind field is assumed to be time invariant. In reality, the wind field entering a wind farm changes continuously due to fluctuations in the heating of the Earth's surface, among others. Moreover, wake steering is highly sensitive to the ambient conditions [2]. In consequence, it is crucial to test farm control solutions for realistic, time-varying inflow conditions. Additionally, properties of the inflow such as the wind direction and wind speed are typically assumed to be prior knowledge to the wind farm controller, which is a secondary unrealistic and compromising assumption. Controllers that do not rely on live measurements but rather on prior knowledge of the inflow are denoted as open-loop. The results from Gebraad et al. [7] and Campagnolo et al. [10] are with open-loop controllers under time-invariant inflows, in which the inflow is carefully selected to maximize the potential benefits of wake steering.
Furthermore, the energy yield gain of up to 4% shown by Fleming et al. [9] is extracted from months of field data, for narrow time windows and inflow conditions. This provides little insight into the benefits of wake steering over the annual operation cycle of a wind farm. Furthermore, despite the notable improvements shown in Howland et al. [8], the gain in annual energy production for the field experiments was found to be insignificant.
The controllers deployed in both field experiments [8,9] are open-loop, deriving the inflow properties from the most upstream turbine or an external measurement system. However, the uncertainties concerning inflow estimation and the high complexity in modeling the relevant wind farm dynamics require a closed-loop wind farm control solution. In closed-loop control, measurements of the controlled system are fed back to the controller to allow adaptation to a changing environment and model uncertainty. The closed-loop model-based framework presented in this work consists of two components, being model adaptation and setpoint optimization, as depicted in Fig. 1. Model adaptation consists of estimating the input parameters of a surrogate model that are currently relevant for the wind farm. This surrogate model is a simplified mathematical model of the wind farm dynamics with a low computational cost. In practice and also in this work, model adaptation often implies the estimation of the freestream wind speed, wind direction, and the amount of wake recovery (commonly defined by the turbulence intensity). Secondly, the setpoint optimization leverages the adapted surrogate model to find the turbine control setpoints that maximize a certain objective.
In this work, the objective is power maximization and the control variables are the turbine yaw angles.
The main focus in the wind farm control literature has been on surrogate model development (e.g. Ref. [7,11], and control setpoint optimization (e.g., Ref.
[12e14]. More recently, there has been an increasing amount of interest towards the estimation of the ambient conditions and dealing with the time-varying nature of wind (e.g., Refs. [15e18]. However, many of the wind farm control algorithms proposed in the literature are merely tested on simplified simulation models, from which no real conclusions can be drawn apart from a proof of concept. Furthermore, the controllers that are tested in high-fidelity (large-eddy) simulations and realworld experiments typically assume a constant mean inflow wind direction, wind speed, and turbulence intensity (e.g., Ref. [7,10]. However, experiments under such steady inflow conditions insufficiently represent real-world scenarios, and thus much uncertainty remains concerning the true potential of these wind farm controllers in actual farms.
A handful of articles exist that consider time-varying inflow conditions for wind farm controller validation. Bossanyi [19] demonstrates a wind farm control algorithm in low-fidelity simulation subjected to time-varying inflow conditions. Also, Vollmer [20] demonstrates open-loop wake steering on a two-turbine array in a large-eddy simulation subjected to time-varying inflow conditions. Furthermore, Ciri et al. [21] presents a closed-loop and model-free control algorithm that improves the performance of turbines inside a wind farm, demonstrated in high-fidelity simulations under a time-varying inflow. However, model-free algorithms for wake steering are fundamentally limited due to slow convergence rates combined with the inherent variability of the inflow conditions. Their practicability in real wind farms therefore remains uncertain [2].
To the best of the authors' knowledge, there is no literature on the assessment of closed-loop model-based wind farm control solutions in a high-fidelity environment (i.e., field experiment, wind tunnel experiment, large-eddy simulation) with time-varying inflow conditions. Addressing this scientific gap is invaluable for the practical validation and implementation of wind farm control solutions, as time-varying inflow conditions are ubiquitous in realworld wind farms. This article contains three novel contributions: 1. a detailed fit of the surrogate wind farm model FLORIS to largeeddy simulation data. 2. a model-based estimation algorithm that predicts the freestream wind direction, wind speed and a wake recovery factor using measurements that are readily available in commercial wind farms. This algorithm is assisted by a theoretical measure of observability published in earlier work [18]. 3. validation of the closed-loop wind farm controller in a largeeddy simulation subjected to time-varying inflow conditions.
The structure of this article is as follows. In Section 2, the highfidelity simulation environment is described. In Section 3, the surrogate wind farm model is outlined. In Section 4, the closed-loop wind farm controller is synthesized. This controller is tested in Section 5 in a high-fidelity simulation under time-varying inflow conditions, upon which the turbine energy yield and the turbine loads are investigated. The article is concluded in Section 6.

The Simulator for Wind Farm Applications
For surrogate model tuning and controller validation, the highfidelity Simulator for Wind Farm Applications (SOWFA) model developed by the National Renewable Energy Laboratory (NREL) is used in this article. SOWFA is a large-eddy wind farm simulation The closed-loop model-based wind farm control framework. A simplified surrogate model of the wind farm is used to represent the flow and turbine behavior at a low computational cost. The first step in the controller is model adaptation, implying the estimation of the inputs relevant for the current wind farm situation. Typically, this implies the estimation of the ambient conditions. Then, the turbine control setpoints are optimized using the surrogate model, which are the turbine yaw angles in this work. model that leverages the actuator line model to determine the forces applied by each turbine on the flow. SOWFA has been validated to SCADA data in Churchfield et al. [22], among others. In recent work, this high-fidelity simulator was coupled with MATLAB using a network-based communication interface [23] for straightforward control algorithm testing. In this article, the wind turbine of interest is the DTU 10 MW reference wind turbine [24]. An overview of important parameters for all simulations presented in this article is given in Table 1. The reader is referred to Churchfield et al. [26] for a more detailed description of SOWFA.

Surrogate model
The closed-loop control architecture outlined in Fig. 1 requires a surrogate model, serving for both the model adaptation and the control setpoint optimization. Therefore, this model should predict the flow and turbine behavior in the farm accurately while being computationally tractable for real-time application. For this purpose, a popular, steady-state, control-oriented surrogate model is opted for. To increase accuracy, several model parameters are calibrated in accordance to high-fidelity simulation data.

Model definition
The surrogate model employed in this work is the FLOw Redirection and Induction in Steady-state (FLORIS) model [27]. FLORIS predicts the time-averaged three-dimensional flow field and turbine power capture of a wind farm as a function of the turbine control settings and the incoming wind field. Since the surrogate model is static, the computational cost for a single model evaluation is between 10 ms and 1 s. This low computational cost makes FLORIS feasible for real-time control applications. The general inputs and outputs of the FLORIS model are outlined in Fig. 2, categorized into four input classes (ambient conditions, control settings, wind farm properties, and model definition) and two output classes (turbine outputs and flow field). For a more detailed description of FLORIS, the reader is referred to the literature [11,28,29].
Model discrepancies between SOWFA and FLORIS are inevitable. In FLORIS, several assumptions are made on the single wake profile and the interaction between multiple wakes. In addition to the absence of secondary steering effects [30], the lack of timedependent wake propagation in FLORIS is a significant source of model discrepancies.

Model tuning prior to controller synthesis
Surrogate wind farm models typically include a myriad of model parameters (e.g., Ref. [7,11]. FLORIS has 10 free parameters that must be defined prior to controller synthesis. Typically, the values of these parameters are based on idealized theory and wind tunnel experiments [11]. Moreover, these parameters are known to vary with wind turbine type and various wind farm properties [23]. The success of the controller largely relies on the accuracy of the surrogate model. Hence, in this article, the model parameters are tuned prior to controller synthesis in accordance to high-fidelity simulation data of the wind turbine and wind farm of interest. Firstly, the power curve of a single turbine as a function of the yaw misalignment is tuned using cases A and B of Table 1. Currently, FLORIS relies on a database of power and thrust coefficients, C P and C T , for the DTU 10 MW turbine. This database includes the effect of yaw on the power production and was generated using blade element momentum (BEM) theory. Due to a difference in BEM theory and large-eddy simulation, the power coefficient database is scaled by a empirically found multiplication factor of hðgÞ ¼ 1:08 cosg . The result is shown in Fig. 3.
Secondly, the wind profile behind a single turbine is tuned. This is done by minimizing the error in the predicted flow fields between FLORIS and SOWFA for cases A, B, and C of Table 1. For each case, 7 yaw setpoints are assessed: from g ¼ À30 + to g ¼ 30 + in steps of 10 + . The optimal model parameters U + are found by minimizing the root-mean-square error (RMSE) of the timeaveraged flow field from SOWFA, U SOWFA 2R Nu , and the flow field predicted by FLORIS, U FLORIS 2R Nu , as here, the U-vectors are populated by taking N u samples from the Furthermore, the weighing terms are chosen as w 3D i ¼ 1, respectively, to emphasize a good calibration in the flow field at 5D and 7D downstream, as turbines are often sited at this distance. Table 2 shows the optimized model parameters U + and the lower and upper optimization constraints.

Model validation
The calibrated surrogate model is validated using a different, unused dataset. The optimal parameter set U + is compared to three simulations of case B (Table 1) and a three-turbine wind farm spaced 5 D apart. In these simulations, the first two turbines are misaligned with the inflow at g 1;2 ¼ À20 deg, g 1;2 ¼ 0 deg, and g 1;2 ¼ 20 deg, respectively, with g 3 ¼ 0 deg for all three cases. This layout, inflow and operating conditions are chosen for a number of reasons. Firstly, the second turbine is set up to experience a slower, more turbulent inflow than the upstream turbine, effectively testing the wake model for inflow conditions it was not tuned for. Secondly, the third turbine operates in partially waked inflow, which is a common condition often causing significant model discrepancies in surrogate models [30]. Thirdly, the upstream two turbines are purposely yawed in either direction to assess the model's validity under realistic wake steering. Fig. 4 shows the absolute error between the hub-height flow field from SOWFA and as predicted by FLORIS for one validation case. This figure clearly shows that most errors are in the near-wake region, which are not of interest for wind farm control. Generally, the far-wake regions and the flow in front of downstream turbines are well predicted, which should in turn lead to accurate predictions of the energy yield.
Furthermore, Fig. 5 shows the cross-sectional wake profile at the turbine hub height at several positions downstream, x ¼ 2:2 D, x ¼ 7:8 D and x ¼ 12:9 D. Generally, the conclusions drawn from Fig. 4 are confirmed. Additionally, this figure clearly shows an improvement of the parameter set U + over the default parameter choice U 0 .
In conclusion, a good match is found between FLORIS with U + and the time-averaged results from SOWFA for unseen data with multiple turbines and more complicated wake interaction. This   Table 1) to guarantee a better match in power capture due to a yaw misalignment. Interesting to note is that, since FLORIS is now tuned to time-averaged SOWFA data, FLORIS implicitly includes the time-averaged impact of wake meandering on the flow and on the power production of turbines. analysis brings sufficient confidence in the surrogate model for it to be used in controller synthesis.

Introducing a wake recovery factor
While FLORIS has often shown a good match with high-fidelity data (e.g. Ref. [7,23], and experimental field data [31], the amount of wake recovery in FLORIS is described by a single input variable, being the freestream turbulence intensity I ∞ . However, simulations show that the model accuracy of FLORIS can improve by assigning a turbulence intensity different from the true physical value e leading to a better prediction of the flow field and the turbine power signals. Therefore, the turbulence intensity I ∞ is hereafter redefined as the wake recovery factor z. This parameter can be interpreted as a proxy for the amount of wake recovery, with z ¼ 0:0 corresponding to a situation without wake recovery, and z ¼ 1:0 corresponding to a situation in which waked flow instantly recovers. Section 4.1 will present how the wind farm controller calculates z using measurements in the wind farm.

Controller synthesis
The surrogate model of Section 3 is used to design a closed-loop wind farm controller. The wind farm studied in this article is a virtual offshore wind farm with six DTU 10 MW turbines [24] spaced at 5 D Â 3 D as shown in Fig. 6. The model adaptation algorithm is described in Section 4.1. The control setpoint optimization algorithm is described in Section 4.2. An overview of the controller is given in Section 4.3.

Real-time model adaptation
Performance of the controller is highly dependent on the assumed wind direction, wind speed and the amount of wake recovery inside the surrogate model. As not all of these variables are measured accurately in the farm, a wind-farm-wide estimation must be made before the control setpoints are optimized.
In previous work [23], the wind direction was estimated using the approach of Bertel e et al. [32], assuming blade load measurements and using BEM theory to derive the turbine inflow conditions. However, blade load sensors are typically not available in commercial wind turbines. In this work, rather, a temporally and spatially averaged freestream wind speed, wind direction and wake recovery factor are estimated using the readily available generator power and wind direction measurements of each turbine. Thus, this control solution does not require additional sensors to be installed in the wind farm. Moreover, previous work did not consider the (lack of) observability of the ambient conditions for particular situations. The observability measure presented in Doekemeijer and van Wingerden [18] is now included in the algorithm to decide which parameters can be estimated from the measurements available. The complete estimation algorithm follows a sequential approach: 1. The freestream wind direction 4 is estimated by turbine-and time-averaging the local turbines' estimates of the wind direction. In commercial turbines, such estimators readily include low-pass filtering, bias and drift correction. For simplicity, the wind direction measurements are idealized and taken as the wind direction setpoints assigned to SOWFA in this work. To increase realism, these measurements are disturbed by artificial Gaussian noise representing measurement noise. Further, the turbine yaw angles g in FLORIS are based on the nacelle orientation measurement averaged over a set time horizon. 2. The freestream wind speed is estimated from the upstream turbines. The set containing the indices of upstream turbines is denoted by U , with N U the number of upstream turbines. Mathematically, we solve where P i and g i are the 1-min-averaged measured power capture and yaw angle of turbine i, respectively, and b P i is the power capture predicted by FLORIS.
3. The wake recovery factor is estimated using a 5-min-average of the turbine power measurements, as with N T being the number of turbines, P and g are vectors of length N T containing the 5-min-averaged measured power signals and yaw angles, respectively, and b P a vector of length N T with the estimated power signal of each turbine according to FLORIS. Note that z is estimated using 5-min averages rather than 1-min averages to reduce variance and because z inherently varies much slower with time than the other variables. It is important to Fig. 5. The wake profile at hub height for different locations downstream. An improvement is seen for the optimized set of parameters, U + , with the default parameters from the literature, U 0 [11,28,29]. Note that the wind speed outside of the wake appears higher in SOWFA. This is due to non-homogeneous effects in the turbulent inflow modeled in SOWFA. mention that z is only estimated when there is sufficient information in the measurements to do so. This relates to the observability O of the situation. A more elaborate analysis concerning observability is performed in Doekemeijer and van Wingerden [18].
The degree of observability O for the various wind directions of the 6-turbine farm is shown in Fig. 7. The top colormap shows to what extend we can reconstruct z from the measurements available in a steady-state situation. A value of O ¼ 0 implies that it can in no way be derived from the measurements, while a value of O ¼ 1 refers to the best-estimable situation.
The lower bar in Fig. 7 saturates the observability to values of 0 and 1, with a threshold of 0.25 found empirically. In the farm control solution, if the observability over the past 400 s has been positive (O ! 0:25) for at least 80% of the time (black zones), 2 and the ambient conditions and control settings have not changed significantly in the last 400 s (i.e., a steady-state situation has arisen), then the estimate for z is updated. If not, then the wake recovery factor z is assumed to be equal to the last estimated value.
It is confirmed by simulation that the observability does not significantly vary over z and U ∞ .

Real-time control setpoint optimization
After model adaptation, the turbine yaw angles are optimized in a robust manner following Rott et al. [16] for maximum steadystate wind farm power production assuming a standard deviation on the wind direction of 2:5 + in accordance to simulation data, as 3 This optimization now contains E denoting the expected value, since r is a Gaussian probability distribution of the wind direction with mean 4 and a standard deviation of 2:5 + . The optimal yaw setpoints are collected in a look-up table (LUT). Following this optimization, FLORIS assigns strong jumps in the yaw angle for small changes in 4, U ∞ and z as to be optimal. These angles are therefore smoothened in post-processing using a 2D Gaussian distribution along z and 4 with standard deviations of 0.04 and 3 + .
Note that the amount of smoothing necessary has a strong correlation with the variability of the ambient conditions. A more elaborate study would be necessary to determine the degree of smoothing that yields the best behavior. The smoothened yaw setpoints for the 6-turbine case with a wind speed of U ∞ ¼ 8 m/s and a low wake recovery factor of z ¼ 0:07 are shown in Fig. 8. These setpoints are largely insensitive to the wind speed in region 2 operation [33]. The wind direction in Fig. 8 is plotted along the x-axis, where 0 + implies wind flowing from west to east, and 90 + implies wind flowing from south to north. In the 6-turbine layout, this means that turbine 1 is always upstream, and turbine 6 is always downstream. Hence, turbine 1 experiences a lot of yaw misalignment, while turbine 6 remains aligned over the entire wind range. It should be noted that, as z increases, wake losses diminish, and the optimal yaw misalignment angles decrease. Essentially, there is less to be gained at downstream turbines.

An overview
The closed-loop control algorithm is synthesized by combining the estimator from Section 4.1 with the optimizer from Section 4.2.   2 The averaging time and the percentage thresholds here are found empirically. 3 This cost function could straightforwardly be extended to include structural loads by, for example, penalizing the turbulence intensity in front of each turbine's rotor plane.
A pseudo-code is given in Algorithm 1, where the control setpoints are updated every 20 s. Algorithm 1. Pseudo-code of the closed-loop control algorithm.

Simulation results
In this section, the controller synthesized in Section 4 is tested in a high-fidelity simulation. The wind farm controller is subjected to a stress test in which the inflow varies strongly over time, being the SOWFA simulation of case D in Table 1. In Section 5.1, the estimation submodule is assessed. Then, in Section 5.2, the optimization submodule of the controller is evaluated by looking at the energy yield of the turbines. Finally, in Section 5.3, the yaw actuator duty cycle and the structural loads on the turbine blades are investigated.

Model adaptation performance
The first component of the closed-loop controller synthesized in Section 4 is the model adaptation block, as shown in Fig. 1. In this simulation, the measurements fed to the wind farm controller are the instantaneous turbine power and wind direction measurements, of which the latter are artificially perturbed by Gaussian noise with a standard deviation of 2 + to mimic measurement noise. The 6-turbine wind farm experiences a wind field of which the inflow direction and wind speed change often over time, as shown in Fig. 9. In this figure, the solid black lines show the true values from SOWFA, while the solid colored lines show the estimated values according to the controller. The wake recovery factor z is initialized at a high value of 0.40 to enforce conservatism in the assigned control setpoints (small yaw misalignment angles) until there is sufficient information to derive a correct estimate for z from the measurements.
Taking a closer look at Fig. 9, it becomes clear that both the wind direction and the wind speed are estimated accurately and consistently. Note that wind direction is by far the most important variable to estimate, as the optimal yaw setpoints are most sensitive to this variable, and less sensitive to the wind speed and wake recovery factor [33]. Note that the estimate for the wake recovery factor z is only updated when the situation is sufficiently observable, as defined in Section 4.1. The fluctuations in wind direction often lead to situations with little to no wake interaction, yielding a low observability, and hence z is constant until about 1500 s into the simulation. Then, it is consistently estimated to be around 0:17 À 0:31. In FLORIS, a high wake recovery factor leads it to predict high wake recovery, which then leads to small yaw misalignment setpoints. A low wake recovery factor leads to large wake losses, and therefore higher yaw misalignment setpoints.
The 5-min-averaged flow field and turbine power signals for SOWFA and FLORIS are shown in Fig. 10. One can see that the model shows a mediocre match in the flow fields at t ¼ 900 s. Namely, the freestream wind speed and wind direction are in the right ballpark, but the prediction lacks in the far wake and in the turbine power signals. This is not in the least due to the conservative initial value for z. The model prediction improves at 1800 s and onward due to the adaptation of z. Furthermore, most of the model errors seem to originate behind the second row of turbines. One possible explanation for this is the lack of secondary wake steering effects in FLORIS, as discussed in Martínez-Tossas et al. [30]. Moreover, as the turbine power signals are used for model adaptation, it is no surprise that the turbine power signals match very well between SOWFA and FLORIS. An interesting difference between SOWFA and FLORIS is that FLORIS predicts many situations of symmetry, in which turbines are predicted to capture an equal amount of power. In SOWFA, however, the turbulent inflow unavoidably gives rise to differences in power capture between turbines.

Setpoint optimization performance
With the ambient conditions estimated, the second component of the closed-loop controller is setpoint optimization (recall Fig. 1). In this work, that consists of the optimization of the turbine yaw misalignment angles to maximize the power extraction of the wind farm.
In Fig. 11, the relative power capture of each turbine normalized to the greedy-controlled scenario is shown, averaged over the 5000 s of simulation. Since the wind changes from an inflow from west to east to an inflow from south to north and anywhere in between, turbines 1, 2, 3 and 5 are most often upstream, while turbines 4 and 6 are mostly downstream. This explains the energy loss in turbines 1, 3 and 5, and it also explains the energy gain in turbines 4 and 6. Over the total 5000 s of simulation, the energy yield is 1:4% higher with the closed-loop controller compared to the baseline case.
Note that an improvement in energy yield of 1:4% is lower than most values cited in the literature [2], as those studies typically only focus exclusively on situations with significant wake losses. In this simulation, at several time instants, there is little to no wake interaction. This is demonstrated in Fig. 12, showing the relative gain in wind-farm-wide energy yield over time. In this figure, it is seen that the increase in instantaneous wind-farm-wide power yield varies between À4% and þ 11%, depending on the inflow conditions. For the wake-loss-heavy scenario in the time window of 1800e2300 s, a total increase in energy yield of 7:3% is noted. Similarly, for the second wake-loss-heavy scenario in the time window of 4000e4500 s, an increase in energy of 6:0% is noted. Moreover, energy losses appear for short periods of time throughout the simulation, mostly prevailing an increase in energy yield due to yaw steering. This is because the benefit of misaligning upstream turbines is not noticed until the flow has propagated to the downstream turbines, which takes approximately 100 s in these situations. The corresponding yaw angles for turbines 1, 2 and 6 are also displayed in the figure, showing misalignment angles of up to 20 . As the wake of turbine 6 never impinges another turbine, its yaw angle remains zero throughout the simulation. In total, a gain in power production of 1:4% over the 5000 s of simulation despite the large discrepancies between FLORIS and SOWFA is still a very promising (and more realistic) estimate of the true potential of wake steering.
A final remark is that FLORIS somewhat underpredicts the amount of wake displacement achieved due to a yaw misalignment, as seen in Fig. 10. Therefore, the proposed closed-loop control solution is somewhat conservative, assigning relatively small yaw angle setpoints to the turbines. More energy than presented currently may be harvested by refining the FLORIS model for wake steering.

A deeper look into the yaw actuator duty cycle and structural loads
Wake steering shows to be very promising in increasing the energy yield of a wind farm. In contrast to the energy gains, the effects of wake steering on the actuator duty cycle and the structural loads on the turbines remain unclear. This subsection addresses these two topics.

Yaw actuator duty cycle under wake steering
The change in the yaw actuator duty cycle (yaw travel) of each turbine is shown in Fig. 13. From this figure, it is clear to see that wake steering has a noticeable influence on the yaw actuator duty cycle in this simulation. Specifically, for the upstream turbines, an increase in yaw travel of up to 36% is seen. Furthermore, even for the second row of turbines, an increase in yaw travel of 8 À 13% is  seen. Also, turbine 6 has no additional yaw travel as it always operates most downstream of the wind farm for the simulated wind conditions. The amount of yaw travel relates back to Fig. 8, in which relatively large gradients can be seen for small changes in the wind direction. One may reduce the yaw travel by further smoothing the optimized yaw angles from Fig. 8, but this may go at the loss of energy yield. In a practical controller implementation, a trade-off must be made according to the yaw actuator limits, the wind farm layout, and the wind rose of the wind farm.

Fatigue loads on the blade roots
The bending moments around the blade root are calculated for each blade. The damage-equivalent loads (DELs) of the out-of-plane bending moments at the blade roots are then calculated following the Palgrem Miner's rule [34], as In this equation, m is the inverse of the material W€ ohler slope and N ref is a reference number for the total amount of cycles taken to be 1 here, S i is the mean load range value for a particular bin, and N i is the number of occurences within the bin. The load cycles are calculated following the popular rainflow counting method [35]. Note that the blades of the DTU 10 MW turbine are manufactured with a mix of glass fiber, carbon fiber, and balsa [24]. Hence, the DEL values are evaluated with both m ¼ 10 (glass fiber) and with m ¼ 14 (carbon fiber), and the highest value of the two will be shown.
The DELs normalized by the values of turbine 1 under greedy control are plotted in Fig. 14. The loads between the three blades are very similar, and hence the blade-averaged DELs are shown. From this figure, it is seen that the DELs mostly decrease for turbines 1e3 with the closed-loop controller compared to baseline operation, and increase for turbines 4e6. For turbines 1e3, the decrease in DELs is expected to be due to the reduction in effective wind speed due to the applied yaw misalignments. Turbines 4e6 operate in waked flow more often, and the increase in DELs is expected to be due to the increase in the rotor-effective turbulence intensity and wind speed.
However, generally, wake steering seems to have a relatively small effect on the blade root out-of-plane bending moments in this simulation study. This may be explained by literature that suggests that the blade loads can both increase and reduce as a result of yaw misalignment, depending on the yaw direction and the amplitude [36]. Moreover, this publication also indicates that there is a delicate balance between the change in loads due to yawing a turbine, and due to the change in the wake profile as a result of the yawing of an upstream turbine. Though, simulations with a higher-fidelity aero-elastic models and physical experiments are necessary to further solidify such statements.

Conclusions
In this article, a novel, closed-loop wind farm controller was proposed. This control solution relies on the popular, steady-state, computationally efficient FLORIS surrogate model of the wind farm. The controller consists of two parts. Firstly, FLORIS is used to estimate the freestream wind direction, wind speed, and the wake recovery factor, supported by a theoretical measure of observability to prevent the estimation of quantities about which no information is available. Secondly, FLORIS is leveraged to optimize the turbine yaw setpoints for energy yield maximization.
This closed-loop and model-based control solution was tested in a high-fidelity simulation subjected to a time-varying inflow, being the first of its kind in the literature. The wind direction and wind speed in the simulation contain strong changes to stress-test the controller. Compared to baseline operation, a total time-averaged gain in energy yield of 1:4% was found for a virtual 6-turbine offshore wind farm with 10 MW turbines. Moreover, for particular time windows, gains in the energy yield of up to 11% were Fig. 11. Change in turbine electrical power capture compared to the case in which turbines are controlled in the traditional, greedy manner. The values here are averaged over the 5000 s of simulation. The turbines that are most often upstream (1, 3 and 5) experience most losses, as they are most often misaligned with the inflow. The largest gains are attained by the turbines that operate most often in a waked inflow (2, 4 and 6). On average, wake steering led to an increase in the total wind farm energy yield of 1:4% in the 5000 s of simulation. Fig. 12. The top plot shows the wind farm power capture over time. While the timeaveraged change in power production is 1:4% (Fig. 11), the instantaneous change in power capture varies between À4% and þ11% throughout the simulation. Furthermore, the yaw angles of a subset of turbines over time are show in the bottom plot. Turbine 1 experiences misalignments of À11 + to þ20 + as it is the most upstream turbine, whereas turbine 6 maintains zero misalignment, always being the most downstream machine throughout the simulation. Fig. 13. Total distance of yaw travel throughout the 5000 s simulation compared to the greedy-operated case. This figure shows the additional load put on the yaw actuator to track the assigned yaw setpoints. Turbines 1e5 are all misaligned at some point in time, thereby increasing the yaw travel compared to greedy control. Since turbine 6 is never misaligned, it has the same yaw travel as the baseline simulation. noted, agreeing well with studies in the literature [2]. Furthermore, from an actuator duty cycle perspective, the yaw travel of the turbines increased by up to 36%. Additionally, the damage-equivalent loads of the blade root out-of-plane bending moments did not change significantly compared to the baseline controller.
The results presented in this article highlight the potential of the proposed controller, even when subjected to time-varying inflow conditions, addressing an important phenomenon in real wind farms. This solidifies the proposed control solution as the first realistic, closed-loop wind farm control solution for yaw-based wake steering.
A number of recommendations can be made for future research. Firstly, the proposed control solution was stress-tested in this article. To get a realistic idea of the effect of wake steering on the annual energy production, one would have to perform experiments with realistic wind profiles, e.g., generated from real measurement data. This is forthcoming in Van der Hoek et al. [37]. Moreover, the simulations would benefit from a larger simulation domain, even though this increases computational cost. Secondly, the optimal update frequency of the yaw setpoints was not considered in this article and, at large, has been addressed insufficiently in the literature [33]. Thirdly, continued work on surrogate modeling (e.g. Ref. [30,38], should further improve wind farm controller performance, going hand-in-hand with developments in estimation (e.g. Refs. [39], and optimization algorithms (e.g., Ref. [14]. Important topics for surrogate modeling include wake propagation, timevarying inflow, spatially varying inflow, atmospheric stability effects, and local variations in wind characteristics due to, e.g., terrain effects. Finally, while considered a high-fidelity testing environment, SOWFA remains a simulation model, and field experiments are essential to further increase confidence in the proposed algorithm and, at large, wake steering for power maximization in wind farms.