<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Energy Res.</journal-id>
<journal-title>Frontiers in Energy Research</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Energy Res.</abbrev-journal-title>
<issn pub-type="epub">2296-598X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">884068</article-id>
<article-id pub-id-type="doi">10.3389/fenrg.2022.884068</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Energy Research</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>A Meandering-Capturing Wake Model Coupled to Rotor-Based Flow-Sensing for Operational Wind Farm Flow Prediction</article-title>
<alt-title alt-title-type="left-running-head">Lejeune et&#xa0;al.</alt-title>
<alt-title alt-title-type="right-running-head">An Operational Dynamic Wake Model</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lejeune</surname>
<given-names>Maxime</given-names>
</name>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/1552692/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Moens</surname>
<given-names>Maud</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1477012/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Chatelain</surname>
<given-names>Philippe</given-names>
</name>
<uri xlink:href="https://loop.frontiersin.org/people/1695630/overview"/>
</contrib>
</contrib-group>
<aff>
<institution>Thermodynamics and Fluid Mechanics</institution>, <institution>Institute of Mechanics, Materials and Civil Engineering</institution>, <institution>Universit&#xe9; catholique de Louvain</institution>, <addr-line>Louvain</addr-line>, <country>Belgium</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1364742/overview">Stefan Ivanell</ext-link>, Uppsala University, Sweden</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1704457/overview">Mahdi Abkar</ext-link>, Aarhus University, Denmark</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1019911/overview">Davide Astolfi</ext-link>, University of Perugia, Italy</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Maxime Lejeune, <email>maxime.lejeune@uclouvain.be</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Wind Energy, a section of the journal Frontiers in Energy Research</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>08</day>
<month>07</month>
<year>2022</year>
</pub-date>
<pub-date pub-type="collection">
<year>2022</year>
</pub-date>
<volume>10</volume>
<elocation-id>884068</elocation-id>
<history>
<date date-type="received">
<day>25</day>
<month>02</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>31</day>
<month>05</month>
<year>2022</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2022 Lejeune, Moens and Chatelain.</copyright-statement>
<copyright-year>2022</copyright-year>
<copyright-holder>Lejeune, Moens and Chatelain</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>The development of new wake models is currently one of the key approaches envisioned to further improve the levelized cost of energy of wind power. While the wind energy literature abounds with operational wake models capable of predicting in fast-time the behavior of a wind turbine wake based on the measurements available (e.g., SCADA), only few account for dynamic wake effects. The present work capitalizes on the success gathered by the Dynamic Wake Meandering formulation and introduces a new operational dynamic wake modeling framework aimed at capturing the wake dynamic signature at a low computational cost while relying only on information gathered at the wind turbine location. In order to do so, the framework brings together flow sensing and Lagrangian flow modeling into a unified framework. The features of the inflow are first inferred from the turbine loads and operating settings: a Kalman filter coupled to a Blade Element Momentum theory solver is used to determine the rotor-normal flow velocity while a Multi-Layer Perceptron trained on high-fidelity numerical data estimates of the transverse wind velocity component. The information recovered is in turn fed to a Lagrangian flow model as a source condition and is propagated in a physics-informed fashion across the domain. The ensuing framework is presented and then deployed within a numerical wind farm where its performances are assessed. The computational affordability of the proposed model is first confirmed: 7 &#xd7;&#xa0;10<sup>&#x2212;4</sup> wall-clock seconds per simulation second are required to simulate a small 12 turbines wind farm. Large Eddy Simulations of wind farm using advanced actuator disks are then used as a baseline and a strong focus is laid on the study of the wake meandering features. Comparison against the Large Eddy Simulation baseline reveals that the proposed model achieves good estimates of the flow state in both low and high Turbulence Intensity configurations. The model distinctly provides additional insight into the wake physics when compared to the traditional steady state approach: the wake recovery is consistently accounted for and the wake meandering signature is captured as far as 12<italic>D</italic> downstream with a correlation score ranging from 0.50 to 0.85.</p>
</abstract>
<kwd-group>
<kwd>wake model</kwd>
<kwd>wake meandering</kwd>
<kwd>flow sensing</kwd>
<kwd>Lagrangian flow model</kwd>
<kwd>multi-layer perceptron (MLP)</kwd>
<kwd>particle</kwd>
</kwd-group>
<contract-sponsor id="cn001">European Research Council<named-content content-type="fundref-id">10.13039/501100000781</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">Gouvernement Wallon<named-content content-type="fundref-id">10.13039/100016132</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Wind turbine wakes are notoriously hard to study owing the inherent complexity of the interactions between wind turbines and the Atmospheric Boundary Layer (ABL) physics. Yet, enhancing our understanding and modeling capabilities of wind turbine wakes is paramount to improving the performances of existing wind power plants controllers. Indeed, wakes induce strong delayed interactions between neighboring turbines which degrade the performances of the wind farm taken as a whole. Designing new global wind power plant control schemes accounting for wake effects is thus expected to have a strong impact on the overall power production and life time expectancy of wind farms and hence on the levelized cost of energy of wind energy globally.</p>
<p>To this end, a large number of control schemes has been proposed in the literature. They fall within two categories: model-free or model-based controllers. Model-based control (e.g., <xref ref-type="bibr" rid="B19">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2019</xref>) aims at selecting the optimal control action based on the information provided by an underlying simplified model of the wind farm dynamics which predicts the turbines-wakes interactions. Model-free control (e.g., <xref ref-type="bibr" rid="B42">Park and Law,&#xa0;2016</xref>), on the other hand, alleviates the need for wake understanding: the flow is essentially considered as a black box and the wind turbines select their control policy based on their observed states. However, this approach struggles with the extended convective time scales observed in wind farms which induce large delays between a control input change and its impact on downstream wind turbines (<xref ref-type="bibr" rid="B19">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2019</xref>). Model-based control schemes have thus been gaining a significant amount of traction recently.</p>
<p>Developing such a control scheme is however not straightforward. It requires an adequate level of understanding of the flow field at the scale of the wind farm as the accuracy of the underlying surrogate wake model always bounds the performances of the synthesized control scheme. Some key criteria should therefore be matched by the surrogate wake model in order to make it suitable for the control-based approach: it should be fast enough to be usable online and yet guarantee a sufficient degree of fidelity to reality. This latter criterion, along with the unsteady nature of wind wakes and their high sensitivity to the local wind characteristics, makes the development of accurate surrogate models one of the remaining pivotal challenges faced by the model-based strategy.</p>
<p>While significant insight into wind farm wake flows has been gained thanks to modern computer technology and high-fidelity numerical simulation techniques such as Large Eddy Simulation (LES), the porting of these approaches to real time control has been hindered by their prohibitive computational cost along with the uncertainty of real time conditions. In order to overcome this limitation, a number of medium- to low-fidelity wake models have been successively introduced in the literature. Low-fidelity wake models typically rely on a simplified description of the flow derived from the mass and/or momentum conservation equations. They most often provide a steady-state analytical description of the mean flow field and are thus computationally affordable. To this day, the wake model introduced by <xref ref-type="bibr" rid="B25">Jensen&#xa0;(1983)</xref> remains one of the most popular low-fidelity model examples. Other examples include the analytical Gaussian model proposed by <xref ref-type="bibr" rid="B2">Bastankhah and Port&#xe9;-Agel&#xa0;(2014)</xref> based on momentum conservation as well as its variants including near wake correction (<xref ref-type="bibr" rid="B9">Blondel&#xa0;et&#xa0;al.,&#xa0;2020</xref>; <xref ref-type="bibr" rid="B46">Schreiber&#xa0;et&#xa0;al.,&#xa0;2020</xref>). These models offer a great robustness at the cost of a low degree of accuracy. Furthermore, owing to their steady-state assumption, they are unable to capture some of the key features of wakes such as their meandering. They essentially consider the wake as static and wide and assimilate wake meandering to the wake expansion (<xref ref-type="bibr" rid="B47">Th&#xf8;gersen&#xa0;et&#xa0;al.,&#xa0;2017</xref>; <xref ref-type="bibr" rid="B12">Braunbehrens and Segalini,&#xa0;2019</xref>). This approximation works relatively well for slow wind farm control but leads to inconsistent results if finer time scales are considered. It further fails to correctly account for meandering-induced fatigue loads (<xref ref-type="bibr" rid="B44">Reinwardt&#xa0;et&#xa0;al.,&#xa0;2020</xref>). Medium-fidelity wake models aim to bridge the gap between the two ends of the model spectrum: they provide a dynamic reasonably-faithful description of the flow while remaining computationally tractable. The most common medium-fidelity wake model is the Dynamic Wake Model (DWM) introduced by <xref ref-type="bibr" rid="B30">Larsen&#xa0;et&#xa0;al.&#xa0;(2007)</xref> and its FAST-Farm implementation by <xref ref-type="bibr" rid="B27">Jonkman and Shaler&#xa0;(2021)</xref> though other models such as the dynamic control-oriented version of Floris proposed (<xref ref-type="bibr" rid="B5">Becker&#xa0;et&#xa0;al.,&#xa0;2022</xref>) also fall within that category.</p>
<p>The framework presented here aims at developing an online physics-based medium-fidelity model able to capture the main dynamic features of the wake. As this model is intended for operational use (i.e., real time control of wind farm), it should only rely on information that is available to the turbine: the features of the incoming flow field can not be determined <italic>a priori</italic> but should be inferred from the measurements available. This implies that both the incoming turbulent flow field and the wake shed by the wind turbine should be reconstructed from the information gathered at the wind turbine location. Furthermore, the flow reconstruction procedure should run in fast time in order to be deployable in the context of model-based control.</p>
<p>This work extends some previous works toward the formulation of an online operational wake model (<xref ref-type="bibr" rid="B34">Lejeune et&#xa0;al., 2020</xref>). It brings <italic>flow sensing</italic> and <italic>Lagrangian flow modeling</italic> together into a unified framework where information gathered at the wind turbine location is propagated across the wind farm thereby reconstructing an estimated snapshot of the flow state at a low computational cost. Consistent with the <italic>turbine as a sensor</italic> approach (<xref ref-type="bibr" rid="B11">Bottasso&#xa0;et&#xa0;al.,&#xa0;2018</xref>; <xref ref-type="bibr" rid="B7">Bertel&#xe8; and Bottasso,&#xa0;2020</xref>), we first deploy a flow sensing module that estimates the inflow features from the wind measurements. The estimation of the rotor-normal component is handled through a Kalman filter coupled with a Blade Element Momentum (BEM) code (<xref ref-type="bibr" rid="B11">Bottasso&#xa0;et&#xa0;al.,&#xa0;2018</xref>) while the transverse velocity component is computed using an <italic>Artificial Neural Network</italic> (ANN) regressor trained on high-fidelity LES data. Based on the inflow features acquired through the flow sensing module, the <italic>Lagrangian flow model</italic> then reconstructs the farm flow field in terms of two coupled fields: a <italic>freestream velocity field</italic> and a <italic>wake velocity deficit</italic> one. Both fields are modeled as series of information-carrying particles propagated across the wind farm in a physics-informed fashion thereby capturing the dynamic wake signature at a low computational cost. The resulting framework captures the relevant dynamic features of the wake (i.e., wake meandering and wake convection) as well as from the freestream field (i.e., inflow heterogeneities). The implemented information propagation procedure, in a fashion akin to a Particle Filter (<xref ref-type="bibr" rid="B41">Notter&#xa0;et&#xa0;al.,&#xa0;2020</xref>; <xref ref-type="bibr" rid="B32">Le&#xa0;Provost and Eldredge,&#xa0;2021</xref>), enables the prediction of the main flow features at a downstream turbine at a time horizon set by the turbine separation. This should, in turn, allow to select the optimal control policy for the impinged rotor. Furthermore, as discrepancies between the estimated flow state and its real counterpart are inevitable, strong focus is laid on providing a concise description of the flow based on few tuning parameters in order to make the model usable within a state-correction framework (<xref ref-type="bibr" rid="B19">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2019</xref>; <xref ref-type="bibr" rid="B20">Dong&#xa0;et&#xa0;al.,&#xa0;2021</xref>).</p>
<p>We leverage LESs of wind farms to support the development, tuning and testing of this operational model. Specifically, the LES flow solver (<xref ref-type="sec" rid="s2-1">Section&#xa0;2.1</xref>) is used to aggregate a database of high-fidelity results that includes several wind farm layouts and inflow conditions. These data sets then serve as reference for 1) the calibration of the flow model (<xref ref-type="sec" rid="s2-2">Section&#xa0;2.2</xref>), 2) training the neural network based flow sensing module (<xref ref-type="sec" rid="s2-2-1">Section&#xa0;2.2.1</xref>) and 3) assessing the performances of the whole operational model (<xref ref-type="sec" rid="s3">Section&#xa0;3</xref>). The wake behind isolated wind turbines is first investigated (<xref ref-type="sec" rid="s2-3-2-1">Section&#xa0;3.2.1</xref>): the LES are compared to the Lagrangian flow model prediction in terms of their meandering signature and speed deficit characteristics. These results are finally confirmed by the analysis of a small wind farm (<xref ref-type="sec" rid="s2-3-2-2">Section&#xa0;3.2.2</xref>) consisting of 12 turbines operating under strong wake effects.</p>
</sec>
<sec id="s2">
<title>2 Materials and Methods</title>
<sec id="s2-1">
<title>2.1 Reference High-Fidelity Simulation</title>
<p>As mentioned above, the present work will rely exclusively on numerical simulations to develop the wake model. This section succinctly highlights the main features of the LES simulation framework.</p>
<p>The flow solver is an in-house fourth-order finite difference LES solver coupled with an advanced actuator disk featuring improved tip-loss correction (<xref ref-type="bibr" rid="B38">Moens&#xa0;et&#xa0;al.,&#xa0;2018</xref>). The wind turbine model is the NREL 5MW (<xref ref-type="bibr" rid="B26">Jonkman&#xa0;et&#xa0;al.,&#xa0;2009</xref>), implemented with its torque and collective blade pitch controllers. Accordingly, the rotor diameter, <italic>D</italic>, is set to <italic>D</italic> &#x3d; 126 <italic>m</italic>. The wind turbine operating settings are directly extracted from the simulation data while the blade loads are obtained by projecting the total disk loads over virtual wind turbine blades (<xref ref-type="bibr" rid="B37">Moens&#xa0;et&#xa0;al.,&#xa0;2022</xref>).</p>
<p>The wind turbines are arranged in farm configurations within the numerical simulation domain whose physical dimensions are 32<italic>D</italic> &#xd7;&#xa0;8<italic>D</italic> &#xd7;&#xa0;16<italic>D</italic> for the streamwise <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, vertical <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and transverse <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> directions respectively. For this work, the resolution is set to 16 points per rotor diameter in the horizontal directions. This results from a compromise between efficiency and accuracy in the representation of the wind turbine behavior and wake phenomena. The mesh is refined in the <italic>y</italic>-direction, from the ground to a height slightly above the highest point of the disk, in order to have a few points between the lowest disk position and the height where the velocity is sampled for the wall modelling procedure. The final mesh is a <italic>N</italic>
<sub>
<italic>x</italic>
</sub> &#xd7;&#xa0;<italic>N</italic>
<sub>
<italic>y</italic>
</sub> &#xd7;&#xa0;<italic>N</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;512 &#xd7;&#xa0;128 &#xd7;&#xa0;256 grid that is uniform in the wall-parallel directions (&#x394;<italic>x</italic> &#x3d;&#xa0;&#x394;<italic>z</italic> &#x3d;&#xa0;7.875&#xa0;m) and that is partially stretched in the vertical direction. This stretching leads to a uniform vertical grid below 200&#xa0;m, with &#x394;<italic>y</italic>
<sub>
<italic>min</italic>
</sub> &#x3d;&#xa0;3.975&#xa0;m. Above that, &#x394;<italic>y</italic> increases, to reach &#x394;<italic>y</italic>
<sub>
<italic>max</italic>
</sub> &#x2243;&#xa0;10&#xa0;m at the top of the domain.</p>
<p>A rough wall law is enforced on the bottom boundary along with a no-through condition on the top boundary. The transverse direction is considered periodic while a inflow-outflow condition is applied in the streamwise direction: a convective boundary condition is used at the outflow and a concurrent precursor simulation with no wind turbine provides the inflow condition.</p>
<p>The parameters of this precursor simulation, namely its roughness length, <italic>y</italic>
<sub>0</sub> and forcing pressure gradient, <inline-formula id="inf4">
<mml:math id="m4">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, determine the features of the inflow. The parameters of the different simulation precursors are summed up in <xref ref-type="table" rid="T1">Table&#xa0;1</xref>. Each set of parameters is selected in order to obtain the desired mean wind velocity, <italic>U</italic>
<sub>ABL</sub>, and turbulence intensity, <italic>TI</italic>
<sub>ABL</sub>, at the hub location.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>ABL configuration used.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left">
<italic>U</italic>
<sub>
<italic>ABL</italic>
</sub> [ms<sup>&#x2212;1</sup>]</th>
<th align="center">
<italic>TI</italic>
<sub>
<italic>ABL</italic>
</sub> [%]</th>
<th align="center">
<italic>y</italic>
<sub>
<bold>0</bold>
</sub> [m]</th>
<th align="center">
<inline-formula id="inf5">
<mml:math id="m5">
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3c1;</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x2202;</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x2202;</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mspace width="0.3333em" class="nbsp"/>
</mml:math>
</inline-formula>[ms<sup>&#x2212;2</sup>]</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">8</td>
<td align="char" char=".">6</td>
<td align="center">9.63 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>4</sup>
</td>
<td align="center">7.84 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>4</sup>
</td>
</tr>
<tr>
<td align="left">8</td>
<td align="char" char=".">10</td>
<td align="center">9.36 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>2</sup>
</td>
<td align="center">2.18 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>3</sup>
</td>
</tr>
<tr>
<td align="left">15</td>
<td align="char" char=".">10</td>
<td align="center">9.36 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>2</sup>
</td>
<td align="center">7.65 &#xd7;&#xa0;10<sup>&#x2013;</sup>
<sup>3</sup>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>Finally, the wake centroid position is computed using a wake tracking algorithm developed by <xref ref-type="bibr" rid="B16">Coudou&#xa0;(2021)</xref>. This algorithm evaluates the position of the wake centroid by finding the minimum of a convolution product between a masking function and the available flow power density retrieved from the LES velocity field. In this context, a 3D Gaussian masking function allowing a smooth wake centerline tracking, <italic>f</italic>
<sub>
<italic>G</italic>
</sub>, is applied:<disp-formula id="e1">
<mml:math id="m6">
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>G</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(1)</label>
</disp-formula>with <italic>&#x3c3;</italic>
<sub>
<italic>x</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>y</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/2, values that consistent with the scales targeted by the wake model. Though this broad mask parametrization partially filters out the influence of the low speed external eddies on the wake centerline computation, it sometimes also leads to an unrealistic smoothing of the latter. A narrower mask, i.e., <italic>&#x3c3;</italic>
<sub>
<italic>x</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>y</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/4 and <italic>&#x3c3;</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/2, is therefore also used to provide a sensitivity information in the form of a wake centerline position envelope. A representative numerical setup is illustrated in <xref ref-type="fig" rid="F1">Figure&#xa0;1</xref> by means of an instantaneous velocity field together with the extracted wake centerlines.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Streamwise velocity field at hub height extracted from the reference LES for for <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup>; position of the wake center as computed by the wake tracking algorithm (continuous black line).</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g001.tif"/>
</fig>
</sec>
<sec id="s2-2">
<title>2.2 Flow Sensing</title>
<p>The first step toward developing an online wake model deployable in the context of wind farm control is to accurately estimate the inflow features from the wind turbine measurements. However, as typical hub-mounted sensors (e.g., wind vane or anemometers) suffer from a number of disturbances ranging from the presence of the nacelle or blades to the wake-induced flow deformations, their measurements are often considered unreliable (<xref ref-type="bibr" rid="B7">Bertel&#xe8; and Bottasso,&#xa0;2020</xref>). The <italic>turbine as a sensors</italic> approach is thus chosen in order to provide robust estimates of the inflow velocity field, <inline-formula id="inf6">
<mml:math id="m7">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The remainder of this section presents these rotor-normal (<xref ref-type="sec" rid="s2-2-1">Section&#xa0;2.2.1</xref>) and transverse (<xref ref-type="sec" rid="s2-2-2">Section&#xa0;2.2.2</xref>) velocity estimators that infer the wind characteristics from the specific turbine responses they trigger.</p>
<sec id="s2-2-1">
<title>2.2.1 Rotor-Normal Velocity Component</title>
<p>Following <xref ref-type="bibr" rid="B11">Bottasso&#xa0;et&#xa0;al.&#xa0;(2018)</xref>, a Kalman filter coupled with a BEM code is first implemented in order to estimate the inflow features. This method essentially considers the wind turbine blades as moving sensors whose out-of-plane bending loads, <italic>m</italic>
<sub>
<italic>f</italic>
</sub>, are strictly connected to the local wind speed at the blade position.</p>
<p>In order to retrieve an accurate local snapshot of the flow azimuthal features, the rotor is divided into <italic>N</italic>
<sub>
<italic>S</italic>
</sub> sectors over which the local sector effective rotor-normal velocities, <italic>u</italic>
<sub>
<italic>s</italic>
</sub>(<italic>t</italic>), are evaluated (<xref ref-type="bibr" rid="B11">Bottasso&#xa0;et&#xa0;al.,&#xa0;2018</xref>):<disp-formula id="e2">
<mml:math id="m8">
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msubsup>
<mml:mi>u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mtext>d</mml:mtext>
<mml:mi>&#x3b8;</mml:mi>
</mml:math>
<label>(2)</label>
</disp-formula>where <italic>&#x3b8;</italic> denotes the azimuthal coordinate and <italic>&#x3b8;</italic>
<sub>
<italic>s</italic>,0</sub> and <italic>&#x3b8;</italic>
<sub>
<italic>s</italic>,1</sub> are the sector <italic>s</italic> upper and lower bounds, respectively.</p>
<p>At every blade sweep, a Kalman filter computes the new sector effective wind speed estimation, <inline-formula id="inf7">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, from the measured bending loads averaged over the crossing time window. The resulting local wind speed estimations are, in turn, combined into <inline-formula id="inf8">
<mml:math id="m10">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">&#x3a3;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>/</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, the estimated rotor effective rotor-normal wind speed.</p>
<p>Finally, an estimation of the wind turbine thrust coefficient, <inline-formula id="inf9">
<mml:math id="m11">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, and flow turbulence intensity, <inline-formula id="inf10">
<mml:math id="m12">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> are recovered based on the estimated sectors effective rotor-normal velocities. The latter are eventually fed as inputs to the flow model and read:<disp-formula id="e3a">
<mml:math id="m13">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mspace width="0.17em"/>
<mml:mn>8</mml:mn>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>T</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
<mml:mi>&#x3c0;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(3a)</label>
</disp-formula>
<disp-formula id="e3b">
<mml:math id="m14">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:msqrt>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(3b)</label>
</disp-formula>with <italic>&#x3c1;</italic> the air density. The <inline-formula id="inf11">
<mml:math id="m15">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula> operator applied to a flow quantity <italic>&#x3d5;</italic> indicates its averaging over a prescribed time window.</p>
</sec>
<sec id="s2-2-2">
<title>2.2.2 Transverse Velocity Component</title>
<p>Extending the model presented in the previous paragraph to account for the effect of the transverse velocity component on the rotor dynamic is not trivial as it falls beyond the classical BEM theory assumptions. <xref ref-type="bibr" rid="B7">Bertel&#xe8; and Bottasso&#xa0;(2020)</xref> propose a similar wind turbine state estimator based on the loads harmonics. Even though their estimator leads to accurate instantaneous flow shear angles and rotor-averaged streamwise velocity, it is not able to capture the instantaneous fluctuations of the yaw angle. This difference in sensitivity between the streamwise and transverse velocity components is largely due to the difference in rotor aerodynamic response as demonstrated by <xref ref-type="bibr" rid="B6">Bertel&#xe8;&#xa0;et&#xa0;al.&#xa0;(2017)</xref> who analysed the airflow around a simplified wind turbine airfoil section. In light of this, we elect to base our transverse velocity regressor not upon a physics-based model (i.e., an underlying flow-rotor model), but rather upon an ANN trained on a high-fidelity data set.</p>
<p>The <italic>training</italic> of the transverse velocity regressor is thus formulated as a <italic>supervised-learning</italic> problem. Learning is performed by iteratively feeding the ANN labeled data of the operation settings of the turbine as well as with the transverse velocity directly retrieved from the LES thereby providing the algorithm with corrective information (<xref ref-type="bibr" rid="B13">Brunton&#xa0;et&#xa0;al.,&#xa0;2020</xref>). Once the ANN has been trained, it is tested against never-seen data for which it has no knowledge of the expected output. This section first explains the labeled data formatting step (<xref ref-type="sec" rid="s2-2-2-1">Section&#xa0;2.2.2.1</xref>) before moving on to the presentation of the structure of the ANN used and subsequent learning procedure (<xref ref-type="sec" rid="s2-2-2-2">Section&#xa0;2.2.2.2</xref>).</p>
<sec id="s2-2-2-1">
<title>2.2.2.1 Data Preparation</title>
<p>The neural network is supplied with data extracted from the high-fidelity LES which allows it to predict the rotor effective transverse velocity, <italic>w</italic>
<sub>WT</sub>(<italic>t</italic>). The corresponding ANN input consists of the instantaneous rotation speed of the wind turbine, &#x3a9;(<italic>t</italic>) as well as its projected yaw, <italic>&#x3b3;</italic>(<italic>t</italic>), and global pitch angles, <italic>&#x3b2;</italic>(<italic>t</italic>). Finally, following <xref ref-type="bibr" rid="B7">Bertel&#xe8; and Bottasso&#xa0;(2020)</xref>, the reconstructed blade loads harmonics are also appended to this input state vector:<disp-formula id="e4">
<mml:math id="m16">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mo>&#x304;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>c</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>s</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mo>&#x2061;</mml:mo>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="center">
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mi>&#x3c0;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mtable class="matrix">
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="center">
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(4)</label>
</disp-formula>with <italic>&#x3b8;</italic>(<italic>t</italic>), the instantaneous azimuthal position of blade 1. In this expression, a Multi-Blade Coordinate (MBC) transform derived by <xref ref-type="bibr" rid="B14">Coleman and Feingold&#xa0;(1958)</xref> is applied in order to map the edgewise, <italic>m</italic>
<sub>
<italic>e</italic>,<italic>b</italic>
</sub> and flapwise bending moments, <italic>m</italic>
<sub>
<italic>f</italic>,<italic>b</italic>
</sub> of the blades, <italic>b</italic> &#x3d;&#xa0;1, 2, 3 to their 1-<italic>P</italic> harmonics.</p>
<p>The resulting state vector fed to the neural network thus comprises 11 different fields:<disp-formula id="e5">
<mml:math id="m17">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mrow>
<mml:mi mathvariant="normal">&#x3a9;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>c</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>e</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(5)</label>
</disp-formula>where <italic>t</italic> is the temporal index and <italic>&#x3d5;</italic>
<sub>
<italic>c</italic>/<italic>s</italic>
</sub> denotes the projected cos(<italic>&#x3d5;</italic>) and sin(<italic>&#x3d5;</italic>) components, respectively. Data is sampled at a frequency <italic>f</italic>
<sub>
<italic>ann</italic>
</sub> and the input and output state vectors are eventually concatenated into a single data base entry:<disp-formula id="e6">
<mml:math id="m18">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(6)</label>
</disp-formula>where (&#x22c5;)<sup>
<italic>f</italic>
</sup> denotes that an Exponential Moving Average filter with time constant <italic>&#x3c4;</italic>
<sub>
<italic>ann</italic>
</sub> has been applied (here both to the input and output data).</p>
<p>We finally introduce some information about the past history by concatenating several input filtered states into a single data base entry:<disp-formula id="e7">
<mml:math id="m19">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">S</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mo>&#x2026;</mml:mo>
<mml:mo>,</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>;</mml:mo>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(7)</label>
</disp-formula>
<italic>T</italic>
<sub>
<italic>ann</italic>
</sub> determines the number of successive time indices considered: the larger <italic>T</italic>
<sub>
<italic>ann</italic>
</sub>, the longer the neural network memory. We should however note that, in this configuration, each data base entry is considered as an independent data sample, this may very rapidly increase the complexity of the input data.</p>
<p>The different date base entries are then collected inside one large data base whose different fields, <italic>&#x3d5;</italic>, are normalized using a <italic>minmax</italic> scaler:<disp-formula id="e8">
<mml:math id="m20">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>max</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>min</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(8)</label>
</disp-formula>which casts all the database values into the interval [0, 1] thereby facilitating the neural network convergence.</p>
<p>This data formatting procedure is then applied in order to aggregate a LES data base. The latter is splitted into three subsets: a <italic>training</italic>, a <italic>validation</italic> and a <italic>testing</italic> set. The training set provides never-seen data against which the performances of the trained neural network can be validated. The testing set on the other hand constitutes the bulk of the data base and is used for training purposes. Finally, the validation set provides a metric to avoid overfitting: the optimization procedure should be stopped when the loss metric evaluated on the validation set has reached its minimum. This procedure ensures that the calibrated neural network generalizes well to other data sets.</p>
<p>Different LES are performed in order to assemble the LES database. Their results are uniformly sampled at a <italic>f</italic>
<sub>
<italic>ann</italic>
</sub> &#x3d;&#xa0;0.25&#xa0;Hz and then appended to the data base. The description of the simulation setup used for each data base subset (i.e., validation, training and testing sets) is presented hereunder.<list list-type="simple">
<list-item>
<p>&#x2022; The wind farm layout from which the training and validation data set are extracted consists of 19 turbines with a random spacing ranging from 4<italic>D</italic> to 10<italic>D</italic> thereby accounting for both waked and unwaked conditions. 6,250&#xa0;s long simulations are carried for each of the ABL precursors resulting in a total 89,000 data base entries. 20% of this data is used for validation purposes while the remaining 80% are fed to the ANN as part of its learning. Within both subsets, the data is shuffled so that the neural network does not overfit the last wind turbine of the data set. Indeed, if no shuffling was applied, the ANN would converge toward an optimum representative of the last wind turbine encountered as part of its training which may not be corresponding to the global optimum.</p>
</list-item>
<list-item>
<p>&#x2022; The test set, on the other hand, is obtained by simulating a farm of 12 evenly spaced (7<italic>D</italic>) turbines during 1,250&#xa0;s. Once again, three simulations are carried: one for each ABL settings. The test set thus comprise a total of roughly 11,000 data base entries.</p>
</list-item>
</list>
</p>
</sec>
<sec id="s2-2-2-2">
<title>2.2.2.2 Neural Network Structure and Training</title>
<p>A <italic>Multi-Layer Perceptron</italic> (MLP) is used to learn the mapping between the input state vector consisting of the 11 original inputs, <inline-formula id="inf12">
<mml:math id="m21">
<mml:msubsup>
<mml:mrow>
<mml:mi mathvariant="bold">i</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>, and the target effective transverse velocity output, <inline-formula id="inf13">
<mml:math id="m22">
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>. As illustrated on <xref ref-type="fig" rid="F2">Figure&#xa0;2</xref>, MLPs are a class of ANNs consisting of at least three fully-connected layers of nodes: an input, a hidden and an output layers. Both the hidden and outputs layers use non-linear activation functions thereby allowing this class of neural networks to capture non-linear behaviors.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Transverse velocity sensing: data preparation and Neural Network structure.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g002.tif"/>
</fig>
<p>The different layers are connected through weight matrices whose values are updated as part of the training procedure until convergence is reached. Learning is performed through the back-propagation of the reference loss function through the network during the training step. The complete training data set is first split into mini-batches each consisting of <italic>N</italic>
<sub>
<italic>ann,b</italic>
</sub> randomly picked data base samples. At each iteration, a new mini-batch is fed to the MLP and the network weights are updated using the standard Adam optimizer algorithm with learning rate <italic>lr</italic>
<sub>
<italic>ann</italic>
</sub> in order to minimize the target loss function, <italic>L</italic>
<sub>MSE</sub>:<disp-formula id="e9">
<mml:math id="m23">
<mml:msub>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>MSE</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:munder>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:math>
<label>(9)</label>
</disp-formula>which corresponds to the Mean Square Error (MSE) with <inline-formula id="inf14">
<mml:math id="m24">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf15">
<mml:math id="m25">
<mml:msubsup>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> the estimated and reference rotor effective transverse velocities, respectively.</p>
<p>The MLP used here comprises <italic>N</italic>
<sub>
<italic>ann,L</italic>
</sub> hidden layers of <italic>N</italic>
<sub>
<italic>ann,N</italic>
</sub> neurons. The latter use Rectified Linear Unit (ReLU) activation functions preceded by a Normalization Layer in order to reduce the training time (<xref ref-type="bibr" rid="B1">Ba&#xa0;et&#xa0;al.,&#xa0;2016</xref>). Finally, the Adam optimization algorithm is used to update the layers weight matrices during the training procedure. The resulting neural network architecture is implemented and trained using PyTorch, an open source machine learning framework for deep neural networks (<xref ref-type="bibr" rid="B43">Paszke&#xa0;et&#xa0;al.,&#xa0;2019</xref>). A heuristic approach was adopted in order to compute the hyperparameters. Different configurations were tested and only the set of hyperparameters achieving the lowest MSE on the validation set was conserved. We should therefore note that a more exhaustive hyperparameters search may lead to improved performances of the ANN. However, it would inevitably inflate the computational cost. The neural network training and subsequent hyperparameters tuning are not discussed in more details here. The optimized network hyperparameters are: <italic>N</italic>
<sub>
<italic>ann,L</italic>
</sub> &#x3d;&#xa0;3, <italic>N</italic>
<sub>
<italic>ann,N</italic>
</sub> &#x3d;&#xa0;64, <italic>T</italic>
<sub>
<italic>ann</italic>
</sub> &#x3d;&#xa0;1, <italic>&#x3c4;</italic>
<sub>
<italic>ann</italic>
</sub> &#x3d;&#xa0;8<italic>s</italic>, <italic>lr</italic>
<sub>
<italic>ann</italic>
</sub> &#x3d;&#xa0;3.5 &#xd7;&#xa0;10<sup>&#x2212;5</sup> and <italic>N</italic>
<sub>
<italic>ann,b</italic>
</sub> &#x3d;&#xa0;64.</p>
</sec>
</sec>
</sec>
<sec id="s2-3">
<title>2.3 Lagrangian flow Model</title>
<p>Information is gathered where it is available, at the wind turbine, and then propagated in a physics-informed fashion across the domain. The estimated inflow velocity field, <inline-formula id="inf16">
<mml:math id="m26">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and its associated states, <inline-formula id="inf17">
<mml:math id="m27">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf18">
<mml:math id="m28">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, are fed to the Lagrangian flow model which, in turn, uses them to infer flow quantities at arbitrary locations throughout the wind farm.</p>
<p>The two-dimensional wake model introduced in this section follows the standard DWM hypothesis. Consistent with Taylor&#x2019;s frozen turbulence hypothesis, the wake is discretized as a series of wake particles behaving as passive tracers advected by the background flow (<xref ref-type="bibr" rid="B30">Larsen&#xa0;et&#xa0;al.,&#xa0;2007</xref>; <xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>). As illustrated in <xref ref-type="fig" rid="F3">Figure&#xa0;3</xref>, one of the key features of this model is that this background flow is also modeled using a particle-based discretization which makes it similar to (and actually compatible with) Particle Filter approaches for the estimation of flow information, see e.g., <xref ref-type="bibr" rid="B41">Notter&#xa0;et&#xa0;al.&#xa0;(2020)</xref> or <xref ref-type="bibr" rid="B32">Le&#xa0;Provost and Eldredge&#xa0;(2021)</xref> for very similar applications in an operational context.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Flow model: discretization strategy.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g003.tif"/>
</fig>
<p>The Lagrangian flow model is thus decomposed into two main coupled fields: the freestream velocity field, <bold>u</bold>
<sub>
<italic>f</italic>
</sub>(<bold>x</bold>, <italic>t</italic>), and the speed deficit one, <bold>&#x394;u</bold>(<bold>x</bold>, <italic>t</italic>):<disp-formula id="e10">
<mml:math id="m29">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<p>The <italic>freestream velocity field</italic> is understood as the velocity field that would be observed without any wake effect: it corresponds to the LES precursor velocity field. The <italic>speed deficit field</italic> on the other hand is obtained by superposing the speed deficit shed by all the turbines of the wind farm.</p>
<p>A source condition for both fields is provided by the wind turbine measurements through flow sensing. This information is then propagated downstream at its own characteristic velocity and contributes incrementally to the estimation of the flow field throughout the wind farm.</p>
<p>This section presents how both fields are modeled and how they interact together. The freestream particle discretization is first discussed (<xref ref-type="sec" rid="s2-3-1">Section&#xa0;2.3.1</xref>) after which a description of the wake parametrization is provided (<xref ref-type="sec" rid="s2-3-2">Section&#xa0;2.3.2</xref>).</p>
<sec id="s2-3-1">
<title>2.3.1 Freestream Module</title>
<p>The wake features are directly dictated by the wind turbine geometry, operating settings and the characteristic of the ambient flow, <bold>u</bold>
<sub>
<italic>f</italic>
</sub>(<bold>x</bold>, <italic>t</italic>). The first step necessary to estimate the complete farm flow is therefore to reconstruct the background, unperturbed flow. Classically, this field would be retrieved from a Mann turbulence box or a precursor simulation (<xref ref-type="bibr" rid="B30">Larsen&#xa0;et&#xa0;al.,&#xa0;2007</xref>; <xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>). The resulting background velocity field would then be advected across the wind farm simulation domain at its own characteristic advection speed assuming frozen turbulence. However, focus is here laid on developing a model that can be used in the context of online control where the incoming turbulent flow field is obviously not available. Advection is thus handled in a Lagrangian fashion where the freestream measurements, <inline-formula id="inf19">
<mml:math id="m30">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, gathered at the wind turbine locations, <bold>x</bold>
<sub>WT</sub>, are propagated downstream along the mean flow streaklines<disp-formula id="e11">
<mml:math id="m31">
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x2202;</mml:mi>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
<label>(11)</label>
</disp-formula>with <inline-formula id="inf20">
<mml:math id="m32">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, the effective freestream advection velocity. This equation derives from the frozen turbulence hypothesis: it neglects the contribution of both the molecular and effective turbulent viscosities. The validity of this assumption should consequently remain limited to eddies whose characteristic timescale is larger than the convective timescale.</p>
<sec id="s2-3-1-1">
<title>2.3.1.1 Freestream Particle Discretization</title>
<p>The freestream flow field is represented by a series of freestream particles, <italic>F</italic>
<sub>
<italic>i</italic>
</sub>, shed at successive timesteps <italic>t</italic>
<sub>
<italic>i</italic>
</sub>, and described by a position, <inline-formula id="inf21">
<mml:math id="m33">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and a characteristic velocity, <inline-formula id="inf22">
<mml:math id="m34">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>. The source state of a given particle is provided by the measurements of the wind turbine it emanates from:<disp-formula id="e12a">
<mml:math id="m35">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(12a)</label>
</disp-formula>
<disp-formula id="e12b">
<mml:math id="m36">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(12b)</label>
</disp-formula>where <italic>&#x3b1;</italic>
<sub>
<italic>w</italic>
</sub> is the Exponential Moving Average parameter computed from its filtering timescale, <italic>&#x3c4;</italic>
<sub>
<italic>w</italic>
</sub>.</p>
</sec>
<sec id="s2-3-1-2">
<title>2.3.1.2 Spatio-Temporal Interpolation</title>
<p>The discrete information conveyed by the freestream particles is interpolated using a radial basis function based spatio-temporal interpolation scheme similar to <xref ref-type="bibr" rid="B45">Rott&#xa0;et&#xa0;al.&#xa0;(2020)</xref>:<disp-formula id="e13">
<mml:math id="m37">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mo movablelimits="false" form="prefix">&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(13)</label>
</disp-formula>where the interpolation weights, <inline-formula id="inf23">
<mml:math id="m38">
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, are computed as follows:<disp-formula id="e14">
<mml:math id="m39">
<mml:msub>
<mml:mrow>
<mml:mi>p</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(14)</label>
</disp-formula>
<italic>&#x3be;</italic>(<bold>x</bold>, <italic>t</italic>) and <italic>r</italic>(<bold>x</bold>, <italic>t</italic>) are the local streamwise and radial curvilinear coordinates of the point considered in the particle frame of reference. The weight relative to a particle thus fades out as the particle gets further away from the point of evaluation for the field <bold>u</bold>
<sub>
<italic>f</italic>
</sub>(<bold>x</bold>, <italic>t</italic>). Furthermore, the information contained by a particle is considered less relevant as the particle progressively gets older, i.e., <italic>t</italic> &#x226b;&#xa0;<italic>t</italic>
<sub>
<italic>i</italic>
</sub>. This temporal decay is tuned by <italic>&#x3c3;</italic>
<sub>
<italic>t</italic>
</sub>, the scaling constant of the temporal distance. The <italic>&#x3c3;</italic>
<sub>
<italic>r</italic>
</sub> and <italic>&#x3c3;</italic>
<sub>
<italic>&#x3be;</italic>
</sub> parameters, on the other hand, govern how localized the information should be in the streamwise and radial directions: a low value means the particles have a small trust zone. Far away from the particles sources, the weights collapse and the mean average flow features are recovered.</p>
<p>We note that this framework allows different values of the spatio-temporal scheme weighting parameters to be selected depending on the nature of the phenomenon studied. Indeed, frozen turbulence demands the freestream velocity field to be advected as smoothly as possible whereas the coherence with the self-induced velocity of the wake requires a narrower interpolation kernel. A distinction is thus made for the interpolation of the advection velocities for the large-scale freestream field, <bold>u</bold>
<sub>
<italic>f</italic>
</sub>, and the local wake, <inline-formula id="inf24">
<mml:math id="m40">
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>; those are evaluated using the weighting parameters [<italic>&#x3c3;</italic>
<sub>
<italic>r</italic>
</sub>, <italic>&#x3c3;</italic>
<sub>
<italic>&#x3be;</italic>
</sub>, <italic>&#x3c3;</italic>
<sub>
<italic>t</italic>
</sub>] and [<italic>&#x3c3;</italic>
<sub>
<italic>r</italic>
</sub>, <inline-formula id="inf25">
<mml:math id="m41">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>], respectively, with <inline-formula id="inf26">
<mml:math id="m42">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x3c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s2-3-1-3">
<title>2.3.1.3 Freestream Field Advection</title>
<p>Following <xref ref-type="disp-formula" rid="e11">Eq.&#xa0;11</xref>, particle positions are transported by an effective freestream convection velocity <inline-formula id="inf27">
<mml:math id="m43">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>:<disp-formula id="e15">
<mml:math id="m44">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:math>
<label>(15)</label>
</disp-formula>while their characteristic velocity, <inline-formula id="inf28">
<mml:math id="m45">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, is assumed to remain unchanged. The effective freestream convection velocity is obtained by subtracting the speed deficit from the freestream velocity field itself:<disp-formula id="e16">
<mml:math id="m46">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>s</mml:mi>
</mml:math>
<label>(16)</label>
</disp-formula>where <italic>C</italic>
<sub>
<italic>f</italic>
</sub> is a tuning constant and <italic>S</italic> denotes the circular area of radius <inline-formula id="inf29">
<mml:math id="m47">
<mml:msub>
<mml:mrow>
<mml:mi>R</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mfrac>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> centered at <inline-formula id="inf30">
<mml:math id="m48">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and normal to the time-averaged flow streaklines defined by <xref ref-type="disp-formula" rid="e15">Eq.&#xa0;15</xref>.</p>
</sec>
</sec>
<sec id="s2-3-2">
<title>2.3.2 Wake Model Module</title>
<p>Once the estimated freestream flow has been reconstructed, the wake model integration can be performed in order to retrieve the global speed deficit field, <bold>&#x394;u</bold>(<bold>x</bold>, <italic>t</italic>). The wake is subsequently discretized as a series of information-carrying particles advected by the reconstructed freestream velocity field.</p>
<sec id="s2-3-2-1">
<title>2.3.2.1 Wake Particle Discretization</title>
<p>A wake particle, <italic>W</italic>
<sub>
<italic>i</italic>
</sub>, shed at time <italic>t</italic>
<sub>
<italic>i</italic>
</sub>, is described by a position, <inline-formula id="inf31">
<mml:math id="m49">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, an orientation, <inline-formula id="inf32">
<mml:math id="m50">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, a curvilinear coordinate along the wake centerline, <inline-formula id="inf33">
<mml:math id="m51">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and finally a thrust coefficient, <inline-formula id="inf34">
<mml:math id="m52">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, and a rotor-effective turbulence intensity, <inline-formula id="inf35">
<mml:math id="m53">
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>(t).</p>
<p>The position of the particle, <inline-formula id="inf36">
<mml:math id="m54">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>z</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, is measured in the wind farm inertial frame and initially coincides with that of the wind turbine hub. Its remaining states are directly retrieved from the wind turbine state at shedding time. The subsequent source state of the wake particle is therefore similar to equation and reads:<disp-formula id="e17a">
<mml:math id="m55">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0</mml:mn>
</mml:math>
<label>(17a)</label>
</disp-formula>
<disp-formula id="e17b">
<mml:math id="m56">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
</mml:math>
<label>(17b)</label>
</disp-formula>
<disp-formula id="e17c">
<mml:math id="m57">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>cos</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mo>,</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>sin</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>&#x3b3;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(17c)</label>
</disp-formula>
<disp-formula id="e17d">
<mml:math id="m58">
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(17d)</label>
</disp-formula>
<disp-formula id="e17e">
<mml:math id="m59">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(17e)</label>
</disp-formula>where the orientation of the wake particle is computed based on the turbine yaw angle at shedding time, <italic>&#x3b3;</italic>(<italic>t</italic>
<sub>
<italic>i</italic>
</sub>).</p>
</sec>
<sec id="s2-3-2-2">
<title>2.3.2.2 Speed Deficit Parametrization</title>
<p>Each wake particle, <italic>W</italic>
<sub>
<italic>i</italic>
</sub>, is associated to a relative speed deficit field: <inline-formula id="inf37">
<mml:math id="m60">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> where <inline-formula id="inf38">
<mml:math id="m61">
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> and <italic>t</italic> denote the radial position of <bold>x</bold> relative to the wake particle and the time considered, respectively. The orientation of the particle, <inline-formula id="inf39">
<mml:math id="m62">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, is introduced in order to allow the computation of the radial position of an arbitrary point, <bold>x</bold>, in the wake particle frame:<disp-formula id="e18">
<mml:math id="m63">
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="&#x2016;" close="&#x2016;">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:math>
<label>(18)</label>
</disp-formula>
</p>
<p>The speed deficit field relative to the wake particle is assumed quasi-steady and then paramatrized based on the analytical expression proposed by <xref ref-type="bibr" rid="B2">Bastankhah and Port&#xe9;-Agel&#xa0;(2014)</xref> unlike most DWM implementations (<xref ref-type="bibr" rid="B30">Larsen&#xa0;et&#xa0;al.,&#xa0;2007</xref>; <xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>) that rather rely on the tuning-intensive Ainslie viscosities wake model. Indeed, even though both models were shown to predict accurately the far-wake speed deficit (<xref ref-type="bibr" rid="B48">Zhan&#xa0;et&#xa0;al.,&#xa0;2020</xref>), the former overall demonstrates improved computational time and facilitated tuning due to its limited set of parameters.</p>
<p>The Bastankhah (<xref ref-type="bibr" rid="B2">Bastankhah and Port&#xe9;-Agel,&#xa0;2014</xref>) wake model is derived through the momentum conservation equation assuming a negligible pressure term. Consistent with the thin shear layer assumption, the speed deficit is then parametrized as a Gaussian whose characteristics are expressed as functions of the thrust coefficient and turbulent intensities:<disp-formula id="e19">
<mml:math id="m64">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>8</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>/</mml:mo>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>exp</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>/</mml:mo>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(19)</label>
</disp-formula>The width of the Gaussian, <inline-formula id="inf40">
<mml:math id="m65">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, grows linearly with the material coordinate <inline-formula id="inf41">
<mml:math id="m66">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> through a growth rate <italic>k</italic> that is itself assumed to be a linear function of the turbulent intensity, <inline-formula id="inf42">
<mml:math id="m67">
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> (<xref ref-type="bibr" rid="B19">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2019</xref>; <xref ref-type="bibr" rid="B21">Duc&#xa0;et&#xa0;al.,&#xa0;2019</xref>):<disp-formula id="e20">
<mml:math id="m68">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>k</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mi>D</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>a</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.28em"/>
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mi>D</mml:mi>
</mml:math>
<label>(20)</label>
</disp-formula>with <italic>a</italic>
<sub>
<italic>k</italic>
</sub> and <italic>b</italic>
<sub>
<italic>k</italic>
</sub> tuning constants. The initial value of the width is <italic>&#x3c3;</italic>
<sub>
<italic>Wi</italic>,0</sub> &#x3d;&#xa0;<italic>&#x25b;</italic>
<sub>
<italic>Wi</italic>
</sub>
<italic>D</italic> and determines the characteristic diameter of the streamtube at the outlet of the near-wake region:<disp-formula id="e21">
<mml:math id="m69">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b5;</mml:mi>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
<mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(21)</label>
</disp-formula>with <italic>&#x25b;</italic> &#x3d;&#xa0;0.2 (<xref ref-type="bibr" rid="B2">Bastankhah and Port&#xe9;-Agel,&#xa0;2014</xref>). The value of these constants has been extensively studied in the literature (e.g., <xref ref-type="bibr" rid="B40">Niayifar and Port&#xe9;-Agel,&#xa0;2015</xref>). Most of these studies have however targeted the development of time-averaged models where <italic>k</italic> captures the time-averaged effects of both wake expansion and wake meandering. The value used here should therefore be lower than the traditional values of the expansion constant as wake meandering is already accounted for through our Lagrangian framework.</p>
<p>The speed deficit estimated by <xref ref-type="disp-formula" rid="e19">Eq.&#xa0;19</xref> is however not valid in the near wake region. Other analytical field models introducing various near-field wake correction strategies such as the ones proposed by <xref ref-type="bibr" rid="B8">Blondel et al. (2020)</xref> or <xref ref-type="bibr" rid="B28">Keane&#xa0;(2021)</xref> were thus investigated. They were eventually dismissed as, in the near-wake, only the effective convective velocity scale is important. The exact shape of the speed deficit is not pertinent as no wind turbine is generally located within this wake region. Following <xref ref-type="bibr" rid="B3">Bastankhah and Port&#xe9;-Agel&#xa0;(2016)</xref>, the characteristic speed deficit within the near wake is thus recovered using the <italic>potential core theory</italic>. This theory is consistent with the present framework because it provides coherent estimates of the wake velocity while requiring minimal tuning even though it largely overlooks the near-wake physics. The wake potential core is described as a region of uniform wake speed deficit, <inline-formula id="inf43">
<mml:math id="m70">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:math>
</inline-formula>, whose inlet is located at the wind turbine location. Due to its interactions with the ambient flow, it gradually gets smaller until <inline-formula id="inf44">
<mml:math id="m71">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> where the Gaussian self similarity solution is recovered:<disp-formula id="e22">
<mml:math id="m72">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mtext>WT</mml:mtext>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msqrt>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="1em"/>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="left">
<mml:mtext>for</mml:mtext>
<mml:mspace width="1em"/>
<mml:mfrac>
<mml:mrow>
<mml:mn>2</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd columnalign="right">
<mml:mo>&#x3c;</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(22)</label>
</disp-formula>
</p>
</sec>
<sec id="s2-3-2-3">
<title>2.3.2.3 Wake Interpolation</title>
<p>For isolated wakes, the global speed deficit field, &#x394;<bold>u</bold>(<bold>x</bold>, <italic>t</italic>), is obtained by projecting the local speed deficit, <inline-formula id="inf45">
<mml:math id="m73">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, along the wake particle orientation, <inline-formula id="inf46">
<mml:math id="m74">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> (<xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>):<disp-formula id="e23">
<mml:math id="m75">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>.</mml:mo>
</mml:math>
<label>(23)</label>
</disp-formula>
<italic>W</italic>
<sub>
<italic>j</italic>
</sub> is the particle whose plane is the closest to <bold>x</bold>. In the context of multiple superposing wakes, an altered version of the standard root-sum-square weighting superposition strategy (<xref ref-type="bibr" rid="B23">Gebraad and van&#xa0;Wingerden,&#xa0;2014</xref>; <xref ref-type="bibr" rid="B21">Duc&#xa0;et&#xa0;al.,&#xa0;2019</xref>; <xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>) is applied:<disp-formula id="e24">
<mml:math id="m76">
<mml:mtable class="align" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right">
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>&#x3d;</mml:mo>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:munder>
<mml:mfenced open="(" close="">
<mml:mrow>
<mml:mi mathvariant="script">R</mml:mi>
<mml:mfenced open="(" close="">
<mml:mrow>
<mml:munder>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>&#x2208;</mml:mo>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="script">S</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mspace width="0.28em"/>
<mml:mfenced open="(" close="">
<mml:mrow>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:msubsup>
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>r</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mspace width="1em"/>
<mml:mo>&#xd7;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
</mml:mfenced>
<mml:mfenced open="" close=")">
<mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">e</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>k</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="" close=")">
<mml:mrow>
</mml:mrow>
</mml:mfenced>
<mml:mo>.</mml:mo>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>
<inline-formula id="inf47">
<mml:math id="m77">
<mml:mi mathvariant="script">R</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>sign</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:msqrt>
<mml:mrow>
<mml:mo stretchy="false">&#x7c;</mml:mo>
<mml:mi>&#x3d5;</mml:mi>
<mml:mo stretchy="false">&#x7c;</mml:mo>
</mml:mrow>
</mml:msqrt>
</mml:math>
</inline-formula> is the sign&#xa0;preserving square root operator and <inline-formula id="inf48">
<mml:math id="m78">
<mml:mi mathvariant="script">S</mml:mi>
</mml:math>
</inline-formula> denotes the set of the closest wake particles for each superposing wake. This procedure allows for an efficient merging of both streamwise and transverse components of the speed deficit.</p>
</sec>
<sec id="s2-3-2-4">
<title>2.3.2.4 Wake Advection</title>
<p>The interpolated wake field can then be used to update the wake particles states using a Lagrangian advection scheme as in <xref ref-type="disp-formula" rid="e15">Eq.&#xa0;15</xref>:<disp-formula id="e25">
<mml:math id="m79">
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
<label>(25)</label>
</disp-formula>The wake curvilinear coordinate, <inline-formula id="inf49">
<mml:math id="m80">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, is updated accordingly:<disp-formula id="e26">
<mml:math id="m81">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mfenced open="&#x2016;" close="&#x2016;">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
<mml:mi mathvariant="normal">&#x394;</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>.</mml:mo>
</mml:math>
<label>(26)</label>
</disp-formula>Consistent with Hill&#x2019;s vortex theory and experimental investigations (<xref ref-type="bibr" rid="B36">Machefaux&#xa0;et&#xa0;al.,&#xa0;2014</xref>; <xref ref-type="bibr" rid="B31">Larsen&#xa0;et&#xa0;al.,&#xa0;2020</xref>), the wake advection velocity is assumed to be directly related to the maximum speed deficit observed. Following <xref ref-type="disp-formula" rid="e24">Eq.&#xa0;24</xref>, the effective wake convection velocity, <inline-formula id="inf50">
<mml:math id="m82">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, is thus readily computed from the superposition of the local reconstructed freestream field and local speed deficit:<disp-formula id="e27">
<mml:math id="m83">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold">u</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mspace width="0.28em"/>
<mml:mi mathvariant="bold">&#x394;</mml:mi>
<mml:mi mathvariant="bold">u</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(27)</label>
</disp-formula>where <italic>C</italic>
<sub>
<italic>w</italic>
</sub> is a tuning constant.</p>
<p>The remaining particle states used to compute the local speed deficit, <inline-formula id="inf51">
<mml:math id="m84">
<mml:mi>T</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> and <inline-formula id="inf52">
<mml:math id="m85">
<mml:msub>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>T</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, are conserved as the particle moves downstream.</p>
</sec>
</sec>
<sec id="s2-3-3">
<title>2.3.3 Calibration</title>
<p>The present operational wake model involves on a total of 9 parameters: <italic>a</italic>
<sub>
<italic>k</italic>
</sub>, <italic>b</italic>
<sub>
<italic>k</italic>
</sub>, <italic>C</italic>
<sub>
<italic>f</italic>/<italic>w</italic>
</sub>, <italic>&#x3c4;</italic>
<sub>
<italic>w</italic>
</sub>, <italic>&#x3c3;</italic>
<sub>
<italic>r</italic>/<italic>&#x3be;</italic>/<italic>t</italic>
</sub> and finally <inline-formula id="inf53">
<mml:math id="m86">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula>. <italic>a</italic>
<sub>
<italic>k</italic>
</sub> and <italic>b</italic>
<sub>
<italic>k</italic>
</sub> describe the wake expansion while <italic>C</italic>
<sub>
<italic>w</italic>
</sub> and <italic>C</italic>
<sub>
<italic>f</italic>
</sub> govern the wake deficit and freestream velocity transports, respectively. <italic>&#x3c4;</italic>
<sub>
<italic>w</italic>
</sub> is the time-filtering constant used to compute the rotor quantities and <italic>&#x3c3;</italic>
<sub>
<italic>r</italic>
</sub>, <italic>&#x3c3;</italic>
<sub>
<italic>&#x3be;</italic>
</sub>, <inline-formula id="inf54">
<mml:math id="m87">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
</mml:math>
</inline-formula> and <italic>&#x3c3;</italic>
<sub>
<italic>t</italic>
</sub> parametrize the spatio-temporal interpolation of the freestream velocity field. These parameters are fitted manually and tabulated in <xref ref-type="table" rid="T2">Table&#xa0;2</xref>. A fine calibration was not deemed necessary, as this framework is intended toward an operational context where a runtime calibration of the parameters is performed through data assimilation (e.g., <xref ref-type="bibr" rid="B18">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2018b</xref>).</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Lagrangian flow model parameters used for the wind farm simulations.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th colspan="2" align="left">Wake expansion</th>
<th colspan="2" align="center">Particle advection</th>
<th colspan="5" align="center">Filter size</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">
<italic>a</italic>
<sub>
<italic>k</italic>
</sub>&#x2002;[ &#x2212;&#xa0;]</td>
<td align="left">
<italic>b</italic>
<sub>
<italic>k</italic>
</sub>&#x2002;[ &#x2212;&#xa0;]</td>
<td align="center">
<italic>C</italic>
<sub>
<italic>f</italic>
</sub>&#x2002;[ &#x2212;&#xa0;]</td>
<td align="center">
<italic>C</italic>
<sub>
<italic>w</italic>
</sub>&#x2002;[ &#x2212;&#xa0;]</td>
<td align="center">
<italic>&#x3c4;</italic>
<sub>
<italic>w</italic>
</sub>&#xa0;[<italic>s</italic>]</td>
<td align="center">
<italic>&#x3c3;</italic>
<sub>
<italic>r</italic>
</sub>&#x2002;[<italic>m</italic>]</td>
<td align="center">
<italic>&#x3c3;</italic>
<sub>
<italic>&#x3be;</italic>
</sub>&#x2002;[<italic>m</italic>]</td>
<td align="center">
<inline-formula id="inf55">
<mml:math id="m88">
<mml:msubsup>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:mrow>
</mml:msubsup>
<mml:mspace width="0.3333em" class="nbsp"/>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">]</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">
<italic>&#x3c3;</italic>
<sub>
<italic>t</italic>
</sub>&#x2002;[<italic>s</italic>]</td>
</tr>
<tr>
<td align="left">0.018</td>
<td align="left">0.10</td>
<td align="center">0.7</td>
<td align="center">0.45</td>
<td align="center">8.0</td>
<td align="center">63.0</td>
<td align="center">63.0</td>
<td align="center">512.0</td>
<td align="center">126.0</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s2-3-3-1">
<title>2.3.3.1 Freestream Advection</title>
<p>The identified constant for the wake convective velocity, <italic>C</italic>
<sub>
<italic>w</italic>
</sub>, is in line with the values reported in the literature. <xref ref-type="bibr" rid="B31">Larsen&#xa0;et&#xa0;al.&#xa0;(2020)</xref> found <italic>C</italic>
<sub>
<italic>w</italic>
</sub> &#x3d;&#xa0;0.4 by exploiting the wake/ring-vortex analogy along Hill&#x2019;s vortex theory to approximate the wake self-induction. This theory is investigated in more details by <xref ref-type="bibr" rid="B36">Machefaux&#xa0;et&#xa0;al.&#xa0;(2014)</xref> who report slightly higher values (0.63 and 0.51) based on LES and experimental data. <xref ref-type="bibr" rid="B29">Keck&#xa0;et&#xa0;al.&#xa0;(2014)</xref>, on the other hand, did not directly account for wake-induced velocity and adopted the wake transport velocity at 80% of free-stream velocity.</p>
</sec>
<sec id="s2-3-3-2">
<title>2.3.3.2 Speed Deficit Parametrization</title>
<p>An initial guess for the wake expansion constants is retrieved from the high-fidelity data. The value of the precursor velocity field is first subtracted from the wind farm one thereby isolating the speed deficit from the ambient flow. The wake centerline is then extracted from the wind farm LES through the algorithm introduced by <xref ref-type="bibr" rid="B16">Coudou&#xa0;(2021)</xref>. This allows to translate the speed deficit, initialy in the inertial LES frame, to the meandering frame of reference. A Gaussian speed deficit is finally fitted on the profiles obtained for various time windows and ambient conditions. Even so, the wake expansion constant obtained (<italic>&#x25b;</italic> &#x3d;&#xa0;0.2, <italic>a</italic>
<sub>
<italic>k</italic>
</sub> &#x3d;&#xa0;0.022 and <italic>b</italic>
<sub>
<italic>k</italic>
</sub> &#x3d;&#xa0;0.14) still overestimated wake recovery due to the inaccuracies introduced by the wake tracking algorithm and by the flow asymmetry. As expected, the calibrated constants are lower than the ones presented in the literature (<xref ref-type="bibr" rid="B40">Niayifar and Port&#xe9;-Agel,&#xa0;2015</xref>).</p>
</sec>
<sec id="s2-3-3-3">
<title>2.3.3.3 Wake Advection</title>
<p>Following the frozen turbulence hypothesis, the freestream convective constant, <italic>C</italic>
<sub>
<italic>f</italic>
</sub>, is traditionally set to zero: this is equivalent to postulating a one-way coupling between the freestream velocity field and the wake. While a uniform convective velocity was indeed observed for freestream flow, the analysis of the reference LES rotor-averaged quantities indicates a reduction of the effective freestream convection speed for waked conditions (<xref ref-type="fig" rid="F4">Figure&#xa0;4</xref>). The cross-correlation between the histories of the rotor-scale flow quantities and the rotor measurements is evaluated at several downstream locations, <italic>&#x3be;</italic>
<sub>
<italic>f</italic>
</sub>. The time offset, <italic>T</italic>
<sub>
<italic>f</italic>
</sub>, which achieves the maximum cross-correlation, and <italic>&#x3be;</italic>
<sub>
<italic>f</italic>
</sub> are then combined to define the velocity scale, <inline-formula id="inf56">
<mml:math id="m89">
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3be;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>. This analysis is repeated for different wind farm configurations and demonstrates a drop in <italic>U</italic>
<sub>
<italic>f</italic>
</sub> in the near wake while the freestream convection speed is progressively recovered as one considers positions further downstream.</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Lagrangian flow model calibration: evolution of the mean convection velocity scale (blue), <italic>U</italic>
<sub>
<italic>f</italic>
</sub>, of the rotor-effective transverse velocity component as a function of the normalized downstream distance; each dot indicates an individual <italic>U</italic>
<sub>
<italic>f</italic>
</sub> value obtained using the cross-correlation maximization approach.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g004.tif"/>
</fig>
</sec>
</sec>
</sec>
</sec>
<sec id="s3">
<title>3 Results</title>
<sec id="s3-1">
<title>3.1 Flow Sensing</title>
<p>The performances of the proposed Lagrangian flow model are highly contingent on those of the embedded flow sensing module (<xref ref-type="sec" rid="s2-2">Section&#xa0;2.2</xref>); we therefore first assess the performances of this module in isolation. To that end, we compare the flow characteristics inferred by the flow sensing module with those retrieved directly from the LES, see <xref ref-type="fig" rid="F5">Figure&#xa0;5</xref>. Several freestream ABL configurations have been studied for an eight turbines farm visible in <xref ref-type="fig" rid="F7">Figure&#xa0;6</xref>; all its turbines operate in essentially non-waked conditions (wakes impacting the third row are quite dissipated). The LES velocities are sampled and then averaged over fictitious rotors located 2<italic>D</italic> upstream of the actual wind turbines and time shifted accordingly. For an estimator <inline-formula id="inf57">
<mml:math id="m90">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, different performance metrics are evaluated, namely the correlation score, <inline-formula id="inf58">
<mml:math id="m91">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, mean relative error, <inline-formula id="inf59">
<mml:math id="m92">
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, and mean relative bias, <inline-formula id="inf60">
<mml:math id="m93">
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>. The mean error and bias of the streamwise and TI estimators are made dimensionless using the time-averaged value of <italic>&#x3d5;</italic>
<sub>
<italic>WT</italic>
</sub> while metrics associated with the transverse velocity use the Root Mean Square of <italic>&#x3d5;</italic>
<sub>
<italic>WT</italic>
</sub>.We hereunder discuss the performances of each estimator: rotor-normal velocity, transverse velocity and TI.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Flow sensing: comparison of the temporal evolutions of the rotor-effective inferred flow quantities (blue) against the LES data (black) for WT0 (left) and WT3 (right); <bold>(A)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(B)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%; <bold>(C)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;15&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g005.tif"/>
</fig>
<p>The BEM-based rotor-normal velocity estimator provides accurate estimates which translate into high correlations (<inline-formula id="inf61">
<mml:math id="m94">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.88</mml:mn>
</mml:math>
</inline-formula> on average) and low relative error (<inline-formula id="inf62">
<mml:math id="m95">
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>2.4</mml:mn>
</mml:math>
</inline-formula>% on average) irrespective of the ABL configuration studied. Its estimations are further characterized by a negligible bias (<inline-formula id="inf63">
<mml:math id="m96">
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>0.071</mml:mn>
</mml:math>
</inline-formula>% on average). The Kalman filtering process however induces a slight smoothing and time offset of the output signal.</p>
<p>The transverse velocity estimator does not achieve such high levels of accuracy (<inline-formula id="inf64">
<mml:math id="m97">
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>61</mml:mn>
</mml:math>
</inline-formula>% on average). This large error nonetheless does not fully characterizes the performances of this estimator. Indeed, it is able to predict the main features of the transverse velocity signal for low values of <italic>U</italic>
<sub>
<italic>ABL</italic>
</sub> as indicated by the good correlation score achieved for wind turbine below rated conditions (i.e., <inline-formula id="inf65">
<mml:math id="m98">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.71</mml:mn>
</mml:math>
</inline-formula> on average for <italic>U</italic>
<sub>
<italic>ABL</italic>
</sub> &#x3d;&#xa0;8&#xa0;<italic>ms</italic>
<sup>&#x2212;1</sup>). The agreement deteriorates for turbines above rated conditions thereby leading to low correlations values: <inline-formula id="inf66">
<mml:math id="m99">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.29</mml:mn>
</mml:math>
</inline-formula> on average for <italic>U</italic>
<sub>
<italic>ABL</italic>
</sub> &#x3d;&#xa0;15&#xa0;<italic>ms</italic>
<sup>&#x2212;1</sup>. Above rated conditions, a collective pitch is applied to the blades. This pitch varies according to the incoming wind fluctuations, which presumably makes the mapping between the blade loads and the transverse velocities more complex (e.g., through the dynamics of the collective pitch controller). A mean bias, <inline-formula id="inf67">
<mml:math id="m100">
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>7.2</mml:mn>
</mml:math>
</inline-formula>%, is observed across all three ABL configurations: the ANN systematically underestimates the transverse velocity component. As no notable asymmetry is observed in the training data set, the estimator bias likely arises from the neural network training itself. In addition, the selected MLP hyperparameters only allow to consider the current wind turbine state (<italic>T</italic>
<sub>
<italic>ann</italic>
</sub> &#x3d;&#xa0;1): the network has no knowledge of the past wind turbine state. However, no significant improvement of the neural network performances was observed when providing the neural network with more temporal data (<italic>T</italic>
<sub>
<italic>ann</italic>
</sub> &#x3e;&#xa0;1). This may arise from the structure of the neural network itself which considers each temporal state as an individual input. More temporal information then just leads to a more complex ANN, which hinders its training and its handling of the present time-varying phenomenon. Other network architectures accounting explicitly for time (e.g., Long Short Term Memory Recursive Neural Network) should therefore be considered as part of future investigations. One could also envision to employ different ANNs depending on the wind speed or pitch angle and then merge their predictions in order to obtain a more robust transverse velocity estimate better accounting for blade pitching. Finally, enriching the data base with more data extracted from above rated condition may also contribute to improving the overall performances of the neural network.</p>
<p>The last plot depicts the temporal evolution of the turbulence intensity. After the initial settling period, similar performances are obtained across all three simulations with correlations of around <inline-formula id="inf68">
<mml:math id="m101">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.61</mml:mn>
</mml:math>
</inline-formula>. The flow sensing module captures most of the turbulence intensity signal patterns but underestimates the predictions by about <inline-formula id="inf69">
<mml:math id="m102">
<mml:msub>
<mml:mrow>
<mml:mi>b</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>17</mml:mn>
</mml:math>
</inline-formula>% with ensuing error of <inline-formula id="inf70">
<mml:math id="m103">
<mml:msub>
<mml:mrow>
<mml:mi>e</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>25</mml:mn>
</mml:math>
</inline-formula>%. This is to be expected as <inline-formula id="inf71">
<mml:math id="m104">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mo>&#x302;</mml:mo>
</mml:mover>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is computed from the sector effective streamwise velocities which by definition neglects the influence of the small-scale velocity fluctuations.</p>
</sec>
<sec id="s3-2">
<title>3.2 Lagrangian flow Model</title>
<p>Let us now assess the Lagrangian flow model through a comparison against data retrieved from the reference LES. The case of isolated wind turbines (<xref ref-type="sec" rid="s3-2-1">Section&#xa0;3.2.1</xref>) is first considered and the performances of the model in the context of a small wind farm are then investigated (<xref ref-type="sec" rid="s3-2-2">Section&#xa0;3.2.2</xref>).</p>
<sec id="s3-2-1">
<title>3.2.1 Isolated Wind Turbines</title>
<p>We use the same wind farm layout as in <xref ref-type="sec" rid="s3-1">Section&#xa0;3.1</xref>. The loads and operating settings recovered from the high-fidelity simulation are first processed by the flow sensing module and then fed to the Lagrangian flow model. The model runs much faster than real time: a 2,500&#xa0;s wind farm simulation runs in around 12&#xa0;s on a single laptop core (5 &#xd7;&#xa0;10<sup>&#x2212;4</sup> wall-clock second per simulation second). The freestream and wake particles update and shedding frequencies are, respectively, <inline-formula id="inf72">
<mml:math id="m105">
<mml:mfrac>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> and <inline-formula id="inf73">
<mml:math id="m106">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> with <italic>T</italic>
<sub>
<italic>C</italic>
</sub>, the convective time scale defined as <italic>T</italic>
<sub>
<italic>C</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/<italic>U</italic>
<sub>
<italic>ABL</italic>
</sub>. The particle discretization strategy is illustrated in <xref ref-type="fig" rid="F6">Figure&#xa0;7</xref> for wind turbine 1 (WT1). 50 wake particles and 25 freestream ones suffice to capture the development of one wind turbine wake across the full domain (28<italic>D</italic> downstream of WT0). For the wind farm layout studied, fewer freestream particles are required to capture the freestream field. Indeed, as freestream particles shed by WT0 reach WT5 their interpolation weight have collapsed due to their age and the info they convey is thus largely disregarded. It is therefore not pertinent for the freestream particles to span more than 20<italic>D</italic> in the current configuration. The same would not be true if the wind was not aligned with the wind turbines.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Isolated wind turbines: instantaneous streamwise velocity field (<italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s) predicted by the flow model (left) and retrieved from the LES (right); <bold>(A)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(B)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g006.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F7">Figure&#xa0;6</xref> compares the full flow fields of the model and the LES in terms of the hub-height velocity field. Both low-TI (<italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%) and high-TI (<italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%) configurations are studied at <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup>. This comparison confirms the good potential of the approach: the Lagrangian flow model captures an array of phenomena that classical steady-state models simply cannot capture.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Isolated wind turbines: instantaneous streamwise velocity field (<italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s) predicted by the flow model for <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; wake particle (&#x2022;) and freestream particle (&#x25b4;); wake position extracted from the LES (full black line).</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g007.tif"/>
</fig>
<p>A first qualitative comparison indicates a good agreement between the meandering patterns, particularly for the low-TI case. While the high-TI near-wake is reconstructed in a satisfactory manner, the far-wake estimate deviates from the expected value significantly. Indeed, the information collected at the rotor becomes less pertinent as one travels downstream. Accordingly, the deterioration of particle information is expected to increase with the turbulent intensity of the inflow.</p>
<p>If one now considers the freestream information, the corresponding particle discretization appears to capture the flow heterogeneity at farm scales: the reconstructed freestream velocity is not uniform across the domain and reflects the large-scale velocity fluctuations present in the LES. The reconstructed flow field can however only provide a smoothed out representation of the instantaneous LES one. The influence of small-scale eddies (typically <inline-formula id="inf74">
<mml:math id="m107">
<mml:mo>&#x3c;</mml:mo>
<mml:mn>2</mml:mn>
<mml:mi>D</mml:mi>
</mml:math>
</inline-formula>) is ignored since only rotor-effective information is fed to the model. Moreover, since information is gathered and processed where it is relevant (around the wake centerline), some blindspots may appear between the wind turbines rows. The use of Lidar data could therefore potentially be investigated in order to better account for the small-scale structures (<xref ref-type="bibr" rid="B45">Rott&#xa0;et&#xa0;al.,&#xa0;2020</xref>). Accounting for these small-scale structures may however fall outside the hypothesis of frozen turbulence hypothesis as suggested by <xref ref-type="bibr" rid="B10">Bossanyi&#xa0;(2013)</xref>.</p>
<p>The wake model also suffers from the same limitation: for both <italic>TI</italic> cases, the model depicts the wakes as smooth representations of their LES counterparts. It is not able to capture asymmetry nor the loss in coherence of the wake particularly for high-TI configurations. Nevertheless, one notes the good overall agreement between the speed deficit widths and intensities. This is better demonstrated by the instantaneous streamwise velocity profiles of <xref ref-type="fig" rid="F8">Figure&#xa0;8A</xref>. Despite its simple form, the near wake correction introduced by <xref ref-type="bibr" rid="B3">Bastankhah and Port&#xe9;-Agel&#xa0;(2016)</xref> leads to coherent estimates for the near wake profiles. These profiles definitely underline the need to account for wake meandering in dynamic models of wind turbine wakes: meandering clearly manifests itself in the instantaneous flow fields, even away from the rotors.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Isolated wind turbines: instantaneous streamwise velocity profiles <bold>(A)</bold> Instantaneous streamwise velocity profiles at different streamwise locations (<italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s) predicted by the model (blue) and retrieved from the LES (black) for <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6% (left); <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10% (right); <bold>(B)</bold> Time averaged (left) and instantaneous (right - <italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s) streamwise velocity profiles for WT1; flow model (blue); LES (black); optimally fitted steady-state Gaussian Bastankhah wake model - &#x25b; &#x3d;&#xa0;0.2 and <italic>k</italic> &#x3d;&#xa0;0.028 (dashed red) for <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g008.tif"/>
</fig>
<p>
<xref ref-type="fig" rid="F8">Figure&#xa0;8B</xref> presents time-averaged and instantaneous streamwise velocity fields at hub height, which confirm the observations hereabove. A Gaussian steady-state wake model is fitted over the time-averaged LES data: it corresponds to a model that would be optimally tuned by exploiting state feedback in a fashion similar to <xref ref-type="bibr" rid="B19">Doekemeijer&#xa0;et&#xa0;al.&#xa0;(2019)</xref>. The tuned parameters obtained, <italic>&#x25b;</italic> &#x3d;&#xa0;0.2 and <italic>k</italic> &#x3d;&#xa0;0.028, are in line with the values reported by <xref ref-type="bibr" rid="B40">Niayifar and Port&#xe9;-Agel&#xa0;(2015)</xref>. Excellent agreement is obtained between all three approaches regarding the steady-state profiles especially in the far wake <inline-formula id="inf75">
<mml:math id="m108">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3e;</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> where the self-similarity of the Gaussian profile is recovered. This is however not true for the instantaneous flow field: the calibrated Gaussian model over-estimates the width of the wake whereas the Lagrangian flow model better predicts the speed deficit downstream of the turbine.</p>
<sec id="s3-2-1-1">
<title>3.2.1.1 Wake Centerline Statistics</title>
<p>A quantitative analysis of wake centerline characteristics is now performed for WT0 and WT3. <xref ref-type="fig" rid="F9">Figure&#xa0;9</xref> shows the histories of their transverse location, <italic>z</italic>
<sub>
<italic>C</italic>
</sub>, evaluated at several downstream positions (6<italic>D</italic>, 9<italic>D</italic> and 12<italic>D</italic>). As differences in tracked wake centerline positions will likely occur depending on the size of the mask considered for the LES post-processing, different mask sizes are evaluated and used to define the so-called wake centerline envelope. Highly asymmetric or incoherent wakes are logically harder to track and hence tend to lead to larger differences in wake centerline position depending on the size of the mask selected. A wider wake envelope is therefore indicative of an asymmetric or incoherent wake. In both the high- and the low-TI case, less agreement is obtained between the different wake tracking masks for WT3 than for WT0 resulting in broader wake envelopes on average. The reference mask is then chosen quite wide, i.e., <italic>&#x3c3;</italic>
<sub>
<italic>x</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>y</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/2, in order to prevent the spurious numerical behaviors of the wake centerline detection.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>Isolated wind turbines: temporal evolutions of the wake centerline position estimated by the model (blue) against the one retrieved from the LES (black) at locations 6<italic>D</italic>, 9<italic>D</italic> and 12<italic>D</italic> downstream of WT0 (left) and WT3 (right); settling period (dark grey); LES wake centerline envelope (light grey).<bold>(A)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(B)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g009.tif"/>
</fig>
<p>The wake centerline computed by the model is in good overall agreement with the wake centroid extracted from the LES. The model appears to correctly advect the large wake features and to reproduce consistent wake deflection amplitudes. The accuracy of the wake centerline prediction is however limited by that of the underlying flow estimator. The transverse velocity estimations for WT0 clearly outperform those obtained for WT3 (<xref ref-type="fig" rid="F5">Figure&#xa0;5</xref>) which directly translates into a better tracking of the wake center downstream of WT0. This increased mismatch also reflects the higher complexity of the wake downstream of WT3 as indicated by the broader wake envelope. Moreover, the performances of the Lagrangian flow model degrade as the wavelength of the meandering mode considered decreases. As noted previously, this may be partially explained by the reduced turnover time of small-scale eddies. Small eddies quickly evolve as they travel downstream thereby making the information conveyed by the particles less relevant as they age. As a result, the signal cross-correlations, <inline-formula id="inf76">
<mml:math id="m109">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula>, tend to decrease with the downstream distance.</p>
<p>The wake centerlines are further compared in terms of their statistics on the basis of the work of <xref ref-type="bibr" rid="B22">Foti&#xa0;et&#xa0;al.&#xa0;(2018)</xref>. Each wake centerline is first low-pass filtered spatially with a cut-off length of 1<italic>D</italic>. The maxima and minima of the subsequent signals are then tracked and the statistics are evaluated. The amplitude, <italic>A</italic>, is defined as half the transverse distance between two consecutive maxima-minima while the wavelength, <italic>&#x3bb;</italic>, is computed as the streamwise distance between two successive maxima or minima. Finally the Strouhal number is introduced as:<disp-formula id="e28">
<mml:math id="m110">
<mml:mi>S</mml:mi>
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>U</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>A</mml:mi>
<mml:mi>B</mml:mi>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x22c5;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
<label>(28)</label>
</disp-formula>where <inline-formula id="inf77">
<mml:math id="m111">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> is the wake convection speed. These quantities are then binned, with respect to the downwind distance from the rotor. The resulting wake statistics are finally averaged over the turbines WT0 to WT4 and the results are plotted in <xref ref-type="fig" rid="F10">Figure&#xa0;10</xref>. The greyed areas (i.e., <inline-formula id="inf78">
<mml:math id="m112">
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>3</mml:mn>
</mml:math>
</inline-formula> and <inline-formula id="inf79">
<mml:math id="m113">
<mml:mn>11</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>) denote areas that are not exploitable owing to the method used for the computation of the wake statistics. It is nonetheless plotted for the sake of transparency.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>Isolated wind turbines: mean binned statistics computed from the reconstructed flow field (full blue) against the one retrieved from the LES (full black); wake centerline amplitudes (<italic>A</italic>); wavelengths (<italic>&#x3bb;</italic>); convective speeds <inline-formula id="inf80">
<mml:math id="m114">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi mathvariant="normal">u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>; Strouhal numbers (<italic>St</italic>); 25 and 75% confidence bounds of the binned quantities (dashed); <bold>(A)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(B)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g010.tif"/>
</fig>
<p>The method is first applied to the wake centerline time series extracted from the LES using a Gaussian mask with <inline-formula id="inf81">
<mml:math id="m115">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c3;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> and <italic>&#x3c3;</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>. The LES results demonstrate good agreement with previous experimental investigations by <xref ref-type="bibr" rid="B16">Coudou&#xa0;(2021)</xref>. However, while they report strong influence of the ABL characteristics on the wake meandering statistics, we do no distinguish such a trend in the current context: the wake statistics exhibit a similar behavior for the low- and high-TI configurations.</p>
<p>When comparing the Lagrangian flow model statistics to that of the LES, reasonable match is obtained regarding the predicted binned amplitudes. Both approaches result in a drop in amplitude beyond 8<italic>D</italic> and the binned amplitude probability distributions look similar.</p>
<p>The wake convection speed is slightly overestimated by the Lagrangian flow model even though both curves present similar trends. The wake recovery leads to higher <inline-formula id="inf82">
<mml:math id="m116">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>u</mml:mi>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>w</mml:mi>
</mml:mrow>
</mml:msub>
</mml:math>
</inline-formula> in the far wake. We however note that wake convection speed behavior in the near wake <inline-formula id="inf83">
<mml:math id="m117">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> is not consistent with that of LES. A more consistent behavior is obtained when the near wake correction is disabled. This however leads to a significant time offset between the LES and the flow model time responses.</p>
<p>We finally investigate the mean wavelength: this metric is roughly constant across all downstream distances but appears inflated by the model while the LES produces values in line with the ones obtained by <xref ref-type="bibr" rid="B15">Coudou&#xa0;et&#xa0;al.&#xa0;(2018)</xref> (i.e., <inline-formula id="inf84">
<mml:math id="m118">
<mml:mn>2.5</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>3.25</mml:mn>
</mml:math>
</inline-formula> for isolated wind turbines). This in turn results into an underestimation of the Strouhal number. Wake lengths under 3<italic>D</italic> are mostly overlooked by the model. Improving the resolution (i.e., the particle shedding frequency) can substantially improve this match but does not translate into a better correspondence of the time series. If a wider Gaussian mask <italic>&#x3c3;</italic>
<sub>
<italic>x</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>y</italic>
</sub> &#x3d;&#xa0;<italic>&#x3c3;</italic>
<sub>
<italic>z</italic>
</sub> &#x3d;&#xa0;<italic>D</italic>/2 is employed for the LES wake centerline extraction, better agreement is recovered regarding the binned wavelengths while similar agreement is conserved for the other statistics.</p>
</sec>
<sec id="s3-2-1-2">
<title>3.2.1.2 Rotor Effective Wind Speed</title>
<p>The rotor-effective streamwise velocity, <italic>u</italic>
<sub>
<italic>RE</italic>
</sub>, describes how the rotor-averaged velocity of a fictive wind turbine placed at some location downstream would evolve with time. The 2D flow field inferred by the Lagrangian Flow model is extrapolated outside the reference <italic>x</italic> &#x2212;&#xa0;<italic>z</italic> plane assuming wake axi-symmetry and neglecting the flow shear while the reference <italic>u</italic>
<sub>
<italic>RE</italic>
</sub> value is simply extracted from the LES using a circular mask. Both curves are plotted on <xref ref-type="fig" rid="F11">Figure&#xa0;11</xref>.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Isolated wind turbines: temporal evolution of the fictive streamwise rotor effective velocities at different downstream station (3<italic>D</italic>, 6<italic>D</italic> and 9<italic>D</italic>) downstream WT0 (left) and WT3 (right); flow model (blue) and LES (black); estimated freestream rotor effective velocities (red) <bold>(A)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(B)</bold> <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;10%.</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g011.tif"/>
</fig>
<p>The rotor effective velocity can be considered as the superposition of the freestream velocity and of the speed deficit. The former dictates the slow velocity fluctuations caused by the heterogeneous inflow and the latter, strongly influenced by the meandering phenomenon, leads to the marked drops in velocity observed within the wake. Specifically, wake meandering deviates the wake into or away from the fictious downstream rotors, thus successively decreasing and increasing the rotor effective wind speed. This phenomena is remarkably well captured downstream of WT0 for the low-TI configuration (and to some more limited extent for the high-TI one). In the low-TI case, the extreme wake centerline deflection occurring 9<italic>D</italic> behind WT0 at times 45<italic>T</italic>
<sub>
<italic>C</italic>
</sub>, 65<italic>T</italic>
<sub>
<italic>C</italic>
</sub> and 105<italic>T</italic>
<sub>
<italic>C</italic>
</sub> coincides with a sharp increases in <italic>u</italic>
<sub>
<italic>RE</italic>
</sub>. Similar peaks can be found in the high-TI case for times 40<italic>T</italic>
<sub>
<italic>C</italic>
</sub>, 45<italic>T</italic>
<sub>
<italic>C</italic>
</sub> and 105<italic>T</italic>
<sub>
<italic>C</italic>
</sub>. Still, most small-scale velocity fluctuations are overlooked by the rotor as they corresponds the eddies whose characteristic dimensions fall beyond the model resolution. The model performances regarding this metric are however not consistent across all wind turbines: turbines whose meandering is poorly captured are obviously less likely to produce accurate predictions <italic>u</italic>
<sub>
<italic>RE</italic>
</sub>. Nevertheless, in all cases, the initial drop in streamwise velocity as well as the slow dynamics of the deficit recovery are well captured by the Lagrangian flow model.</p>
</sec>
</sec>
<sec id="s3-2-2">
<title>3.2.2 Small Wind Farm</title>
<p>Let us now assess the model in a configuration quite close to an operational use with wake impingement. We consider a small wind farm operating inside a weakly turbulent ABL (<italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%); 12 turbines, initially at rest, are distributed across three rows with a uniform streamwise spacing of 7<italic>D</italic>. The resulting wind farm layout is illustrated in <xref ref-type="fig" rid="F12">Figure&#xa0;12A</xref> at <italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>Small wind farm: instantaneous (<italic>t</italic> &#x3d;&#xa0;1,000&#xa0;s) streamwise velocity field across the 12 wind turbines farm for <italic>U</italic>
<sub>ABL</sub> &#x3d;&#xa0;8&#xa0;ms<sup>&#x2212;1</sup> and <italic>TI</italic>
<sub>ABL</sub> &#x3d;&#xa0;6%; <bold>(A)</bold> full flow field predicted by the flow model (left) and retrieved from the LES (right); <bold>(B)</bold> velocity profiles at different streamwise locations predicted by the model (blue) and retrieved from the LES (black).</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g012.tif"/>
</fig>
<p>For the sake of conciseness, the validation of the flow sensing module is not presented in the context of waked wind turbines. The MLP training database nevertheless includes both waked and freestream wind turbines while the BEM-Kalman based estimator does not differentiate between waked and unwaked settings. The framework developed can therefore be extended to waked rotor as demonstrated in this section.</p>
<p>Each wake is discretized using 25 wake particles and 15 freestream ones while the update and shedding frequencies are kept unchanged (<inline-formula id="inf85">
<mml:math id="m119">
<mml:mfrac>
<mml:mrow>
<mml:mn>4</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula> and <inline-formula id="inf86">
<mml:math id="m120">
<mml:mfrac>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>T</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, respectively). The reconstruction of the 1,250&#xa0;s-long flow field requires a wall-clock time of 8&#xa0;s on the same hardware as for <xref ref-type="sec" rid="s3-2-1">Section&#xa0;3.2.1</xref>.</p>
<p>A satisfactory match is obtained between the LES data and the reconstructed flow field. The instantaneous streamwise velocity profiles appear similar in both cases as illustrated in <xref ref-type="fig" rid="F12">Figure&#xa0;12B</xref>. The estimated wake intensities, widths and deflections are globally well captured by the model even though the increasing levels of wake asymmetry and incoherence observed for turbine deeper in the array are not reflected by the wake model. The smoothing introduced by the model is particularly apparent for WT3, WT7 and WT11 whose wakes are pictured as much more coherent than what they really are.</p>
<p>The Lagrangian flow model allows to capture most of the large-scale freestream flow heterogeneities. The wind turbines of the center row experience a slower freestream than that of the upper and lower row. Some blindspots nonetheless exist between the wind turbines rows where no information is available. As a result, the large high-velocity gust propagating between the first and second row remains completely unnoticed by the model.</p>
<p>
<xref ref-type="fig" rid="F13">Figure&#xa0;13</xref> provides a comparison of the history of the transverse wake deflection. In accordance with the non-waked studies of <xref ref-type="sec" rid="s3-2-1">Section&#xa0;3.2.1</xref>, high correlations are reported for the freestream wind turbines (<inline-formula id="inf87">
<mml:math id="m121">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.85</mml:mn>
</mml:math>
</inline-formula> and 0.76). After the wakes have propagated throughout the farm (<italic>t</italic> &#x226b;&#xa0;32<italic>T</italic>
<sub>
<italic>C</italic>
</sub>), broader wake envelopes indicative of a more pronounced asymmetry are observed for wind turbines deep into the wind farm. The wake centerline dynamics predicted by the wake model nonetheless remain in relatively good agreement with the LES data with a minimum score of <inline-formula id="inf88">
<mml:math id="m122">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.55</mml:mn>
</mml:math>
</inline-formula> for WT7. Remarkably, they even exhibit an amplification of the meandering process within turbines rows reported by <xref ref-type="bibr" rid="B16">Coudou&#xa0;(2021)</xref> and <xref ref-type="bibr" rid="B39">Muller&#xa0;et&#xa0;al.&#xa0;(2015)</xref>. For an identical downstream position, the amplitude of wake meandering increases for wind turbine deeper into the row (e.g., WT0 and WT1). The meandering amplitudes however seem to be overestimated for wind turbines deep into the array (WT2 - WT3 - WT6 - WT7). Finally, no significant loss in accuracy with respect to the LES-fed flow model is obtained when using the flow sensing approach. This confirms the good performances of the flow sensing module in the context of Lagrangian flow modeling.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>Small wind farm: history of the wake centerline position 6<italic>D</italic> downstream WT0-WT7 estimated by the model (blue) against the one retrieved from the LES (black); bottom row WT0-WT3 (left); middle row WT4-WT7 (right); model fed with the flow sensing data (full blue); model fed with LES data (dashed blue); settling period (dark grey); LES wake centerline envelope (light grey).</p>
</caption>
<graphic xlink:href="fenrg-10-884068-g013.tif"/>
</fig>
</sec>
</sec>
</sec>
<sec id="s4">
<title>4 Discussion</title>
<p>The presented work introduces a <italic>particle-based</italic> wind farm flow modeling framework aimed at wind farm control. It reconstructs the farm flow field in terms of a <italic>freestream velocity field</italic> and of a <italic>wake velocity deficit field</italic> based on information recovered at the wind turbines through a flow sensing module. The wakes are modeled using simplified speed deficits and this information is propagated across the wind farm in a physics-informed fashion thereby capturing the dynamic wake signature at a low computational cost: 5 &#xd7;&#xa0;10<sup>&#x2212;4</sup> to 7 &#xd7;&#xa0;10<sup>&#x2212;4</sup> wall-clock seconds are required per simulation second on a single core laptop depending on the configuration studied.</p>
<p>The resulting surrogate wake model can, to some extent, be regarded as a flow sensing-based hybrid approach between the FAST-farm implementation (<xref ref-type="bibr" rid="B27">Jonkman and Shaler,&#xa0;2021</xref>) of the DWM and the standard, steady-state speed deficit formulation introduced by <xref ref-type="bibr" rid="B3">Bastankhah and Port&#xe9;-Agel&#xa0;(2016)</xref>. Its wake-particle formulation is analogous to the FLORIDyn observations-points approach proposed by <xref ref-type="bibr" rid="B5">Becker&#xa0;et&#xa0;al.&#xa0;(2022)</xref> which also allows to account for heterogeneous inflow in its latest version.</p>
<p>This particle-based discretization is particularly in-line with the particle filter approach as investigated by <xref ref-type="bibr" rid="B32">Le&#xa0;Provost and Eldredge&#xa0;(2021)</xref> or <xref ref-type="bibr" rid="B41">Notter&#xa0;et&#xa0;al.&#xa0;(2020)</xref>. Moreover, another notable aspect for the further development of this framework is its limited number of input parameters and the reduction of the state space size in order to facilitate the tuning procedure. This should allow to extend the presented formalism to joint state-space correction scheme in a ensemble manner akin to <xref ref-type="bibr" rid="B18">Doekemeijer&#xa0;et&#xa0;al.&#xa0;(2018b)</xref> or <xref ref-type="bibr" rid="B24">Howland&#xa0;et&#xa0;al.&#xa0;(2020)</xref>. Similar configurations have already been successfully investigated by <xref ref-type="bibr" rid="B20">Dong&#xa0;et&#xa0;al.&#xa0;(2021)</xref> or <xref ref-type="bibr" rid="B35">Lio&#xa0;et&#xa0;al.&#xa0;(2020)</xref> in an attempt to improve the DWM operational performances by assimilating loads or Lidar measurements.</p>
<p>Simulation results demonstrate that the proposed Lagrangian flow model achieves good estimates of the flow state in both low- and high-TI configurations when compared to LES results. The analysis is first oriented toward the modelization of isolated turbines and the ensuing findings are then corroborated by the study of a small 12 turbines wind farm with strong wake interactions. The main dynamic features of the flow are captured: both the deflection and shape of the speed deficit and the heterogeneous flow field features are consistent with the LES. The model distinctly provides additional insight into the wake physics when compared against the traditional steady state approaches. Great agreement is observed regarding wake meandering: the Lagrangian flow model is indeed able to capture the distinctive wake meandering signature across large downstream distances while being fed with limited and localized flow information. The lowest correlation score between the predicted wake centerline and its LES counterpart is observed 12<italic>D</italic> downstream the wind turbine with a value of 0.50 while correlation scores as high as 0.85 are obtained closer to the rotor (i.e., 6<italic>D</italic>), where the information gathered by the wind turbine is more pertinent. The model however introduces a strong smoothing of LES field since its resolution is limited by the rotor-averaged nature of the information collected. This is reflected by an overprediction of the averaged meandering wavelength: in line with past investigations (e.g., <xref ref-type="bibr" rid="B16">Coudou,&#xa0;2021</xref>) the LES provides a mean wavelength of around <inline-formula id="inf89">
<mml:math id="m123">
<mml:mn>2.75</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>3.25</mml:mn>
</mml:math>
</inline-formula> while, for the flow model, a value around <inline-formula id="inf90">
<mml:math id="m124">
<mml:mn>3.5</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3bb;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x3c;</mml:mo>
<mml:mn>4.5</mml:mn>
</mml:math>
</inline-formula> is recovered. Feeding the model with Lidar data could therefore allow the model to boost its spatial resolution thereby improving its overall performances. Moreover, it is not clear whether or not the ANN transverse velocity estimator will generalize well to other wind turbines geometries or ABL characteristics. This is problematic as we observe a strong influence of the accuracy of the transverse velocity estimator on the performances of the flow model as a whole. As mentioned previously, one way the robustness of the transverse velocity estimator could be improved is by taking advantage of more advanced ANN architecture that explicitly account for time (e.g., Long Short Term Memory Recursive Neural Network). They should result in a better ability of the neural network to deal with the transverse velocity history thereby improving its accuracy. The use of Lidar data is yet another tool that could also potentially alleviate the need for such a error-prone flow estimator thereby making this framework more robust. Notable efforts toward reconstructing the ambient flow from Lidar have been performed by various authors including <xref ref-type="bibr" rid="B4">Bauweraerts and Meyers&#xa0;(2021)</xref> and could provide valuable additional insight into the ambient flow physics. One could also envision to merge both the transverse velocity measurements and the ANN inside a unified framework relying on a Kalman filter in a similar fashion as for the BEM-based rotor-normal velocity estimator.</p>
<p>Clearly, this model is part of a more general recent trend toward the development of operational dynamic surrogate wake models aimed at model-based wind farm control (<xref ref-type="bibr" rid="B18">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2018b</xref>; <xref ref-type="bibr" rid="B5">Becker&#xa0;et&#xa0;al.,&#xa0;2022</xref>) and that rely on valuable corrective information provided by state feedback to enhance their robustness (<xref ref-type="bibr" rid="B17">Doekemeijer&#xa0;et&#xa0;al.,&#xa0;2018a</xref>; <xref ref-type="bibr" rid="B24">Howland&#xa0;et&#xa0;al.,&#xa0;2020</xref>). We believe that such an operational meandering-capturing model could prove invaluable for the mitigation of fatigue loads in wind farms. This is supported by recent studies (e.g., <xref ref-type="bibr" rid="B44">Reinwardt&#xa0;et&#xa0;al.,&#xa0;2020;&#xa0;Moens&#xa0;and&#xa0;Chatelain,&#xa0;2022</xref>) that clearly demonstrate that the meandering behavior definitely governs fatigue loads; this clearly pleads for the capture of the phenomenon by an operational model if one targets fatigue alleviating model-predictive control of wind farms. Further work toward evaluating the dynamic response of the flow model to a control step input change is also under progress (<xref ref-type="bibr" rid="B33">Lejeune&#xa0;et&#xa0;al.,&#xa0;2022</xref>) and shall further demonstrate the applicability of the presented framework to operational wind farm control.</p>
</sec>
</body>
<back>
<sec id="s5" sec-type="data-availability">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s6">
<title>Author Contributions</title>
<p>The theoretical bases were laid down by PC and ML. ML assembled the LES data base used in this work. He also implemented and validated the flow sensing module and the Lagrangian flow model. MM developed the LES wind turbine model and provided technical support for it. She further implemented the wake tracking algorithm with the in-house flow solver. PC and ML analyzed the results and authored the manuscript.</p>
</sec>
<sec id="s7">
<title>Funding</title>
<p>This project has received funding from the European Research Council (ERC) under the European Union&#x2019;s Horizon 2020 research and innovation program (grant agreement no. 725627). Simulations were performed using computational resources provided by the Consortium des &#xC9;quipements de Calcul intensif (C&#xC9;CI), funded by the Fonds de la Recherche Scientifique de Belgique (F.R.S.-FNRS) under Grant No. 2.5020.11, and computational resources made available on the Tier-1 supercomputer of the F&#xe9;d&#xe9;ration Wallonie-Bruxelles, infrastructure funded by the Walloon Region under the Grant Agreement No. 1117545.</p>
</sec>
<sec sec-type="COI-statement" id="s8">
<title>Conflict of Interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s9">
<title>Publisher&#x2019;s Note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ack>
<p>We acknowledge the contributions of Marion Coquelet (UCLouvain/UMons) toward the development of the rotor-normal sensing tool.</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Ba</surname>
<given-names>J. L.</given-names>
</name>
<name>
<surname>Kiros</surname>
<given-names>J. R.</given-names>
</name>
<name>
<surname>Hinton</surname>
<given-names>G. E.</given-names>
</name>
</person-group> (<year>2016</year>). <source>Layer Normalization. arXiv [Preprint]</source>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/1607.06450">https://arxiv.org/abs/1607.06450</ext-link> (Accessed December 15, 2021)</comment>. </citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bastankhah</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Port&#xe9;-Agel</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A New Analytical Model for Wind-Turbine Wakes</article-title>. <source>Renew. Energy</source> <volume>70</volume>, <fpage>116</fpage>&#x2013;<lpage>123</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2014.01.002</pub-id> </citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bastankhah</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Port&#xe9;-Agel</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Experimental and Theoretical Study of Wind Turbine Wakes in Yawed Conditions</article-title>. <source>J. Fluid Mech.</source> <volume>806</volume>, <fpage>506</fpage>&#x2013;<lpage>541</lpage>. <pub-id pub-id-type="doi">10.1017/jfm.2016.595</pub-id> </citation>
</ref>
<ref id="B4">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bauweraerts</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Meyers</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Reconstruction of Turbulent Flow Fields from Lidar Measurements Using Large-Eddy Simulation</article-title>. <source>J. Fluid Mech.</source> <volume>906</volume>, <fpage>A17</fpage>. <pub-id pub-id-type="doi">10.1017/jfm.2020.805</pub-id> </citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Becker</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ritter</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Doekemeijer</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>van der Hoek</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Konigorski</surname>
<given-names>U.</given-names>
</name>
<name>
<surname>Allaerts</surname>
<given-names>D.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>The Revised Floridyn Model: Implementation of Heterogeneous Flow and the Gaussian Wake</article-title>. <source>Wind Energy Sci. Discuss.</source> <volume>2022</volume>, <fpage>1</fpage>&#x2013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.5194/wes-2021-154</pub-id> </citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bertel&#xe8;</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bottasso</surname>
<given-names>C. L.</given-names>
</name>
<name>
<surname>Cacciola</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Daher Adegas</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Delport</surname>
<given-names>S.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Wind Inflow Observation from Load Harmonics</article-title>. <source>Wind Energy Sci.</source> <volume>2</volume>, <fpage>615</fpage>&#x2013;<lpage>640</lpage>. <pub-id pub-id-type="doi">10.5194/wes-2-615-2017</pub-id> </citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bertel&#xe8;</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Bottasso</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Non-deterministic Wind Observation from Wind Turbine Loads</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>062022</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/6/062022</pub-id> </citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Blondel</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Cathelain</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>An Adaptation of the Super Gaussian Wake Model for Yawed Turbine</article-title>. <source>Wind Energy Sci. Discuss.</source> <volume>5</volume>, <fpage>1</fpage>&#x2013;<lpage>16</lpage>. <pub-id pub-id-type="doi">10.5194/wes-2019-99</pub-id> </citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bossanyi</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2013</year>). <article-title>Un-freezing the Turbulence: Application to Lidar-Assisted Wind Turbine Control</article-title>. <source>Renew. Power Gener. IET</source> <volume>7</volume>, <fpage>321</fpage>&#x2013;<lpage>329</lpage>. <pub-id pub-id-type="doi">10.1049/iet-rpg.2012.0260</pub-id> </citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bottasso</surname>
<given-names>C. L.</given-names>
</name>
<name>
<surname>Cacciola</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Schreiber</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Local Wind Speed Estimation, with Application to Wake Impingement Detection</article-title>. <source>Renew. Energy</source> <volume>116</volume>, <fpage>155</fpage>&#x2013;<lpage>168</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2017.09.044</pub-id> </citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Braunbehrens</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Segalini</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>A Statistical Model for Wake Meandering behind Wind Turbines</article-title>. <source>J. Wind Eng. Indust. Aerodyn.</source> <volume>193</volume>, <fpage>103954</fpage>. <pub-id pub-id-type="doi">10.1016/j.jweia.2019.103954</pub-id> </citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brunton</surname>
<given-names>S. L.</given-names>
</name>
<name>
<surname>Noack</surname>
<given-names>B. R.</given-names>
</name>
<name>
<surname>Koumoutsakos</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Machine Learning for Fluid Mechanics</article-title>. <source>Annu. Rev. Fluid Mech.</source> <volume>52</volume>, <fpage>477</fpage>&#x2013;<lpage>508</lpage>. <pub-id pub-id-type="doi">10.1146/annurev-fluid-010719-060214</pub-id> </citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Coleman</surname>
<given-names>R. P.</given-names>
</name>
<name>
<surname>Feingold</surname>
<given-names>A. M.</given-names>
</name>
</person-group> (<year>1958</year>). <source>Theory of Self-Excited Mechanical Oscillations of Helicopter Rotors with Hinged Blades</source>. <comment>Tech. rep.,</comment>. <publisher-loc>Langley, Virginia</publisher-loc>: <publisher-name>NACA</publisher-name>. </citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Coudou</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Marichal</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Beeck</surname>
<given-names>J. V.</given-names>
</name>
<name>
<surname>Bricteux</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Development of Wake Meandering Detection Algorithms and Their Application to Large Eddy Simulations of an Isolated Wind Turbine and a Wind Farm</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1037</volume>, <fpage>072024</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1037/7/072024</pub-id> </citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Coudou</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>2021</year>). <source>Numerical and Experimental Investigations of the Meandering Phenomenon in Wind Turbine Wakes</source>. <publisher-loc>Belgium</publisher-loc>: <publisher-name>UMons/UCLouvain/VKI, Sint-Genesius-Rode</publisher-name>. <comment>Ph.D. thesis</comment>. </citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Doekemeijer</surname>
<given-names>B. M.</given-names>
</name>
<name>
<surname>Boersma</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Pao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>van Wingerden</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2018a</year>). <article-title>Joint State-Parameter Estimation for a Control-Oriented LES Wind Farm Model</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1037</volume>, <fpage>032013</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1037/3/032013</pub-id> </citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Doekemeijer</surname>
<given-names>B. M.</given-names>
</name>
<name>
<surname>Boersma</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Pao</surname>
<given-names>L. Y.</given-names>
</name>
<name>
<surname>Knudsen</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>van Wingerden</surname>
<given-names>J.-W.</given-names>
</name>
</person-group> (<year>2018b</year>). <article-title>Online model calibration for a simplified les model in pursuit of real-time closed-loop wind farm control</article-title>. <source>Wind Energy Sci.</source> <volume>3</volume>, <fpage>749</fpage>&#x2013;<lpage>765</lpage>. <pub-id pub-id-type="doi">10.5194/wes-3-749-2018</pub-id> </citation>
</ref>
<ref id="B19">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Doekemeijer</surname>
<given-names>B. M.</given-names>
</name>
<name>
<surname>Van Wingerden</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Fleming</surname>
<given-names>P. A.</given-names>
</name>
</person-group> (<year>2019</year>). &#x201c;<article-title>A Tutorial on the Synthesis and Validation of a Closed-Loop Wind Farm Controller Using a Steady-State Surrogate Model</article-title>,&#x201d; in <conf-name>2019 American Control Conference (ACC) (2019 American Control Conference (ACC))</conf-name>, <fpage>2825</fpage>&#x2013;<lpage>2836</lpage>. <pub-id pub-id-type="doi">10.23919/ACC.2019.8815126</pub-id> </citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Dong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Lio</surname>
<given-names>W. H.</given-names>
</name>
<name>
<surname>Meng</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Wake Position Tracking Using Dynamic Wake Meandering Model and Rotor Loads</article-title>. <source>J. Renew. Sustain. Energy</source> <volume>13</volume>, <fpage>023301</fpage>. <pub-id pub-id-type="doi">10.1063/5.0032917</pub-id> </citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Duc</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Coupiac</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Girard</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Giebel</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>G&#xf6;&#xe7;men</surname>
<given-names>T.</given-names>
</name>
</person-group> (<year>2019</year>). <article-title>Local Turbulence Parameterization Improves the Jensen Wake Model and its Implementation for Power Optimization of an Operating Wind Farm</article-title>. <source>Wind Energy Sci.</source> <volume>4</volume>, <fpage>287</fpage>&#x2013;<lpage>302</lpage>. <pub-id pub-id-type="doi">10.5194/wes-4-287-2019</pub-id> </citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Foti</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Sotiropoulos</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Similarity of Wake Meandering for Different Wind Turbine Designs for Different Scales</article-title>. <source>J. Fluid Mech.</source> <volume>842</volume>, <fpage>5</fpage>&#x2013;<lpage>25</lpage>. <pub-id pub-id-type="doi">10.1017/jfm.2018.9</pub-id> </citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gebraad</surname>
<given-names>P. M. O.</given-names>
</name>
<name>
<surname>van Wingerden</surname>
<given-names>J. W.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>A Control-Oriented Dynamic Model for Wakes in Wind Plants</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>524</volume>, <fpage>012186</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/524/1/012186</pub-id> </citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Howland</surname>
<given-names>M. F.</given-names>
</name>
<name>
<surname>Ghate</surname>
<given-names>A. S.</given-names>
</name>
<name>
<surname>Lele</surname>
<given-names>S. K.</given-names>
</name>
<name>
<surname>Dabiri</surname>
<given-names>J. O.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Optimal Closed-Loop Wake Steering, Part 1: Conventionally Neutral Atmospheric Boundary Layer Conditions</article-title>. <source>Wind Energy Sci. Discuss.</source> <volume>2020</volume>, <fpage>1</fpage>&#x2013;<lpage>38</lpage>. <pub-id pub-id-type="doi">10.5194/wes-2020-52</pub-id> </citation>
</ref>
<ref id="B25">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Jensen</surname>
<given-names>N.</given-names>
</name>
</person-group> (<year>1983</year>). <source>A Note on Wind Generator Interaction</source>. <comment>Tech. rep</comment>. <publisher-loc>Roskilde, Denmark</publisher-loc>: <publisher-name>Ris&#xf8; National Laboratory</publisher-name>. </citation>
</ref>
<ref id="B26">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Jonkman</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Butterfield</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Musial</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Scott</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Definition of a 5mw Reference Wind Turbine for Offshore System Development</source>. <publisher-name>Golden, CO: National Renewable Energy Laboratory NREL</publisher-name>. <pub-id pub-id-type="doi">10.2172/947422</pub-id> </citation>
</ref>
<ref id="B27">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Jonkman</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Shaler</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). <source>FAST.Farm User&#x2019;s Guide and Theory Manual</source>. <comment>Tech. rep</comment>. <publisher-name>Golden, CO: National Renewable Energy Laboratory</publisher-name>. </citation>
</ref>
<ref id="B28">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Keane</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Advancement of an Analytical Double-Gaussian Full Wind Turbine Wake Model</article-title>. <source>Renew. Energy</source> <volume>171</volume>, <fpage>687</fpage>&#x2013;<lpage>708</lpage>. <pub-id pub-id-type="doi">10.1016/j.renene.2021.02.078</pub-id> </citation>
</ref>
<ref id="B29">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Keck</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>de Mar&#xe9;</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Churchfield</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Larsen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Madsen</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>On Atmospheric Stability in the Dynamic Wake Meandering Model</article-title>. <source>Wind Energy</source> <volume>17</volume>, <fpage>1689</fpage>&#x2013;<lpage>1710</lpage>. <pub-id pub-id-type="doi">10.1002/we.1662</pub-id> </citation>
</ref>
<ref id="B30">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Larsen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Madsen Aagaard</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Bing&#xf6;l</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Mann</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ott</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>S&#xf8;rensen</surname>
<given-names>J.</given-names>
</name>
<etal/>
</person-group> (<year>2007</year>). <source>Dynamic Wake Meandering Modeling</source>. <publisher-name>Roskilde, Denmark: Ris&#xf8; National Laboratory</publisher-name>. </citation>
</ref>
<ref id="B31">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Larsen</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Ott</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Liew</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>van der Laan</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Simon</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Thorsen</surname>
<given-names>G.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>Yaw Induced Wake Deflection-A Full-Scale Validation Study</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>062047</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/6/062047</pub-id> </citation>
</ref>
<ref id="B32">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Le Provost</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Eldredge</surname>
<given-names>J. D.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Ensemble Kalman Filter for Vortex Models of Disturbed Aerodynamic Flows</article-title>. <source>Phys. Rev. Fluids</source> <volume>6</volume>, <fpage>050506</fpage>. <pub-id pub-id-type="doi">10.1103/physrevfluids.6.050506</pub-id> </citation>
</ref>
<ref id="B33">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lejeune</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Extension and Validation of an Operational Dynamic Wake Model to Yawed Configurations</article-title>. <source>J. Phys. Conf. Ser.</source> <comment>2265, 022018</comment>. <pub-id pub-id-type="doi">10.1088/1742-6596/2265/2/022018</pub-id> </citation>
</ref>
<ref id="B34">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lejeune</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Coquelet</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Coudou</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Data Assimilation for the Prediction of Wake Trajectories within Wind Farms</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>062055</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/6/062055</pub-id> </citation>
</ref>
<ref id="B35">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lio</surname>
<given-names>W. H.</given-names>
</name>
<name>
<surname>Larsen</surname>
<given-names>G. C.</given-names>
</name>
<name>
<surname>Poulsen</surname>
<given-names>N. K.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Dynamic Wake Tracking and Characteristics Estimation Using a Cost-Effective LiDAR</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>032036</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/3/032036</pub-id> </citation>
</ref>
<ref id="B36">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Machefaux</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Larsen</surname>
<given-names>G. C.</given-names>
</name>
<name>
<surname>Troldborg</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Gaunaa</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Rettenmeier</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Empirical Modeling of Single-Wake Advection and Expansion Using Full-Scale Pulsed Lidar-Based Measurements</article-title>. <source>Wind Energy</source> <volume>18</volume>, <fpage>2085</fpage>&#x2013;<lpage>2103</lpage>. <pub-id pub-id-type="doi">10.1002/we.1805</pub-id> </citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Correlations Between Wake Phenomena and Fatigue Loads Within Large Wind Farms: A Large-Eddy Simulation Study</article-title>. <source>Front. Energy Res.</source> <volume>10</volume>, <fpage>881532</fpage>. <pub-id pub-id-type="doi">10.3389/fenrg.2022.881532</pub-id> </citation>
</ref>
<ref id="B37">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Duponcheel</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Assessment of an Actuator Disk-Based Approach for the Prediction of Fatigue Loads in Wind Turbine Rotors</article-title>. <source>Wind Energy</source>. <comment>in press</comment>. </citation>
</ref>
<ref id="B38">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Moens</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Duponcheel</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Winckelmans</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Chatelain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>An Actuator Disk Method with Tip-Loss Correction Based on Local Effective Upstream Velocities</article-title>. <source>Wind Energy</source> <volume>21</volume>, <fpage>766</fpage>&#x2013;<lpage>782</lpage>. <pub-id pub-id-type="doi">10.1002/we.2192</pub-id> </citation>
</ref>
<ref id="B39">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Muller</surname>
<given-names>Y.-A.</given-names>
</name>
<name>
<surname>Aubrun</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Masson</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Determination of Real-Time Predictors of the Wind Turbine Wake Meandering</article-title>. <source>Exp. Fluids</source> <volume>56, 53</volume>. <pub-id pub-id-type="doi">10.1007/s00348-015-1923-9</pub-id> </citation>
</ref>
<ref id="B40">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Niayifar</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Port&#xe9;-Agel</surname>
<given-names>F.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>A New Analytical Model for Wind Farm Power Prediction</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>625</volume>, <fpage>012039</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/625/1/012039</pub-id> </citation>
</ref>
<ref id="B41">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Notter</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Gro&#xdf;</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Schrapel</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Fichter</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Multiple Thermal Updraft Estimation and Observability Analysis</article-title>. <source>J. Guid. Control, Dyn.</source> <volume>43</volume>, <fpage>490</fpage>&#x2013;<lpage>503</lpage>. <pub-id pub-id-type="doi">10.2514/1.G004205</pub-id> </citation>
</ref>
<ref id="B42">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Park</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Law</surname>
<given-names>K. H.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>A Data-Driven, Cooperative Wind Farm Control to Maximize the Total Power Production</article-title>. <source>Appl. Energy</source> <volume>165</volume>, <fpage>151</fpage>&#x2013;<lpage>165</lpage>. <pub-id pub-id-type="doi">10.1016/j.apenergy.2015.11.064</pub-id> </citation>
</ref>
<ref id="B43">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Paszke</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Gross</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Massa</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Lerer</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bradbury</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Chanan</surname>
<given-names>G.</given-names>
</name>
<etal/>
</person-group> (<year>2019</year>). &#x201c;<article-title>Pytorch: An Imperative Style, High-Performance Deep Learning Library</article-title>,&#x201d; in <source>Advances in Neural Information Processing Systems</source> (<publisher-name>Curran Associates, Inc.</publisher-name>), <volume>32</volume>, <fpage>8024</fpage>&#x2013;<lpage>8035</lpage>. </citation>
</ref>
<ref id="B44">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Reinwardt</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Schilling</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Dalhoff</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Steudel</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Breuer</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Extension of the DWM Model towards a Static Model for Site-specific Load Simulations</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>062007</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/6/062007</pub-id> </citation>
</ref>
<ref id="B45">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rott</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Petrovi&#x107;</surname>
<given-names>V.</given-names>
</name>
<name>
<surname>K&#xfc;hn</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Wind Farm Flow Reconstruction and Prediction from High Frequency SCADA Data</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>1618</volume>, <fpage>062067</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/1618/6/062067</pub-id> </citation>
</ref>
<ref id="B46">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schreiber</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Balbaa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bottasso</surname>
<given-names>C. L.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Brief Communication: A Double-Gaussian Wake Model</article-title>. <source>Wind Energy Sci.</source> <volume>5</volume>, <fpage>237</fpage>&#x2013;<lpage>244</lpage>. <pub-id pub-id-type="doi">10.5194/wes-5-237-2020</pub-id> </citation>
</ref>
<ref id="B47">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Th&#xf8;gersen</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Tranberg</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Herp</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Greiner</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>Statistical Meandering Wake Model and its Application to Yaw-Angle Optimisation of Wind Farms</article-title>. <source>J. Phys. Conf. Ser.</source> <volume>854</volume>, <fpage>012017</fpage>. <pub-id pub-id-type="doi">10.1088/1742-6596/854/1/012017</pub-id> </citation>
</ref>
<ref id="B48">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhan</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Letizia</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Iungo</surname>
<given-names>G. V.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Optimal Tuning of Engineering Wake Models through Lidar Measurements</article-title>. <source>Wind Energy Sci. Discuss.</source> <volume>5</volume>, <fpage>1</fpage>&#x2013;<lpage>28</lpage>. <pub-id pub-id-type="doi">10.5194/wes-2020-72</pub-id> </citation>
</ref>
</ref-list>
</back>
</article>