<?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-11-2845-2026</article-id><title-group><article-title>Validation of RANS-calibrated engineering models and ANN-based surrogate for wind farm flow simulation and layout optimization</article-title><alt-title>Validation of RANS surrogate for WFLO</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Schøler</surname><given-names>Jens Peter</given-names></name>
          <email>jpsch@dtu.dk</email>
        <ext-link>https://orcid.org/0000-0001-7927-2639</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Simutis</surname><given-names>Ernestas</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>van der Laan</surname><given-names>M. Paul</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-8778-2302</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Quick</surname><given-names>Julian</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-1460-9808</ext-link></contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Réthoré</surname><given-names>Pierre-Elouan</given-names></name>
          <email>pire@dtu.dk</email>
        <ext-link>https://orcid.org/0000-0002-2300-5440</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>DTU Wind and Energy Systems, Frederiksborgvej 399, 4000 Roskilde, Denmark</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Jens Peter Schøler (jpsch@dtu.dk) and Pierre-Elouan Réthoré (pire@dtu.dk)</corresp></author-notes><pub-date><day>7</day><month>August</month><year>2026</year></pub-date>
      
      <volume>11</volume>
      <issue>8</issue>
      <fpage>2845</fpage><lpage>2868</lpage>
      <history>
        <date date-type="received"><day>21</day><month>January</month><year>2026</year></date>
           <date date-type="rev-request"><day>13</day><month>February</month><year>2026</year></date>
           <date date-type="rev-recd"><day>18</day><month>June</month><year>2026</year></date>
           <date date-type="accepted"><day>13</day><month>July</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Jens Peter Schøler et al.</copyright-statement>
        <copyright-year>2026</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/11/2845/2026/wes-11-2845-2026.html">This article is available from https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e117">Accurate yet efficient wake modeling is essential for wind farm layout optimization (WFLO). Wind turbine wakes are disturbed regions of flow behind a wind turbine, characterized by lower mean wind speeds and higher turbulence, which reduce downstream power production and increase structural loading. This study compares an artificial neural network (ANN)-based surrogate trained on Reynolds-averaged Navier–Stokes (RANS) data with two representative engineering wake models based on the TurbOPark and super-Gaussian formulations. The work includes recalibration of the engineering models, a systematic flow simulation study across varying turbine counts and spacings, and WFLO benchmarks validated against RANS-based annual energy production (AEP). Results show that the ANN surrogate achieves the lowest RMSE and MAPE across all scenarios in flow estimation, albeit at a higher computational cost. In WFLO, the TurbOPark-based model produced the highest RANS-validated AEP layouts, despite having lower predictive accuracy, suggesting that optimization complexity influences outcomes. Blockage modeling increased computational cost without improving accuracy.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Energiteknologisk udviklings- og demonstrationsprogram</funding-source>
<award-id>134242-521856</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="d2e129">A key challenge when designing a wind farm is determining the optimal placement of wind turbines. This decision must consider various factors, including nearby communities, local wind conditions, electrical infrastructure, seabed conditions, and other relevant considerations. The interaction between turbines through wake effects is particularly important, as it can significantly reduce energy output and, in turn, impact project economic viability. While wake effects are the dominant turbine-to-turbine interaction, the induction of the turbines also produces a wind-farm-scale blockage effect that slows the inflow upstream and can result in power losses at the leading turbines <xref ref-type="bibr" rid="bib1.bibx9" id="paren.1"/>. This upstream slowdown has been observed in offshore lidar measurements <xref ref-type="bibr" rid="bib1.bibx52" id="paren.2"/> and grows in relevance for the large turbine counts of modern offshore wind farms, where the induction of the individual turbines aggregates into a combined wind-farm-scale blockage effect <xref ref-type="bibr" rid="bib1.bibx41" id="paren.3"/>.</p>
      <p id="d2e141">To obtain the best achievable placement of the turbines, wind farm layout optimization (WFLO) can be applied. WFLO utilizes numerical optimization to minimize or maximize a given cost function, typically a variation of energy production or energy cost, while adhering to predefined constraints <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx6 bib1.bibx12" id="paren.4"><named-content content-type="pre">see, e.g.,</named-content></xref>. WFLO algorithms can be broadly grouped into gradient-based and gradient-free methods. The present work focuses on gradient-based optimization. Gradient-free approaches nonetheless remain an area of interest and continue to advance, ranging from classical evolutionary genetic algorithms <xref ref-type="bibr" rid="bib1.bibx38" id="paren.5"/> and particle swarm optimization <xref ref-type="bibr" rid="bib1.bibx48" id="paren.6"/> to recent hybrids such as the reinforcement learning-enhanced genetic algorithm of <xref ref-type="bibr" rid="bib1.bibx16" id="text.7"/>. Regardless of the optimization algorithm applied in WFLO, it is essential for flow models to account for wake effects. Existing approaches can be broadly classified into two categories: engineering wake models, which construct the wind farm flow field by superposing individual wakes, and computational fluid dynamics (CFD) models, which resolve the underlying physics through numerical simulation.</p>
      <p id="d2e158">The first engineering model, proposed by <xref ref-type="bibr" rid="bib1.bibx24" id="text.8"/> and often referred to as the Park model, was primarily concerned with representing the wake-center velocity and employed a top-hat shape to do so. This approximation initially worked well but became increasingly problematic as the turbine and wind farm sizes increased. The breakdown of turbulent structures leads to the wake becoming self-similar and converging toward a Gaussian-like shape. For this reason, later variations typically rely on a Gaussian profile to model the wake deficits. The area where the wake is self-similar is referred to as the far wake. The location downstream of the turbine where this occurs depends on both atmospheric and terrain conditions. <xref ref-type="bibr" rid="bib1.bibx15" id="text.9"/> investigated this with LESs and showed that self-similarity occurs between 1–3 rotor diameters (<inline-formula><mml:math id="M1" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>) in complex terrain and between 3–10 rotor diameters for flat terrain. The different areas of the flow around a wind turbine are labeled and illustrated in Fig. <xref ref-type="fig" rid="F1"/>.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e179">Simplified illustration of the flow around a wind turbine, depicting the upstream induction zone and the downstream wake, which is separated into the near wake, transition region, and far wake. The illustration includes the effective wind speed and the velocity deficit, illustrating the influence of the turbine on the background flow.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f01.png"/>

      </fig>

      <p id="d2e188">In the literature, engineering models and CFD methods are often referred to as low- and high-fidelity models, respectively. Engineering models are much faster: <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:msup><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> faster than Reynolds-averaged Navier–Stokes (RANS) <xref ref-type="bibr" rid="bib1.bibx66" id="paren.10"/> and <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">7</mml:mn></mml:msup><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> faster than large-eddy simulation (LES) <xref ref-type="bibr" rid="bib1.bibx50" id="paren.11"/>, making CFD too slow for WFLO, where the flow must be evaluated many times during the optimization process. In general, high-fidelity models are considered more accurate. However, under certain circumstances, engineering models can outperform high-fidelity models, e.g., within limited domains, such as the far wake, when operating near a calibration point, or when considering integrated quantities, such as power. However, design decisions and the calibration domain constrain their upper limits of accuracy.</p>
      <p id="d2e227">Wake models can be split into two categories. The first comprises analytically solved models, which typically assume a self-similar far-wake profile. Alternatively, there is a group of low-fidelity models that require solving but do not rely on self-similarity profiles  <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx43 bib1.bibx26" id="paren.12"><named-content content-type="pre">e.g.,</named-content></xref>. The class of self-similar, analytically solved wake models dominates WFLO practice and is the focus of the present study. In WFLO, a minimum inter-turbine separation is typically imposed to limit fatigue loads; because this constraint keeps downstream turbines out of the near wake, engineering wake models applied in WFLO have typically been developed and calibrated with the far wake as the design target.</p>
      <p id="d2e235">Several analytically solved engineering models exist and can loosely be categorized into families: Gaussian formulations <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx39" id="paren.13"/>, a super-Gaussian variation that bridges top-hat near-wake and Gaussian far-wake behavior <xref ref-type="bibr" rid="bib1.bibx10" id="paren.14"/>, and the turbulence-optimized park (TurbOPark) models <xref ref-type="bibr" rid="bib1.bibx41 bib1.bibx42" id="paren.15"/>. Special formulations have also been developed to account for the wake of turbines operating with a yaw offset, which is particularly useful for wake-steering scenarios <xref ref-type="bibr" rid="bib1.bibx8 bib1.bibx35" id="paren.16"/>. The breadth of existing models is wide, and the models mentioned here are an important subset, but many more exist for different applications. At the farm scale, overlapping wakes have further motivated momentum-conserving superposition schemes <xref ref-type="bibr" rid="bib1.bibx77 bib1.bibx28" id="paren.17"/> beyond the classical linear and quadratic sums <xref ref-type="bibr" rid="bib1.bibx50" id="paren.18"/>. In the present study, recalibration has been performed on two engineering model configurations using the <monospace>PyWake</monospace> <xref ref-type="bibr" rid="bib1.bibx45" id="paren.19"/> framework.</p>
      <p id="d2e263">An alternative to classical models is the use of data-driven surrogate models. Surrogates are models that seek to approximate a higher-fidelity model at a fraction of the cost. In wake modeling, surrogates are typically trained with RANS or LES data. <xref ref-type="bibr" rid="bib1.bibx75" id="text.20"/> have conducted a review of the field, encompassing various types of artificial neural network (ANN)-based wake surrogates, as well as classic machine learning (ML) techniques such as proper orthogonal decomposition (POD) and dynamic mode decomposition (DMD). Some notable works include <xref ref-type="bibr" rid="bib1.bibx62" id="text.21"/> and <xref ref-type="bibr" rid="bib1.bibx73" id="text.22"/>, who trained an ANN-based RANS surrogate using multiple parallel neural networks, each corresponding to a specific grid location in the turbine flow. A limitation of this approach is that the surrogate cannot be used with automatic differentiation in gradient-based WFLO or any optimization with continuous turbine coordinates, as these models are undefined outside the considered grid points. To address this, we have previously developed ANN-based RANS surrogates with continuous definitions that support automatic differentiation <xref ref-type="bibr" rid="bib1.bibx53 bib1.bibx47" id="paren.23"/>. One limitation of training ANN-based surrogates is the need for extensive data to cover cases across various inflow types and operating conditions. <xref ref-type="bibr" rid="bib1.bibx54" id="text.24"/> investigated physics-informed neural networks (PINNs) as a means to reduce data requirements, ultimately finding that a hybrid data-and-physics loss was too costly given the gains. <xref ref-type="bibr" rid="bib1.bibx20" id="text.25"/> demonstrated the possibility of an RANS PINN surrogate trained solely with physics information. Together, current literature indicates a significant potential in ANN-based RANS surrogates. From the related field of dynamic surrogate wake models, a couple of interesting works are listed to situate the current work better in a wider context. Dynamic models are typically motivated by a desire to improve wind farm control and mitigate loads. The work of <xref ref-type="bibr" rid="bib1.bibx76" id="text.26"/> used a physics-informed reconstruction of unsteady wake fields from lidar measurements, the predictive and stochastic reduced-order model (PS-ROM) of wake dynamics by <xref ref-type="bibr" rid="bib1.bibx3" id="text.27"/>, the PS-ROM derivative work on global POD modes by <xref ref-type="bibr" rid="bib1.bibx37" id="text.28"/>, and real-time physics-guided frameworks <xref ref-type="bibr" rid="bib1.bibx29" id="paren.29"/>. Most recently, <xref ref-type="bibr" rid="bib1.bibx32" id="text.30"/> proposed PhyWakeNet, a hybrid physics and data-driven model that captures the time-averaged deficit, wake meandering, and small-scale turbulence of an unsteady wake using separate but integrated model components.</p>
      <p id="d2e300">While numerous studies on ANN wake surrogates hypothesize that these models can outperform traditional engineering approaches in flow simulation and WFLO accuracy, numeric validation studies remain limited. <xref ref-type="bibr" rid="bib1.bibx2" id="text.31"/> trained an ANN surrogate using data from an engineering model and applied it to both yaw optimization for a 15-turbine array and layout optimization for a 6-turbine configuration. Similarly, <xref ref-type="bibr" rid="bib1.bibx58" id="text.32"/> developed an ANN surrogate trained on data from an engineering model and conducted a WFLO study incorporating hub-height optimization for a 30-turbine wind farm. <xref ref-type="bibr" rid="bib1.bibx74" id="text.33"/> and <xref ref-type="bibr" rid="bib1.bibx73" id="text.34"/> demonstrated the ANN-RANS surrogates developed by <xref ref-type="bibr" rid="bib1.bibx62" id="text.35"/> in yaw optimization of a five-turbine row and in a WFLO re-powering study of the Horns Rev 1 offshore wind farm, respectively. However, neither study validated their results against CFD simulations or against supervisory control and data acquisition (SCADA) data. In contrast, <xref ref-type="bibr" rid="bib1.bibx30" id="text.36"/> introduced a novel RANS-based ANN surrogate trained using a generative adversarial network (GAN). Their study included flow simulation via the superposition of single-wake models applied to the Horns Rev 1 wind farm, with power production results compared against RANS, time-averaged LES, and SCADA data, though only for a limited range of inflow cases. Likewise, <xref ref-type="bibr" rid="bib1.bibx31" id="text.37"/> trained a convolutional neural network (CNN) surrogate using time-averaged LES data and validated it using time-averaged LES simulations from a row of five turbines with varying inter-turbine spacings.</p>
      <p id="d2e326">In summary, the existing validation studies in the literature have been limited by surrogate training and validation using low-fidelity engineering model data, WFLO without validation, flow studies with few turbines or limited variation in the studied farm layouts, and restricted inflow conditions. In this work, systematic experiments are conducted to validate a pre-developed RANS-ANN for flow simulation and WFLO. The contributions of this work include the following two main items, a flow study and a WFLO study: <list list-type="custom"><list-item><label>1a.</label>
      <p id="d2e331">recalibration of engineering models to a RANS-based single-wake dataset;</p></list-item><list-item><label>1b.</label>
      <p id="d2e335">comparative study investigating the accuracy of an ANN wake model and two popular engineering model setups for wind farm flow simulation with a varying number of wind turbines, including a cost–benefit analysis of accuracy, memory consumption, and computational cost;</p></list-item><list-item><label>2.</label>
      <p id="d2e339">WFLO validation study of the ANN wake model against two engineering model setups and three different optimization algorithms, as well as validation of the optimized layouts with RANS-based annual energy production (AEP) estimates.</p></list-item></list></p>
      <p id="d2e342">The paper consists of Sect. <xref ref-type="sec" rid="Ch1.S2"/>, which outlines the studies conducted and the methods used. In Sect. <xref ref-type="sec" rid="Ch1.S3"/>, the results of the studies are presented and discussed. In Sect. <xref ref-type="sec" rid="Ch1.S4"/>, the conclusions of the study are summarized, and suggestions for future work are presented.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Methodology</title>
      <p id="d2e359">In this section, the methods used in the paper are presented, and the experiments conducted are described.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Reynolds-averaged Navier–Stokes (RANS)</title>
      <p id="d2e369">RANS is a steady-state CFD model that solves the mean flow by modeling all turbulence scales. As RANS represents the time-averaged wake, it does not resolve unsteady features such as wake meandering, whose net effect on the mean velocity deficit and wake recovery is instead represented implicitly through a calibrated closure model, here the <inline-formula><mml:math id="M4" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M5" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx66 bib1.bibx67" id="paren.38"/>.</p>
      <p id="d2e400">The inflow represents a logarithmic profile, where the ambient turbulence intensity (TI) based on the turbulent kinetic energy at hub height is set by the roughness length. For the WFLO AEP study, the TI is set to 6 <inline-formula><mml:math id="M7" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>, yielding an offshore roughness length of <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.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">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M9" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>. The turbines are modeled by actuator disks (ADs) <xref ref-type="bibr" rid="bib1.bibx64" id="paren.39"/>. The AD thrust and tangential force distributions utilize an analytical Joukowsky rotor model, as proposed by <xref ref-type="bibr" rid="bib1.bibx56" id="text.40"/> but recalibrated by <xref ref-type="bibr" rid="bib1.bibx65" id="text.41"/> for improved performance under veer and shear. The RANS simulations are performed with the <monospace>PyWakeEllipsys</monospace> code <xref ref-type="bibr" rid="bib1.bibx17" id="paren.42"/>, which wraps the <monospace>EllipSys3D</monospace> finite-volume flow solver <xref ref-type="bibr" rid="bib1.bibx36 bib1.bibx55" id="paren.43"/>.</p>
      <p id="d2e459">A Cartesian mesh with inner and outer grids was used, as illustrated in Fig. <xref ref-type="fig" rid="F2"/>. The mesh is fixed with the inflow always directed from west to east, and different wind directions are realized by rotating the wind farm layout rather than the grid. Generic mesh parameters are introduced in Fig. <xref ref-type="fig" rid="F2"/>, and their specific values are listed in Table <xref ref-type="table" rid="T1"/>. The asymmetric extents, <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> downstream, <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> lateral, and <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">W</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> upstream, follow from this orientation: only the downstream direction requires a large buffer to capture the far wake.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e530">Illustration of utilized <monospace>PyWakeEllipsys-flatbox</monospace> mesh.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f02.png"/>

        </fig>

<table-wrap id="T1"><label>Table 1</label><caption><p id="d2e545">Parameters for <monospace>PyWakeEllipSys-flatbox</monospace> mesh considered during simulations.</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="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">Description</oasis:entry>
         <oasis:entry colname="col3">Considered values</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi>Z</mml:mi><mml:mtext>grid</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Outer flow domain height</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mn mathvariant="normal">25</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mtext>grid</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Outer flow domain extend</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mn mathvariant="normal">500</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">N</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Northern inner-domain length</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Eastern inner-domain length</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:mn mathvariant="normal">20</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Southern inner-domain length</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>M</mml:mi><mml:mi mathvariant="normal">W</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Western inner-domain length</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>Z</mml:mi><mml:mi>M</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Inner-box height</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Grid spacing</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e814">The WFLO RANS AEP simulations are performed for all wind directions and wind speeds with intervals of <inline-formula><mml:math id="M29" display="inline"><mml:mn mathvariant="normal">5</mml:mn></mml:math></inline-formula>° and 1 <inline-formula><mml:math id="M30" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, respectively, yielding 1584 inflow cases. The simulations are run consecutively, where each new wind speed is obtained by scaling the turbine controllers according to Reynolds number similarity <xref ref-type="bibr" rid="bib1.bibx68" id="paren.44"/>, while the inflow is kept constant. This reduces the total number of required iterations because only local changes need to be recalculated, as discussed by <xref ref-type="bibr" rid="bib1.bibx69" id="text.45"/>. Furthermore, the wind speed cases are simulated from low to high, and the wind speed cases above the wind farm rated wind speed are skipped, which reduce the total number of flow cases by about 40 <inline-formula><mml:math id="M31" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>. Finally, a relatively low convergence level of <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is applied, which reduces the computational effort by an order of magnitude, while the convergence error in terms of AEP is 0.02 <inline-formula><mml:math id="M33" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>, as shown in <xref ref-type="bibr" rid="bib1.bibx69" id="text.46"/>. A single AEP simulation with this RANS setup takes between 28–33 <inline-formula><mml:math id="M34" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula> employing 1000 cores using the Sophia high-performance computer (HPC) <xref ref-type="bibr" rid="bib1.bibx59" id="paren.47"/>, which is equipped with first-generation AMD EPYC 7351 cores (released in 2017). Tests of PyWakeEllipSys RANS simulations on a different HPC with more modern fourth-generation AMD Genoa-X cores (released in 2023) shows a speed-up of a factor of 2.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Engineering models</title>
      <p id="d2e900">In this work, the <monospace>PyWake</monospace> engineering model framework <xref ref-type="bibr" rid="bib1.bibx45" id="paren.48"/> was used as the engine to run wind farm simulations. PyWake is a highly efficient framework that provides a high degree of abstraction for the components commonly found in low-fidelity wind farm models. The vast number of module combinations means only a subset can be considered at a time. We have chosen to consider a configuration based on the Turbulence Optimized Park model (TurbOPark) <xref ref-type="bibr" rid="bib1.bibx41 bib1.bibx42" id="paren.49"/>. The configuration is altered slightly and is therefore generally referred to as the TP model to avoid confusion with the original TurbOPark <xref ref-type="bibr" rid="bib1.bibx42" id="paren.50"/>. The second alternative considered is based on a configuration submitted to the American WAKE Experiment (AWAKEN) <xref ref-type="bibr" rid="bib1.bibx11" id="paren.51"/>, which utilizes the super-Gaussian model proposed by <xref ref-type="bibr" rid="bib1.bibx10" id="text.52"/> and is therefore referred to as the SG model.</p>
      <p id="d2e922">Regardless of the wake model used to represent the wind farm flow field, wake superposition is required. This is typically performed using either linear or quadratic methods. In the present work, linear superposition is applied for velocity deficits (<inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>) in both configurations, while a quadratic max sum is used for added turbulence intensity (<inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) in the SG configuration. An overview of superposition methods is provided by <xref ref-type="bibr" rid="bib1.bibx50" id="text.53"/>.</p>
      <p id="d2e949">For readers already familiar with engineering wind farm models, a summary of the two configurations is shown in Table <xref ref-type="table" rid="T2"/>, while the models are presented in greater detail in the remainder of the subsection for readers who are unfamiliar with them. Where possible, the PyWake default superposition model has been used. In the TP configuration, however, the wake and blockage models require different superposition methods: the original TurbOPark model superimposes the wake deficits quadratically <xref ref-type="bibr" rid="bib1.bibx42" id="paren.54"/>, but a quadratic (squared) sum would not preserve the sign of the blockage-induced speed-ups <xref ref-type="bibr" rid="bib1.bibx18" id="paren.55"/>. Linear superposition is therefore applied to the velocity deficits so that the wake and blockage contributions can be combined under a single operator.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e964">Comparison of <monospace>PyWake</monospace> configurations (with/without blockage). Values flanked by dashes indicate shared settings across both blockage configurations. A single dash (–) indicates that the component is not used.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="center"/>
     <oasis:colspec colnum="3" colname="col3" align="center" colsep="1"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:colspec colnum="5" colname="col5" align="center"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" colsep="1">SG </oasis:entry>
         <oasis:entry rowsep="1" namest="col4" nameend="col5">TP </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Component</oasis:entry>
         <oasis:entry colname="col2">w/o blockage</oasis:entry>
         <oasis:entry colname="col3">with blockage</oasis:entry>
         <oasis:entry colname="col4">w/o blockage</oasis:entry>
         <oasis:entry colname="col5">with blockage</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Wake model</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– <xref ref-type="bibr" rid="bib1.bibx10" id="text.58"/> – </oasis:entry>
         <oasis:entry namest="col4" nameend="col5">– <xref ref-type="bibr" rid="bib1.bibx42" id="text.59"/> – </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Blockage model</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">
                    <xref ref-type="bibr" rid="bib1.bibx18" id="text.60"/>
                  <sup>a</sup></oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">
                    <xref ref-type="bibr" rid="bib1.bibx18" id="text.61"/>
                  <sup>a</sup></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Turbulence model</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– <xref ref-type="bibr" rid="bib1.bibx13" id="text.62"/> – </oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">
                    <xref ref-type="bibr" rid="bib1.bibx13" id="text.63"/>
                  </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Superposition (<inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– Linear – </oasis:entry>
         <oasis:entry namest="col4" nameend="col5">– Linear –<sup>b</sup></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Superposition (<inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– Quad. max sum – </oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">Quad. max sum</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm model</oasis:entry>
         <oasis:entry colname="col2">Prop. downwind</oasis:entry>
         <oasis:entry colname="col3">All2All iter.</oasis:entry>
         <oasis:entry colname="col4">Prop. downwind</oasis:entry>
         <oasis:entry colname="col5">All2All iter.</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Ground model</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– Mirror – </oasis:entry>
         <oasis:entry namest="col4" nameend="col5">– Mirror – </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Rotor averaging</oasis:entry>
         <oasis:entry namest="col2" nameend="col3" colsep="1">– Center – </oasis:entry>
         <oasis:entry namest="col4" nameend="col5">– Gaussian overlap – </oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e970"><sup>a</sup> Updated version of <xref ref-type="bibr" rid="bib1.bibx63" id="text.56"/>.
<sup>b</sup> In the original TurbOPark paper, quadratic superposition was employed; however, this approach is incompatible with the blockage model <xref ref-type="bibr" rid="bib1.bibx18" id="paren.57"/>.</p></table-wrap-foot></table-wrap>


<sec id="Ch1.S2.SS2.SSSx1" specific-use="unnumbered">
  <title>Turbo Park (TP) model</title>
      <p id="d2e1234">The TP model uses the updated Turbulence Optimized Park (TurbOPark) model <xref ref-type="bibr" rid="bib1.bibx42" id="paren.64"/>, a Gaussian wake model derived from the classic Gaussian wake model by <xref ref-type="bibr" rid="bib1.bibx7" id="paren.65"/>. The wake model is shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>):
            

                  <disp-formula id="Ch1.E1" specific-use="align" content-type="subnumberedsingle"><mml:math id="M44" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1.2"><mml:mtd><mml:mtext>1a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>U</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E1.3"><mml:mtd><mml:mtext>1b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><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:mrow><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the wake deficit at the downstream position <inline-formula><mml:math id="M46" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M47" display="inline"><mml:mi>U</mml:mi></mml:math></inline-formula> is the free-stream velocity, <inline-formula><mml:math id="M48" 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> is the peak velocity deficit at the wake centerline, <inline-formula><mml:math id="M49" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula> is the radial distance from the wake center, <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the coefficient of thrust, and <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the variable wake expansion factor, which is the major difference between the TurbOPark implementation and the default Gaussian deficit model which uses a constant wake expansion factor. The expression for the wake expansion factor <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is implemented using the <xref ref-type="bibr" rid="bib1.bibx19" id="text.66"/> turbulence model, which is why the TurbOPark model does not require a standalone added-turbulence model. <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>) parameterized with <inline-formula><mml:math id="M54" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M55" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> from <xref ref-type="bibr" rid="bib1.bibx19" id="text.67"/>:
            

                  <disp-formula id="Ch1.E4" specific-use="align" content-type="subnumberedsingle"><mml:math id="M56" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></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:mi>w</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mi>x</mml:mi></mml:mfenced></mml:mrow><mml:mi>D</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>A</mml:mi><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mi mathvariant="italic">β</mml:mi></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:mfenced close="" open="("><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="italic">α</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E4.5"><mml:mtd><mml:mtext>2a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mfenced close=")" open=""><mml:mrow><mml:mo>-</mml:mo><mml:mi>ln⁡</mml:mi><mml:mfenced open="[" close="]"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msqrt><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msqrt><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">α</mml:mi></mml:mrow><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="italic">α</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">α</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E4.6"><mml:mtd><mml:mtext>2b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">α</mml:mi><mml:mo>:=</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">β</mml:mi><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><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:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>:=</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><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:mover accent="true"><mml:mi>C</mml:mi><mml:mo stretchy="true" mathvariant="normal">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mfrac></mml:mstyle></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E4.7"><mml:mtd><mml:mtext>2c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>where </mml:mtext><mml:msub><mml:mover accent="true"><mml:mi>C</mml:mi><mml:mo mathvariant="normal" stretchy="true">^</mml:mo></mml:mover><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>C</mml:mi><mml:mtext>T, lim</mml:mtext></mml:msub><mml:mo mathsize="1.1em">)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M57" 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> is the ambient TI, <inline-formula><mml:math id="M58" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula> is a wake expansion calibration parameter, <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M60" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are calibration parameters from the <xref ref-type="bibr" rid="bib1.bibx19" id="text.68"/> model, and <inline-formula><mml:math id="M61" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula> is an initial characteristic wake width; i.e., <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>w</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ε</mml:mi></mml:mrow></mml:math></inline-formula>. Here, it is important to note that the engineering wake models operate under an assumption that <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo>⋅</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msqrt><mml:mo>/</mml:mo><mml:mi>U</mml:mi></mml:mrow></mml:math></inline-formula> is the TI derived from turbulent kinetic energy, and <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>u</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>u</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>U</mml:mi></mml:mrow></mml:math></inline-formula> is the streamwise TI based on the standard deviation (SD) of the flow in the streamwise direction <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. This differs from the more physically accurate relationship <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn><mml:mo>⋅</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, derived from standard atmospheric turbulence ratios <xref ref-type="bibr" rid="bib1.bibx44" id="paren.69"/>. However, this simplification is not expected to alter the main conclusions, as the recalibrated models exhibit similar overall trends.</p>
</sec>
<sec id="Ch1.S2.SS2.SSSx2" specific-use="unnumbered">
  <title>Super-Gaussian (SG) model</title>
      <p id="d2e2052">The SG model, as previously mentioned, uses the super-Gaussian model proposed by <xref ref-type="bibr" rid="bib1.bibx10" id="text.70"/>; here, we present the simplified analytical version. The model unifies the observation that the far wake can be accurately modeled as a Gaussian shape, whereas the near wake more closely resembles a top-hat shape. By augmenting the super-Gaussian shape parameter <inline-formula><mml:math id="M68" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula>, the velocity deficit takes on different forms; i.e., when <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>, it becomes a regular Gaussian shape, while for <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> the shape gradually becomes more top-hat-like.
            

                  <disp-formula id="Ch1.E8" specific-use="align" content-type="subnumberedsingle"><mml:math id="M71" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E8.9"><mml:mtd><mml:mtext>3a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mi>U</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>(</mml:mo><mml:mi>r</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mi>n</mml:mi></mml:msup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E8.10"><mml:mtd><mml:mtext>3b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>C</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>n</mml:mi><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mn mathvariant="normal">16</mml:mn><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>/</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E8.11"><mml:mtd><mml:mtext>3c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><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:mo>(</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mi>I</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi>s</mml:mi></mml:msub><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><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: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:mfrac></mml:mstyle></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E8.12"><mml:mtd><mml:mtext>3d</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>n</mml:mi><mml:mo>≈</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mi>exp⁡</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>⋅</mml:mo><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi>a</mml:mi><mml:mi>f</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mn mathvariant="normal">3.11</mml:mn></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            Here <inline-formula><mml:math id="M72" display="inline"><mml:mi mathvariant="normal">Γ</mml:mi></mml:math></inline-formula> is the gamma function, and <inline-formula><mml:math id="M73" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula> is the effective TI. Equation (<xref ref-type="disp-formula" rid="Ch1.E8.12"/>) shows the exponential function that <xref ref-type="bibr" rid="bib1.bibx10" id="text.71"/> created to avoid having to solve for <inline-formula><mml:math id="M74" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> and is the key change to enable fast evaluations of the flow. The effective TI is evaluated using the added-TI (<inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) model proposed by <xref ref-type="bibr" rid="bib1.bibx13" id="text.72"/> and the quadratic sum. The <xref ref-type="bibr" rid="bib1.bibx13" id="text.73"/> model is shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E13"/>). To evaluate the axial induction (<inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), the method by <xref ref-type="bibr" rid="bib1.bibx34" id="text.74"/>, as implemented in PyWake, is utilized, and a quadratic max summation is used for superposition:
            

                  <disp-formula id="Ch1.E13" specific-use="align" content-type="subnumberedsingle"><mml:math id="M77" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E13.14"><mml:mtd><mml:mtext>4a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>I</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.73</mml:mn><mml:msubsup><mml:mi>a</mml:mi><mml:mi mathvariant="normal">m</mml:mi><mml:mn mathvariant="normal">0.8325</mml:mn></mml:msubsup><mml:msubsup><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.0325</mml:mn></mml:mrow></mml:msubsup><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.32</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E13.15"><mml:mtd><mml:mtext>4b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.083</mml:mn><mml:msubsup><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.0586</mml:mn><mml:msubsup><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.2460</mml:mn><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:mlabeledtr><mml:mlabeledtr id="Ch1.E13.16"><mml:mtd><mml:mtext>4c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>I</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msubsup><mml:mi>I</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mi>j</mml:mi></mml:munder><mml:mo mathsize="1.1em">(</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mo mathsize="1.1em">)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mspace linebreak="nobreak" width="0.125em"/></mml:mrow></mml:msqrt><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M78" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula> is an index indicating a neighboring turbine.</p>
</sec>
<sec id="Ch1.S2.SS2.SSSx3" specific-use="unnumbered">
  <title>Blockage</title>
      <p id="d2e2659">While wake effects are the primary drivers of flow interactions between turbines, turbine induction also plays a role. In PyWake, these effects are modeled using blockage models. When blockage is considered, the Self-Similarity Deficit model by <xref ref-type="bibr" rid="bib1.bibx63" id="text.75"/>, as updated by <xref ref-type="bibr" rid="bib1.bibx18" id="text.76"/>, is employed:
            

                  <disp-formula id="Ch1.E17" specific-use="align" content-type="subnumberedon"><mml:math id="M79" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E17.18"><mml:mtd><mml:mtext>5a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow><mml:mi>U</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mtext>sech</mml:mtext><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>r</mml:mi><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E17.19"><mml:mtd><mml:mtext>5b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>R</mml:mi></mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>R</mml:mi></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M80" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> is the centerline induction, <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the axial induction factor, <inline-formula><mml:math id="M82" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> is the rotor radius, and <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is a linear induction zone half radius, defined as

                  <disp-formula specific-use="align" content-type="numbered"><mml:math id="M84" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E17.20"><mml:mtd><mml:mtext>5c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>r</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mi>x</mml:mi></mml:mfenced></mml:mrow><mml:mi>R</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub><mml:mo>⋅</mml:mo><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:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E17.21"><mml:mtd><mml:mtext>5d</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>a</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced 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:mi mathvariant="italic">γ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>x</mml:mi><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:mo>⋅</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are tunable parameters introduced to account for the effects of wind farm blockage. In the updated blockage model <xref ref-type="bibr" rid="bib1.bibx18" id="paren.77"/>, the <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> function was updated to gradually shift from a far-field formulation to a near-field formulation. The said <inline-formula><mml:math id="M88" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> function is introduced below, with an abstraction of the transition function reported as a <inline-formula><mml:math id="M89" 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> function:

                  <disp-formula specific-use="align" content-type="subnumberedoff"><mml:math id="M90" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E17.22"><mml:mtd><mml:mtext>5e</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">δ</mml:mi><mml:mfenced close=")" open="("><mml:mi>x</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="cases" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>for </mml:mtext><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>R</mml:mi><mml:mo>&lt;</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>)</mml:mo><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:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mtd><mml:mtd><mml:mrow><mml:mtext>for </mml:mtext><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn><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">1</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>for </mml:mtext><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>&lt;</mml:mo><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>R</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">γ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>x</mml:mi><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:mo>=</mml:mo><mml:mo mathvariant="italic" mathsize="2.5em">{</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:mo mathsize="2.5em">(</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.06489</mml:mn><mml:mi>sin⁡</mml:mi><mml:mo mathsize="2.5em">(</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:mo>-</mml:mo><mml:mn mathvariant="normal">0.4911</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.1577</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><mml:mo mathsize="2.5em">)</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1.116</mml:mn><mml:mo mathsize="2.5em">)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E17.23"><mml:mtd><mml:mtext>5f</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>+</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>⋅</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msubsup><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:msub><mml:mi>a</mml:mi><mml:mtext>nf</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi>b</mml:mi><mml:mtext>nf</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msub><mml:mi>c</mml:mi><mml:mtext>nf</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:mfenced><mml:mo mathvariant="italic" mathsize="2.5em">}</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            The near-field expressions are parameterized with <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. For the far-field parameters, the original values are used as reported in Eq. (<xref ref-type="disp-formula" rid="Ch1.E17.23"/>).</p>
</sec>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Recalibration of deficit models with RANS data</title>
      <p id="d2e3396">To ensure that the deficit models considered are compared fairly, they have been recalibrated to a single-wake RANS dataset. To construct the dataset, a pre-existing RANS lookup table (LUT) is used, which consists of 3D fields of velocity deficit and wake-added TI for all combinations of <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.4</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.6</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.7</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.923</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M96" 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:mo>[</mml:mo><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">20</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>]</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>. The inflow represents a logarithmic profile where the roughness length is used to set <inline-formula><mml:math id="M97" 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>, as described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>. The single-wake RANS dataset is constructed by linearly interpolating/extrapolating the RANS-LUT to wind speeds <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mi>U</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M99" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and turbulence intensities <inline-formula><mml:math id="M100" 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:mo>[</mml:mo><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:mo>,</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">35</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">40</mml:mn><mml:mo>]</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, covering the modeling space. Similar RANS single-wake databases have been used to construct surrogate models in previous work <xref ref-type="bibr" rid="bib1.bibx14 bib1.bibx70" id="paren.78"/>.</p>
      <p id="d2e3619">The Bayesian optimization framework proposed by <xref ref-type="bibr" rid="bib1.bibx40" id="text.79"/> is used to minimize the <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> norm between the hub-height velocity fields of the RANS data and the deficit models. For each flow case, an <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msup><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> norm is calculated, and the mean of those is used as the optimization objective function. The deficit models are calibrated to account for velocities between 2–10 rotor diameters downstream of the source turbine and up to 2 rotor diameters in the cross-flow direction. The upstream deficit model is calibrated considering the region between 1–2 rotor diameters upstream of the source turbine and up to 2 rotor diameters away in the cross-flow direction. The optimization is initialized with 50 parameter configurations sampled from uniform distributions (detailed in Table <xref ref-type="table" rid="T3"/>). A set of parameters is denoted in vector form as <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and a collection of them in matrix notation as <inline-formula><mml:math id="M104" display="inline"><mml:mi mathvariant="bold">Φ</mml:mi></mml:math></inline-formula>. A given set of parameters constitutes a realization of the wake deficit parameters shown in Table <xref ref-type="table" rid="T3"/>; the original parameters are not shown here but are included inside the results section with the recalibrated parameters in Table <xref ref-type="table" rid="T7"/>.</p>

<table-wrap id="T3"><label>Table 3</label><caption><p id="d2e3675">Parameter bounds for the considered wake models during the calibration process: the SG model <xref ref-type="bibr" rid="bib1.bibx10" id="paren.80"/>, the TurbOPark-based model (TP; <xref ref-type="bibr" rid="bib1.bibx42" id="altparen.81"/>), and the blockage model <xref ref-type="bibr" rid="bib1.bibx18" id="paren.82"/>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <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:colspec colnum="4" colname="col4" 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">Lower</oasis:entry>
         <oasis:entry colname="col4">Upper</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.001</oasis:entry>
         <oasis:entry colname="col4">0.5</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>b</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.001</oasis:entry>
         <oasis:entry colname="col4">0.01</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">SG</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.001</oasis:entry>
         <oasis:entry colname="col4">0.5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">1</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.1</oasis:entry>
         <oasis:entry colname="col4">5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M111" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.001</oasis:entry>
         <oasis:entry colname="col4">0.5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.01</oasis:entry>
         <oasis:entry colname="col4">5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">TP</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.01</oasis:entry>
         <oasis:entry colname="col4">5</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">ϵ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.01</oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T, lim</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.01</oasis:entry>
         <oasis:entry colname="col4">1</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.05</oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Blockage</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e4205">This implementation of Bayesian optimization uses Gaussian process (GP) regression. Here, the posterior predictive distribution for a test input <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> is given by
          

                <disp-formula id="Ch1.E24" specific-use="align" content-type="subnumberedsingle"><mml:math id="M131" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E24.25"><mml:mtd><mml:mtext>6a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>∣</mml:mo><mml:mi mathvariant="bold">Φ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>∼</mml:mo><mml:mi mathvariant="script">N</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mtext>GP</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E24.26"><mml:mtd><mml:mtext>6b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">k</mml:mi><mml:mo>*</mml:mo><mml:mo>⊤</mml:mo></mml:msubsup><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="bold">K</mml:mi><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>n</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="double-struck">I</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E24.27"><mml:mtd><mml:mtext>6c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mtext>GP</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">k</mml:mi><mml:mo>*</mml:mo><mml:mo>⊤</mml:mo></mml:msubsup><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="bold">K</mml:mi><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>n</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="double-struck">I</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:msub><mml:mi mathvariant="bold-italic">k</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:mi mathvariant="script">N</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">μ</mml:mi><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> denotes a Gaussian distribution with mean <inline-formula><mml:math id="M133" display="inline"><mml:mi mathvariant="italic">μ</mml:mi></mml:math></inline-formula> and SD <inline-formula><mml:math id="M134" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M135" display="inline"><mml:mi mathvariant="bold-italic">y</mml:mi></mml:math></inline-formula> is the vector of observed outputs at the <inline-formula><mml:math id="M136" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> training points, <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be used to account for observation and model uncertainty but is just included here for numerical stability with <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>n</mml:mi></mml:msub><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>, <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="double-struck">I</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the <inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> identity matrix, and <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are the mean and SD obtained through GP regression. The covariance matrix <inline-formula><mml:math id="M143" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> and test covariance vector <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">k</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> are constructed using a pre-specified kernel function. This framework uses a Matérn kernel for the GP regressor with smoothness parameter <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn></mml:mrow></mml:math></inline-formula> and length scale set to 1, which can therefore be removed as it only occurs in denominators; the Matérn kernel is shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E28"/>).

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M146" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msup><mml:mn mathvariant="normal">2</mml:mn><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:msqrt><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mo>‖</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E28"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>×</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:msqrt><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mo>‖</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Here <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the Matérn covariance between parameter sets <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">M</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the modified Bessel function of the second kind, and <inline-formula><mml:math id="M151" display="inline"><mml:mi mathvariant="normal">Γ</mml:mi></mml:math></inline-formula> is the gamma function. The elements of the covariance matrix <inline-formula><mml:math id="M152" display="inline"><mml:mi mathvariant="bold">K</mml:mi></mml:math></inline-formula> are given by <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and the test vector is

                <disp-formula id="Ch1.E29" content-type="numbered"><label>8</label><mml:math id="M154" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">k</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mi mathvariant="normal">⋯</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>⊤</mml:mo></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          To guide the selection of the next evaluation point, an acquisition function is required. This implementation uses the upper confidence bound (UCB) acquisition function to decide the next best set of parameters. In this implementation, an exploration parameter of <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.576</mml:mn></mml:mrow></mml:math></inline-formula> is used for UCB, as shown in Eq. (<xref ref-type="disp-formula" rid="Ch1.E30"/>).

                <disp-formula id="Ch1.E30" content-type="numbered"><label>9</label><mml:math id="M156" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>UCB</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi>g</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>∣</mml:mo><mml:mi mathvariant="bold">Φ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mtext>GP</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e5044">The Bayesian optimization is run for 200 sequential iterations. In each iteration, the GP model is fitted to all previously observed parameter sets, the UCB acquisition function is maximized to select the following parameter set <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ϕ</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> to evaluate, and the objective function is computed at this point. After all iterations, the parameters associated with the lowest error are reported.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Artificial neural network (ANN) surrogate</title>
      <p id="d2e5067">In this work, a pre-trained RANS-based wake surrogate developed by <xref ref-type="bibr" rid="bib1.bibx47" id="text.83"/>, based on the work of <xref ref-type="bibr" rid="bib1.bibx53" id="text.84"/>, is employed for wind farm simulations and WFLO. The surrogate is based on a conventional ANN architecture, commonly referred to as a deep neural network, a fully connected feed-forward neural network, or a multi-layer perceptron (MLP). The model takes the Cartesian position in space (<inline-formula><mml:math id="M158" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M159" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M160" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>), the yaw offset from the inflow direction (<inline-formula><mml:math id="M161" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>), <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and the TI as inputs. While TI is considered during our experiments, yaw misalignment is not. Not addressing yaw misalignment was a conscious decision to limit the scope of the paper as it would have entailed a significant increase in the number of cases to evaluate with RANS.</p>

<table-wrap id="T4"><label>Table 4</label><caption><p id="d2e5119">Architecture of the pre-trained RANS ANN surrogates for the velocity deficit (<inline-formula><mml:math id="M163" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>) and added-turbulence (<inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) outputs.</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="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula> model</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> model</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M167" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> range</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">70</mml:mn><mml:mi>D</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">70</mml:mn><mml:mi>D</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M170" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> range</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mi>D</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mi>D</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Neurons per layer</oasis:entry>
         <oasis:entry colname="col2">(70, 102, 102, 102)</oasis:entry>
         <oasis:entry colname="col3">(118, 118, 118, 118)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Activation (<inline-formula><mml:math id="M173" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mtext>tanh</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mtext>sigmoid</mml:mtext><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M175" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mtext>sigmoid</mml:mtext><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Parameters</oasis:entry>
         <oasis:entry colname="col2">28 847</oasis:entry>
         <oasis:entry colname="col3">43 071</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="T5"><label>Table 5</label><caption><p id="d2e5385">Configuration used to deploy the ANN surrogates as wake models in PyWake.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Setting</oasis:entry>
         <oasis:entry colname="col2">Value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Superposition (<inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">Linear</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Superposition (<inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>)</oasis:entry>
         <oasis:entry colname="col2">Linear</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm model (without blockage)</oasis:entry>
         <oasis:entry colname="col2">Propagate downwind</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm model (with blockage)</oasis:entry>
         <oasis:entry colname="col2">All2All iterative</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Ground model</oasis:entry>
         <oasis:entry colname="col2">Mirror</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Rotor averaging</oasis:entry>
         <oasis:entry colname="col2">Center</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e5489">In Eq. (<xref ref-type="disp-formula" rid="Ch1.E31"/>) the MLP is defined as a set of equations. Equation (<xref ref-type="disp-formula" rid="Ch1.E31.32"/>) shows the input <inline-formula><mml:math id="M178" display="inline"><mml:mi mathvariant="bold-italic">s</mml:mi></mml:math></inline-formula>, Eq. (<xref ref-type="disp-formula" rid="Ch1.E31.33"/>) shows the hidden layer <inline-formula><mml:math id="M179" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, and Eq. (<xref ref-type="disp-formula" rid="Ch1.E31.34"/>) shows the output of the MLP <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.
          

                <disp-formula id="Ch1.E31" specific-use="align" content-type="subnumberedsingle"><mml:math id="M181" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E31.32"><mml:mtd><mml:mtext>10a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center center center center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>y</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>z</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><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:mtd><mml:mi>I</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>⊤</mml:mo></mml:msup></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E31.33"><mml:mtd><mml:mtext>10b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msup><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi mathvariant="bold">W</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">b</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi>l</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E31.34"><mml:mtd><mml:mtext>10c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold">W</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:msup><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>L</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">b</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Here <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold">W</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">b</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>l</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> are the activation, activation function, weights, and bias at layer <inline-formula><mml:math id="M186" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula>, respectively, and <inline-formula><mml:math id="M187" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> is the total number of layers. The model is trained with a single-wake RANS dataset of the DTU 10 MW reference wind turbine <xref ref-type="bibr" rid="bib1.bibx5" id="paren.85"/>. The architectures of the employed models are summarized in Table <xref ref-type="table" rid="T4"/>, and a brief overview of the engineering model configuration for the ANN is presented in Table <xref ref-type="table" rid="T5"/>. The configuration was adopted in accordance with <xref ref-type="bibr" rid="bib1.bibx47" id="text.86"/>.</p>
</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>Wind farm flow study</title>
      <p id="d2e5861">To evaluate the accuracy of the three low-fidelity options – the two engineering models and the ANN surrogate – we conduct a systematic study examining the influence of turbine count and inter-turbine spacing. Because flow construction based on superposition inherently introduces errors that depend on these parameters, varying them enables a structured investigation of construction error and facilitates a direct comparison of the engineering models and the ANN. Additionally, the study examines how these factors impact memory requirements and computational costs.</p>
      <p id="d2e5864">To examine the effect of turbine count, six base layouts are considered with <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">40</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">50</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. Figure <xref ref-type="fig" rid="F3"/> illustrates these configurations. To assess the impact of inter-turbine spacing, each base layout is scaled by a separation factor <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>wf</mml:mtext></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, resulting in a total of 18 distinct layouts. Each layout is simulated using RANS, the recalibrated and original engineering models, and the ANN surrogate. By comparing these results, trends in model performance can be identified, and the effectiveness of the ANN surrogate can be evaluated.</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e5945">Circular turbine layouts evaluated in the wind farm flow study. The grid circles represent normalized radial positions, which are scaled by a separation factor <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>wf</mml:mtext></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> to generate configurations with varying inter-turbine spacing.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f03.png"/>

        </fig>

      <p id="d2e5989">In the flow study, each possible model-layout combination is evaluated under different inflow conditions consisting of wind speeds <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mi>U</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8.0</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mn mathvariant="normal">14</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula>, ambient turbulence intensities <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mi>I</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, and wind direction angles <inline-formula><mml:math id="M195" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> ranging from <inline-formula><mml:math id="M196" display="inline"><mml:mn mathvariant="normal">270</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M197" display="inline"><mml:mn mathvariant="normal">315</mml:mn></mml:math></inline-formula>° in increments of <inline-formula><mml:math id="M198" display="inline"><mml:mn mathvariant="normal">3</mml:mn></mml:math></inline-formula>°.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Wind farm layout optimization (WFLO)</title>
      <p id="d2e6103">To compare the low-fidelity models in WFLO, optimization is performed using each of the available low-fidelity models, and the results are validated by estimating the annual energy production (AEP) with RANS simulation. A WFLO case is formulated with the objective of maximizing AEP, subject to a minimum turbine separation <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>min</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and polygonal boundary <inline-formula><mml:math id="M200" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula>:

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M201" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><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:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:munder><mml:mtext>AEP</mml:mtext><mml:mfenced close=")" open="("><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><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:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">8760</mml:mn><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="script">U</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mo mathvariant="italic">}</mml:mo><mml:mrow><mml:mi>m</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="script">U</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="script">U</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtext>s.t. </mml:mtext><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>q</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>q</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mo>≥</mml:mo><mml:msub><mml:mi>s</mml:mi><mml:mo>min⁡</mml:mo></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>∀</mml:mo><mml:mi>i</mml:mi><mml:mo>≠</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E35"><mml:mtd><mml:mtext>11</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:mi mathvariant="script">P</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>∀</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are coordinates and power produced at turbine <inline-formula><mml:math id="M205" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, 8760 is the number of hours in a year, and <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the number of turbines. <inline-formula><mml:math id="M207" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is a probability mass function indicating the probability of seeing a given combination of wind speed bin <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">U</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and binned wind direction <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. During optimization, the AEP is estimated with a wind direction bin for every <inline-formula><mml:math id="M210" display="inline"><mml:mn mathvariant="normal">1</mml:mn></mml:math></inline-formula>° to avoid artificially unwaked areas which the optimization algorithms would exploit. However, during validation the bin discretization was decreased to only consider a bin for every 5° to conserve computational resources driven by the cost of RANS simulations, as discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>.</p>

<table-wrap id="T6" specific-use="star"><label>Table 6</label><caption><p id="d2e6576">Parameters of considered optimization algorithms as used during studies with <monospace>TopFarm2</monospace>.</p></caption><oasis:table frame="topbot"><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 rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">SLSQP</oasis:entry>
         <oasis:entry colname="col3">IPOPT</oasis:entry>
         <oasis:entry colname="col4">SGD</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Max iterations</oasis:entry>
         <oasis:entry colname="col2">1000</oasis:entry>
         <oasis:entry colname="col3">1000</oasis:entry>
         <oasis:entry colname="col4">2000</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Convergence tolerance</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M211" 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">3</mml:mn></mml:mrow></mml:msup><mml:mtext>MWh</mml:mtext></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M212" 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">2</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Initial learning rate</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">17.83 <inline-formula><mml:math id="M213" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Momentum weight 1 (<inline-formula><mml:math id="M214" 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>)</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.1</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Momentum weight 2 (<inline-formula><mml:math id="M215" 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>)</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Final learning rate</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.01 <inline-formula><mml:math id="M216" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Initial constant learning rate iterations</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">100</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Early stopping ratio</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3">–</oasis:entry>
         <oasis:entry colname="col4">0.1</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e6808">The optimization is performed with the DTU-developed software <monospace>Topfarm2</monospace> <xref ref-type="bibr" rid="bib1.bibx46" id="paren.87"/>. Three different gradient-based optimization algorithms are considered, as implemented in <monospace>Topfarm2</monospace>: sequential least squares quadratic programming (SLSQP) <xref ref-type="bibr" rid="bib1.bibx27 bib1.bibx71" id="paren.88"/>, interior point optimizer (IPOPT) <xref ref-type="bibr" rid="bib1.bibx72" id="paren.89"/>, and stochastic gradient descent (SGD) <xref ref-type="bibr" rid="bib1.bibx51" id="paren.90"/>. In all cases, the gradients for the optimization are provided by the automatic differentiation included in PyWake.</p>
      <p id="d2e6831">The wind climate used in the layout study is taken from the IEA Wind 740-10-MW reference offshore wind plant <xref ref-type="bibr" rid="bib1.bibx25" id="paren.91"/>: the wind rose in Fig. <xref ref-type="fig" rid="F4"/>b is adopted as the site inflow distribution. The boundary was designed for this study to accommodate many turbines inside a small area, while maintaining both sharp and soft edges. The RANS cost scales with the modeled area because the wind directions are modeled by rotating the farm. A circular boundary minimizes this area and is shown here as the smallest circle enclosing the farm (radius <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mtext>wf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> in  Fig. <xref ref-type="fig" rid="F4"/>a). The turbines are modeled as the DTU 10 MW reference wind turbine <xref ref-type="bibr" rid="bib1.bibx5" id="paren.92"/>. The initial and optimized coordinates for the best optimization runs are shown in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>. To simplify both optimization and validation, the ambient TI was set to <inline-formula><mml:math id="M218" 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">6</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> for all flow cases. The layout optimization procedure is performed for each low-fidelity model, both with and without a blockage model, and for the engineering models in their original and recalibrated forms, using multiple optimization algorithms and random initial layouts. For cases without blockage, all three optimization algorithms, SLSQP, IPOPT, and SGD, are used, each initialized from the same set of five randomly generated layouts to enable a consistent comparison across algorithms.</p>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e6879"><bold>(a)</bold> Boundary constraint for the considered layout optimization. <bold>(b)</bold> Wind rose at the considered IEA 740-10-MW reference site.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f04.png"/>

        </fig>

      <p id="d2e6893">For cases including the blockage model, 10 random initial layouts are considered; however, only the SGD algorithm is used, as it is less memory-intensive than the other approaches due to batch sampling of the wind rose. From the resulting set of optimized layouts, the layout yielding the highest AEP is selected for each low-fidelity model and subsequently validated using RANS simulations, thereby limiting the total number of RANS cases to one per low-fidelity model.</p>
</sec>
<sec id="Ch1.S2.SS7">
  <label>2.7</label><title>Evaluation metrics</title>
      <p id="d2e6904">To evaluate the relative performance of the different models, quantitative measures are needed. In this work, we use the mean absolute percentage error (MAPE), the root mean square error (RMSE), the maximum absolute error (<inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>), and the error standard deviation (<inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>).
          

                <disp-formula id="Ch1.E36" specific-use="align" content-type="subnumberedsingle"><mml:math id="M221" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E36.37"><mml:mtd><mml:mtext>12a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>MAPE</mml:mtext><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><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:mfenced open="|" close="|"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>⋅</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E36.38"><mml:mtd><mml:mtext>12b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>RMSE</mml:mtext><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><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:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E36.39"><mml:mtd><mml:mtext>12c</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>E</mml:mi><mml:mtext>max</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mo>|</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>|</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E36.40"><mml:mtd><mml:mtext>12d</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>E</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfrac></mml:mstyle><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:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:mo>(</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Here <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the target wind speed for observation <inline-formula><mml:math id="M223" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> is the predicted wind speed, and <inline-formula><mml:math id="M225" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> is the total number of observations. In Eq. (<xref ref-type="disp-formula" rid="Ch1.E36.37"/>) the denominator uses the free-stream velocity <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> rather than <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, in order to avoid numerical issues in heavily waked regions, where low wind speeds can lead to disproportionately large relative errors. Conversely, this formulation prevents large errors in unwaked regions from being underrepresented in the overall metric.</p>
      <p id="d2e7253">For flow field comparisons, regions within 1 rotor diameter of the turbines are omitted, making the analysis domain (<inline-formula><mml:math id="M228" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula>) a subset of the whole flow domain (<inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mtext>flow</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>). The whole flow domain is the hub-height flow plane, with grid parameters provided in Table <xref ref-type="table" rid="T1"/> and shown in Fig. <xref ref-type="fig" rid="F2"/>.

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M230" display="block"><mml:mtable displaystyle="true"><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="normal">Ω</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic" mathsize="2.5em">{</mml:mo><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mtext>flow</mml:mtext></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo mathsize="2.0em">|</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt><mml:mo>≥</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mlabeledtr id="Ch1.E41"><mml:mtd><mml:mtext>13</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub><mml:mo mathsize="2.5em" mathvariant="italic">}</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          Where this subset is used, the metric will be marked with an <inline-formula><mml:math id="M231" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> subscript.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results and discussion</title>
      <p id="d2e7414">This section presents and discusses the results of the three studies introduced in Sect. <xref ref-type="sec" rid="Ch1.S2"/>. First, the recalibration of the two engineering models against the RANS single-wake dataset is reported. Next, the wind farm flow study compares the ANN surrogate and both the recalibrated and the originally calibrated engineering models against RANS across varying turbine counts and inter-turbine spacings and assesses their computational cost and memory requirements. Finally, the WFLO study validates optimized layouts obtained with each of the low-fidelity models against RANS-based AEP calculations.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Recalibration of wake models with RANS data</title>
      <p id="d2e7426">The recalibrated model parameters are summarized in Table <xref ref-type="table" rid="T7"/>, where the original parameter values are also included. Overall, the changes are not dramatic: the sign of each parameter is preserved. However, several parameters do show substantial numerical differences.</p>

<table-wrap id="T7" specific-use="star"><label>Table 7</label><caption><p id="d2e7434">Original and recalibrated parameters for the considered wake and blockage models.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="6">
     <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:colspec colnum="6" colname="col6" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col6" align="center">SG <xref ref-type="bibr" rid="bib1.bibx10" id="paren.93"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi>f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.1700</oasis:entry>
         <oasis:entry colname="col3">0.0050</oasis:entry>
         <oasis:entry colname="col4">0.2000</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M237" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.6800</oasis:entry>
         <oasis:entry colname="col6">2.4100</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.3332</oasis:entry>
         <oasis:entry colname="col3">0.0048</oasis:entry>
         <oasis:entry colname="col4">0.1625</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M238" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.4242</oasis:entry>
         <oasis:entry colname="col6">2.9034</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col6" align="center">TP <xref ref-type="bibr" rid="bib1.bibx42" id="paren.94"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M239" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">ϵ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T, lim</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.0400</oasis:entry>
         <oasis:entry colname="col3">1.5000</oasis:entry>
         <oasis:entry colname="col4">0.8000</oasis:entry>
         <oasis:entry colname="col5">0.2500</oasis:entry>
         <oasis:entry colname="col6">0.9990</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.2817</oasis:entry>
         <oasis:entry colname="col3">1.2016</oasis:entry>
         <oasis:entry colname="col4">3.1484</oasis:entry>
         <oasis:entry colname="col5">0.1421</oasis:entry>
         <oasis:entry colname="col6">0.7751</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col6" align="center">Blockage <xref ref-type="bibr" rid="bib1.bibx18" id="paren.95"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">α</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.8889</oasis:entry>
         <oasis:entry colname="col3">1.4142</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M248" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.672</oasis:entry>
         <oasis:entry colname="col5">0.4897</oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.6208</oasis:entry>
         <oasis:entry colname="col3">2.6617</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M249" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.5066</oasis:entry>
         <oasis:entry colname="col5">1.8932</oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M254" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>1.381</oasis:entry>
         <oasis:entry colname="col3">2.627</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M255" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>1.524</oasis:entry>
         <oasis:entry colname="col5">1.3360</oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M256" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>2.1531</oasis:entry>
         <oasis:entry colname="col3">2.0948</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M257" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>2.7612</oasis:entry>
         <oasis:entry colname="col5">2.9041</oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="T8"><label>Table 8</label><caption><p id="d2e7960">Metrics before and after recalibration for the two considered models.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col5" align="center">SG <xref ref-type="bibr" rid="bib1.bibx10" id="paren.96"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">RMSE</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">MAPE</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.0354</oasis:entry>
         <oasis:entry colname="col3">0.2224</oasis:entry>
         <oasis:entry colname="col4">0.0347</oasis:entry>
         <oasis:entry colname="col5">0.3460</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.0205</oasis:entry>
         <oasis:entry colname="col3">0.1588</oasis:entry>
         <oasis:entry colname="col4">0.0194</oasis:entry>
         <oasis:entry colname="col5">0.2005</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col5" align="center">TP <xref ref-type="bibr" rid="bib1.bibx42" id="paren.97"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">RMSE</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">MAPE</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.0716</oasis:entry>
         <oasis:entry colname="col3">0.2679</oasis:entry>
         <oasis:entry colname="col4">0.0681</oasis:entry>
         <oasis:entry colname="col5">0.6733</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.0167</oasis:entry>
         <oasis:entry colname="col3">0.2850</oasis:entry>
         <oasis:entry colname="col4">0.0165</oasis:entry>
         <oasis:entry colname="col5">0.1563</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry namest="col1" nameend="col5" align="center">Blockage <xref ref-type="bibr" rid="bib1.bibx18" id="paren.98"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">RMSE</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mtext>max</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>E</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">MAPE</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Orig.</oasis:entry>
         <oasis:entry colname="col2">0.0039</oasis:entry>
         <oasis:entry colname="col3">0.0131</oasis:entry>
         <oasis:entry colname="col4">0.0023</oasis:entry>
         <oasis:entry colname="col5">0.0500</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Recalib.</oasis:entry>
         <oasis:entry colname="col2">0.0019</oasis:entry>
         <oasis:entry colname="col3">0.0079</oasis:entry>
         <oasis:entry colname="col4">0.0018</oasis:entry>
         <oasis:entry colname="col5">0.0201</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e8224">For the SG model, most changes are relatively small, except for <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which increases from 0.17 to 0.33. This parameter governs the relationship between wake width and rotor thrust. Because the original calibration was based on a mix of experimental data, whereas the present work uses RANS data,  different thrust and wake-width characteristics are expected; therefore, a noticeable change in <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is expected.</p>
      <p id="d2e8249">For the TP model, the parameter <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> changes markedly from 0.80 to approximately 3.15. The parameters <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> impact the auxiliary variables <inline-formula><mml:math id="M269" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M270" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> in <xref ref-type="bibr" rid="bib1.bibx42" id="text.99"/>, which together act as replacements for both the ambient TI and <inline-formula><mml:math id="M271" 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> in the wake expansion formulation. The initial values for <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> were used from <xref ref-type="bibr" rid="bib1.bibx19" id="text.100"/> and the <xref ref-type="bibr" rid="bib1.bibx23" id="text.101"/>. The original value was derived from measurement data, whereas the present RANS simulations employ a fundamentally different turbulence formulation. Consequently, a substantial adjustment is required for consistency with the RANS flow. Note that the recalibrated <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T, lim</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of the TP model lies below the maximum <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:mrow></mml:math></inline-formula> of the DTU 10 MW thrust curve (0.9), so it acts as an active wake-shaping parameter at high thrust rather than only as a <inline-formula><mml:math id="M276" 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">1</mml:mn></mml:mrow></mml:math></inline-formula> safeguard. The SG model lacks an equivalent parameter, so the two configurations were not calibrated on a fully symmetric parameter set. Future comparisons should be mindful of this difference and treat the clip consistently across models. Furthermore, a lower value of both <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">ϵ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T, lim</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> makes the initial wake narrower for high <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> values above the limit. This tends to compensate for the higher <inline-formula><mml:math id="M280" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula> value, which leads to greater wake spreading.</p>
      <p id="d2e8446">In the self-similarity deficit blockage model, the polynomial-fit parameters <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mtext>nf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> also vary considerably. Because these coefficients describe a polynomial rather than a directly interpretable physical relationship, the practical implications of their changes are difficult to interpret. The parameters <inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, however, are more interpretable and show meaningful shifts. The parameter <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">λ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represents an offset in the linear rotor half-radius induction zone, introduced to correct for wind farm blockage effects – effects that are absent in the single-turbine RANS dataset used here. A significant change is therefore expected. The scaling factor <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which modulates the influence of the rotor half radius, is similarly affected.</p>
      <p id="d2e8538">In Table <xref ref-type="table" rid="T8"/>, error metrics are collected to compare results before and after recalibration. The error metrics in Table <xref ref-type="table" rid="T8"/> show improvements across all measures for the SG and blockage models. For the TP model, most metrics also improve, except for the maximum absolute error. This exception was surprising, but as the remaining metrics improved, it is expected that this was due to a large error near the rotor, where the self-similar far-wake assumption underlying the Gaussian deficit does not yet hold <xref ref-type="bibr" rid="bib1.bibx10" id="paren.102"/>. This idea is supported by inspecting the spatial distribution of the mean RMSE (averaged over inflow conditions) in Fig. <xref ref-type="fig" rid="F5"/>d, which indicates that the most significant errors occur immediately behind the turbine at <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F5"><label>Figure 5</label><caption><p id="d2e8566">Wake and blockage model calibration RMSE error maps.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f05.png"/>

        </fig>

      <p id="d2e8576">The overall takeaway from Fig. <xref ref-type="fig" rid="F5"/> is that the recalibrated models yield substantially improved performance, particularly outside the near wake. The TP model exhibits the greatest overall improvement, which aligns with expectations: the original TurbOPark model of <xref ref-type="bibr" rid="bib1.bibx41" id="text.103"/> was calibrated against wind farm flow data, encompassing both intra-farm and inter-farm wake interactions rather than isolated single wakes, and therefore requires the largest recalibration to perform well in the single-wake context evaluated here. By contrast, the original super-Gaussian model by <xref ref-type="bibr" rid="bib1.bibx10" id="text.104"/> was calibrated on single-wake data and requires comparatively little correction in this setting.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Wind farm flow study</title>
      <p id="d2e8595">The layouts introduced in Fig. <xref ref-type="fig" rid="F3"/> were evaluated with separation factors <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>wf</mml:mtext></mml:msub><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi>D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>D</mml:mi><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. Flow simulations were performed using all the available low-fidelity models (SG model, TP model, and the ANN), with the engineering models assessed in both recalibrated and original forms. To distinguish  the recalibrated models from the original models, a superscript (<sup>†</sup>) is used with the original models; e.g., SG<sup>†</sup> refers to the SG model with original parameters. Similarly, to distinguish between the models with and without blockage, a superscript (<sup>*</sup>) is used to indicate the inclusion of blockage; e.g., SG<sup>†*</sup> indicates the original SG model with blockage.</p>
      <p id="d2e8674">To quantify the accuracy of the lower-fidelity simulations, the RANS simulations described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/> were used as the reference ground truth. A masked flow domain, defined in Eq. (<xref ref-type="disp-formula" rid="Ch1.E41"/>), was applied to exclude the region immediately surrounding each turbine, as this region is irrelevant for optimization and does not represent a feasible turbine spacing. Figure <xref ref-type="fig" rid="F6"/> presents <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:msub><mml:mtext>MAPE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:msub><mml:mtext>RMSE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of the number of turbines <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mtext>wt</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, with mean values indicated by solid lines and bootstrapped <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:mn mathvariant="normal">95</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> confidence intervals shown as shaded regions. The ensemble mean is constructed from the considered inflow conditions, including wind directions, wind speeds, and ambient TIs.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e8731">Flow study result metrics for an increasing number of wind turbines, without a blockage model. <bold>(a–c)</bold> <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:msub><mml:mtext>RMSE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with recalibrated wake models, <bold>(d–f)</bold> <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:msub><mml:mtext>RMSE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the wake models with original parameters, <bold>(g–i)</bold> <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:msub><mml:mtext>MAPE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with recalibrated wake models, and <bold>(j–l)</bold> <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:msub><mml:mtext>MAPE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with wake models using the original parameters.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f06.png"/>

        </fig>

      <p id="d2e8798">Figure <xref ref-type="fig" rid="F6"/> presents the results for the models without blockage; for completeness, the metrics with blockage are reported in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.</p>
      <p id="d2e8805">The results show that the error consistently decreases as the separation factor increases. This trend reflects the increasing complexity of the wake interactions at smaller inter-turbine distances. In these regimes, near-wake dynamics violate key assumptions in simplified wake models, particularly the superposition of individual wakes, which becomes progressively less valid as group effects strengthen <xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx21" id="paren.105"><named-content content-type="pre">e.g.,</named-content></xref>. Simultaneously, the wake of a single turbine also behaves in a more complex manner in the near wake, further complicating the modeling of denser farms. Similarly, there is a shared trend of the error growing with the number of turbines, though at times it is subtle, which can be explained by the modeling error of superposing wakes, becoming increasingly problematic as the number of turbines increases. The trend in regard to the number of turbines is not as pronounced as for the separation factor; for interested readers, a version of Fig. <xref ref-type="fig" rid="F6"/> with a logarithmic axis is available in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/>. These trends between the error and the number of turbines and turbine density are observed for both the recalibrated and the original engineering models. It is also observed that the SG model with the lowest recalibration error is the one with the lowest error here, increasing confidence in the recalibration process.</p>
      <p id="d2e8817">Furthermore, calibration improves the engineering models across both configurations, reducing the mean error and the width of the confidence intervals, indicating improvements in accuracy and robustness across wind directions and inflow conditions. An exception occurs for the <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:msub><mml:mtext>MAPE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of the TP model at <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>wf</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, where calibration produces a lower mean error, but the confidence interval worsens. The reason is not immediately apparent, though it could be that the original model was intended for long-distance wakes and therefore produced consistent but poor results in the near wake, which would explain the poor performance.</p>
      <p id="d2e8848">Across all cases, the ANN-based surrogate outperforms the engineering models. Its superior performance is attributed to its ability to represent complex, spatially varying flow structures without relying on strong simplifying assumptions about wake behavior. This expressiveness enables the ANN to capture near-wake features with substantially higher fidelity, resulting in significantly lower errors than traditional engineering approaches.</p>
      <p id="d2e8851">In Fig. <xref ref-type="fig" rid="F7"/>, the computational cost and memory consumption are plotted against the number of wind turbines. Figure <xref ref-type="fig" rid="F7"/>a and b both show the computational cost, but in Fig. <xref ref-type="fig" rid="F7"/>a the cost is expressed in CPU hours (CPUh), meaning that only models executed on the CPU can be compared directly. CPU hours are calculated by multiplying the wall time (in hours) by the number of CPU cores used during the simulation, allowing for a fair comparison. The nodes used have 32 cores. The engineering models can be run on a single core, unlike the ANN, which by default uses all available cores. Figure <xref ref-type="fig" rid="F7"/>b, on the other hand, reports the real wall time in seconds, enabling direct comparison with the GPU-accelerated ANN. All simulations have been conducted on identical and exclusive nodes on the DTU cluster Sophia <xref ref-type="bibr" rid="bib1.bibx59" id="paren.106"/>.</p>

      <fig id="F7"><label>Figure 7</label><caption><p id="d2e8868">Average computational resource cost of a flow case for increasing wind farm sizes without inclusion of blockage. <bold>(a)</bold> Relative cost in CPU hours, <bold>(b)</bold> real-world cost in wall time (seconds), and <bold>(c)</bold> random access memory (RAM) consumption in MB.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f07.png"/>

        </fig>

      <p id="d2e8886">All the results are reported with a <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:mn mathvariant="normal">95</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> confidence interval, based on an ensemble over the inflow conditions (wind direction, wind speed, and ambient TIs) and separation factors <inline-formula><mml:math id="M306" display="inline"><mml:mrow><mml:msub><mml:mi>s</mml:mi><mml:mtext>wf</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. The confidence is quite high, indicating that the variation in computational resource requirements with respect to layout density and inflow conditions is low. The results are shown on a semi-logarithmic plot, which likely contributes to the appearance of increasing confidence; however, it is also expected to be low.</p>
      <p id="d2e8912">Figure <xref ref-type="fig" rid="F7"/>a shows that, in terms of CPUh, the fastest model is the SG model, followed by the TP model, with the ANN being the slowest. The ANN being the slowest is expected, as evaluating it requires multiple matrix multiplications, as described in Eq. (<xref ref-type="disp-formula" rid="Ch1.E31"/>), whereas the engineering models require far fewer computations. The TP model employs a Gaussian overlap for the rotor-averaging strategy, which requires additional flow evaluation and appears to increase its computational cost; however, this relative difference decreases as the number of turbines increases. In Fig. <xref ref-type="fig" rid="F7"/>b, we see that the real-time performance of the ANN improves significantly when GPU acceleration is enabled, placing it roughly on par with the TP model. Without GPU acceleration, however, the computational cost of the ANN is too high for applications such as WFLO, where many repeated evaluations would otherwise become prohibitively expensive.</p>
      <p id="d2e8921">The memory requirements of the considered models are similar, as shown in Fig. <xref ref-type="fig" rid="F7"/>c, except for the GPU-accelerated ANN, which requires more memory. However, as all models remain below <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>GB</mml:mtext></mml:mrow></mml:math></inline-formula> of RAM, this remains well within an acceptable range. The more pressing concern is the availability of GPU resources.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>WFLO study</title>
      <p id="d2e8945">A series of WFLO problems was solved using the optimization algorithms listed in Table <xref ref-type="table" rid="T6"/> for each engineering model, both recalibrated and original, as well as for the ANN model. All optimizations were executed on identical and exclusive nodes of the Sophia cluster <xref ref-type="bibr" rid="bib1.bibx59" id="paren.107"/> to ensure comparable runtime conditions. As PyWake at the time of writing does not support automatic GPU gradients, all optimizations have been performed using CPU resources only. Table <xref ref-type="table" rid="T9"/> summarizes the performance of different combinations of wake models and optimization algorithms. For each algorithm within a given model, the random seed that achieved the highest expected AEP is reported. To aid interpretation, the AEP value for the best-performing algorithm in each model is highlighted in bold.</p>

<table-wrap id="T9"><label>Table 9</label><caption><p id="d2e8958">AEP of the optimized layouts produced from the best-performing initial seeds. Results shown in bold indicate the optimization algorithm that achieved the highest AEP, selected for RANS validation.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">

         <oasis:entry namest="col1" nameend="col5" align="center">Low-fidelity AEP [<inline-formula><mml:math id="M309" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">GWh</mml:mi></mml:mrow></mml:math></inline-formula>] </oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>

         <oasis:entry rowsep="1" colname="col1" morerows="1">Method</oasis:entry>

         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center">w/o blockage </oasis:entry>

         <oasis:entry rowsep="1" colname="col5">with blockage</oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col2">SLSQP</oasis:entry>

         <oasis:entry colname="col3">IPOPT</oasis:entry>

         <oasis:entry colname="col4">SGD</oasis:entry>

         <oasis:entry colname="col5">SGD</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">SG</oasis:entry>

         <oasis:entry colname="col2">3049</oasis:entry>

         <oasis:entry colname="col3"><bold>3050</bold></oasis:entry>

         <oasis:entry colname="col4">3046</oasis:entry>

         <oasis:entry colname="col5"><bold>3058</bold></oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">SG<sup>†</sup></oasis:entry>

         <oasis:entry colname="col2"><bold>2972</bold></oasis:entry>

         <oasis:entry colname="col3">2966</oasis:entry>

         <oasis:entry colname="col4">2954</oasis:entry>

         <oasis:entry colname="col5"><bold>2969</bold></oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">TP</oasis:entry>

         <oasis:entry colname="col2"><bold>2974</bold></oasis:entry>

         <oasis:entry colname="col3">2968</oasis:entry>

         <oasis:entry colname="col4">2956</oasis:entry>

         <oasis:entry colname="col5"><bold>2958</bold></oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">TP<sup>†</sup></oasis:entry>

         <oasis:entry colname="col2"><bold>2750</bold></oasis:entry>

         <oasis:entry colname="col3">2747</oasis:entry>

         <oasis:entry colname="col4">2721</oasis:entry>

         <oasis:entry colname="col5"><bold>2739</bold></oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">ANN</oasis:entry>

         <oasis:entry colname="col2">3041</oasis:entry>

         <oasis:entry colname="col3"><bold>3042</bold></oasis:entry>

         <oasis:entry colname="col4">3040</oasis:entry>

         <oasis:entry colname="col5"><bold>3047</bold></oasis:entry>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e8961"><sup>†</sup> Model with original parameters.</p></table-wrap-foot></table-wrap>

      <p id="d2e9152">The results in Table <xref ref-type="table" rid="T9"/> are separated into cases with and without blockage. Only the SGD algorithm was used for cases with blockage due to the substantially higher memory consumption of these models. The batch sampling inherent to SGD makes it computationally less expensive, making it the only approach feasible at the required wind-rose resolution. Consequently, SGD results are used throughout for cases with blockage. A visualization of the obtained layouts is available in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>.</p>
      <p id="d2e9160">For AEP validation with RANS, one optimized layout was selected for each low-fidelity model, both with and without blockage, corresponding to the 10 results marked with bold in Table <xref ref-type="table" rid="T9"/>. Table <xref ref-type="table" rid="T10"/> presents the RANS AEP alongside the corresponding low-fidelity AEP and an accuracy estimate, together with key optimization metrics for assessing computational expense. The best-performing metrics in Table <xref ref-type="table" rid="T10"/> are highlighted in bold. The inclusion of blockage did not improve the accuracy of any model, despite its greater physical fidelity; however, it substantially increased the optimization cost by factors of between <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">20</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula>. The ANN was an exception, where the blockage case was cheaper; this could be because the IPOPT algorithm, which succeeded in the case without blockage, more aggressively explores the loss landscape than the SGD, which is known to be resistant to local minima.</p>

<table-wrap id="T10" specific-use="star"><label>Table 10</label><caption><p id="d2e9196">Comparison of RANS-validated AEP and optimization statistics for wind farm layouts generated using different wake models, evaluated with and without blockage. The best-performing values within each category are highlighted in bold.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="11">
     <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:colspec colnum="6" colname="col6" align="right" colsep="1"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:colspec colnum="8" colname="col8" align="right"/>
     <oasis:colspec colnum="9" colname="col9" align="right"/>
     <oasis:colspec colnum="10" colname="col10" align="right"/>
     <oasis:colspec colnum="11" colname="col11" align="right"/>
     <oasis:thead>
       <oasis:row>

         <oasis:entry rowsep="1" colname="col1" morerows="1">Metric</oasis:entry>

         <oasis:entry rowsep="1" namest="col2" nameend="col6" align="center" colsep="1">w/o blockage </oasis:entry>

         <oasis:entry rowsep="1" namest="col7" nameend="col11" align="center">with blockage </oasis:entry>

       </oasis:row>
       <oasis:row rowsep="1">

         <oasis:entry colname="col2">SG</oasis:entry>

         <oasis:entry colname="col3">SG<sup>†</sup></oasis:entry>

         <oasis:entry colname="col4">TP</oasis:entry>

         <oasis:entry colname="col5">TP<sup>†</sup></oasis:entry>

         <oasis:entry colname="col6">ANN</oasis:entry>

         <oasis:entry colname="col7">SG<sup>*</sup></oasis:entry>

         <oasis:entry colname="col8">SG<sup>†*</sup></oasis:entry>

         <oasis:entry colname="col9">TP<sup>*</sup></oasis:entry>

         <oasis:entry colname="col10">TP<sup>†*</sup></oasis:entry>

         <oasis:entry colname="col11">ANN<sup>*</sup></oasis:entry>

       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>

         <oasis:entry colname="col1">RANS AEP [GWh]</oasis:entry>

         <oasis:entry colname="col2">3083</oasis:entry>

         <oasis:entry colname="col3">3090</oasis:entry>

         <oasis:entry colname="col4"><bold>3093</bold></oasis:entry>

         <oasis:entry colname="col5">3091</oasis:entry>

         <oasis:entry colname="col6">3080</oasis:entry>

         <oasis:entry colname="col7"><bold>3092</bold></oasis:entry>

         <oasis:entry colname="col8">3091</oasis:entry>

         <oasis:entry colname="col9">3091</oasis:entry>

         <oasis:entry colname="col10">3088</oasis:entry>

         <oasis:entry colname="col11">3089</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Low-fidelity AEP [GWh]</oasis:entry>

         <oasis:entry colname="col2">3050</oasis:entry>

         <oasis:entry colname="col3">2972</oasis:entry>

         <oasis:entry colname="col4">2974</oasis:entry>

         <oasis:entry colname="col5">2750</oasis:entry>

         <oasis:entry colname="col6">3042</oasis:entry>

         <oasis:entry colname="col7">3058</oasis:entry>

         <oasis:entry colname="col8">2969</oasis:entry>

         <oasis:entry colname="col9">2958</oasis:entry>

         <oasis:entry colname="col10">2739</oasis:entry>

         <oasis:entry colname="col11">3047</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Low-fidelity acc. [<inline-formula><mml:math id="M323" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of RANS]</oasis:entry>

         <oasis:entry colname="col2"><bold>98.92</bold></oasis:entry>

         <oasis:entry colname="col3">96.18</oasis:entry>

         <oasis:entry colname="col4">96.16</oasis:entry>

         <oasis:entry colname="col5">88.98</oasis:entry>

         <oasis:entry colname="col6">98.75</oasis:entry>

         <oasis:entry colname="col7"><bold>98.9</bold></oasis:entry>

         <oasis:entry colname="col8">96.04</oasis:entry>

         <oasis:entry colname="col9">95.71</oasis:entry>

         <oasis:entry colname="col10">88.7</oasis:entry>

         <oasis:entry colname="col11">98.67</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Opt. alg.</oasis:entry>

         <oasis:entry colname="col2">IPOPT</oasis:entry>

         <oasis:entry colname="col3">SLSQP</oasis:entry>

         <oasis:entry colname="col4">SLSQP</oasis:entry>

         <oasis:entry colname="col5">SLSQP</oasis:entry>

         <oasis:entry colname="col6">IPOPT</oasis:entry>

         <oasis:entry colname="col7">SGD</oasis:entry>

         <oasis:entry colname="col8">SGD</oasis:entry>

         <oasis:entry colname="col9">SGD</oasis:entry>

         <oasis:entry colname="col10">SGD</oasis:entry>

         <oasis:entry colname="col11">SGD</oasis:entry>

       </oasis:row>
       <oasis:row>

         <oasis:entry colname="col1">Wall time [h]</oasis:entry>

         <oasis:entry colname="col2">4.513</oasis:entry>

         <oasis:entry colname="col3"><bold>0.4275</bold></oasis:entry>

         <oasis:entry colname="col4">0.6851</oasis:entry>

         <oasis:entry colname="col5">0.5117</oasis:entry>

         <oasis:entry colname="col6">159.1</oasis:entry>

         <oasis:entry colname="col7">28.29</oasis:entry>

         <oasis:entry colname="col8">10.17</oasis:entry>

         <oasis:entry colname="col9">13.62</oasis:entry>

         <oasis:entry colname="col10"><bold>7.423</bold></oasis:entry>

         <oasis:entry colname="col11">92.54</oasis:entry>

       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table><table-wrap-foot><p id="d2e9199"><sup>†</sup> Model with original parameters. <sup>*</sup> Model with blockage effects included.</p></table-wrap-foot></table-wrap>

      <p id="d2e9561">The TP model produced the layout with the highest RANS AEP, despite being the least accurate in predicting RANS AEP from its low-fidelity estimate, excluding models using original parameters. This outcome is somewhat unexpected given that the recalibrated models and ANN were tuned against RANS data, making RANS the designated ground-truth reference in this study. By contrast, the SG model reproduced the RANS AEP most accurately, followed closely by the ANN, with TP trailing behind significantly. Hence, the ability to reproduce the RANS AEP accurately was not correlated with the ability to find the highest RANS AEP layout through optimization in this study.</p>
      <p id="d2e9564">One possible explanation for this behavior is that the issue arises as an artifact of the optimization process. To investigate this, we first examine whether, among the layouts previously studied in RANS, the layout obtained using each low-fidelity model represents the best layout that the model could theoretically produce. To test this hypothesis, a cross-comparison is performed in which the AEP is calculated using each low-fidelity model for all layouts evaluated with RANS. In Fig. <xref ref-type="fig" rid="F8"/>, the results of this cross-comparison are presented as a heatmap showing the change in AEP (<inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula>) relative to the default optimized model–layout pair. Entries with positive <inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula> in a given model row therefore indicate that a better layout exists compared to the one obtained during optimization. As illustrated in Fig. <xref ref-type="fig" rid="F8"/>, significant improvements in AEP can be achieved for both the SG model and the ANN without blockage, whereas for the TP model, no better layout is available. In cases with blockage, however, there is a single better layout for the TP<sup>*</sup> model: the one generated by the TP model without blockage. This difference is marginal and not systematic: TP<sup>*</sup> is the only blockage case for which a better layout exists, whereas, without blockage, better layouts were available for the SG model and the ANN. As all blockage configurations use the same flow model and optimization algorithm, this isolated difference cannot be firmly attributed to any one reason, and it is suggested that further research investigate this.</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e9612">Cross-comparison of <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula> for layouts optimized by different low-fidelity models, showing changes relative to each model's default layout. Each row corresponds to a distinct model used to compute AEP. Each column corresponds to a distinct layout generated by optimizing with a selected model.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f08.png"/>

        </fig>

      <p id="d2e9632">According to the data in Table <xref ref-type="table" rid="T10"/>, a trend appears indicating that the SG model and ANN produce more accurate AEP estimates than the TP model. To determine whether this trend holds more generally, the accuracy of the low-fidelity models is assessed by comparing their AEP estimates with the RANS AEP for all available layouts. This comparison is presented in Fig. <xref ref-type="fig" rid="F9"/>, where additional aggregated metrics for each row have been included, along with a model podium to easily identify the models most closely matching RANS predictions for each layout. As shown in Fig. <xref ref-type="fig" rid="F9"/>, the hierarchy of models in terms of AEP estimation accuracy places the TP model in third position. In contrast, the SG model and ANN compete for first place, with the SG model ultimately emerging as the most accurate. Both the SG model and the ANN are more advanced than the TP model. The SG model incorporates a transition from a top-hat shape in the near wake to a Gaussian profile in the far wake, addressing limitations of a fully Gaussian wake. In contrast, the ANN is substantially more expressive than the engineering models, with more than 28 000 tunable parameters compared to fewer than 10. While this analysis highlights differences in AEP estimation accuracy, the WFLO results reveal that accuracy alone does not guarantee optimal layouts. In fact, the recalibrated TP model produced the best layouts in our WFLO experiment, despite demonstrating the lowest accuracy among the recalibrated models.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e9643">Comparison of AEP estimates from low-fidelity models against RANS for all layouts. Each row corresponds to a distinct model used to compute AEP. Each column corresponds to a distinct layout, which are the same layouts considered in Fig. <xref ref-type="fig" rid="F8"/>. The colors show the relative difference between the RANS-computed AEP and model-computed AEP associated with each layout. Podium rows indicate the top three models that most closely matched RANS predictions for each layout, while additional columns report aggregated metrics.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f09.png"/>

        </fig>

      <p id="d2e9654">The TP model achieved strong RANS AEP-validated performance despite having lower AEP accuracy than the SG and ANN models. This was the first indication we observed that AEP accuracy, while important, is not the only critical factor in achieving an optimal layout. Further investigation across all RANS-validated layouts confirmed this pattern: the SG and ANN models consistently showed higher AEP accuracy, yet they did not yield the best layouts during WFLO. These observations are based on experiments with a limited number of initial random seeds, so while the results indicate that the TP model performs better, further experiments would strengthen this conclusion. That said, since computational resources are inherently limited in WFLO applications, this represents a realistic scenario for ANN-based optimization, and the TP model demonstrates better performance even under these practical constraints.</p>
      <p id="d2e9657">This insight raises two questions: why might a less accurate model be advantageous during optimization, and is this behavior systematic? Although a definitive answer remains elusive, we hypothesize that increased model fidelity in wake representations induces greater multimodality in the objective function geometry. As turbine–turbine interactions and the resulting flow become more complex, the relationship between turbine placement and AEP becomes correspondingly more complex. This complexity amplifies both the number and the sharpness of local extrema, complicating the optimization problem and increasing the likelihood that gradient-based methods become trapped in local minima.</p>
      <p id="d2e9660">Multimodality has been examined in a recent paper by <xref ref-type="bibr" rid="bib1.bibx49" id="text.108"/>, which investigated its prevalence in circular farms and applied a smoothing strategy proposed by <xref ref-type="bibr" rid="bib1.bibx61" id="text.109"/>. Although limited to relatively small and simple farms, the study establishes a correlation between farm size and multimodality. Simultaneously, they demonstrated that the mitigation strategy could reduce the modality of the objective function's geometry.</p>
      <p id="d2e9670">Earlier work by <xref ref-type="bibr" rid="bib1.bibx57" id="text.110"/> suggested reparameterizing wind farm layouts using the boundary-grid (BG) approach, which places turbines along the farm boundary. This assumption does not generally hold, as it ignores electrical infrastructure during optimization. Nonetheless, reducing multimodality by reducing the number of design variables remains a sound approach, as it can preserve AEP accuracy while making local minima easier to avoid.</p>
      <p id="d2e9676">An alternative approach, aligned with our hypothesis that complex wake modeling increases multimodality, is to simplify flow models. <xref ref-type="bibr" rid="bib1.bibx60" id="text.111"/> developed a wake model with an adaptable spread, enabling artificially smeared wakes during early optimization. Smearing of wakes reduces locally unwaked areas and lowers the number of local minima. As convergence nears, the wake spread is gradually removed, allowing final optimization with the original wake model. Another method is the FLOWERS analytical AEP model by <xref ref-type="bibr" rid="bib1.bibx33" id="text.112"/>, which further simplifies classical assumptions by considering a single-turbine operating condition, a constant wake expansion, a unified wind speed per directional bin, and a Fourier series approximation of wind directions. These simplifications enable an analytical AEP expression and significantly reduce the degree of multimodality.</p>
      <p id="d2e9685">To investigate this hypothesis, an experiment to visualize the multimodality of the objective function was conducted. Unfortunately, the admittedly limited experiment only showed a slight indication that the TP model produces lower multimodality. Therefore, the experiment has been documented but moved to Appendix <xref ref-type="sec" rid="App1.Ch1.S4"/> as further studies are required to reach a definitive conclusion on the matter.</p>
</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Conclusions</title>
      <p id="d2e9699">This study systematically validated an ANN-based surrogate model against two representative engineering models for wind farm flow simulation and WFLO. The main findings can be summarized as follows: <list list-type="order"><list-item>
      <p id="d2e9704"><italic>Recalibration of engineering models.</italic> Bayesian optimization using RANS-based single-wake data significantly improved both engineering models, most notably in the near-wake region, reducing RMSE and MAPE relative to the original configurations.</p></list-item><list-item>
      <p id="d2e9710"><italic>Flow simulation performance.</italic> Across all tested layouts and inflow conditions, the ANN surrogate consistently outperformed the engineering models in <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:msub><mml:mtext>RMSE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:msub><mml:mtext>MAPE</mml:mtext><mml:mi mathvariant="normal">Ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, owing to its ability to represent complex spatial flow structures. This higher fidelity comes at a greater computational cost, though GPU acceleration yields an <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mo>∼</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> speed-up for larger farms.</p></list-item><list-item>
      <p id="d2e9750"><italic>WFLO results and optimization behavior.</italic> Despite lower AEP prediction accuracy, the recalibrated TP model produced the layouts with the highest RANS-validated AEP, whereas the more accurate SG model and ANN surrogate did not yield the best-performing layouts. This suggests that higher model fidelity may add complexity to the optimization landscape, hindering convergence of gradient-based algorithms, so that simpler models can occasionally yield layouts of higher realized AEP. This effect may be mitigated by considering more initial seeds, but given the cost of running the ANN model, this will likely be too costly in the current configuration. Including blockage effects did not improve AEP prediction accuracy or layout performance and substantially increased computational cost.</p></list-item></list> Further research should investigate the multimodality of the WFLO problem more thoroughly, particularly when using high-fidelity surrogates, including formally characterizing the convexity of the optimization landscapes associated with different wake models and conducting sensitivity analyses of optimal layout AEP with respect to wake model parameters.</p>
      <p id="d2e9756">Minimizing the impact of multimodality could be achieved by focusing on multifidelity by employing simplified wake models in early iterations to reduce the impact initially, followed by high-fidelity surrogates for final convergence. An investigation into whether ANN-based optimization can improve upon layouts generated by simpler models, such as the TP model, could further provide insight into the practical benefits of high-fidelity surrogates.</p>
      <p id="d2e9760">The engineering model configurations explored in this work represent only a small subset of the combinations available in the literature, and further expanding this scope would strengthen the study, including considering additional wake models, superposition methods, blockage models, added-TI models, rotor-averaging strategies, etc.</p>
      <p id="d2e9763">Finally, improving scalability with trust-region methods and extending validation to larger farms and broader inflow conditions will strengthen the applicability of surrogate-based optimization in real-world settings.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Flow study with blockage</title>

      <fig id="FA1"><label>Figure A1</label><caption><p id="d2e9781">Flow study result metrics for an increasing number of wind turbines, with a blockage model. <bold>(a–c)</bold> RMSE with calibrated wake models, <bold>(d–f)</bold> RMSE with uncalibrated wake models, <bold>(g–i)</bold> MAPE with calibrated wake models, and <bold>(j–l)</bold> MAPE with uncalibrated wake models.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f10.png"/>

      </fig>

      <fig id="FA2"><label>Figure A2</label><caption><p id="d2e9806">Average computational resource cost of a flow case for increasing wind farm sizes with inclusion of blockage. <bold>(a)</bold> Relative cost in CPU hours, <bold>(b)</bold> real-world cost in wall time (seconds), and <bold>(c)</bold> random access memory (RAM) consumption in MB.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f11.png"/>

      </fig>


</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Layouts obtained during WFLO</title>

      <fig id="FB1"><label>Figure B1</label><caption><p id="d2e9838">Initial and final layouts obtained through WFLO.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f12.png"/>

      </fig>


</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Flow study without blockage displayed on log scale</title>

      <fig id="FC1"><label>Figure C1</label><caption><p id="d2e9861">Flow study result metrics for an increasing number of wind turbines without a blockage model, displayed on a semi-logarithmic axis. Containing the same data as  Fig. <xref ref-type="fig" rid="F6"/>.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f13.png"/>

      </fig>

</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>Multimodality experiment</title>

      <fig id="FD1"><label>Figure D1</label><caption><p id="d2e9884">Objective function maps illustrating the normalized AEP improvement <inline-formula><mml:math id="M332" display="inline"><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for the calibrated low-fidelity models without blockage: <bold>(a)</bold> SG model, <bold>(b)</bold> TP model, and <bold>(c)</bold> ANN model with a cross-plane profile for all models <bold>(d)</bold> at <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>≈</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> and <bold>(e)</bold> at <inline-formula><mml:math id="M334" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2845/2026/wes-11-2845-2026-f14.png"/>

      </fig>

      <p id="d2e9958">We investigated the hypothesis that the improved RANS AEP obtained using the TP model correlates with a lower degree of multimodality in the objective function. To do so, the SG, TP, and ANN models were employed to evaluate the improvement in AEP (<inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula>) that could be achieved by adding a turbine to the best-performing layout obtained with the TP model by systematically assessing the addition of the turbine at different locations throughout the farm. In practice, a grid was constructed with a density of one grid point per <inline-formula><mml:math id="M336" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>, and the AEP improvement (<inline-formula><mml:math id="M337" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula>) was then evaluated for every possible location the additional turbine could be placed in the grid.</p>
      <p id="d2e9989">Because the ranges vary significantly, which obscures the perceived smoothness of the objective function map, <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow></mml:math></inline-formula> is min–max normalized independently for each observation, placing all the results within a range of 0–1:

              <disp-formula id="App1.Ch1.S4.E42" content-type="numbered"><label>D1</label><mml:math id="M339" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mo>min⁡</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mo>max⁡</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e10089">The resulting objective function maps, illustrating <inline-formula><mml:math id="M340" display="inline"><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, are shown in Fig. <xref ref-type="fig" rid="FD1"/>. Additionally, two extra subplots are included,  showing <inline-formula><mml:math id="M341" display="inline"><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> at <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>≈</mml:mo><mml:mo>±</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> for all three models in one plot at a time.</p>
      <p id="d2e10136">Figure <xref ref-type="fig" rid="FD1"/>a–c illustrate that there is slightly less variability in the range of <inline-formula><mml:math id="M343" display="inline"><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for the TP model compared to the other two models.  In Fig. <xref ref-type="fig" rid="FD1"/>d and e, the cross-plane <inline-formula><mml:math id="M344" display="inline"><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mtext>AEP</mml:mtext></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> is visualized. Here, the differences between the models are subtle: the TP model shows marginally smoother variations, with fewer extreme peaks and valleys, compared to SG and ANN, but the overall patterns remain broadly similar. As this can be difficult to see visually, SD (<inline-formula><mml:math id="M345" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula>) values are displayed in Fig. <xref ref-type="fig" rid="FD1"/>d and e to quantify the variability in each cross-section. Lower values of <inline-formula><mml:math id="M346" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula> indicate smoother objective function landscapes. Here, the TP model consistently shows the lowest <inline-formula><mml:math id="M347" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula>, supporting the observation of reduced multimodality.</p>
</app>
  </app-group><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e10197">The code associated with this publication is publicly available at <uri>https://gitlab.windenergy.dtu.dk/surrogate-validation-study</uri> (last access: 3 August 2026). Because PyWakeEllipsys requires access to the closed-source Ellipsys3D solver, the flow data generated with it have been archived separately at <ext-link xlink:href="https://doi.org/10.5281/zenodo.18305003" ext-link-type="DOI">10.5281/zenodo.18305003</ext-link>. The RANS single-wake database used to calibrate the engineering wake models has been published previously and is available at <uri>https://gitlab.windenergy.dtu.dk/TOPFARM/pywake_ranslut/-/tree/v0.3</uri> (last access: 3 August 2026).</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e10212">JPS, ES, and PER conceived the research; ES programmed the ANN model to the PyWake interface and ran the PyWake simulations and TopFarm optimizations; MPvdL simulated the RANS data; JQ performed the engineering model recalibration; JPS created layouts, performed post-processing, carried out plotting, and analyzed the results; JPS and PER supervised the work; JPS wrote the original draft; and JPS, ES, JQ, MPvdL, and PER reviewed the draft.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e10218">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="d2e10224">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e10230">In preparing this paper and the associated code, the following AI tools were used for proofreading, code development, and auto-completion: ChatGPT, Claude, Grammarly, Claude Code, and GitHub co-pilot. Model training was performed on the Sophia cluster <xref ref-type="bibr" rid="bib1.bibx59" id="paren.113"/>.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e10238">This work is partially funded by the Joint Assessment of Models for Wind Energy project (Energy Technology Development and Demonstration Programme, project number 134242-521856).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Ainslie(1988)</label><mixed-citation>Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J. Wind Eng. Ind. Aerod., 27, 213–224, <ext-link xlink:href="https://doi.org/10.1016/0167-6105(88)90037-2" ext-link-type="DOI">10.1016/0167-6105(88)90037-2</ext-link>, 1988.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Anagnostopoulos and Piggott(2022)</label><mixed-citation>Anagnostopoulos, S. and Piggott, M.: Offshore wind farm wake modelling using deep feed forward neural networks for active yaw control and layout optimisation, J. Phys. Conf. Ser., 2151, 012011, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2151/1/012011" ext-link-type="DOI">10.1088/1742-6596/2151/1/012011</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Andersen and Leon(2022)</label><mixed-citation>Andersen, S. J. and Murcia Leon, J. P.: Predictive and stochastic reduced-order modeling of wind turbine wake dynamics, Wind Energ. Sci., 7, 2117–2133, <ext-link xlink:href="https://doi.org/10.5194/wes-7-2117-2022" ext-link-type="DOI">10.5194/wes-7-2117-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Andersen et al.(2014)</label><mixed-citation>Andersen, S. J., Sørensen, J. N., Ivanell, S., and Mikkelsen, R. F.: Comparison of engineering wake models with CFD simulations, J. Phys. Conf. Ser., 524, 012161, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/524/1/012161" ext-link-type="DOI">10.1088/1742-6596/524/1/012161</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bak et al.(2013)</label><mixed-citation>Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L. C., Hansen, M. H., Blasques, J. P. A. A., Gaunaa, M., and Natarajan, A.: The DTU 10-MW reference wind turbine, in: Danish Wind Power Research, <uri>https://orbit.dtu.dk/en/publications/the-dtu-10-mw-reference-wind-turbine/</uri> (last access: 3 August 2026), 2013.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Baker et al.(2019)</label><mixed-citation>Baker, N. F., Stanley, A. P., Thomas, J. J., Ning, A., and Dykes, K.: Best practices for wake model and optimization algorithm selection in wind farm layout optimization, in: AIAA Scitech 2019 Forum, American Institute of Aeronautics and Astronautics, <ext-link xlink:href="https://doi.org/10.2514/6.2019-0540" ext-link-type="DOI">10.2514/6.2019-0540</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx7"><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, <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"><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, <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"><label>Bleeg et al.(2018)</label><mixed-citation>Bleeg, J., Purcell, M., Ruisi, R., and Traiger, E.: Wind farm blockage and the consequences of neglecting its impact on energy production, Energies, 11, 1609, <ext-link xlink:href="https://doi.org/10.3390/en11061609" ext-link-type="DOI">10.3390/en11061609</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Blondel and Cathelain(2020)</label><mixed-citation>Blondel, F. and Cathelain, M.: An alternative form of the super-Gaussian wind turbine wake model, Wind Energ. Sci., 5, 1225–1236, <ext-link xlink:href="https://doi.org/10.5194/wes-5-1225-2020" ext-link-type="DOI">10.5194/wes-5-1225-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Bodini et al.(2026)</label><mixed-citation>Bodini, N., Moriarty, P., Thedin, R., Doubrawa, P., Archer, C., Blaylock, M., Bottasso, C., Carmo, B., Cheung, L., Dubreuil, C., Floors, R., Herges, T., Houck, D., Kanjari, A., Kaul, C. M., Kelley, C., LI, R., Lundquist, J. K., Major, D., Nguyen, A. K., Optis, M., Parada, L. R. C., Peña, A., Quick, J., Ricarte, D., Radünz, W. C., Rai, R. K., Garcia Santiago, O., Schulte, J., Seim, K. S., van der Laan, M. P., Vimalakanthan, K., and Wise, A.: The AWAKEN wind farm benchmark, Part 2: Modeling results, Wind Energ. Sci. Discuss. [preprint], <ext-link xlink:href="https://doi.org/10.5194/wes-2026-34" ext-link-type="DOI">10.5194/wes-2026-34</ext-link>, in review, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Bortolotti et al.(2022)</label><mixed-citation>Bortolotti, P., Bay, C., Barter, G., Gaertner, E., Dykes, K., McWilliam, M., Friis-Moller, M., Pedersen, M. M., and Zahle, F.: System Modeling Frameworks for Wind Turbines and Plants: Review and Requirements Specifications, Tech. rep., National Renewable Energy Laboratory (NREL), <ext-link xlink:href="https://doi.org/10.2172/1868328" ext-link-type="DOI">10.2172/1868328</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Crespo and Hernández(1996)</label><mixed-citation> Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Criado Risco et al.(2023)</label><mixed-citation>Criado Risco, J., van der Laan, M. P., Pedersen, M. M., Meyer Forsting, A., and Réthoré, P.-E.: A RANS-based surrogate model for simulating wind turbine interaction, J. Phys. Conf. Ser., 2505, 012016, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2505/1/012016" ext-link-type="DOI">10.1088/1742-6596/2505/1/012016</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Dar et al.(2019)</label><mixed-citation>Dar, A. S., Berg, J., Troldborg, N., and Patton, E. G.: On the self-similarity of wind turbine wakes in a complex terrain using large eddy simulation, Wind Energ. Sci., 4, 633–644, <ext-link xlink:href="https://doi.org/10.5194/wes-4-633-2019" ext-link-type="DOI">10.5194/wes-4-633-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Dong et al.(2026)</label><mixed-citation>Dong, G., Qin, J., Wu, C., Xu, C., and Yang, X.: Reinforcement learning-enhanced genetic algorithm for wind farm layout optimization, Renew. Energ., 259, 125093, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2025.125093" ext-link-type="DOI">10.1016/j.renene.2025.125093</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>DTU Wind and Energy Systems(2023)</label><mixed-citation>DTU Wind and Energy Systems: PyWakeEllipSys v5.3, <uri>https://topfarm.pages.windenergy.dtu.dk/cuttingedge/pywake/pywake_ellipsys</uri> (last access: 27 May 2025), 2023.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Forsting et al.(2023)</label><mixed-citation>Forsting, A. R. M., Diaz, G. P. N., Segalini, A., Andersen, S. J., and Ivanell, S.: On the accuracy of predicting wind-farm blockage, Renew. Energ., 214, 114–129, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2023.05.129" ext-link-type="DOI">10.1016/j.renene.2023.05.129</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Frandsen(2005)</label><mixed-citation> Frandsen, S.: Turbulence and turbulence-generated structural loading in wind turbine clusters – Risoe-R No. 1188(EN), Tech. rep., Forskningscenter Risoe, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Gafoor et al.(2025)</label><mixed-citation>Gafoor, A., Boya, S. K., Jinka, R., Gupta, A., Tyagi, A., Sarkar, S., and Subramani, D. N.: A physics-informed neural network for turbulent wake simulations behind wind turbines, Phys. Fluids, 37, <ext-link xlink:href="https://doi.org/10.1063/5.0245113" ext-link-type="DOI">10.1063/5.0245113</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Gunn et al.(2016)</label><mixed-citation>Gunn, K., Stock-Williams, C., Burke, M., Willden, R., Vogel, C., Hunter, W., Stallard, T., Robinson, N., and Schmidt, S. R.: Limitations to the validity of single wake superposition in wind farm yield assessment, J. Phys. Conf. Ser., 749, 012003, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/749/1/012003" ext-link-type="DOI">10.1088/1742-6596/749/1/012003</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Herbert-Acero et al.(2014)</label><mixed-citation>Herbert-Acero, J., Probst, O., Réthoré, P.-E., Larsen, G., and Castillo-Villar, K.: A review of methodological approaches for the design and optimization of wind farms, Energies, 7, 6930–7016, <ext-link xlink:href="https://doi.org/10.3390/en7116930" ext-link-type="DOI">10.3390/en7116930</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>IEC(2010)</label><mixed-citation>IEC: IEC 61400-1 ed. 3 Wind turbines-Part 1: Design requirements, International Standard, <uri>https://standards.iteh.ai/catalog/standards/sist/c065aa89-0f3c-4c31-8817-6bdec19e47eb/iec-</uri> (last access: 3 August 2026), 2010.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Jensen(1983)</label><mixed-citation> Jensen, N. O.: A note on wind generator interaction – RISØ-M-2411, Tech. rep., Risø National Laboratories, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Kainz et al.(2024)</label><mixed-citation>Kainz, S., Quick, J., de Alencar, M. S., Moreno, S. S. P., Dykes, K., Bay, C., Zaaijer, M. B., and Bortolotti, P.: The IEA Wind 740-10-MW Reference Offshore Wind Plants, Tech. rep., IEA Task 55, <uri>https://github.com/IEAWindTask37/IEA-Wind-740-10-ROWP</uri> (last access: 3 August 2026), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Klemmer and Howland(2025)</label><mixed-citation>Klemmer, K. S. and Howland, M. F.: Wake turbulence modeling in stratified atmospheric flows using a novel <inline-formula><mml:math id="M348" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>-<inline-formula><mml:math id="M349" display="inline"><mml:mi>l</mml:mi></mml:math></inline-formula> model, J. Renew. Sustain. Ener., 17, <ext-link xlink:href="https://doi.org/10.1063/5.0249278" ext-link-type="DOI">10.1063/5.0249278</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Kraft(1988)</label><mixed-citation> Kraft, D.: A software package for sequential quadratic programming. DFVLR-FB 88-28, Tech. rep., Institut für Dynamik der Flugsysteme, Deutsche Forschungs- und Versuchsanstalt für Luft- und Raumfahrt (DFVLR), 1988.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Lanzilao and Meyers(2022)</label><mixed-citation>Lanzilao, L. and Meyers, J.: A new wake-merging method for wind-farm power prediction in the presence of heterogeneous background velocity fields, Wind Energy, 25, 237–259, <ext-link xlink:href="https://doi.org/10.1002/we.2669" ext-link-type="DOI">10.1002/we.2669</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Li et al.(2024a)</label><mixed-citation>Li, B., Ge, M., Li, X., and Liu, Y.: A physics-guided machine learning framework for real-time dynamic wake prediction of wind turbines, Phys. Fluids, 36, <ext-link xlink:href="https://doi.org/10.1063/5.0194764" ext-link-type="DOI">10.1063/5.0194764</ext-link>, 2024a.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Li et al.(2024b)</label><mixed-citation>Li, H., Yang, Q., and Li, T.: Wind turbine wake prediction modelling based on transformer-mixed conditional generative adversarial network, Energy, 291, 130403, <ext-link xlink:href="https://doi.org/10.1016/j.energy.2024.130403" ext-link-type="DOI">10.1016/j.energy.2024.130403</ext-link>, 2024b.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Liu et al.(2025)</label><mixed-citation>Liu, S., Li, Q., Lu, B., and He, J.: Prediction of offshore wind turbine wake and output power using large eddy simulation and convolutional neural network, Energ. Convers. Manage., 324, 119326, <ext-link xlink:href="https://doi.org/10.1016/j.enconman.2024.119326" ext-link-type="DOI">10.1016/j.enconman.2024.119326</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Liu et al.(2026)</label><mixed-citation>Liu, X., Li, Z., and Yang, X.: PhyWakeNet: a dynamic wake model accounting for aerodynamic force oscillations, Wind Energ. Sci., 11, 771–793, <ext-link xlink:href="https://doi.org/10.5194/wes-11-771-2026" ext-link-type="DOI">10.5194/wes-11-771-2026</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>LoCascio et al.(2024)</label><mixed-citation>LoCascio, M. J., Bay, C. J., Martínez Tossas, L. A., Bastankhah, M., and Gorlé, C.: FLOWERS AEP: an analytical model for wind farm layout optimization, Wind Energy, 27, 1563–1580, <ext-link xlink:href="https://doi.org/10.1002/we.2954" ext-link-type="DOI">10.1002/we.2954</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Madsen et al.(2020)</label><mixed-citation>Madsen, H. A., Larsen, T. J., Pirrung, G. R., Li, A., and Zahle, F.: Implementation of the blade element momentum model on a polar grid and its aeroelastic load impact, Wind Energ. Sci., 5, 1–27, <ext-link xlink:href="https://doi.org/10.5194/wes-5-1-2020" ext-link-type="DOI">10.5194/wes-5-1-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Martínez-Tossas et al.(2019)</label><mixed-citation>Martínez-Tossas, L. A., Annoni, J., Fleming, P. A., 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.bibx36"><label>Michelsen(1992)</label><mixed-citation> Michelsen, J. A.: Basis3D – a platform for development of multiblock PDE solvers, Tech. rep., AFM 92-05, DTU, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Moreno et al.(2025)</label><mixed-citation>Céspedes Moreno, J. F., Murcia León, J. P., and Andersen, S. J.: Convergence and efficiency of global bases using proper orthogonal decomposition for capturing wind turbine wake aerodynamics, Wind Energ. Sci., 10, 597–611, <ext-link xlink:href="https://doi.org/10.5194/wes-10-597-2025" ext-link-type="DOI">10.5194/wes-10-597-2025</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Mosetti et al.(1994)</label><mixed-citation>Mosetti, G., Poloni, C., and Diviacco, B.: Optimization of wind turbine positioning in large windfarms by means of a genetic algorithm, J. Wind Eng. Ind. Aerod., <ext-link xlink:href="https://doi.org/10.1016/0167-6105(94)90080-9" ext-link-type="DOI">10.1016/0167-6105(94)90080-9</ext-link>, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx39"><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, <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.bibx40"><label>Nogueira(2014)</label><mixed-citation>Nogueira, F.: Bayesian Optimization: Open source constrained global optimization tool for Python, <uri>https://github.com/bayesian-optimization/BayesianOptimization</uri> (last access: 3 August 2026), 2014.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Nygaard et al.(2020)</label><mixed-citation>Nygaard, N. G., Steen, S. T., Poulsen, L., and Pedersen, J. G.: Modelling cluster wakes and wind farm blockage, J. Phys. Conf. Ser., 1618, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1618/6/062072" ext-link-type="DOI">10.1088/1742-6596/1618/6/062072</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Nygaard et al.(2022)</label><mixed-citation>Nygaard, N. G., Pedersen, J. G., Hansen, S. D., and Krastins, P.: A Turbulence Optimized Park model, Tech. rep., Ørsted, <uri>https://github.com/OrstedRD/TurbOPark/blob/main/TurbOPark%20description.pdf</uri> (last access: 3 August 2026), 2022.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Ott et al.(2011)</label><mixed-citation>Ott, S., Berg, J., and Nielsen, M.: Linearised CFD Models for Wakes. Danmarks Tekniske Universitet, Risø Nationallaboratoriet for Baeredygtig Energi, Tech. rep., Risø National Laboratory, <uri>https://orbit.dtu.dk/en/publications/linearised-cfd-models-for-wakes/</uri> (last access: 3 August 2026), 2011.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Panofsky and Dutton(1984)</label><mixed-citation> Panofsky, H. A. and Dutton, J. A.: Atmospheric turbulence. Models and methods for engineering applications, New York, Wiley, ISBN: 9780471057147 (ISBN 10: 0471057142), 1984.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Pedersen et al.(2023)</label><mixed-citation>Pedersen, M. M., Forsting, A. M., van der Laan, P., Riva, R., Romàn, L. A. A., Risco, J. C., Friis-Møller, M., Quick, J., Schøler, J. P., Rodrigues, R. V., Olsen, B. T., and Réthoré, P.-E.: PyWake 2.5.0: An open-source wind farm simulation tool, <uri>https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake</uri> (last access: 3 August 2026), 2023.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Pedersen et al.(2025)</label><mixed-citation>Pedersen, M. M., Friis-Møller, M., Réthoré, P.-E., Simutis, E., Riva, R., Quick, J., Dimitrov, N. K., Rinker, J., and Dykes, K.: DTUWindEnergy/TopFarm2: Release of v2.6.1, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17540961" ext-link-type="DOI">10.5281/zenodo.17540961</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Pish et al.(2024)</label><mixed-citation>Pish, F., Göçmen, T., and Laan, M. P. V. D.: Generalization of single wake surrogates for multiple and farm-farm wake analysis, J. Phys. Conf. Ser., 2767, 092058, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2767/9/092058" ext-link-type="DOI">10.1088/1742-6596/2767/9/092058</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Pookpunt and Ongsakul(2013)</label><mixed-citation>Pookpunt, S. and Ongsakul, W.: Optimal placement of wind turbines within wind farm using binary particle swarm optimization with time-varying acceleration coefficients, Renew. Energ., 55, 266–276, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2012.12.005" ext-link-type="DOI">10.1016/j.renene.2012.12.005</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Poole(2025)</label><mixed-citation>Poole, D. J.: Characterization of multimodality in wind farm layout optimization, Energy Science and Engineering, <ext-link xlink:href="https://doi.org/10.1002/ese3.70377" ext-link-type="DOI">10.1002/ese3.70377</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Porté-Agel et al.(2020)</label><mixed-citation>Porté-Agel, F., Bastankhah, M., and Shamsoddin, S.: Wind-turbine and wind-farm flows: a review, Bound.-Lay. Meteorol., 174, 1–59, <ext-link xlink:href="https://doi.org/10.1007/s10546-019-00473-0" ext-link-type="DOI">10.1007/s10546-019-00473-0</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Quick et al.(2023)</label><mixed-citation>Quick, J., Rethore, P.-E., Mølgaard Pedersen, M., Rodrigues, R. V., and Friis-Møller, M.: Stochastic gradient descent for wind farm optimization, Wind Energ. Sci., 8, 1235–1250, <ext-link xlink:href="https://doi.org/10.5194/wes-8-1235-2023" ext-link-type="DOI">10.5194/wes-8-1235-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Schneemann et al.(2021)</label><mixed-citation>Schneemann, J., Theuer, F., Rott, A., Dörenkämper, M., and Kühn, M.: Offshore wind farm global blockage measured with scanning lidar, Wind Energ. Sci., 6, 521–538, <ext-link xlink:href="https://doi.org/10.5194/wes-6-521-2021" ext-link-type="DOI">10.5194/wes-6-521-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Schøler et al.(2023)</label><mixed-citation>Schøler, J. P., Riva, R., Andersen, S. J., Leon, J. P. M., van der Laan, M. P., Risco, J. C., and Réthoré, P.-E.: RANS-AD based ANN surrogate model for wind turbine wake deficits, J. Phys. Conf. Ser., 2505, 012022, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2505/1/012022" ext-link-type="DOI">10.1088/1742-6596/2505/1/012022</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Schøler et al.(2024)</label><mixed-citation>Schøler, J. P., Rosi, N., Quick, J., Riva, R., Andersen, S. J., Leon, J. P. M., Laan, M. P. V. D., and Réthoré, P.-E.: RANS wake surrogate: impact of physics information in neural networks, J. Phys. Conf. Ser., 2767, 092033, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2767/9/092033" ext-link-type="DOI">10.1088/1742-6596/2767/9/092033</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Sørensen(1994)</label><mixed-citation>Sørensen, N. N.: General purpose flow solver applied to flow over hills, PhD thesis, DTU, <uri>https://orbit.dtu.dk/en/publications/general-purpose-flow-solver-applied-to-flow-over-hills/</uri> (last access: 3 August 2026), 1994.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Sørensen et al.(2020)</label><mixed-citation>Sørensen, J. N., Nilsson, K., Ivanell, S., Asmuth, H., and Mikkelsen, R. F.: Analytical body forces in numerical actuator disc model of wind turbines, Renew. Energ., 147, 2259–2271, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2019.09.134" ext-link-type="DOI">10.1016/j.renene.2019.09.134</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Stanley and Ning(2019)</label><mixed-citation>Stanley, A. P. J. and Ning, A.: Massive simplification of the wind farm layout optimization problem, Wind Energ. Sci., 4, 663–676, <ext-link xlink:href="https://doi.org/10.5194/wes-4-663-2019" ext-link-type="DOI">10.5194/wes-4-663-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Sun and Yang(2023)</label><mixed-citation>Sun, H. and Yang, H.: Wind farm layout and hub height optimization with a novel wake model, Appl. Energ., 348, 121554, <ext-link xlink:href="https://doi.org/10.1016/j.apenergy.2023.121554" ext-link-type="DOI">10.1016/j.apenergy.2023.121554</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Technical University of Denmark(2019)</label><mixed-citation>Technical University of Denmark: Sophia HPC Cluster, <ext-link xlink:href="https://doi.org/10.57940/FAFC-6M81" ext-link-type="DOI">10.57940/FAFC-6M81</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Thomas and Ning(2018)</label><mixed-citation>Thomas, J. J. and Ning, A.: A method for reducing multi-modality in the wind farm layout optimization problem, J. Phys. Conf. Ser., 1037, 042012, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/4/042012" ext-link-type="DOI">10.1088/1742-6596/1037/4/042012</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Thomas et al.(2017)</label><mixed-citation>Thomas, J. J., Gebraad, P. M., and Ning, A.: Improving the FLORIS wind plant model for compatibility with gradient-based optimization, Wind Engineering, 41, 313–329, <ext-link xlink:href="https://doi.org/10.1177/0309524X17722000" ext-link-type="DOI">10.1177/0309524X17722000</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Ti et al.(2021)</label><mixed-citation>Ti, Z., Deng, X. W., and Zhang, M.: Artificial Neural Networks based wake model for power prediction of wind farm, Renew. Energ., 172, 618–631, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2021.03.030" ext-link-type="DOI">10.1016/j.renene.2021.03.030</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Troldborg and Meyer Forsting(2017)</label><mixed-citation>Troldborg, N. and Meyer Forsting, A. R.: A simple model of the wind turbine induction zone derived from numerical simulations, Wind Energy, 20, 2011–2020, <ext-link xlink:href="https://doi.org/10.1002/we.2137" ext-link-type="DOI">10.1002/we.2137</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Troldborg et al.(2015)</label><mixed-citation>Troldborg, N., Sørensen, N., Réthoré, P.-E., and van der Laan, M.: A consistent method for finite volume discretization of body forces on collocated grids applied to flow through an actuator disk, Comput. Fluids, 119, 197–203, <ext-link xlink:href="https://doi.org/10.1016/j.compfluid.2015.06.028" ext-link-type="DOI">10.1016/j.compfluid.2015.06.028</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx65"><label>van der Laan et al.(2020)</label><mixed-citation>van der Laan, M., Andersen, S., Kelly, M., and Baungaard, M.: Fluid scaling laws of idealized wind farm simulations, J. Phys. Conf. Ser., 1618, 062018, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1618/6/062018" ext-link-type="DOI">10.1088/1742-6596/1618/6/062018</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>van der Laan et al.(2015a)</label><mixed-citation>van der Laan, M. P., Sørensen, N. N., Réthoré, P. E., Mann, J., Kelly, M. C., and Troldborg, N.: The <inline-formula><mml:math id="M350" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>-<inline-formula><mml:math id="M351" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula>-<inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi>p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> model applied to double wind turbine wakes using different actuator disk force methods, Wind Energy, 18, 2223–2240, <ext-link xlink:href="https://doi.org/10.1002/we.1816" ext-link-type="DOI">10.1002/we.1816</ext-link>, 2015a.</mixed-citation></ref>
      <ref id="bib1.bibx67"><label>van der Laan et al.(2015b)</label><mixed-citation>van der Laan, M. P., Sørensen, N. N., Réthoré, P. E., Mann, J., Kelly, M. C., Troldborg, N., Schepers, J. G., and Machefaux, E.: An improved k-<inline-formula><mml:math id="M353" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula> model applied to a wind turbine wake in atmospheric turbulence, Wind Energy, 18, 889–907, <ext-link xlink:href="https://doi.org/10.1002/we.1736" ext-link-type="DOI">10.1002/we.1736</ext-link>, 2015b.</mixed-citation></ref>
      <ref id="bib1.bibx68"><label>van der Laan et al.(2019)</label><mixed-citation>van der Laan, M. P., Andersen, S. J., and Réthoré, P.-E.: Brief communication: Wind-speed-independent actuator disk control for faster annual energy production calculations of wind farms using computational fluid dynamics, Wind Energ. Sci., 4, 645–651, <ext-link xlink:href="https://doi.org/10.5194/wes-4-645-2019" ext-link-type="DOI">10.5194/wes-4-645-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx69"><label>van der Laan et al.(2022)</label><mixed-citation>van der Laan, M. P., Andersen, S. J., Réthoré, P.-E., Baungaard, M., Sørensen, J. N., and Troldborg, N.: Faster wind farm AEP calculations with CFD using a generalized wind turbine model, J. Phys. Conf. Ser., 2265, 022030, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/2/022030" ext-link-type="DOI">10.1088/1742-6596/2265/2/022030</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx70"><label>van der Laan et al.(2026)</label><mixed-citation>van der Laan, M. P., Meyer Forsting, A., and Réthoré, P.-E.: A Computational Fluid Dynamics surrogate model for wind turbine interaction including atmospheric stability, Wind Energ. Sci. Discuss. [preprint], <ext-link xlink:href="https://doi.org/10.5194/wes-2025-287" ext-link-type="DOI">10.5194/wes-2025-287</ext-link>, in review, 2026. </mixed-citation></ref>
      <ref id="bib1.bibx71"><label>Virtanen et al.(2020)</label><mixed-citation>Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., Carey, C. J., Polat, İ., Feng, Y., Moore, E. W., VanderPlas, J., Laxalde, D., Perktold, J., Cimrman, R., Henriksen, I., Quintero, E. A., Harris, C. R., Archibald, A. M., Ribeiro, A. H., Pedregosa, F., van Mulbregt, P., and SciPy 1.0 Contributors: SciPy 1.0: fundamental algorithms for scientific computing in Python, Nat. Methods, 17, 261–272, <ext-link xlink:href="https://doi.org/10.1038/s41592-019-0686-2" ext-link-type="DOI">10.1038/s41592-019-0686-2</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx72"><label>Wächter and Biegler(2006)</label><mixed-citation>Wächter, A. and Biegler, L. T.: On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming, Math. Program., 106, 25–57, <ext-link xlink:href="https://doi.org/10.1007/s10107-004-0559-y" ext-link-type="DOI">10.1007/s10107-004-0559-y</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx73"><label>Yang and Deng(2023)</label><mixed-citation>Yang, K. and Deng, X.: Layout optimization for renovation of operational offshore wind farm based on machine learning wake model, J. Wind Eng. Ind. Aerod., 232, 105280, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2022.105280" ext-link-type="DOI">10.1016/j.jweia.2022.105280</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx74"><label>Yang et al.(2022)</label><mixed-citation>Yang, S., Deng, X., Ti, Z., Yan, B., and Yang, Q.: Cooperative yaw control of wind farm using a double-layer machine learning framework, Renew. Energ., 193, 519–537, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2022.04.104" ext-link-type="DOI">10.1016/j.renene.2022.04.104</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx75"><label>Zehtabiyan-Rezaie et al.(2022)</label><mixed-citation>Zehtabiyan-Rezaie, N., Iosifidis, A., and Abkar, M.: Data-driven fluid mechanics of wind farms: a review, J. Renew. Sustain. Ener., 14, <ext-link xlink:href="https://doi.org/10.1063/5.0091980" ext-link-type="DOI">10.1063/5.0091980</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx76"><label>Zhang and Zhao(2021)</label><mixed-citation>Zhang, J. and Zhao, X.: Spatiotemporal wind field prediction based on physics-informed deep learning and LIDAR measurements, Appl. Energ., 288, 116641, <ext-link xlink:href="https://doi.org/10.1016/j.apenergy.2021.116641" ext-link-type="DOI">10.1016/j.apenergy.2021.116641</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx77"><label>Zong and Porté-Agel(2020)</label><mixed-citation>Zong, H. and Porté-Agel, F.: A momentum-conserving wake superposition method for wind farm power prediction, J. Fluid Mech., 889, A8, <ext-link xlink:href="https://doi.org/10.1017/jfm.2020.77" ext-link-type="DOI">10.1017/jfm.2020.77</ext-link>, 2020.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Validation of RANS-calibrated engineering models and ANN-based surrogate for wind farm flow simulation and layout optimization</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Ainslie(1988)</label><mixed-citation>
       Ainslie, J.: Calculating the flowfield in the wake of wind turbines, J. Wind Eng. Ind. Aerod., 27, 213–224, <a href="https://doi.org/10.1016/0167-6105(88)90037-2" target="_blank">https://doi.org/10.1016/0167-6105(88)90037-2</a>, 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Anagnostopoulos and Piggott(2022)</label><mixed-citation>
       Anagnostopoulos, S. and Piggott, M.: Offshore wind farm wake modelling using deep feed forward neural networks for active yaw control and layout optimisation, J. Phys. Conf. Ser., 2151, 012011, <a href="https://doi.org/10.1088/1742-6596/2151/1/012011" target="_blank">https://doi.org/10.1088/1742-6596/2151/1/012011</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Andersen and Leon(2022)</label><mixed-citation>
       Andersen, S. J. and Murcia Leon, J. P.: Predictive and stochastic reduced-order modeling of wind turbine wake dynamics, Wind Energ. Sci., 7, 2117–2133, <a href="https://doi.org/10.5194/wes-7-2117-2022" target="_blank">https://doi.org/10.5194/wes-7-2117-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Andersen et al.(2014)</label><mixed-citation>
       Andersen, S. J., Sørensen, J. N., Ivanell, S., and Mikkelsen, R. F.: Comparison of engineering wake models with CFD simulations, J. Phys. Conf. Ser., 524, 012161, <a href="https://doi.org/10.1088/1742-6596/524/1/012161" target="_blank">https://doi.org/10.1088/1742-6596/524/1/012161</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bak et al.(2013)</label><mixed-citation>
       Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L. C., Hansen, M. H., Blasques, J. P. A. A., Gaunaa, M., and Natarajan, A.: The DTU 10-MW reference wind turbine, in: Danish Wind Power Research, <a href="https://orbit.dtu.dk/en/publications/the-dtu-10-mw-reference-wind-turbine/" target="_blank"/>
(last access: 3 August 2026), 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Baker et al.(2019)</label><mixed-citation>
       Baker, N. F., Stanley, A. P., Thomas, J. J., Ning, A., and Dykes, K.: Best practices for wake model and optimization algorithm selection in wind farm layout optimization, in: AIAA Scitech 2019 Forum, American Institute of Aeronautics and Astronautics, <a href="https://doi.org/10.2514/6.2019-0540" target="_blank">https://doi.org/10.2514/6.2019-0540</a>, 2019.

    </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>Bleeg et al.(2018)</label><mixed-citation>
       Bleeg, J., Purcell, M., Ruisi, R., and Traiger, E.: Wind farm blockage and the consequences of neglecting its impact on energy production, Energies, 11, 1609, <a href="https://doi.org/10.3390/en11061609" target="_blank">https://doi.org/10.3390/en11061609</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Blondel and Cathelain(2020)</label><mixed-citation>
       Blondel, F. and Cathelain, M.: An alternative form of the super-Gaussian wind turbine wake model, Wind Energ. Sci., 5, 1225–1236, <a href="https://doi.org/10.5194/wes-5-1225-2020" target="_blank">https://doi.org/10.5194/wes-5-1225-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Bodini et al.(2026)</label><mixed-citation>
       Bodini, N., Moriarty, P., Thedin, R., Doubrawa, P., Archer, C., Blaylock, M., Bottasso, C., Carmo, B., Cheung, L., Dubreuil, C., Floors, R., Herges, T., Houck, D., Kanjari, A., Kaul, C. M., Kelley, C., LI, R., Lundquist, J. K., Major, D., Nguyen, A. K., Optis, M., Parada, L. R. C., Peña, A., Quick, J., Ricarte, D., Radünz, W. C., Rai, R. K., Garcia Santiago, O., Schulte, J., Seim, K. S., van der Laan, M. P., Vimalakanthan, K., and Wise, A.: The AWAKEN wind farm benchmark, Part 2: Modeling results, Wind Energ. Sci. Discuss. [preprint], <a href="https://doi.org/10.5194/wes-2026-34" target="_blank">https://doi.org/10.5194/wes-2026-34</a>, in review, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Bortolotti et al.(2022)</label><mixed-citation>
       Bortolotti, P., Bay, C., Barter, G., Gaertner, E., Dykes, K., McWilliam, M., Friis-Moller, M., Pedersen, M. M., and Zahle, F.: System Modeling Frameworks for Wind Turbines and Plants: Review and Requirements Specifications, Tech. rep., National Renewable Energy Laboratory (NREL), <a href="https://doi.org/10.2172/1868328" target="_blank">https://doi.org/10.2172/1868328</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Crespo and Hernández(1996)</label><mixed-citation>
       Crespo, A. and Hernández, J.: Turbulence characteristics in wind-turbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Criado Risco et al.(2023)</label><mixed-citation>
       Criado Risco, J., van der Laan, M. P., Pedersen, M. M., Meyer Forsting, A., and Réthoré, P.-E.: A RANS-based surrogate model for simulating wind turbine interaction, J. Phys. Conf. Ser., 2505, 012016, <a href="https://doi.org/10.1088/1742-6596/2505/1/012016" target="_blank">https://doi.org/10.1088/1742-6596/2505/1/012016</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Dar et al.(2019)</label><mixed-citation>
       Dar, A. S., Berg, J., Troldborg, N., and Patton, E. G.: On the self-similarity of wind turbine wakes in a complex terrain using large eddy simulation, Wind Energ. Sci., 4, 633–644, <a href="https://doi.org/10.5194/wes-4-633-2019" target="_blank">https://doi.org/10.5194/wes-4-633-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Dong et al.(2026)</label><mixed-citation>
       Dong, G., Qin, J., Wu, C., Xu, C., and Yang, X.: Reinforcement learning-enhanced genetic algorithm for wind farm layout optimization, Renew. Energ., 259, 125093, <a href="https://doi.org/10.1016/j.renene.2025.125093" target="_blank">https://doi.org/10.1016/j.renene.2025.125093</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>DTU Wind and Energy Systems(2023)</label><mixed-citation>
       DTU Wind and
Energy Systems: PyWakeEllipSys v5.3,
<a href="https://topfarm.pages.windenergy.dtu.dk/cuttingedge/pywake/pywake_ellipsys" target="_blank"/>
(last access: 27 May 2025), 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Forsting et al.(2023)</label><mixed-citation>
       Forsting, A. R. M., Diaz, G. P. N., Segalini, A., Andersen, S. J., and Ivanell, S.: On the accuracy of predicting wind-farm blockage, Renew. Energ., 214, 114–129, <a href="https://doi.org/10.1016/j.renene.2023.05.129" target="_blank">https://doi.org/10.1016/j.renene.2023.05.129</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Frandsen(2005)</label><mixed-citation>
       Frandsen, S.: Turbulence and turbulence-generated structural loading in wind turbine clusters – Risoe-R No. 1188(EN), Tech. rep., Forskningscenter Risoe, 2005.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Gafoor et al.(2025)</label><mixed-citation>
       Gafoor, A., Boya, S. K., Jinka, R., Gupta, A., Tyagi, A., Sarkar, S., and Subramani, D. N.: A physics-informed neural network for turbulent wake simulations behind wind turbines, Phys. Fluids, 37, <a href="https://doi.org/10.1063/5.0245113" target="_blank">https://doi.org/10.1063/5.0245113</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Gunn et al.(2016)</label><mixed-citation>
       Gunn, K., Stock-Williams, C., Burke, M., Willden, R., Vogel, C., Hunter, W., Stallard, T., Robinson, N., and Schmidt, S. R.: Limitations to the validity of single wake superposition in wind farm yield assessment, J. Phys. Conf. Ser., 749, 012003, <a href="https://doi.org/10.1088/1742-6596/749/1/012003" target="_blank">https://doi.org/10.1088/1742-6596/749/1/012003</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Herbert-Acero et al.(2014)</label><mixed-citation>
       Herbert-Acero, J., Probst, O., Réthoré, P.-E., Larsen, G., and Castillo-Villar, K.: A review of methodological approaches for the design and optimization of wind farms, Energies, 7, 6930–7016, <a href="https://doi.org/10.3390/en7116930" target="_blank">https://doi.org/10.3390/en7116930</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>IEC(2010)</label><mixed-citation>
       IEC: IEC 61400-1 ed. 3 Wind turbines-Part 1: Design requirements, International Standard, <a href="https://standards.iteh.ai/catalog/standards/sist/c065aa89-0f3c-4c31-8817-6bdec19e47eb/iec-" target="_blank"/> (last access: 3 August 2026), 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Jensen(1983)</label><mixed-citation>
       Jensen, N. O.: A note on wind generator interaction – RISØ-M-2411, Tech. rep., Risø National Laboratories, 1983.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Kainz et al.(2024)</label><mixed-citation>
       Kainz, S., Quick, J.,
de Alencar, M. S., Moreno, S. S. P., Dykes, K., Bay, C., Zaaijer, M. B., and
Bortolotti, P.: The IEA Wind 740-10-MW Reference Offshore Wind Plants,
Tech. rep., IEA Task 55,
<a href="https://github.com/IEAWindTask37/IEA-Wind-740-10-ROWP" target="_blank"/> (last access: 3 August 2026), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Klemmer and Howland(2025)</label><mixed-citation>
       Klemmer, K. S. and Howland, M. F.: Wake turbulence modeling in stratified atmospheric flows using a novel <i>k</i>-<i>l</i> model, J. Renew. Sustain. Ener., 17, <a href="https://doi.org/10.1063/5.0249278" target="_blank">https://doi.org/10.1063/5.0249278</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Kraft(1988)</label><mixed-citation>
       Kraft, D.: A software package for sequential quadratic programming. DFVLR-FB 88-28, Tech. rep., Institut für Dynamik der Flugsysteme, Deutsche Forschungs- und Versuchsanstalt für Luft- und Raumfahrt (DFVLR), 1988.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Lanzilao and Meyers(2022)</label><mixed-citation>
       Lanzilao, L. and Meyers, J.: A new wake-merging method for wind-farm power prediction in the presence of heterogeneous background velocity fields, Wind Energy, 25, 237–259, <a href="https://doi.org/10.1002/we.2669" target="_blank">https://doi.org/10.1002/we.2669</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Li et al.(2024a)</label><mixed-citation>
       Li, B., Ge, M., Li, X., and Liu, Y.: A physics-guided machine learning framework for real-time dynamic wake prediction of wind turbines, Phys. Fluids, 36, <a href="https://doi.org/10.1063/5.0194764" target="_blank">https://doi.org/10.1063/5.0194764</a>, 2024a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Li et al.(2024b)</label><mixed-citation>
       Li, H., Yang, Q., and Li, T.: Wind turbine wake prediction modelling based on transformer-mixed conditional generative adversarial network, Energy, 291, 130403, <a href="https://doi.org/10.1016/j.energy.2024.130403" target="_blank">https://doi.org/10.1016/j.energy.2024.130403</a>, 2024b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Liu et al.(2025)</label><mixed-citation>
       Liu, S., Li, Q., Lu, B., and He, J.: Prediction of offshore wind turbine wake and output power using large eddy simulation and convolutional neural network, Energ. Convers. Manage., 324, 119326, <a href="https://doi.org/10.1016/j.enconman.2024.119326" target="_blank">https://doi.org/10.1016/j.enconman.2024.119326</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Liu et al.(2026)</label><mixed-citation>
       Liu, X., Li, Z., and Yang, X.: PhyWakeNet: a dynamic wake model accounting for aerodynamic force oscillations, Wind Energ. Sci., 11, 771–793, <a href="https://doi.org/10.5194/wes-11-771-2026" target="_blank">https://doi.org/10.5194/wes-11-771-2026</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>LoCascio et al.(2024)</label><mixed-citation>
       LoCascio, M. J., Bay, C. J., Martínez Tossas, L. A., Bastankhah, M., and Gorlé, C.: FLOWERS AEP: an analytical model for wind farm layout optimization, Wind Energy, 27, 1563–1580, <a href="https://doi.org/10.1002/we.2954" target="_blank">https://doi.org/10.1002/we.2954</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Madsen et al.(2020)</label><mixed-citation>
       Madsen, H. A., Larsen, T. J., Pirrung, G. R., Li, A., and Zahle, F.: Implementation of the blade element momentum model on a polar grid and its aeroelastic load impact, Wind Energ. Sci., 5, 1–27, <a href="https://doi.org/10.5194/wes-5-1-2020" target="_blank">https://doi.org/10.5194/wes-5-1-2020</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Martínez-Tossas et al.(2019)</label><mixed-citation>
       Martínez-Tossas, L. A., Annoni, J., Fleming, P. A., 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.bib36"><label>Michelsen(1992)</label><mixed-citation>
       Michelsen, J. A.: Basis3D – a platform for development of multiblock PDE solvers, Tech. rep., AFM 92-05, DTU, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Moreno et al.(2025)</label><mixed-citation>
       Céspedes Moreno, J. F., Murcia León, J. P., and Andersen, S. J.: Convergence and efficiency of global bases using proper orthogonal decomposition for capturing wind turbine wake aerodynamics, Wind Energ. Sci., 10, 597–611, <a href="https://doi.org/10.5194/wes-10-597-2025" target="_blank">https://doi.org/10.5194/wes-10-597-2025</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Mosetti et al.(1994)</label><mixed-citation>
       Mosetti, G., Poloni, C., and
Diviacco, B.: Optimization of wind turbine positioning in large windfarms by
means of a genetic algorithm, J. Wind Eng. Ind. Aerod.,
<a href="https://doi.org/10.1016/0167-6105(94)90080-9" target="_blank">https://doi.org/10.1016/0167-6105(94)90080-9</a>, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><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, <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.bib40"><label>Nogueira(2014)</label><mixed-citation>
       Nogueira, F.: Bayesian Optimization: Open source constrained global optimization tool for Python, <a href="https://github.com/bayesian-optimization/BayesianOptimization" target="_blank"/> (last access: 3 August 2026), 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Nygaard et al.(2020)</label><mixed-citation>
       Nygaard, N. G., Steen, S. T., Poulsen, L., and Pedersen, J. G.: Modelling cluster wakes and wind farm blockage, J. Phys. Conf. Ser., 1618, <a href="https://doi.org/10.1088/1742-6596/1618/6/062072" target="_blank">https://doi.org/10.1088/1742-6596/1618/6/062072</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Nygaard et al.(2022)</label><mixed-citation>
       Nygaard, N. G., Pedersen, J. G.,
Hansen, S. D., and Krastins, P.: A Turbulence Optimized Park model,
Tech. rep., Ørsted,
<a href="https://github.com/OrstedRD/TurbOPark/blob/main/TurbOPark%20description.pdf" target="_blank"/> (last access: 3 August 2026), 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Ott et al.(2011)</label><mixed-citation>
       Ott, S., Berg, J., and Nielsen, M.:
Linearised CFD Models for Wakes. Danmarks Tekniske Universitet, Risø
Nationallaboratoriet for Baeredygtig Energi, Tech. rep., Risø National
Laboratory,
<a href="https://orbit.dtu.dk/en/publications/linearised-cfd-models-for-wakes/" target="_blank"/> (last access: 3 August 2026), 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Panofsky and Dutton(1984)</label><mixed-citation>
       Panofsky, H. A. and Dutton, J. A.: Atmospheric turbulence. Models and methods for engineering applications, New York, Wiley, ISBN:
9780471057147 (ISBN 10: 0471057142), 1984.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Pedersen et al.(2023)</label><mixed-citation>
       Pedersen, M. M., Forsting, A. M.,
van der Laan, P., Riva, R., Romàn, L. A. A., Risco, J. C.,
Friis-Møller, M., Quick, J., Schøler, J. P., Rodrigues, R. V.,
Olsen, B. T., and Réthoré, P.-E.: PyWake 2.5.0: An open-source wind
farm simulation tool,
<a href="https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake" target="_blank"/> (last access: 3 August 2026), 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Pedersen et al.(2025)</label><mixed-citation>
       Pedersen, M. M., Friis-Møller, M., Réthoré, P.-E., Simutis, E., Riva, R., Quick, J., Dimitrov, N. K., Rinker, J., and Dykes, K.: DTUWindEnergy/TopFarm2: Release of v2.6.1, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.17540961" target="_blank">https://doi.org/10.5281/zenodo.17540961</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Pish et al.(2024)</label><mixed-citation>
       Pish, F., Göçmen, T., and Laan, M. P. V. D.: Generalization of single wake surrogates for multiple and farm-farm wake analysis, J. Phys. Conf. Ser., 2767, 092058, <a href="https://doi.org/10.1088/1742-6596/2767/9/092058" target="_blank">https://doi.org/10.1088/1742-6596/2767/9/092058</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Pookpunt and Ongsakul(2013)</label><mixed-citation>
       Pookpunt, S. and Ongsakul, W.: Optimal placement of wind turbines within wind farm using binary particle swarm optimization with time-varying acceleration coefficients, Renew. Energ., 55, 266–276, <a href="https://doi.org/10.1016/j.renene.2012.12.005" target="_blank">https://doi.org/10.1016/j.renene.2012.12.005</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Poole(2025)</label><mixed-citation>
       Poole, D. J.: Characterization of multimodality in wind farm layout optimization, Energy Science and Engineering, <a href="https://doi.org/10.1002/ese3.70377" target="_blank">https://doi.org/10.1002/ese3.70377</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Porté-Agel et al.(2020)</label><mixed-citation>
       Porté-Agel, F., Bastankhah, M., and Shamsoddin, S.: Wind-turbine and wind-farm flows: a review, Bound.-Lay. Meteorol., 174, 1–59, <a href="https://doi.org/10.1007/s10546-019-00473-0" target="_blank">https://doi.org/10.1007/s10546-019-00473-0</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Quick et al.(2023)</label><mixed-citation>
       Quick, J., Rethore, P.-E., Mølgaard Pedersen, M., Rodrigues, R. V., and Friis-Møller, M.: Stochastic gradient descent for wind farm optimization, Wind Energ. Sci., 8, 1235–1250, <a href="https://doi.org/10.5194/wes-8-1235-2023" target="_blank">https://doi.org/10.5194/wes-8-1235-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Schneemann et al.(2021)</label><mixed-citation>
       Schneemann, J., Theuer, F., Rott, A., Dörenkämper, M., and Kühn, M.: Offshore wind farm global blockage measured with scanning lidar, Wind Energ. Sci., 6, 521–538, <a href="https://doi.org/10.5194/wes-6-521-2021" target="_blank">https://doi.org/10.5194/wes-6-521-2021</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Schøler et al.(2023)</label><mixed-citation>
       Schøler, J. P., Riva, R., Andersen, S. J., Leon, J. P. M., van der Laan, M. P., Risco, J. C., and Réthoré, P.-E.: RANS-AD based ANN surrogate model for wind turbine wake deficits, J. Phys. Conf. Ser., 2505, 012022, <a href="https://doi.org/10.1088/1742-6596/2505/1/012022" target="_blank">https://doi.org/10.1088/1742-6596/2505/1/012022</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Schøler et al.(2024)</label><mixed-citation>
       Schøler, J. P., Rosi, N., Quick, J., Riva, R., Andersen, S. J., Leon, J. P. M., Laan, M. P. V. D., and Réthoré, P.-E.: RANS wake surrogate: impact of physics information in neural networks, J. Phys. Conf. Ser., 2767, 092033, <a href="https://doi.org/10.1088/1742-6596/2767/9/092033" target="_blank">https://doi.org/10.1088/1742-6596/2767/9/092033</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Sørensen(1994)</label><mixed-citation>
       Sørensen, N. N.: General purpose flow solver applied to flow over hills, PhD thesis, DTU, <a href="https://orbit.dtu.dk/en/publications/general-purpose-flow-solver-applied-to-flow-over-hills/" target="_blank"/> (last access: 3 August 2026), 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Sørensen et al.(2020)</label><mixed-citation>
       Sørensen, J. N., Nilsson, K., Ivanell, S., Asmuth, H., and Mikkelsen, R. F.: Analytical body forces in numerical actuator disc model of wind turbines, Renew. Energ., 147, 2259–2271, <a href="https://doi.org/10.1016/j.renene.2019.09.134" target="_blank">https://doi.org/10.1016/j.renene.2019.09.134</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Stanley and Ning(2019)</label><mixed-citation>
       Stanley, A. P. J. and Ning, A.: Massive simplification of the wind farm layout optimization problem, Wind Energ. Sci., 4, 663–676, <a href="https://doi.org/10.5194/wes-4-663-2019" target="_blank">https://doi.org/10.5194/wes-4-663-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Sun and Yang(2023)</label><mixed-citation>
       Sun, H. and Yang, H.: Wind farm layout and hub height optimization with a novel wake model, Appl. Energ., 348, 121554, <a href="https://doi.org/10.1016/j.apenergy.2023.121554" target="_blank">https://doi.org/10.1016/j.apenergy.2023.121554</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Technical University of Denmark(2019)</label><mixed-citation>
       Technical University
of Denmark: Sophia HPC Cluster, <a href="https://doi.org/10.57940/FAFC-6M81" target="_blank">https://doi.org/10.57940/FAFC-6M81</a>,
2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Thomas and Ning(2018)</label><mixed-citation>
       Thomas, J. J. and Ning, A.: A method for reducing multi-modality in the wind farm layout optimization problem, J. Phys. Conf. Ser., 1037, 042012, <a href="https://doi.org/10.1088/1742-6596/1037/4/042012" target="_blank">https://doi.org/10.1088/1742-6596/1037/4/042012</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Thomas et al.(2017)</label><mixed-citation>
       Thomas, J. J., Gebraad, P. M., and Ning, A.: Improving the FLORIS wind plant model for compatibility with gradient-based optimization, Wind Engineering, 41, 313–329, <a href="https://doi.org/10.1177/0309524X17722000" target="_blank">https://doi.org/10.1177/0309524X17722000</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Ti et al.(2021)</label><mixed-citation>
       Ti, Z., Deng, X. W., and Zhang, M.: Artificial Neural Networks based wake model for power prediction of wind farm, Renew. Energ., 172, 618–631, <a href="https://doi.org/10.1016/j.renene.2021.03.030" target="_blank">https://doi.org/10.1016/j.renene.2021.03.030</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Troldborg and Meyer Forsting(2017)</label><mixed-citation>
       Troldborg, N. and Meyer Forsting, A. R.: A simple model of the wind turbine induction zone derived from numerical simulations, Wind Energy, 20, 2011–2020, <a href="https://doi.org/10.1002/we.2137" target="_blank">https://doi.org/10.1002/we.2137</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Troldborg et al.(2015)</label><mixed-citation>
       Troldborg, N., Sørensen, N., Réthoré, P.-E., and van der Laan, M.: A consistent method for finite volume discretization of body forces on collocated grids applied to flow through an actuator disk, Comput. Fluids, 119, 197–203, <a href="https://doi.org/10.1016/j.compfluid.2015.06.028" target="_blank">https://doi.org/10.1016/j.compfluid.2015.06.028</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>van der Laan et al.(2020)</label><mixed-citation>
       van der Laan, M., Andersen, S., Kelly, M., and Baungaard, M.: Fluid scaling laws of idealized wind farm simulations, J. Phys. Conf. Ser., 1618, 062018, <a href="https://doi.org/10.1088/1742-6596/1618/6/062018" target="_blank">https://doi.org/10.1088/1742-6596/1618/6/062018</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>van der Laan et al.(2015a)</label><mixed-citation>
       van der Laan, M. P., Sørensen, N. N., Réthoré, P. E., Mann, J., Kelly, M. C., and Troldborg, N.: The <i>k</i>-<i>ε</i>-<i>f</i><sub><i>p</i></sub> model applied to double wind turbine wakes using different actuator disk force methods, Wind Energy, 18, 2223–2240, <a href="https://doi.org/10.1002/we.1816" target="_blank">https://doi.org/10.1002/we.1816</a>, 2015a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib67"><label>van der Laan et al.(2015b)</label><mixed-citation>
       van der Laan, M. P., Sørensen, N. N., Réthoré, P. E., Mann, J., Kelly, M. C., Troldborg, N., Schepers, J. G., and Machefaux, E.: An improved k-<i>ε</i> model applied to a wind turbine wake in atmospheric turbulence, Wind Energy, 18, 889–907, <a href="https://doi.org/10.1002/we.1736" target="_blank">https://doi.org/10.1002/we.1736</a>, 2015b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib68"><label>van der Laan et al.(2019)</label><mixed-citation>
       van der Laan, M. P., Andersen, S. J., and Réthoré, P.-E.: Brief communication: Wind-speed-independent actuator disk control for faster annual energy production calculations of wind farms using computational fluid dynamics, Wind Energ. Sci., 4, 645–651, <a href="https://doi.org/10.5194/wes-4-645-2019" target="_blank">https://doi.org/10.5194/wes-4-645-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib69"><label>van der Laan et al.(2022)</label><mixed-citation>
       van der Laan, M. P., Andersen, S. J., Réthoré, P.-E., Baungaard, M., Sørensen, J. N., and Troldborg, N.: Faster wind farm AEP calculations with CFD using a generalized wind turbine model, J. Phys. Conf. Ser., 2265, 022030, <a href="https://doi.org/10.1088/1742-6596/2265/2/022030" target="_blank">https://doi.org/10.1088/1742-6596/2265/2/022030</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib70"><label>van der Laan et al.(2026)</label><mixed-citation>
       van der Laan, M. P., Meyer Forsting, A., and Réthoré, P.-E.: A Computational Fluid Dynamics surrogate model for wind turbine interaction including atmospheric stability, Wind Energ. Sci. Discuss. [preprint], <a href="https://doi.org/10.5194/wes-2025-287" target="_blank">https://doi.org/10.5194/wes-2025-287</a>, in review, 2026.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib71"><label>Virtanen et al.(2020)</label><mixed-citation>
       Virtanen, P., Gommers, R., Oliphant, T. E., Haberland, M., Reddy, T., Cournapeau, D., Burovski, E., Peterson, P., Weckesser, W., Bright, J., van der Walt, S. J., Brett, M., Wilson, J., Millman, K. J., Mayorov, N., Nelson, A. R. J., Jones, E., Kern, R., Larson, E., Carey, C. J., Polat, İ., Feng, Y., Moore, E. W., VanderPlas, J., Laxalde, D., Perktold, J., Cimrman, R., Henriksen, I., Quintero, E. A., Harris, C. R., Archibald, A. M., Ribeiro, A. H., Pedregosa, F., van Mulbregt, P., and SciPy 1.0 Contributors: SciPy 1.0: fundamental algorithms for scientific computing in Python, Nat. Methods, 17, 261–272, <a href="https://doi.org/10.1038/s41592-019-0686-2" target="_blank">https://doi.org/10.1038/s41592-019-0686-2</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib72"><label>Wächter and Biegler(2006)</label><mixed-citation>
       Wächter, A. and Biegler, L. T.: On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming, Math. Program., 106, 25–57, <a href="https://doi.org/10.1007/s10107-004-0559-y" target="_blank">https://doi.org/10.1007/s10107-004-0559-y</a>, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib73"><label>Yang and Deng(2023)</label><mixed-citation>
       Yang, K. and Deng, X.: Layout optimization for renovation of operational offshore wind farm based on machine learning wake model, J. Wind Eng. Ind. Aerod., 232, 105280, <a href="https://doi.org/10.1016/j.jweia.2022.105280" target="_blank">https://doi.org/10.1016/j.jweia.2022.105280</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib74"><label>Yang et al.(2022)</label><mixed-citation>
       Yang, S., Deng, X., Ti, Z., Yan, B., and Yang, Q.: Cooperative yaw control of wind farm using a double-layer machine learning framework, Renew. Energ., 193, 519–537, <a href="https://doi.org/10.1016/j.renene.2022.04.104" target="_blank">https://doi.org/10.1016/j.renene.2022.04.104</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib75"><label>Zehtabiyan-Rezaie et al.(2022)</label><mixed-citation>
       Zehtabiyan-Rezaie, N., Iosifidis, A., and Abkar, M.: Data-driven fluid mechanics of wind farms: a review, J. Renew. Sustain. Ener., 14, <a href="https://doi.org/10.1063/5.0091980" target="_blank">https://doi.org/10.1063/5.0091980</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib76"><label>Zhang and Zhao(2021)</label><mixed-citation>
       Zhang, J. and Zhao, X.: Spatiotemporal wind field prediction based on physics-informed deep learning and LIDAR measurements, Appl. Energ., 288, 116641, <a href="https://doi.org/10.1016/j.apenergy.2021.116641" target="_blank">https://doi.org/10.1016/j.apenergy.2021.116641</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib77"><label>Zong and Porté-Agel(2020)</label><mixed-citation>
       Zong, H. and Porté-Agel, F.: A momentum-conserving wake superposition method for wind farm power prediction, J. Fluid Mech., 889, A8, <a href="https://doi.org/10.1017/jfm.2020.77" target="_blank">https://doi.org/10.1017/jfm.2020.77</a>, 2020.

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