<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">WES</journal-id><journal-title-group>
    <journal-title>Wind Energy Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2366-7451</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-7-2163-2022</article-id><title-group><article-title>The revised FLORIDyn model: implementation <?xmltex \hack{\break}?> of heterogeneous flow and the Gaussian wake</article-title><alt-title>The revised FLORIDyn model: implementation of heterogeneous flow and the Gaussian wake</alt-title>
      </title-group><?xmltex \runningtitle{The revised FLORIDyn model: implementation of heterogeneous flow and the Gaussian wake}?><?xmltex \runningauthor{M.~Becker et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Becker</surname><given-names>Marcus</given-names></name>
          <email>marcus.becker@tudelft.nl</email>
        <ext-link>https://orcid.org/0000-0003-4250-7654</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Ritter</surname><given-names>Bastian</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff3">
          <name><surname>Doekemeijer</surname><given-names>Bart</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-2757-1615</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>van der Hoek</surname><given-names>Daan</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-8781-5661</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Konigorski</surname><given-names>Ulrich</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff4">
          <name><surname>Allaerts</surname><given-names>Dries</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-8758-3952</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>van Wingerden</surname><given-names>Jan-Willem</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-3061-7442</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Delft Center for Systems and Control, Delft University of Technology, <?xmltex \hack{\break}?> Mekelweg 2, 2628 CD Delft, the Netherlands</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Control Systems and Mechatronics Lab, Technische Universität Darmstadt, <?xmltex \hack{\break}?> Landgraf Georg Str. 4, 64283 Darmstadt, Germany</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>National Renewable Energy Laboratory, Golden, CO 80401, USA</institution>
        </aff>
        <aff id="aff4"><label>4</label><institution>Faculty of Aerospace Engineering, Delft University of Technology, <?xmltex \hack{\break}?> Kluyverweg 1, 2629 HS Delft, the Netherlands</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Marcus Becker (marcus.becker@tudelft.nl)</corresp></author-notes><pub-date><day>1</day><month>November</month><year>2022</year></pub-date>
      
      <volume>7</volume>
      <issue>6</issue>
      <fpage>2163</fpage><lpage>2179</lpage>
      <history>
        <date date-type="received"><day>15</day><month>December</month><year>2021</year></date>
           <date date-type="rev-request"><day>4</day><month>January</month><year>2022</year></date>
           <date date-type="rev-recd"><day>20</day><month>June</month><year>2022</year></date>
           <date date-type="accepted"><day>17</day><month>October</month><year>2022</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2022 Marcus Becker et al.</copyright-statement>
        <copyright-year>2022</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022.html">This article is available from https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d1e164">In this paper, a new version of the FLOw Redirection and Induction Dynamics (FLORIDyn) model is presented. The new model uses the three-dimensional parametric Gaussian FLORIS model and can provide dynamic wind farm simulations at a low computational cost under heterogeneous and changing wind conditions.</p>

      <p id="d1e167">Both FLORIS and FLORIDyn are parametric models which can be used to simulate wind farms, evaluate controller performance and can serve as a control-oriented model.  One central element in which they differ is in their representation of flow dynamics: FLORIS neglects these and provides a computationally very cheap approximation of the mean wind farm flow.
FLORIDyn defines a framework which utilizes this low computational cost of FLORIS to simulate basic wake dynamics. This is achieved by creating so-called observation points (OPs) at each time step at the rotor plane which inherit the turbine state.</p>

      <p id="d1e170">In this work, we develop the initial FLORIDyn framework further considering multiple aspects. The underlying FLORIS wake model is replaced by a Gaussian wake model. The distribution and characteristics of the OPs are adapted to account for the new parametric model but also to take complex flow conditions into account. To achieve this, a mathematical approach is developed to combine the parametric model and the changing, heterogeneous world conditions and link them with each OP. We also present a computationally lightweight wind field model to allow for a simulation environment in which heterogeneous flow conditions are possible.</p>

      <p id="d1e173">FLORIDyn is compared to Simulator for Offshore Wind Farm Applications (SOWFA) simulations in three- and nine-turbine cases under static and changing environmental conditions. The results show a good agreement with the timing of the impact of upstream state changes on downstream turbines. They also show a good agreement in terms of how wakes are displaced by wind direction changes and when the resulting velocity deficit is experienced by downstream turbines. A good fit of the mean generated power is ensured by the underlying FLORIS model. In the three-turbine case, FLORIDyn simulates 4 s simulation time in 24.49 ms computational time. The resulting new FLORIDyn model proves to be a computationally attractive and capable tool for model-based dynamic wind farm control.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d1e185">In recent years, the topic of wind farm control has gained traction as renewable energies become more and more relevant for the current and future energy mix. Maximizing the power generated by a wind farm is not a trivial task as the turbine-to-turbine interaction is characterized by the complex flow, large delay times and an ever-changing environment. In order to describe the wind field, parametric steady-state approximations have been developed. These describe the mean behavior of the flow with parametrized analytical expressions rather than differential equations.
A first approach was presented by <xref ref-type="bibr" rid="bib1.bibx23" id="text.1"/>, which motivated years later the development of more refined steady-state models, such as the Zone FLORIS model <xref ref-type="bibr" rid="bib1.bibx19" id="paren.2"/>. With these low-computational-cost and easy-to-implement wake descriptions, it is possible to develop a model-based control algorithm. These control strategies have managed to improve the power generated in high-fidelity simulations e.g., <xref ref-type="bibr" rid="bib1.bibx19" id="text.3"/> and in field experiments <xref ref-type="bibr" rid="bib1.bibx16" id="paren.4"/>. The success of parametric steady-state models opens up the question of whether it is possible to overcome one of their great shortcomings: the lack of dynamics. A low-computational-cost dynamic wake description can be used to more accurately describe the wake behavior on smaller timescales, during turbine state changes and during environmental changes. This could lead to more sophisticated control approaches and wind farm analysis methods.</p>
      <p id="d1e200">There have been efforts to implement parametric models in a dynamic manner, some of which are described here. For a more in-depth discussion of the current state of the art, the interested reader is referred to the review by <xref ref-type="bibr" rid="bib1.bibx25" id="text.5"/> and more recently, <xref ref-type="bibr" rid="bib1.bibx3" id="text.6"/>. In the current literature, we have identified two major trails of publications, which will be briefly discussed below.</p>
      <p id="d1e209">The first research trail begins with the Aeolus SimWindFarm toolbox <xref ref-type="bibr" rid="bib1.bibx21" id="paren.7"/>, which is publicly available. The toolbox uses the Jensen model <xref ref-type="bibr" rid="bib1.bibx23" id="paren.8"/>, coupled with a dynamic description of the centerline and a wind field grid.
The centerline would imitate the wake meandering effect based on passive tracers, traveling with the synthetically generated turbulent wind speed.
A number of limitations have been imposed for this toolbox: the mean wind speed and direction are constant, the flow field is calculated in 2D, and the turbines operate with fixed yaw angles. The toolbox has enabled the work of <xref ref-type="bibr" rid="bib1.bibx36" id="text.9"/>, who used the Frandsen multiple wake model <xref ref-type="bibr" rid="bib1.bibx17" id="paren.10"/> and added a description of turbine dynamics to estimate fatigue loads. The model is then used to perform induction control based on lookup tables of the thrust and power coefficients with the goal to redistribute loads. This work later inspired the dynamic wind farm simulator, introduced in <xref ref-type="bibr" rid="bib1.bibx11" id="text.11"/>. The model adds wake steering to the fatigue load estimation and induction control capabilities. To model the effect of yawing the turbine, the deflection formulation of <xref ref-type="bibr" rid="bib1.bibx24" id="text.12"/> is used. Based on data from the in-house code Bladed, the author formulates the effect of yaw misalignment on the power coefficient by a polynomial expression based on the blade pitch. The wind field is represented by low- and a high-frequency wind speed variations. The low-frequency variations are correlated across the wind farm and cause wake meandering and advection. The high-frequency part is uncorrelated between the turbines and is superimposed with the wake deficits. Lastly, the wake model is switched to the Ainslie model <xref ref-type="bibr" rid="bib1.bibx1" id="paren.13"/>.</p>
      <p id="d1e234">A second trail of publications can be found starting with <xref ref-type="bibr" rid="bib1.bibx39" id="text.14"/>, where the authors use the previously mentioned Jensen model and extend it to incorporate the impact of time-varying extraction of kinetic energy of turbines due to induction control. Assuming a constant wind direction and wind speed, the authors derive a linear approximation of the wake advection velocity based on the laws of momentum conservation and mass conservation. The result is a one-dimensional partial differential equation to describe the dynamic wake behavior. The model neglects possible changes of the wake expansion due to a changing thrust coefficient and also does not incorporate yaw angle changes. In <xref ref-type="bibr" rid="bib1.bibx40" id="text.15"/>, the authors extend their model to also take the effects of yawing into account. Most recently, this approach inspired the development of the Floating Offshore Wind Farm Simulator, published in <xref ref-type="bibr" rid="bib1.bibx26" id="text.16"/>. The authors extend the momentum conservation equations to incorporate time-varying free-stream wind velocity effects. Additionally, they couple the model to a dynamic description of floating platforms, restricted by mooring lines. The authors closely follow <xref ref-type="bibr" rid="bib1.bibx6" id="text.17"/> to derive a parametric Gaussian velocity shape for their model.</p>
      <p id="d1e250">Alongside the two discussed trails of publications, the dynamic wake meandering (DWM) model was developed. The DWM model, first presented by <xref ref-type="bibr" rid="bib1.bibx27" id="text.18"/> and later calibrated and refined by <xref ref-type="bibr" rid="bib1.bibx30" id="text.19"/>, proposes an approach much closer to established CFD methods. The model follows a pseudo-Lagrangian approach and creates turbulence boxes around the wake deficit which is created by the turbine. These boxes are then subject to a synthetic turbulent wind field, which allows the modeling of the wake meandering effect. The DWM model puts a focus on load estimation next to the power generated and simulates the turbine by coupling a CFD actuator disc model with an aeroelastic model. Compared to the other mentioned models, the DWM model presents a synergy of CFD methods with engineering approaches.</p>
      <p id="d1e259">Another early attempt to derive a dynamic model from a parametric steady-state model was published by <xref ref-type="bibr" rid="bib1.bibx18" id="text.20"/>, who utilized the just-published FLORIS model (FLOw Redirection and Induction in Steady state, <xref ref-type="bibr" rid="bib1.bibx19" id="altparen.21"/>) and created the FLORIDyn model (FLOw Redirection and Induction Dynamics). FLORIDyn creates so-called observation points (OPs) at the rotor plane which travel downstream at hub height with the effective wind speed. Their path follows the zone boundaries described by the FLORIS model. The wake deficit and shape depend on the yaw angle and the induction factor. Changes in these variables travel with the OPs and cause a delayed effect at downstream turbines. The authors derive a state-space representation of the model behavior and validate it in a six-turbine simulation against the high-fidelity large eddy simulation environment  SOWFA <xref ref-type="bibr" rid="bib1.bibx33" id="paren.22"/>. The state-space representation is then used to implement a Kalman filter for flow field estimation <xref ref-type="bibr" rid="bib1.bibx20" id="paren.23"/>. The model does have shortcomings: due to the two-dimensional flow, shear and veer effects can not be captured, the simulations only work in one wind direction and they do not capture turbulent effects. Furthermore, due to the way the OPs travel, parts of the wake can overlap and can create a faulty wake representation.</p>
      <p id="d1e274">In this paper, we aim to overcome these issues and bring the FLORIDyn approach into a form where it can incorporate  heterogeneous and changing flow conditions, wind shear, and added turbulence levels. To achieve these changes, we rework the framework to use a Gaussian FLORIS model  <xref ref-type="bibr" rid="bib1.bibx6" id="paren.24"/>. This requires a new formulation of the OP behavior. Due to these changes, the wakes can also incorporate locally different and changing flow conditions, such as wind speed, direction and ambient turbulence intensity. To drive the model, a concept of a wind field model is presented as well. The framework is then compared to the simulation environment SOWFA in three- and nine-turbine cases. Furthermore, in order to allow for collaboration and extension, the code is published in its entirety  <xref ref-type="bibr" rid="bib1.bibx8" id="paren.25"/>. The resulting Gaussian FLORIDyn model is a capable, open-source alternative to the few other existing in-house parametric dynamic models, developed for wind farm control purposes.</p>
      <p id="d1e283">The remainder of this paper is organized as follows: Sect. <xref ref-type="sec" rid="Ch1.S2"/> discusses the relevant characteristics of the former FLORIDyn framework and how it is adapted. The simulation results are presented in Sect. <xref ref-type="sec" rid="Ch1.S3"/>, which also discusses the computational performance. Section <xref ref-type="sec" rid="Ch1.S4"/> concludes the paper and gives recommendations for future work.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>A new parametric dynamic wind farm model</title>
      <p id="d1e300">In this section, the new Gaussian FLORIDyn model is introduced. To prevent confusion, we will refer to the models of Gebraad et al. as the Zone FLORIS model <xref ref-type="bibr" rid="bib1.bibx19" id="paren.26"/> and the Zone FLORIDyn model <xref ref-type="bibr" rid="bib1.bibx18" id="paren.27"/>. The Gaussian model by <xref ref-type="bibr" rid="bib1.bibx6" id="text.28"/> will be referred to as Gaussian FLORIS model.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1"><?xmltex \currentcnt{1}?><?xmltex \def\figurename{Figure}?><label>Figure 1</label><caption><p id="d1e314">Sketched shape of the wake with the different sections, the deflection and areas of equal relative reduction by the Gaussian shape.</p></caption>
        <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f01.png"/>

      </fig>

      <p id="d1e323">As the new Gaussian FLORIDyn model is building upon previous work, Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/> and <xref ref-type="sec" rid="Ch1.S2.SS2"/> briefly introduce the terminology and properties of the underlying Gaussian FLORIS model and the Zone FLORIDyn framework. The novel Gaussian FLORIDyn model makes changes to the Zone FLORIDyn framework. These are discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>. Section <xref ref-type="sec" rid="Ch1.S2.SS4"/> describes how heterogeneous environmental conditions are taken into account. To get the power coefficient (<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) and the thrust coefficient (<inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) values closer to the validation platform SOWFA, a lookup table was generated (Sect. <xref ref-type="sec" rid="Ch1.S2.SS5"/>). Lastly, a basic wind field model is given in Sect. <xref ref-type="sec" rid="Ch1.S2.SS6"/>. It is built to provide the heterogeneous field conditions to evaluate the FLORIDyn model.</p>
      <p id="d1e362">In the wake coordinate system, <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> describes the downwind direction, <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> the horizontal crosswind direction and <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> the vertical crosswind direction (Fig. <xref ref-type="fig" rid="Ch1.F1"/>). In this coordinate frame, the rotor center is always located at <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mo>]</mml:mo><mml:mo>⊤</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>. This coordinate system is not to be confused with the longitudinal (<inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>), latitudinal (<inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>) and vertical (<inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>) world coordinate system <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>The Gaussian FLORIS model</title>
      <p id="d1e486">The core of the used Gaussian FLORIS model is based on the work of  <xref ref-type="bibr" rid="bib1.bibx6" id="text.29"/>. This work describes a parametric, three-dimensional wake with a Gaussian-shaped wind speed recovery. As it has been applied and described in previous publications (e.g., <xref ref-type="bibr" rid="bib1.bibx15" id="altparen.30"/>), only the basic terminology is introduced here as well as the wake shape. In the present work of this paper, the model has been extended with the calculation of added turbulence as proposed by <xref ref-type="bibr" rid="bib1.bibx12" id="text.31"/>. The power calculation has been extended by the <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> adaptation to the yaw angle <xref ref-type="bibr" rid="bib1.bibx32" id="paren.32"/> and an efficiency term <inline-formula><mml:math id="M13" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> for tuning <xref ref-type="bibr" rid="bib1.bibx19" id="paren.33"/>. Figure <xref ref-type="fig" rid="Ch1.F1"/> depicts an illustration of the wake with its three areas: the potential core, the near-wake area and the far-wake area. For all areas a reduction factor <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mi>r</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">free</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be calculated, where <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">free</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the free wind speed and <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula> is the wind speed deficit. The potential core is a region from jets in a coflow <xref ref-type="bibr" rid="bib1.bibx28" id="paren.34"/>. Here, it is used to approximate the immediate region behind the rotor plane. Within the potential core, <inline-formula><mml:math id="M17" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is constant. In the near- and far-field area <inline-formula><mml:math id="M18" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> reduces to 0, following a Gaussian shape with the extremum at the centerline or border of the potential core. The recovery rate is based on <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the respective crosswind directions. The potential core width is described by <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, which continuously decrease for the length of the potential core <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Lastly, the deflection <inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> returns the position of the centerline.</p>
      <p id="d1e668">The mentioned variables are dependent on turbine states, such as the thrust coefficient <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the yaw angle <inline-formula><mml:math id="M26" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>, the ambient turbulence intensity <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and a set of 10 parameters. The parameters adjust wake properties such as the recovery rate, the expansion rate, the sensitivity to added turbulence levels and the influence of the yaw angle. The values of the parameters are listed in Table <xref ref-type="table" rid="Ch1.T1"/> in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>The Zone FLORIDyn model</title>
      <p id="d1e712">An initial FLORIDyn model was published in <xref ref-type="bibr" rid="bib1.bibx18" id="text.35"/>. The model is based on the previously published Zone FLORIS model, which approximates the wake shape with three zones: near field, far field and mixing zone <xref ref-type="bibr" rid="bib1.bibx19" id="paren.36"/>. Every zone has a formulation of the velocity recovery in downstream direction. To introduce dynamics,  observation points (OPs) are created at the rotor plane at each time step.</p>
      <p id="d1e721">The OPs serve the purpose to describe the local FLORIS wake characteristics at their location. To do that, they inherit the turbine states at the time of their creation which are necessary to calculate the FLORIS wake. With time, each OP travels downstream, representing a mass of air traveling in the wind. Their travel path is determined by the borders of the FLORIS wake zones. The speed they travel with is equal to the effective wind speed they represent. Figure <xref ref-type="fig" rid="Ch1.F2"/> shows the basic concept. Initial OPs are colored black to stress that they inherited the same state. The OPs created after the yaw step are colored white, showing that their inherited state differs.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2"><?xmltex \currentcnt{2}?><?xmltex \def\figurename{Figure}?><label>Figure 2</label><caption><p id="d1e728">Creation and propagation of the OPs: in panel <bold>(a)</bold> a set of OPs is created, inherits the turbine state and travels downstream, following the FLORIS wake shape, shown in panel <bold>(b)</bold>. In panel <bold>(c)</bold> the turbine state changed and the new OPs inherit a different state (now colored white) and follow the new, dark-indicated wake shape in panel <bold>(d)</bold>.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f02.png"/>

        </fig>

      <p id="d1e750">With this framework, the steady-state wake represents the known FLORIS wake, but other than in FLORIS, changes propagate through the wake instead of instantly affecting turbines downstream. If, for instance, the yaw angle of the turbine changes, the new generation of OPs will inherit the new angle while old OPs still travel according to the previous angle.</p>
      <p id="d1e753">In the case of overlapping wakes, an OP travels into the wake of another turbine. The OP locates the closest up- and downstream OPs from the foreign wake and interpolates their reduction factor at its location. In this model, the resulting reduction of the free wind speed is calculated as follows:
            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M28" display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{9.2}{9.2}\selectfont$\displaystyle}?><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">eff</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">free</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">own</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">free</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">own</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:munder><mml:munder class="underbrace"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∏</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mo mathvariant="normal">︸</mml:mo></mml:munder><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:munder><?xmltex \hack{$\egroup}?><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">free</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the free wind speed at the OP's location. This wake interaction model could also be exchanged for another formulation. The wind speed reduction <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">own</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is based on the OP's own wake, and <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the interpolated reduction of one of the <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> upwind turbines.</p>
      <p id="d1e922">To calculate the effective wind speed at the rotor plane, the model calculates an effective velocity reduction factor <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for every turbine at every time step. The algorithm combines the reduction of each upstream turbine by a root sum square. Within one wake, the reduction factors of the zones are summed, weighted by the overlapping area with the rotor plane.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Changes to the FLORIDyn approach</title>
      <p id="d1e944">Due to the changed underlying FLORIS model, the FLORIDyn approach needs to be adapted. Specifically, the move to a three-dimensional flow field requires a fitting distribution of the OPs, which is discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS1"/>. This opens up the possibility to reformulate the calculation of the effective wind speed at the rotor plane, which is presented in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS2"/>. The travel speed of the OPs is addressed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>. In this section, we use the wake coordinate system <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, indicated by the lower index <inline-formula><mml:math id="M35" display="inline"><mml:mn mathvariant="normal">1</mml:mn></mml:math></inline-formula> (e.g., <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>). The relation between world and wake coordinate system will be explained in Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>.</p>
<sec id="Ch1.S2.SS3.SSS1">
  <label>2.3.1</label><title>Distribution of the observation points</title>
      <p id="d1e997">By changing the underlying FLORIS model, the travel path of the OPs and their distribution has to be rethought. The Gaussian FLORIS model does not have defined borders, and it is three-dimensional. To cover the crosswind wake area regularly for any number of OPs, an algorithm based on the sunflower distribution was used <xref ref-type="bibr" rid="bib1.bibx44" id="paren.37"/>. The algorithm returns a relative crosswind coordinate <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> for a given number of OPs. We used 50 OPs per time step. To cover the majority of the Gaussian wake influence, the wake width was chosen to be <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> from the centerline and the potential core. The following equation is used to calculate the position of an OP in the wake coordinate system:

                  <disp-formula specific-use="align" content-type="numbered"><mml:math id="M40" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">δ</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E3"><mml:mtd><mml:mtext>3</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">pc</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

              Note that this model only assumes a horizontal deflection. To add a vertical deflection, due to rotor tilt for instance, Eq. (<xref ref-type="disp-formula" rid="Ch1.E3"/>) needs to be adapted accordingly. For simplicity's sake <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is used, which represents <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">nw</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">fw</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Respectively, <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is defined the same way. The variable <inline-formula><mml:math id="M47" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> describes the deflection of the centerline. If OPs travel below <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> they are ignored. Since <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are not changed during the simulation, they can be calculated a priori. They are then used in every time step for the new generation of OPs. OPs with the same relative coordinate follow each other and form what is called a chain. The number of chains is equal to the number of OPs created at each time step.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS2">
  <label>2.3.2</label><title>Wind speed at the rotor plane</title>
      <p id="d1e1404">Since OPs are created at the rotor plane and they interact with foreign wakes, they can be used to estimate the effective wind speed for the power generation. To do that, they have to be distributed across the rotor plane rather than the wake area:

                  <disp-formula specific-use="align" content-type="numbered"><mml:math id="M51" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E4"><mml:mtd><mml:mtext>4</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:mrow></mml:mfenced><mml:msub><mml:mo>∣</mml:mo><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mi>D</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:msub><mml:mo>∣</mml:mo><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mi>D</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

              The next step is to determine the area represented by every OP. This is done offline by generating a Voronoi pattern <xref ref-type="bibr" rid="bib1.bibx45 bib1.bibx46" id="paren.38"/> with the OPs' relative location as seeds and a circular boundary with radius 0.5. The area of the resulting polygons is normalized by the rotor area and used as weight. All weights are stored in the vector <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="bold-italic">w</mml:mi></mml:math></inline-formula>.</p>
      <p id="d1e1551">During the simulation, the OPs calculate the reduction of foreign wakes <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> on themselves as shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>). Stored in a vector <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>[</mml:mo><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">⋯</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">nOP</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo>]</mml:mo><mml:mo>⊤</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> the effective wind speed at the rotor plane is calculated as follows:
              <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M55" display="block"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">w</mml:mi><mml:mo>⊤</mml:mo></mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>∘</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M56" display="inline"><mml:mo>∘</mml:mo></mml:math></inline-formula> stands for the element-wise multiplication and <inline-formula><mml:math id="M57" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula> represents a vector of the free wind speeds at the locations of the OPs. An OP considers itself influenced by a foreign wake if the closest foreign OP is less than <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> away. This is an arbitrary chosen threshold to reduce the number of OPs for the interaction interpolation. As the outer wake OPs represent the most recovered sections of the wake, this still results in a smooth influence transition.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS3">
  <label>2.3.3</label><title>Travel speed</title>
      <p id="d1e1688">In the former version of the FLORIDyn model, the OPs travel with the effective wind speed they represent. Regions in the center of the wake with lower effective wind speeds therefore propagate the changes slower than the outer areas. While this seems an intuitive choice, it leads to problems. Initial simulation results showed that, in comparison to the SOWFA simulation, the effects of a state change arrive noticeably slower in FLORIDyn at downstream turbines. Also, due to the difference in OP travel speed, the outer regions adapt their shape earlier in a downstream location, which leads to overlapping areas with the slow regions, which have not adapted yet. This makes the wake representation not injective anymore: multiple OPs occupy and describe the same space at the same time with varying properties.</p>
      <p id="d1e1691">In this article, the OPs are assumed to propagate with the speed of the free-stream wind rather than the effective wind speed in accordance with Taylor's frozen turbulence hypothesis <xref ref-type="bibr" rid="bib1.bibx42" id="paren.39"/>. The decision is supported by  experimental results from <xref ref-type="bibr" rid="bib1.bibx38" id="text.40"/> and has also been used by other similar codes, e.g., <xref ref-type="bibr" rid="bib1.bibx21" id="text.41"/>. This also solves the issue of the overlapping wake areas since neighboring OPs travel at the same speed and follow the same state changes. Another implication of this adaptation is that OPs no longer need to calculate the influence of foreign wakes  at every time step. This would be used to determine their effective wind speed and thus how far they travel downstream in one time step. The only OPs which need to calculate the foreign influence are the ones at the rotor plane in order to determine the effective wind speed according to Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>). These model assumptions also significantly decrease the computational load during the simulation. The downside of the change is that the effects of state changes now arrive too fast and abrupt at downstream turbines, which will be seen and discussed with the simulation results in Sect. <xref ref-type="sec" rid="Ch1.S3"/>. In future work, the wake propagation speed could be a tuning parameter which is set depending on atmospheric conditions such as the turbulence intensity for instance <xref ref-type="bibr" rid="bib1.bibx2" id="paren.42"/>.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Including directional dependency and observation point propagation</title>
      <p id="d1e1720">In this section, we address how the OPs, and therefore the wakes, react to a wind direction change. We assume that a wind direction change only affects the wake orientation and that the wake structure and downstream evolution (as defined by the underlying FLORIS model) can be seen independent from the free-stream behavior. It is therefore possible to split the two aspects into two coordinate systems: the world coordinate system <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and the wake coordinate system <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. The free-flow conditions are described in <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, whereas the wake properties are described in <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. An OP links these two coordinate systems.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F3" specific-use="star"><?xmltex \currentcnt{3}?><?xmltex \def\figurename{Figure}?><label>Figure 3</label><caption><p id="d1e1769">This figure visualizes the working of Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>), which is applied for each OP individually. In panels <bold>(a)</bold> and <bold>(b)</bold>, the position update of an OP in a time step with a constant wind direction is depicted. Panels <bold>(c)</bold> and <bold>(d)</bold> show the position update when the wind direction changes. In this case, the wake coordinate system is rotated around the OP's location to match the new downstream direction. This causes the apparent origin of the wake in the world coordinate system to change, which is visualized by the grey turbine.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f03.png"/>

        </fig>

      <p id="d1e1792">The underlying FLORIS model is described in <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, where the origin <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> is located in the center of the rotor plane. The downwind distance is denoted as <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> describes the horizontal crosswind distance and <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> describes the vertical one. <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> does not have a special orientation apart from <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> being the ground level and the <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> axis pointing upwards. In this work, <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> describes the west–east axis, and <inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> describes the south–north axis. To transform a location vector <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, described in <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> of a turbine with the rotor-center location <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, into <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> the rotational matrix <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mn mathvariant="normal">01</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is used:
            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M78" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mn mathvariant="normal">01</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">φ</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="left left center"><mml:mtr><mml:mtd><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">φ</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
          This equation assumes a uniform wind direction <inline-formula><mml:math id="M79" display="inline"><mml:mi mathvariant="italic">φ</mml:mi></mml:math></inline-formula> at every location. This will not be the case for the formulation used for the OP propagation later on in Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>). Each OP has two location vectors, <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, one for each coordinate system. The OP's position update and its reduction factor is calculated in <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is used to calculate the wake interaction and to determine the wind speed, the wind direction and the ambient turbulence intensity. At the OP's creation, <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is determined by the Eqs. (<xref ref-type="disp-formula" rid="Ch1.E4"/>) and (<xref ref-type="disp-formula" rid="Ch1.E5"/>) for the crosswind coordinates; the downwind coordinate is set to 0. Its world location, <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, is then determined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>) with the wind direction <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">T</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> at the turbine location. To iterate the location of an OP from time step <inline-formula><mml:math id="M87" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> to time step <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, the downwind step is calculated first in <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>:
            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M90" display="block"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></inline-formula> is the time step duration and <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the magnitude of the wind vector <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> at the OP's location <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The direction will be applied in Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>). For the scope of this work, <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can only have non-zero components in the <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> direction. With <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> the new crosswind locations <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be calculated with the Eqs. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) and (<xref ref-type="disp-formula" rid="Ch1.E3"/>), respectively. This completes the transition <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo><mml:mo>→</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Note that only <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is needed to determine the OP's location in <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. At the cost of calculating <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> again at each time step, they do not have to be stored as states. To update <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the step which the OP took in <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> has to be translated into <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>:
            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M109" display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{8.6}{8.6}\selectfont$\displaystyle}?><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mn mathvariant="normal">01</mml:mn></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><?xmltex \hack{$\egroup}?><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the wind direction at <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Note that <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> refers to one OP's individual wind direction; other OPs may have different values. This means that each OP propagates on its own and non-uniform wind directions can be simulated. Figure <xref ref-type="fig" rid="Ch1.F3"/> shows the OP step in the wake and world coordinate system. In Fig. <xref ref-type="fig" rid="Ch1.F3"/>a and b the wind direction is constant, indicated by the arrow left to the <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> axis. The OP calculates its step in the wake coordinate system (dotted arrow) and updates its location vectors. These are here simplified to <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. In Fig. <xref ref-type="fig" rid="Ch1.F3"/>c the wind direction changes, and the former FLORIS wake description is invalid and greyed out. With the new wind direction <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">R</mml:mi><mml:mn mathvariant="normal">01</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">φ</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">OP</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is calculated differently. The OP can calculate its step in the wake coordinate system as before, but its translation <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>→</mml:mo><mml:msub><mml:mi mathvariant="script">K</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> changed. Note that neither <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> nor <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is influenced by the changed wind direction. Their magnitude and orientation remain the same in their respective coordinate systems; however, their orientation towards each other changes.</p><?xmltex \hack{\newpage}?>
</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><?xmltex \opttitle{Calculation of~$C_{\mathrm{T}}$ and~$C_{\mathrm{P}}$}?><title>Calculation of <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></title>
      <p id="d1e3028">The thrust coefficient <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is often approximated following the actuator disc theory: <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>a</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M124" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> is the axial induction factor. To circumvent this  approximation, simulations or experiments can be used to create lookup tables. Since most equations of the Gaussian FLORIS model are dependent directly on <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> rather than <inline-formula><mml:math id="M126" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula>, we used lookup tables generated in SOWFA to align FLORIDyn's thrust coefficient with what the turbines in the validation environment experience. For completeness, we also use lookup tables for the power coefficient <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The tables are generated for the DTU 10 MW reference turbine <xref ref-type="bibr" rid="bib1.bibx5" id="paren.43"/>. It has to be added that these tables are generated from a grid of high-fidelity simulations, where the coefficients were read after the simulation converged to a steady state. The tables can therefore only approximate the effect a changing turbine state and changing wind field conditions onto <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Control approaches for axial-induction-based controllers, such as the one presented by <xref ref-type="bibr" rid="bib1.bibx4" id="text.44"/>, successfully use similar lookup tables, which is why we assume these to be sufficient. Nevertheless, an extension for dynamic circumstances would be a valuable addition for future work but is also connected to a significant computational effort.</p>
      <p id="d1e3141">In the tables, the coefficients are described dependent on the blade pitch angle <inline-formula><mml:math id="M130" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> and the tip speed ratio <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M132" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is the angular velocity of the rotor. However, neither FLORIS nor FLORIDyn can provide <inline-formula><mml:math id="M133" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M134" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>. What they can provide is <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Combined with the assumption that each turbine follows a greedy control strategy and maximizes <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the given wind, we can formulate the coefficients dependent only on <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>: first maximize <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> within the physical limitations of the wind turbine for all wind speeds, and then use the <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> to calculate the respective <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The resulting curves can be seen in Fig. <xref ref-type="fig" rid="Ch1.F4"/>.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4"><?xmltex \currentcnt{4}?><?xmltex \def\figurename{Figure}?><label>Figure 4</label><caption><p id="d1e3296">Greedy control settings of the un-yawed 10 MW DTU reference turbine based on the effective rotor wind speed.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f04.png"/>

        </fig>

      <p id="d1e3306">Unfortunately, the resulting <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> values can get very high, especially for low wind speeds. This conflicts with some FLORIS equations which comprise the term <inline-formula><mml:math id="M143" display="inline"><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:math></inline-formula> and become complex for <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values above 1. To avoid these issues, <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is limited to its value at the Betz limit: <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>.</mml:mo><mml:mover accent="true"><mml:mn mathvariant="normal">8</mml:mn><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx10" id="paren.45"/>. Another complication is the calculation of the added turbulence levels as it is the only equation which requires the axial induction factor. In this case, the calculation of <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>a</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> was inverted to determine <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi>a</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, based on the actuator disc theory, as follows:
<?xmltex \hack{\newpage}?><?xmltex \hack{\vspace*{-6mm}}?>
            <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M149" display="block"><mml:mrow><mml:mi>a</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
          Yaw effects on <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M151" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> are neglected here. In future work this expression could be substituted, for instance by the polynomial approximation of <xref ref-type="bibr" rid="bib1.bibx31" id="text.46"/>.
It extends <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi>a</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values above 1. However, as <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is limited in this work, this extension is not necessary. The power coefficient is the remaining aspect which was used unaltered from the lookup tables. For the tested wind speeds below 11 m s<inline-formula><mml:math id="M155" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, the power coefficient is constant at <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.4929</mml:mn></mml:mrow></mml:math></inline-formula>. The effect of <inline-formula><mml:math id="M157" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> is approximated by multiplying <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">γ</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. For simplicity's sake we assume <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to be a constant value. This could be extended by the work presented by <xref ref-type="bibr" rid="bib1.bibx29" id="text.47"/>
which takes the presence of other wakes into account. Similarly, <xref ref-type="bibr" rid="bib1.bibx22" id="text.48"/> presents an adaptation for locally varying wind profiles.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Wind field model</title>
      <p id="d1e3643">In order to drive the FLORIDyn model, the wind field needs to be able to simulate heterogeneous, changing environmental conditions. The implemented solution is inspired by the work of <xref ref-type="bibr" rid="bib1.bibx15" id="text.49"/>. The basic assumption is that measurements of the wind field variables are available at certain locations. This could be due to satellite data, lidar measurements, met masts or other sensors. The value of a measurement for the location of an OP is then interpolated between the measurements available. To reduce the computational effort of an interpolation at every time step, a nearest-neighbor interpolation (NNI) is desirable. To get a sufficient resolution of the measurements to justify a NNI, the sparse measurements <inline-formula><mml:math id="M161" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula> have to be mapped to dense measurement grid points <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:
            <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M163" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where the matrix <inline-formula><mml:math id="M164" display="inline"><mml:mi mathvariant="bold">M</mml:mi></mml:math></inline-formula> describes the mapping and can be calculated offline. The <inline-formula><mml:math id="M165" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th row in <inline-formula><mml:math id="M166" display="inline"><mml:mi mathvariant="bold">M</mml:mi></mml:math></inline-formula> describes the percental composition of <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> from <inline-formula><mml:math id="M168" display="inline"><mml:mi mathvariant="bold-italic">m</mml:mi></mml:math></inline-formula>. As a result, the sum of every row in <inline-formula><mml:math id="M169" display="inline"><mml:mi mathvariant="bold">M</mml:mi></mml:math></inline-formula> is equal to 1. This way, a more complex interpolation can be reduced to a matrix multiplication and a NNI at runtime. In this work, a linear interpolation is used to map the measurements to the grid points, which are spaced in a <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:mn mathvariant="normal">20</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula> m grid. OPs outside of the grid defined by <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> use the closest grid point. This method is also independent from the quantity measured. In this work, the wind speed, the wind direction and the ambient turbulence intensity were interpolated with the presented method.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1" specific-use="star"><?xmltex \currentcnt{1}?><label>Table 1</label><caption><p id="d1e3765">Parameters used in the simulation with the values they influence.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="17">
     <oasis:colspec colnum="1" colname="col1" align="center"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:colspec colnum="6" colname="col6" align="center"/>
     <oasis:colspec colnum="7" colname="col7" align="center"/>
     <oasis:colspec colnum="8" colname="col8" align="left"/>
     <oasis:colspec colnum="9" colname="col9" align="center"/>
     <oasis:colspec colnum="10" colname="col10" align="center"/>
     <oasis:colspec colnum="11" colname="col11" align="left"/>
     <oasis:colspec colnum="12" colname="col12" align="center"/>
     <oasis:colspec colnum="13" colname="col13" align="center"/>
     <oasis:colspec colnum="14" colname="col14" align="left"/>
     <oasis:colspec colnum="15" colname="col15" align="center"/>
     <oasis:colspec colnum="16" colname="col16" align="center"/>
     <oasis:colspec colnum="17" colname="col17" align="center"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry rowsep="1" namest="col1" nameend="col13">FLORIS </oasis:entry>
         <oasis:entry colname="col14"/>
         <oasis:entry namest="col15" nameend="col16">FLORIDyn </oasis:entry>
         <oasis:entry colname="col17">Wind</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry rowsep="1" namest="col1" nameend="col2">Wake expansion </oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry rowsep="1" namest="col4" nameend="col7">Added turbulence </oasis:entry>
         <oasis:entry colname="col8"/>
         <oasis:entry rowsep="1" namest="col9" nameend="col10">Potential core </oasis:entry>
         <oasis:entry colname="col11"/>
         <oasis:entry rowsep="1" namest="col12" nameend="col13">Power </oasis:entry>
         <oasis:entry colname="col14"/>
         <oasis:entry rowsep="1" namest="col15" nameend="col16">chains, OPs </oasis:entry>
         <oasis:entry colname="col17">shear</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>b</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"/>
         <oasis:entry colname="col9"><inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">α</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col10"><inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col11"/>
         <oasis:entry colname="col12"><inline-formula><mml:math id="M180" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col13"><inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col14"/>
         <oasis:entry colname="col15"><inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col16"><inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col17"><inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">0.38371</oasis:entry>
         <oasis:entry colname="col2">0.003678</oasis:entry>
         <oasis:entry colname="col3"/>
         <oasis:entry colname="col4">0.73</oasis:entry>
         <oasis:entry colname="col5">0.8325</oasis:entry>
         <oasis:entry colname="col6">0.0325</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.32</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"/>
         <oasis:entry colname="col9">2.32</oasis:entry>
         <oasis:entry colname="col10">0.154</oasis:entry>
         <oasis:entry colname="col11"/>
         <oasis:entry colname="col12">0.8572</oasis:entry>
         <oasis:entry colname="col13">2.2</oasis:entry>
         <oasis:entry colname="col14"/>
         <oasis:entry colname="col15">50</oasis:entry>
         <oasis:entry colname="col16">200</oasis:entry>
         <oasis:entry colname="col17">0.08</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e4105">However, the presented method is only meant for values changing in the <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> direction. The wind speed is the only field measurement which is also changed in the <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> direction; wind direction and ambient turbulence intensity are assumed to be constant in the vertical direction. Following <xref ref-type="bibr" rid="bib1.bibx15" id="text.50"/> the power law is applied:
<?xmltex \hack{\newpage}?><?xmltex \hack{\vspace*{-6mm}}?>
            <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M189" display="block"><mml:mrow><mml:mi>u</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mi>u</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
          where <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the height of the measurement and <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the shear coefficient. The shear coefficient approximates the combined effect of atmospheric stability and surface roughness. A small value describes unstable flow conditions. Examples for characteristic <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values due to surface roughness are 0.11 over water, 0.16 over grass, 0.20 over shrubs, 0.28 over forests and 0.40 over cities <xref ref-type="bibr" rid="bib1.bibx14" id="paren.51"/>. In this work <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is equal to the hub height <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of the turbine.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Simulation results</title>
      <p id="d1e4286">In this section, the Gaussian FLORIDyn model is compared to SOWFA with the focus on turbine interaction. Two wind farm layouts are considered for comparison: three consecutive turbines and a nine-turbine cluster arranged in a <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> configuration. The DTU 10 MW reference turbine is used for all simulations. Table <xref ref-type="table" rid="Ch1.T1"/> summarizes the FLORIS and FLORIDyn parameters used in the simulations. The FLORIS parameters <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are from <xref ref-type="bibr" rid="bib1.bibx34" id="text.52"/>, <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>a</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are set based on FLORISSE_M <xref ref-type="bibr" rid="bib1.bibx13" id="paren.53"/>, and <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">α</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> follow the findings of <xref ref-type="bibr" rid="bib1.bibx6" id="text.54"/>. The efficiency <inline-formula><mml:math id="M202" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> was tuned based on turbine T0 in the three-turbine baseline case; <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> was tuned based on the three-turbine yaw case (Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS1"/> and <xref ref-type="sec" rid="Ch1.S3.SS1.SSS2"/> respectively). For FLORIDyn, <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> relates to the number of OP chains per turbine and <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to the number of OPs per chain. The value of <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> was set to cover the entire relevant downstream domain of a turbine; <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> was set to maintain a sufficient density of OPs at the location of other turbines. In FLORIDyn, one time step is 4.0 s long.</p>
      <p id="d1e4457">Table <xref ref-type="table" rid="Ch1.T1"/> also includes the wind shear coefficient, <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which was approximated based on the free flow in SOWFA. The inflow boundary conditions for SOWFA are provided by a precursor simulation which simulates a horizontally homogenous, conventionally neutral atmospheric boundary layer including Coriolis effects. The SOWFA settings differ for the three-turbine case and the nine-turbine case and will be explained in the respective sections.</p><?xmltex \hack{\newpage}?>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Three-turbine case</title>
      <p id="d1e4481">The three turbines are placed <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">892</mml:mn></mml:mrow></mml:math></inline-formula> m apart from each other in downwind direction. Turbine T0 is located at (608, 500 m), and T1 and T2 are at (1500, 500 m) and (2392, 500 m) respectively. The mean wind speed at hub height is approximately 8.2 m s<inline-formula><mml:math id="M210" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> with an ambient turbulence intensity of roughly 6 %. The mean wind direction is constant along the <inline-formula><mml:math id="M211" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis. The full SOWFA flow field domain spans <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> km and was simulated with a time step of <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.04</mml:mn></mml:mrow></mml:math></inline-formula> s. The base cells of the flow field are <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m. The refinement areas are centered in the domain and have no offset from the ground. The first refinement is <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn></mml:mrow></mml:math></inline-formula> km with <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> m cells, the second one is <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">0.6</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">0.35</mml:mn></mml:mrow></mml:math></inline-formula> km with <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn></mml:mrow></mml:math></inline-formula> m cells. Figure <xref ref-type="fig" rid="Ch1.F5"/> shows the to-scale layout including the areas of cell refinement. In SOWFA, the turbines are modeled with the built-in actuator line method (ALM) implementation <xref ref-type="bibr" rid="bib1.bibx41" id="paren.55"/>.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5"><?xmltex \currentcnt{5}?><?xmltex \def\figurename{Figure}?><label>Figure 5</label><caption><p id="d1e4636">Scaled layout of the three-turbine case with the wind direction indicated by an arrow on the left. The 0, 10 and 20<inline-formula><mml:math id="M219" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> yaw orientations from T0 are indicated as turbine symbols with the according orientation. The colored background areas indicate the zones of cell refinement.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f05.png"/>

        </fig>

      <p id="d1e4654">To give a better idea of the low-frequency, less-turbulent dynamics, the power generated in SOWFA is also presented filtered by a zero-phase second-order low-pass filter. This non-causal filter is added to aid the visual interpretation of the simulation results. The filter has a damping ratio of <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:mi>d</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn></mml:mrow></mml:math></inline-formula> and a natural frequency of <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.03</mml:mn></mml:mrow></mml:math></inline-formula> s<inline-formula><mml:math id="M222" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. This allows for a more equal comparison as FLORIDyn is sampled at a lower frequency and turbulence is only included as a flow field metric.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F6" specific-use="star"><?xmltex \currentcnt{6}?><?xmltex \def\figurename{Figure}?><label>Figure 6</label><caption><p id="d1e4696">Wind farm start-up and steady-state comparison of the power generated in SOWFA and in FLORIDyn. The unfiltered data are plotted in panel <bold>(a)</bold>, filtered data are plotted in panel <bold>(b)</bold>. The SOWFA data are filtered with a zero-phase (noncausal) low-pass filter and FLORIDyn with a causal low-pass filter.</p></caption>
          <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f06.png"/>

        </fig>

      <p id="d1e4711">A regular second-order low-pass filter with the same <inline-formula><mml:math id="M223" display="inline"><mml:mi>d</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M224" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is used for the FLORIDyn data. This causal filter visualizes how low-pass filtering would affect the predicted power generated. This could have advantages due to the changes made to the OP travel speed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>, which can lead to a very abrupt wake interaction, as will be discussed in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS1"/>. However, the filter also naturally adds a phase shift to the data, an effect which might not be desired.</p>
      <p id="d1e4732">Note that the two filters have different purposes: the non-causal SOWFA filter aims to help to interpret the simulation results, while the causal FLORIDyn filter explores if and when the use of a low-pass filter would be advantageous or if it would decrease the quality of the results.</p>
<sec id="Ch1.S3.SS1.SSS1">
  <label>3.1.1</label><title>Comparison of the wind farm start-up and steady state</title>
      <p id="d1e4742">In Fig. <xref ref-type="fig" rid="Ch1.F6"/> the power generated by the turbines in FLORIDyn is compared to the SOWFA simulation. The dynamics in this simulation are the turbulent wind field and the settling of the wake. In the unfiltered data, the interaction in FLORIDyn sets in earlier and more abrupt than in SOWFA. This is due to the OPs traveling at the free wind speed, as explained in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>. The slight curvature of the drop at <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> s can be explained by the wind shear: OPs at a lower altitude travel at a slower free wind speed than OPs at a higher altitude and therefore arrive later at the downstream turbine and therefore affect the turbine later. There are two major aspects to address in order to close the gap between the SOWFA and the FLORIDyn start-up: on the one hand, the way state changes propagate through the wake; on the other hand, how a downstream turbine reacts to the new wind field. To give an idea of how a change of the latter aspect would influence the plot, Fig. <xref ref-type="fig" rid="Ch1.F6"/> also shows low-pass-filtered FLORIDyn data in comparison to zero-phase-filtered SOWFA data. The FLORIDyn data align much more with the SOWFA data but still show discrepancies in terms of dynamic response and steady-state quality of the solution. It should be emphasized that the in-FLORIDyn-applied filter does not affect the wake, it only adds an artificial dynamic response to the power calculation. This is important when heterogeneous and changing wind directions are taken into account.</p>
      <p id="d1e4763">The power generated after the wind farm start-up remains steady in FLORIDyn. This is because there are no turbulent wind speed changes in FLORIDyn. In this state, FLORIDyn is equal to the underlying FLORIS model; therefore, errors in this state need to be solved by adapting the FLORIS model. This could be  done by parameter tuning, which has only been done partially in this work (<inline-formula><mml:math id="M226" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>; see introduction Sect. <xref ref-type="sec" rid="Ch1.S3"/>).</p>
      <p id="d1e4786">To incorporate the turbulent wind speed changes, at least to a certain degree, an estimation of the wind speed at the turbine location would be necessary. This could be done by including wind speed sensor data or estimating the wind based on the power generated <xref ref-type="bibr" rid="bib1.bibx20" id="paren.56"/> or based on a torque balance equation <xref ref-type="bibr" rid="bib1.bibx35" id="paren.57"/>.</p>
      <p id="d1e4795">A notable aspect of this simulation is the influence of the added turbulence. Because T0 adds turbulence to the wind field, the wake of turbine T1 recovers faster. Turbine T2 thus experiences higher wind speeds and generates more power than it would without the additional turbulence. This effect can also be observed in the SOWFA data. The old Zone FLORIDyn model is not able to capture this effect due to the underlying Zone FLORIS model. It shows how the FLORIDyn framework is inherently dependent on the capabilities of the employed FLORIS model.</p>
</sec>
<sec id="Ch1.S3.SS1.SSS2">
  <label>3.1.2</label><title>Comparison during a yaw angle change</title>
      <p id="d1e4806">In this simulation, the yaw angle <inline-formula><mml:math id="M228" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> of turbine T0 is changing from 0 to 20<inline-formula><mml:math id="M229" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> in steps of 10<inline-formula><mml:math id="M230" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, starting at <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula> and  800 s. The change rate of <inline-formula><mml:math id="M232" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> is set to 0.3<inline-formula><mml:math id="M233" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> s<inline-formula><mml:math id="M234" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. Figure <xref ref-type="fig" rid="Ch1.F7"/> shows the unfiltered SOWFA data in comparison to the unfiltered FLORIDyn data on the left, as well as the filtered data on the right. Filtering was performed as described in the introduction of Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F7" specific-use="star"><?xmltex \currentcnt{7}?><?xmltex \def\figurename{Figure}?><label>Figure 7</label><caption><p id="d1e4881">Comparison of the power generated in SOWFA and in FLORIDyn with changing yaw angles. The transparent bars indicate the time window in which turbine T0 increases its yaw angle by 10<inline-formula><mml:math id="M235" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>. Panel <bold>(a)</bold> shows the unfiltered data, and panel <bold>(b)</bold> shows the filtered data. The SOWFA data are filtered with a zero-phase (noncausal) low-pass filter and FLORIDyn with a causal low-pass filter.</p></caption>
            <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f07.png"/>

          </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F8" specific-use="star"><?xmltex \currentcnt{8}?><?xmltex \def\figurename{Figure}?><label>Figure 8</label><caption><p id="d1e4907">Comparison between the zero-phase-filtered (zp.f.) SOWFA data in the baseline case (bl.) and in the yaw case. <bold>(a)</bold> In absolute values; <bold>(b)</bold> with the difference between the yaw case and the baseline case. The transparent bars indicate the time window in which turbine T0 increases its yaw angle, first from 0 to 10<inline-formula><mml:math id="M236" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> and then to 20<inline-formula><mml:math id="M237" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>.</p></caption>
            <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f08.png"/>

          </fig>

      <p id="d1e4941"><?xmltex \hack{\newpage}?>In FLORIDyn, turbine T1 shows a slight reaction to the yaw changes of turbine T0 at roughly <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">320</mml:mn></mml:mrow></mml:math></inline-formula> s and more significantly at <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">920</mml:mn></mml:mrow></mml:math></inline-formula> s. The influence of the state change then travels further and impacts T2 at <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">430</mml:mn></mml:mrow></mml:math></inline-formula> s and, as well more significantly, at <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">1030</mml:mn></mml:mrow></mml:math></inline-formula> s. In SOWFA, the reaction is obscured by turbulent influences. However, an increase in average power can be seen for T1 and T2 throughout the entire simulation. Figure <xref ref-type="fig" rid="Ch1.F8"/> shows the baseline simulation in comparison to the SOWFA simulation, in absolute values and the difference. The data of both simulations can be compared since they use the same wind field. It allows for a more accurate determination of the reaction time to the upstream change. Turbine T1 starts to react to the first yaw angle change at <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">320</mml:mn><mml:mo>±</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> s, T2 at <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">434</mml:mn><mml:mo>±</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> s. Given the distance to T0, this translates to a travel speed of the first influence between [6.98, 7.97] m s<inline-formula><mml:math id="M244" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> to T1 and [7.38, 7.90] m s<inline-formula><mml:math id="M245" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> to T2. This indicates that first effects of the yaw angle change do travel at almost free-stream velocity and the times align with the FLORIDyn prediction. However, FLORIDyn does lack the dynamic nature of the interaction, which means the response of the wake to the state change of the upstream turbine and the response of the downstream turbine to changes in the wake. Given that all OPs travel at their free-stream velocity, turbine state changes are directly picked up by the OPs and transported, and the FLORIDyn turbine reacts immediately when the OP arrives. The low-pass-filtered results provide an idea of how a dynamic response could change the results. The unfiltered difference between the SOWFA simulations is given in the Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1"/>. Figure <xref ref-type="fig" rid="Ch1.F7"/> also shows that FLORIDyn underestimates the gain in generated energy in the steady-state region. The error likely lies with the underlying FLORIS model as it is a steady-state error. Better parameter tuning would likely decrease or even eliminate the error.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F9" specific-use="star"><?xmltex \currentcnt{9}?><?xmltex \def\figurename{Figure}?><label>Figure 9</label><caption><p id="d1e5058">Complete nine-turbine FLORIDyn flow field in comparison to SOWFA at <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:math></inline-formula> s. The wind direction change is indicated in the lower-left corner of the SOWFA plot.</p></caption>
            <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f09.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Nine-turbine case</title>
      <p id="d1e5089">In order to test the model in a changing environment, a simulation with nine turbines was performed. The turbines are arranged in a three-by-three grid with 900 m distance to the closest turbines and 600 m to the edge. The setup is presented in Fig. <xref ref-type="fig" rid="Ch1.F9"/> as well as the numbering of the turbines. The wind field performs a 60<inline-formula><mml:math id="M247" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> uniform wind direction change from 15 to 75<inline-formula><mml:math id="M248" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, as indicated in Fig. <xref ref-type="fig" rid="Ch1.F9"/>. The change starts at <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:math></inline-formula> s with 0.2<inline-formula><mml:math id="M250" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> s<inline-formula><mml:math id="M251" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and ends at <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">900</mml:mn></mml:mrow></mml:math></inline-formula> s. The change in wind direction is achieved by using SOWFA's built-in utility to specify the wind speed and wind direction at a certain height and time. For the remainder of the simulation, the wind field conditions remain steady. To keep the computational load of the SOWFA simulation low, the DTU 10 MW turbines were simulated with the actuator disc method (ADM). This also allows a coarser grid and time resolution: the domain is discretized in <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m cells, and the SOWFA time step length is set to 0.5 s. The flow field spans <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> km. The average wind speed during the simulation is 8.2 m s<inline-formula><mml:math id="M255" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>, and the ambient turbulence intensity is approximately 6 %. During the simulation, the turbines maintain a yaw angle of 0<inline-formula><mml:math id="M256" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> and turn with the wind. For simplicity we assume ideal wind direction tracking capabilities and apply a prescribed motion. For more information see the dataset which contains the SOWFA files for the case and the precursor simulation <xref ref-type="bibr" rid="bib1.bibx9" id="paren.58"/>.</p>
      <p id="d1e5217">Figure <xref ref-type="fig" rid="Ch1.F10"/> shows the flow field during the wind direction change, starting at the time instances <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">700</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula> and 900 s. The SOWFA slices are taken at hub height. To show the center of the FLORIDyn flow field, only OPs between <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">OP</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">1.5</mml:mn><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are plotted. As the wake expands, more chains leave these bounds, which leads to a sparser description of the wake in the plot. Due to the changes to FLORIDyn described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>, the OPs do not influence each other in the field and OPs with a higher velocity can appear among OPs with a lower velocity. The net effect of multiple OPs is only calculated at the rotor plane. The grey arrows in the FLORIDyn plots indicate the current wind direction. The plots of both simulations visualize how the wakes slowly transition to the new wind direction, forming a bow shape in the process. FLORIDyn seems to describe the general path of the SOWFA wakes quite well. It also capture some effects like shorter, wider wakes of T4 and T5 at <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">900</mml:mn></mml:mrow></mml:math></inline-formula> s.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F10"><?xmltex \currentcnt{10}?><?xmltex \def\figurename{Figure}?><label>Figure 10</label><caption><p id="d1e5292">Nine-turbine flow field at hub height during the wind direction change at <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">700</mml:mn></mml:mrow></mml:math></inline-formula> s <bold>(a, b)</bold>, <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">800</mml:mn></mml:mrow></mml:math></inline-formula> s <bold>(c, d)</bold> and <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">900</mml:mn></mml:mrow></mml:math></inline-formula> s <bold>(e, f)</bold>. The FLORIDyn flow field is on the left and includes grey arrows as an indicator of the current wind direction. On the right is the corresponding snapshot from the SOWFA simulation.</p></caption>
          <?xmltex \igopts{width=199.169291pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f10.png"/>

        </fig>

      <?xmltex \floatpos{t}?><fig id="Ch1.F11" specific-use="star"><?xmltex \currentcnt{11}?><?xmltex \def\figurename{Figure}?><label>Figure 11</label><caption><p id="d1e5350">Power generated in the nine-turbine case. The grey area marks the time window in which the wind direction linearly changes by 60<inline-formula><mml:math id="M264" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>. The plots are arranged to fit the layout of the wind farm in Fig. <xref ref-type="fig" rid="Ch1.F9"/>. The data show the zero-phase-filtered (zp. f.) and the unfiltered (unf.) SOWFA data, as well as the filtered (f.) and unfiltered FLORIDyn data.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f11.png"/>

        </fig>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2" specific-use="star"><?xmltex \currentcnt{2}?><label>Table 2</label><caption><p id="d1e5373">Points in time at which the power generated in the nine-turbine case is minimal due to wake interaction.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="8">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:colspec colnum="8" colname="col8" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" align="center">Turbine 1 </oasis:entry>
         <oasis:entry colname="col4"/>
         <oasis:entry rowsep="1" namest="col5" nameend="col6" align="center">Turbine 2 </oasis:entry>
         <oasis:entry colname="col7">Turbine 4</oasis:entry>
         <oasis:entry colname="col8">Turbine 5</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Min. 1</oasis:entry>
         <oasis:entry colname="col3">Min. 2</oasis:entry>
         <oasis:entry colname="col4"/>
         <oasis:entry colname="col5">Min. 1</oasis:entry>
         <oasis:entry colname="col6">Min. 2</oasis:entry>
         <oasis:entry colname="col7">Min. 1</oasis:entry>
         <oasis:entry colname="col8">Min. 1</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">SOWFA (s)</oasis:entry>
         <oasis:entry colname="col2">833.5</oasis:entry>
         <oasis:entry colname="col3">996.5</oasis:entry>
         <oasis:entry colname="col4"/>
         <oasis:entry colname="col5">822</oasis:entry>
         <oasis:entry colname="col6">972</oasis:entry>
         <oasis:entry colname="col7">826.5</oasis:entry>
         <oasis:entry colname="col8">809</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">FLORIDyn (s)</oasis:entry>
         <oasis:entry colname="col2">832</oasis:entry>
         <oasis:entry colname="col3">992</oasis:entry>
         <oasis:entry colname="col4"/>
         <oasis:entry colname="col5">836</oasis:entry>
         <oasis:entry colname="col6">992</oasis:entry>
         <oasis:entry colname="col7">832</oasis:entry>
         <oasis:entry colname="col8">836</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Error (s)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.5</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4.5</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"/>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">14</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">5.5</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"><inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">27</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e5579">To more accurately judge the timing of FLORIDyn, Fig. <xref ref-type="fig" rid="Ch1.F11"/> shows the generated power of all nine turbines. The plots are arranged in the same way as the turbines in the flow field plots. All plots show the filtered and unfiltered data of FLORIDyn and SOWFA. The filtering is identical to the filtering in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. The grey area marks the time window of the wind direction change. Looking at the magnitude of the generated power, FLORIDyn predicts the average of the free-stream turbines T0, T3, T6, T7 and T8 quite well, but the remaining turbines show a noticeable offset in generated power. This could be due to speed-up effects and is briefly discussed in Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS2"/>. The interesting aspect is the timing of the wake interaction from upstream turbines with downstream turbines. The generated power by T4 shows the passing of the wake of T6 during the wind direction change. Noticeable is the accuracy with which the unfiltered FLORIDyn data align the unfiltered SOWFA data. Table <xref ref-type="table" rid="Ch1.T2"/> lists the points in time at which the power generated is minimal in SOWFA and in FLORIDyn, as well as the difference. This shows that FLORIDyn predicts the maximal wake influence 5.5 s later than in SOWFA.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T3" specific-use="star"><?xmltex \currentcnt{3}?><label>Table 3</label><caption><p id="d1e5593">Computational performance.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Number of turbines</oasis:entry>
         <oasis:entry colname="col2">2</oasis:entry>
         <oasis:entry colname="col3">3</oasis:entry>
         <oasis:entry colname="col4">4</oasis:entry>
         <oasis:entry colname="col5">9</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Total number of OPs</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:mn mathvariant="normal">9</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mi mathvariant="normal">comp</mml:mi><mml:mo>.</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">time</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">per</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">step</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (s)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.44</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.87</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.09</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:mn mathvariant="normal">6.13</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d1e5810">The filtering of the FLORIDyn data significantly worsens the quality of the result, in contrast to the simulations of the three-turbine case. The filtering was applied on the data from the rotor plane. Thus, only modifying the way a turbine perceives the incoming, foreign wake in FLORIDyn will not improve the simulation for changing environments. As a result, future research has to improve the way a turbine dynamically influences its own wake. Turbine T1 shows similar behavior to T4: the generated power shows the wake influence of T3 first, but it also shows, after the wind direction stopped changing, the influence of the outskirts of the wake of T6. While the timing of this interaction shows good agreement, the magnitude of the interaction is considerably lower in FLORIDyn than in SOWFA. This could be due to a too fast recovering FLORIS wake, an inadequate wake superposition method or due to local turbulence levels, which FLORIDyn can not capture.
T5 shows the overlapping influence of the wakes of T6 and T7. The two overlapping Gaussian influences do form a longer period of reduced generated power. This can be seen in both simulations. Table <xref ref-type="table" rid="Ch1.T2"/> shows the largest timing error between SOWFA and FLORIDyn for this wake influence. This could stem from an inaccurate wake interaction model and the way added turbulence is treated. T2 shows the most overlapping influences by the wakes of T3, T4, T6 and T7 in this order. While the first two overlapping interactions show good agreement, FLORIDyn shows poorer agreement with SOWFA for the influence of T6 and T7. Again, the SOWFA simulation suggests a larger decrease in generated power. A reason could be that the way wakes combine is not described accurately enough. The timing of the wake of T7 seems to be a bit too late as well. However, the SOWFA simulation recovers to its steady state at about the same time as FLORIDyn. Additionally, all turbines with the exception of T6 experience a small influence of the upstream turbines in the steady-state configuration. This effect is not noticeable in the SOWFA simulations. Concluding, FLORIDyn describes the timing of passing wake influences quite well. However, there are discrepancies in terms of magnitude and possibly in the way wakes combine their effects on downstream turbines.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Computational performance</title>
      <p id="d1e5823">Table <xref ref-type="table" rid="Ch1.T3"/> contains the average computational time per time step, which is equivalent to 4 s simulation time. This can be compared to SOWFA, which can take around <inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.8</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.4</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> s per core per time step, depending on the setup <xref ref-type="bibr" rid="bib1.bibx43" id="paren.59"/>. The FLORIDyn measurements were performed for two and three consecutive turbines and a <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> turbines wind farm. The times exclude plotting and the simulation setup time. A setup can take up to 3 s, depending on how much data need to be imported. The measurements were taken on a MacBook Pro (2019) with a 2.3 GHz eight-core Intel i9 CPU, 32 GB of 2667 MHz DDR4 RAM, an SSD, and MacOS Catalina (10.15.7). The simulation environment is MATLAB 2020a without the use of toolboxes, such as the parallel computing toolbox, and without precompiled code, besides what is built into the simulation environment. These results naturally vary with the layout, atmospheric behavior, simulation settings, etc. and are only meant to give an estimation of the performance.</p>
      <p id="d1e5886">A first takeaway is that FLORIDyn simulates all cases faster than real time: within 4 s, the simulation can perform between 164 and 6.5 simulation steps, depending on the number of turbines simulated. This results in 656 s<inline-formula><mml:math id="M284" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">Sim</mml:mi></mml:msub></mml:math></inline-formula> in-simulation time for two turbines and goes down to 26 s<inline-formula><mml:math id="M285" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">Sim</mml:mi></mml:msub></mml:math></inline-formula> for nine turbines in 4 s of real time. This opens up the needed computational headroom for a model-based real-time control strategy and the necessary optimization. On the other hand, the times also do not offer a large time window for optimization.  For instance, in the three-turbine yaw case, it takes roughly 300 s<inline-formula><mml:math id="M286" display="inline"><mml:msub><mml:mi/><mml:mi mathvariant="normal">Sim</mml:mi></mml:msub></mml:math></inline-formula> in simulated time until the yaw changes have propagated from the first turbine to the last turbine. To optimize the control actions with this model for the near future, parallel computing would be needed. With an increasing number of turbines, this time window decreases.</p>
      <p id="d1e5916">Generally, the computational time increases quadratically with <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>-</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, as <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> turbines need to determine if they are in the wake of another turbine and calculate the influence. This growth in computational effort is assumed to decrease with larger wind farms: as the spacial dimension grows, not every turbine needs to consider all other turbines for interaction. Nevertheless, the simulation times will exceed what is practical for a wind farm with <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mo>≫</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> turbines.</p>
      <p id="d1e5960">There are multiple opportunities to improve performance which have not been utilized so far. The main aspect which increases computational effort is the interaction among the turbines. A first step can be to calculate the turbine interactions in parallel. A second step is to find a way to efficiently determine if a turbine is influenced by a wake. Furthermore, the number of OPs per turbine can be decreased and tuned: not all chains need to be equally long, and OPs which wander out of the domain can be disregarded. Then, there is the fundamental question of whether the proposed structure of FLORIDyn can be improved, for instance by using less but more efficient OPs. Eventually, the programming platform can be switched to a choice which allows more specific optimization, e.g., C, C<inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> or Julia.</p>
</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Conclusions and recommendations</title>
      <p id="d1e5982">In this paper, a new FLORIDyn model is presented and compared to SOWFA simulations. This model utilizes a Gaussian FLORIS model and concepts from the previously published FLORIDyn framework by <xref ref-type="bibr" rid="bib1.bibx18" id="text.60"/> to create a three-dimensional, dynamic and computationally lightweight wind farm model. The new FLORIDyn model is further capable of simulating its wakes under heterogeneous and time-varying flow conditions. To achieve this, we presented a mathematical approach to decouple wake and flow characteristics into two coordinate system which are connected by observation points. To simulate changing environmental conditions, a method to map sparse flow field measurements to a finer grid was presented which avoids the interpolation cost at runtime. The new FLORIDyn model shows good performance compared to SOWFA in terms of timing and is able to  predict accurately when a downstream turbine is experiencing influences from upstream turbines.</p>
      <p id="d1e5988">Despite the considerable advancements over the old FLORIDyn implementation, there are still several aspect of the model which can be improved. The central aspect is how turbines influence wakes and how wakes are perceived by turbines. In this work we have decoupled the OP propagation speed from the effective wind speed, which effectively leads to a simpler, lightweight model while the wake behavior is still dynamically described. However, this way state changes reach downstream turbines too soon and in a sudden manner. Ideally this can be overcome by finding better, computationally lightweight methods to model the influence of changing turbine states on the wake needs and also how a turbine reacts to dynamic changes in the flow. Another aspect that can be improved is related to the interface between FLORIDyn and FLORIS. FLORIS has been subject to many developments and improvements, and FLORIDyn can utilize these improvements if it improves the interface: with a generic interface, newer developments can be included and existing code can be used in a sustainable manner. The simulations also show that parameter tuning has to be more accessible and possibly needs to be performed online in some cases. The next aspect which could be improved is the coupling of FLORIDyn with the turbulent environment of the real wind farm (or its surrogate). Combined with the changes to the OP propagation speed from this work, this can lead to a more uneven OP distribution with dense areas where high wind speeds decrease and sparse areas where low wind speeds increase. An extension to the model could feature a method to combine and generate OPs, depending on the density of OPs. Although, this could also lead to undesired information loss, depending on the implementation. To achieve better results, the wind field model has to be replaced or enhanced by estimators. The latter would provide a more accurate estimate of wind speed, direction and ambient turbulence intensity for the FLORIDyn simulation. In the long term, a dynamic description of the environment could become part of the FLORIDyn model. This could also include effects like induction zones and speed-up between the turbines. The last aspect to consider for improvement is the performance. In its current implementation, FLORIDyn delivers its results at a low computational cost. This has to be maintained, if not improved, to allow its use for dynamic real-time closed-loop control algorithms in the future. The simulation also needs to be structurally improved to keep its low computational cost for wind farms with large numbers of turbines.</p>
      <p id="d1e5991">Concluding, the new FLORIDyn model is a promising concept with unique strengths. With FLORIS in its core, it utilizes an existing, successfully employed model and provides a new dimension in a challenging environment at a low computational cost. The model can already be adapted to work in a closed-loop control design and shows more potential if the mentioned aspects are improved.</p>
</sec>

      
      </body>
    <back><app-group>

<app id="App1.Ch1.S1">
  <?xmltex \currentcnt{A}?><label>Appendix A</label><title>Additional plots and aspects of the simulation results</title>
<sec id="App1.Ch1.S1.SS1">
  <label>A1</label><title>Unfiltered difference between yawed and baseline case</title>
      <p id="d1e6013">Figure <xref ref-type="fig" rid="App1.Ch1.S1.F12"/> shows the difference between the power generated in SOWFA in the yaw case (Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS2"/>) and the steady-state baseline case (Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS1"/>). Both simulations are performed in the same turbulent environment, something which would be impossible to achieve in realistic conditions. This way, the difference allows for a clearer interpretation of the influence of the yaw step, at least the timing. In comparison to Fig. <xref ref-type="fig" rid="Ch1.F8"/>, Fig. <xref ref-type="fig" rid="App1.Ch1.S1.F12"/> shows the unfiltered data as well as the filtered data for all three turbines. T1 shows between <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">312</mml:mn></mml:mrow></mml:math></inline-formula> and 329 s a first reaction due to the changed wake of T0. T2 shows a first reaction between <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">426</mml:mn></mml:mrow></mml:math></inline-formula> and 442 s. The filtered data show a slightly earlier influence due to the nature of a zero-phase filter.</p>

      <?xmltex \floatpos{h!}?><fig id="App1.Ch1.S1.F12"><?xmltex \currentcnt{A1}?><?xmltex \def\figurename{Figure}?><label>Figure A1</label><caption><p id="d1e6053">Difference between the yaw case in SOWFA and the baseline case with unfiltered and zero-phase-filtered data. Filtering was performed before calculating the difference. The dotted lines mark the start of the yaw angle changes of T0.</p></caption>
          <?xmltex \igopts{width=236.157874pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f12.png"/>

        </fig>

</sec>
<sec id="App1.Ch1.S1.SS2">
  <label>A2</label><title>Averaged velocity in the nine-turbine case</title>
      <p id="d1e6070">Figure <xref ref-type="sec" rid="App1.Ch1.S1.SS2"/> shows the averaged wind speed in the nine-turbine case from <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">500</mml:mn></mml:mrow></mml:math></inline-formula> to 600 s at hub height in SOWFA. A total of 34 slices were used to average. The wind speed is binned into 11 wind speed sections which are plotted as contours. During the time of averaging the wind direction is constant. The average wind speed of the incoming air is approximately 8 m s<inline-formula><mml:math id="M294" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula>. However, between the turbine rows, the wind speed increases to a higher level, up to 9.44 m s<inline-formula><mml:math id="M295" display="inline"><mml:msup><mml:mi/><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> in some places. This could be explained by speed-up effects: the turbines act as resistances in the flow field, and the wind speed in the place of least resistance, between the turbines, increases. The effect has been observed and described in <xref ref-type="bibr" rid="bib1.bibx7" id="text.61"/> as well for instance. Due to the speed-up, the turbines further downstream experience higher wind speeds than the ones in free stream and generate more energy. Figure <xref ref-type="fig" rid="Ch1.F11"/> quantifies the effect, where T2, T4 and T5 generate significantly more energy than T6 for instance. After the wind direction change, the effect leads again T2 and T4 to generate more power. T1 is now in the situation T5 was in initially and also generates more energy. T5, however, drops to a lower level. Without an added model for effects like these, FLORIDyn (and FLORIS) will not be able to accurately describe the wind field.</p>

      <?xmltex \floatpos{h!}?><fig id="App1.Ch1.S1.F13"><?xmltex \currentcnt{A2}?><?xmltex \def\figurename{Figure}?><label>Figure A2</label><caption><p id="d1e6119">Averaged wind speed from <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">500</mml:mn></mml:mrow></mml:math></inline-formula> to 600 s, divided into 11 speed sections.</p></caption>
          <?xmltex \igopts{width=199.169291pt}?><graphic xlink:href="https://wes.copernicus.org/articles/7/2163/2022/wes-7-2163-2022-f13.png"/>

        </fig>

</sec>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d1e6145">The FLORIDyn code and the SOWFA code are publicly available under the GPL-3.0 license. The FLORIDyn repository contains the entire MATLAB code and the used measurements (power generated, blade pitch angle, rotor speed) from the used SOWFA simulations (<uri>https://data.4tu.nl/articles/software/Gaussian_FLORIDyn_Matlab_implementation_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/19867846</uri>; <xref ref-type="bibr" rid="bib1.bibx8" id="altparen.62"/>). It is published by the Delft Center for Systems and Control (DCSC). SOWFA is published by the National Renewable Energy Laboratory and written in C<inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> (<ext-link xlink:href="https://doi.org/10.5281/zenodo.3632051" ext-link-type="DOI">10.5281/zenodo.3632051</ext-link>, <xref ref-type="bibr" rid="bib1.bibx37" id="altparen.63"/>; <uri>https://github.com/dcsale/SOWFA</uri>, <xref ref-type="bibr" rid="bib1.bibx33" id="altparen.64"/>). The SOWFA files for the nine-turbine case are available to rerun and validate the claims from this paper (<ext-link xlink:href="https://data.4tu.nl/articles/dataset/SOWFA_simulation_setup_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/20026406">https://data.4tu.nl</ext-link>; <xref ref-type="bibr" rid="bib1.bibx9" id="altparen.65"/>).</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d1e6186">MB developed and implemented the model under the supervision of and in discussion with BR, BD, DvdH, UK, DA and JWvW. The SOWFA simulations were set up by DvdH, and BD provided the <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> lookup tables. JWvW was responsible for the funding. The manuscript was written by MB and corrected and proofread by BR, BD, DvdH, UK, DA and JWvW.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e6214">The contact author has declared that none of the authors has any competing interests.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d1e6220">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.</p>
  </notes><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d1e6226">This research has been supported by the Nederlandse Organisatie voor Wetenschappelijk Onderzoek program “Robust closed-loop wake steering for large densely space wind farms” (grant no. 17512).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d1e6232">This paper was edited by Jennifer King and reviewed by Jaime Liew and Paul van der Laan.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><?xmltex \def\ref@label{{Ainslie(1988)}}?><label>Ainslie(1988)</label><?label ainslieCalculatingFlowfieldWake1988?><mixed-citation>Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J. Wind Eng. Indust. Aerodynam., 27, 213–224, <ext-link xlink:href="https://doi.org/10.1016/0167-6105(88)90037-2" ext-link-type="DOI">10.1016/0167-6105(88)90037-2</ext-link>, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx2"><?xmltex \def\ref@label{{Andersen et~al.(2017)Andersen, Sørensen, and
Mikkelsen}}?><label>Andersen et al.(2017)Andersen, Sørensen, and
Mikkelsen</label><?label andersenTurbulenceEntrainmentLength2017?><mixed-citation>Andersen, S. J., Sørensen, J. N., and Mikkelsen, R. F.: Turbulence and
entrainment length scales in large wind farms, Philos. T. Roy. Soc. A, 375,
20160107, <ext-link xlink:href="https://doi.org/10.1098/rsta.2016.0107" ext-link-type="DOI">10.1098/rsta.2016.0107</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx3"><?xmltex \def\ref@label{{Andersson et~al.(2021)Andersson, Anaya-Lara, Tande, Merz, and
Imsland}}?><label>Andersson et al.(2021)Andersson, Anaya-Lara, Tande, Merz, and
Imsland</label><?label anderssonWindFarmControl2021?><mixed-citation>Andersson, L. E., Anaya-Lara, O., Tande, J. O., Merz, K. O., and Imsland, L.:
Wind farm control – Part I: A review on control system concepts and
structures, IET Renew. Power Generat., 15, 2085–2108, <ext-link xlink:href="https://doi.org/10.1049/rpg2.12160" ext-link-type="DOI">10.1049/rpg2.12160</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx4"><?xmltex \def\ref@label{{Annoni et~al.(2016)Annoni, Gebraad, Scholbrock, Fleming, and
Wingerden}}?><label>Annoni et al.(2016)Annoni, Gebraad, Scholbrock, Fleming, and
Wingerden</label><?label annoniAnalysisAxialInduction2016?><mixed-citation>Annoni, J., Gebraad, P. M. O., Scholbrock, A. K., Fleming, P. A., and
v. Wingerden, J.: Analysis of axial‐induction‐based wind plant control using an engineering and a high‐order wind plant model, Wind Energy, 19, 1135–1150, <ext-link xlink:href="https://doi.org/10.1002/we.1891" ext-link-type="DOI">10.1002/we.1891</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx5"><?xmltex \def\ref@label{{Bak et~al.(2013)Bak, Zahle, Bitsche, Kim, Yde, Henriksen, Hansen,
Blasques, Gaunaa, and Natarajan}}?><label>Bak et al.(2013)Bak, Zahle, Bitsche, Kim, Yde, Henriksen, Hansen,
Blasques, Gaunaa, and Natarajan</label><?label 10MWDTU?><mixed-citation>Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L. C., Hansen,
M. H., Blasques, J. P. A. A., Gaunaa, M., and Natarajan, A.: The DTU
10-MW reference wind turbine,
<uri>https://orbit.dtu.dk/en/publications/the-dtu-10-mw-reference-wind-turbine</uri>
(last access: 28 October 2022), 2013.</mixed-citation></ref>
      <ref id="bib1.bibx6"><?xmltex \def\ref@label{{Bastankhah and
Port\'{e}-Agel(2016)}}?><label>Bastankhah and
Porté-Agel(2016)</label><?label bastankhahExperimentalTheoreticalStudy2016?><mixed-citation>Bastankhah, M. and Porté-Agel, F.: Experimental and Theoretical Study of
Wind Turbine Wakes in Yawed Conditions, J. Fluid Mech., 806, 506–541, <ext-link xlink:href="https://doi.org/10.1017/jfm.2016.595" ext-link-type="DOI">10.1017/jfm.2016.595</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx7"><?xmltex \def\ref@label{{Bastankhah et~al.(2021)Bastankhah, Welch, Martínez-Tossas, King, and Fleming}}?><label>Bastankhah et al.(2021)Bastankhah, Welch, Martínez-Tossas, King, and Fleming</label><?label bastankhahAnalyticalSolutionCumulative2021?><mixed-citation>Bastankhah, M., Welch, B. L., Martínez-Tossas, L. A., King, J., and Fleming,
P.: Analytical solution for the cumulative wake of wind turbines in wind
farms, J. Fluid Mech., 911, A53, <ext-link xlink:href="https://doi.org/10.1017/jfm.2020.1037" ext-link-type="DOI">10.1017/jfm.2020.1037</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx8"><?xmltex \def\ref@label{{Becker(2022a)}}?><label>Becker(2022a)</label><?label beckerGaussianFLORIDynMatlab2022?><mixed-citation>Becker, M.: Gaussian FLORIDyn, Matlab implementation belonging to the
paper: The revised FLORIDyn model: Implementation of heterogeneous flow and the Gaussian wake, 4TU ResearchData [code],
<uri>https://data.4tu.nl/articles/software/Gaussian_FLORIDyn_Matlab_implementation_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/19867846</uri>
(last access: 27 October 2022), 2022a.</mixed-citation></ref>
      <ref id="bib1.bibx9"><?xmltex \def\ref@label{{Becker(2022b)}}?><label>Becker(2022b)</label><?label beckerSOWFASimulationSetup2022?><mixed-citation>Becker, M.: SOWFA simulation setup belonging to the paper: The revised
FLORIDyn model: Implementation of heterogeneous flow and the Gaussian wake, 4TU ResearchData [data set],
<uri>https://data.4tu.nl/articles/dataset/SOWFA_simulation_setup_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/20026406</uri>
(last access: 27 October 2022), 2022b.</mixed-citation></ref>
      <ref id="bib1.bibx10"><?xmltex \def\ref@label{{Bianchi et~al.(2007)Bianchi, Battista, and Mantz}}?><label>Bianchi et al.(2007)Bianchi, Battista, and Mantz</label><?label Bianchi2007?><mixed-citation>Bianchi, F. D., Battista, H. D., and Mantz, R. J.: Wind turbine control
systems: Principles, modelling and gain scheduling design, Wiley, <ext-link xlink:href="https://doi.org/10.1002/rnc.1263" ext-link-type="DOI">10.1002/rnc.1263</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx11"><?xmltex \def\ref@label{{Bossanyi(2018)}}?><label>Bossanyi(2018)</label><?label bossanyiCombiningInductionControl2018?><mixed-citation>Bossanyi, E.: Combining induction control and wake steering for wind farm
energy and fatigue loads optimisation, IOP Publ., 1037, 032011,
<ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/3/032011" ext-link-type="DOI">10.1088/1742-6596/1037/3/032011</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx12"><?xmltex \def\ref@label{{Crespo and
Hern\'{a}ndez(1996)}}?><label>Crespo and
Hernández(1996)</label><?label crespoTurbulenceCharacteristicsWindturbine1996?><mixed-citation>Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine
wakes, J. Wind Eng. Indust. Aerodynam., 61, 71–85, <ext-link xlink:href="https://doi.org/10.1016/0167-6105(95)00033-X" ext-link-type="DOI">10.1016/0167-6105(95)00033-X</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx13"><?xmltex \def\ref@label{{Doekemeijer et al.(2021)}}?><label>Doekemeijer et al.(2021)</label><?label FLORISSEM2020?><mixed-citation>Doekemeijer, B., Storm, R., Schreiber, J., and van der Hoek, D.: TUDelft-DataDrivenControl/FLORISSE_M: Stable version from 2018–2019 (v0.2), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.4458669" ext-link-type="DOI">10.5281/zenodo.4458669</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx14"><?xmltex \def\ref@label{{Emeis(2018)}}?><label>Emeis(2018)</label><?label Emeis2018?><mixed-citation>Emeis, S.: Wind Energy Meteorology: Atmospheric Physics for Wind Power Generation, in: 2nd Edn., Springer International Publishing,
<ext-link xlink:href="https://doi.org/10.1007/978-3-319-72859-9" ext-link-type="DOI">10.1007/978-3-319-72859-9</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx15"><?xmltex \def\ref@label{{Farrell et~al.(2021)Farrell, King, Draxl, Mudafort, Hamilton, Bay,
Fleming, and Simley}}?><label>Farrell et al.(2021)Farrell, King, Draxl, Mudafort, Hamilton, Bay,
Fleming, and Simley</label><?label farrellDesignAnalysisSpatially2020?><mixed-citation>Farrell, A., King, J., Draxl, C., Mudafort, R., Hamilton, N., Bay, C. J., Fleming, P., and Simley, E.: Design and analysis of a wake model for spatially heterogeneous flow, Wind Energ. Sci., 6, 737–758, <ext-link xlink:href="https://doi.org/10.5194/wes-6-737-2021" ext-link-type="DOI">10.5194/wes-6-737-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx16"><?xmltex \def\ref@label{{Fleming et~al.(2017)Fleming, Annoni, Shah, Wang, Ananthan, Zhang,
Hutchings, Wang, Chen, and Chen}}?><label>Fleming et al.(2017)Fleming, Annoni, Shah, Wang, Ananthan, Zhang,
Hutchings, Wang, Chen, and Chen</label><?label flemingFieldTestWake2017?><mixed-citation>Fleming, P., Annoni, J., Shah, J. J., Wang, L., Ananthan, S., Zhang, Z., Hutchings, K., Wang, P., Chen, W., and Chen, L.: Field test of wake steering at an offshore wind farm, Wind Energ. Sci., 2, 229–239, <ext-link xlink:href="https://doi.org/10.5194/wes-2-229-2017" ext-link-type="DOI">10.5194/wes-2-229-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx17"><?xmltex \def\ref@label{{Frandsen et~al.(2006)Frandsen, Barthelmie, Pryor, Rathmann, Larsen,
Hjstrup, and Thgersen}}?><label>Frandsen et al.(2006)Frandsen, Barthelmie, Pryor, Rathmann, Larsen,
Hjstrup, and Thgersen</label><?label frandsenAnalyticalModellingWind2006?><mixed-citation>Frandsen, S., Barthelmie, R., Pryor, S., Rathmann, O., Larsen, S., Højstrup, J., and Thøgersen, M.: Analytical modelling of wind speed deficit in large offshore wind farms, Wind Energy, 9, 39–53, <ext-link xlink:href="https://doi.org/10.1002/we.189" ext-link-type="DOI">10.1002/we.189</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx18"><?xmltex \def\ref@label{{Gebraad and van~Wingerden(2014)}}?><label>Gebraad and van Wingerden(2014)</label><?label gebraadControlOrientedDynamicModel2014?><mixed-citation>Gebraad, P. M. O. and van Wingerden, J. W.: A Control-Oriented Dynamic Model for Wakes in Wind Plants, J. Phys.: Conf. Ser., 524, 012186, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/524/1/012186" ext-link-type="DOI">10.1088/1742-6596/524/1/012186</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx19"><?xmltex \def\ref@label{{Gebraad et~al.(2014)Gebraad, Teeuwisse, van Wingerden, Fleming,
Ruben, Marden, and Pao}}?><label>Gebraad et al.(2014)Gebraad, Teeuwisse, van Wingerden, Fleming,
Ruben, Marden, and Pao</label><?label gebraadDatadrivenModelWind2014?><mixed-citation>Gebraad, P. M. O., Teeuwisse, F. W., van Wingerden, J. W., Fleming, P. A.,
Ruben, S. D., Marden, J. R., and Pao, L. Y.: A data-driven model for wind
plant power optimization by yaw control, in: 2014 American Control
Conference, 4–6 June 2014, Portland, Oregon, USA, 3128–3134, <ext-link xlink:href="https://doi.org/10.1109/ACC.2014.6859118" ext-link-type="DOI">10.1109/ACC.2014.6859118</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx20"><?xmltex \def\ref@label{{Gebraad et~al.(2015)Gebraad, Fleming, and van
Wingerden}}?><label>Gebraad et al.(2015)Gebraad, Fleming, and van
Wingerden</label><?label gebraadWindTurbineWake2015?><mixed-citation>Gebraad, P. M. O., Fleming, P. A., and van Wingerden, J. W.: Wind turbine wake estimation and control using FLORIDyn, a control-oriented dynamic wind
plant model, in: 2015 American Control Conference (ACC), 1–3 July 2015, Chicago, Illinois, USA, 1702–1708, <ext-link xlink:href="https://doi.org/10.1109/ACC.2015.7170978" ext-link-type="DOI">10.1109/ACC.2015.7170978</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx21"><?xmltex \def\ref@label{{Grunnet et~al.(2010)Grunnet, Soltani, Knudsen, Kragelund, and
Bak}}?><label>Grunnet et al.(2010)Grunnet, Soltani, Knudsen, Kragelund, and
Bak</label><?label grunnetAeolusToolboxDynamics2010?><mixed-citation>Grunnet, J. D., Soltani, M., Knudsen, T., Kragelund, M. N., and Bak, T.: Aeolus Toolbox for Dynamics Wind Farm Model, Simulation and Control,
in: European Wind Energy Conference and Exhibition, EWEC 2010, 20–23 April 2010, Warsaw, Poland,
<ext-link xlink:href="https://vbn.aau.dk/en/publications/aeolus-toolbox-for-dynamics-wind-farm-model-simulationand-control">https://vbn.aau.dk/en/publications/aeolus-toolbox-for-dynamics-wind-farm-model-simulationand</ext-link> (last access: 28 October 2022), 2010.</mixed-citation></ref>
      <ref id="bib1.bibx22"><?xmltex \def\ref@label{{Howland et~al.(2020)Howland, Gonzlez, Martnez, Quesada,
Larraaga, Yadav, Chawla, and
Dabiri}}?><label>Howland et al.(2020)Howland, Gonzlez, Martnez, Quesada,
Larraaga, Yadav, Chawla, and
Dabiri</label><?label howlandInfluenceAtmosphericConditions2020?><mixed-citation>Howland, M. F., González, C. M., Martínez, J. J. P., Quesada, J. B.,
Larrañaga, F. P., Yadav, N. K., Chawla, J. S., and Dabiri, J. O.: Influence of atmospheric conditions on the power production of utility-scale wind turbines in yaw misalignment, J. Renew. Sustain. Energ., 12, 063307, <ext-link xlink:href="https://doi.org/10.1063/5.0023746" ext-link-type="DOI">10.1063/5.0023746</ext-link>,2020.</mixed-citation></ref>
      <ref id="bib1.bibx23"><?xmltex \def\ref@label{{Jensen(1983)}}?><label>Jensen(1983)</label><?label jensenNoteWindGenerator1983?><mixed-citation>Jensen, N. O.: A note on wind generator interaction, oCLC: 144692423, Risø National Laboratory, Roskilde, Denmark, <uri>https://orbit.dtu.dk/en/publications/a-note-on-wind-generator-interaction</uri>
(last access: 28 October 2022), 1983.</mixed-citation></ref>
      <ref id="bib1.bibx24"><?xmltex \def\ref@label{{Jim\'{e}nez et~al.(2010)Jimenez, Crespo, and
Migoya}}?><label>Jiménez et al.(2010)Jimenez, Crespo, and
Migoya</label><?label jimenezApplicationTechniqueCharacterize2010?><mixed-citation>Jiménez, Ã., Crespo, A., and Migoya, E.: Application of a LES technique to characterize the wake deflection of a wind turbine in yaw, Wind Energy, 13, 559–572, <ext-link xlink:href="https://doi.org/10.1002/we.380" ext-link-type="DOI">10.1002/we.380</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx25"><?xmltex \def\ref@label{{Kheirabadi and Nagamune(2019)}}?><label>Kheirabadi and Nagamune(2019)</label><?label kheirabadiQuantitativeReviewWind2019?><mixed-citation>Kheirabadi, A. C. and Nagamune, R.: A quantitative review of wind farm control with the objective of wind farm power maximization, J. Wind Eng. Indust. Aerodynam., 192, 45–73, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2019.06.015" ext-link-type="DOI">10.1016/j.jweia.2019.06.015</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx26"><?xmltex \def\ref@label{{Kheirabadi and Nagamune(2021)}}?><label>Kheirabadi and Nagamune(2021)</label><?label kheirabadiLowfidelityDynamicWind2021?><mixed-citation>Kheirabadi, A. C. and Nagamune, R.: A low-fidelity dynamic wind farm model for simulating time-varying wind conditions and floating platform motion, Ocean Eng., 234, 109313, <ext-link xlink:href="https://doi.org/10.1016/j.oceaneng.2021.109313" ext-link-type="DOI">10.1016/j.oceaneng.2021.109313</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx27"><?xmltex \def\ref@label{{Larsen et~al.(2008)Larsen, Madsen, Thomsen, and
Larsen}}?><label>Larsen et al.(2008)Larsen, Madsen, Thomsen, and
Larsen</label><?label larsenWakeMeanderingPragmatic2008?><mixed-citation>Larsen, G. C., Madsen, H. A., Thomsen, K., and Larsen, T. J.: Wake meandering: a pragmatic approach, Wind Energy, 11, 377–395, <ext-link xlink:href="https://doi.org/10.1002/we.267" ext-link-type="DOI">10.1002/we.267</ext-link>, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx28"><?xmltex \def\ref@label{{Lee and Chu(2003)}}?><label>Lee and Chu(2003)</label><?label leeTurbulentJetCoflow2003?><mixed-citation>Lee, J. H. W. and Chu, V. H.: Turbulent Round Jet in Coflow, in: Turbulent Jets and Plumes, Springer US, Boston, MA, 179–209,
<ext-link xlink:href="https://doi.org/10.1007/978-1-4615-0407-8_6" ext-link-type="DOI">10.1007/978-1-4615-0407-8_6</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx29"><?xmltex \def\ref@label{{Liew et al.(2020)}}?><label>Liew et al.(2020)</label><?label liewAnalyticalModelPoweryaw2019?><mixed-citation>Liew, J., Urbán, A. M., and Andersen, S. J.: Analytical model for the power–yaw sensitivity of wind turbines operating in full wake, Wind Energ. Sci., 5, 427–437, <ext-link xlink:href="https://doi.org/10.5194/wes-5-427-2020" ext-link-type="DOI">10.5194/wes-5-427-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx30"><?xmltex \def\ref@label{{Madsen et~al.(2010)Madsen, Larsen, Larsen, Troldborg, and
Mikkelsen}}?><label>Madsen et al.(2010)Madsen, Larsen, Larsen, Troldborg, and
Mikkelsen</label><?label madsenCalibrationValidationDynamic2010?><mixed-citation>Madsen, H. A., Larsen, G. C., Larsen, T. J., Troldborg, N., and Mikkelsen, R.: Calibration and Validation of the Dynamic Wake Meandering Model for
Implementation in an Aeroelastic Code, J. Sol. Energy. Eng., 132, 041014, <ext-link xlink:href="https://doi.org/10.1115/1.4002555" ext-link-type="DOI">10.1115/1.4002555</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx31"><?xmltex \def\ref@label{{Madsen et~al.(2020)Madsen, Larsen, Pirrung, Li, and
Zahle}}?><label>Madsen et al.(2020)Madsen, Larsen, Pirrung, Li, and
Zahle</label><?label madsenImplementationBladeElement2020?><mixed-citation>Madsen, H. A., Larsen, T. J., Pirrung, G. R., Li, A., and Zahle, F.: Implementation of the blade element momentum model on a polar grid and its
aeroelastic load impact, Wind Energ. Sci., 5, 1–27,
<ext-link xlink:href="https://doi.org/10.5194/wes-5-1-2020" ext-link-type="DOI">10.5194/wes-5-1-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx32"><?xmltex \def\ref@label{{Medici(2005)}}?><label>Medici(2005)</label><?label Medici2005?><mixed-citation>Medici, D.: Experimental studies of wind turbine wakes – power optimisation and meandering, PhD thesis, KTH Stockholm, Stockholm,
<uri>https://www.diva-portal.org/smash/get/diva2:14563/FULLTEXT01.pdf</uri>
(last access: 28 October 2022), 2005.</mixed-citation></ref>
      <ref id="bib1.bibx33"><?xmltex \def\ref@label{{National Renewable Energy
Laboratory(2020)}}?><label>National Renewable Energy
Laboratory(2020)</label><?label nationalrenewableenergylaboratorySimulatorOffshoreWind2020?><mixed-citation>National Renewable Energy Laboratory: Simulator for offshore wind farm
applications, GitHub [code],
<uri>https://github.com/dcsale/SOWFA</uri> (last access: 28 October 2022), 2020.</mixed-citation></ref>
      <ref id="bib1.bibx34"><?xmltex \def\ref@label{{Niayifar and Port\'{e}-Agel(2015)}}?><label>Niayifar and Porté-Agel(2015)</label><?label niayifarNewAnalyticalModel2015?><mixed-citation>Niayifar, A. and Porté-Agel, F.: A new analytical model for wind farm power prediction, J. Phys.: Conf. Ser., 625, 012039,
<ext-link xlink:href="https://doi.org/10.1088/1742-6596/625/1/012039" ext-link-type="DOI">10.1088/1742-6596/625/1/012039</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx35"><?xmltex \def\ref@label{{Ortega et~al.(2013)Ortega, Mancilla‐David, and
Jaramillo}}?><label>Ortega et al.(2013)Ortega, Mancilla‐David, and
Jaramillo</label><?label ortegaGloballyConvergentWind2013?><mixed-citation>Ortega, R., Mancilla‐David, F., and Jaramillo, F.: A globally convergent wind
speed estimator for wind turbine systems, Int. J. Adapt. Control Sig. Process., 27, 413–425, <ext-link xlink:href="https://doi.org/10.1002/acs.2319" ext-link-type="DOI">10.1002/acs.2319</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx36"><?xmltex \def\ref@label{{Poushpas and Leithead(2014)}}?><label>Poushpas and Leithead(2014)</label><?label poushpasWindFarmControl2014?><mixed-citation>Poushpas, S. and Leithead, W.: Wind farm control through dynamic coordination
of wind turbines reference power, Lisbon, Portugal, in: 1st International Conference on Renewable Energies Offshore, 24–26 November 2014, Lisbon,
<ext-link xlink:href="https://doi.org/10.1201/b18973-101" ext-link-type="DOI">10.1201/b18973-101</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx37"><?xmltex \def\ref@label{{Sale et al.(2020)(2014)}}?><label>Sale et al.(2020)(2014)</label><?label Sale2020?><mixed-citation>Sale, D., Churchfield, M., and Bachant, P.: dcsale/SOWFA: v1 (Version v1), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.3632051" ext-link-type="DOI">10.5281/zenodo.3632051</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx38"><?xmltex \def\ref@label{{Schlipf et~al.(2010)Schlipf, Trabucchi, Bischoff, Hofs, Mann,
Mikkelsen, Rettenmeier, Trujillo, and
Khn}}?><label>Schlipf et al.(2010)Schlipf, Trabucchi, Bischoff, Hofs, Mann,
Mikkelsen, Rettenmeier, Trujillo, and
Khn</label><?label schlipfTestingFrozenTurbulence2010?><mixed-citation>Schlipf, D., Trabucchi, D., Bischoff, O., Hofsäß, M., Mann, J., Mikkelsen, T., Rettenmeier, A., Trujillo, J. J., and Kühn, M.: Testing of Frozen Turbulence Hypothesis for Wind Turbine Applications with a Scanning LIDAR System, in: Detaled Program, Geophysical Research Abstracts, Vol. 12,
<uri>https://ui.adsabs.harvard.edu/abs/2010EGUGA..12.5410T/abstract</uri>
(last access: 28 October 2022) 2010.</mixed-citation></ref>
      <ref id="bib1.bibx39"><?xmltex \def\ref@label{{Shapiro et~al.(2017)Shapiro, Bauweraerts, Meyers, Meneveau, and
Gayme}}?><label>Shapiro et al.(2017)Shapiro, Bauweraerts, Meyers, Meneveau, and
Gayme</label><?label shapiroModelBasedReceding2017?><mixed-citation>Shapiro, C. R., Bauweraerts, P., Meyers, J., Meneveau, C., and Gayme, D. F.:
Model‐based receding horizon control of wind farms for secondary frequency
regulation, Wind Energy, 20, 1261–1275, <ext-link xlink:href="https://doi.org/10.1002/we.2093" ext-link-type="DOI">10.1002/we.2093</ext-link>, 2017.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx40"><?xmltex \def\ref@label{{Shapiro et~al.(2018)Shapiro, Gayme, and
Meneveau}}?><label>Shapiro et al.(2018)Shapiro, Gayme, and
Meneveau</label><?label shapiroModellingYawedWind2018?><mixed-citation>Shapiro, C. R., Gayme, D. F., and Meneveau, C.: Modelling yawed wind turbine
wakes: a lifting line approach, J. Fluid Mech., 841, R1, <ext-link xlink:href="https://doi.org/10.1017/jfm.2018.75" ext-link-type="DOI">10.1017/jfm.2018.75</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx41"><?xmltex \def\ref@label{{Sorensen and Shen(2002)}}?><label>Sorensen and Shen(2002)</label><?label sorensenNumericalModelingWind2002?><mixed-citation>Sorensen, J. N. and Shen, W. Z.: Numerical Modeling of Wind Turbine Wakes, J. Fluids Eng., 124, 393–399, <ext-link xlink:href="https://doi.org/10.1115/1.1471361" ext-link-type="DOI">10.1115/1.1471361</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx42"><?xmltex \def\ref@label{{Taylor(1938)}}?><label>Taylor(1938)</label><?label Taylor1938?><mixed-citation>Taylor, G. I.: The spectrum of turbulence, P. Roy. Soc. Lond. A, 164, 476–490, <ext-link xlink:href="https://doi.org/10.1098/rspa.1938.0032" ext-link-type="DOI">10.1098/rspa.1938.0032</ext-link>, 1938.</mixed-citation></ref>
      <ref id="bib1.bibx43"><?xmltex \def\ref@label{{van~den Broek and van~Wingerden(2020)}}?><label>van den Broek and van Wingerden(2020)</label><?label vandenbroekDynamicFlowModelling2020?><mixed-citation>van den Broek, M.  J. and van Wingerden, J.-W.: Dynamic Flow Modelling for
Model-Predictive Wind Farm Control, J. Phys.: Conf. Ser., 1618, 022023, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1618/2/022023" ext-link-type="DOI">10.1088/1742-6596/1618/2/022023</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx44"><?xmltex \def\ref@label{{Vogel(1979)}}?><label>Vogel(1979)</label><?label Vogel1979?><mixed-citation>Vogel, H.: A better way to construct the sunflower head, Math. Biosci., 44, 179–189, <ext-link xlink:href="https://doi.org/10.1016/0025-5564(79)90080-4" ext-link-type="DOI">10.1016/0025-5564(79)90080-4</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx45"><?xmltex \def\ref@label{{Voronoi(1908a)}}?><label>Voronoi(1908a)</label><?label voronoiNouvellesApplicationsParametres1908?><mixed-citation>Voronoi, G.: Nouvelles applications des paramètres continus à la théorie des formes quadratiques. Deuxième mémoire. Recherches sur les parallélloèdres primitifs, Journal für die reine und angewandte Mathematik (Crelles Journal), 1908, 198–287,
<ext-link xlink:href="https://doi.org/10.1515/crll.1908.134.198" ext-link-type="DOI">10.1515/crll.1908.134.198</ext-link>, 1908a.</mixed-citation></ref>
      <ref id="bib1.bibx46"><?xmltex \def\ref@label{{Voronoi(1908b)}}?><label>Voronoi(1908b)</label><?label voronoiNouvellesApplicationsParametres1908a?><mixed-citation>Voronoi, G.: Nouvelles applications des paramètres continus à la théorie des formes quadratiques. Premier mémoire. Sur quelques propriétés des formes quadratiques positives parfaites, Journal für die reine und angewandte Mathematik (Crelles Journal), 1908, 97–102,
<ext-link xlink:href="https://doi.org/10.1515/crll.1908.133.97" ext-link-type="DOI">10.1515/crll.1908.133.97</ext-link>, 1908b.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>The revised FLORIDyn model: implementation  of heterogeneous flow and the Gaussian wake</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Ainslie(1988)</label><mixed-citation>
Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J. Wind Eng. Indust. Aerodynam., 27, 213–224, <a href="https://doi.org/10.1016/0167-6105(88)90037-2" target="_blank">https://doi.org/10.1016/0167-6105(88)90037-2</a>, 1988.
</mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Andersen et al.(2017)Andersen, Sørensen, and
Mikkelsen</label><mixed-citation>
Andersen, S. J., Sørensen, J. N., and Mikkelsen, R. F.: Turbulence and
entrainment length scales in large wind farms, Philos. T. Roy. Soc. A, 375,
20160107, <a href="https://doi.org/10.1098/rsta.2016.0107" target="_blank">https://doi.org/10.1098/rsta.2016.0107</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Andersson et al.(2021)Andersson, Anaya-Lara, Tande, Merz, and
Imsland</label><mixed-citation>
Andersson, L. E., Anaya-Lara, O., Tande, J. O., Merz, K. O., and Imsland, L.:
Wind farm control – Part I: A review on control system concepts and
structures, IET Renew. Power Generat., 15, 2085–2108, <a href="https://doi.org/10.1049/rpg2.12160" target="_blank">https://doi.org/10.1049/rpg2.12160</a>, 2021.
</mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Annoni et al.(2016)Annoni, Gebraad, Scholbrock, Fleming, and
Wingerden</label><mixed-citation>
Annoni, J., Gebraad, P. M. O., Scholbrock, A. K., Fleming, P. A., and
v. Wingerden, J.: Analysis of axial‐induction‐based wind plant control using an engineering and a high‐order wind plant model, Wind Energy, 19, 1135–1150, <a href="https://doi.org/10.1002/we.1891" target="_blank">https://doi.org/10.1002/we.1891</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bak et al.(2013)Bak, Zahle, Bitsche, Kim, Yde, Henriksen, Hansen,
Blasques, Gaunaa, and Natarajan</label><mixed-citation>
Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L. C., Hansen,
M. H., Blasques, J. P. A. A., Gaunaa, M., and Natarajan, A.: The DTU
10-MW reference wind turbine,
<a href="https://orbit.dtu.dk/en/publications/the-dtu-10-mw-reference-wind-turbine" target="_blank"/>
(last access: 28 October 2022), 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bastankhah and
Porté-Agel(2016)</label><mixed-citation>
Bastankhah, M. and Porté-Agel, F.: Experimental and Theoretical Study of
Wind Turbine Wakes in Yawed Conditions, J. Fluid Mech., 806, 506–541, <a href="https://doi.org/10.1017/jfm.2016.595" target="_blank">https://doi.org/10.1017/jfm.2016.595</a>, 2016.
</mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bastankhah et al.(2021)Bastankhah, Welch, Martínez-Tossas, King, and Fleming</label><mixed-citation>
Bastankhah, M., Welch, B. L., Martínez-Tossas, L. A., King, J., and Fleming,
P.: Analytical solution for the cumulative wake of wind turbines in wind
farms, J. Fluid Mech., 911, A53, <a href="https://doi.org/10.1017/jfm.2020.1037" target="_blank">https://doi.org/10.1017/jfm.2020.1037</a>, 2021.
</mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Becker(2022a)</label><mixed-citation>
Becker, M.: Gaussian FLORIDyn, Matlab implementation belonging to the
paper: The revised FLORIDyn model: Implementation of heterogeneous flow and the Gaussian wake, 4TU ResearchData [code],
<a href="https://data.4tu.nl/articles/software/Gaussian_FLORIDyn_Matlab_implementation_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/19867846" target="_blank"/>
(last access: 27 October 2022), 2022a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Becker(2022b)</label><mixed-citation>
Becker, M.: SOWFA simulation setup belonging to the paper: The revised
FLORIDyn model: Implementation of heterogeneous flow and the Gaussian wake, 4TU ResearchData [data set],
<a href="https://data.4tu.nl/articles/dataset/SOWFA_simulation_setup_belonging_to_the_paper_The_revised_FLORIDyn_model_Implementation_of_heterogeneous_flow_and_the_Gaussian_wake/20026406" target="_blank"/>
(last access: 27 October 2022), 2022b.
</mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Bianchi et al.(2007)Bianchi, Battista, and Mantz</label><mixed-citation>
Bianchi, F. D., Battista, H. D., and Mantz, R. J.: Wind turbine control
systems: Principles, modelling and gain scheduling design, Wiley, <a href="https://doi.org/10.1002/rnc.1263" target="_blank">https://doi.org/10.1002/rnc.1263</a>, 2007.
</mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Bossanyi(2018)</label><mixed-citation>
Bossanyi, E.: Combining induction control and wake steering for wind farm
energy and fatigue loads optimisation, IOP Publ., 1037, 032011,
<a href="https://doi.org/10.1088/1742-6596/1037/3/032011" target="_blank">https://doi.org/10.1088/1742-6596/1037/3/032011</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Crespo and
Hernández(1996)</label><mixed-citation>
Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine
wakes, J. Wind Eng. Indust. Aerodynam., 61, 71–85, <a href="https://doi.org/10.1016/0167-6105(95)00033-X" target="_blank">https://doi.org/10.1016/0167-6105(95)00033-X</a>, 1996.
</mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Doekemeijer et al.(2021)</label><mixed-citation>
Doekemeijer, B., Storm, R., Schreiber, J., and van der Hoek, D.: TUDelft-DataDrivenControl/FLORISSE_M: Stable version from 2018–2019 (v0.2), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.4458669" target="_blank">https://doi.org/10.5281/zenodo.4458669</a>, 2021.
</mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Emeis(2018)</label><mixed-citation>
Emeis, S.: Wind Energy Meteorology: Atmospheric Physics for Wind Power Generation, in: 2nd Edn., Springer International Publishing,
<a href="https://doi.org/10.1007/978-3-319-72859-9" target="_blank">https://doi.org/10.1007/978-3-319-72859-9</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Farrell et al.(2021)Farrell, King, Draxl, Mudafort, Hamilton, Bay,
Fleming, and Simley</label><mixed-citation>
Farrell, A., King, J., Draxl, C., Mudafort, R., Hamilton, N., Bay, C. J., Fleming, P., and Simley, E.: Design and analysis of a wake model for spatially heterogeneous flow, Wind Energ. Sci., 6, 737–758, <a href="https://doi.org/10.5194/wes-6-737-2021" target="_blank">https://doi.org/10.5194/wes-6-737-2021</a>, 2021.
</mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Fleming et al.(2017)Fleming, Annoni, Shah, Wang, Ananthan, Zhang,
Hutchings, Wang, Chen, and Chen</label><mixed-citation>
Fleming, P., Annoni, J., Shah, J. J., Wang, L., Ananthan, S., Zhang, Z., Hutchings, K., Wang, P., Chen, W., and Chen, L.: Field test of wake steering at an offshore wind farm, Wind Energ. Sci., 2, 229–239, <a href="https://doi.org/10.5194/wes-2-229-2017" target="_blank">https://doi.org/10.5194/wes-2-229-2017</a>, 2017.
</mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Frandsen et al.(2006)Frandsen, Barthelmie, Pryor, Rathmann, Larsen,
Hjstrup, and Thgersen</label><mixed-citation>
Frandsen, S., Barthelmie, R., Pryor, S., Rathmann, O., Larsen, S., Højstrup, J., and Thøgersen, M.: Analytical modelling of wind speed deficit in large offshore wind farms, Wind Energy, 9, 39–53, <a href="https://doi.org/10.1002/we.189" target="_blank">https://doi.org/10.1002/we.189</a>, 2006.
</mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Gebraad and van Wingerden(2014)</label><mixed-citation>
Gebraad, P. M. O. and van Wingerden, J. W.: A Control-Oriented Dynamic Model for Wakes in Wind Plants, J. Phys.: Conf. Ser., 524, 012186, <a href="https://doi.org/10.1088/1742-6596/524/1/012186" target="_blank">https://doi.org/10.1088/1742-6596/524/1/012186</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Gebraad et al.(2014)Gebraad, Teeuwisse, van Wingerden, Fleming,
Ruben, Marden, and Pao</label><mixed-citation>
Gebraad, P. M. O., Teeuwisse, F. W., van Wingerden, J. W., Fleming, P. A.,
Ruben, S. D., Marden, J. R., and Pao, L. Y.: A data-driven model for wind
plant power optimization by yaw control, in: 2014 American Control
Conference, 4–6 June 2014, Portland, Oregon, USA, 3128–3134, <a href="https://doi.org/10.1109/ACC.2014.6859118" target="_blank">https://doi.org/10.1109/ACC.2014.6859118</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Gebraad et al.(2015)Gebraad, Fleming, and van
Wingerden</label><mixed-citation>
Gebraad, P. M. O., Fleming, P. A., and van Wingerden, J. W.: Wind turbine wake estimation and control using FLORIDyn, a control-oriented dynamic wind
plant model, in: 2015 American Control Conference (ACC), 1–3 July 2015, Chicago, Illinois, USA, 1702–1708, <a href="https://doi.org/10.1109/ACC.2015.7170978" target="_blank">https://doi.org/10.1109/ACC.2015.7170978</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Grunnet et al.(2010)Grunnet, Soltani, Knudsen, Kragelund, and
Bak</label><mixed-citation>
Grunnet, J. D., Soltani, M., Knudsen, T., Kragelund, M. N., and Bak, T.: Aeolus Toolbox for Dynamics Wind Farm Model, Simulation and Control,
in: European Wind Energy Conference and Exhibition, EWEC 2010, 20–23 April 2010, Warsaw, Poland,
<a href="https://vbn.aau.dk/en/publications/aeolus-toolbox-for-dynamics-wind-farm-model-simulationand-control" target="_blank">https://vbn.aau.dk/en/publications/aeolus-toolbox-for-dynamics-wind-farm-model-simulationand</a> (last access: 28 October 2022), 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Howland et al.(2020)Howland, Gonzlez, Martnez, Quesada,
Larraaga, Yadav, Chawla, and
Dabiri</label><mixed-citation>
Howland, M. F., González, C. M., Martínez, J. J. P., Quesada, J. B.,
Larrañaga, F. P., Yadav, N. K., Chawla, J. S., and Dabiri, J. O.: Influence of atmospheric conditions on the power production of utility-scale wind turbines in yaw misalignment, J. Renew. Sustain. Energ., 12, 063307, <a href="https://doi.org/10.1063/5.0023746" target="_blank">https://doi.org/10.1063/5.0023746</a>,2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Jensen(1983)</label><mixed-citation>
Jensen, N. O.: A note on wind generator interaction, oCLC: 144692423, Risø National Laboratory, Roskilde, Denmark, <a href="https://orbit.dtu.dk/en/publications/a-note-on-wind-generator-interaction" target="_blank"/>
(last access: 28 October 2022), 1983.
</mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Jiménez et al.(2010)Jimenez, Crespo, and
Migoya</label><mixed-citation>
Jiménez, Ã., Crespo, A., and Migoya, E.: Application of a LES technique to characterize the wake deflection of a wind turbine in yaw, Wind Energy, 13, 559–572, <a href="https://doi.org/10.1002/we.380" target="_blank">https://doi.org/10.1002/we.380</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Kheirabadi and Nagamune(2019)</label><mixed-citation>
Kheirabadi, A. C. and Nagamune, R.: A quantitative review of wind farm control with the objective of wind farm power maximization, J. Wind Eng. Indust. Aerodynam., 192, 45–73, <a href="https://doi.org/10.1016/j.jweia.2019.06.015" target="_blank">https://doi.org/10.1016/j.jweia.2019.06.015</a>, 2019.
</mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Kheirabadi and Nagamune(2021)</label><mixed-citation>
Kheirabadi, A. C. and Nagamune, R.: A low-fidelity dynamic wind farm model for simulating time-varying wind conditions and floating platform motion, Ocean Eng., 234, 109313, <a href="https://doi.org/10.1016/j.oceaneng.2021.109313" target="_blank">https://doi.org/10.1016/j.oceaneng.2021.109313</a>, 2021.
</mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Larsen et al.(2008)Larsen, Madsen, Thomsen, and
Larsen</label><mixed-citation>
Larsen, G. C., Madsen, H. A., Thomsen, K., and Larsen, T. J.: Wake meandering: a pragmatic approach, Wind Energy, 11, 377–395, <a href="https://doi.org/10.1002/we.267" target="_blank">https://doi.org/10.1002/we.267</a>, 2008.
</mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Lee and Chu(2003)</label><mixed-citation>
Lee, J. H. W. and Chu, V. H.: Turbulent Round Jet in Coflow, in: Turbulent Jets and Plumes, Springer US, Boston, MA, 179–209,
<a href="https://doi.org/10.1007/978-1-4615-0407-8_6" target="_blank">https://doi.org/10.1007/978-1-4615-0407-8_6</a>, 2003.
</mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Liew et al.(2020)</label><mixed-citation>
Liew, J., Urbán, A. M., and Andersen, S. J.: Analytical model for the power–yaw sensitivity of wind turbines operating in full wake, Wind Energ. Sci., 5, 427–437, <a href="https://doi.org/10.5194/wes-5-427-2020" target="_blank">https://doi.org/10.5194/wes-5-427-2020</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Madsen et al.(2010)Madsen, Larsen, Larsen, Troldborg, and
Mikkelsen</label><mixed-citation>
Madsen, H. A., Larsen, G. C., Larsen, T. J., Troldborg, N., and Mikkelsen, R.: Calibration and Validation of the Dynamic Wake Meandering Model for
Implementation in an Aeroelastic Code, J. Sol. Energy. Eng., 132, 041014, <a href="https://doi.org/10.1115/1.4002555" target="_blank">https://doi.org/10.1115/1.4002555</a>, 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Madsen et al.(2020)Madsen, Larsen, Pirrung, Li, and
Zahle</label><mixed-citation>
Madsen, H. A., Larsen, T. J., Pirrung, G. R., Li, A., and Zahle, F.: Implementation of the blade element momentum model on a polar grid and its
aeroelastic load impact, Wind Energ. Sci., 5, 1–27,
<a href="https://doi.org/10.5194/wes-5-1-2020" target="_blank">https://doi.org/10.5194/wes-5-1-2020</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Medici(2005)</label><mixed-citation>
Medici, D.: Experimental studies of wind turbine wakes – power optimisation and meandering, PhD thesis, KTH Stockholm, Stockholm,
<a href="https://www.diva-portal.org/smash/get/diva2:14563/FULLTEXT01.pdf" target="_blank"/>
(last access: 28 October 2022), 2005.
</mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>National Renewable Energy
Laboratory(2020)</label><mixed-citation>
National Renewable Energy Laboratory: Simulator for offshore wind farm
applications, GitHub [code],
<a href="https://github.com/dcsale/SOWFA" target="_blank"/> (last access: 28 October 2022), 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Niayifar and Porté-Agel(2015)</label><mixed-citation>
Niayifar, A. and Porté-Agel, F.: A new analytical model for wind farm power prediction, J. Phys.: Conf. Ser., 625, 012039,
<a href="https://doi.org/10.1088/1742-6596/625/1/012039" target="_blank">https://doi.org/10.1088/1742-6596/625/1/012039</a>, 2015.
</mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Ortega et al.(2013)Ortega, Mancilla‐David, and
Jaramillo</label><mixed-citation>
Ortega, R., Mancilla‐David, F., and Jaramillo, F.: A globally convergent wind
speed estimator for wind turbine systems, Int. J. Adapt. Control Sig. Process., 27, 413–425, <a href="https://doi.org/10.1002/acs.2319" target="_blank">https://doi.org/10.1002/acs.2319</a>, 2013.
</mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Poushpas and Leithead(2014)</label><mixed-citation>
Poushpas, S. and Leithead, W.: Wind farm control through dynamic coordination
of wind turbines reference power, Lisbon, Portugal, in: 1st International Conference on Renewable Energies Offshore, 24–26 November 2014, Lisbon,
<a href="https://doi.org/10.1201/b18973-101" target="_blank">https://doi.org/10.1201/b18973-101</a>, 2014.
</mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Sale et al.(2020)(2014)</label><mixed-citation>
Sale, D., Churchfield, M., and Bachant, P.: dcsale/SOWFA: v1 (Version v1), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.3632051" target="_blank">https://doi.org/10.5281/zenodo.3632051</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Schlipf et al.(2010)Schlipf, Trabucchi, Bischoff, Hofs, Mann,
Mikkelsen, Rettenmeier, Trujillo, and
Khn</label><mixed-citation>
Schlipf, D., Trabucchi, D., Bischoff, O., Hofsäß, M., Mann, J., Mikkelsen, T., Rettenmeier, A., Trujillo, J. J., and Kühn, M.: Testing of Frozen Turbulence Hypothesis for Wind Turbine Applications with a Scanning LIDAR System, in: Detaled Program, Geophysical Research Abstracts, Vol. 12,
<a href="https://ui.adsabs.harvard.edu/abs/2010EGUGA..12.5410T/abstract" target="_blank"/>
(last access: 28 October 2022) 2010.
</mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Shapiro et al.(2017)Shapiro, Bauweraerts, Meyers, Meneveau, and
Gayme</label><mixed-citation>
Shapiro, C. R., Bauweraerts, P., Meyers, J., Meneveau, C., and Gayme, D. F.:
Model‐based receding horizon control of wind farms for secondary frequency
regulation, Wind Energy, 20, 1261–1275, <a href="https://doi.org/10.1002/we.2093" target="_blank">https://doi.org/10.1002/we.2093</a>, 2017.

</mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Shapiro et al.(2018)Shapiro, Gayme, and
Meneveau</label><mixed-citation>
Shapiro, C. R., Gayme, D. F., and Meneveau, C.: Modelling yawed wind turbine
wakes: a lifting line approach, J. Fluid Mech., 841, R1, <a href="https://doi.org/10.1017/jfm.2018.75" target="_blank">https://doi.org/10.1017/jfm.2018.75</a>, 2018.
</mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Sorensen and Shen(2002)</label><mixed-citation>
Sorensen, J. N. and Shen, W. Z.: Numerical Modeling of Wind Turbine Wakes, J. Fluids Eng., 124, 393–399, <a href="https://doi.org/10.1115/1.1471361" target="_blank">https://doi.org/10.1115/1.1471361</a>, 2002.
</mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Taylor(1938)</label><mixed-citation>
Taylor, G. I.: The spectrum of turbulence, P. Roy. Soc. Lond. A, 164, 476–490, <a href="https://doi.org/10.1098/rspa.1938.0032" target="_blank">https://doi.org/10.1098/rspa.1938.0032</a>, 1938.
</mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>van den Broek and van Wingerden(2020)</label><mixed-citation>
van den Broek, M.  J. and van Wingerden, J.-W.: Dynamic Flow Modelling for
Model-Predictive Wind Farm Control, J. Phys.: Conf. Ser., 1618, 022023, <a href="https://doi.org/10.1088/1742-6596/1618/2/022023" target="_blank">https://doi.org/10.1088/1742-6596/1618/2/022023</a>, 2020.
</mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Vogel(1979)</label><mixed-citation>
Vogel, H.: A better way to construct the sunflower head, Math. Biosci., 44, 179–189, <a href="https://doi.org/10.1016/0025-5564(79)90080-4" target="_blank">https://doi.org/10.1016/0025-5564(79)90080-4</a>, 1979.
</mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Voronoi(1908a)</label><mixed-citation>
Voronoi, G.: Nouvelles applications des paramètres continus à la théorie des formes quadratiques. Deuxième mémoire. Recherches sur les parallélloèdres primitifs, Journal für die reine und angewandte Mathematik (Crelles Journal), 1908, 198–287,
<a href="https://doi.org/10.1515/crll.1908.134.198" target="_blank">https://doi.org/10.1515/crll.1908.134.198</a>, 1908a.
</mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Voronoi(1908b)</label><mixed-citation>
Voronoi, G.: Nouvelles applications des paramètres continus à la théorie des formes quadratiques. Premier mémoire. Sur quelques propriétés des formes quadratiques positives parfaites, Journal für die reine und angewandte Mathematik (Crelles Journal), 1908, 97–102,
<a href="https://doi.org/10.1515/crll.1908.133.97" target="_blank">https://doi.org/10.1515/crll.1908.133.97</a>, 1908b.
</mixed-citation></ref-html>--></article>
