<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/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-8-1425-2023</article-id><title-group><article-title>Sensitivity analysis of wake steering optimisation for wind farm power maximisation</article-title><alt-title>Sensitivity analysis of wake steering optimisation</alt-title>
      </title-group><?xmltex \runningtitle{Sensitivity analysis of wake steering optimisation}?><?xmltex \runningauthor{F. Gori et al.}?>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes">
          <name><surname>Gori</surname><given-names>Filippo</given-names></name>
          <email>f.gori21@imperial.ac.uk</email>
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name><surname>Laizet</surname><given-names>Sylvain</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no">
          <name><surname>Wynn</surname><given-names>Andrew</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-2338-5903</ext-link></contrib>
        <aff id="aff1"><institution>Department of Aeronautics, Imperial College London, SW7 2AZ London, UK</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Filippo Gori (f.gori21@imperial.ac.uk)</corresp></author-notes><pub-date><day>15</day><month>September</month><year>2023</year></pub-date>
      
      <volume>8</volume>
      <issue>9</issue>
      <fpage>1425</fpage><lpage>1451</lpage>
      <history>
        <date date-type="received"><day>17</day><month>February</month><year>2023</year></date>
           <date date-type="rev-request"><day>15</day><month>March</month><year>2023</year></date>
           <date date-type="rev-recd"><day>19</day><month>July</month><year>2023</year></date>
           <date date-type="accepted"><day>4</day><month>August</month><year>2023</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2023 Filippo Gori et al.</copyright-statement>
        <copyright-year>2023</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/8/1425/2023/wes-8-1425-2023.html">This article is available from https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d1e95">Modern large-scale wind farms consist of multiple turbines clustered together, usually in well-structured formations. Clustering has a number of drawbacks during a wind farm's operation, as some of the downstream turbines will inevitably operate in the wake of those upstream, with a  significant reduction in power output and an increase in fatigue loads. Wake steering, a control strategy in which upstream wind turbines are misaligned with the wind to redirect their wakes away from downstream turbines, is a promising strategy to mitigate power losses. The purpose of this work is to investigate the sensitivity of open-loop wake steering optimisation in which an internal predictive wake model is used to determine the farm power output as a function of the turbine yaw angles. Three different layouts are investigated with increasing levels of complexity. A simple <inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> farm layout under aligned conditions is first considered, allowing for a careful investigation of the sensitivity to wake models and operating conditions. A medium-complexity case of a generic <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm layout under aligned conditions is examined to enable the study of a more complex design space. The final layout investigated is the Horns Rev wind farm (80 turbines), for which there have been very few studies of the performance or sensitivity of wake steering optimisation. Overall, the results indicate a strong sensitivity of wake steering strategies to both the analytical wake model choice and  the particular implementation of algorithms used for optimisation. Significant variability can be observed in both farm power improvement and optimal yaw settings, depending on the optimisation setup. Through a statistical analysis of the impact of optimiser initialisation and a study of the multi-modal and discontinuous nature of the underlying farm power objective functions, this study shows that the uncovered sensitivities represent a fundamental challenge to robustly identifying globally optimal solutions for the high-dimensional optimisation problems arising from realistic wind farm layouts. This paper proposes a simple strategy for sensitivity mitigation by introducing additional optimisation constraints, leading to higher farm power improvements and more consistent, coherent, and practicable optimal yaw angle settings.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Department of Aeronautics, Imperial College London</funding-source>
<award-id>PhD scholarship</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d1e131">Wind energy now plays a central role in meeting world energy requirements, driven by the urgent need to mitigate climate change and a significant recent reduction in its levelised cost. New and ambitious international renewables targets, such as the European Commission’s proposed installation of up to <inline-formula><mml:math id="M3" display="inline"><mml:mn mathvariant="normal">450</mml:mn></mml:math></inline-formula> GW offshore wind capacity by 2050 <xref ref-type="bibr" rid="bib1.bibx46" id="paren.1"/>, will require further significant increases in wind energy capacity. Large wind arrays with closely spaced turbines will be used to meet this demand. These have logistical advantages over sparse layouts in terms of lower infrastructure and maintenance costs and increased energy density. However, the performance of large wind arrays is degraded by the aerodynamic interactions between turbines. Upstream-generated turbine wakes exhibit lower wind speeds and increased turbulence intensity, causing typical annual power losses of <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>  to <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mn mathvariant="normal">30</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx45 bib1.bibx5 bib1.bibx6" id="paren.2"/> in addition to increased fatigue loading.</p>
      <?pagebreak page1426?><p id="d1e169">Wake steering, in which upstream turbines are yawed to deflect their wakes away from downstream machines, is a leading control technique used to mitigate the effects of wake–turbine interactions. Farm power increases ranging from <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mn mathvariant="normal">47</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> have been demonstrated in high-fidelity simulations <xref ref-type="bibr" rid="bib1.bibx20 bib1.bibx22" id="paren.3"/>, wind tunnel campaigns <xref ref-type="bibr" rid="bib1.bibx11 bib1.bibx9 bib1.bibx54" id="paren.4"/>, and field tests <xref ref-type="bibr" rid="bib1.bibx29" id="paren.5"/>. To successfully implement wake steering, one must navigate a natural trade-off: while wake steering can increase wind speed and power production at downstream turbines, it also reduces both the effective swept area and the power production of any yawed wake-generating turbine. For large arrays of turbines, in which there are multiple competing trade-offs arising from each interacting pair of turbines, the question of maximising farm power via wake steering becomes both a high-dimensional and a non-convex optimisation problem. Such problems can be challenging to solve, and their solutions can exhibit high parametric sensitivity, which may partially explain the wide range of reported farm power improvements in the literature.</p>
      <p id="d1e203">With a view to enabling robust and predictable wake steering optimisation for large wind farms, this paper investigates the <italic>sensitivity</italic> of wake steering optimisation. We focus on open-loop approaches in which internal predictive wake models are used to determine the farm power output (the cost  function to be maximised) as a function of the turbine yaw angles (the decision variables). In this paper, we will use analytical, steady-state wake models which capture only the most dominant physical wake features. A number of models will be considered, including the Jensen <xref ref-type="bibr" rid="bib1.bibx32" id="paren.6"/>, multizone <xref ref-type="bibr" rid="bib1.bibx23" id="paren.7"/>, Gaussian <xref ref-type="bibr" rid="bib1.bibx7" id="paren.8"/>, and Gauss–curl Hybrid <xref ref-type="bibr" rid="bib1.bibx38" id="paren.9"/> models, each of which is suitably adapted using the approaches of  <xref ref-type="bibr" rid="bib1.bibx33" id="text.10"/> and <xref ref-type="bibr" rid="bib1.bibx10" id="text.11"/> to capture yaw-induced wake modifications. These are chosen to be representative of common models used in wake steering optimisation <xref ref-type="bibr" rid="bib1.bibx37" id="paren.12"/>. Many optimisation algorithms have been used to implement wake steering, and these can be broadly categorised as either gradient-based or gradient-free algorithms. Gradient-based methods include gradient ascent <xref ref-type="bibr" rid="bib1.bibx54" id="paren.13"/>, sequential quadratic programming <xref ref-type="bibr" rid="bib1.bibx4" id="paren.14"/>, steepest descent <xref ref-type="bibr" rid="bib1.bibx29" id="paren.15"/>, conjugate gradient <xref ref-type="bibr" rid="bib1.bibx51" id="paren.16"/>, and quasi-Newton methods <xref ref-type="bibr" rid="bib1.bibx53" id="paren.17"/>. Gradient-free approaches to open-loop wake steering studies have used game theory <xref ref-type="bibr" rid="bib1.bibx24 bib1.bibx52 bib1.bibx48" id="paren.18"/>, statistical optimisation for dynamic wind directions <xref ref-type="bibr" rid="bib1.bibx50" id="paren.19"/>, particle swarm optimisation <xref ref-type="bibr" rid="bib1.bibx2 bib1.bibx18" id="paren.20"/>, evolutionary algorithms <xref ref-type="bibr" rid="bib1.bibx18" id="paren.21"/>, and random search algorithms <xref ref-type="bibr" rid="bib1.bibx41" id="paren.22"/>. With a wide choice of models and algorithms available, it is natural to question if the solution to a given wake steering optimisation problem is sensitive to these choices.</p>
      <p id="d1e263">By optimisation sensitivity we refer to the dependency of wake steering optimisation on (i) the choice of the underlying predictive model; (ii) the choice of the optimisation algorithm and its particular parametric implementation; and (iii) the given operating condition, such as farm layout or atmospheric conditions. Furthermore, we measure optimisation sensitivity in terms of both (i) the optimised farm power and (ii) the optimal decision variables themselves, i.e. the optimal yaw angles obtained from wake steering optimisation. Arguably, the latter is the most important. Of particular interest is to identify situations of high sensitivity: that is, when either the predicted maximised power output or the optimal yaw angles are seen to vary substantially with small changes to the wake model, algorithm, or operating condition. When high sensitivity is identified, we also study potential algorithmic changes to reduce it.</p>
      <p id="d1e267">Understanding, quantifying, and reducing cases of high sensitivity are of fundamental importance for robust wake steering. To implement open-loop wake steering, tuning or identification of wake model parameters from field data or high-fidelity simulations is required. As with any tuned model, there can be a mismatch between the predicted and true farm behaviour. A first problem arises when the predicted optimised farm power output is highly sensitive to the wake model parameters or algorithmic implementation. In these cases, small modelling mismatches may cause large deviations between the expected and true farm performance, possibly nullifying any predicted power increase when applied in the field. A second problem occurs in the case of high optimal yaw angle sensitivity. Here, a small parametric change (e.g. to model re-tuning or to atmospheric conditions) may require large yaw angle changes, and it is practicably undesirable to make large control input changes in response to only small operational perturbations. As is discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>, the sensitivity of optimal yaw angles can be observed in recent open-loop wake steering studies for large-scale farms such as the Horns Rev installation <xref ref-type="bibr" rid="bib1.bibx18" id="paren.23"/>. More generally, we show that the high sensitivity of decision variables also presents a fundamental challenge which must be overcome when one seeks to globally optimise wake steering strategies for the high-dimensional optimisation problems arising from realistic farm layouts.</p>
      <p id="d1e275">In this paper, we do not consider active wake control or closed-loop wake control in which online sensor information is used to dynamically adapt wake steering strategies (see <xref ref-type="bibr" rid="bib1.bibx37" id="altparen.24"/>, and <xref ref-type="bibr" rid="bib1.bibx27" id="altparen.25"/>, for comprehensive reviews). While recent and promising feedback control strategies have been proposed <xref ref-type="bibr" rid="bib1.bibx16 bib1.bibx17 bib1.bibx30 bib1.bibx31" id="paren.26"/>, closed-loop approaches still typically employ predictive wake models in order to calculate their time-varying control inputs. Consequently, the question of predictive sensitivity is still important in the more complex closed-loop setting. By first studying open-loop wake optimisation strategies in this paper, we therefore also provide insight into the behaviour of closed-loop approaches to wake steering optimisation.</p>
      <p id="d1e287">Due to the large number of underlying modelling, algorithmic, and parametric choices, in this paper we propose a hierarchy of test cases to facilitate the understanding of the<?pagebreak page1427?> different sensitivities present in wake steering optimisation. At the simplest level, a minimal optimisation problem consisting of a <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> farm layout under aligned conditions is first considered. In this case, optimisation can be performed by a simple parametric sweep, removing any sensitivity to algorithmic choice or implementation. The <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> case, therefore, allows a careful investigation of sensitivity to only the underlying wake model and operating conditions. Next, a medium-complexity case of a <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm layout under aligned conditions is considered. This may be viewed as several non-trivially interacting <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> blocks, leading to a more complex design space. Sensitivity, therefore, depends on both the algorithmic implementation and the underlying wake model, but quantification of the <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> case facilitates the decoupling of these two dependencies. We present a statistical analysis of optimiser sensitivity in this case, in addition to comparing the performance of global stochastic and local gradient-based optimisation algorithms. Finally, a representative layout corresponding to the Horns Rev wind farm is considered. The investigation of this more complex optimisation problem will be used to confirm whether the wake steering sensitivities uncovered in the low- and medium-complexity cases transfer to a realistic setup. Finally, we propose a simple strategy for sensitivity mitigation, based on appropriately chosen optimisation constraints, which is effective even for this realistic and complex wake steering optimisation problem. To the best of our knowledge, previous parametric investigations into wake optimisation sensitivity <xref ref-type="bibr" rid="bib1.bibx47 bib1.bibx25" id="paren.27"/> have not studied the effect of optimiser class or analysed sensitivity from a statistical perspective  and have not presented possible strategies for sensitivity mitigation.</p>
      <p id="d1e354">The remainder of the paper is organised as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> gives an overview of the wind farm modelling framework and introduces the wake and deflection models. In Sect. <xref ref-type="sec" rid="Ch1.S3"/>, a description of the optimisation setup is provided, including wind farm layouts, atmospheric conditions, and optimisation algorithms. Sensitivity results and a discussion are presented in Sect. <xref ref-type="sec" rid="Ch1.S4"/> for the <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> (Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>), <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> (Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>), and Horns Rev (Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>) cases. Finally, conclusions are given in Sect. <xref ref-type="sec" rid="Ch1.S5"/>. Appendices provide additional details on wake and deflection model formulations (Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>), a validation of the optimisation framework (Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>), and an illustrative example of a Bayesian optimisation on a one-dimensional toy problem (Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/>).</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Wind farm modelling</title>
      <p id="d1e411">Wind farm modelling in the present work is conducted with version 2.4 (after the resolution of issue number 684) of the open-source FLORIS framework <xref ref-type="bibr" rid="bib1.bibx44" id="paren.28"/> by the National Renewable Energy Laboratory (NREL). The wake models considered in this paper are Jensen <xref ref-type="bibr" rid="bib1.bibx32" id="paren.29"/>, multizone <xref ref-type="bibr" rid="bib1.bibx23" id="paren.30"/>, Gaussian <xref ref-type="bibr" rid="bib1.bibx7" id="paren.31"/>, and Gauss–curl Hybrid (GCH) <xref ref-type="bibr" rid="bib1.bibx38" id="paren.32"/> and their respective deflection models <xref ref-type="bibr" rid="bib1.bibx33 bib1.bibx8" id="paren.33"/>. The four selected models, fully described in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>, have different complexities, physical modelling capabilities, and empirical parameter dependencies. They are selected because they are representative of the models commonly used by the wind energy community in optimisation and control studies <xref ref-type="bibr" rid="bib1.bibx37" id="paren.34"/>.</p>
      <p id="d1e438">Although different wake models will logically give different power predictions, in a wake steering optimisation context, it may still be the case that different models give rise to similar optimal yaw angles. Consequently, the question of the modelling fidelity required to enable robust wake steering optimisation may be different to the question of which model is best to capture a given physical wake characteristic. In this regard, we emphasise that the purpose of this study is not to identify which model is best to study a particular wind farm. Rather, we seek to identify situations in which wake steering optimisation is highly sensitive either to the choice of underlying model or to the interaction between the model choice and the particular parametric implementation of commonly used optimisers (see Sect. <xref ref-type="sec" rid="Ch1.S3"/> for a full description of optimisation algorithms used), since high sensitivity presents a fundamental barrier to robust optimisation performance, even when using models tuned to high-fidelity simulation data or field data. As a result, the wake and deflection model parameters for this study simply use the FLORIS-recommended standard values, reported in Table <xref ref-type="table" rid="Ch1.T1"/>.</p>
      <p id="d1e445">We now give a brief overview of FLORIS's wind farm modelling structure. First, an initial condition is defined by specifying atmospheric inflow, wind farm layout, turbine geometry, and operational conditions. Next, the chosen wake model calculates each turbine's steady streamwise velocity deficit. The computation is sequential to allow additional considerations on added turbulence. For yawed turbine cases, a deflection model is employed  to determine and apply a cross-stream shift in the streamwise velocity deficit field. Finally, streamwise velocity deficits for each turbine are combined with a superposition model and are applied to the initial flow field. In the current study, all wake models use the sum of squares freestream superposition (SOSFS) model developed by <xref ref-type="bibr" rid="bib1.bibx36" id="text.35"/>. Based on the conservation of the mean kinetic energy deficit during wake interaction, the combined wake velocity <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, dependent on the three spatial dimensions <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, is defined as
          <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M17" display="block"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
        where <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the mean freestream velocity, and <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is the wake streamwise velocity induced by turbine <inline-formula><mml:math id="M20" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> under stand-alone conditions.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F1" specific-use="star"><?xmltex \currentcnt{1}?><?xmltex \def\figurename{Figure}?><label>Figure 1</label><caption><p id="d1e594">Streamwise velocity at hub height of a <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout for the <bold>(a)</bold> Jensen (Jiménez), <bold>(b)</bold> multizone (Jiménez), <bold>(c)</bold> Gaussian (Bastankhah), and <bold>(d)</bold> GCH (Bastankhah) wake and deflection models at an upstream rotor yaw angle of 20<inline-formula><mml:math id="M22" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>. The white vertical lines represent the streamwise locations for the velocity profile section plots, ordered by increasing downstream distance, while the horizontal lines indicate the upstream rotor centreline.</p></caption>
        <?xmltex \igopts{width=312.980315pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f01.png"/>

      </fig>

      <?pagebreak page1429?><p id="d1e637">Farm power calculations are conducted as follows. Turbine operational profiles consist of lookup tables for power and thrust coefficients (<inline-formula><mml:math id="M23" 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 <inline-formula><mml:math id="M24" 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>, respectively) as a function of streamwise velocity. These tables are generated by the FAST <xref ref-type="bibr" rid="bib1.bibx34" id="paren.36"/> (fatigue, aerodynamics, structures, and turbulence) aeroelastic simulator developed by NREL. Given a resolved wind farm flow field <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the streamwise velocities at the turbine rotor grid points <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">rotor</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are defined by interpolation. The averaged streamwise velocity <inline-formula><mml:math id="M27" display="inline"><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> of the spatial extent of the un-yawed turbine is expressed by
          <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M28" display="block"><mml:mrow><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mroot><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi mathvariant="normal">rotor</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup></mml:mrow><mml:mn mathvariant="normal">3</mml:mn></mml:mroot><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e754">The power <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> generated by a single turbine is given by
          <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M30" display="block"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>A</mml:mi><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mi>w</mml:mi></mml:msup><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
        where <inline-formula><mml:math id="M31" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the air density, <inline-formula><mml:math id="M32" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula> is the un-yawed rotor swept area, <inline-formula><mml:math id="M33" 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> is the interpolated power coefficient based on the rotor averaged streamwise velocity <inline-formula><mml:math id="M34" display="inline"><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the turbine yaw angle to the inflow wind direction, and <inline-formula><mml:math id="M36" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> is a tuneable parameter matching the power loss due to yaw misalignment. This study uses <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.627</mml:mn></mml:mrow></mml:math></inline-formula> for both of the turbines considered (NREL 5 MW and Vestas V80 2 MW), matching the tuned value for the NREL 5 MW presented in <xref ref-type="bibr" rid="bib1.bibx21" id="text.37"/>. Considering the lack of power data for the Vestas V80 2 MW turbine under yawed conditions, preliminary investigations were conducted to assess the influence of <inline-formula><mml:math id="M38" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> on yaw steering optimisation. It was found that <inline-formula><mml:math id="M39" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> does not fundamentally impact the main trends of optimal yaw settings and power improvements presented herein, motivating the use of a common value <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.627</mml:mn></mml:mrow></mml:math></inline-formula> for all examples.</p>
      <p id="d1e917">The total farm power is calculated as
          <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M41" display="block"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>=</mml:mo><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:mi>N</mml:mi></mml:munderover><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
        where <inline-formula><mml:math id="M42" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> is the total number of turbines in the farm configuration. Finally, the normalised farm power production is defined as
          <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M43" display="block"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
        where <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:msubsup><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mi>N</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is the yaw angle of the <inline-formula><mml:math id="M45" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> turbines  considered in each configuration, <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the farm power without wake steering, and <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the farm power achieved for a particular choice of yaw angles <inline-formula><mml:math id="M48" display="inline"><mml:mi mathvariant="bold-italic">γ</mml:mi></mml:math></inline-formula>.
The convention for yaw misalignment involves a positive yaw angle signifying an anticlockwise rotation of the nacelle when viewed from above.</p>
      <p id="d1e1092">Figure <xref ref-type="fig" rid="Ch1.F1"/> presents a visual overview of the main wake features predicted by the models employed in this study, including streamwise velocity deficit distributions, expansion rates, and wake deflections due to yaw. This figure is  subsequently mentioned to help understand the sensitivity of wind farm wake steering optimisation to the choice of underlying wake models. Further details on wake and deflection model formulations are provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.</p>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Optimisation and wind farm setups</title>
      <p id="d1e1107">Open-loop wake steering optimisation for power maximisation is conducted on three different farm layouts. The first two are a <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> farm layout and a <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm layout, both under fully aligned wind conditions, with NREL 5 MW turbines <xref ref-type="bibr" rid="bib1.bibx35" id="paren.38"/> with rotor diameter <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">126</mml:mn></mml:mrow></mml:math></inline-formula> m and hub height <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">90</mml:mn></mml:mrow></mml:math></inline-formula> m. Under the base condition, turbine spacing is set to 7 rotor diameters in the streamwise direction and 5 rotor diameters in the cross-stream direction. The third farm layout considered is representative of the offshore Horns Rev wind farm <xref ref-type="bibr" rid="bib1.bibx26" id="paren.39"/>. It consists of <inline-formula><mml:math id="M53" display="inline"><mml:mn mathvariant="normal">80</mml:mn></mml:math></inline-formula> Vestas V80 2 MW turbines with rotor diameter <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">80</mml:mn></mml:mrow></mml:math></inline-formula> m and hub height <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mi>H</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">70</mml:mn></mml:mrow></mml:math></inline-formula> m, arranged in a rhomboid shape. For the considered wind direction (wd <inline-formula><mml:math id="M56" display="inline"><mml:mo>=</mml:mo></mml:math></inline-formula> 270<inline-formula><mml:math id="M57" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>), the farm exhibits an aligned layout with 10 rows and 8 columns and a distance between two consecutive turbines of <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> for both the streamwise and the cross-stream directions.</p>
      <p id="d1e1223">For all the optimisation test cases, the incoming flow is fully aligned with the farm columns with a wind speed of <inline-formula><mml:math id="M59" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula> m s<inline-formula><mml:math id="M60" 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 <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> ambient turbulence intensity. Wind shear and veer are not taken into account. The sensitivity of wake steering strategies to operating conditions is only investigated for the minimal <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> case, where variations in streamwise spacing and ambient turbulence intensity are performed. Validation for the employed optimisation framework is conducted by comparing results with the findings by <xref ref-type="bibr" rid="bib1.bibx47" id="text.40"/> and is provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>.</p>
      <p id="d1e1274">The optimisation problem's objective function in all cases is chosen to be the normalised farm power production (Eq. <xref ref-type="disp-formula" rid="Ch1.E5"/>). In all cases, we solve the constrained maximisation problem
          <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M63" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mi mathvariant="italic">γ</mml:mi></mml:munder><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">subject</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">to</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>≤</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>≤</mml:mo><mml:mi>i</mml:mi><mml:mo>≤</mml:mo><mml:mi>N</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
        which imposes typical operational bounds of <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> on the yaw misalignment of upstream turbines. In Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>, additional constraints corresponding to modified bounds and yaw angle monotonicity are  added to the optimisation problem (Eq. <xref ref-type="disp-formula" rid="Ch1.E6"/>) to mitigate optimisation sensitivity. These constraints are imposed by adding further linear inequality constraints to Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) and consequently do not result  in any intrinsic increase in complexity of the optimisation problem.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Optimisation algorithms and parameter settings</title>
      <p id="d1e1377">The optimisation algorithms used are the sequential least-squares programming (SLSQP) method developed by <xref ref-type="bibr" rid="bib1.bibx40" id="text.41"/> and the trust region Bayesian optimisation (TuRBO) approach by <xref ref-type="bibr" rid="bib1.bibx19" id="text.42"/>. The gradient-based optimiser SLSQP is the standard algorithm used in the FLORIS framework. In contrast, TuRBO uses a probabilistic approach for the stochastic global optimisation of large-scale high-dimensional problems, and we now give a brief overview of this alternative algorithm. The first step is to take an initial sample of design space via Latin hypercube sampling (LHS). This generates near-random samples of the objective function from a multi-dimensional distribution. Two subsequent stages then follow. First, the available samples are fitted with a Gaussian process, a probabilistic surrogate model, to give a posterior distribution which both approximates the objective function and determines the approximation's uncertainty.<?pagebreak page1430?> Second, an acquisition function, Thompson sampling (TS) in the case of TuRBO, is minimised to determine the next sample point at which to evaluate the objective function. The role of the acquisition function is to find a balance between minimising the objective function and reducing the uncertainty in the fitted surrogate model. The two optimisation steps are iterated until pre-defined stopping criteria are met.</p>
      <p id="d1e1386">The global statistical nature of Bayesian optimisation has been found to outperform local, gradient-based algorithms when applied to multi-modal or discontinuous objective functions <xref ref-type="bibr" rid="bib1.bibx49 bib1.bibx19" id="paren.43"/>. At each iteration, TuRBO's global approach can potentially sample from anywhere in the design space, while gradient-based SLSQP typically takes a small step computed using local gradients. A known drawback of Bayesian optimisation is the higher computational complexity involved in high-dimensional problems which require a large number of objective function evaluations. To address this issue, TuRBO uses a trust region approach in which multiple Gaussian process surrogate models are fitted in evolving promising areas of the design space, referred to as trust regions. The allocation of new samples to evaluate across the models is achieved via an implicit bandit approach. Further explanation of Bayesian optimisation is given via an illustrative example in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/>.</p>
      <p id="d1e1394">In this study, the number of initial evaluations generated by the LHS method is set to double the number of optimisation variables <inline-formula><mml:math id="M65" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> (here the number of turbines). Moreover, the number of trust regions is set to one. To explain this choice, note that if multiple trust regions are used, TuRBO will perform a multiple-starting-point search and fit a Gaussian process in each trust region, thus conducting multiple sub-searches in parallel. A single TuRBO optimisation run would then be comparable, in complexity, to multiple SLSQP ones. To ensure a fair comparison between the two methods, a single TuRBO trust region is used, initialised with the same conditions as those for each SLSQP optimisation. The parameters used for SLSQP and TuRBO optimisers are shown in Table <xref ref-type="table" rid="Ch1.T2"/>.</p>
      <p id="d1e1406">As is subsequently discussed  for the <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> case (see e.g. Fig. <xref ref-type="fig" rid="Ch1.F6"/>), the considered objective functions <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> typically exhibit multi-modality, flat regions, and discontinuities. Multi-modality refers to the presence of multiple and distinct maxima. These features present a fundamental challenge when seeking to robustly identify global maxima. For the TuRBO algorithm, preliminary investigations indicated only a low parametric influence on optimisation results, with the recommended parameter values in <xref ref-type="bibr" rid="bib1.bibx19" id="text.44"/>  identified as the most sensible choice. These findings are consistent with the stochastic nature of this global optimiser. In the case of SLSQP, a sensible choice of optimisation parameters is required to address this complexity and to essentially regularise the optimisation problem. The parameter to consider is the precision goal for the value of the objective function in the stopping criteria, called ftol. It corresponds to the achievement of equal objective function values in the evaluations performed for the numerical approximation of the gradient. Large values of ftol may cause the optimiser to terminate in flat regions, significantly increasing the variability of the objective function and the optimal decision variables to the choice of optimisation initialisation. However, a small ftol typically increases the number of objective function evaluations required for convergence.</p>
      <p id="d1e1441">In this study, ftol <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</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">16</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> for the <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> case is identified as a suitable trade-off between these two behaviours, based on preliminary investigations. For the Horns Rev case, the value  ftol <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</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">12</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is used due to the higher dimensionality of the optimisation problem, i.e. its larger computational requirements.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T1"><?xmltex \currentcnt{1}?><label>Table 1</label><caption><p id="d1e1499">Wake and deflection model parameters.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Model</oasis:entry>
         <oasis:entry colname="col2">Parameter</oasis:entry>
         <oasis:entry colname="col3">Parameter value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Jensen</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M71" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> (onshore/offshore)</oasis:entry>
         <oasis:entry colname="col3">0.05 or 0.04</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">(Jiménez)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Multizone</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">(Jiménez)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">[<inline-formula><mml:math id="M75" display="inline"><mml:mo lspace="0mm">-</mml:mo></mml:math></inline-formula>0.5, 0.3, 1.0]</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi mathvariant="normal">u</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">[0.5, 1.0, 5.5]</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">12.00</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi mathvariant="normal">u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.30</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Gaussian – GCH</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M80" 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="col3">0.380</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">(Bastankhah)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M81" 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">0.004</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.580</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M83" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.077</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M84" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.2</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M86" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">2.000</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><?xmltex \gdef\@currentlabel{1}?></table-wrap>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T2"><?xmltex \currentcnt{2}?><label>Table 2</label><caption><p id="d1e1828">SLSQP and TuRBO parameters.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="3">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Optimiser</oasis:entry>
         <oasis:entry colname="col2">Parameter</oasis:entry>
         <oasis:entry colname="col3">Parameter value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">SLSQP (<inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">ftol</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</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">16</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">eps  [<inline-formula><mml:math id="M89" display="inline"><mml:mo lspace="0mm">-</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M90" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, <inline-formula><mml:math id="M91" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M92" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</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:row>
       <oasis:row>
         <oasis:entry colname="col1">SLSQP (Horns Rev)</oasis:entry>
         <oasis:entry colname="col2">ftol</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</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">12</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">eps  [<inline-formula><mml:math id="M95" display="inline"><mml:mo lspace="0mm">-</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M96" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, <inline-formula><mml:math id="M97" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M98" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</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:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">eps  [0<inline-formula><mml:math id="M100" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, <inline-formula><mml:math id="M101" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M102" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col3"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">(<inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mo>→</mml:mo><mml:mi mathvariant="normal">constraint</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">C</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</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:row>
         <oasis:entry colname="col1">TuRBO</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">succ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">3.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi mathvariant="normal">fail</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">25.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mn mathvariant="normal">7.8125</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">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.6</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi mathvariant="normal">init</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.8</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><?xmltex \gdef\@currentlabel{2}?></table-wrap>

      <?xmltex \floatpos{t}?><fig id="Ch1.F2" specific-use="star"><?xmltex \currentcnt{2}?><?xmltex \def\figurename{Figure}?><label>Figure 2</label><caption><p id="d1e2243">Power function of a <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout as the upstream turbine yaw angle <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> ranged from <inline-formula><mml:math id="M113" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M114" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> to <inline-formula><mml:math id="M115" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M116" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>. Top plots: wind farm power <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(a)</bold>, upstream turbine power <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(b)</bold>, and downstream turbine power <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <bold>(b)</bold> for <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> streamwise turbine spacing and ambient turbulence intensity <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>. Middle plots: wind farm power <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> with variable streamwise spacing, <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> <bold>(c)</bold> and <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> <bold>(d)</bold>. Bottom plots: wind farm power <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> downstream spacing and variable turbulence intensity, <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> <bold>(e)</bold> and <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> (<bold>f</bold>).</p></caption>
          <?xmltex \igopts{width=284.527559pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f02.png"/>

        </fig>

      <?pagebreak page1431?><p id="d1e2508">The second SLSQP parameter to consider is eps <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, corresponding to the step size (in this case equal to eps <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:mo>×</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>) used for the finite-difference gradient approximation. Large eps values lead to inaccurate gradient approximations. However, as shown in Fig. <xref ref-type="fig" rid="Ch1.F6"/>, the objective functions considered in this study may have very high gradients, discontinuities, or discontinuous derivatives, especially when using the Jensen and multizone models. This “rough” objective function behaviour, in conjunction with small eps values, may cause the SLSQP optimiser to identify optimal decision variables in local maxima. A <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> step size (eps <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn></mml:mrow></mml:math></inline-formula>) is identified to be a suitable value since this relatively large value of eps has the effect of artificially smoothing the rough objective function while limiting the loss of information about the local gradient.</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="d1e2587">Model comparison for a <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm SLSQP optimisation. <bold>(a)</bold> Optimal set points per turbine, with <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mn mathvariant="normal">12</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> initial yaw angles illustrated in blue. The dashed lines delimit wind farm rows.  <bold>(b)</bold> A <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout with the turbine naming convention. <bold>(c)</bold> Resulting objective function (normalised farm power) for the  Jensen (J), multizone (M), Gaussian (G), and Gauss–curl Hybrid (GCH) models.</p></caption>
          <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f03.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Results</title>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><?xmltex \opttitle{Two-turbine case -- NREL 5\,MW}?><title>Two-turbine case – NREL 5 MW</title>
      <p id="d1e2659">We consider the problem of farm power maximisation for a <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout with NREL 5 MW turbines. The only optimisation variable is the yaw angle <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> of the upstream turbine. The optimal yaw angle of the furthest downstream turbine is necessarily zero since no other turbine would benefit from a deflection in its wake, and a non-zero yaw angle reduces the power output of this turbine. Optimisation is therefore performed via a simple parameter sweep of <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. Different streamwise turbine spacings and ambient turbulence intensity are considered to provide insights into the sensitivity of both the optimised farm power and the optimal yaw angle, denoted <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, to operational conditions. Observations made for this minimal study are used to explain and analyse the sensitivity and performance of wake steering optimisation for more complex farm layouts in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/> and <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>
      <p id="d1e2736">Figure <xref ref-type="fig" rid="Ch1.F2"/>a, b show the extracted power <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of the entire <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> farm, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of the upstream turbine, and <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of the downstream turbine. Power production <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> of the upstream machine is the same for all models. A clear sensitivity to model choice is observed in Fig. <xref ref-type="fig" rid="Ch1.F2"/>a with the Jensen model's optimal yaw angle at <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, while, in contrast, all<?pagebreak page1432?> other models have optimal yaw angles close to constraint boundaries with <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>. Model sensitivity is caused by the flatness of the Jensen model's downstream power curve <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> apparent in Fig. <xref ref-type="fig" rid="Ch1.F2"/>b; that is, <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>d</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is significantly smaller for Jensen than for other models. Flatness arises due to the uniform, or “top-hat”, profile of the Jensen distribution (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>), which results in a lack of sensitivity of the streamwise velocity deficit to moderate yaw perturbations. In contrast, it can also be seen in Fig. <xref ref-type="fig" rid="Ch1.F1"/> that all other models predict a streamwise velocity deficit which is both larger at the centreline and decreases more rapidly in the transverse direction. For the multizone model, this decrease in the streamwise velocity deficit is discontinuous due to the model's definition of splitting the wake into various zones, with sharp interfaces between each zone. Overall, the Gaussian, GCH, and multizone models give downstream power curves <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which are more sensitive to changes in <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> than the Jensen model.</p>
      <p id="d1e2992">Model sensitivity is influenced by both turbine spacing and turbulence intensity <inline-formula><mml:math id="M152" 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>. Figure <xref ref-type="fig" rid="Ch1.F2"/>c, d show that the optimal yaw angle for the Gaussian, GCH, and multizone models decreases with increased turbine spacing. Although not shown, <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> for all models for spacing greater than <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:mn mathvariant="normal">32</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>. Similar behaviour can be observed in Fig. <xref ref-type="fig" rid="Ch1.F2"/>e, f as <inline-formula><mml:math id="M155" 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> increases, with <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> whenever <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> for all models which incorporate this parameter (the multizone model does not depend on <inline-formula><mml:math id="M158" 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>). From an optimisation perspective, increased spacing and turbulence intensity have the analogous effect of increasing  wake recovery and effective wake diameter at the downstream turbine. This reduces the sensitivity of <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and renders the wake steering optimisation problem trivial. Despite this observation, it is clear from Fig. <xref ref-type="fig" rid="Ch1.F2"/> that for any practically relevant turbine spacing of up to <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, and for turbulence intensities of <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> (at a typical <inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing), it is still the case that substantial model sensitivity is present in the <inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> farm power maximisation problem.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F4" specific-use="star"><?xmltex \currentcnt{4}?><?xmltex \def\figurename{Figure}?><label>Figure 4</label><caption><p id="d1e3194">Initialisation sensitivity of a <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm SLSQP optimisation for the <bold>(a)</bold> Jensen, <bold>(b)</bold> multizone, <bold>(c)</bold> Gaussian, and <bold>(d)</bold> GCH wake models. Left plot: optimal set points per turbine for the random sets “Random” of initial conditions. The dashed lines delimit wind farm rows. Right plot: resulting objective function (normalised farm power) per initialisation case. For the turbine naming convention, refer to Fig. <xref ref-type="fig" rid="Ch1.F3"/>b.</p></caption>
          <?xmltex \igopts{width=455.244094pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f04.png"/>

        </fig>

      <p id="d1e3230">With a view towards understanding the sensitivity of wake steering optimisation for more complex farms, it is important to highlight the <italic>multi-modality</italic> of the farm power curves <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the Gaussian, GCH, and multizone models. Multi-modality can be seen for all considered spacings in Fig. <xref ref-type="fig" rid="Ch1.F2"/>a, c, d and for <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> in Fig. <xref ref-type="fig" rid="Ch1.F2"/>a, e. For the Gaussian model, this arises simply due to the symmetry of <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the aligned inflow conditions considered here. Multizone and GCH models are weakly asymmetric due to the incorporation of wake rotation effects, with <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, for <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, in the case considered here of a clockwise spinning rotor. However, the farm power <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> curves for both models are still clearly multi-modal.</p>
      <p id="d1e3384">In summary, this minimal <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> case demonstrates that wake steering optimisation can exhibit model sensitivity due to the flatness of the Jensen model, while the Gaussian, GCH, and multizone models exhibit multi-modal objective functions. Both observations are of importance to understanding the behaviour and sensitivity of wake steering optimisation for the following cases of more complex farm layouts.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><?xmltex \opttitle{Multiple-turbine optimisation: $5\times 5$ array of NREL 5\,MW turbines}?><title>Multiple-turbine optimisation: <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> array of NREL 5 MW turbines</title>
      <p id="d1e3420">We consider wake steering optimisation for farm power maximisation on a <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout with NREL 5 MW turbines. Although the Jensen model was seen to perform poorly in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>, we still report its performance for this example due to the Jensen model's ongoing use in the wind energy community for wake steering applications <xref ref-type="bibr" rid="bib1.bibx37 bib1.bibx27 bib1.bibx3" id="paren.45"/>. The objective of this medium-complexity case is to understand the sensitivity of wake steering performance to both the choice of wake model and the choice and particular implementation of an optimisation algorithm. Due to the high-dimensional and multi-modal nature of the underlying optimisation problem in this case, statistical analysis is required to quantify optimisation sensitivity (see Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/>).<?pagebreak page1434?> However, we first study several indicative cases, which will make the statistical results transparent.</p>
<sec id="Ch1.S4.SS2.SSS1">
  <label>4.2.1</label><title>Initial yaw angle sensitivity in gradient-based optimisation</title>
      <p id="d1e3449">In this section, we seek to understand the interaction between the wake model selection, the algorithm choice, and the initial yaw angles used by each optimiser. Insights from the indicative examples given in this section will motivate and clarify the statistical analysis of Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/>.</p>
      <p id="d1e3454">Figure <xref ref-type="fig" rid="Ch1.F3"/> shows the comparison between wake models for an SLSQP optimisation initialised with a yaw angle of <inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:mn mathvariant="normal">12</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> for all turbines.
Significant discrepancies between models are observed for both the predicted wind farm power improvement and the corresponding optimal yaw angles. Farm power variations of up to <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mn mathvariant="normal">64</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> occur between models. Even the Gaussian and the GCH wake models have an optimised farm power difference of <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mn mathvariant="normal">30</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> despite the similarity in these models' velocity deficit distribution (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>).</p>
      <p id="d1e3495">Arguably more important, from an implementation perspective, is the significant inter-model variation in optimal yaw angles. For the Jensen model, Fig. <xref ref-type="fig" rid="Ch1.F3"/> indicates non-zero optimal yaw angles for only the second (at <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>) and third rows (at <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:mn mathvariant="normal">9</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>) of turbines. This counter-intuitive solution should be viewed in the context of a <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> farm power improvement and the power-curve flatness described in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>. The Jensen model's lack of sensitivity implies that moderate yaw angle variations are essentially indistinguishable for the optimiser, and, consequently, a gradient-based algorithm such as SLSQP can terminate at any point in a large set of possible yaw angles: those obtained in Fig. <xref ref-type="fig" rid="Ch1.F3"/> are just one such near-optimal solution. Optimal yaw angle differences are also observed between the Gaussian model, which saturates the upper bound constraints at <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> for all but the final turbine row, and the GCH model, whose optimal angles monotonically decrease with turbine rows. This is attributed to the GCH model's ability to capture secondary steering effects <xref ref-type="bibr" rid="bib1.bibx38" id="paren.46"/>. Finally, the multizone model's optimal yaw angles are non-monotonic with rows but also identify the non-physical setting of <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> for the final row of turbines (<inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> is optimal). As is explored later in this section, this behaviour is caused by optimisation sensitivity to initial yaw angles.</p>
      <p id="d1e3579">To further explore the sensitivity to initial yaw angles between models, Fig. <xref ref-type="fig" rid="Ch1.F4"/> shows the results of <inline-formula><mml:math id="M184" display="inline"><mml:mn mathvariant="normal">10</mml:mn></mml:math></inline-formula> SLSQP optimisation runs, each initialised by randomly sampling the <inline-formula><mml:math id="M185" display="inline"><mml:mn mathvariant="normal">25</mml:mn></mml:math></inline-formula> initial yaw angles from a uniform distribution on <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>, with these initial conditions then used for all four models. These optimisation runs will be incorporated into the statistical analysis detailed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/>. All models exhibit strong sensitivity to initial yaw angles. Interestingly, for the Jensen and Gaussian models, while there is almost no variation in normalised farm power improvement, there is high variability in the optimal decision variables. As discussed in Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>, for the Jensen model, this arises due to cost-function flatness, and for the Gaussian model due to the symmetric multi-modality of its objective function. A further consequence of multi-modality, which can be seen in Fig. <xref ref-type="fig" rid="Ch1.F4"/>c, is that yaw constraints may be saturated at either boundary (i.e. at <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> or at <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>) rather than uniformly at <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> as in the single case shown in Fig. <xref ref-type="fig" rid="Ch1.F1"/>. Further, this columnwise switching of optimal yaw angle signs has a negligible effect on the predicted farm power improvement. Such sign inconsistency is clearly undesirable for practical implementation of wake steering since small operational perturbations could potentially require large control input changes. This behaviour is discussed further in Sects. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/> and <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>
      <p id="d1e3683">For the multizone and GCH models, the sensitivity of both the normalised farm power (of up to <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:mn mathvariant="normal">15</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, respectively) and the optimal yaw angles can be observed in Fig. <xref ref-type="fig" rid="Ch1.F4"/>.
The multizone model (Fig. <xref ref-type="fig" rid="Ch1.F4"/>b) is highly sensitive to initialisation, caused by its highly non-linear and multi-modal farm power function – discussed in more detail in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS2"/> – which arises due to this model's definition of splitting the wake into various zones, with sharp interfaces between each zone (see Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS2"/> and Fig. <xref ref-type="fig" rid="Ch1.F1"/>b).
The GCH model (Fig. <xref ref-type="fig" rid="Ch1.F4"/>d) has distinct local maxima, which is clear from the large differences observed in the normalised power increase across the 10 optimisation runs. Similar to the Gaussian model, multi-modality causes negative optimal yaw angles and columnwise variation in the sign of the optimal decision variables in a number of runs (e.g.  “Random 7” run). However, due to the fact that the GCH model also captures secondary steering and wake rotation effects, such negative yaw angles and sign switches now also correspond to sub-optimal <italic>local</italic> maxima, with an observed range of <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> in normalised farm power for even the small number of cases considered here.</p>
      <p id="d1e3735">In terms of wake model robustness, two key observations deserve attention. Firstly, the Gaussian model demonstrates significantly greater robustness than the multizone model despite both models yielding similar optimal yaw settings (Fig. <xref ref-type="fig" rid="Ch1.F4"/>b, c). The Gaussian model exhibits notably lower variations in farm power improvement across different initialisations. Secondly, although the GCH model (Fig. <xref ref-type="fig" rid="Ch1.F4"/>d) includes additional wake features, such as secondary steering effects, compared with the Gaussian model, it exhibits considerably lower robustness, as evidenced by significant variations in the resulting objective function based on the initial yaw angles.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F5" specific-use="star"><?xmltex \currentcnt{5}?><?xmltex \def\figurename{Figure}?><label>Figure 5</label><caption><p id="d1e3744">Test Case 1 optimisation results of a <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout for the <bold>(a)</bold> Jensen, <bold>(b)</bold> multizone, <bold>(c)</bold> Gaussian, and <bold>(d)</bold> GCH wake models. Left plot: SLSQP- (in red circles) and TuRBO-optimised (in green triangles)  yaw angle per turbine given Test Case 1's random set of initial points (in blue squares). The dashed lines delimit wind farm rows. Right plot: streamwise velocity at hub height for SLSQP-optimised yaw set points. For the turbine naming convention, refer to Fig. <xref ref-type="fig" rid="Ch1.F3"/>b.</p></caption>
            <?xmltex \igopts{width=432.48189pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f05.png"/>

          </fig>

      <p id="d1e3780">To investigate initialisation sensitivity in more detail and to better understand how initial yaw angles affect the optimal yaw angles, we study one additional SLSQP optimisation run – denoted Test Case 1 – for each of the considered models, again initialised by sampling 25 turbine yaw angles from a uniform distribution on <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>. The resulting optimal yaw angles are shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/> (left), while the streamwise velocity at  hub height for the optimal yaw configuration is shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/> (right). It is clear that  the initial yaw angles (blue squares) directly influence the optimal yaw angles (red circles) for the Jensen, multizone, and Gaussian models,<?pagebreak page1435?> both in their sign and in their absolute value. For the Gaussian model, for example, the sign of the initial angle for each turbine directly determines the sign of its optimised angle, which either saturates the constraints or is zero if the turbine is in the final row. This results in optimal yaw angles with within-column sign oscillations, which are practically undesirable. Their effect on the streamwise velocity fields is shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/> (right).</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="d1e3819">Farm power of a <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout for the <bold>(a, e)</bold> Jensen, <bold>(b, f)</bold> multizone, <bold>(c, g)</bold> Gaussian, and <bold>(d, h)</bold> GCH wake models as a function of a single turbine yaw angle. Turbine yaw settings range from <inline-formula><mml:math id="M196" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M197" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> to <inline-formula><mml:math id="M198" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula>25<inline-formula><mml:math id="M199" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>, with SLSQP optimisation solutions as starting points (illustrated with red circles for the swept turbine “T”). For the turbine naming convention, refer to Fig. <xref ref-type="fig" rid="Ch1.F3"/>b.</p></caption>
            <?xmltex \igopts{width=483.69685pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f06.png"/>

          </fig>

      <p id="d1e3888">For the GCH model in Fig. <xref ref-type="fig" rid="Ch1.F5"/>d, the sign influence of initial yaw angles is still apparent, although less obvious than for the other models. As discussed above, the resulting negative signs and
within-column oscillations of optimal yaw angles correspond to local, not global, maxima. To quantify this observation, consider the five columns of turbines in Fig. <xref ref-type="fig" rid="Ch1.F5"/>d (right) for the GCH-based optimisation. The upper column, at <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">2500</mml:mn></mml:mrow></mml:math></inline-formula> m, exhibits positive and no sign-fluctuating optimal yaw angles within the same column. This is in contrast to the other four columns, which extract, respectively, <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:mn mathvariant="normal">16</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:mn mathvariant="normal">15</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> less power than the upper, positive, sign-consistent column. Understanding the origin of these local maxima and why the gradient-based optimiser SLSQP identifies different maxima for different initial yaw values<?pagebreak page1436?> requires a more careful analysis of the underlying objective function geometries, conducted and presented in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS2"/>.</p>
      <p id="d1e3954">Figure <xref ref-type="fig" rid="Ch1.F5"/> (left) also includes the resulting optimal yaw settings (green triangles) for the global optimisation algorithm TuRBO, introduced in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. Compared to SLSQP, TuRBO appears to mitigate the influence of initial yaw angles on the sign and magnitude of the optimal yaw angles for all wake models. For the GCH model (Fig. <xref ref-type="fig" rid="Ch1.F5"/>d), for example, the optimal yaw configuration exhibits mostly sign-consistent and positive yaw angles, with the exception of only turbines <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">15</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M206" display="inline"><mml:mn mathvariant="normal">20</mml:mn></mml:math></inline-formula>. In further contrast to SLSQP, the optimal yaw angles obtained by TuRBO exhibit an approximate monotonically decreasing trend with downstream distance, which is representative of the optimal solution for models capturing secondary steering effects, as observed in <xref ref-type="bibr" rid="bib1.bibx38" id="text.47"/> and <xref ref-type="bibr" rid="bib1.bibx54" id="text.48"/>.</p>
      <p id="d1e3993">These results motivate a statistical comparison of optimisation sensitivity between gradient-based and global optimisation approaches, which is given in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/>. Before this, we briefly study the reasons for the increased sensitivity of gradient-based optimisation by looking more closely at the underlying geometry of the objective function.</p>
</sec>
<sec id="Ch1.S4.SS2.SSS2">
  <label>4.2.2</label><title>Objective function geometry</title>
      <p id="d1e4006">This section investigates the geometry of the farm power objective function when using different wake models. The aim is to understand the higher initialisation sensitivity observed in gradient-based optimisation and to provide the necessary insights in order to propose a solution to this problem, which is presented in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>.</p>
      <p id="d1e4011">Figure <xref ref-type="fig" rid="Ch1.F6"/> shows, for each model, two planar slices through the objective functions <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for Test Case 1. Each is obtained by varying the yaw angle of a single chosen turbine (as indicated in each subfigure), with each presented slice also containing the optimal yaw angles obtained for each model.
All four models exhibit local extrema, confirming the multi-modal nature of all farm power functions. Even the Gaussian model (Fig. <xref ref-type="fig" rid="Ch1.F6"/>c, g), which has the smoothest objective function, has local maxima due to the optimisation constraints. The fact that the obtained optimum in this case (shown by the red circle in Fig. <xref ref-type="fig" rid="Ch1.F6"/>c) is <italic>not</italic> global is now transparently explained by the fact that the initial yaw angle (shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/>) of turbine T<inline-formula><mml:math id="M208" display="inline"><mml:mn mathvariant="normal">6</mml:mn></mml:math></inline-formula> is of a positive sign.</p>
      <p id="d1e4047">The remaining three models have objective functions with very high gradients, discontinuities, or discontinuous derivatives. This is particularly prominent for the Jensen and multizone models in Fig. <xref ref-type="fig" rid="Ch1.F6"/>a, e, b, and f. This property is further exacerbated by the multiple wake interactions present for the <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm. As discussed in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>, a careful choice of optimisation parameter eps can help mitigate the effect of cost-function discontinuities. Since eps determines the step size used for finite-difference gradient approximations, using a larger value can smooth the objective function numerically. However, in this case, it can be seen that even a relatively large, and standard, choice of eps corresponding to a <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> step size may not overcome the observed rough or abruptly changing cost function for the Jensen, multizone, or GCH models. This suggests that an optimal value of eps may be highly problem dependent and thus hard to identify a priori.</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="d1e4081">Comparison of the statistics of the objective function <bold>(a–d)</bold> and the statistics on the number of evaluations <bold>(e–h)</bold> between SLSQP and TuRBO optimisation algorithms for a <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout using the <bold>(a, e)</bold> Jensen, <bold>(b, f)</bold> multizone, <bold>(c, g)</bold> Gaussian, and <bold>(d, h)</bold> GCH wake models. Mean values are illustrated with error bars for 1 standard deviation (red or green) and minimum and maximum values (black).</p></caption>
            <?xmltex \igopts{width=398.338583pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f07.png"/>

          </fig>

      <p id="d1e4121">The intrinsically multi-modal, and often rough, nature of farm power objective functions for the <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm presents a challenge for gradient-based optimisation. In Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/> we provide a solution to this problem for gradient-based optimisers. However, we first consider the possible advantage of using a global optimisation strategy and perform a<?pagebreak page1437?> statistical comparison of optimisation sensitivity between gradient-based and global optimisation approaches for the <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm power maximisation problem.</p>
</sec>
<sec id="Ch1.S4.SS2.SSS3">
  <label>4.2.3</label><title>Sensitivity comparison of gradient-based and global optimisation algorithms for wake steering</title>
      <p id="d1e4159">In this section, we compare the performance of the SLSQP and TuRBO optimisers described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> in terms of the statistics of two properties: the normalised farm power increase and the total number of wind farm evaluations required. Statistical analysis is required since SLSQP is highly sensitive to initial conditions (see Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS1"/>), and TuRBO is stochastic by nature. Moreover, computational complexity is compared in terms of farm evaluations rather than computational time because TuRBO requires the tuning of  Gaussian processes. This additional computational step is highly dependent on the problem size, and including it in the comparison would lead to conclusions not generalisable to other optimisation cases. For each of the four models, wake steering optimisation is repeated <inline-formula><mml:math id="M214" display="inline"><mml:mn mathvariant="normal">50</mml:mn></mml:math></inline-formula> times per optimiser, each initialised with an independent set of random initial conditions sampled from a uniform distribution on [<inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>]. To ensure a fair comparison, SLSQP and TuRBO algorithms share the same sets of initial yaw angles. The maximum number of evaluations for TuRBO is set to 500, corresponding to the observed average number of objective function evaluations used by SLSQP. Finally, to limit the bias of extreme cases in the function evaluation statistics, each algorithm is assumed to be converged when <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mn mathvariant="normal">95</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> of the actual wind farm power improvement is reached.</p>
      <p id="d1e4208">Figure <xref ref-type="fig" rid="Ch1.F7"/>'s upper row shows the comparison between SLSQP and TuRBO with the mean, standard deviation, and minimum and maximum values of normalised farm power increase shown. Higher mean values are obtained for all models by the global TuRBO algorithm. Although the balance between exploration and exploitation can represent a challenge when using global optimisers, especially in highly dimensional search spaces, the multi-modal nature of the farm power function clearly gives an advantage to TuRBO's global approach for this <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm configuration. Moreover, for all models except Jensen, a lower standard deviation in the obtained optimal farm power is found when using TURBO, indicating that it is less sensitive to yaw angle initialisation. Realistic wind farm operating conditions also include slightly misaligned cases. For this reason, we also considered small <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> variations in the wind direction. The results, which are not included for the sake of brevity, were found to be consistent with the ones in Fig. <xref ref-type="fig" rid="Ch1.F7"/>.</p>
      <p id="d1e4241">Statistics (mean, standard deviation, and minimum and maximum values) of the number of evaluations required for each optimiser are shown in the lower row of Fig. <xref ref-type="fig" rid="Ch1.F7"/>. For all the wake models, the TuRBO algorithm requires roughly the same or lower evaluations than SLSQP to achieve, on average, higher wind farm power improvements. Moreover, TuRBO exhibits lower or similar standard deviations than SLSQP, indicating a lower impact of initialisation on computational requirements.</p>

      <?xmltex \floatpos{t}?><fig id="Ch1.F8" specific-use="star"><?xmltex \currentcnt{8}?><?xmltex \def\figurename{Figure}?><label>Figure 8</label><caption><p id="d1e4249">Comparison of optimisation results of a <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> wind farm layout between the SLSQP and TuRBO optimisation algorithms for the GCH wake model. Plot <bold>(a)</bold>: objective function values at each evaluation for SLSQP maximum (blue circles), average TuRBO (red squares), and SLSQP minimum (green triangles). Remaining plots: resulting streamwise velocity at hub height with optimised yaw set
points for the SLSQP maximum <bold>(b)</bold>, average TuRBO <bold>(c)</bold>, and SLSQP minimum <bold>(d)</bold> farm improvements.</p></caption>
            <?xmltex \igopts{width=369.885827pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f08.png"/>

          </fig>

      <p id="d1e4282">Figure <xref ref-type="fig" rid="Ch1.F8"/> presents three indicative cases to understand the comparison between SLSQP and TuRBO optimisers for the GCH model. These cases include the TuRBO run achieving a farm power production closest to TuRBO's mean power increase and the two SLSQP runs corresponding to the minimum and maximum SLSQP farm power increases. Figure <xref ref-type="fig" rid="Ch1.F8"/>a shows the objective function <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:mi>G</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> whenever a farm evaluation is performed by the respective optimiser. It is interesting that the best-performing SLSQP run (blue circles) converges after fewer iterations, and to a higher farm power, than the<?pagebreak page1438?> indicative TuRBO case presented and, in fact, outperforms all TuRBO runs (see Fig. <xref ref-type="fig" rid="Ch1.F7"/>d). This suggests that, if initialised in the region of attraction of global (or near-global) maxima, a gradient-based optimiser may exhibit faster convergence than a generic global strategy.</p>
      <p id="d1e4305">The streamwise velocity flow fields at hub height for the three considered cases are also shown in Fig. <xref ref-type="fig" rid="Ch1.F8"/>. Inter-column switches and negative signs of optimal yaw angles are again present in the worst-performing SLSQP case (see Fig. <xref ref-type="fig" rid="Ch1.F8"/>d and green triangles in Fig. <xref ref-type="fig" rid="Ch1.F8"/>a), which requires <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mn mathvariant="normal">79</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> more objective function evaluations and has a <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:mn mathvariant="normal">9</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> drop in farm power compared with the best-performing SLSQP case (see Fig. <xref ref-type="fig" rid="Ch1.F8"/>b and blue circles in Fig. <xref ref-type="fig" rid="Ch1.F8"/>a). This again highlights the challenge of multi-modality for gradient-based approaches. Finally, it is interesting to note that while the optimal wake velocity fields in Fig. <xref ref-type="fig" rid="Ch1.F8"/>b and c are visually similar, they are not identical: the TuRBO solution has <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.3</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> lower farm power and requires <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:mn mathvariant="normal">54</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> more evaluations to find it. This confirms a possible, albeit counter-intuitive, advantage of the rapid local convergence enjoyed by gradient-based optimisers. Indeed, the quasi-Newton algorithm employed in SLSQP is well known <xref ref-type="bibr" rid="bib1.bibx14" id="paren.49"/> for possessing rapid locally quadratic convergence rates, which may partially explain this observation. It should be noted, however, that the high variability in SLSQP seen in Fig. <xref ref-type="fig" rid="Ch1.F7"/>, both in terms of the farm power increase and objective function evaluations, is a barrier to obtaining robust performance advantages of SLSQP over global optimisation approaches such as TuRBO.</p>
      <p id="d1e4371">Although initialisation sensitivity is reduced using TuRBO's global optimisation strategy, within-column sign inconsistency of the optimal yaw angles is still possible for all wake models using both SLSQP and TuRBO algorithms, as shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/>. This behaviour is practically undesirable since it suggests that large control input changes may arise from small parametric changes (e.g. if a small change in atmospheric conditions requires recalculation of the optimal yaw angles, a different distribution of within-column signs could be obtained, which would require a large change in yaw angles). As mentioned in  <xref ref-type="bibr" rid="bib1.bibx27" id="text.50"/>, an excessive yawing is undesirable and should be limited whenever possible. For wake models describing power asymmetry due to yaw (multizone and GCH), negative signs and inter-column switches of optimal yaw angles also correspond to local maxima, with losses in farm power improvement. In the following section, we show how this issue can be overcome by adding simple constraints which reduce the initial yaw angle sensitivity of the SLSQP algorithm to enable rapid and robust convergence to desirable local maxima.</p>
</sec>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Multiple-turbine case: the Horns Rev wind farm</title>
      <p id="d1e4388">In this section, the results for farm power maximisation via wake steering optimisation are presented for the well known Horns Rev wind farm. To the best of our knowledge, only a small number of studies, see for instance <xref ref-type="bibr" rid="bib1.bibx18" id="text.51"/>, <xref ref-type="bibr" rid="bib1.bibx54" id="text.52"/>, and <xref ref-type="bibr" rid="bib1.bibx12" id="text.53"/>, have performed wake steering optimisation on this farm layout. In <xref ref-type="bibr" rid="bib1.bibx54" id="text.54"/>, sign-coherent optimal yaw settings are obtained using gradient-based optimisation. However, in this study, explicit knowledge of the optimal solution<?pagebreak page1439?> was used to define initial yaw angles to ensure optimiser convergence. In contrast, <xref ref-type="bibr" rid="bib1.bibx18" id="text.55"/> used an evolutionary optimisation algorithm and found optimal yaw angles whose signs exhibit negative values and high column inconsistency, reflecting the observations made for the <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> layout considered in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/>.</p>
      <p id="d1e4421">The first objective of this high-complexity optimisation case is to confirm whether wake steering sensitivities uncovered in the low- and medium-complexity cases transfer to a realistic setup. The second objective is to add optimisation constraints to try to mitigate initial yaw angle sensitivity and to achieve coherent and interpretable optimal yaw settings that could eventually be implementable in the field. In large-scale optimisation problems with many design variables and required evaluations, the TuRBO algorithm becomes computationally demanding for real-time control applications due to the tuning of the Gaussian processes. For the Horn Rev case, TuRBO's computational complexity is about 2 orders of magnitude higher than SLSQP's. For this reason, and the observation from Sect. <xref ref-type="sec" rid="Ch1.S4.SS2.SSS3"/> that SLSQP can exhibit rapid convergence if the initialisation sensitivity is appropriately mitigated, we only employ the SLSQP optimisation algorithm in this section, using the parameters in Table <xref ref-type="table" rid="Ch1.T2"/>. Note that the Jensen model is not included in this section due to the poor wake steering performance observed in the previous sections.</p>
      <p id="d1e4428">For sensitivity mitigation, we consider two additional sets of optimisation constraints. The constraint “C1” refers to the case in which the yaw angles of every turbine are constrained to be positive. The aim is to improve optimiser performance by avoiding the maxima corresponding to within-column yaw angles with alternating signs. Under aligned conditions, constraining the yaw angles to be either positive or negative is equivalent for symmetric models like the Jensen and the Gaussian. However, when considering wake models that incorporate wake rotation effects, such as the multizone and the GCH models, positive yaw angles lead to higher turbine power production. Implementation of the  C1 constraint involves modifying the variable bounds from [<inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>] to [<inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>]. To maintain a step size of 2.5<inline-formula><mml:math id="M228" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> for gradient approximations, the SLSQP parameter eps is adjusted to 0.1, as outlined in Table <xref ref-type="table" rid="Ch1.T2"/>. A second set of constraints, “C2”, corresponds to the case where the yaw angles of each turbine (excluding turbines in the most upstream row) are forced to be equal to or lower than the yaw angles of the upstream turbines in the same column and is implemented in SLSQP using linear inequality constraints. It should be noted that these additional sets of constraints can be easily adapted to other operating and atmospheric conditions; e.g. for a different wind direction, a simple permutation of the turbines' labelling is required to specify columns which correspond to the new downstream direction.</p>
      <p id="d1e4488">The investigated cases are limited to a fully aligned layout, as it is the predominant condition and the one holding the largest potential for the implementation of wake steering strategies. The analysis performed is statistical, where each of the 50 optimisation cases per wake model is initialised with an independent set of random initial conditions sampled from a uniform distribution on [<inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>]. For clarity throughout the section, optimisation performed using only the original yaw angle bounds of [<inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>], without applying either the C1 or the C2 constraint, is referred to as “nominal”. Optimisation cases with additional constraints are indicated as “constrained”. Note that for the additional constrained Horns Rev cases, a 2.5<inline-formula><mml:math id="M231" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula> step size corresponds to eps being equal to 0.1 due to the modified variable bounds [<inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>], as specified in Table <xref ref-type="table" rid="Ch1.T2"/>.</p>
      <p id="d1e4573">Optimal yaw configurations for a single SLSQP optimisation with a unique random set of initial conditions in the nominal, C1, and C1 <inline-formula><mml:math id="M233" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases are presented in Fig. <xref ref-type="fig" rid="Ch1.F9"/>. In line with the results of <xref ref-type="bibr" rid="bib1.bibx18" id="text.56"/>, the first row of subfigures shows that, in the nominal case, the optimal yaw settings obtained for the three wake models are not practical, with frequent switches between large positive and negative yaw angles within any given row or column of the wind array. The only common trend is that the final downstream row of turbines has optimal yaw angles close to zero. The key message is that, without a sensitivity mitigation strategy, the proposed yaw angle settings cannot be implemented in real life due to obvious operational constraints.</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="d1e4590">Comparison of the Horns Rev wind farm optimal yaw setting for a single optimisation between the nominal, C1, and C1 <inline-formula><mml:math id="M234" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 constrained SLSQP optimisation cases for the <bold>(a, d, g)</bold> multizone, <bold>(b, e, h)</bold> Gaussian, and <bold>(c, f, i)</bold> GCH wake models. Red and blue indicate positive and negative yaw angles, respectively.</p></caption>
          <?xmltex \igopts{width=369.885827pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f09.png"/>

        </fig>

      <p id="d1e4615">The introduction of additional constraints clearly improves the identification of the optimal variables. For all models, optimal yaw angles represent a more interpretable and practical solution. Overall, a similar performance is achieved with the two different constrained approaches, C1 and C1 <inline-formula><mml:math id="M235" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2. This successfully proves how the use of simple constraints, motivated by an understanding of the optimisation problem, can lead to considerable improvements in optimisation performance. The C1 constraint forces the optimiser to avoid the maxima corresponding to within-column yaw angles with negative and alternating signs, which is of particular importance when such maxima are sub-optimal for models with power asymmetry due to yaw (multizone and GCH). The C2 constraint, limited to C1 <inline-formula><mml:math id="M236" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 cases, effectively decreases initialisation sensitivity by imposing column-equal or column-monotonically decreasing optimal yaw angle solutions. For the GCH model, which captures secondary steering effects, introducing constraints leads to a smoother decrease in optimal decision variables from row to row and to the identification of an optimal decrease rate.</p>
      <p id="d1e4632">Table <xref ref-type="table" rid="Ch1.T3"/> provides the farm power improvements obtained from the single SLSQP optimisation outlined in Fig. <xref ref-type="fig" rid="Ch1.F9"/> for the nominal, C1, and C1 <inline-formula><mml:math id="M237" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases. Across all three wake models, it is evident that the introduction of additional constraints enhances the performance of the optimiser. Compared with the nominal case, the constrained cases yield a <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> increase in the objective function for the multizone, Gaussian, and GCH models, respectively. When comparing the C1 and C1 <inline-formula><mml:math id="M241" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases, minimal or negligible differences in farm power<?pagebreak page1440?> improvement are observed. This indicates that the introduction of the C1 constraint alone already leads to column-equal or column-monotonically decreasing optimal yaw angles in the cases presented (as depicted in Fig. <xref ref-type="fig" rid="Ch1.F9"/>). However, to consistently ensure this behaviour across various optimisation conditions, the implementation of the C2 constraint is necessary. While examining the results of a single SLSQP optimisation is informative, a statistical analysis is required to evaluate the benefits of implementing additional constraints to mitigate initialisation sensitivity.</p>

<?xmltex \floatpos{t}?><table-wrap id="Ch1.T3"><?xmltex \currentcnt{3}?><label>Table 3</label><caption><p id="d1e4692">Comparison of the farm power improvements for a single Horns Rev wind farm optimisation between nominal, C1, and C1 <inline-formula><mml:math id="M242" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2  constrained SLSQP optimisation cases for the multizone, Gaussian, and GCH wake models.</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.93}[.93]?><oasis:tgroup cols="4">
     <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:thead>
       <oasis:row>
         <oasis:entry colname="col1">Case</oasis:entry>
         <oasis:entry colname="col2">Multizone</oasis:entry>
         <oasis:entry colname="col3">Gaussian</oasis:entry>
         <oasis:entry colname="col4">GCH</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">name</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:msup><mml:mo>)</mml:mo><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="col3"><inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:msup><mml:mo>)</mml:mo><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="col4"><inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">WF</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="bold">0</mml:mn><mml:msup><mml:mo>)</mml:mo><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:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Nominal</oasis:entry>
         <oasis:entry colname="col2">1.71</oasis:entry>
         <oasis:entry colname="col3">1.11</oasis:entry>
         <oasis:entry colname="col4">1.57</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">C1</oasis:entry>
         <oasis:entry colname="col2">1.82</oasis:entry>
         <oasis:entry colname="col3">1.12</oasis:entry>
         <oasis:entry colname="col4">1.63</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">C1 <inline-formula><mml:math id="M246" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2</oasis:entry>
         <oasis:entry colname="col2">1.83</oasis:entry>
         <oasis:entry colname="col3">1.12</oasis:entry>
         <oasis:entry colname="col4">1.63</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?></oasis:table><?xmltex \gdef\@currentlabel{3}?></table-wrap>

      <?xmltex \floatpos{t}?><fig id="Ch1.F10" specific-use="star"><?xmltex \currentcnt{10}?><?xmltex \def\figurename{Figure}?><label>Figure 10</label><caption><p id="d1e4885">Comparison of the Horns Rev wind farm objective function statistics between the nominal, C1, and C1 <inline-formula><mml:math id="M247" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 constrained SLSQP optimisation cases for the <bold>(a)</bold> multizone, <bold>(b)</bold> Gaussian, and <bold>(c)</bold> GCH wake models. Mean values are illustrated with error bars for 1 standard deviation (red) and minimum and maximum values (black).</p></caption>
          <?xmltex \igopts{width=312.980315pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-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="d1e4912">Comparison of the Horns Rev wind farm optimal yaw setting statistics between nominal, C1, and C1 <inline-formula><mml:math id="M248" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 constrained SLSQP optimisation cases for <bold>(a, d, g)</bold> multizone, <bold>(b, e, h)</bold> Gaussian, and <bold>(c, f, i)</bold> GCH wake models. Row-averaged probability density functions of the optimal yaw angles are shown, with a transition from dark blue (most upstream row) to light green (most downstream row).</p></caption>
          <?xmltex \igopts{width=426.791339pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f11.png"/>

        </fig>

      <p id="d1e4937">Figure <xref ref-type="fig" rid="Ch1.F10"/> presents the statistical results for farm power improvement in the nominal, C1, and C1 <inline-formula><mml:math id="M249" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases. For all wake models, a significant reduction in initialisation sensitivity can clearly be observed  when constraints are imposed, in terms of  both standard deviation and minimum and maximum values. For the GCH model, dependency on initial conditions in the nominal case leads to sub-optimal solutions with potential farm power losses of up to <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> (the difference between the maximum and minimum power increase values). With the introduction of constraints, these losses are below <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>. Further, a higher mean farm power improvement is experienced in the constrained cases for all models. In the multizone case, avoiding sub-optimal solutions due to constraints leads to a <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mn mathvariant="normal">12</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> increase in mean farm power improvement. Finally, consistent with the conclusions for the medium-complexity <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> case, an overall strong dependency of wake steering strategies on wake model choice is observed, exhibiting significant discrepancies in farm power improvement. To further explore model sensitivity, an inter-model cross-validation is performed with the multizone and Gaussian models' performances evaluated with the optimal decision variables computed using the GCH model. As expected, both models exhibit lower normalised farm power increases when using the optimal GCH yaw angles (<inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mn mathvariant="normal">24</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> lower for the multizone and Gaussian models, respectively). These results suggest that the<?pagebreak page1441?> row-monotonic decrease in optimal yaw angles, attributed to the GCH model capturing secondary steering effects <xref ref-type="bibr" rid="bib1.bibx38" id="paren.57"/>, represents a better solution to the wake optimisation problem than is possible when using either the Gaussian or the multizone model. This observation is in agreement with several recent studies, including <xref ref-type="bibr" rid="bib1.bibx38" id="text.58"/>, <xref ref-type="bibr" rid="bib1.bibx54" id="text.59"/>, <xref ref-type="bibr" rid="bib1.bibx28" id="text.60"/>, and <xref ref-type="bibr" rid="bib1.bibx39" id="text.61"/>.</p>
      <p id="d1e5033">Figure <xref ref-type="fig" rid="Ch1.F11"/> presents the statistical results for the optimal yaw settings in the nominal, C1, and C1 <inline-formula><mml:math id="M256" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases. For each row in the farm layout, a probability density function of the optimal yaw angles is shown in this figure. It is defined by averaging the probability density functions for the single turbines in the row. The aim is to express the distributions of optimal yaw settings per farm row and see how they compare for different optimisation cases. When examining Fig. <xref ref-type="fig" rid="Ch1.F11"/>d, e, f and g, h, i for the C1 and C1 <inline-formula><mml:math id="M257" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 constrained cases, respectively, it becomes evident that the probability density functions exhibit higher magnitudes compared with the nominal cases shown in Fig. <xref ref-type="fig" rid="Ch1.F11"/>a, b, c. With the exception of the last turbine row, the probability density function values, which are approximately 0.25 in the nominal cases, are at least twice higher when the additional constraints are introduced in the optimisation. This behaviour is observed across all wake models and indicates a more consistent distribution of optimal yaw angles for different initialisations, thereby highlighting improved optimisation robustness and reduced dependence on initial<?pagebreak page1442?> conditions for the constrained cases. For the multizone and Gaussian models, optimal yaw settings in the nominal case tend to converge at the optimisation bounds, as shown in Fig. <xref ref-type="fig" rid="Ch1.F5"/> and confirmed by bi-modal probability density functions in Fig. <xref ref-type="fig" rid="Ch1.F11"/>a and b. Caused by initialisation sensitivity and lack of constraints, this undesirable behaviour of bi-modality is easily removed in the C1 and C1 <inline-formula><mml:math id="M258" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 optimisation cases. For the GCH model, bi-modal probability density functions can also be identified in the nominal optimisation results. However, the peaks of the modes exhibit a more complex pattern depending on the farm row (Fig. <xref ref-type="fig" rid="Ch1.F11"/>c). As for the previous models, bi-modality is removed by the introduction of constraints. Finally, consistently with the discussion for the <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> farm layout in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>, significant overall discrepancies between wake models can be identified in terms of optimal yaw angles.</p>
      <p id="d1e5084">The presented results indicate that the simple strategy proposed for SLSQP sensitivity mitigation is effective for this realistic and complex wake steering optimisation problem. The enforcement of constraints successfully decreases the impact of initial conditions in terms of both  the objective function and the optimal decision variables while achieving generally higher farm power improvements and more consistent optimal yaw settings. We note, finally, that the constrained gradient-based approach can simply be  adapted to misaligned wind directions. This can be achieved by permuting the turbine labelling to create columns aligned with the incoming wind direction. Either constraint C1 or constraint C1 <inline-formula><mml:math id="M260" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> C2 can then be applied analogously in this situation.</p>
</sec>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Conclusions</title>
      <p id="d1e5104">A detailed investigation of the sensitivity of wake steering optimisation for increased power output of wind farms was carried out in this study. Sensitivity to the choice of analytical wake models, the optimisation algorithm, and different operating conditions
was assessed in terms of variability in both optimised farm power and optimal yaw angles. The study was performed with four different analytical wake models, with a gradient-based and a global optimisation algorithm. Three wind farm layouts were investigated: two generic layouts with <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> turbines and a layout corresponding to the Horns Rev wind farm with 80 turbines. This hierarchy of test cases with increasing complexity facilitated the understanding of the different sensitivities present in wake steering optimisation. By conducting an analysis on initialisation sensitivity, the nature of the farm power function, and optimiser statistical performance, this investigation provided insight into the impact of modelling, algorithmic, and parametric choices on wake steering strategies to increase the power output of wind farms.</p>
      <p id="d1e5131">For the <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> layout, optimisation was performed by a simple parametric sweep, removing any sensitivity to algorithmic choice or implementation. The results indicated a strong sensitivity of wake steering strategies to the choice of analytical wake model and highlighted the role of flatness and multi-modality of the objective function in wake steering optimisation performance.</p>
      <p id="d1e5146">In the medium-complexity <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> case, optimisation was first performed using  the gradient-based SLSQP optimisation algorithm. High optimisation sensitivity to the wake model choice, in terms of both  objective function and optimal decision variables, was observed. All models exhibited strong variability of the objective function and optimal yaw angles to initial conditions, with sub-optimal solutions leading to potential power improvement losses. A comparison between the gradient-based SLSQP and the global optimiser TuRBO showed that, overall, TuRBO required fewer wind farm evaluations and achieved larger improvements in wind farm power production, with a reduced sensitivity to initial conditions. Although the multi-modal and discontinuous nature of the farm power function strongly affected the SLSQP performance, the results in Fig. <xref ref-type="fig" rid="Ch1.F8"/> also highlighted that rapid convergence could be achieved if initialisation sensitivity was reduced, motivating the sensitivity mitigation strategy proposed in the final test case considered.</p>
      <p id="d1e5163">Finally, a higher-complexity optimisation was performed with the SLSQP algorithm for the farm layout corresponding to the Horns Rev wind farm (<inline-formula><mml:math id="M265" display="inline"><mml:mn mathvariant="normal">80</mml:mn></mml:math></inline-formula> turbines). Optimal yaw angles exhibited highly column-inconsistent signs, making them unsuitable to implement in practice. It was found that the introduction of constraints during the optimisation dramatically decreased the sensitivity to initial conditions while achieving more consistent and interpretable yaw settings. This work, therefore, demonstrates that the sensitivity of wake steering optimisation can be mitigated either by the use of global optimisation algorithms or by the addition of simple constraints to gradient-based algorithms. The success of a constrained gradient-based approach is especially promising, particularly with a view towards adaptation to new problems, due to the simplicity and transparency of gradient-based algorithms in contrast to more complex and less interpretable global strategies.</p>
      <p id="d1e5174">Future work will look at the sensitivity of wind farm wake steering optimisation for a range of wind directions and inflow speeds and will investigate the impact of atmospheric conditions for more complex optimisation problems, in addition to identifying appropriate optimisation constraints to enable sensitivity mitigation in each setting. Future research will also focus on determining wake steering sensitivities in an online control framework, including state estimation and parameter-tuning algorithms.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <?xmltex \currentcnt{A}?><label>Appendix A</label><title/>
<sec id="App1.Ch1.S1.SS1">
  <label>A1</label><title>Wake models</title>
      <?pagebreak page1443?><p id="d1e5194">The most relevant parameter in analytical wake models is the streamwise velocity <inline-formula><mml:math id="M266" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> (<inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in Eq. <xref ref-type="disp-formula" rid="Ch1.E1"/>) in the downstream region of a turbine subject to a mean freestream velocity <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Due to turbine operation and the consequent wake streamwise velocity deficit <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>, the streamwise velocity is defined as
            <disp-formula id="App1.Ch1.S1.E7" content-type="numbered"><label>A1</label><mml:math id="M270" display="block"><mml:mrow><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e5267">Considering the unsteadiness of the wake phenomenon and its evolution in three-dimensional space, in principle, all terms in Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E7"/>) are a function of space and time <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. However, the main assumption of analytical models is the description of a steady state, where time dependency is ignored, and the focus is on equilibrium conditions. The model formulations in this section are presented based on velocity deficit <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<sec id="App1.Ch1.S1.SS1.SSS1">
  <label>A1.1</label><title>Jensen model</title>
      <p id="d1e5327">The Jensen model <xref ref-type="bibr" rid="bib1.bibx32" id="paren.62"/> is a simple steady wake model widely used in the industry. It is derived by applying mass conservation to a control volume in the wake region of the wind turbine and relating the velocity deficit just behind the rotor to the thrust coefficient <inline-formula><mml:math id="M273" 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> using Betz theory. Hence, turbines are assumed to be actuator discs with rotor diameter <inline-formula><mml:math id="M274" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula> and thrust coefficient <inline-formula><mml:math id="M275" 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: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="M276" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> is the turbine induction factor. The Jensen model is based on two main assumptions: the conservation of the cross-stream integral of the streamwise velocity deficit as the wake linearly expands downstream and the velocity deficit simply being  a function of the downstream distance <inline-formula><mml:math id="M277" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>. The first main assumption implies a quadratic decay of the velocity deficit with the linear expansion of the wake. The second one implies a uniform velocity deficit in the wake, hence an axisymmetric wake with a well-defined edge (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>a).</p>
      <p id="d1e5395">The streamwise velocity deficit induced by a turbine with diameter <inline-formula><mml:math id="M278" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>, assumed to be operating at an induction factor <inline-formula><mml:math id="M279" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula>, can be expressed as
              <disp-formula id="App1.Ch1.S1.E8" content-type="numbered"><label>A2</label><mml:math id="M280" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>a</mml:mi><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>D</mml:mi><mml:mrow><mml:mi>D</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>+</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">2</mml:mn><mml:mi>k</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>r</mml:mi><mml:mo>≤</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>D</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>+</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">2</mml:mn><mml:mi>k</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">otherwise</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where a cylindrical coordinate system is defined with the origin at the rotor hub of the first upstream turbine. Radial and streamwise distances are expressed by <inline-formula><mml:math id="M281" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M282" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, respectively, and <inline-formula><mml:math id="M283" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> represents the dimensionless expansion coefficient.</p>
      <p id="d1e5528">The Jensen model is based on a steady description of the wake where turbines are modelled as actuator discs with uniform loading, and no notion of added turbulence intensity due to upstream turbines' operation is included. Moreover, it does not conserve momentum, it is limited to far-wake predictions, and no calculation involving cross-stream and vertical velocity components is included. Despite these limitations, the Jensen model is simple and inexpensive. It can be used for control and optimisation studies, and it can provide valuable insights into power production for large wind farm layouts under normal operating conditions.</p>
</sec>
<sec id="App1.Ch1.S1.SS1.SSS2">
  <label>A1.2</label><title>Multizone model</title>
      <p id="d1e5539">The multizone model, developed by <xref ref-type="bibr" rid="bib1.bibx23" id="text.63"/>, is a modification of the Jensen model to better describe wake velocity profiles and partial wake overlapping, especially under yawed conditions. Within a turbine wake, three zones <inline-formula><mml:math id="M284" display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula> are defined: near-wake zone (<inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:mi>q</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>), far-wake zone (<inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:mi>q</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>), and mixing-wake zone (<inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:mi>q</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula>). They are assumed to expand linearly with downstream distance <inline-formula><mml:math id="M288" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>. Different expansion rates are determined based on the tuned model parameters <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The wake diameter <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for each zone is defined as
              <disp-formula id="App1.Ch1.S1.E9" content-type="numbered"><label>A3</label><mml:math id="M292" display="block"><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo movablelimits="false">max⁡</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>D</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>+</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e5697">The velocity deficit in the three wake zones is assumed to decay quadratically with the downstream distance rather than being directly related to the wake expansion as in the Jensen model. Due to the presence of different wake zones, a smoother transition from the wake centre to freestream velocity is achieved (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>b), where the velocity deficit spatial variables are the radial position from the wake centre <inline-formula><mml:math id="M293" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> and turbine downstream distance <inline-formula><mml:math id="M294" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>. The wake remains axisymmetric. Considering a turbine assumed to be operating at an induction factor <inline-formula><mml:math id="M295" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> and yaw angle <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the mean streamwise velocity deficit <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be defined as
              <disp-formula id="App1.Ch1.S1.E10" content-type="numbered"><label>A4</label><mml:math id="M298" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>a</mml:mi><mml:mi>c</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the wake decay coefficient
              <disp-formula id="App1.Ch1.S1.E11" content-type="numbered"><label>A5</label><mml:math id="M300" display="block"><mml:mrow><mml:mi>c</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>r</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced close="" open="{"><mml:mtable class="array" columnalign="left left left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">if</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:mi>r</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">if</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>r</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">if</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>r</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mi mathvariant="normal">if</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:mi>r</mml:mi><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mrow><mml:mi mathvariant="normal">w</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e5989">The local wake decay coefficient <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for each wake zone <inline-formula><mml:math id="M302" display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula> is expressed by
              <disp-formula id="App1.Ch1.S1.E12" content-type="numbered"><label>A6</label><mml:math id="M303" display="block"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>q</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>D</mml:mi><mml:mrow><mml:mi>D</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>+</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where the parameter <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>  determines wake zone expansion and velocity deficit recovery, while <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is an empirically derived coefficient. For each wake zone, <inline-formula><mml:math id="M306" display="inline"><mml:mi>q</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is defined as
              <disp-formula id="App1.Ch1.S1.E13" content-type="numbered"><label>A7</label><mml:math id="M308" display="block"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>U</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>U</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            with the empirical parameters <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mrow><mml:mi>U</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (ensuring outer zones' faster recovery), <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>U</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>U</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> tuned with high-fidelity simulations.</p>
      <p id="d1e6226">The multizone wake model is a computationally inexpensive model, suitable for control and optimisation studies, including yaw applications. However, it only describes equilibrium conditions, and it is limited to far-wake predictions.<?pagebreak page1444?> In addition, it does not exhibit any sensitivity to inflow turbulence intensity, and it does not include considerations for added turbulence intensity by upstream turbines. Moreover, it involves many tuned empirical parameters, decreasing the model confidence for a wide range of operating conditions. Finally, it does not explicitly conserve momentum.</p>
</sec>
<sec id="App1.Ch1.S1.SS1.SSS3">
  <label>A1.3</label><title>Gaussian model</title>
      <p id="d1e6238">The Gaussian wake model was originally developed by <xref ref-type="bibr" rid="bib1.bibx7" id="text.64"/> and has recently been improved by various studies in the literature <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx8 bib1.bibx43 bib1.bibx15" id="paren.65"/>.
This steady wake model consists of a mass- and momentum-conserving formulation based on a simplification of the Navier–Stokes equations. A Gaussian distribution on the streamwise velocity deficit is imposed by applying the self-similarity theory used in shear flows (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>c). Moreover, a linear wake expansion is assumed. The model accounts for atmospheric stability and added turbulence intensity due to upstream turbines. Defining a three-dimensional coordinate system at the rotor hub of the turbine, the streamwise velocity deficit in the far wake, dependent on the three spatial dimensions (<inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula>), is defined as
              <disp-formula id="App1.Ch1.S1.E14" content-type="numbered"><label>A8</label><mml:math id="M313" display="block"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msup><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">h</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M314" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> is the streamwise velocity deficit at the wake centre; <inline-formula><mml:math id="M315" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> the wake deflection (refer to Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS2"/>); <inline-formula><mml:math id="M316" 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> the hub height of the turbine; and <inline-formula><mml:math id="M317" 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="M318" 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> the standard deviations of the Gaussian velocity deficit at each streamwise location, indicating the width of the wake in the cross-stream and vertical direction, respectively. The general concept is to apply a Gaussian distribution to the streamwise velocity deficit at the wake centre, given linearly increasing cross-stream and vertical wake widths and a cross-stream deflection due to turbine yaw misalignment. The wake centre velocity deficit <inline-formula><mml:math id="M319" display="inline"><mml:mi>C</mml:mi></mml:math></inline-formula> is defined as
              <disp-formula id="App1.Ch1.S1.E15" content-type="numbered"><label>A9</label><mml:math id="M320" display="block"><mml:mrow><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msup><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            while the standard deviations <inline-formula><mml:math id="M321" 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="M322" 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 defined as

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M323" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E16"><mml:mtd><mml:mtext>A10</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E17"><mml:mtd><mml:mtext>A11</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e6609">All quantities with the subscript “0” represent wake properties at the far-wake onset (the end of the near wake) and depend on the turbine thrust coefficient <inline-formula><mml:math id="M324" 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 turbulence intensity <inline-formula><mml:math id="M325" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula> (Eq. <xref ref-type="disp-formula" rid="App1.Ch1.S1.E24"/>). The near-wake length is computed with
              <disp-formula id="App1.Ch1.S1.E18" content-type="numbered"><label>A12</label><mml:math id="M326" display="block"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>D</mml:mi><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><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:mrow><mml:mrow><mml:msqrt><mml:mn mathvariant="normal">2</mml:mn></mml:msqrt><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">α</mml:mi><mml:mi>I</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">β</mml:mi><mml:mfenced close=")" open="("><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:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M327" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M328" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> are the tuning parameters governing the influence of turbulence and thrust coefficient on the near-wake end location, respectively. Far-wake onset wake widths in the vertical (<inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>) and cross-stream (<inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>y</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>) directions are defined as

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M331" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E19"><mml:mtd><mml:mtext>A13</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mi>D</mml:mi><mml:msqrt><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E20"><mml:mtd><mml:mtext>A14</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>y</mml:mi><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:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

              with the velocity at the turbine rotor <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the velocity in the near wake <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (assumed as constant) computed with

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M334" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E21"><mml:mtd><mml:mtext>A15</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><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:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E22"><mml:mtd><mml:mtext>A16</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><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:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e6948">For additional details on the derivations of far-wake onset quantities, refer to <xref ref-type="bibr" rid="bib1.bibx8" id="text.66"/>.</p>
      <p id="d1e6954">In the Gaussian model formulation, <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represents the main parameter. It defines the rate of linear wake expansion, and it accounts for ambient and added turbulence intensities. It is expressed by
              <disp-formula id="App1.Ch1.S1.E23" content-type="numbered"><label>A17</label><mml:math id="M336" display="block"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi>a</mml:mi></mml:msub><mml:mi>I</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>+</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M337" 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="M338" 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 tuning parameters defining the weight of the turbulence intensity and fundamental wake recovery, and <inline-formula><mml:math id="M339" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula> represents the turbulence intensity, expressed as
              <disp-formula id="App1.Ch1.S1.E24" content-type="numbered"><label>A18</label><mml:math id="M340" display="block"><mml:mrow><mml:mi>I</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>I</mml:mi><mml:mi>j</mml:mi><mml:mo>+</mml:mo></mml:msubsup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msubsup><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
            <inline-formula><mml:math id="M341" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> is the total number of turbines influencing the reference turbine, and <inline-formula><mml:math id="M342" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula> considers both <inline-formula><mml:math id="M343" 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>, the ambient turbulence intensity, and <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:msubsup><mml:mi>I</mml:mi><mml:mi>j</mml:mi><mml:mo>+</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, the added turbulence intensity due to an upstream turbine <inline-formula><mml:math id="M345" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula>. Given an overlap area <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">overlap</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> between the wake of an upstream turbine <inline-formula><mml:math id="M347" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula> and the turbine of interest, <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:msubsup><mml:mi>I</mml:mi><mml:mi>j</mml:mi><mml:mo>+</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is defined by the empirical expression by <xref ref-type="bibr" rid="bib1.bibx13" id="text.67"/>:
              <disp-formula id="App1.Ch1.S1.E25" content-type="numbered"><label>A19</label><mml:math id="M349" display="block"><mml:mrow><mml:msubsup><mml:mi>I</mml:mi><mml:mi>j</mml:mi><mml:mo>+</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>A</mml:mi><mml:mi mathvariant="normal">overlap</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:msubsup><mml:mi>a</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">0.8</mml:mn></mml:msubsup><mml:msubsup><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">0.1</mml:mn></mml:msubsup><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>D</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.32</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where the coefficients are tuned with LES simulations by <xref ref-type="bibr" rid="bib1.bibx38" id="text.68"/>. For additional details on added turbulence calculations, refer to <xref ref-type="bibr" rid="bib1.bibx43" id="text.69"/>.</p>
      <p id="d1e7221">Although the wake model complexity is increased, the Gaussian wake model is still suitable for control and optimisation applications. Additional considerations include ambient and added turbulence intensity, and the wake model explicitly conserves momentum. The main limitations are the formulation based on a free shear approximation of the Navier–Stokes equations and the inaccurate near-wake predictions. Moreover, it does not compute crosswise and streamwise velocity components, both critical for modelling wake steering effects, and it relies on multiple empirical coefficients, decreasing the range of conditions for suitable predictions.</p>
</sec>
<?pagebreak page1445?><sec id="App1.Ch1.S1.SS1.SSS4">
  <label>A1.4</label><title>Gauss–curl Hybrid model</title>
      <p id="d1e7232">The Gauss–curl Hybrid (GCH) model <xref ref-type="bibr" rid="bib1.bibx38" id="paren.70"/> extends the modelling capabilities of the Gaussian model by implicitly modelling wake rotation and counter-rotating vortices due to yaw misalignment, allowing the description of wake asymmetry, added yaw-based wake recovery, and secondary steering effects. The Gaussian model formulation is improved by introducing analytical approximations based on the Curl model <xref ref-type="bibr" rid="bib1.bibx42" id="paren.71"/>, a recently developed linearised RANS formulation with an increased computational complexity of around 1000<inline-formula><mml:math id="M350" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> compared with the Gaussian model. Further developments of the Curl model are included in <xref ref-type="bibr" rid="bib1.bibx54" id="text.72"/>. This section provides an overview of the GCH wake model. For additional details on the calculations, refer to <xref ref-type="bibr" rid="bib1.bibx38" id="text.73"/>.</p>
      <p id="d1e7254">Wake rotation is included by modelling a Lamb–Oseen vortex, where its circulation strength is dependent on the turbine axial induction factor and tip-speed ratio. The counter-rotating vortex system due to turbine yaw misalignment is modelled as two single vortices released at the top and the bottom of the rotor, with the vortex strength dependent on the turbine thrust coefficient and yaw angle. For each vortex described, cross-stream <inline-formula><mml:math id="M351" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> and vertical <inline-formula><mml:math id="M352" display="inline"><mml:mi>W</mml:mi></mml:math></inline-formula> velocity components are calculated and linearly combined. Ground effects are considered by adding mirrored vortices below the ground. The vortex combination of the velocity components can be expressed by
              <disp-formula id="App1.Ch1.S1.E26" content-type="numbered"><label>A20</label><mml:math id="M353" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">wake</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">top</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">bottom</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">wake</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">rotation</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>W</mml:mi><mml:mi mathvariant="normal">wake</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mi mathvariant="normal">top</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mi mathvariant="normal">bottom</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mrow><mml:mi mathvariant="normal">wake</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">rotation</mml:mi></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
      <p id="d1e7378">Vortex dissipation with downstream distance is computed as
              <disp-formula id="App1.Ch1.S1.E27" content-type="numbered"><label>A21</label><mml:math id="M354" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>V</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">wake</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>W</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>W</mml:mi><mml:mi mathvariant="normal">wake</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
            where <inline-formula><mml:math id="M355" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> is the vortex core size (<inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.2</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> in this study), and <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the turbulent viscosity, defined with a mixing length model.</p>
      <p id="d1e7595">As presented in <xref ref-type="bibr" rid="bib1.bibx38" id="text.74"/>, added wake recovery due to turbine yaw misalignment is considered by updating the turbulence intensity with an additional component <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">mix</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> due to yaw-enhanced mixing. The updated turbulence intensity <inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">updated</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is expressed as
              <disp-formula id="App1.Ch1.S1.E28" content-type="numbered"><label>A22</label><mml:math id="M360" display="block"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">updated</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>I</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ϕ</mml:mi><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">mix</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where the tuning parameter <inline-formula><mml:math id="M361" display="inline"><mml:mi mathvariant="italic">ϕ</mml:mi></mml:math></inline-formula> is introduced due to the analytical approximations at the base of <inline-formula><mml:math id="M362" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">mix</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> calculations. <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">updated</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> directly affects the wake expansion as specified in Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E23"/>) (Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS3"/>). <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">mix</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is calculated with
              <disp-formula id="App1.Ch1.S1.E29" content-type="numbered"><label>A23</label><mml:math id="M365" display="block"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">mix</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:msqrt><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">tot</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:msqrt><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mi>I</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            with <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">tot</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> representing the total turbulent kinetic energy including yaw effects. Using approximate solutions for velocity fluctuations in three dimensions, <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">tot</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can be expressed by
              <disp-formula id="App1.Ch1.S1.E30" content-type="numbered"><label>A24</label><mml:math id="M368" display="block"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">e</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">tot</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mrow><mml:mo>′</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">curl</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mi mathvariant="normal">curl</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e7841">Cross-stream and vertical velocity fluctuations are defined as the sum of the average cross-stream <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and vertical <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> velocity contributions at the turbine and the upstream turbine contributions <inline-formula><mml:math id="M371" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">curl</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M372" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mi mathvariant="normal">curl</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> from Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E27"/>). Streamwise velocity fluctuations <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> are derived from the turbulent kinetic energy <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, based on the ambient turbulence intensity, and are defined as
              <disp-formula id="App1.Ch1.S1.E31" content-type="numbered"><label>A25</label><mml:math id="M375" display="block"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub></mml:mrow></mml:msqrt><mml:mo>,</mml:mo><mml:mi mathvariant="normal">where</mml:mi><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">e</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">3</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>I</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e7966">Considering yawed upstream turbines, secondary steering refers to the phenomenon of downstream turbines without yaw misalignment experiencing wake deflection and deformation due to the interaction between upstream-generated vortices and downstream turbine wake rotation (see Fig. <xref ref-type="fig" rid="Ch1.F1"/>d). The GCH wake model captures secondary steering effects by computing an effective yaw angle <inline-formula><mml:math id="M376" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the yaw misalignment that a downstream turbine would require to produce the same cross-stream velocity component <inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the average one calculated at its rotor due to upstream vortices <inline-formula><mml:math id="M378" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>. <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is computed as
              <disp-formula id="App1.Ch1.S1.E32" content-type="numbered"><label>A26</label><mml:math id="M380" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">argmin</mml:mi><mml:mo>|</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>-</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="normal">where</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">wake</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e8075">Defining <inline-formula><mml:math id="M381" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">turb</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the rotor misalignment to the wind, the total yaw angle <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> at the turbine rotor, consequently used in the wake deflection calculations (Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS3"/>), is expressed as
              <disp-formula id="App1.Ch1.S1.E33" content-type="numbered"><label>A27</label><mml:math id="M383" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">turb</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">eff</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d1e8128">Although crosswise and vertical velocity components are not explicitly modelled, the GCH wake model is capable of capturing, through analytical approximations, the increase in wake recovery due to yaw misalignment and secondary steering effects. The latter is particularly important when considering large wind farms and evaluating wake steering control strategies. However, GCH-added complexity results in 3.5<inline-formula><mml:math id="M384" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> higher computational requirements. Moreover, the parameter dependency for the Gaussian model still persists.</p>
</sec>
</sec>
<?pagebreak page1446?><sec id="App1.Ch1.S1.SS2">
  <label>A2</label><title>Deflection models</title>
      <p id="d1e8147">When a turbine is yawed, the unbalance of thrust on the rotor leads to a cross-stream momentum gain and a deflection of the wake in the direction of yaw. Deflection models aim at quantifying this shift on the streamwise distance <inline-formula><mml:math id="M385" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and applying it to the streamwise velocity deficit field. All analytical models investigated in this study describe the velocity vector in one dimension only, leading to yaw solely affecting the streamwise velocity. Estimations of cross-stream and vertical velocity components are included in the GCH wake model (Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS4"/>), where an additional correction to the streamwise velocity field is applied based on these empirical estimations.</p>
<sec id="App1.Ch1.S1.SS2.SSS1">
  <label>A2.1</label><?xmltex \opttitle{Jim\'{e}nez model}?><title>Jiménez model</title>
      <p id="d1e8167">The Jiménez deflection model is based on the empirical formulation proposed by <xref ref-type="bibr" rid="bib1.bibx33" id="text.75"/>. The two main assumptions are as follows. First, the streamwise velocity deficit values are almost negligible compared with inflow velocity <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>u</mml:mi><mml:mo>≃</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Second, the wake skew angle <inline-formula><mml:math id="M387" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> is small enough that <inline-formula><mml:math id="M388" display="inline"><mml:mrow><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>≃</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>≃</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi></mml:mrow></mml:math></inline-formula>. Considering a turbine offset to the freestream by a yaw angle <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, the wake angle at the centreline is defined as
              <disp-formula id="App1.Ch1.S1.E34" content-type="numbered"><label>A28</label><mml:math id="M391" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><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:mo>≈</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mi mathvariant="normal">init</mml:mi></mml:msub><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:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi>x</mml:mi><mml:mi>D</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mi mathvariant="normal">init</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><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:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:msup><mml:mi>cos⁡</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
            where <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a tuneable deflection parameter. The amount of wake deflection <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be calculated by skew angle integration. Ambient turbulence intensity can be indirectly taken into account through the <inline-formula><mml:math id="M394" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> parameter. However, no considerations for added turbulence intensity and wake rotation are provided. Moreover, wake meandering is not accounted for due to the model's steady-state description.</p>
</sec>
<sec id="App1.Ch1.S1.SS2.SSS2">
  <label>A2.2</label><title>Bastankhah model</title>
      <p id="d1e8440">The Bastankhah deflection model is based on the budget analysis of the continuity and Reynolds-averaged Navier–Stokes equations conducted by <xref ref-type="bibr" rid="bib1.bibx8" id="text.76"/>. Using vortex theory, the wake deflection angle at the rotor is defined by
              <disp-formula id="App1.Ch1.S1.E35" content-type="numbered"><label>A29</label><mml:math id="M395" display="block"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>≈</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">0.3</mml:mn><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close=")" open="("><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:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</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></p>
      <p id="d1e8499">By assuming the validity of Eq. (<xref ref-type="disp-formula" rid="App1.Ch1.S1.E35"/>) is not limited to the calculation of the flow angle at the rotor but that it extends to the near-wake region, and by approximating the near-wake deflection to a constant value, the far-wake onset wake deflection <inline-formula><mml:math id="M396" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> can be expressed as
              <disp-formula id="App1.Ch1.S1.E36" content-type="numbered"><label>A30</label><mml:math id="M397" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mi>tan⁡</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
            where <inline-formula><mml:math id="M398" 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> is defined in Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS3"/>. The total far-wake deflection due to wake steering is defined as
              <disp-formula id="App1.Ch1.S1.E37" content-type="numbered"><label>A31</label><mml:math id="M399" display="block"><mml:mrow><?xmltex \hack{\hbox\bgroup\fontsize{9.5}{9.5}\selectfont$\displaystyle}?><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mi>r</mml:mi><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">δ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>D</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mi>D</mml:mi></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">14.7</mml:mn></mml:mfrac></mml:mstyle><mml:msqrt><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>k</mml:mi><mml:mi mathvariant="normal">w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:msqrt><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">2.9</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1.3</mml:mn><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:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mfenced open="[" close="]"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1.6</mml:mn><mml:mo>+</mml:mo><mml:msqrt><mml:mrow><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:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1.6</mml:mn><mml:msqrt><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:msqrt></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1.6</mml:mn><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><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:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">1.6</mml:mn><mml:msqrt><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msup><mml:mi>D</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>cos⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:msqrt><mml:mo>+</mml:mo><mml:msqrt><mml:mrow><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:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable><?xmltex \hack{$\egroup}?></mml:mrow></mml:math></disp-formula>
            with the main affecting factors being turbine operating conditions and ambient and added turbulence intensity.</p>
      <p id="d1e8776">Expressions for the symbols in the above equation are provided in Appendix <xref ref-type="sec" rid="App1.Ch1.S1.SS1.SSS3"/>. Refer to <xref ref-type="bibr" rid="bib1.bibx8" id="text.77"/> for details on the model derivation. The Bastankhah deflection model does not include considerations about asymmetry due to wake rotation, calculations of vertical and cross-stream velocity components, or the effect of wake meandering due to the steady nature of the model predictions.</p>
</sec>
</sec>
</app>

<app id="App1.Ch1.S2">
  <?xmltex \currentcnt{B}?><label>Appendix B</label><title/>
      <p id="d1e8793">In this appendix, the validation of the presented optimisation framework is provided. The optimisation problem in <xref ref-type="bibr" rid="bib1.bibx47" id="text.78"/> is replicated, and results for the Jensen, Gaussian, and GCH wake models are compared. A single column of aligned NREL 5 MW turbines is optimised for farm power maximisation. The yaw angle of each turbine in the farm layout is set as a variable bounded by [<inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:mn mathvariant="normal">50</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">50</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>]. The SLSQP optimisation algorithm by <xref ref-type="bibr" rid="bib1.bibx40" id="text.79"/> is used. Moreover, optimiser parameters and initial yaw settings are matched to the values provided in <xref ref-type="bibr" rid="bib1.bibx47" id="text.80"/>. The farm layouts and atmospheric conditions optimised are shown in Table <xref ref-type="table" rid="App1.Ch1.S2.T4"/>. Results are provided in Fig. <xref ref-type="fig" rid="App1.Ch1.S2.F12"/>. Overall, a satisfactory agreement is reached. The trends for the optimal variable solutions are captured for all wake models. Moreover, a close match for optimal yaw angles can be observed, except for a few isolated conditions. These marginal discrepancies are attributed to some of the wake model parameters not being specified in <xref ref-type="bibr" rid="bib1.bibx47" id="text.81"/> and to the use of different FLORIS versions (2.4 in the current work, 2.2 in <xref ref-type="bibr" rid="bib1.bibx47" id="altparen.82"/>).</p>

<?xmltex \floatpos{b!}?><table-wrap id="App1.Ch1.S2.T4"><?xmltex \currentcnt{B1}?><label>Table B1</label><caption><p id="d1e8841">Investigated wind farm layouts and atmospheric conditions from <xref ref-type="bibr" rid="bib1.bibx47" id="text.83"/>.</p></caption><oasis:table frame="topbot"><?xmltex \begin{scaleboxenv}{.91}[.91]?><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>
         <oasis:entry colname="col1">Case name</oasis:entry>
         <oasis:entry colname="col2">ws</oasis:entry>
         <oasis:entry colname="col3">wd</oasis:entry>
         <oasis:entry colname="col4">TI<inline-formula><mml:math id="M401" display="inline"><mml:msub><mml:mi/><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">spacing</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">[m s<inline-formula><mml:math id="M402" 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>]</oasis:entry>
         <oasis:entry colname="col3">[<inline-formula><mml:math id="M403" display="inline"><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col4">[<inline-formula><mml:math id="M404" display="inline"><mml:mi mathvariant="italic">%</mml:mi></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col5">[<inline-formula><mml:math id="M405" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>]</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Reference case (RC)</oasis:entry>
         <oasis:entry colname="col2">8.0</oasis:entry>
         <oasis:entry colname="col3">270.0</oasis:entry>
         <oasis:entry colname="col4">7.5</oasis:entry>
         <oasis:entry colname="col5">7.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">High wind speed (HWS)</oasis:entry>
         <oasis:entry colname="col2">13.0</oasis:entry>
         <oasis:entry colname="col3">270.0</oasis:entry>
         <oasis:entry colname="col4">7.5</oasis:entry>
         <oasis:entry colname="col5">7.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind direction <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:mn mathvariant="normal">275</mml:mn><mml:msup><mml:mi/><mml:mo>∘</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> (WD 275)</oasis:entry>
         <oasis:entry colname="col2">8.0</oasis:entry>
         <oasis:entry colname="col3">275.0</oasis:entry>
         <oasis:entry colname="col4">7.5</oasis:entry>
         <oasis:entry colname="col5">7.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Low turbulence intensity (LTI)</oasis:entry>
         <oasis:entry colname="col2">8.0</oasis:entry>
         <oasis:entry colname="col3">270.0</oasis:entry>
         <oasis:entry colname="col4">5.0</oasis:entry>
         <oasis:entry colname="col5">7.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Small spacing (SS)</oasis:entry>
         <oasis:entry colname="col2">8.0</oasis:entry>
         <oasis:entry colname="col3">270.0</oasis:entry>
         <oasis:entry colname="col4">7.5</oasis:entry>
         <oasis:entry colname="col5">5.0</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup><?xmltex \end{scaleboxenv}?></oasis:table><?xmltex \gdef\@currentlabel{B1}?></table-wrap>

      <?xmltex \floatpos{h!}?><fig id="App1.Ch1.S2.F12"><?xmltex \currentcnt{B1}?><?xmltex \def\figurename{Figure}?><label>Figure B1</label><caption><p id="d1e9051">Validation of the presented optimisation framework. Results are shown for the optimal turbine yaw angle comparison with <xref ref-type="bibr" rid="bib1.bibx47" id="text.84"/> for the <bold>(a)</bold> Jensen, <bold>(b)</bold> Gaussian, and <bold>(c)</bold> GCH wake models.</p></caption>
        <?xmltex \hack{\hsize\textwidth}?>
        <?xmltex \igopts{width=341.433071pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f12.png"/>

      </fig>

<?xmltex \hack{\clearpage}?>
</app>

<?pagebreak page1448?><app id="App1.Ch1.S3">
  <?xmltex \currentcnt{C}?><label>Appendix C</label><title/>
      <p id="d1e9083">This appendix shows an illustrative example of a simple one-dimensional minimisation problem with Bayesian optimisation. The presented approach does not specifically refer to the TuRBO algorithm (described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>) but rather aims to provide the reader with the general concepts and terminology of Bayesian optimisation. Before analysing the specific minimisation problem, a summary of the general idea behind Bayesian optimisation is provided. First, an initial sampling of the design space is performed (e.g. using Latin hypercubes, Sobol sequences, Hammersley sequences, or Monte Carlo sequences). Second, the true objective function to be minimised is approximated with a surrogate model, usually a Gaussian process. This probabilistic model provides a posterior distribution with a mean and variance of the surrogate model. Next, a new sample point at which to evaluate the underlying objective function is computed. This is achieved by minimising a criterion specified through an acquisition function. Commonly used acquisition functions include probability of improvement (PI), expected improvement (EI), Thompson sampling (TS), and upper confidence bound (UCB). As more samples are evaluated, the surrogate model aims to improve its representation of the true function until meeting a specified convergence criterion.</p>

      <?xmltex \floatpos{bh!}?><fig id="App1.Ch1.S3.F13"><?xmltex \currentcnt{C1}?><?xmltex \def\figurename{Figure}?><label>Figure C1</label><caption><p id="d1e9090">Illustrative example of a one-dimensional minimisation problem using Bayesian optimisation. Each subplot refers to an iteration of the optimisation algorithm and includes the evaluated points (filled black circles), the posterior mean (black line) and uncertainty (blue shaded area), the true function (dashed green line), the acquisition function (red line), and the location of the next evaluation point (dashed red line).</p></caption>
        <?xmltex \hack{\hsize\textwidth}?>
        <?xmltex \igopts{width=455.244094pt}?><graphic xlink:href="https://wes.copernicus.org/articles/8/1425/2023/wes-8-1425-2023-f13.png"/>

      </fig>

      <p id="d1e9101"><?xmltex \hack{\newpage}?>As an indicative one-dimensional example of a multi-modal objective function, let us consider the problem of minimising
          <disp-formula id="App1.Ch1.S3.E38" content-type="numbered"><label>C1</label><mml:math id="M407" display="block"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1.4</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">sin</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mn mathvariant="normal">0.4</mml:mn><mml:mo>≤</mml:mo><mml:mi>x</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">1.1</mml:mn><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
        Figure <xref ref-type="fig" rid="App1.Ch1.S3.F13"/> shows the development of the Gaussian process posterior over eight iterations of a typical Bayesian optimisation implementation using an expected improvement (EI) acquisition function. Each subfigure includes the evaluated points (filled black circles), the posterior mean (black line) and uncertainty (blue shaded area), the true function (dashed green line), the acquisition function (red line), and the location of the next evaluation point (dashed red  vertical line). The initial design space sampling is shown in Fig. <xref ref-type="fig" rid="App1.Ch1.S3.F13"/>a and consists of three randomly located points close to a local minimum. In Fig. <xref ref-type="fig" rid="App1.Ch1.S3.F13"/>b, g, the EI acquisition function selects new evaluation points, progressively reducing the posterior uncertainty and improving the mean prediction of the true function. Due to the EI function balancing exploitation and exploration, the newly selected points focus on evaluating the minimum of the posterior mean and also on exploring areas with high uncertainty. Finally, the minimum of the posterior mean approximately coincides with the true global minimum in Fig. <xref ref-type="fig" rid="App1.Ch1.S3.F13"/>h.</p><?xmltex \hack{\clearpage}?>
</app>
  </app-group><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d1e9175">Wind farm modelling in this study is conducted with version 2.4 of the open-source
FLORIS framework, available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.5062687" ext-link-type="DOI">10.5281/zenodo.5062687</ext-link> <xref ref-type="bibr" rid="bib1.bibx44" id="paren.85"/>. Optimisation
routines are available from the corresponding author upon reasonable request.</p>
  </notes><notes notes-type="dataavailability"><title>Data availability</title>

      <p id="d1e9187">The data supporting the findings of this study are available from the corresponding author
upon reasonable request.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d1e9193">FG: optimisation computations, methodology, validation, data analysis, writing. AW: methodology, data analysis, funding acquisition, supervision, writing. SL: methodology, data analysis, funding acquisition, supervision, writing.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d1e9199">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="d1e9205">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="d1e9211">This research has been supported
by a PhD scholarship internally funded by the Department of Aeronautics, Imperial College
London, United Kingdom.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d1e9217">This paper was edited by Irene Eguinoa and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><?xmltex \def\ref@label{{Abkar and Port{\'{e}}-Agel(2015)}}?><label>Abkar and Porté-Agel(2015)</label><?label abkar_influence_2015?><mixed-citation>Abkar, M. and Porté-Agel, F.: Influence of atmospheric stability on
wind-turbine wakes: A large-eddy simulation study, Phys. Fluids, 27,
035104, <ext-link xlink:href="https://doi.org/10.1063/1.4913695" ext-link-type="DOI">10.1063/1.4913695</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx2"><?xmltex \def\ref@label{{Ahmad et~al.(2019)Ahmad, Basit, Anwar, Coupiac, Kazemtabrizi, and
Matthews}}?><label>Ahmad et al.(2019)Ahmad, Basit, Anwar, Coupiac, Kazemtabrizi, and
Matthews</label><?label ahmad_fast_2019?><mixed-citation>Ahmad, T., Basit, A., Anwar, J., Coupiac, O., Kazemtabrizi, B., and Matthews,
P. C.: Fast Processing Intelligent Wind Farm Controller for
Production Maximisation, Energies, 12, 3,
<ext-link xlink:href="https://doi.org/10.3390/en12030544" ext-link-type="DOI">10.3390/en12030544</ext-link>, 2019.</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 andersson_wind_2021?><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 Gen., <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.(2018)Annoni, Bay, Taylor, Pao, Fleming, and
Johnson}}?><label>Annoni et al.(2018)Annoni, Bay, Taylor, Pao, Fleming, and
Johnson</label><?label annoni_efficient_2018?><mixed-citation>Annoni, J., Bay, C., Taylor, T., Pao, L., Fleming, P., and Johnson, K.:
Efficient Optimization of Large Wind Farms for Real-Time
Control, P. Amer. Contr. Conf., 6200–6205,
<ext-link xlink:href="https://doi.org/10.23919/ACC.2018.8430751" ext-link-type="DOI">10.23919/ACC.2018.8430751</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx5"><?xmltex \def\ref@label{{Barthelmie et~al.(2009)Barthelmie, Hansen, Frandsen, Rathmann,
Schepers, Schlez, Phillips, Rados, Zervos, Politis, and
Chaviaropoulos}}?><label>Barthelmie et al.(2009)Barthelmie, Hansen, Frandsen, Rathmann,
Schepers, Schlez, Phillips, Rados, Zervos, Politis, and
Chaviaropoulos</label><?label barthelmie_modelling_2009?><mixed-citation>Barthelmie, R. J., Hansen, K., Frandsen, S. T., Rathmann, O., Schepers, J. G.,
Schlez, W., Phillips, J., Rados, K., Zervos, A., Politis, E. S., and
Chaviaropoulos, P. K.: Modelling and measuring flow and wind turbine wakes in
large wind farms offshore, Wind Energy, 12, 431–444, <ext-link xlink:href="https://doi.org/10.1002/WE.348" ext-link-type="DOI">10.1002/WE.348</ext-link>,
2009.</mixed-citation></ref>
      <ref id="bib1.bibx6"><?xmltex \def\ref@label{{Barthelmie et~al.(2010)Barthelmie, Pryor, Frandsen, Hansen, Schepers,
Rados, Schlez, Neubert, Jensen, and Neckelmann}}?><label>Barthelmie et al.(2010)Barthelmie, Pryor, Frandsen, Hansen, Schepers,
Rados, Schlez, Neubert, Jensen, and Neckelmann</label><?label barthelmie_quantifying_2010?><mixed-citation>Barthelmie, R. J., Pryor, S. C., Frandsen, S. T., Hansen, K. S., Schepers,
J. G., Rados, K., Schlez, W., Neubert, A., Jensen, L. E., and Neckelmann, S.:
Quantifying the impact of wind turbine wakes on power output at offshore wind
farms, J. Atmos. Ocean Tech., 27, 1302–1317,
<ext-link xlink:href="https://doi.org/10.1175/2010JTECHA1398.1" ext-link-type="DOI">10.1175/2010JTECHA1398.1</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx7"><?xmltex \def\ref@label{{Bastankhah and Port{\'{e}}-Agel(2014)}}?><label>Bastankhah and Porté-Agel(2014)</label><?label bastankhah_new_2014?><mixed-citation>Bastankhah, M. and Porté-Agel, F.: A new analytical model for wind-turbine
wakes, Renew. Energ., 70, 116–123, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2014.01.002" ext-link-type="DOI">10.1016/j.renene.2014.01.002</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx8"><?xmltex \def\ref@label{{Bastankhah and Port{\'{e}}-Agel(2016)}}?><label>Bastankhah and Porté-Agel(2016)</label><?label bastankhah_experimental_2016?><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.bibx9"><?xmltex \def\ref@label{{Bastankhah and Port{\'{e}}-Agel(2019)}}?><label>Bastankhah and Porté-Agel(2019)</label><?label bastankhah_wind_2019?><mixed-citation>Bastankhah, M. and Porté-Agel, F.: Wind farm power optimization via yaw
angle control: A wind tunnel study, J. Renew. Sustain. Ener., 11, 023301,
<ext-link xlink:href="https://doi.org/10.1063/1.5077038" ext-link-type="DOI">10.1063/1.5077038</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx10"><?xmltex \def\ref@label{{Bastankhah et~al.(2022)Bastankhah, Shapiro, Shamsoddin, Gayme, and
Meneveau}}?><label>Bastankhah et al.(2022)Bastankhah, Shapiro, Shamsoddin, Gayme, and
Meneveau</label><?label bastankhah_vortex_2022?><mixed-citation>Bastankhah, M., Shapiro, C. R., Shamsoddin, S., Gayme, D. F., and Meneveau, C.:
A vortex sheet based analytical model of the curled wake behind yawed wind
turbines, J. Fluid Mech., 933, 2, <ext-link xlink:href="https://doi.org/10.1017/jfm.2021.1010" ext-link-type="DOI">10.1017/jfm.2021.1010</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx11"><?xmltex \def\ref@label{{Campagnolo et~al.(2016)Campagnolo, Petrovi{\'{c}}, Bottasso, and
Croce}}?><label>Campagnolo et al.(2016)Campagnolo, Petrović, Bottasso, and
Croce</label><?label campagnolo_wind_2016-1?><mixed-citation>Campagnolo, F., Petrović, V., Bottasso, C. L., and Croce, A.: Wind tunnel
testing of wake control strategies, P. Amer. Contr. Conf.,  513–518,
<ext-link xlink:href="https://doi.org/10.1109/ACC.2016.7524965" ext-link-type="DOI">10.1109/ACC.2016.7524965</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx12"><?xmltex \def\ref@label{{Chen et~al.(2022)Chen, Lin, Qiu, Liu, and Song}}?><label>Chen et al.(2022)Chen, Lin, Qiu, Liu, and Song</label><?label chen_joint_2022?><mixed-citation>Chen, K., Lin, J., Qiu, Y., Liu, F., and Song, Y.: Joint optimization of wind
farm layout considering optimal control, Renew. Energ., 182, 787–796,
<ext-link xlink:href="https://doi.org/10.1016/j.renene.2021.10.032" ext-link-type="DOI">10.1016/j.renene.2021.10.032</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx13"><?xmltex \def\ref@label{{Crespo et~al.(1999)Crespo, Hern{\'{a}}ndez, and
Frandsen}}?><label>Crespo et al.(1999)Crespo, Hernández, and
Frandsen</label><?label crespo_survey_1999?><mixed-citation>Crespo, A., Hernández, J., and Frandsen, S.: Survey of modelling methods
for wind turbine wakes and wind farms, Wind Energy, 2, 1–24,
<ext-link xlink:href="https://doi.org/10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7" ext-link-type="DOI">10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7</ext-link>, 1999.</mixed-citation></ref>
      <ref id="bib1.bibx14"><?xmltex \def\ref@label{{Deuflhard(2011)}}?><label>Deuflhard(2011)</label><?label deuflhard_2011?><mixed-citation>Deuflhard, P.: Newton Methods for Nonlinear Problems, Springer Berlin,
Heidelberg, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-23899-4" ext-link-type="DOI">10.1007/978-3-642-23899-4</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx15"><?xmltex \def\ref@label{{Dilip and Port{\'{e}}-Agel(2017)}}?><label>Dilip and Porté-Agel(2017)</label><?label dilip_wind_2017?><mixed-citation>Dilip, D. and Porté-Agel, F.: Wind Turbine Wake Mitigation through
Blade Pitch Offset, Energies, 10, 6, <ext-link xlink:href="https://doi.org/10.3390/EN10060757" ext-link-type="DOI">10.3390/EN10060757</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx16"><?xmltex \def\ref@label{{Doekemeijer et~al.(2019)Doekemeijer, Van~Wingerden, and
Fleming}}?><label>Doekemeijer et al.(2019)Doekemeijer, Van Wingerden, and
Fleming</label><?label doekemeijer_tutorial_2019?><mixed-citation>Doekemeijer, B., Van Wingerden, J. W., and Fleming, P. A.: A tutorial on the
synthesis and validation of a closed-loop wind farm controller using a
steady-state surrogate model, Amer. Contr. Conf.,  2825–2836,
<ext-link xlink:href="https://doi.org/10.23919/ACC.2019.8815126" ext-link-type="DOI">10.23919/ACC.2019.8815126</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx17"><?xmltex \def\ref@label{{Doekemeijer et~al.(2020)Doekemeijer, van~der Hoek, and van
Wingerden}}?><label>Doekemeijer et al.(2020)Doekemeijer, van der Hoek, and van
Wingerden</label><?label doekemeijer_closed-loop_2020?><mixed-citation>Doekemeijer, B., van der Hoek, D., and van Wingerden, J. W.: Closed-loop
model-based wind farm control using FLORIS under time-varying inflow
conditions, Renew. Energ., 156, 719–730, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2020.04.007" ext-link-type="DOI">10.1016/j.renene.2020.04.007</ext-link>,
2020.</mixed-citation></ref>
      <ref id="bib1.bibx18"><?xmltex \def\ref@label{{Dou et~al.(2020)Dou, Qu, Lei, and Zeng}}?><label>Dou et al.(2020)Dou, Qu, Lei, and Zeng</label><?label dou_optimization_2020?><mixed-citation>Dou, B., Qu, T., Lei, L., and Zeng, P.: Optimization of wind turbine yaw angles
in a wind farm using a three-dimensional yawed wake model, Energy, 209, 118415,
<ext-link xlink:href="https://doi.org/10.1016/j.energy.2020.118415" ext-link-type="DOI">10.1016/j.energy.2020.118415</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx19"><?xmltex \def\ref@label{{Eriksson et~al.(2019)Eriksson, Pearce, Gardner, Turner, and
Poloczek}}?><label>Eriksson et al.(2019)Eriksson, Pearce, Gardner, Turner, and
Poloczek</label><?label eriksson_scalable_2019?><mixed-citation>Eriksson, D., Pearce, M., Gardner, J., Turner, R. D., and Poloczek, M.:
Scalable Global Optimization via Local Bayesian Optimization,
Adv. Neur. In., 32, 5497–5508, <ext-link xlink:href="https://doi.org/10.48550/ARXIV.1910.01739" ext-link-type="DOI">10.48550/ARXIV.1910.01739</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx20"><?xmltex \def\ref@label{{Fleming et~al.(2015)Fleming, Gebraad, Lee, Van~Wingerden, Johnson,
Churchfield, Michalakes, Spalart, and Moriarty}}?><label>Fleming et al.(2015)Fleming, Gebraad, Lee, Van Wingerden, Johnson,
Churchfield, Michalakes, Spalart, and Moriarty</label><?label fleming_simulation_2015?><mixed-citation>Fleming, P., Gebraad, P. M., Le<?pagebreak page1450?>e, S., Van Wingerden, J. W., Johnson, K.,
Churchfield, M., Michalakes, J., Spalart, P., and Moriarty, P.: Simulation
comparison of wake mitigation control strategies for a two-turbine case, Wind
Energy, 18, 2135–2143, <ext-link xlink:href="https://doi.org/10.1002/WE.1810" ext-link-type="DOI">10.1002/WE.1810</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx21"><?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 fleming_field_2017?><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.bibx22"><?xmltex \def\ref@label{{Fleming et~al.(2018)Fleming, Annoni, Churchfield, Martinez-Tossas,
Gruchalla, Lawson, and Moriarty}}?><label>Fleming et al.(2018)Fleming, Annoni, Churchfield, Martinez-Tossas,
Gruchalla, Lawson, and Moriarty</label><?label fleming_simulation_2018?><mixed-citation>Fleming, P., Annoni, J., Churchfield, M., Martinez-Tossas, L. A., Gruchalla, K., Lawson, M., and Moriarty, P.: A simulation study demonstrating the importance of large-scale trailing vortices in wake steering, Wind Energ. Sci., 3, 243–255, <ext-link xlink:href="https://doi.org/10.5194/wes-3-243-2018" ext-link-type="DOI">10.5194/wes-3-243-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx23"><?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 gebraad_data-driven_2014?><mixed-citation>Gebraad, P. M., Teeuwisse, F. W., Van Wingerden, J. W., Fleming, P., Ruben,
S. D., Marden, J. R., and Pao, L. Y.: A data-driven model for wind plant
power optimization by yaw control, P. Amer. Contr. Conf.,  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.bibx24"><?xmltex \def\ref@label{{Gebraad et~al.(2016)Gebraad, Teeuwisse, van Wingerden, Fleming,
Ruben, Marden, and Pao}}?><label>Gebraad et al.(2016)Gebraad, Teeuwisse, van Wingerden, Fleming,
Ruben, Marden, and Pao</label><?label gebraad_wind_2016?><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.: Wind plant power optimization
through yaw control using a parametric model for wake effects-a CFD
simulation study, Wind Energy, 19, 95–114, <ext-link xlink:href="https://doi.org/10.1002/we.1822" ext-link-type="DOI">10.1002/we.1822</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx25"><?xmltex \def\ref@label{{G{\"{o}}{\c{c}}men et~al.(2022)G{\"{o}}{\c{c}}men, Campagnolo, Duc,
Eguinoa, Andersen, Petrovi{\'{c}}, Im{\v{s}}irovi{\'{c}}, Braunbehrens, Liew,
Baungaard, Laan, Qian, Aparicio-Sanchez, Gonz{\'{a}}lez-Lope, Dighe, Becker,
Broek, Wingerden, Stock, and Meyers}}?><label>Göçmen et al.(2022)Göçmen, Campagnolo, Duc,
Eguinoa, Andersen, Petrović, Imširović, Braunbehrens, Liew,
Baungaard, Laan, Qian, Aparicio-Sanchez, González-Lope, Dighe, Becker,
Broek, Wingerden, Stock, and Meyers</label><?label gocmen_farmconners_2022-1?><mixed-citation>Göçmen, T., Campagnolo, F., Duc, T., Eguinoa, I., Andersen, S. J., Petrović, V., Imširović, L., Braunbehrens, R., Liew, J., Baungaard, M., van der Laan, M. P., Qian, G., Aparicio-Sanchez, M., González-Lope, R., Dighe, V. V., Becker, M., van den Broek, M. J., van Wingerden, J.-W., Stock, A., Cole, M., Ruisi, R., Bossanyi, E., Requate, N., Strnad, S., Schmidt, J., Vollmer, L., Sood, I., and Meyers, J.: FarmConners wind farm flow control benchmark – Part 1: Blind test results, Wind Energ. Sci., 7, 1791–1825, <ext-link xlink:href="https://doi.org/10.5194/wes-7-1791-2022" ext-link-type="DOI">10.5194/wes-7-1791-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx26"><?xmltex \def\ref@label{{Hansen et~al.(2012)Hansen, Barthelmie, Jensen, and
Sommer}}?><label>Hansen et al.(2012)Hansen, Barthelmie, Jensen, and
Sommer</label><?label hansen_impact_2012?><mixed-citation>Hansen, K. S., Barthelmie, R. J., Jensen, L. E., and Sommer, A.: The impact of
turbulence intensity and atmospheric stability on power deficits due to wind
turbine wakes at Horns Rev wind farm, Wind Energy, 15, 183–196,
<ext-link xlink:href="https://doi.org/10.1002/we.512" ext-link-type="DOI">10.1002/we.512</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx27"><?xmltex \def\ref@label{{Houck(2021)}}?><label>Houck(2021)</label><?label houck_review_2021?><mixed-citation>Houck, D. R.: Review of wake management techniques for wind turbines, Wind
Energy, 25, 195–220, <ext-link xlink:href="https://doi.org/10.1002/WE.2668" ext-link-type="DOI">10.1002/WE.2668</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx28"><?xmltex \def\ref@label{{Howland and Dabiri(2021)}}?><label>Howland and Dabiri(2021)</label><?label howland_influence_2021?><mixed-citation>Howland, M. F. and Dabiri, J. O.: Influence of wake model superposition and
secondary steering on model-based wake steering control with scada data
assimilation, Energies, 14, 1, <ext-link xlink:href="https://doi.org/10.3390/EN14010052" ext-link-type="DOI">10.3390/EN14010052</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx29"><?xmltex \def\ref@label{{Howland et~al.(2019)Howland, Lele, and Dabiri}}?><label>Howland et al.(2019)Howland, Lele, and Dabiri</label><?label howland_wind_2019?><mixed-citation>Howland, M. F., Lele, S. K., and Dabiri, J. O.: Wind farm power optimization
through wake steering, P. Natl. Acad. Sci. USA, 116, 14495–14500,
<ext-link xlink:href="https://doi.org/10.1073/pnas.1903680116" ext-link-type="DOI">10.1073/pnas.1903680116</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx30"><?xmltex \def\ref@label{{Howland et~al.(2020)Howland, Ghate, Lele, and
Dabiri}}?><label>Howland et al.(2020)Howland, Ghate, Lele, and
Dabiri</label><?label howland_optimal_2020?><mixed-citation>Howland, M. F., Ghate, A. S., Lele, S. K., and Dabiri, J. O.: Optimal closed-loop wake steering – Part 1: Conventionally neutral atmospheric boundary layer conditions, Wind Energ. Sci., 5, 1315–1338, <ext-link xlink:href="https://doi.org/10.5194/wes-5-1315-2020" ext-link-type="DOI">10.5194/wes-5-1315-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx31"><?xmltex \def\ref@label{{Howland et~al.(2022)Howland, Ghate, Quesada, Pena~Mart{\'{i}}nez,
Zhong, Larra{\~{n}}aga, Lele, and Dabiri}}?><label>Howland et al.(2022)Howland, Ghate, Quesada, Pena Martínez,
Zhong, Larrañaga, Lele, and Dabiri</label><?label howland_optimal_2022?><mixed-citation>Howland, M. F., Ghate, A. S., Quesada, J. B., Pena Martínez, J. J., Zhong, W., Larrañaga, F. P., Lele, S. K., and Dabiri, J. O.: Optimal closed-loop wake steering – Part 2: Diurnal cycle atmospheric boundary layer conditions, Wind Energ. Sci., 7, 345–365, <ext-link xlink:href="https://doi.org/10.5194/wes-7-345-2022" ext-link-type="DOI">10.5194/wes-7-345-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx32"><?xmltex \def\ref@label{{Jensen(1983)}}?><label>Jensen(1983)</label><?label jensen_note_1983?><mixed-citation>
Jensen, N.: A note on wind generator interaction, Tech. Rep. RISO-M-2411, Risoe
National Laboratory, Roskilde, Denmark, ISBN 87-550-0971-9,
1983.</mixed-citation></ref>
      <ref id="bib1.bibx33"><?xmltex \def\ref@label{{Jim{\'{e}}nez et~al.(2009)Jim{\'{e}}nez, Crespo, and
Migoya}}?><label>Jiménez et al.(2009)Jiménez, Crespo, and
Migoya</label><?label jimenez_application_2009?><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>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx34"><?xmltex \def\ref@label{{Jonkman(2021)}}?><label>Jonkman(2021)</label><?label jonkman_fast_2021?><mixed-citation>Jonkman, J.: FAST, NREL, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.6324288" ext-link-type="DOI">10.5281/zenodo.6324288</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx35"><?xmltex \def\ref@label{{Jonkman et~al.(2009)Jonkman, Butterfield, Musial, and
Scott}}?><label>Jonkman et al.(2009)Jonkman, Butterfield, Musial, and
Scott</label><?label jonkman_definition_2009?><mixed-citation>Jonkman, J., Butterfield, S., Musial, W., and Scott, G.: Definition of a 5-MW
Reference Wind Turbine for Offshore System Development, National
Renewable Energy Laboratory (NREL), <ext-link xlink:href="https://doi.org/10.2172/947422" ext-link-type="DOI">10.2172/947422</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx36"><?xmltex \def\ref@label{{Katic et~al.(1987)Katic, H{\o}jstrup, and Jensen}}?><label>Katic et al.(1987)Katic, Højstrup, and Jensen</label><?label katic_simple_1987?><mixed-citation>Katic, I., Højstrup, J., and Jensen, N.: A Simple Model for Cluster
Efficiency, EWEC'86. Proceedings, 1, 407–410,
<uri>https://orbit.dtu.dk/en/publications/a-simple-model-for-cluster-efficiency</uri> (last access: 15 January 2023),
1987.</mixed-citation></ref>
      <ref id="bib1.bibx37"><?xmltex \def\ref@label{{Kheirabadi and Nagamune(2019)}}?><label>Kheirabadi and Nagamune(2019)</label><?label kheirabadi_quantitative_2019?><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. Ind. Aerod.,
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.bibx38"><?xmltex \def\ref@label{{King et~al.(2021)King, Fleming, King, Mart{\'{i}}nez-Tossas, Bay,
Mudafort, and Simley}}?><label>King et al.(2021)King, Fleming, King, Martínez-Tossas, Bay,
Mudafort, and Simley</label><?label king_control-oriented_2021?><mixed-citation>King, J., Fleming, P., King, R., Martínez-Tossas, L. A., Bay, C. J., Mudafort, R., and Simley, E.: Control-oriented model for secondary effects of wake steering, Wind Energ. Sci., 6, 701–714, <ext-link xlink:href="https://doi.org/10.5194/wes-6-701-2021" ext-link-type="DOI">10.5194/wes-6-701-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx39"><?xmltex \def\ref@label{{King et~al.(2022)King, Fleming, Martinez, Bay, and
Churchfield}}?><label>King et al.(2022)King, Fleming, Martinez, Bay, and
Churchfield</label><?label king_aerodynamics_2022?><mixed-citation>King, J., Fleming, P., Martinez, L., Bay, C., and Churchfield, M.: Aerodynamics
of Wake Steering, in: Handbook of Wind Energy Aerodynamics, edited
by: Stoevesandt, B., Schepers, G., Fuglsang, P., and Sun, Y.,
Springer International Publishing, Cham, 1197–1221, <ext-link xlink:href="https://doi.org/10.1007/978-3-030-31307-4_60" ext-link-type="DOI">10.1007/978-3-030-31307-4_60</ext-link>,
2022.</mixed-citation></ref>
      <ref id="bib1.bibx40"><?xmltex \def\ref@label{{Kraft(1988)}}?><label>Kraft(1988)</label><?label kraft_software_1988?><mixed-citation>Kraft, D.: A software package for sequential quadratic programming, vol. 88 of
Deutsche Forschungs- und Versuchsanstalt für Luft- und
Raumfahrt Köln: Forschungsbericht, Wiss. Berichtswesen d. DFVLR,
28 edn., DFVLR-FB 88-28, <uri>https://books.google.co.uk/books?id=4rKaGwAACAAJ</uri> (last access:
1 February 2023), 1988.</mixed-citation></ref>
      <ref id="bib1.bibx41"><?xmltex \def\ref@label{{Kuo et~al.(2020)Kuo, Pan, Li, and Shen}}?><label>Kuo et al.(2020)Kuo, Pan, Li, and Shen</label><?label kuo_wind_2020?><mixed-citation>Kuo, J., Pan, K., Li, N., and Shen, H.: Wind Farm Yaw Optimization via
Random Search Algorithm, Energies, 13, 4,
<ext-link xlink:href="https://doi.org/10.3390/en13040865" ext-link-type="DOI">10.3390/en13040865</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx42"><?xmltex \def\ref@label{{Mart{\'{i}}nez-Tossas et~al.(2019)Mart{\'{i}}nez-Tossas, Annoni, Fleming,
and Churchfield}}?><label>Martínez-Tossas et al.(2019)Martínez-Tossas, Annoni, Fleming,
and Churchfield</label><?label martinez-tossas_aerodynamics_2019?><mixed-citation>Martínez-Tossas, L. A., Annoni, J., Fleming, P., and Churchfield, M. J.:
The aerodynamics of the curled wake: a simplified model in view of flow
control, Wind Energ. Sci., 4, 127–138, <ext-link xlink:href="https://doi.org/10.5194/wes-4-127-2019" ext-link-type="DOI">10.5194/wes-4-127-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx43"><?xmltex \def\ref@label{{Niayifar and Port{\'{e}}-Agel(2016)}}?><label>Niayifar and Porté-Agel(2016)</label><?label niayifar_analytical_2016?><mixed-citation>Niayifar, A. and Porté-Agel, F.: Analytical Modeling of Wind Farms:
A New Approach for Power Prediction, Energies, 9, 9,
<ext-link xlink:href="https://doi.org/10.3390/en9090741" ext-link-type="DOI">10.3390/en9090741</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx44"><?xmltex \def\ref@label{{NREL(2021)}}?><label>NREL(2021)</label><?label nrel_floris_2021?><mixed-citation>NREL: NREL/floris: v2.4 (v2.4), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.5062687" ext-link-type="DOI">10.5281/zenodo.5062687</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx45"><?xmltex \def\ref@label{{Nygaard(2014)}}?><label>Nygaard(2014)</label><?label nygaard_wakes_2014?><mixed-citation>Nygaard, N. G.: Wakes in very large wind farms and the effect of neighbouring
wind farms, J. Phys. Conf. Ser., 524, 0–10,
<ext-link xlink:href="https://doi.org/10.1088/1742-6596/524/1/012162" ext-link-type="DOI">10.1088/1742-6596/524/1/012162</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx46"><?xmltex \def\ref@label{{Pryor et~al.(2021)Pryor, Barthelmie, and Shepherd}}?><label>Pryor et al.(2021)Pryor, Barthelmie, and Shepherd</label><?label pryor_wind_2021?><mixed-citation>Pryor, S. C., Barthelmie, R. J., and Shepherd, T. J.: Wind power production
from very large offshore wind farms, Joule, 5, 2663–2686,
<ext-link xlink:href="https://doi.org/10.1016/J.JOULE.2021.09.002" ext-link-type="DOI">10.1016/J.JOULE.2021.09.002</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx47"><?xmltex \def\ref@label{{Rak and Santos~Pereira(2022)}}?><label>Rak and Santos Pereira(2022)</label><?label rak_impact_2022?><mixed-citation>Rak, B. P. and Santos Pereira, R. B.: Impact of the wake deficit model on wind
farm yield: A study of yaw-based control optimization, J. Wind Eng. Ind.
Aerod., 220, 104827, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2021.104827" ext-link-type="DOI">10.1016/j.jweia.2021.104827</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx48"><?xmltex \def\ref@label{{Rott et~al.(2018)Rott, Doekemeijer, Seifert, van Wingerden, and
K{\"{u}}hn}}?><label>Rott et al.(2018)Rott, Doekemeijer, Seifert, van Wingerden, and
Kühn</label><?label rott_robust_2018?><mixed-citation>Rott, A., Doekemeijer, B., Seifert, J. K., van Wingerden, J.-W., and Kühn, M.: Robust active wake control in consideration of wind direction variability and uncertainty, Wind Energ. Sci., 3, 869–882, <ext-link xlink:href="https://doi.org/10.5194/wes-3-869-2018" ext-link-type="DOI">10.5194/wes-3-869-2018</ext-link>, 2018.</mixed-citation></ref>
      <?pagebreak page1451?><ref id="bib1.bibx49"><?xmltex \def\ref@label{{Shahriari et~al.(2016)Shahriari, Swersky, Wang, Adams, and
de~Freitas}}?><label>Shahriari et al.(2016)Shahriari, Swersky, Wang, Adams, and
de Freitas</label><?label shahriari_taking_2016?><mixed-citation>Shahriari, B., Swersky, K., Wang, Z., Adams, R. P., and de Freitas, N.: Taking
the Human Out of the Loop: A Review of Bayesian Optimization,
P. IEEE, 104, 148–175, <ext-link xlink:href="https://doi.org/10.1109/JPROC.2015.2494218" ext-link-type="DOI">10.1109/JPROC.2015.2494218</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx50"><?xmltex \def\ref@label{{Simley et~al.(2020)Simley, Fleming, and King}}?><label>Simley et al.(2020)Simley, Fleming, and King</label><?label simley_design_2020?><mixed-citation>Simley, E., Fleming, P., and King, J.: Design and analysis of a wake steering
controller with wind direction variability, Wind Energ. Sci., 5, 451–468,
<ext-link xlink:href="https://doi.org/10.5194/wes-5-451-2020" ext-link-type="DOI">10.5194/wes-5-451-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx51"><?xmltex \def\ref@label{{Th{\o}gersen et~al.(2017)Th{\o}gersen, Tranberg, Herp, and
Greiner}}?><label>Thøgersen et al.(2017)Thøgersen, Tranberg, Herp, and
Greiner</label><?label thogersen_statistical_2017?><mixed-citation>Thøgersen, E., Tranberg, B., Herp, J., and Greiner, M.: Statistical
meandering wake model and its application to yaw-angle optimisation of wind
farms, J. Phys. Conf. Ser., 854, 012017,
<ext-link xlink:href="https://doi.org/10.1088/1742-6596/854/1/012017" ext-link-type="DOI">10.1088/1742-6596/854/1/012017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx52"><?xmltex \def\ref@label{{van Dijk et~al.(2016)van Dijk, Wingerden, Ashuri, Li, and
Rotea}}?><label>van Dijk et al.(2016)van Dijk, Wingerden, Ashuri, Li, and
Rotea</label><?label van_dijk_yaw-misalignment_2016?><mixed-citation>van Dijk, M. T., Wingerden, J., Ashuri, T., Li, Y., and Rotea, M. A.:
Yaw-Misalignment and its Impact on Wind Turbine Loads and Wind
Farm Power Output, J. Phys. Conf. Ser., 753, 062013,
<ext-link xlink:href="https://doi.org/10.1088/1742-6596/753/6/062013" ext-link-type="DOI">10.1088/1742-6596/753/6/062013</ext-link>, 2016.
</mixed-citation></ref><?xmltex \hack{\newpage}?>
      <ref id="bib1.bibx53"><?xmltex \def\ref@label{{van Dijk et~al.(2017)van Dijk, van Wingerden, Ashuri, and
Li}}?><label>van Dijk et al.(2017)van Dijk, van Wingerden, Ashuri, and
Li</label><?label van_dijk_wind_2017?><mixed-citation>van Dijk, M. T., van Wingerden, J. W., Ashuri, T., and Li, Y.: Wind farm
multi-objective wake redirection for optimizing power production and loads,
Energy, 121, 561–569, <ext-link xlink:href="https://doi.org/10.1016/J.ENERGY.2017.01.051" ext-link-type="DOI">10.1016/J.ENERGY.2017.01.051</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx54"><?xmltex \def\ref@label{{Zong and Port{\'{e}}-Agel(2021)}}?><label>Zong and Porté-Agel(2021)</label><?label zong_experimental_2021?><mixed-citation>Zong, H. and Porté-Agel, F.: Experimental investigation and analytical
modelling of active yaw control for wind farm power optimization, Renew.
Energ., 170, 1228–1244, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2021.02.059" ext-link-type="DOI">10.1016/j.renene.2021.02.059</ext-link>,
2021.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Sensitivity analysis of wake steering optimisation for wind farm power maximisation</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Abkar and Porté-Agel(2015)</label><mixed-citation>
      
Abkar, M. and Porté-Agel, F.: Influence of atmospheric stability on
wind-turbine wakes: A large-eddy simulation study, Phys. Fluids, 27,
035104, <a href="https://doi.org/10.1063/1.4913695" target="_blank">https://doi.org/10.1063/1.4913695</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Ahmad et al.(2019)Ahmad, Basit, Anwar, Coupiac, Kazemtabrizi, and
Matthews</label><mixed-citation>
      
Ahmad, T., Basit, A., Anwar, J., Coupiac, O., Kazemtabrizi, B., and Matthews,
P. C.: Fast Processing Intelligent Wind Farm Controller for
Production Maximisation, Energies, 12, 3,
<a href="https://doi.org/10.3390/en12030544" target="_blank">https://doi.org/10.3390/en12030544</a>, 2019.

    </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 Gen., <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.(2018)Annoni, Bay, Taylor, Pao, Fleming, and
Johnson</label><mixed-citation>
      
Annoni, J., Bay, C., Taylor, T., Pao, L., Fleming, P., and Johnson, K.:
Efficient Optimization of Large Wind Farms for Real-Time
Control, P. Amer. Contr. Conf., 6200–6205,
<a href="https://doi.org/10.23919/ACC.2018.8430751" target="_blank">https://doi.org/10.23919/ACC.2018.8430751</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Barthelmie et al.(2009)Barthelmie, Hansen, Frandsen, Rathmann,
Schepers, Schlez, Phillips, Rados, Zervos, Politis, and
Chaviaropoulos</label><mixed-citation>
      
Barthelmie, R. J., Hansen, K., Frandsen, S. T., Rathmann, O., Schepers, J. G.,
Schlez, W., Phillips, J., Rados, K., Zervos, A., Politis, E. S., and
Chaviaropoulos, P. K.: Modelling and measuring flow and wind turbine wakes in
large wind farms offshore, Wind Energy, 12, 431–444, <a href="https://doi.org/10.1002/WE.348" target="_blank">https://doi.org/10.1002/WE.348</a>,
2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Barthelmie et al.(2010)Barthelmie, Pryor, Frandsen, Hansen, Schepers,
Rados, Schlez, Neubert, Jensen, and Neckelmann</label><mixed-citation>
      
Barthelmie, R. J., Pryor, S. C., Frandsen, S. T., Hansen, K. S., Schepers,
J. G., Rados, K., Schlez, W., Neubert, A., Jensen, L. E., and Neckelmann, S.:
Quantifying the impact of wind turbine wakes on power output at offshore wind
farms, J. Atmos. Ocean Tech., 27, 1302–1317,
<a href="https://doi.org/10.1175/2010JTECHA1398.1" target="_blank">https://doi.org/10.1175/2010JTECHA1398.1</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bastankhah and Porté-Agel(2014)</label><mixed-citation>
      
Bastankhah, M. and Porté-Agel, F.: A new analytical model for wind-turbine
wakes, Renew. Energ., 70, 116–123, <a href="https://doi.org/10.1016/j.renene.2014.01.002" target="_blank">https://doi.org/10.1016/j.renene.2014.01.002</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><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.bib9"><label>Bastankhah and Porté-Agel(2019)</label><mixed-citation>
      
Bastankhah, M. and Porté-Agel, F.: Wind farm power optimization via yaw
angle control: A wind tunnel study, J. Renew. Sustain. Ener., 11, 023301,
<a href="https://doi.org/10.1063/1.5077038" target="_blank">https://doi.org/10.1063/1.5077038</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Bastankhah et al.(2022)Bastankhah, Shapiro, Shamsoddin, Gayme, and
Meneveau</label><mixed-citation>
      
Bastankhah, M., Shapiro, C. R., Shamsoddin, S., Gayme, D. F., and Meneveau, C.:
A vortex sheet based analytical model of the curled wake behind yawed wind
turbines, J. Fluid Mech., 933, 2, <a href="https://doi.org/10.1017/jfm.2021.1010" target="_blank">https://doi.org/10.1017/jfm.2021.1010</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Campagnolo et al.(2016)Campagnolo, Petrović, Bottasso, and
Croce</label><mixed-citation>
      
Campagnolo, F., Petrović, V., Bottasso, C. L., and Croce, A.: Wind tunnel
testing of wake control strategies, P. Amer. Contr. Conf.,  513–518,
<a href="https://doi.org/10.1109/ACC.2016.7524965" target="_blank">https://doi.org/10.1109/ACC.2016.7524965</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Chen et al.(2022)Chen, Lin, Qiu, Liu, and Song</label><mixed-citation>
      
Chen, K., Lin, J., Qiu, Y., Liu, F., and Song, Y.: Joint optimization of wind
farm layout considering optimal control, Renew. Energ., 182, 787–796,
<a href="https://doi.org/10.1016/j.renene.2021.10.032" target="_blank">https://doi.org/10.1016/j.renene.2021.10.032</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Crespo et al.(1999)Crespo, Hernández, and
Frandsen</label><mixed-citation>
      
Crespo, A., Hernández, J., and Frandsen, S.: Survey of modelling methods
for wind turbine wakes and wind farms, Wind Energy, 2, 1–24,
<a href="https://doi.org/10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7" target="_blank">https://doi.org/10.1002/(SICI)1099-1824(199901/03)2:1&lt;1::AID-WE16&gt;3.0.CO;2-7</a>, 1999.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Deuflhard(2011)</label><mixed-citation>
      
Deuflhard, P.: Newton Methods for Nonlinear Problems, Springer Berlin,
Heidelberg, <a href="https://doi.org/10.1007/978-3-642-23899-4" target="_blank">https://doi.org/10.1007/978-3-642-23899-4</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Dilip and Porté-Agel(2017)</label><mixed-citation>
      
Dilip, D. and Porté-Agel, F.: Wind Turbine Wake Mitigation through
Blade Pitch Offset, Energies, 10, 6, <a href="https://doi.org/10.3390/EN10060757" target="_blank">https://doi.org/10.3390/EN10060757</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Doekemeijer et al.(2019)Doekemeijer, Van Wingerden, and
Fleming</label><mixed-citation>
      
Doekemeijer, B., Van Wingerden, J. W., and Fleming, P. A.: A tutorial on the
synthesis and validation of a closed-loop wind farm controller using a
steady-state surrogate model, Amer. Contr. Conf.,  2825–2836,
<a href="https://doi.org/10.23919/ACC.2019.8815126" target="_blank">https://doi.org/10.23919/ACC.2019.8815126</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Doekemeijer et al.(2020)Doekemeijer, van der Hoek, and van
Wingerden</label><mixed-citation>
      
Doekemeijer, B., van der Hoek, D., and van Wingerden, J. W.: Closed-loop
model-based wind farm control using FLORIS under time-varying inflow
conditions, Renew. Energ., 156, 719–730, <a href="https://doi.org/10.1016/j.renene.2020.04.007" target="_blank">https://doi.org/10.1016/j.renene.2020.04.007</a>,
2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Dou et al.(2020)Dou, Qu, Lei, and Zeng</label><mixed-citation>
      
Dou, B., Qu, T., Lei, L., and Zeng, P.: Optimization of wind turbine yaw angles
in a wind farm using a three-dimensional yawed wake model, Energy, 209, 118415,
<a href="https://doi.org/10.1016/j.energy.2020.118415" target="_blank">https://doi.org/10.1016/j.energy.2020.118415</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Eriksson et al.(2019)Eriksson, Pearce, Gardner, Turner, and
Poloczek</label><mixed-citation>
      
Eriksson, D., Pearce, M., Gardner, J., Turner, R. D., and Poloczek, M.:
Scalable Global Optimization via Local Bayesian Optimization,
Adv. Neur. In., 32, 5497–5508, <a href="https://doi.org/10.48550/ARXIV.1910.01739" target="_blank">https://doi.org/10.48550/ARXIV.1910.01739</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Fleming et al.(2015)Fleming, Gebraad, Lee, Van Wingerden, Johnson,
Churchfield, Michalakes, Spalart, and Moriarty</label><mixed-citation>
      
Fleming, P., Gebraad, P. M., Lee, S., Van Wingerden, J. W., Johnson, K.,
Churchfield, M., Michalakes, J., Spalart, P., and Moriarty, P.: Simulation
comparison of wake mitigation control strategies for a two-turbine case, Wind
Energy, 18, 2135–2143, <a href="https://doi.org/10.1002/WE.1810" target="_blank">https://doi.org/10.1002/WE.1810</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><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.bib22"><label>Fleming et al.(2018)Fleming, Annoni, Churchfield, Martinez-Tossas,
Gruchalla, Lawson, and Moriarty</label><mixed-citation>
      
Fleming, P., Annoni, J., Churchfield, M., Martinez-Tossas, L. A., Gruchalla, K., Lawson, M., and Moriarty, P.: A simulation study demonstrating the importance of large-scale trailing vortices in wake steering, Wind Energ. Sci., 3, 243–255, <a href="https://doi.org/10.5194/wes-3-243-2018" target="_blank">https://doi.org/10.5194/wes-3-243-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Gebraad et al.(2014)Gebraad, Teeuwisse, Van Wingerden, Fleming,
Ruben, Marden, and Pao</label><mixed-citation>
      
Gebraad, P. M., Teeuwisse, F. W., Van Wingerden, J. W., Fleming, P., Ruben,
S. D., Marden, J. R., and Pao, L. Y.: A data-driven model for wind plant
power optimization by yaw control, P. Amer. Contr. Conf.,  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.bib24"><label>Gebraad et al.(2016)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.: Wind plant power optimization
through yaw control using a parametric model for wake effects-a CFD
simulation study, Wind Energy, 19, 95–114, <a href="https://doi.org/10.1002/we.1822" target="_blank">https://doi.org/10.1002/we.1822</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Göçmen et al.(2022)Göçmen, Campagnolo, Duc,
Eguinoa, Andersen, Petrović, Imširović, Braunbehrens, Liew,
Baungaard, Laan, Qian, Aparicio-Sanchez, González-Lope, Dighe, Becker,
Broek, Wingerden, Stock, and Meyers</label><mixed-citation>
      
Göçmen, T., Campagnolo, F., Duc, T., Eguinoa, I., Andersen, S. J., Petrović, V., Imširović, L., Braunbehrens, R., Liew, J., Baungaard, M., van der Laan, M. P., Qian, G., Aparicio-Sanchez, M., González-Lope, R., Dighe, V. V., Becker, M., van den Broek, M. J., van Wingerden, J.-W., Stock, A., Cole, M., Ruisi, R., Bossanyi, E., Requate, N., Strnad, S., Schmidt, J., Vollmer, L., Sood, I., and Meyers, J.: FarmConners wind farm flow control benchmark – Part 1: Blind test results, Wind Energ. Sci., 7, 1791–1825, <a href="https://doi.org/10.5194/wes-7-1791-2022" target="_blank">https://doi.org/10.5194/wes-7-1791-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Hansen et al.(2012)Hansen, Barthelmie, Jensen, and
Sommer</label><mixed-citation>
      
Hansen, K. S., Barthelmie, R. J., Jensen, L. E., and Sommer, A.: The impact of
turbulence intensity and atmospheric stability on power deficits due to wind
turbine wakes at Horns Rev wind farm, Wind Energy, 15, 183–196,
<a href="https://doi.org/10.1002/we.512" target="_blank">https://doi.org/10.1002/we.512</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Houck(2021)</label><mixed-citation>
      
Houck, D. R.: Review of wake management techniques for wind turbines, Wind
Energy, 25, 195–220, <a href="https://doi.org/10.1002/WE.2668" target="_blank">https://doi.org/10.1002/WE.2668</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Howland and Dabiri(2021)</label><mixed-citation>
      
Howland, M. F. and Dabiri, J. O.: Influence of wake model superposition and
secondary steering on model-based wake steering control with scada data
assimilation, Energies, 14, 1, <a href="https://doi.org/10.3390/EN14010052" target="_blank">https://doi.org/10.3390/EN14010052</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Howland et al.(2019)Howland, Lele, and Dabiri</label><mixed-citation>
      
Howland, M. F., Lele, S. K., and Dabiri, J. O.: Wind farm power optimization
through wake steering, P. Natl. Acad. Sci. USA, 116, 14495–14500,
<a href="https://doi.org/10.1073/pnas.1903680116" target="_blank">https://doi.org/10.1073/pnas.1903680116</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Howland et al.(2020)Howland, Ghate, Lele, and
Dabiri</label><mixed-citation>
      
Howland, M. F., Ghate, A. S., Lele, S. K., and Dabiri, J. O.: Optimal closed-loop wake steering – Part 1: Conventionally neutral atmospheric boundary layer conditions, Wind Energ. Sci., 5, 1315–1338, <a href="https://doi.org/10.5194/wes-5-1315-2020" target="_blank">https://doi.org/10.5194/wes-5-1315-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Howland et al.(2022)Howland, Ghate, Quesada, Pena Martínez,
Zhong, Larrañaga, Lele, and Dabiri</label><mixed-citation>
      
Howland, M. F., Ghate, A. S., Quesada, J. B., Pena Martínez, J. J., Zhong, W., Larrañaga, F. P., Lele, S. K., and Dabiri, J. O.: Optimal closed-loop wake steering – Part 2: Diurnal cycle atmospheric boundary layer conditions, Wind Energ. Sci., 7, 345–365, <a href="https://doi.org/10.5194/wes-7-345-2022" target="_blank">https://doi.org/10.5194/wes-7-345-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Jensen(1983)</label><mixed-citation>
      
Jensen, N.: A note on wind generator interaction, Tech. Rep. RISO-M-2411, Risoe
National Laboratory, Roskilde, Denmark, ISBN 87-550-0971-9,
1983.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Jiménez et al.(2009)Jiménez, 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>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Jonkman(2021)</label><mixed-citation>
      
Jonkman, J.: FAST, NREL, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.6324288" target="_blank">https://doi.org/10.5281/zenodo.6324288</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Jonkman et al.(2009)Jonkman, Butterfield, Musial, and
Scott</label><mixed-citation>
      
Jonkman, J., Butterfield, S., Musial, W., and Scott, G.: Definition of a 5-MW
Reference Wind Turbine for Offshore System Development, National
Renewable Energy Laboratory (NREL), <a href="https://doi.org/10.2172/947422" target="_blank">https://doi.org/10.2172/947422</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Katic et al.(1987)Katic, Højstrup, and Jensen</label><mixed-citation>
      
Katic, I., Højstrup, J., and Jensen, N.: A Simple Model for Cluster
Efficiency, EWEC'86. Proceedings, 1, 407–410,
<a href="https://orbit.dtu.dk/en/publications/a-simple-model-for-cluster-efficiency" target="_blank"/> (last access: 15 January 2023),
1987.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><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. Ind. Aerod.,
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.bib38"><label>King et al.(2021)King, Fleming, King, Martínez-Tossas, Bay,
Mudafort, and Simley</label><mixed-citation>
      
King, J., Fleming, P., King, R., Martínez-Tossas, L. A., Bay, C. J., Mudafort, R., and Simley, E.: Control-oriented model for secondary effects of wake steering, Wind Energ. Sci., 6, 701–714, <a href="https://doi.org/10.5194/wes-6-701-2021" target="_blank">https://doi.org/10.5194/wes-6-701-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>King et al.(2022)King, Fleming, Martinez, Bay, and
Churchfield</label><mixed-citation>
      
King, J., Fleming, P., Martinez, L., Bay, C., and Churchfield, M.: Aerodynamics
of Wake Steering, in: Handbook of Wind Energy Aerodynamics, edited
by: Stoevesandt, B., Schepers, G., Fuglsang, P., and Sun, Y.,
Springer International Publishing, Cham, 1197–1221, <a href="https://doi.org/10.1007/978-3-030-31307-4_60" target="_blank">https://doi.org/10.1007/978-3-030-31307-4_60</a>,
2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Kraft(1988)</label><mixed-citation>
      
Kraft, D.: A software package for sequential quadratic programming, vol. 88 of
Deutsche Forschungs- und Versuchsanstalt für Luft- und
Raumfahrt Köln: Forschungsbericht, Wiss. Berichtswesen d. DFVLR,
28 edn., DFVLR-FB 88-28, <a href="https://books.google.co.uk/books?id=4rKaGwAACAAJ" target="_blank"/> (last access:
1 February 2023), 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Kuo et al.(2020)Kuo, Pan, Li, and Shen</label><mixed-citation>
      
Kuo, J., Pan, K., Li, N., and Shen, H.: Wind Farm Yaw Optimization via
Random Search Algorithm, Energies, 13, 4,
<a href="https://doi.org/10.3390/en13040865" target="_blank">https://doi.org/10.3390/en13040865</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Martínez-Tossas et al.(2019)Martínez-Tossas, Annoni, Fleming,
and Churchfield</label><mixed-citation>
      
Martínez-Tossas, L. A., Annoni, J., Fleming, P., and Churchfield, M. J.:
The aerodynamics of the curled wake: a simplified model in view of flow
control, Wind Energ. Sci., 4, 127–138, <a href="https://doi.org/10.5194/wes-4-127-2019" target="_blank">https://doi.org/10.5194/wes-4-127-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Niayifar and Porté-Agel(2016)</label><mixed-citation>
      
Niayifar, A. and Porté-Agel, F.: Analytical Modeling of Wind Farms:
A New Approach for Power Prediction, Energies, 9, 9,
<a href="https://doi.org/10.3390/en9090741" target="_blank">https://doi.org/10.3390/en9090741</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>NREL(2021)</label><mixed-citation>
      
NREL: NREL/floris: v2.4 (v2.4), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.5062687" target="_blank">https://doi.org/10.5281/zenodo.5062687</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Nygaard(2014)</label><mixed-citation>
      
Nygaard, N. G.: Wakes in very large wind farms and the effect of neighbouring
wind farms, J. Phys. Conf. Ser., 524, 0–10,
<a href="https://doi.org/10.1088/1742-6596/524/1/012162" target="_blank">https://doi.org/10.1088/1742-6596/524/1/012162</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Pryor et al.(2021)Pryor, Barthelmie, and Shepherd</label><mixed-citation>
      
Pryor, S. C., Barthelmie, R. J., and Shepherd, T. J.: Wind power production
from very large offshore wind farms, Joule, 5, 2663–2686,
<a href="https://doi.org/10.1016/J.JOULE.2021.09.002" target="_blank">https://doi.org/10.1016/J.JOULE.2021.09.002</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Rak and Santos Pereira(2022)</label><mixed-citation>
      
Rak, B. P. and Santos Pereira, R. B.: Impact of the wake deficit model on wind
farm yield: A study of yaw-based control optimization, J. Wind Eng. Ind.
Aerod., 220, 104827, <a href="https://doi.org/10.1016/j.jweia.2021.104827" target="_blank">https://doi.org/10.1016/j.jweia.2021.104827</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Rott et al.(2018)Rott, Doekemeijer, Seifert, van Wingerden, and
Kühn</label><mixed-citation>
      
Rott, A., Doekemeijer, B., Seifert, J. K., van Wingerden, J.-W., and Kühn, M.: Robust active wake control in consideration of wind direction variability and uncertainty, Wind Energ. Sci., 3, 869–882, <a href="https://doi.org/10.5194/wes-3-869-2018" target="_blank">https://doi.org/10.5194/wes-3-869-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Shahriari et al.(2016)Shahriari, Swersky, Wang, Adams, and
de Freitas</label><mixed-citation>
      
Shahriari, B., Swersky, K., Wang, Z., Adams, R. P., and de Freitas, N.: Taking
the Human Out of the Loop: A Review of Bayesian Optimization,
P. IEEE, 104, 148–175, <a href="https://doi.org/10.1109/JPROC.2015.2494218" target="_blank">https://doi.org/10.1109/JPROC.2015.2494218</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Simley et al.(2020)Simley, Fleming, and King</label><mixed-citation>
      
Simley, E., Fleming, P., and King, J.: Design and analysis of a wake steering
controller with wind direction variability, Wind Energ. Sci., 5, 451–468,
<a href="https://doi.org/10.5194/wes-5-451-2020" target="_blank">https://doi.org/10.5194/wes-5-451-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Thøgersen et al.(2017)Thøgersen, Tranberg, Herp, and
Greiner</label><mixed-citation>
      
Thøgersen, E., Tranberg, B., Herp, J., and Greiner, M.: Statistical
meandering wake model and its application to yaw-angle optimisation of wind
farms, J. Phys. Conf. Ser., 854, 012017,
<a href="https://doi.org/10.1088/1742-6596/854/1/012017" target="_blank">https://doi.org/10.1088/1742-6596/854/1/012017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>van Dijk et al.(2016)van Dijk, Wingerden, Ashuri, Li, and
Rotea</label><mixed-citation>
      
van Dijk, M. T., Wingerden, J., Ashuri, T., Li, Y., and Rotea, M. A.:
Yaw-Misalignment and its Impact on Wind Turbine Loads and Wind
Farm Power Output, J. Phys. Conf. Ser., 753, 062013,
<a href="https://doi.org/10.1088/1742-6596/753/6/062013" target="_blank">https://doi.org/10.1088/1742-6596/753/6/062013</a>, 2016.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>van Dijk et al.(2017)van Dijk, van Wingerden, Ashuri, and
Li</label><mixed-citation>
      
van Dijk, M. T., van Wingerden, J. W., Ashuri, T., and Li, Y.: Wind farm
multi-objective wake redirection for optimizing power production and loads,
Energy, 121, 561–569, <a href="https://doi.org/10.1016/J.ENERGY.2017.01.051" target="_blank">https://doi.org/10.1016/J.ENERGY.2017.01.051</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Zong and Porté-Agel(2021)</label><mixed-citation>
      
Zong, H. and Porté-Agel, F.: Experimental investigation and analytical
modelling of active yaw control for wind farm power optimization, Renew.
Energ., 170, 1228–1244, <a href="https://doi.org/10.1016/j.renene.2021.02.059" target="_blank">https://doi.org/10.1016/j.renene.2021.02.059</a>,
2021.

    </mixed-citation></ref-html>--></article>
