<?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-2647-2026</article-id><title-group><article-title>A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability</article-title><alt-title>A consistent CFD surrogate model for wind turbine interaction</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>van der Laan</surname><given-names>Maarten Paul</given-names></name>
          <email>plaa@dtu.dk</email>
        <ext-link>https://orcid.org/0000-0002-8778-2302</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Meyer Forsting</surname><given-names>Alexander</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-3133-1860</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Réthoré</surname><given-names>Pierre-Elouan</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-2300-5440</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Technical University of Denmark, DTU Wind and Energy Systems, Risø Campus, Frederiksborgvej 399, 4000 Roskilde, Denmark</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Maarten Paul van der Laan (plaa@dtu.dk)</corresp></author-notes><pub-date><day>24</day><month>July</month><year>2026</year></pub-date>
      
      <volume>11</volume>
      <issue>7</issue>
      <fpage>2647</fpage><lpage>2668</lpage>
      <history>
        <date date-type="received"><day>19</day><month>December</month><year>2025</year></date>
           <date date-type="rev-request"><day>12</day><month>January</month><year>2026</year></date>
           <date date-type="rev-recd"><day>10</day><month>June</month><year>2026</year></date>
           <date date-type="accepted"><day>1</day><month>July</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Maarten Paul van der Laan 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/2647/2026/wes-11-2647-2026.html">This article is available from https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e99">Wind turbine wake and blockage effects can reduce the energy yield in wind farms, and fast models are required to mitigate these effects by wind farm layout optimization.  However, most fast models do not account for important physics that impact wake and blockage effects, as for example atmospheric stability.  In this work, we propose a surrogate model of a Reynolds-averaged Navier–Stokes (RANS) wind farm model including atmospheric surface layer stability that is about 5 orders of magnitude faster than the original model.  The surrogate model is based on a single-wake database of stream-wise velocity deficit and wake-added turbulence intensity, generated by a RANS model. The surrogate model is evaluated against the RANS model for different inflow conditions and wind farms.  The errors in the surrogate model are reduced by a factor of 2 to 4 when taking into account wake-added turbulence intensity and the use of a rotor-averaging model in combination with a momentum-based wake superposition method.  The latter leads to a more consistent surrogate model compared to using linear superposition without a rotor-averaging model.  However, the computational effort of the surrogate model is still an order of magnitude larger compared to traditional engineering wake models, and more research is required to reduce it.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Horizon 2020</funding-source>
<award-id>101084216</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="d2e111">Interaction of wind turbines and wind farms can lead to energy losses <xref ref-type="bibr" rid="bib1.bibx3" id="paren.1"/> mainly due to wake and blockage effects <xref ref-type="bibr" rid="bib1.bibx8" id="paren.2"/>.  These losses can be minimized by optimizing a wind farm layout, which requires fast wake models, commonly known as engineering wake models.  However, such models often rely on strong assumptions of the wake shape <xref ref-type="bibr" rid="bib1.bibx19 bib1.bibx4" id="paren.3"/> and wake superposition model <xref ref-type="bibr" rid="bib1.bibx22" id="paren.4"/> and rarely take into account important effects of the atmospheric boundary layer (ABL), such as atmospheric stability; Coriolis forces; and turbine-related effects, including the thrust force distribution and wake rotation.  High-fidelity wake models based on computational fluid dynamics (CFD) can include such effects but are too expensive for the application of wind farm layout optimization.  A common approach is to use high-fidelity model results as training data for engineering wake models.  This ranges from a simple calibration of an engineering wake model constant <xref ref-type="bibr" rid="bib1.bibx27 bib1.bibx33" id="paren.5"/> up to complex surrogate modeling for both steady-state <xref ref-type="bibr" rid="bib1.bibx39" id="paren.6"/> and dynamic wake models <xref ref-type="bibr" rid="bib1.bibx1" id="paren.7"/>.  A more detailed review of low- and high-fidelity wake models can be found in <xref ref-type="bibr" rid="bib1.bibx16 bib1.bibx34" id="text.8"/>.  In addition, <xref ref-type="bibr" rid="bib1.bibx34" id="text.9"/> also reviewed the effect of different atmospheric conditions on wind turbine wakes, characterized by ambient turbulence intensity and atmospheric stability.</p>
      <p id="d2e142">Steady-state models based on Reynolds-averaged Navier–Stokes (RANS) can be used to calculate the mean flow of a wind turbine in isolation, from which a wind farm flow can be constructed using a superposition model.  This model type can be considered to be a surrogate model that solves the RANS equations for an entire wind farm <xref ref-type="bibr" rid="bib1.bibx35 bib1.bibx49" id="paren.10"/>.  An overview of existing RANS-based surrogate models can be found in Table <xref ref-type="table" rid="T1"/>.  The lowest model fidelity listed in Table <xref ref-type="table" rid="T1"/> is based on a linearized set of RANS equations, where the effects of the thrust force are added as a linear perturbation to a base flow <xref ref-type="bibr" rid="bib1.bibx29 bib1.bibx15" id="paren.11"/>, and a wind farm flow is constructed by linear superposition of a single-wake shape multiplied by the thrust coefficient, <inline-formula><mml:math id="M1" 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>.  Fuga <xref ref-type="bibr" rid="bib1.bibx29" id="paren.12"/> is a linearized RANS model where the base flow represents the atmospheric surface layer, including atmospheric stability following Monin–Obukhov similarity theory (MOST) <xref ref-type="bibr" rid="bib1.bibx26" id="paren.13"/>. <xref ref-type="bibr" rid="bib1.bibx15" id="text.14"/> argued that the wake velocity deficit is only a linear function of the thrust coefficient for <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn></mml:mrow></mml:math></inline-formula> using 1D momentum theory.  However, RANS single-turbine simulations show that the effect of the thrust coefficient is nonlinear even for low thrust coefficients, e.g., <inline-formula><mml:math id="M3" 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">0.1</mml:mn></mml:mrow></mml:math></inline-formula>, because the wake recovery increases with <inline-formula><mml:math id="M4" 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>, as shown in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.  A higher <inline-formula><mml:math id="M5" 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> leads to larger velocity gradients that reduce the downstream extent of the near-wake, as shown by LES results of <xref ref-type="bibr" rid="bib1.bibx42" id="text.15"/>. <xref ref-type="bibr" rid="bib1.bibx39" id="text.16"/> developed a surrogate model of (nonlinear) RANS simulations where the turbine is modeled as an actuator disk (AD) <xref ref-type="bibr" rid="bib1.bibx25" id="paren.17"/>.  A database of single-wake velocity deficits was pre-calculated and stored as a lookup table (LUT) for a range of wind speeds using RANS-AD simulations, and a wind farm flow was created by superposition.  <xref ref-type="bibr" rid="bib1.bibx18" id="text.18"/> developed a similar RANS surrogate model for simulating wind farm blockage but also included effects of atmospheric stability following MOST. The Fuga and the RANS-LUT models of <xref ref-type="bibr" rid="bib1.bibx39" id="text.19"/> and <xref ref-type="bibr" rid="bib1.bibx18" id="text.20"/> do not take wake-added turbulence intensity (TI) into account. <xref ref-type="bibr" rid="bib1.bibx11" id="text.21"/> followed a similar approach to <xref ref-type="bibr" rid="bib1.bibx39" id="text.22"/> and <xref ref-type="bibr" rid="bib1.bibx18" id="text.23"/> but extended the RANS-LUT model by including both shapes of velocity deficits and wake-added TI that depend on the thrust coefficient and ambient turbulence intensity.  A wind farm flow was constructed by superposing the velocity deficit and wake-added TI, looking up different wake shapes for the local TI and thrust coefficient obtained from the local wind speed; the best results were obtained for linear superposition.  <xref ref-type="bibr" rid="bib1.bibx11" id="text.24"/> developed the RANS-LUT model for neutral surface layer conditions and verified the flow field of the RANS-LUT model for neutral conditions against RANS-AD wind turbine row simulations.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e265">RANS-based surrogate wake models: LUT flow variables and input dimensions.</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="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:colspec colnum="6" colname="col6" align="center"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" colsep="1">LUT flow variables </oasis:entry>
         <oasis:entry rowsep="1" namest="col4" nameend="col6">Input dimensions </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Model</oasis:entry>
         <oasis:entry colname="col2">Velocity deficit</oasis:entry>
         <oasis:entry colname="col3">Wake-added TI</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M6" 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></oasis:entry>
         <oasis:entry colname="col5">Inflow TI</oasis:entry>
         <oasis:entry colname="col6">Atmospheric stability</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Fuga, linearized RANS <xref ref-type="bibr" rid="bib1.bibx29" id="paren.25"/></oasis:entry>
         <oasis:entry colname="col2">✓</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M7" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M8" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">✓</oasis:entry>
         <oasis:entry colname="col6">✓</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RANS-LUT <xref ref-type="bibr" rid="bib1.bibx39" id="paren.26"/></oasis:entry>
         <oasis:entry colname="col2">✓</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M9" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">✓</oasis:entry>
         <oasis:entry colname="col5">✓</oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M10" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RANS-LUT <xref ref-type="bibr" rid="bib1.bibx18" id="paren.27"/></oasis:entry>
         <oasis:entry colname="col2">✓</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M11" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">✓</oasis:entry>
         <oasis:entry colname="col5">✓</oasis:entry>
         <oasis:entry colname="col6">✓</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RANS-LUT <xref ref-type="bibr" rid="bib1.bibx11" id="paren.28"/></oasis:entry>
         <oasis:entry colname="col2">✓</oasis:entry>
         <oasis:entry colname="col3">✓</oasis:entry>
         <oasis:entry colname="col4">✓</oasis:entry>
         <oasis:entry colname="col5">✓</oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M12" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Proposed RANS-LUT</oasis:entry>
         <oasis:entry colname="col2">✓</oasis:entry>
         <oasis:entry colname="col3">✓</oasis:entry>
         <oasis:entry colname="col4">✓</oasis:entry>
         <oasis:entry colname="col5">✓</oasis:entry>
         <oasis:entry colname="col6">✓</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e483">In this work, we extend the model of <xref ref-type="bibr" rid="bib1.bibx11" id="text.29"/> by including atmospheric stability following MOST, and we compare the results with full RANS-AD wind farm simulations, including wind turbine power, for a range of stability conditions following MOST.  In addition, an alternative superposition method is applied to the velocity field, which is based on the momentum-conserving superposition method of <xref ref-type="bibr" rid="bib1.bibx57" id="text.30"/>.  The latter leads to a more consistent model that can be used to obtain good results of both the wind farm flow and turbine power.  Finally, we show the importance of including wake-added TI in the RANS-LUT model.  The proposed RANS-based surrogate model is summarized in Table <xref ref-type="table" rid="T1"/>.  The RANS-AD and extended RANS-LUT models are described in Sect. <xref ref-type="sec" rid="Ch1.S2"/>, and the results are discussed in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Methodology</title>
      <p id="d2e506">The proposed RANS-LUT surrogate model is based on a database of single-wake simulations.  In this work, RANS-AD simulations are employed to generate the aforementioned database and are discussed in detail in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>. The RANS-AD model is also used to run a set of wind farm simulation test cases, discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>, to evaluate the performance of the RANS-LUT model.  The original RANS-LUT model of <xref ref-type="bibr" rid="bib1.bibx11" id="text.31"/> for the neutral case and proposed extensions are discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Test cases</title>
      <p id="d2e525">The RANS-LUT model results are evaluated against RANS-AD simulations of a row of regularly spaced wind turbines and a square regular wind farm layout consisting of <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> turbines, respectively.  The turbine row is simulated for a row-aligned wind direction, while the square wind farm is simulated for a range of wind directions for every <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> between 270 and <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:mn mathvariant="normal">315</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>,  where <inline-formula><mml:math id="M17" display="inline"><mml:mn mathvariant="normal">270</mml:mn></mml:math></inline-formula> and <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:mn mathvariant="normal">315</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> are aligned with a wind farm edge and a wind farm diagonal, respectively.  The test cases are listed in Table <xref ref-type="table" rid="T2"/>.  Each case is simulated for a turbine spacing of <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M21" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula> as the rotor diameter, and two inflow wind speeds corresponding to a below- and above-rated wind speed, which lead to different thrust coefficients.  Furthermore, three different stability conditions, labeled as stable, neutral, and unstable, are employed that differ in both ambient TI and surface layer stability.  Here, the TI is based on the turbulent kinetic energy at hub height, and the stability parameter is defined as <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> as the reference height set equal to the hub height, <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> as the roughness length, and <inline-formula><mml:math id="M25" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> as the Obukhov length.  The TI and <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> values are <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.06</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> for the stable, neutral, and unstable cases, respectively.  The resulting normalized profiles are shown in Fig. <xref ref-type="fig" rid="F1"/> and further discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e743">Test cases.</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="left"/>
     <oasis:colspec colnum="5" colname="col5" align="left"/>
     <oasis:colspec colnum="6" colname="col6" align="left"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Case</oasis:entry>
         <oasis:entry colname="col2">Number of</oasis:entry>
         <oasis:entry colname="col3">Spacing</oasis:entry>
         <oasis:entry colname="col4">Wind speed</oasis:entry>
         <oasis:entry colname="col5">Wind direction</oasis:entry>
         <oasis:entry colname="col6">Stability</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">turbines</oasis:entry>
         <oasis:entry colname="col3">[<inline-formula><mml:math id="M29" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col4">[<inline-formula><mml:math id="M30" 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>]</oasis:entry>
         <oasis:entry colname="col5">[<inline-formula><mml:math id="M31" display="inline"><mml:mi mathvariant="italic">°</mml:mi></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col6"/>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Turbine row</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">4, 8</oasis:entry>
         <oasis:entry colname="col4">11 (below-rated), 14 (above-rated)</oasis:entry>
         <oasis:entry colname="col5">270 (row-aligned)</oasis:entry>
         <oasis:entry colname="col6">Stable, neutral, unstable</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">4, 8</oasis:entry>
         <oasis:entry colname="col4">11 (below-rated), 14 (above-rated)</oasis:entry>
         <oasis:entry colname="col5">270-315, every 3</oasis:entry>
         <oasis:entry colname="col6">Stable, neutral, unstable</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e909">Normalized inflow profiles of wind speed <bold>(a)</bold>, turbulence intensity <bold>(b)</bold>, and eddy viscosity <bold>(c)</bold> as computed by the 1D precursor and compared with MOST. Rotor area of the NREL-5 MW reference turbine is depicted with horizontal dashed lines.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f01.png"/>

        </fig>

      <p id="d2e928">The employed turbine is based on the NREL-5MW reference turbine <xref ref-type="bibr" rid="bib1.bibx21" id="paren.32"/>, which has a rotor diameter and hub height of 126 and 90 m, respectively.  However, we use a general turbine model to represent the wind speed curves of the thrust coefficient <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, the power coefficient <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and the tip speed ratio <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, with constant below-rated values of <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>P,r</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.45</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">7.5</mml:mn></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx53" id="paren.33"/>, leading to a rated wind speed <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of 11.33 <inline-formula><mml:math id="M41" 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>.  The use of a general turbine model makes it easier to test the RANS-LUT surrogate model against RANS-AD simulations of wind farms using a constant <inline-formula><mml:math id="M42" 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 variable <inline-formula><mml:math id="M43" 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> by applying below- and above-rated wind speed cases, as listed in Table <xref ref-type="table" rid="T2"/>.  The generic turbine model is fully defined as <xref ref-type="bibr" rid="bib1.bibx53" id="paren.34"/>

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M44" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>U</mml:mi><mml:mtext>in</mml:mtext></mml:msub><mml:mo>≤</mml:mo><mml:mi>U</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>r</mml:mtext></mml:msub><mml:mo>:</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>P,r</mml:mtext></mml:msub><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>U</mml:mi><mml:mtext>r</mml:mtext></mml:msub><mml:mo>&lt;</mml:mo><mml:mi>U</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>out</mml:mtext></mml:msub><mml:mo>:</mml:mo><mml:mspace linebreak="nobreak" width="1em"/></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>U</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3.2</mml:mn></mml:msup><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>P,r</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>U</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="1em"/><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          with <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>in</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><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="M46" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>out</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><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> as the cut-in and cut-out wind speed, respectively.  The above-rated thrust coefficient follows a power law with exponent 3.2, which fits turbine data well, covering a large range of turbine sizes <xref ref-type="bibr" rid="bib1.bibx53" id="paren.35"/>.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>RANS-AD CFD model</title>
      <p id="d2e1357">The RANS-AD simulations are conducted with the CFD wind farm flow framework PyWakeEllipSys v5.4 <xref ref-type="bibr" rid="bib1.bibx14" id="paren.36"/>, which uses the in-house incompressible finite-volume CFD solver EllipSys3D, initially developed by <xref ref-type="bibr" rid="bib1.bibx24" id="text.37"/> and <xref ref-type="bibr" rid="bib1.bibx41" id="text.38"/>.  The AD model <xref ref-type="bibr" rid="bib1.bibx37 bib1.bibx45" id="paren.39"/> is based on a polar grid using 10 and 32 cells in the radial and azimuthal directions, respectively.  Thrust and tangential force distributions are calculated with the analytical model of <xref ref-type="bibr" rid="bib1.bibx43" id="text.40"/>, which depends on <inline-formula><mml:math id="M47" 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>, <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M49" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula>.  The force distributions are scaled with the local shear while maintaining the input integral forces <xref ref-type="bibr" rid="bib1.bibx52" id="paren.41"/>.</p>
<sec id="Ch1.S2.SS2.SSS1">
  <label>2.2.1</label><title>Numerical domain</title>
      <p id="d2e1415">The numerical grid is a Cartesian domain with a refined region around the horizontal center at which the turbines are placed.  The grid topology and boundary conditions are the same as specified in <xref ref-type="bibr" rid="bib1.bibx55" id="text.42"/>; however, the domain dimensions are case-specific.  For the single-wind-turbine case, a domain with dimensions <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:mn mathvariant="normal">1024</mml:mn><mml:mi>D</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1005</mml:mn><mml:mi>D</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> is employed for the streamwise, lateral, and vertical directions, respectively.  The inner refined domain is employed to resolve the wind turbine wake(s). It has dimensions <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:mn mathvariant="normal">24</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">3</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, is placed at <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>≤</mml:mo><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:mn mathvariant="normal">2.5</mml:mn><mml:mo>≤</mml:mo><mml:mi>y</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula>, and contains a mesh with uniform horizontal spacing of <inline-formula><mml:math id="M54" 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>.  Vertically, the cells grow with height up to <inline-formula><mml:math id="M55" 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> in the rotor area and <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> at the end of the refined domain using a first cell height of <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">200</mml:mn></mml:mrow></mml:math></inline-formula>.  The cells are distributed as <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mn mathvariant="normal">288</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">128</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula>, leading to a total number of 2.4 million cells. The cell spacing of <inline-formula><mml:math id="M59" 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> is sufficient to resolve the wind farm flow under neutral conditions <xref ref-type="bibr" rid="bib1.bibx50" id="paren.43"/>.  A finer grid spacing may be necessary for stable-inflow cases depending on the user's quantity of interest.  For the present study, we use the same grid spacing of <inline-formula><mml:math id="M60" 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> for all stability cases for simplicity.  Our goal is to evaluate the RANS-LUT surrogate model against RANS-AD wind farm simulations using the same grid spacing.  If one would like to apply a finer spacing, then the refined single-wake database would also improve the RANS-LUT model.  A grid refinement study of RANS-AD single-wake simulations is performed in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/>.  The numerical domains of the wind turbine row and square wind farm are larger in the horizontal extent, and the corresponding grid dimensions are listed in Table <xref ref-type="table" rid="T3"/>.</p>

<table-wrap id="T3" specific-use="star"><label>Table 3</label><caption><p id="d2e1609">Domain dimensions and number of cells of RANS-AD single-wake and wind farm test cases.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Case</oasis:entry>
         <oasis:entry colname="col2">Spacing</oasis:entry>
         <oasis:entry colname="col3">Outer domain size [<inline-formula><mml:math id="M61" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col4">Inner domain size [<inline-formula><mml:math id="M62" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>]</oasis:entry>
         <oasis:entry colname="col5">Cells (total number)</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Single-wake database</oasis:entry>
         <oasis:entry colname="col2">–</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:mn mathvariant="normal">1024</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1005</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mn mathvariant="normal">24</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mn mathvariant="normal">288</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">128</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula> (2.4 million)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Turbine row</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M66" display="inline"><mml:mn mathvariant="normal">4</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mn mathvariant="normal">1053</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1007</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mn mathvariant="normal">53</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mn mathvariant="normal">512</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">160</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula> (5.2 million)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Turbine row</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M70" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:mn mathvariant="normal">1081</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1007</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M72" display="inline"><mml:mrow><mml:mn mathvariant="normal">81</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:mn mathvariant="normal">736</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">160</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula> (7.4 million)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M74" display="inline"><mml:mn mathvariant="normal">4</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:mn mathvariant="normal">1065</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1046</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:mn mathvariant="normal">65</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">46</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:mn mathvariant="normal">608</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">448</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula> (17.4 million)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wind farm</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M78" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:mn mathvariant="normal">1105</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1086</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:mn mathvariant="normal">105</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">86</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:mn mathvariant="normal">928</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">768</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">64</mml:mn></mml:mrow></mml:math></inline-formula> (45.6 million)</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
<sec id="Ch1.S2.SS2.SSS2">
  <label>2.2.2</label><title>Inflow and turbulence model</title>
      <p id="d2e1999">The inflow conditions represent an atmospheric surface layer including atmospheric stability following MOST <xref ref-type="bibr" rid="bib1.bibx26" id="paren.44"/>.  We employ a two-equation <inline-formula><mml:math id="M82" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M83" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula> turbulence model that is in balance with MOST <xref ref-type="bibr" rid="bib1.bibx51 bib1.bibx13 bib1.bibx6" id="paren.45"/>, which is important for isolating the turbine and wind farm flow effects.  The turbulence model has the following form:

                  <disp-formula specific-use="align" content-type="numbered"><mml:math id="M84" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</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 mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="italic">μ</mml:mi></mml:msub><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>/</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>k</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mi mathvariant="italic">ε</mml:mi></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E3"><mml:mtd><mml:mtext>3</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>D</mml:mi><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mi>D</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>k</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:mi mathvariant="script">P</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="script">B</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>S</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E4"><mml:mtd><mml:mtext>4</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:mtable class="aligned" rowspacing="0.2ex" columnspacing="1em" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>D</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:mrow><mml:mrow><mml:mi>D</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">ε</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></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 class="stylechange" displaystyle="true"/><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="script">P</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub><mml:mi mathvariant="script">B</mml:mi><mml:mo>)</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">ε</mml:mi><mml:mi>k</mml:mi></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            with <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> as the Cartesian coordinates in streamwise, lateral, and vertical directions, respectively.  The turbulence model solves equations for the turbulent kinetic energy, <inline-formula><mml:math id="M86" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, and its dissipation, <inline-formula><mml:math id="M87" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula>, from which the eddy viscosity, <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, is calculated.  In addition, the Boussinesq hypothesis <xref ref-type="bibr" rid="bib1.bibx9" id="paren.46"/> is applied to compute the Reynolds stresses.  The source terms <inline-formula><mml:math id="M89" display="inline"><mml:mi mathvariant="script">P</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M90" display="inline"><mml:mi mathvariant="script">B</mml:mi></mml:math></inline-formula> represent the production of turbulence due to shear and buoyancy, respectively; the latter is negative for stable conditions.  The effect of the non-neutral conditions is mainly modeled by the turbulent buoyancy source term since a momentum buoyancy source and a temperature equation are not employed.  The MOST profiles are in balance with the turbulence model using an additional source term <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and a height-dependent <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx51" id="paren.47"/>.  They are derived by substituting the MOST similarity functions of the normalized shear and potential temperature gradient into the <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ε</mml:mi></mml:mrow></mml:math></inline-formula> turbulence model; the full expressions of <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are provided in <xref ref-type="bibr" rid="bib1.bibx51" id="text.48"/>.  The original turbulence model used a buoyancy source that was a function of the stability and local shear.  However, this can lead to a non-physical wake recovery for unstable conditions, where an increase in turbulent buoyancy production could lead to less wake recovery.  In the present work, we use a constant turbulent buoyancy source term, <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:mi mathvariant="script">B</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mo>*</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup><mml:mo>/</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which solves the wake recovery problem for unstable conditions <xref ref-type="bibr" rid="bib1.bibx6" id="paren.49"/>. Here, <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula> is the friction velocity, and <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.4</mml:mn></mml:mrow></mml:math></inline-formula> is the von Kármán constant.  However, we find that using a constant buoyancy source term for stable conditions can lead to numerical instabilities.  For stable conditions, the constant buoyancy source is negative and reduces <inline-formula><mml:math id="M99" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>.  When the <inline-formula><mml:math id="M100" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> equation is solved for, the other source terms can vary, while the buoyancy source remains constant. This can lead to negative <inline-formula><mml:math id="M101" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> values.  The numerical problem is solved by multiplying the constant buoyancy source term by the ratio of local eddy viscosity, <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, to inflow eddy viscosity, <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mo>,</mml:mo><mml:mtext>MOST</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, for stable conditions only:

                  <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M104" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="script">B</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>*</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mo>,</mml:mo><mml:mtext>MOST</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mo>*</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mi mathvariant="italic">κ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the MOST function of normalized wind shear.  The idea of using <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mo>,</mml:mo><mml:mtext>MOST</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M107" display="inline"><mml:mi mathvariant="script">B</mml:mi></mml:math></inline-formula> is based on the fact that both the original buoyancy production and the turbulent shear production also scale with <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.  The modification does not change a single wake under stable conditions significantly.  The eddy viscosity is limited with a near-wake-length-scale limiter, <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx50 bib1.bibx46" id="paren.50"/>, extended to non-neutral conditions <xref ref-type="bibr" rid="bib1.bibx13" id="paren.51"/> and later revised for unstable conditions <xref ref-type="bibr" rid="bib1.bibx6" id="paren.52"/>.  The <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> function depends on the local shear, <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>=</mml:mo><mml:mi>k</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">ε</mml:mi><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>, normalized by the inflow shear, <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:msqrt><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="italic">μ</mml:mi></mml:msub></mml:mrow></mml:msqrt><mml:msqrt><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub></mml:mrow></mml:msqrt></mml:mrow></mml:math></inline-formula>, and two model constants, <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4.5</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.0</mml:mn></mml:mrow></mml:math></inline-formula>.  The other constants in the turbulence model are set as <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="italic">μ</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:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="italic">ε</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0.03</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.3</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.21</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.92</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. Finally, the molecular viscosity, <inline-formula><mml:math id="M116" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula>, is set as <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mn mathvariant="normal">1.78</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">5</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><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> but has no influence on the solution since <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>≫</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx52" id="paren.53"/>.</p>
      <p id="d2e3002">The non-dimensional inflow is defined by the TI based on the turbulent kinetic energy, <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></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:mi>k</mml:mi></mml:mrow></mml:msqrt><mml:mo>/</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and the stability parameter, <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> as the freestream wind speed.  <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> are used to set the roughness length, <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and the friction velocity, <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>:

              <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M126" display="block"><mml:mtable class="aligned" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msqrt><mml:msubsup><mml:mi>C</mml:mi><mml:mi mathvariant="italic">μ</mml:mi><mml:mstyle scriptlevel="+1"><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle></mml:msubsup><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mstyle scriptlevel="+1"><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle></mml:mrow></mml:msup><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mstyle scriptlevel="+1"><mml:mfrac><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle></mml:msup><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>exp⁡</mml:mi><mml:mfenced open="[" close="]"><mml:mrow><mml:mi mathvariant="italic">κ</mml:mi><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mo>*</mml:mo></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="normal">Ψ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            with <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Φ</mml:mi><mml:mi mathvariant="italic">ε</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ψ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as MOST functions defined in <xref ref-type="bibr" rid="bib1.bibx51" id="text.54"/>.  Even though a turbulence model is employed that is analytically in balance with MOST, numerical deviations can occur. Therefore, a 1D precursor <xref ref-type="bibr" rid="bib1.bibx47" id="paren.55"/> is used to simulate each MOST profile using the same vertical grid as used for the 3D successor simulations.  The friction velocity from Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) is rescaled to get the desired wind speed at the reference height, <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, using Reynolds number similarity.  These scaling factors, computed as <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>1D precursor</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, are 0.9901, 0.9959, and 0.9962, for the stable, neutral, and unstable cases, respectively.  The scaling factors indicate the numerical error in the streamwise velocity at the reference height.  The scaled precursor inflow profiles are compared with the MOST analytic solutions in Fig. <xref ref-type="fig" rid="F1"/>.  While the precursor profiles of wind speed and eddy viscosity compare well to the analytic solutions, the precursor profile of TI has a small but visible deviation from MOST. This stems from numerical errors in the <inline-formula><mml:math id="M132" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> profile leading to TI values at hub height equal to 0.0493, 0.0592, and 0.0995, for the stable, neutral, and unstable cases, respectively.</p>
</sec>
<sec id="Ch1.S2.SS2.SSS3">
  <label>2.2.3</label><title>Single-wake database</title>
      <p id="d2e3415">The velocity deficit normalized by the inflow velocity and wake-added TI are independent of the Reynolds number for fixed values of the inflow TI and stability conditions <xref ref-type="bibr" rid="bib1.bibx52" id="paren.56"/>.  Hence, the inflow wind speed, <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and turbine size are not relevant parameters.  The prior holds if the operational parameters as <inline-formula><mml:math id="M134" 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>, <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M136" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> are set correctly.  The latter applies for a constant ratio of turbine hub height to rotor diameter, <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, which also defines the ground clearance.  The Reynolds number similarity reduces the number of independent parameters to a total of eight: two inflow parameters, <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and six turbine-related parameters, <inline-formula><mml:math id="M140" 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>, <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M142" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, rotor tilt angle <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>tilt</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and yaw misalignment angle <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>yaw</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.  Here, we use a reference height equal to the turbine hub height, <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.  However, it is not necessary to consider all possible combinations of the aerodynamic coefficients and tip speed ratio since they are related.  One could use the general wind turbine model of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) to replace <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>P,r</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:mo>/</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3.2</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</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:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3.2</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and simulate a range of <inline-formula><mml:math id="M151" 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 up to <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>.  The number of dimensions is still eight, but the variation in <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>T,r</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mtext>P,r</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> between existing utility-scale turbines is relatively small <xref ref-type="bibr" rid="bib1.bibx53" id="paren.57"/>.  For the more simple AD model using a normalized axi-symmetric fixed thrust force distribution <xref ref-type="bibr" rid="bib1.bibx50" id="paren.58"/>, without tangential forces, and zero tilt and yaw misalignment angles, the number of turbine parameters reduces to two, namely, <inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>.  For such a simplified setup, it is practical to create a general single-wake RANS database that could be used for any wind turbine model.  However, in this work we employ a more realistic AD model including tangential forces and analytic force distributions, based on a generic version of the NREL-5 MW reference turbine, as discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>.</p>
      <p id="d2e3816">The RANS-AD single-wake database of the generic NREL-5 MW reference turbine is made by a parametric study of <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M160" 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>.  We use <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.06</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.08</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.15</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 mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M163" 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">0</mml:mn></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M164" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula> with an interval of 0.1.  The corresponding <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M166" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> values are obtained from their respective relationship with the wind speed and using <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>U</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.  Simulating stable conditions for a high TI inflow leads to unrealistic roughness length values obtained from Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>).  This is overcome by replacing the stable single-wake cases for <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> in the database with the neutral single-wake cases, which is justified by the fact that a high <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> often correlates with neutral conditions.</p>
      <p id="d2e4020">For every fixed TI and stability, the variation in <inline-formula><mml:math id="M170" 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 simulated consecutively by first running a zero thrust coefficient simulation until convergence, followed by adjusting the aerodynamic coefficients from low to high for the other <inline-formula><mml:math id="M171" 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> cases while maintaining the inflow wind speed at hub height at 1.0 <inline-formula><mml:math id="M172" 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>.  The results are not affected due to Reynolds number similarity, but the total number of required iterations is an order of magnitude less compared to running all simulations separately.  In total, about 500 CPU hours are used to simulate 153 single-wake cases.  Note that the stable single-wake cases for <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula> are not simulated, leading to <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mn mathvariant="normal">189</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">36</mml:mn><mml:mo>=</mml:mo><mml:mn mathvariant="normal">153</mml:mn></mml:mrow></mml:math></inline-formula> cases.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>RANS-LUT surrogate model</title>
      <p id="d2e4102">The RANS-LUT wind farm flow model is implemented within PyWake <xref ref-type="bibr" rid="bib1.bibx32" id="paren.59"/> (v2.6.18) – an open-source, Python-based Annual Energy Production (AEP) calculator with an extensive library of engineering wake and blockage models – following the approach by <xref ref-type="bibr" rid="bib1.bibx11" id="text.60"/>. Figure <xref ref-type="fig" rid="F2"/> provides an overview of the different components involved in building the surrogate model, including generating a RANS-AD single-wake database (a and b); deriving single-turbine blockage, wake, and added-TI models (c–f); rotor averaging (g–i); and superimposing individual turbine effects (j–l) to arrive at the wind farm flow field (m). All components are discussed in detail in the remainder of this section.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e4115">Overview of RANS-AD single-wake database <bold>(a, b)</bold> and workflow of the proposed RANS-LUT surrogate model <bold>(c–m)</bold>. Contour plots depict the flow at hub height, and the magenta rectangle illustrates the location of the AD model. Panels <bold>(g)</bold>–<bold>(i)</bold> are rotor-averaging (RA) operators. An example of a final result of the iterative method <italic>All2AllIterative</italic> is shown in <bold>(m)</bold>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f02.png"/>

        </fig>

<sec id="Ch1.S2.SS3.SSS1">
  <label>2.3.1</label><title>Single-turbine model</title>
      <p id="d2e4150">The single-turbine deficit and wake-added TI model by <xref ref-type="bibr" rid="bib1.bibx11" id="text.61"/> is built by normalizing the streamwise velocity deficit and added TI fields with the background flow, such that for a single RANS simulation

              <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M175" display="block"><mml:mtable class="aligned" columnspacing="1em" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><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="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>U</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/></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:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:msqrt><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:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msup><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            with normalized deficit <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> and added TI <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, computed from streamwise velocity <inline-formula><mml:math id="M178" display="inline"><mml:mi>U</mml:mi></mml:math></inline-formula> and turbulent kinetic energy <inline-formula><mml:math id="M179" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>. The background flow is denoted by <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mo>⋅</mml:mo><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and corresponds to a simulation with <inline-formula><mml:math id="M181" 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">0</mml:mn></mml:mrow></mml:math></inline-formula>. All variables are given in the turbine hub coordinate system <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, with turbine hub position <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the RANS frame of reference and <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>=</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:mi>z</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e4455">As illustrated in Fig. <xref ref-type="fig" rid="F2"/>a and b, the RANS-LUT wake model employed here is built from a RANS-AD single-wake database <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">D</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which is a discrete collection of numerical solutions sampled across a range of thrust coefficients, inflow turbulence intensities, and stability parameters. To reconstruct the continuous velocity deficit and turbulence intensity fields from these discrete samples, a multi-dimensional interpolation operator <inline-formula><mml:math id="M186" display="inline"><mml:mi mathvariant="script">I</mml:mi></mml:math></inline-formula> is employed. The final single-wake model takes the functional form

              <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M187" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="script">I</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="script">D</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M188" display="inline"><mml:mi mathvariant="script">I</mml:mi></mml:math></inline-formula> maps the discrete entries in <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">D</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to a continuous domain.  Within PyWake this is done using the xarray package <xref ref-type="bibr" rid="bib1.bibx17" id="paren.62"/> for multi-dimensional data handling.  However, PyWake's native 1D grid interpolator is employed by collapsing all dimensions into a 1D array, which is faster than the multi-dimensional xarray interpolator.  Furthermore, we use linear interpolation, due to its robustness and speed.  To optimize memory usage, <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">D</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> retains only the vertical CFD layers spanning the rotor-swept area – defined by the range between the minimum and maximum tip heights across all turbines within a farm.  For wind farms with heterogeneous turbine types, <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">D</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is expanded to include specific entries for each turbine model. Figure <xref ref-type="fig" rid="F2"/>c and d show how the single-wake deficit database is split into up- and downstream regions to build PyWake blockage and wake deficit models.  This results in some effects related to blockage, as for example the speed-up in wind speed around the turbine wake, becoming part of the wake deficit model.  As depicted in Fig. <xref ref-type="fig" rid="F2"/>f, this split is not done for the wake-added TI model.</p>
</sec>
<sec id="Ch1.S2.SS3.SSS2">
  <label>2.3.2</label><title>Wind farm flow field</title>
      <p id="d2e4603">To move from the non-dimensional quantities provided by the single-wake model in Eq. (<xref ref-type="disp-formula" rid="Ch1.E8"/>) to a physical representation of the flow field, they must be scaled by some reference inflow values, which are referred to as <italic>effective</italic> wind speed, <inline-formula><mml:math id="M192" display="inline"><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>, and TI, <inline-formula><mml:math id="M193" display="inline"><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula>, in PyWake. As turbines inside a farm respond to the local waked inflow, we compute quantities at each rotor location. In general the effective wind speed at the <inline-formula><mml:math id="M194" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th turbine in PyWake in the wind farm coordinate system is given by

              <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M195" display="block"><mml:mrow><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mstyle background="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g02.png"/></mml:mrow></mml:math></disp-formula>

              <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M196" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>〈</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mo>〉</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="1em" linebreak="nobreak"/><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mi>n</mml:mi></mml:munder><mml:msub><mml:mi>w</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            where wake deficits <inline-formula><mml:math id="M197" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">W</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> from upstream turbines <inline-formula><mml:math id="M198" display="inline"><mml:mi mathvariant="script">W</mml:mi></mml:math></inline-formula> and blockage deficits <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> from downstream turbines <inline-formula><mml:math id="M200" display="inline"><mml:mi mathvariant="script">B</mml:mi></mml:math></inline-formula> are superimposed <inline-graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g01.png"/> (self-induction is excluded) and rotor-averaged <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mo>⋅</mml:mo><mml:msub><mml:mo>〉</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> separately and deducted from the wind farm background flow, which is evaluated at the rotor center <inline-formula><mml:math id="M202" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This signifies that background flow variations over the rotor area (shear, veer) do not impact the effective wind speed and consequently neither turbine power nor thrust. Note that this differs from the way the RANS-AD reacts to the flow, which responds to the local variation over the AD instead, i.e <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>n</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Rotor averaging, executed preceding superposition, is performed by weighing the scaled deficits <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> over the rotor area <inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with weights <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mi>n</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> assigned to discrete sampling points, representing a numerical integration across the rotor disk where <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:mo>∑</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mi>n</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>.  Here, the normalized deficits are scaled by the turbine local wind speed; however, in PyWake it is generally possible to switch to freestream scaling, meaning that <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in the above.  Furthermore, superposition and rotor-averaging methods are allowed to differ between blockage and wake deficits in PyWake, and, whilst not used here, it is possible to introduce multi-dimensional thrust curves.  Generally the background flow in PyWake is allowed to vary freely in space, yet here we ensure it follows the RANS inflow conditions that only include vertical shear following MOST:

                  <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M209" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>/</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Ψ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>ln⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">Ψ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with <inline-formula><mml:math id="M210" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ψ</mml:mi><mml:mi mathvariant="normal">m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the integrated normalized shear from MOST, as defined in <xref ref-type="bibr" rid="bib1.bibx51" id="text.63"/>.  The effective TI is only computed using upstream turbines:

              <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M211" display="block"><mml:mrow><mml:mstyle background="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g03.png"/><mml:mspace linebreak="nobreak" width="0.25em"/></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M212" display="inline"><mml:mo>⊕</mml:mo></mml:math></inline-formula> denotes the superposition of background with added TI.  As the single-wake database underlying the RANS-LUT model is generated through a parametric variation in inflow TI, our approach inherently assumes that turbines respond identically to ambient inflow and wake-added TI.</p>
      <p id="d2e5165">Due to the inclusion of up- and downstream effects, an iterative approach needs to be employed to obtain the effective wind speed and TI at all turbines. As shown in Fig. <xref ref-type="fig" rid="F2"/>m, here we use PyWake's <italic>All2AllIterative</italic> solver. Once the operating conditions of each turbine have been determined, they are fixed, and the final wind farm flow field at a point <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is determined by aggregating contributions from all turbines <inline-formula><mml:math id="M214" display="inline"><mml:mi mathvariant="script">N</mml:mi></mml:math></inline-formula>–omitting all other dimensions except <inline-formula><mml:math id="M215" display="inline"><mml:mi mathvariant="bold-italic">x</mml:mi></mml:math></inline-formula> for <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>:

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M217" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E13"><mml:mtd><mml:mtext>13</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle background="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g04.png"/></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E14"><mml:mtd><mml:mtext>14</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle background="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g05.png"/></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S2.SS3.SSS3">
  <label>2.3.3</label><title>Superposition methods</title>
      <p id="d2e5250">As deficits and power production scale with the effective wind speed, the accuracy of our RANS-LUT model predictions strongly depends on our choice of superposition models. Whilst Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>) shows an explicit dependency on the deficit superposition models, their is also an implicit connection to the TI superposition, as the normalized deficit <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>U</mml:mi></mml:mrow></mml:math></inline-formula> is a function of the effective TI <inline-formula><mml:math id="M219" display="inline"><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>.  While <xref ref-type="bibr" rid="bib1.bibx11" id="text.64"/> found that linear superposition of velocity deficits and wake-added TI yielded the most accurate results, <xref ref-type="bibr" rid="bib1.bibx12" id="text.65"/> identified the superposition of the maximum added TI – <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mo>max⁡</mml:mo><mml:mi>j</mml:mi></mml:msub><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>〉</mml:mo></mml:mrow></mml:math></inline-formula> – as optimal; however they also utilized a different definition of wake-added TI, namely <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><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:mo>-</mml:mo><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:msqrt><mml:mo>/</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. As we follow the one by <xref ref-type="bibr" rid="bib1.bibx11" id="text.66"/> in Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>), we similarly linearly superimpose wake-added TI contributions as depicted in Fig. <xref ref-type="fig" rid="F2"/>l such that

              <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M222" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="script">W</mml:mi></mml:mrow></mml:munder><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>I</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mo>〉</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            Since blockage deficits are limited, they are also linearly superimposed – a valid approach as demonstrated by <xref ref-type="bibr" rid="bib1.bibx23" id="text.67"/>.</p>
      <p id="d2e5464">As mentioned above, <xref ref-type="bibr" rid="bib1.bibx11" id="text.68"/> similarly superimposed wake deficits linearly and found them to agree with RANS-AD simulations in terms of the wind farm velocity and TI fields.  However, as shown in detail in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>, we find that this is due to velocity superposition errors canceling those from using rotor center – <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub><mml:mo>〉</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mover accent="true"><mml:mi>U</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> – instead of rotor-averaged values.  As reported by <xref ref-type="bibr" rid="bib1.bibx57" id="text.69"/>, linear superposition overestimates wake deficits in deep arrays, and they consequently devised a momentum-deficit-conserving superposition method instead, which effectively acts as a weighted sum, such that the combined wind farm deficit is given by

              <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M224" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>U</mml:mi><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mi mathvariant="normal">Δ</mml:mi><mml:msup><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where lower- and uppercase letters refer to the single-turbine and combined wind farm velocities, respectively. The weights are given by the ratio between single-turbine <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and wind farm <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> wake convection velocities, which are determined by performing an integral over the plane perpendicular to the mean flow, <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>:

              <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M228" display="block"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>U</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>U</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>U</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            For a single turbine just replace with lowercase letters. Equations (<xref ref-type="disp-formula" rid="Ch1.E16"/>) and (<xref ref-type="disp-formula" rid="Ch1.E17"/>) are coupled, thus requiring an iterative approach.  Hence, to employ the weighted sum, cross-plane integrals need to be performed for single-turbine wakes and the combined wind farm flow at every iteration until convergence. If the cross-plane integrals are performed numerically, the computational cost would be prohibitive.  PyWake circumvents this by employing analytical solutions based on assuming Gaussian-shaped wake deficits, defined here as

              <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M229" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>exp⁡</mml:mi><mml:mfenced open="(" close=")"><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:msup><mml:mi mathvariant="italic">σ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            with centerline deficit <inline-formula><mml:math id="M230" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>, cross-wind distance <inline-formula><mml:math id="M231" display="inline"><mml:mi>r</mml:mi></mml:math></inline-formula>, and wake expansion <inline-formula><mml:math id="M232" display="inline"><mml:mi mathvariant="italic">σ</mml:mi></mml:math></inline-formula>.  <xref ref-type="bibr" rid="bib1.bibx57" id="text.70"/> already showed that for a single Gaussian wake there is an analytical solution to Eq. (<xref ref-type="disp-formula" rid="Ch1.E17"/>), as it has a finite integral.  Here, we show that there is also an analytical solution to the wind farm flow; substituting Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>) into Eq. (<xref ref-type="disp-formula" rid="Ch1.E17"/>) and assuming that <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> does not vary over <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:math></inline-formula>, the update of <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> can be written entirely in terms of single-wake parameters that can be precomputed:

              <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M236" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:msub><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mo>∫</mml:mo><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mo>⟂</mml:mo></mml:msub></mml:mrow></mml:msub><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></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:mspace width="1em" linebreak="nobreak"/><mml:mo>×</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msqrt><mml:mi mathvariant="italic">π</mml:mi></mml:msqrt><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mo>∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>&lt;</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>j</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="script">I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="script">I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><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:msubsup><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>(</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>i</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>j</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mspace width="1em" linebreak="nobreak"/></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:mspace linebreak="nobreak" width="1em"/><mml:msub><mml:mi>d</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></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>z</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mrow><mml:mi mathvariant="normal">H</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></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:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">I</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> represents the interaction between two wakes, meaning that if the combined deficit downstream of the <inline-formula><mml:math id="M238" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th turbine is to be computed, the interaction of its single wake with all preceding wakes (<inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>&lt;</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:math></inline-formula>) needs to be determined. As this nested sum can become expensive, small deficits less than 1 % of <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are skipped and added linearly (<inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>). As the superposition model assumes that the pressure has fully recovered (<inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>p</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>x</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), it does not hold in the near-wake, causing the algorithm to become unstable, as locally the individual wake convection velocity might exceed that of the combined wakes. Referring to Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>), if <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>→</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, as the numerator grows faster than the denominator, and <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> continues to drop.  Since <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> implies that individual wakes are convected faster than the background flow and that momentum deficit would be created during superposition (see Eq. <xref ref-type="disp-formula" rid="Ch1.E16"/>), we enforce <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula>.  This means that the weights – <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> – in the superposition method do not exceed 1.  The iterations are initialized by setting <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mo>max⁡</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msubsup><mml:mi>u</mml:mi><mml:mi>c</mml:mi><mml:mi>i</mml:mi></mml:msubsup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and stopped when <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:mo>max⁡</mml:mo><mml:mo>|</mml:mo><mml:mo>(</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>|</mml:mo><mml:mo>&lt;</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>, or five iterations have been completed.</p>
      <p id="d2e6543">Due to its accuracy, speed, and numerical stability, we adopt the analytical approach in our RANS-LUT model by fitting Gaussian profiles to the RANS-AD database. The fitting is performed over the downstream plane at hub height, <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>≤</mml:mo><mml:msup><mml:mi>x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula>, with an additional fit at <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> where the magnitude is limited to the axial induction from 1D momentum theory; see Fig. <xref ref-type="fig" rid="F2"/>e.  Subsequently, the normalized wake expansion, <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>, and centerline deficit, <inline-formula><mml:math id="M255" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">δ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula>, are provided by additional LUT-based surrogate models:

                  <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M256" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="italic">σ</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="italic">δ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mi mathvariant="script">L</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="script">G</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M257" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula> from the RANS-AD simulations is normalized by the hub height wind speed.  It should be noted that the assumption of the Gaussian velocity deficit is only applied to determine the superposition weights that are employed to superpose the velocity deficit shapes of the RANS-LUT model.  The performance of the weighted superposition method and effect of enforcing the <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msubsup><mml:mi>U</mml:mi><mml:mi>c</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>n</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup></mml:mrow></mml:math></inline-formula> limit is further discussed in Sect. <xref ref-type="sec" rid="App1.Ch1.S2"/>.</p>
      <p id="d2e6718">Finally, in this work we use a rotor-averaging model based on a Gaussian quadrature method with eight points, which is sufficient to obtain a rotor-average wind speed with an error of 0.65 % <xref ref-type="bibr" rid="bib1.bibx32" id="paren.71"/>.</p>
</sec>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Results and discussion</title>
      <p id="d2e6734">The RANS-AD and RANS-LUT surrogate models have been employed to simulate a wind turbine row and a square wind farm for different turbine spacing and inflow cases, as defined in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>.  The RANS-AD results are used to evaluate the RANS-LUT model performance in terms of the flow (Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> and <xref ref-type="sec" rid="Ch1.S3.SS2"/>), turbine power performance (Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>), and wind farm efficiency (Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>).  RANS-LUT model errors in streamwise velocity, <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="normal">U</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, TI, <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, turbine power, <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and wind farm efficiency, <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, are computed as the difference between the models normalized by the freestream values:

          <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M263" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="normal">U</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>LUT</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mtext>RANS</mml:mtext></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          <disp-formula id="Ch1.Ex1"><mml:math id="M264" display="block"><mml:mtable rowspacing="0.2ex" columnspacing="1em" class="aligned" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msqrt><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi>k</mml:mi><mml:mtext>LUT</mml:mtext></mml:msub></mml:mrow></mml:msqrt><mml:mo>-</mml:mo><mml:msqrt><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi>k</mml:mi><mml:mtext>RANS</mml:mtext></mml:msub></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>LUT</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>I</mml:mi><mml:mtext>RANS</mml:mtext></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>LUT</mml:mtext></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>RANS</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mi mathvariant="italic">η</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mo>∑</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:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>LUT</mml:mtext></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mo>∑</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:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>RANS</mml:mtext></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mtext>LUT</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mtext>RANS</mml:mtext></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        with <inline-formula><mml:math id="M265" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> as the turbine index, <inline-formula><mml:math id="M266" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> as the total number of turbines, <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as the turbine power of turbine <inline-formula><mml:math id="M268" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> as the turbine power obtained from the power curve as defined by the simple turbine model from Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), and <inline-formula><mml:math id="M270" display="inline"><mml:mi mathvariant="italic">η</mml:mi></mml:math></inline-formula> as the wind farm efficiency.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Flow</title>
      <p id="d2e7120">Figure <xref ref-type="fig" rid="F3"/> depicts the rotor-averaged streamwise velocity and wake-added TI obtained from the results of the turbine row consisting of eight turbines.  Results are shown for the three stability cases and two turbine spacings, <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula>.  A below-rated wind speed of 11 <inline-formula><mml:math id="M273" 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> is used, which means that all turbines operate at the same thrust coefficient of <inline-formula><mml:math id="M274" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula>.  Hence, the wake shapes applied in the RANS-LUT model only change by wake-added TI, but the magnitude in wake deficit still varies due to the wake superposition and effective wind speed scaling.  Figure <xref ref-type="fig" rid="F3"/>e–h depict the RANS-LUT model errors in streamwise velocity and wake-added TI.  Overall, the RANS-LUT model captures the trend of both the streamwise velocity and wake-added TI in terms of downstream development and effect of atmospheric stability.  The RANS-LUT model mainly overpredicts the wake-added TI inside the turbine row but underpredicts the wake-added TI in the wind farm wake for the turbine row with the smallest spacing, as shown in Fig. <xref ref-type="fig" rid="F3"/>e.  The opposite trend is obtained for the streamwise velocity errors for the smallest spacing and the stable and neutral cases (Fig. <xref ref-type="fig" rid="F3"/>e and f).  The largest absolute errors are 5 % and 2.5 % for the streamwise velocity (Fig. <xref ref-type="fig" rid="F3"/>e and f) and wake-added TI (Fig. <xref ref-type="fig" rid="F3"/>g and h), respectively.  It is also worth noting that the errors in the wind farm wake can be larger than the errors inside the turbine row, as obtained for the unstable   case with <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing (Fig. <xref ref-type="fig" rid="F3"/>e and g).  The RANS-LUT model includes blockage effects and predict similar values of upstream rotor-averaged streamwise velocity for the neutral and unstable cases, as shown in Fig. <xref ref-type="fig" rid="F3"/>e and f, for <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>s</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>.  However, the RANS-LUT model overpredicts the wind farm blockage for the stable case by about 1 %, which is not fully understood.</p>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e7229">Rotor-averaged streamwise velocity <bold>(a, b)</bold>, wake-added TI <bold>(c–d)</bold>, and corresponding model errors <bold>(e–h)</bold> in a turbine row with <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing and <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</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> (constant <inline-formula><mml:math id="M280" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula>).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f03.png"/>

        </fig>

      <p id="d2e7311">Figure <xref ref-type="fig" rid="F4"/> is the same as Fig. <xref ref-type="fig" rid="F3"/>, but an above-rated wind speed is applied, resulting in a varying turbine thrust coefficient.  Similar observations can be made as discussed for Fig. <xref ref-type="fig" rid="F3"/>, but the errors in streamwise velocity and wake-added TI are higher for the above-rated case, where the largest absolute errors are about 8 % and 3 %, respectively, obtained for the stable case.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e7323">Same as Fig. <xref ref-type="fig" rid="F3"/> for <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><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 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> (variable <inline-formula><mml:math id="M282" 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>).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f04.png"/>

        </fig>

      <p id="d2e7373">One can remove the error of looking up the wrong velocity deficit shape in the RANS-LUT model by simulating the below-rated wind speed case (constant <inline-formula><mml:math id="M283" 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>) with prescribed wake-added TI values obtained from the RANS-AD model.  The resulting normalized stream-wise velocity and corresponding error are depicted in Fig. <xref ref-type="fig" rid="F5"/>.  The largest absolute errors in the RANS-LUT model are obtained for the unstable case with <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing and are about 1 % higher in magnitude as calculated for the case where the wake-added TI is not prescribed by the RANS-AD model, as shown in Fig. <xref ref-type="fig" rid="F3"/>.  This indicates that an overestimation in wake-added TI can slightly reduce the error in stream-wise velocity deficit.  However, the main source of error is the velocity deficit superposition method, as shown in Fig. <xref ref-type="fig" rid="FB1"/>, and not the error made by looking up the wrong wake shape due to an overprediction of wake-added TI.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e7405">Rotor-averaged streamwise velocity <bold>(a, b)</bold> for prescribed wake-added TI values from RANS-AD and corresponding model errors <bold>(c, d)</bold> in a turbine row with <inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing and <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</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> (constant <inline-formula><mml:math id="M288" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula>).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f05.png"/>

        </fig>

      <p id="d2e7484">Figure <xref ref-type="fig" rid="F6"/> depicts the streamwise velocity and wake-added TI at hub height for the wind farm with <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing and a below-rated wind speed.  Results of the RANS-LUT and RANS-AD models are shown for all three stability cases.  A wind direction of <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mn mathvariant="normal">279</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> is selected where the downstream turbines operate in a partial wake depending on the stability conditions.  The streamwise velocity of the RANS-AD model (Fig. <xref ref-type="fig" rid="F6"/>a–c) shows that the wakes are more narrow for stable cases compared to the neutral and unstable cases.  As a result, the wake effects of the stable case are less pronounced compared to the other stability cases, which is shown in more detail in Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/> in terms of wind farm efficiency.  The RANS-LUT model is able to capture this trend, although it overpredicts the wake-added TI compared to the RANS-AD model for the stable and neutral cases, as shown in Fig. <xref ref-type="fig" rid="F6"/>g, j, h, and k.  In addition, the RANS-LUT model flow fields are less smooth compared to the RANS-AD model flow fields, mainly visible for the stable and neutral cases, which is a consequence of not solving the RANS and turbulence transport equations.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e7518">Flow at hub height in terms of streamwise velocity <bold>(a–f)</bold> and wake-added TI <bold>(g–l)</bold> for RANS-AD and RANS-LUT models, a wind farm with <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing, and <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><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> (constant <inline-formula><mml:math id="M293" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula>).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f06.jpg"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Consequence of not including wake-added turbulence</title>
      <p id="d2e7594">In order to quantify the impact of wake-added turbulence, the RANS-LUT model has been employed without wake-added TI for the wind turbine rows with different turbine spacing, atmospheric stability cases, and a below-rated wind speed (constant <inline-formula><mml:math id="M294" 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>).  This means that the employed velocity deficit wake shape is the same for all turbines per stability case.  Results of rotor-averaged streamwise velocity and the corresponding model error are depicted in Fig. <xref ref-type="fig" rid="F7"/>.  Figure <xref ref-type="fig" rid="F7"/>a and b show that the absence of wake-added TI in the RANS-LUT model leads to larger velocity deficits compared to the RANS-AD model.  The removal of wake-added TI results in large model errors in the rotor-averaged streamwise velocity that grows with downstream distance inside the wind farm up to <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">22</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, which is more than 3 times as large as largest error obtained from the RANS-LUT model including wake-added TI for the same case (Fig. <xref ref-type="fig" rid="F3"/>f).  Hence, it is important to include wake-added TI LUTs in the RANS-LUT model.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e7629">Rotor-averaged streamwise velocity <bold>(a, b)</bold> and corresponding model errors <bold>(c, d)</bold> in a turbine row with <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing and <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</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> (constant <inline-formula><mml:math id="M299" 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>), without wake-added TI LUTs.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f07.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Wind turbine power</title>
      <p id="d2e7712">Figure <xref ref-type="fig" rid="F8"/> depicts the turbine power of the simulated wind turbine row for two wind turbine spacings, a below- and above-rated wind speed, and all three stability cases.  The maximum absolute errors are 5.3 % and 20 % for the below- and above-rated wind speed cases, both obtained for the fourth turbine. In terms of mean absolute error in power of all turbines and cases, we obtain a values of 3.4 %.</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e7719">Wind turbine power <bold>(a–d)</bold> and RANS-LUT model error <bold>(e–h)</bold> of a turbine row with <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing and <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</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> and <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><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 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>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f08.png"/>

        </fig>

      <p id="d2e7811">It should be noted that the RANS-LUT model errors in the rotor-averaged wind speed and turbine power can be opposite in sign, which is a counterintuitive result.  For example, the error in rotor-averaged wind speed of the unstable case for an above-rated inflow wind speed is mostly positive (Fig. <xref ref-type="fig" rid="F4"/>e and f), while the corresponding errors in power are negative for the fourth, fifth, and sixth turbine (Fig. <xref ref-type="fig" rid="F8"/>g and h).  The reason for the possibility of opposite sign errors in wind speed and power is related to a difference in power calculation method employed by the RANS-AD and RANS-LUT models.  The RANS-LUT model follows the power calculation method in PyWake, which determines the power from the power curve using an effective wind speed at the turbine location that represents the effects of all neighboring turbines excluding its own induction, as explained in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS2"/>.  The latter is not possible for a wind farm flow based on CFD since the inflow wind speed at the turbine location is undefined for a wind farm.  Instead, an alternative power coefficient based on the actuator-disk-averaged wind speed is used from which the power can be obtained.  The alternative power coefficient can be determined from 1D momentum theory <xref ref-type="bibr" rid="bib1.bibx10" id="paren.72"/> or single RANS-AD simulations <xref ref-type="bibr" rid="bib1.bibx48" id="paren.73"/>; we employ the latter for the RANS-AD wind farm simulations in the present work.</p>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Wind farm efficiency</title>
      <p id="d2e7836">The wind farm efficiency of the square wind farm as a function of wind direction is shown in Fig. <xref ref-type="fig" rid="F9"/> for the two turbine spacings, a below- and above-rated wind speed, and all three stability cases.  Figure <xref ref-type="fig" rid="F9"/> shows that wind farm efficiency is lower for the below-rated wind speed and aligned wind direction as expected.  However, the wind farm efficiency is not always the lowest for stable conditions because the wakes are narrower compared to neutral and unstable conditions and can therefore miss the downstream turbines more easily for wind directions in between row-aligned wind directions for the wind farm layout with <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing, as discussed previously in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> using Fig. <xref ref-type="fig" rid="F6"/>.  This effect is also captured by the RANS-LUT model.  The RANS-LUT model errors, as shown in Fig. <xref ref-type="fig" rid="F9"/>c and d, are within <inline-formula><mml:math id="M305" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">3.0</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula> for the below-rated wind speed inflow.  The highest errors are obtained for the row-aligned wind directions (270 and 315°); for the above-rated wind speed (14 <inline-formula><mml:math id="M306" 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>); and for the smallest turbine spacing, with a maximum error of 10 %.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e7892">Wind farm efficiency <bold>(a, b)</bold> and corresponding RANS-LUT model error <bold>(c, d)</bold> for <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> wind farm with <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> <bold>(a, c)</bold> and <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> <bold>(b, d)</bold> turbine spacing and <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</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="M311" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><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>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f09.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS5">
  <label>3.5</label><title>Computational effort and memory usage</title>
      <p id="d2e8010">The computational effort of the RANS-AD and RANS-LUT models is listed in Table <xref ref-type="table" rid="T4"/> in terms of CPU hours and maximum memory usage.  The simulations are run on the Sophia HPC cluster <xref ref-type="bibr" rid="bib1.bibx44" id="paren.74"/>.  It consists of nodes with 32 physical cores (<inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mo>×</mml:mo></mml:mrow></mml:math></inline-formula> 16-core AMD EPYC 7351) with either 128 or 256 GB RAM.  The RANS-LUT model is run with a single core on a node with 256 GB RAM.  The RANS-AD simulations are parallel and have been run with 532 and 696 cores for the wind farms with <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing, respectively.  The RANS-LUT surrogate model is 5 orders of magnitude faster than the RANS-AD model for the wind farm case with <inline-formula><mml:math id="M315" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing.  The surrogate model also uses 2 orders of magnitude less memory.  However, the RANS-LUT model is relatively slow and requires a large amount memory compared to an analytical engineering wake model.  For example, running the TurbOPark analytical engineering wake model <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx31" id="paren.75"/> in PyWake using the non-calibrated setup described in <xref ref-type="bibr" rid="bib1.bibx54" id="text.76"/> for the wind farm with <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing requires 0.00074 CPU hours and 0.3 GB, which is about 25 times faster and 10 times less memory compared to the RANS-LUT model. Timings would be similar for any of the other analytical models available in PyWake.  Here, the same iterative method for including both wake and blockage effects is applied as that used in the RANS-LUT model.</p>

<table-wrap id="T4" specific-use="star"><label>Table 4</label><caption><p id="d2e8078">Computational effort of RANS-LUT and RANS-AD models obtained from wind farms for stable conditions using 32 flow cases.</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" colsep="1"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col3" align="center" colsep="1">RANS-AD </oasis:entry>
         <oasis:entry rowsep="1" namest="col4" nameend="col5" align="center">RANS-LUT </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Case</oasis:entry>
         <oasis:entry colname="col2">CPU hours</oasis:entry>
         <oasis:entry colname="col3">Memory [GB]</oasis:entry>
         <oasis:entry colname="col4">CPU hours</oasis:entry>
         <oasis:entry colname="col5">Memory [GB]</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> wind farm, <inline-formula><mml:math id="M318" display="inline"><mml:mrow><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">577</oasis:entry>
         <oasis:entry colname="col3">153</oasis:entry>
         <oasis:entry colname="col4">0.021</oasis:entry>
         <oasis:entry colname="col5">3.4</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> wind farm, <inline-formula><mml:math id="M320" display="inline"><mml:mrow><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">3176</oasis:entry>
         <oasis:entry colname="col3">243</oasis:entry>
         <oasis:entry colname="col4">0.018</oasis:entry>
         <oasis:entry colname="col5">3.4</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e8216">The CPU hours and memory usage of the RANS-LUT model increase with the number of turbines, <inline-formula><mml:math id="M321" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula>, as shown in Fig. <xref ref-type="fig" rid="F10"/>.  Results of additional simulations are shown for a square wind farm with <inline-formula><mml:math id="M322" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing for a single flow case (11 <inline-formula><mml:math id="M323" 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 <inline-formula><mml:math id="M324" display="inline"><mml:mrow><mml:mn mathvariant="normal">270</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>) using <inline-formula><mml:math id="M325" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:msup><mml:mn mathvariant="normal">4</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">8</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">16</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">32</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>.  Results of TurbOPark are also shown.  Figure <xref ref-type="fig" rid="F10"/> shows that both the RANS-LUT and TurbOPark models require more CPU hours and memory with increasing number of turbines.  For the largest wind farm using <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">32</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>, the RANS-LUT model requires 1 and 2 orders of magnitude more CPU hours and memory, respectively, compared to TurbOPark.  For larger wind farms, the available 256 GB of node memory may be exceeded, and the RANS-LUT model cannot be run on the employed HPC.  The CPU hours and memory usage also increase with <inline-formula><mml:math id="M327" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> because the inclusion of blockage effects is calculated with an iterative method in PyWake (labeled as <italic>All2AllIterative</italic>), which scales roughly as <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mi>N</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in terms of CPU hours and memory.  One could investigate faster and less memory-intensive iterative methods, as for example the recently developed <italic>PropagateUpDownIterative</italic> method in PyWake, which uses iterative upwind and downwind steps where the memory scales as <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:mi mathvariant="script">O</mml:mi><mml:mo>(</mml:mo><mml:mi>N</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.  However, switching from <italic>All2AllIterative</italic> to <italic>PropagateUpDownIterative</italic> can lead to an increase in the mean absolute wind turbine power in the turbine rows of about 0.3 %.  One could also reduce the number of points of the LUTs by simply removing data where they are not required, e.g., the near-wake region applicable to a wind farm layout with a relatively large turbine spacing.  Other memory-reducing solutions could be in the form of an analytical model <xref ref-type="bibr" rid="bib1.bibx12" id="paren.77"/> or an artificial neural network <xref ref-type="bibr" rid="bib1.bibx40" id="paren.78"/>, both calibrated or trained with the single-wake database.</p>

      <fig id="F10"><label>Figure 10</label><caption><p id="d2e8383">Computational effort of RANS-LUT and TurbOPark models with number of turbines using a single flow case (<inline-formula><mml:math id="M330" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><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> and <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mn mathvariant="normal">270</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>). Horizontal dashed line depicts memory limit of 256 GB.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f10.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS6">
  <label>3.6</label><title>Model limitations</title>
      <p id="d2e8438">The RANS-LUT surrogate model is based on RANS-AD single-wake simulations and will therefore inherit the limitations of the chosen RANS-AD method.  In this work, we have applied a surface layer model following MOST.  However, the applicability of MOST becomes less relevant for tall turbines that operate beyond the atmospheric surface layer, especially for stable conditions where the ABL is shallow.  One could create a RANS-AD single-wake database based on an idealized ABL model including a prescribed pressure gradient, Coriolis, and an ABL height <xref ref-type="bibr" rid="bib1.bibx55" id="paren.79"/>. However, it is not trivial to create a single-wake database for a large range of inflow TI required to represent wake-added TI in a wind farm simulation employing the RANS-LUT surrogate model.  In other words, the RANS-LUT model assumption stating that the effects of inflow TI and wake-added TI are the same may not hold for an ABL inflow model. Furthermore, the deflection of the single wake due to the Coriolis-induced wind veer may require a superposition of lateral-velocity LUTs, which is currently not available in PyWake (v2.6.18).</p>
      <p id="d2e8444">RANS relies on a turbulence model that represents all turbulence scales.  It is well known that RANS turbulence models can have model errors <xref ref-type="bibr" rid="bib1.bibx36 bib1.bibx50 bib1.bibx7 bib1.bibx20" id="paren.80"/>, and the development of better models is an active area of research.  One could use a turbulence-resolving method as large-eddy simulation (LES) to create a single-wake database of mean velocity deficit and wake-added TI and develop a corresponding LES-LUT surrogate model. Such a model could also include a turbulence-length-scale dimension, which one could relate to atmospheric stability. Using LES to create a single-wake database is 3 to 4 orders of magnitude more expensive compared to RANS, but one may be able to obtain a more realistic wake model.  The development of an LES-LUT surrogate model, as well as a validation of the RANS-LUT model, is recommended for future research.</p>
</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Conclusions</title>
      <p id="d2e8459">A surrogate model of RANS-AD wind farm simulations is proposed, labeled as the RANS-LUT model, which is based on lookup tables of single-wake velocity deficit and wake-added TI flow fields including effects of atmospheric stability following MOST.  The RANS-LUT model is evaluated against RANS-AD wind farm simulations for different inflow conditions and wind farms.  The RANS-LUT model can capture the trend of RANS-AD wind farm simulations with respect to atmospheric stability, wind direction, and wind speed.  The largest errors in rotor-averaged streamwise velocity and wake-added TI in a turbine row of eight turbines are 8 % and 3 %, respectively, and are obtained for an above-rated wind speed, stable conditions, and <inline-formula><mml:math id="M332" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing.  When wake-added TI is not used in the RANS-LUT model, then the largest error in streamwise velocity deficit increases to 22 %, which shows the necessity of including wake-added TI in the surrogate model.  The errors in streamwise velocity lead to a mean absolute error in turbine power of 3.4 % for all turbine row cases.  The wind farm case simulations consisting of <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> turbines reveal errors in wind farm efficiency up to 3 % below-rated, while above-rated a maximum absolute error of 10 % is obtained for a row-aligned wind direction and stable conditions.  Good results for both velocity and power are achieved by using a momentum-based wake deficit superposition method in combination with a rotor-averaging model, which leads to a more consistent RANS surrogate model compared to using linear superposition without rotor averaging that relies on error cancellation. However, one of the main sources of error remains the wake deficit superposition.  The applied velocity deficit superposition method is based on a simplified momentum equation, and one could investigate alternative superposition methods based on a more complex momentum equation, as for example proposed by <xref ref-type="bibr" rid="bib1.bibx5" id="paren.81"/>. The RANS-LUT model is about <inline-formula><mml:math id="M334" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> faster than the RANS-AD model, but it is still an order of magnitude slower than an engineering wake model using analytical wake shapes due to the need for interpolating and storing LUTs in the RANS-LUT model.  More research is required to reduce the computational effort.  In addition, the use of MOST is a limitation for large turbines that frequently operate beyond the atmospheric surface layer, especially for stable conditions.  Future work could employ a more realistic inflow model including an ABL height and Coriolis, although it is not trivial how to generate a single-wake database for a large range of inflow TI for all conditions, which would be needed to represent wake-added TI when the RANS-LUT model is applied to a wind farm.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Nonlinear behavior of the thrust coefficient</title>
      <p id="d2e8511">In this section, the linearity of the thrust coefficient on the single-wake velocity deficit in RANS-AD simulations is investigated for neutral inflow conditions.  To simplify the study, an AD model is employed based on a fixed normalized thrust force distribution <xref ref-type="bibr" rid="bib1.bibx50" id="paren.82"/>, obtained from a rotor-resolved CFD simulation of the DTU 10 MW reference turbine <xref ref-type="bibr" rid="bib1.bibx2" id="paren.83"/>, and tangential forces are neglected.  The effect of the thrust coefficient is investigated by scaling the normalized thrust force distribution accordingly.</p><fig id="FA1"><label>Figure A1</label><caption><p id="d2e8522">Effect of thrust coefficient on the single-wake velocity deficit, normalized by the thrust coefficient.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f11.png"/>

      </fig>


      <p id="d2e8536">A conservative grid spacing of <inline-formula><mml:math id="M335" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula> is used. Figure <xref ref-type="fig" rid="FA1"/> depicts the single-wake velocity deficit normalized by the thrust coefficient at four different downstream distances for two different ambient turbulence intensities and a range of thrust coefficients.  It is clear that the velocity deficits do not collapse for constant ambient turbulence intensity, which shows the nonlinear behavior of the thrust coefficient.  The wake recovery is enhanced with increasing thrust coefficient, and this leads to a nonlinear behavior of the thrust coefficient, which follows the same trend as the LES-derived near-wake length scale of <xref ref-type="bibr" rid="bib1.bibx42" id="text.84"/>.  Hence, the RANS-LUT surrogate model requires a thrust coefficient dimension in order to capture this effect.</p>
</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Effect of wake superposition and rotor averaging</title>
      <p id="d2e8566">Figure <xref ref-type="fig" rid="FB1"/> depicts results of the rotor-averaged streamwise velocity and turbine power of a wind turbine row consisting of eight turbines, with <inline-formula><mml:math id="M336" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M337" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> spacing.  The full RANS-AD model and the RANS-LUT surrogate model are employed with different combinations of velocity deficit superposition and rotor-averaging methods. The corresponding errors with respect to RANS-AD results are also plotted in Fig. <xref ref-type="fig" rid="FB1"/>.  The most challenging inflow case is shown, corresponding to an above-rated wind speed (variable <inline-formula><mml:math id="M338" 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 stable conditions.  Note that the rotor-averaging method of the RANS-LUT model refers to averaging the deficit at the turbine location to obtain the effective wind speed and wake-added TI, not the rotor-averaging method to obtain the flow as a post-step.  Two different methods are applied: rotor center (RC), meaning no averaging, and rotor averaging (RA), using a Gaussian quadrature method that yields similar results to the AD polar grid of the RANS-AD model.  The velocity deficit superposition methods are linear superposition (linear sum), weighted superposition of  <xref ref-type="bibr" rid="bib1.bibx57" id="text.85"/> (weighted sum), and a weighted superposition where the weights do not exceed 1 (weighted sum limiter).  The additional limiter ensures that the individual wakes are not convected faster than the background flow.  Our implementation of the weighted superposition is discussed in detail in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3.SSS3"/>.  <xref ref-type="bibr" rid="bib1.bibx11" id="text.86"/> used a linear summation method without rotor averaging (RC), and their LUT flow predictions compared well to RANS-AD simulations, as also shown in Fig. <xref ref-type="fig" rid="FB1"/>a and b.</p>
      <p id="d2e8615">However, we find that this does not apply to power production, depicted in Fig. <xref ref-type="fig" rid="FB1"/>c and d, as it turns out that the favorable flow field predictions rely on superposition and effective wind speed errors canceling out. Linear summation leads to overestimating wind farm deficits in deep wakes <xref ref-type="bibr" rid="bib1.bibx57" id="paren.87"/>; however at the rotor center the wind speed is lower compared to the rotor average, leading to lower deficits.  This becomes clear when using linear superposition with the rotor-averaging model, which results in much larger errors compared to linear summation with the rotor center model, best visible in Fig. <xref ref-type="fig" rid="FB1"/>e, despite being more consistent with the RANS-AD simulation where rotor averaging is applied.  When the weighted sum method is employed, the errors are reduced after the third or fourth turbine in the row.  However, the weighted sum method can result in large errors in the near-wake because the superposition method weights are based on a simplified momentum equation, which is invalid in the near-wake, and we find that the weights can exceed 1.  Therefore, we propose to limit the weights to not exceed 1 (i.e., the weights do not become larger than a linear superposition model).  Figure <xref ref-type="fig" rid="FB1"/>e shows that the weighed sum method with the limiter does not produce the large errors in the near-wake and performs overall the best after the third turbine for both the flow and turbine power.</p><fig id="FB1"><label>Figure B1</label><caption><p id="d2e8630">Rotor-averaged streamwise velocity <bold>(a, b)</bold> and wind turbine power <bold>(c, d)</bold>  and corresponding model errors <bold>(e–h)</bold> in a turbine row with <inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> turbine spacing, <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>=</mml:mo><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 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> (variable <inline-formula><mml:math id="M342" 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 stable conditions. Results are shown for different rotor-averaging and superposition methods.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f12.png"/>

      </fig>

</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>RANS-AD grid refinement study</title>
      <p id="d2e8718">The RANS-AD single-wake and wind farm simulations are performed with a grid that has a refined resolution around the AD of <inline-formula><mml:math id="M343" 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>.  A grid spacing of <inline-formula><mml:math id="M344" 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> to <inline-formula><mml:math id="M345" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> is commonly used for neutral and unstable RANS-AD simulations employing EllipSys3D <xref ref-type="bibr" rid="bib1.bibx50 bib1.bibx49 bib1.bibx6" id="paren.88"/>.  However, for stable conditions, the grid resolution may need to be refined depending on the quantity of interest.  Results of a grid refinement study of single RANS-AD simulations are shown in Fig. <xref ref-type="fig" rid="FC1"/> using three grid resolutions – <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M347" 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>, and <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula> – and three stability inflow cases, as defined in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/>.  A below-rated inflow wind speed is applied, leading to a thrust coefficient of <inline-formula><mml:math id="M349" 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">0.8</mml:mn></mml:mrow></mml:math></inline-formula>.  The rotor-averaged velocity deficit (Fig. <xref ref-type="fig" rid="FC1"/>a–c) and wake-added TI (Fig. <xref ref-type="fig" rid="FC1"/>d–e) increase when going from the unstable to stable cases.  The increased wake deficits lead to larger discretization errors (Fig. <xref ref-type="fig" rid="FC1"/>g–l) based on a mixed-order analysis <xref ref-type="bibr" rid="bib1.bibx38" id="paren.89"/>.  For the chosen grid resolution of <inline-formula><mml:math id="M350" 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>, the maximum discretization error in rotor-averaged streamwise velocity beyond <inline-formula><mml:math id="M351" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn></mml:mrow></mml:math></inline-formula> is around 3 % for the stable and neutral cases and less than 0.5 % for the unstable </p>
      <p id="d2e8855">case.  The maximum wake-added TI discretization errors for <inline-formula><mml:math id="M352" 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> and <inline-formula><mml:math id="M353" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mi>D</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">2.5</mml:mn></mml:mrow></mml:math></inline-formula> are similar in magnitude for the neutral case but larger for the stable and unstable cases, namely, 3.5 % and 2 %, respectively.  While these errors are acceptable, one could choose a finer grid resolution to generate the RANS-AD single-wake database with reduced discretization errors.</p><fig id="FC1"><label>Figure C1</label><caption><p id="d2e8889">Influence of grid spacing on RANS-AD single-wake results in terms of rotor-averaged streamwise velocity <bold>(a–c)</bold> and wake-added TI <bold>(d–f)</bold> and corresponding discretization errors <bold>(g–l)</bold> for different stability cases. RE is Richardson-extrapolated value.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f13.png"/>

      </fig>

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

      <p id="d2e8913">The RANS-LUT surrogate model is available through the open-source software PyWake v2.6.18 <xref ref-type="bibr" rid="bib1.bibx32" id="paren.90"/> (<uri>https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake</uri>, <ext-link xlink:href="https://doi.org/10.5281/zenodo.2562661" ext-link-type="DOI">10.5281/zenodo.2562661</ext-link>, <xref ref-type="bibr" rid="bib1.bibx30" id="altparen.91"/>). The CFD results are generated with proprietary software, although the data presented can be made available by contacting the corresponding author. However, the turbine row examples including the single-wake database and RANS data are publicly available at <uri>https://gitlab.windenergy.dtu.dk/TOPFARM/pywake_ranslut/-/tree/v0.4?ref_type=tags</uri> (<ext-link xlink:href="https://doi.org/10.5281/zenodo.21338574" ext-link-type="DOI">10.5281/zenodo.21338574</ext-link>, <xref ref-type="bibr" rid="bib1.bibx56" id="altparen.92"/>). If the data set/code is not your own, please inform us accordingly. In any case, please ensure that you include a reference list entry corresponding to the data set/code including creators, title, and date of last access.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e8943">MPvdL developed the RANS-LUT model extensions, performed the CFD simulations, drafted the article, and produced the figures. AMF investigated the model errors related to the rotor average and wake superposition models. AWF suggested the use of the weighted summation method and implemented it in PyWake.  All authors contributed to discussion of the new model, the methodology, and finalization of the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e8949">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="d2e8955">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="d2e8961">We would like to thank Mads Pedersen for his support regarding the implementation of the RANS-LUT surrogate model in PyWake. We also gratefully acknowledge the computational and data resources provided on the Sophia HPC Cluster at the Technical University of Denmark (<ext-link xlink:href="https://doi.org/10.57940/FAFC-6M81" ext-link-type="DOI">10.57940/FAFC-6M81</ext-link> <xref ref-type="bibr" rid="bib1.bibx44" id="altparen.93"/>).</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e8972">This work has been partially supported by the MERIDIONAL project, which receives funding from the European Union’s Horizon Europe Programme under the grant agreement no. 101084216.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Andersen and Murcia 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.bibx2"><label>Bak et al.(2013)Bak, Zahle, Bitsche, Kim, Yde, Henriksen, Natarajan, and Hansen</label><mixed-citation> Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L., Natarajan, A., and Hansen, M.: Description of the DTU 10 MW Reference Wind Turbine, Tech. Rep., DTU Wind Energy Report-I-0092, Technical University of Denmark, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Barthelmie et al.(2007)Barthelmie, Frandsen, Nielsen, Pryor, Rethore, and Jørgensen</label><mixed-citation>Barthelmie, R. J., Frandsen, S. T., Nielsen, M. N., Pryor, S. C., Rethore, P. E., and Jørgensen, H. E.: Modelling and measurements of power losses and turbulence intensity in wind turbine wakes at middelgrunden offshore wind farm, Wind Energy, 10, 517–528, <ext-link xlink:href="https://doi.org/10.1002/we.238" ext-link-type="DOI">10.1002/we.238</ext-link>, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Bastankhah and Porté-Agel(2014)</label><mixed-citation>Bastankhah, M. and Porté-Agel, F.: A new analytical model for wind-turbine wakes (special issue on aerodynamics of offshore wind energy systems and 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.bibx5"><label>Bastankhah et al.(2021)Bastankhah, Welch, Martínez-Tossas, King, and Fleming</label><mixed-citation>Bastankhah, M., Welch, B. L., Martínez-Tossas, L. A., King, J., and Fleming, P.: Analytical solution for the cumulative wake of wind turbines in wind farms, J. Fluid Mech., 911, A53, <ext-link xlink:href="https://doi.org/10.1017/jfm.2020.1037" ext-link-type="DOI">10.1017/jfm.2020.1037</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Baungaard et al.(2022a)Baungaard, van der Laan, and Kelly</label><mixed-citation>Baungaard, M., van der Laan, M. P., and Kelly, M.: RANS modeling of a single wind turbine wake in the unstable surface layer, Wind Energ. Sci., 7, 783–800, <ext-link xlink:href="https://doi.org/10.5194/wes-7-783-2022" ext-link-type="DOI">10.5194/wes-7-783-2022</ext-link>, 2022a.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Baungaard et al.(2022b)Baungaard, Wallin, van der Laan, and Kelly</label><mixed-citation>Baungaard, M., Wallin, S., van der Laan, M. P., and Kelly, M.: Wind turbine wake simulation with explicit algebraic Reynolds stress modeling, Wind Energ. Sci., 7, 1975–2002, <ext-link xlink:href="https://doi.org/10.5194/wes-7-1975-2022" ext-link-type="DOI">10.5194/wes-7-1975-2022</ext-link>, 2022b.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Bleeg et al.(2018)Bleeg, Purcell, Ruisi, and Traiger</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, <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.bibx9"><label>Boussinesq(1897)</label><mixed-citation> Boussinesq, M. J.: Théorie de l'écoulement tourbillonnant et tumultueux des liquides, Gauthier-Villars et fils, Paris, France, 1897.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Calaf et al.(2010)Calaf, Meneveau, and Meyers</label><mixed-citation>Calaf, M., Meneveau, C., and Meyers, J.: Large eddy simulation study of fully developed wind-turbine array boundary layers, Phys. Fluids, 22, 015110, <ext-link xlink:href="https://doi.org/10.1063/1.3291077" ext-link-type="DOI">10.1063/1.3291077</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Criado Risco et al.(2023)Criado Risco, van der Laan, Pedersen, Meyer Forsting, and Réthoré</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.bibx12"><label>Delvaux et al.(2024)Delvaux, Van Der Laan, and Terrapon</label><mixed-citation>Delvaux, T., Van Der Laan, M. P., and Terrapon, V. E.: A new RANS-based added turbulence intensity model for wind-farm flow modelling, J. Phys.  Conf. Ser., 2767, 092089, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2767/9/092089" ext-link-type="DOI">10.1088/1742-6596/2767/9/092089</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Doubrawa et al.(2020)Doubrawa, Quon, Martinez-Tossas, Shaler, Debnath, Hamilton, Herges, Maniaci, Kelley, Hsieh, Blaylock, van der Laan, Andersen, Krueger, Cathelain, Schlez, Jonkman, Branlard, Steinfeld, Schmidt, Blondel, Lukassen, and Moriarty</label><mixed-citation>Doubrawa, P., Quon, E. W., Martinez-Tossas, L. A., Shaler, K., Debnath, M., Hamilton, N., Herges, T. G., Maniaci, D., Kelley, C. L., Hsieh, A. S., Blaylock, M. L., van der Laan, P., Andersen, S. J., Krueger, S., Cathelain, M., Schlez, W., Jonkman, J., Branlard, E., Steinfeld, G., Schmidt, S., Blondel, F., Lukassen, L. J., and Moriarty, P.: Multimodel validation of single wakes in neutral and stratified atmospheric conditions, Wind Energy, 23, 2027–2055, <ext-link xlink:href="https://doi.org/10.1002/we.2543" ext-link-type="DOI">10.1002/we.2543</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>DTU Wind and Energy Systems(2025)</label><mixed-citation>DTU Wind and Energy Systems: PyWakeEllipSys v5.4, <uri>https://topfarm.pages.windenergy.dtu.dk/cuttingedge/pywake/pywake_ellipsys/</uri> (last access: 13 July 2026), 2025.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Ebenhoch et al.(2017)Ebenhoch, Muro, Dahlberg, Berkesten Hägglund, and Segalini</label><mixed-citation>Ebenhoch, R., Muro, B., Dahlberg, J.-Å., Berkesten Hägglund, P., and Segalini, A.: A linearized numerical model of wind-farm flows, Wind Energy, 20, 859–875, <ext-link xlink:href="https://doi.org/10.1002/we.2067" ext-link-type="DOI">10.1002/we.2067</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Göçmen et al.(2016)Göçmen, van der Laan, Réthoré, Peña Diaz, Larsen, and Ott</label><mixed-citation> Göçmen, T., van der Laan, M. P., Réthoré, P. E., Peña Diaz, A., Larsen, G. C., and Ott, S.: Wind turbine wake models developed at the technical university of Denmark: A review, Renew. Sust. Energ. Rev., 60, 752–769, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Hoyer and Hamman(2017)</label><mixed-citation>Hoyer, S. and Hamman, J.: xarray: N–D labeled arrays and datasets in Python, Journal of Open Research Software, 5, <ext-link xlink:href="https://doi.org/10.5334/jors.148" ext-link-type="DOI">10.5334/jors.148</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Jacquet et al.(2022)Jacquet, Apgar, Chauchan, Storey, Kern, and Davoust</label><mixed-citation>Jacquet, C., Apgar, D., Chauchan, V., Storey, R., Kern, S., and Davoust, S.: Farm blockage model validation using pre and post construction LiDAR measurements, J. Phys. Conf. Ser., 2265, 022009, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/2/022009" ext-link-type="DOI">10.1088/1742-6596/2265/2/022009</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Jensen(1983)</label><mixed-citation> Jensen, N.: A note on wind generator interaction, no. 2411 in Risø-M, Risø National Laboratory, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Jigjid et al.(2025)Jigjid, Eidi, Doan, and Dwight</label><mixed-citation>Jigjid, K., Eidi, A., Doan, N. A. K., and Dwight, R. P.: Discovery of a Physically Interpretable Data-Driven Wind-Turbine Wake Model, Flow Turbul. Combust., <ext-link xlink:href="https://doi.org/10.1007/s10494-025-00679-y" ext-link-type="DOI">10.1007/s10494-025-00679-y</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Jonkman et al.(2009)Jonkman, Butterfield, Musial, and Scott</label><mixed-citation>Jonkman, J., Butterfield, S., Musial, W., and Scott, G.: Definition of a 5-MW Reference Wind Turbine for Offshore System Development, Tech. rep., National Renewable Energy Laboratory, <uri>https://docs.nlr.gov/docs/fy09osti/38060.pdf</uri> (last access: 13 July 2026), 2009.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Katic et al.(1987)Katic, Højstrup, and Jensen</label><mixed-citation> Katic, I., Højstrup, J., and Jensen, N.: A Simple Model for Cluster Efficiency, in: EWEC'86. Proceedings, Vol. 1, edited by: Palz, W. and Sesto, E., 407–410, European Wind Energy Association Conference and Exhibition, EWEC '86; Conference date: 6–8 October 1986, Rome, Italy, 1987.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Meyer Forsting et al.(2023)Meyer Forsting, Navarro Diaz, Segalini, Andersen, and Ivanell</label><mixed-citation>Meyer Forsting, A. R., Navarro Diaz, G. P., 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.bibx24"><label>Michelsen(1992)</label><mixed-citation> Michelsen, J. A.: Basis3D – a platform for development of multiblock PDE solvers., Tech. Rep. AFM 92-05, Technical University of Denmark, Lyngby, Denmark, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Mikkelsen(2003)</label><mixed-citation> Mikkelsen, R.: Actuator Disc Methods Applied to Wind Turbines, PhD thesis, Technical University of Denmark, Mek dept, Lyngby, Denmark, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Monin and Obukhov(1954)</label><mixed-citation> Monin, A. S. and Obukhov, A. M.: Basic laws of turbulent mixing in the surface layer of the atmosphere, Tr. Akad. Nauk. SSSR Geophiz. Inst., 24, 163–187, 1954.</mixed-citation></ref>
      <ref id="bib1.bibx27"><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.bibx28"><label>Nygaard et al.(2020)Nygaard, Steen, Poulsen, and Pedersen</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, 062072, <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.bibx29"><label>Ott et al.(2011)Ott, Berg, and Nielsen</label><mixed-citation> Ott, S., Berg, J., and Nielsen, M.: Linearised CFD Models for Wakes, Tech. Rep. Risø-R-1772, Risø, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Pedersen et al.(2019)Pedersen, van der Laan, Friis-Møller, Rinker, Réthoré</label><mixed-citation>Pedersen, M. M., van der Laan, P., Friis-Møller, M., Rinker, J., and Réthoré, P.-E.: DTUWindEnergy/PyWake: PyWake, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.2562661" ext-link-type="DOI">10.5281/zenodo.2562661</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Pedersen et al.(2022)Pedersen, Svensson, Poulsen, and Nygaard</label><mixed-citation>Pedersen, J. G., Svensson, E., Poulsen, L., and Nygaard, N. G.: Turbulence Optimized Park model with Gaussian wake profile, J. Phys. Conf. Ser., 2265, 022063, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/2/022063" ext-link-type="DOI">10.1088/1742-6596/2265/2/022063</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Pedersen et al.(2023)Pedersen, Meyer Forsting, van der Laan, Riva, Alcayaga Romàn, Criado Risco, Friis-Møller, Quick, Schøler Christiansen, Valotta Rodrigues, Olsen, and Réthoré</label><mixed-citation> Pedersen, M. M., Meyer Forsting, A., van der Laan, P., Riva, R., Alcayaga Romàn, L. A., Criado Risco, J., Friis-Møller, M., Quick, J., Schøler Christiansen, J. P., Valotta Rodrigues, R., Olsen, B. T., and Réthoré, P.-E.: PyWake 2.5.0: An open-source wind farm simulation tool, Zenodo [code], https://doi.org/10.5281/zenodo.6806136, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Peña et al.(2016)Peña, Réthoré, and van der Laan</label><mixed-citation>Peña, A., Réthoré, P.-E., and van der Laan, M. P.: On the application of the Jensen wake model using a turbulence-dependent wake decay coefficient: the Sexbierum case, Wind Energy, 19, 763–776, <ext-link xlink:href="https://doi.org/10.1002/we.1863" ext-link-type="DOI">10.1002/we.1863</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Porté-Agel et al.(2020)Porté-Agel, Bastankhah, and Shamsoddin</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.bibx35"><label>Prospathopoulos et al.(2011)Prospathopoulos, Politis, Rados, and Chaviaropoulos</label><mixed-citation>Prospathopoulos, J. M., Politis, E. S., Rados, K. G., and Chaviaropoulos, P. K.: Evaluation of the effects of turbulence model enhancements on wind turbine wake predictions, Wind Energy, 14, 285–300, <ext-link xlink:href="https://doi.org/10.1002/we.419" ext-link-type="DOI">10.1002/we.419</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Réthoré(2009)</label><mixed-citation> Réthoré, P.: Wind Turbine Wake in Atmospheric Turbulence, PhD thesis, Risø National Laboratory for Sustainable Energy, ISBN: 978-87-550-3785-4, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Réthoré et al.(2014)Réthoré, van der Laan, Troldborg, Zahle, and Sørensen</label><mixed-citation>Réthoré, P.-E., van der Laan, M. P., Troldborg, N., Zahle, F., and Sørensen, N. N.: Verification and validation of an actuator disc model, Wind Energy, 17, 919–937, <ext-link xlink:href="https://doi.org/10.1002/we.1607" ext-link-type="DOI">10.1002/we.1607</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Roy(2003)</label><mixed-citation>Roy, C. J.: Grid Convergence Error Analysis for Mixed-Order Numerical Schemes, AIAA J., 41, 595–604, <ext-link xlink:href="https://doi.org/10.2514/2.2013" ext-link-type="DOI">10.2514/2.2013</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Schulte and Stoevesandt(2014)</label><mixed-citation>Schulte, J. and Stoevesandt, B.: Wind farm layout optimization with wakes from fluid dynamics simulations, EWEA, <ext-link xlink:href="https://doi.org/10.13140/2.1.2544.3847" ext-link-type="DOI">10.13140/2.1.2544.3847</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Schøler et al.(2023)Schøler, Riva, Andersen, Murcia Leon, van der Laan, Criado Risco, and Réthoré</label><mixed-citation>Schøler, J. P., Riva, R., Andersen, S. J., Murcia Leon, J. P., van der Laan, M. P., Criado Risco, J., 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.bibx41"><label>Sørensen(1994)</label><mixed-citation> Sørensen, N. N.: General purpose flow solver applied to flow over hills, PhD thesis, Risø National Laboratory, Roskilde, Denmark, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Sørensen et al.(2015)Sørensen, Mikkelsen, Henningson, Ivanell, Sarmast, and Andersen</label><mixed-citation>Sørensen, J. N., Mikkelsen, R., Henningson, D. S., Ivanell, S., Sarmast, S., and Andersen, S. J.: Simulation of wind turbine wakes using the actuator line technique, Philos. T. R. Soc. A, 373, 20140071, <ext-link xlink:href="https://doi.org/10.1098/rsta.2014.0071" ext-link-type="DOI">10.1098/rsta.2014.0071</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Sørensen et al.(2020)Sørensen, Nilsson, Ivanell, Asmuth, and Mikkelsen</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, <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.bibx44"><label>Technical University of Denmark(2019)</label><mixed-citation>Technical University of Denmark: Sophia HPC Cluster, Research Computing at DTU, <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.bibx45"><label>Troldborg et al.(2015)Troldborg, Sørensen, Réthoré, and {van der Laan}</label><mixed-citation>Troldborg, N., Sørensen, N., Réthoré, P.-E., and van der Laan, P.: 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.bibx46"><label>van der Laan and Andersen(2018)</label><mixed-citation>van der Laan, M. P. and Andersen, S. J.: The turbulence scales of a wind turbine wake: A revisit of extended k-epsilon models, J. Phys. Conf. Ser., 1037, 072001, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/7/072001" ext-link-type="DOI">10.1088/1742-6596/1037/7/072001</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>van der Laan and Sørensen(2017)</label><mixed-citation> van der Laan, M. P. and Sørensen, N. N.: A 1D version of EllipSys, Tech. Rep. DTU Wind Energy E-0141, Technical University of Denmark, ISBN: 978-87-93549-08-1, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>van der Laan et al.(2015a)van der Laan, Sørensen, Réthoré, Mann, Kelly, and Troldborg</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="M354" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M355" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M356" 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.bibx49"><label>van der Laan et al.(2015b)van der Laan, Sørensen, Réthoré, Mann, Kelly, Troldborg, Hansen, and Murcia</label><mixed-citation>van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J., Kelly, M. C., Troldborg, N., Hansen, K. S., and Murcia, J. P.: The <inline-formula><mml:math id="M357" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M358" display="inline"><mml:mi mathvariant="italic">ε</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M359" 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 wind farms, Wind Energy, 18, 2065–2084, <ext-link xlink:href="https://doi.org/10.1002/we.1804" ext-link-type="DOI">10.1002/we.1804</ext-link>, 2015b.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>van der Laan et al.(2015c)van der Laan, Sørensen, Réthoré, Mann, Kelly, Troldborg, Schepers, and Machefaux</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 <inline-formula><mml:math id="M360" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>–<inline-formula><mml:math id="M361" 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>, 2015c.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>van der Laan et al.(2017)van der Laan, Kelly, and Sørensen</label><mixed-citation>van der Laan, M. P., Kelly, M. C., and Sørensen, N. N.: A new k-epsilon model consistent with Monin–Obukhov similarity theory, Wind Energy, 20, 479–489, <ext-link xlink:href="https://doi.org/10.1002/we.2017" ext-link-type="DOI">10.1002/we.2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>van der Laan et al.(2020)van der Laan, Andersen, Kelly, and Baungaard</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.bibx53"><label>van der Laan et al.(2022)van der Laan, Andersen, Réthoré, Baungaard, Sørensen, and Troldborg</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.bibx54"><label>van der Laan et al.(2023)van der Laan, García-Santiago, Kelly, Meyer Forsting, Dubreuil-Boisclair, Sponheim Seim, Imberger, Peña, Sørensen, and Réthoré</label><mixed-citation>van der Laan, M. P., García-Santiago, O., Kelly, M., Meyer Forsting, A., Dubreuil-Boisclair, C., Sponheim Seim, K., Imberger, M., Peña, A., Sørensen, N. N., and Réthoré, P.-E.: A new RANS-based wind farm parameterization and inflow model for wind farm cluster modeling, Wind Energ. Sci., 8, 819–848, <ext-link xlink:href="https://doi.org/10.5194/wes-8-819-2023" ext-link-type="DOI">10.5194/wes-8-819-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>van der Laan et al.(2024)van der Laan, Kelly, Baungaard, Dicholkar, and Hodgson</label><mixed-citation>van der Laan, M. P., Kelly, M., Baungaard, M., Dicholkar, A., and Hodgson, E. L.: A simple steady-state inflow model of the neutral and stable atmospheric boundary layer applied to wind turbine wake simulations, Wind Energ. Sci., 9, 1985–2000, <ext-link xlink:href="https://doi.org/10.5194/wes-9-1985-2024" ext-link-type="DOI">10.5194/wes-9-1985-2024</ext-link>, 2024. </mixed-citation></ref>
      <ref id="bib1.bibx56"><label>van der Laan et al.(2026)van der Laan, Meyer Forsting, Réthoré</label><mixed-citation>van der Laan, M. P., Meyer Forsting, A., and Réthoré, P.-E.: Python script for RANS surrogate model, accepted in Wind Energy Science: A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability,  Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.21338574" ext-link-type="DOI">10.5281/zenodo.21338574</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx57"><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>A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Andersen and Murcia 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.bib2"><label>Bak et al.(2013)Bak, Zahle, Bitsche, Kim, Yde, Henriksen, Natarajan, and Hansen</label><mixed-citation>
       Bak, C., Zahle, F.,
Bitsche, R., Kim, T., Yde, A., Henriksen, L., Natarajan, A., and Hansen, M.: Description of the DTU 10&thinsp;MW Reference
Wind Turbine, Tech. Rep., DTU Wind Energy Report-I-0092, Technical University of Denmark, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Barthelmie et al.(2007)Barthelmie, Frandsen, Nielsen, Pryor, Rethore, and
Jørgensen</label><mixed-citation>
       Barthelmie, R. J., Frandsen, S. T., Nielsen, M. N., Pryor, S. C.,
Rethore, P. E., and Jørgensen, H. E.: Modelling and measurements of power losses and turbulence intensity in wind
turbine wakes at middelgrunden offshore wind farm, Wind Energy, 10, 517–528, <a href="https://doi.org/10.1002/we.238" target="_blank">https://doi.org/10.1002/we.238</a>, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Bastankhah and Porté-Agel(2014)</label><mixed-citation>
       Bastankhah, M. and Porté-Agel, F.: A new analytical
model for wind-turbine wakes (special issue on aerodynamics of offshore wind energy systems and 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.bib5"><label>Bastankhah et al.(2021)Bastankhah, Welch, Martínez-Tossas, King, and
Fleming</label><mixed-citation>
       Bastankhah, M., Welch, B. L., Martínez-Tossas, L. A., King, J., and
Fleming, P.: Analytical solution for the cumulative wake of wind turbines in wind farms, J. Fluid Mech.,
911, A53, <a href="https://doi.org/10.1017/jfm.2020.1037" target="_blank">https://doi.org/10.1017/jfm.2020.1037</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Baungaard et al.(2022a)Baungaard, van der Laan, and Kelly</label><mixed-citation>
       Baungaard, M., van der Laan, M. P.,
and Kelly, M.: RANS modeling of a single wind turbine wake in the unstable surface layer, Wind Energ. Sci., 7,
783–800, <a href="https://doi.org/10.5194/wes-7-783-2022" target="_blank">https://doi.org/10.5194/wes-7-783-2022</a>, 2022a. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Baungaard et al.(2022b)Baungaard, Wallin, van der Laan, and Kelly</label><mixed-citation>
       Baungaard, M.,
Wallin, S., van der Laan, M. P., and Kelly, M.: Wind turbine wake simulation with explicit algebraic Reynolds stress
modeling, Wind Energ. Sci., 7, 1975–2002, <a href="https://doi.org/10.5194/wes-7-1975-2022" target="_blank">https://doi.org/10.5194/wes-7-1975-2022</a>, 2022b. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Bleeg et al.(2018)Bleeg, Purcell, Ruisi, and Traiger</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,
<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.bib9"><label>Boussinesq(1897)</label><mixed-citation>
       Boussinesq, M. J.: Théorie de l'écoulement tourbillonnant et tumultueux des
liquides, Gauthier-Villars et fils, Paris, France, 1897.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Calaf et al.(2010)Calaf, Meneveau, and Meyers</label><mixed-citation>
       Calaf, M., Meneveau, C., and Meyers, J.: Large eddy
simulation study of fully developed wind-turbine array boundary layers, Phys. Fluids, 22, 015110,
<a href="https://doi.org/10.1063/1.3291077" target="_blank">https://doi.org/10.1063/1.3291077</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Criado Risco et al.(2023)Criado Risco, van der Laan, Pedersen, Meyer Forsting, and Réthoré</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.bib12"><label>Delvaux et al.(2024)Delvaux, Van Der Laan, and Terrapon</label><mixed-citation>
       Delvaux, T., Van Der Laan, M. P., and
Terrapon, V. E.: A new RANS-based added turbulence intensity model for wind-farm flow modelling, J. Phys.  Conf. Ser.,
2767, 092089, <a href="https://doi.org/10.1088/1742-6596/2767/9/092089" target="_blank">https://doi.org/10.1088/1742-6596/2767/9/092089</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Doubrawa et al.(2020)Doubrawa, Quon, Martinez-Tossas, Shaler, Debnath, Hamilton, Herges, Maniaci, Kelley,
Hsieh, Blaylock, van der Laan, Andersen, Krueger, Cathelain, Schlez, Jonkman, Branlard, Steinfeld, Schmidt, Blondel,
Lukassen, and Moriarty</label><mixed-citation>
       Doubrawa, P., Quon, E. W., Martinez-Tossas, L. A., Shaler, K., Debnath, M.,
Hamilton, N., Herges, T. G., Maniaci, D., Kelley, C. L., Hsieh, A. S., Blaylock, M. L., van der Laan, P.,
Andersen, S. J., Krueger, S., Cathelain, M., Schlez, W., Jonkman, J., Branlard, E., Steinfeld, G., Schmidt, S.,
Blondel, F., Lukassen, L. J., and Moriarty, P.: Multimodel validation of single wakes in neutral and stratified
atmospheric conditions, Wind Energy, 23, 2027–2055, <a href="https://doi.org/10.1002/we.2543" target="_blank">https://doi.org/10.1002/we.2543</a>, 2020.

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

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Ebenhoch et al.(2017)Ebenhoch, Muro, Dahlberg, Berkesten Hägglund, and Segalini</label><mixed-citation>
       Ebenhoch, R.,
Muro, B., Dahlberg, J.-Å., Berkesten Hägglund, P., and Segalini, A.: A
linearized numerical model of wind-farm flows, Wind Energy, 20, 859–875, <a href="https://doi.org/10.1002/we.2067" target="_blank">https://doi.org/10.1002/we.2067</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Göçmen et al.(2016)Göçmen, van der Laan, Réthoré, Peña Diaz, Larsen, and
Ott</label><mixed-citation>
       Göçmen, T., van der Laan, M. P., Réthoré, P. E., Peña Diaz, A., Larsen, G. C.,
and Ott, S.: Wind turbine wake models developed at the technical university of Denmark: A review,
Renew. Sust. Energ. Rev., 60, 752–769, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Hoyer and Hamman(2017)</label><mixed-citation>
       Hoyer, S. and Hamman, J.: xarray: N–D labeled arrays and datasets
in Python, Journal of Open Research Software, 5, <a href="https://doi.org/10.5334/jors.148" target="_blank">https://doi.org/10.5334/jors.148</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Jacquet et al.(2022)Jacquet, Apgar, Chauchan, Storey, Kern, and Davoust</label><mixed-citation>
       Jacquet, C.,
Apgar, D., Chauchan, V., Storey, R., Kern, S., and Davoust, S.: Farm blockage model validation using pre and post
construction LiDAR measurements, J. Phys. Conf. Ser., 2265, 022009, <a href="https://doi.org/10.1088/1742-6596/2265/2/022009" target="_blank">https://doi.org/10.1088/1742-6596/2265/2/022009</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Jensen(1983)</label><mixed-citation>
       Jensen, N.: A note on wind generator interaction, no. 2411 in Risø-M, Risø
National Laboratory, 1983.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Jigjid et al.(2025)Jigjid, Eidi, Doan, and Dwight</label><mixed-citation>
       Jigjid, K., Eidi, A., Doan, N. A. K., and
Dwight, R. P.: Discovery of a Physically Interpretable Data-Driven Wind-Turbine Wake Model, Flow Turbul. Combust.,
<a href="https://doi.org/10.1007/s10494-025-00679-y" target="_blank">https://doi.org/10.1007/s10494-025-00679-y</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Jonkman et al.(2009)Jonkman, Butterfield, Musial, and Scott</label><mixed-citation>
       Jonkman, J., Butterfield, S.,
Musial, W., and Scott, G.: Definition of a 5-MW Reference Wind Turbine for Offshore System Development,
Tech. rep., National Renewable Energy Laboratory, <a href="https://docs.nlr.gov/docs/fy09osti/38060.pdf" target="_blank"/> (last access: 13 July 2026), 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Katic et al.(1987)Katic, Højstrup, and Jensen</label><mixed-citation>
       Katic, I., Højstrup, J., and Jensen, N.: A
Simple Model for Cluster Efficiency, in: EWEC'86. Proceedings, Vol. 1, edited by: Palz, W. and Sesto, E.,
407–410, European Wind Energy Association Conference and
Exhibition, EWEC '86; Conference date: 6–8 October 1986, Rome, Italy, 1987.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Meyer Forsting et al.(2023)Meyer Forsting, Navarro Diaz, Segalini, Andersen, and
Ivanell</label><mixed-citation>
       Meyer Forsting, A. R., Navarro Diaz, G. P., 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.bib24"><label>Michelsen(1992)</label><mixed-citation>
       Michelsen, J. A.: Basis3D – a platform for development of multiblock PDE
solvers., Tech. Rep. AFM 92-05, Technical University of Denmark, Lyngby, Denmark, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Mikkelsen(2003)</label><mixed-citation>
       Mikkelsen, R.: Actuator Disc Methods Applied to Wind Turbines,
PhD thesis, Technical University of Denmark, Mek dept, Lyngby, Denmark, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Monin and Obukhov(1954)</label><mixed-citation>
       Monin, A. S. and Obukhov, A. M.: Basic laws of turbulent mixing in the surface
layer of the atmosphere, Tr. Akad. Nauk. SSSR Geophiz. Inst., 24, 163–187, 1954.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><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.bib28"><label>Nygaard et al.(2020)Nygaard, Steen, Poulsen, and Pedersen</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, 062072,
<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.bib29"><label>Ott et al.(2011)Ott, Berg, and Nielsen</label><mixed-citation>
       Ott, S., Berg, J., and Nielsen, M.: Linearised CFD
Models for Wakes, Tech. Rep. Risø-R-1772, Risø, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Pedersen et al.(2019)Pedersen, van der Laan, Friis-Møller, Rinker, Réthoré</label><mixed-citation>
      
Pedersen, M. M., van der Laan, P., Friis-Møller, M., Rinker, J., and Réthoré, P.-E.: DTUWindEnergy/PyWake: PyWake, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.2562661" target="_blank">https://doi.org/10.5281/zenodo.2562661</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Pedersen et al.(2022)Pedersen, Svensson, Poulsen, and Nygaard</label><mixed-citation>
       Pedersen, J. G., Svensson, E.,
Poulsen, L., and Nygaard, N. G.: Turbulence Optimized Park model with Gaussian wake profile, J. Phys. Conf. Ser.,
2265, 022063, <a href="https://doi.org/10.1088/1742-6596/2265/2/022063" target="_blank">https://doi.org/10.1088/1742-6596/2265/2/022063</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Pedersen et al.(2023)Pedersen, Meyer Forsting, van der Laan, Riva, Alcayaga Romàn, Criado Risco, Friis-Møller,
Quick, Schøler Christiansen, Valotta Rodrigues, Olsen, and Réthoré</label><mixed-citation>
       Pedersen, M. M.,
Meyer Forsting, A., van der Laan, P., Riva, R., Alcayaga Romàn, L. A., Criado Risco, J., Friis-Møller, M., Quick, J.,
Schøler Christiansen, J. P., Valotta Rodrigues, R., Olsen, B. T., and Réthoré, P.-E.: PyWake 2.5.0: An
open-source wind farm simulation tool, Zenodo [code], https://doi.org/10.5281/zenodo.6806136, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Peña et al.(2016)Peña, Réthoré, and van der Laan</label><mixed-citation>
       Peña, A., Réthoré, P.-E., and van der Laan, M. P.:
On the application of the Jensen wake model using a turbulence-dependent wake decay coefficient: the Sexbierum case,
Wind Energy, 19, 763–776, <a href="https://doi.org/10.1002/we.1863" target="_blank">https://doi.org/10.1002/we.1863</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Porté-Agel et al.(2020)Porté-Agel, Bastankhah, and Shamsoddin</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.bib35"><label>Prospathopoulos et al.(2011)Prospathopoulos, Politis, Rados, and Chaviaropoulos</label><mixed-citation>
      
Prospathopoulos, J. M., Politis, E. S., Rados, K. G., and Chaviaropoulos, P. K.: Evaluation of the effects of
turbulence model enhancements on wind turbine wake predictions, Wind Energy, 14, 285–300, <a href="https://doi.org/10.1002/we.419" target="_blank">https://doi.org/10.1002/we.419</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Réthoré(2009)</label><mixed-citation>
       Réthoré, P.: Wind Turbine Wake in Atmospheric Turbulence,
PhD thesis, Risø National Laboratory for Sustainable Energy, ISBN: 978-87-550-3785-4,
2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Réthoré et al.(2014)Réthoré, van der Laan, Troldborg, Zahle, and Sørensen</label><mixed-citation>
      
Réthoré, P.-E., van der Laan, M. P., Troldborg, N., Zahle, F., and Sørensen, N. N.: Verification and validation
of an actuator disc model, Wind Energy, 17, 919–937, <a href="https://doi.org/10.1002/we.1607" target="_blank">https://doi.org/10.1002/we.1607</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Roy(2003)</label><mixed-citation>
       Roy, C. J.: Grid Convergence Error Analysis for Mixed-Order Numerical Schemes, AIAA J., 41,
595–604, <a href="https://doi.org/10.2514/2.2013" target="_blank">https://doi.org/10.2514/2.2013</a>, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Schulte and Stoevesandt(2014)</label><mixed-citation>
       Schulte, J. and Stoevesandt, B.: Wind farm layout optimization with
wakes from fluid dynamics simulations, EWEA, <a href="https://doi.org/10.13140/2.1.2544.3847" target="_blank">https://doi.org/10.13140/2.1.2544.3847</a>,
2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Schøler et al.(2023)Schøler, Riva, Andersen, Murcia Leon, van der Laan, Criado Risco, and
Réthoré</label><mixed-citation>
       Schøler, J. P., Riva, R., Andersen, S. J., Murcia Leon, J. P., van der Laan, M. P.,
Criado Risco, J., 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.bib41"><label>Sørensen(1994)</label><mixed-citation>
       Sørensen, N. N.: General purpose flow solver applied to flow over hills,
PhD thesis, Risø National Laboratory, Roskilde, Denmark, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Sørensen et al.(2015)Sørensen, Mikkelsen, Henningson, Ivanell, Sarmast, and
Andersen</label><mixed-citation>
       Sørensen, J. N., Mikkelsen, R., Henningson, D. S., Ivanell, S., Sarmast, S., and
Andersen, S. J.: Simulation of wind turbine wakes using the actuator line technique, Philos. T. R. Soc. A, 373,
20140071, <a href="https://doi.org/10.1098/rsta.2014.0071" target="_blank">https://doi.org/10.1098/rsta.2014.0071</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Sørensen et al.(2020)Sørensen, Nilsson, Ivanell, Asmuth, and Mikkelsen</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, <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.bib44"><label>Technical University of Denmark(2019)</label><mixed-citation>
       Technical University of Denmark: Sophia HPC Cluster, Research Computing at DTU,
<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.bib45"><label>Troldborg et al.(2015)Troldborg, Sørensen, Réthoré, and {van der Laan}</label><mixed-citation>
      
Troldborg, N., Sørensen, N., Réthoré, P.-E., and van der Laan, P.: 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.bib46"><label>van der Laan and Andersen(2018)</label><mixed-citation>
       van der Laan, M. P. and Andersen, S. J.: The turbulence
scales of a wind turbine wake: A revisit of extended k-epsilon models, J. Phys. Conf. Ser., 1037, 072001,
<a href="https://doi.org/10.1088/1742-6596/1037/7/072001" target="_blank">https://doi.org/10.1088/1742-6596/1037/7/072001</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>van der Laan and Sørensen(2017)</label><mixed-citation>
       van der Laan, M. P. and Sørensen, N. N.: A 1D version of
EllipSys, Tech. Rep. DTU Wind Energy E-0141, Technical University of Denmark, ISBN: 978-87-93549-08-1, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>van der Laan et al.(2015a)van der Laan, Sørensen, Réthoré, Mann, Kelly, and Troldborg</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.bib49"><label>van der Laan et al.(2015b)van der Laan, Sørensen, Réthoré, Mann, Kelly, Troldborg, Hansen, and
Murcia</label><mixed-citation>
       van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J., Kelly, M. C.,
Troldborg, N., Hansen, K. S., and Murcia, J. P.: The <i>k</i>–<i>ε</i>–<i>f</i><sub><i>P</i></sub> model applied to wind farms, Wind Energy,
18, 2065–2084, <a href="https://doi.org/10.1002/we.1804" target="_blank">https://doi.org/10.1002/we.1804</a>, 2015b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>van der Laan et al.(2015c)van der Laan, Sørensen, Réthoré, Mann, Kelly, Troldborg, Schepers, and
Machefaux</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 <i>k</i>–<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>, 2015c.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>van der Laan et al.(2017)van der Laan, Kelly, and Sørensen</label><mixed-citation>
       van der Laan, M. P., Kelly, M. C., and
Sørensen, N. N.: A new k-epsilon model consistent with Monin–Obukhov similarity theory, Wind Energy, 20,
479–489, <a href="https://doi.org/10.1002/we.2017" target="_blank">https://doi.org/10.1002/we.2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>van der Laan et al.(2020)van der Laan, Andersen, Kelly, and Baungaard</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.bib53"><label>van der Laan et al.(2022)van der Laan, Andersen, Réthoré, Baungaard, Sørensen, and
Troldborg</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.bib54"><label>van der Laan et al.(2023)van der Laan, García-Santiago, Kelly, Meyer Forsting, Dubreuil-Boisclair,
Sponheim Seim, Imberger, Peña, Sørensen, and Réthoré</label><mixed-citation>
       van der Laan, M. P.,
García-Santiago, O., Kelly, M., Meyer Forsting, A., Dubreuil-Boisclair, C., Sponheim Seim, K., Imberger, M., Peña, A.,
Sørensen, N. N., and Réthoré, P.-E.: A new RANS-based wind farm parameterization and inflow model for wind farm
cluster modeling, Wind Energ. Sci., 8, 819–848, <a href="https://doi.org/10.5194/wes-8-819-2023" target="_blank">https://doi.org/10.5194/wes-8-819-2023</a>, 2023. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>van der Laan et al.(2024)van der Laan, Kelly, Baungaard, Dicholkar, and Hodgson</label><mixed-citation>
       van der
Laan, M. P., Kelly, M., Baungaard, M., Dicholkar, A., and Hodgson, E. L.: A simple steady-state inflow model of the
neutral and stable atmospheric boundary layer applied to wind turbine wake simulations, Wind Energ. Sci., 9,
1985–2000, <a href="https://doi.org/10.5194/wes-9-1985-2024" target="_blank">https://doi.org/10.5194/wes-9-1985-2024</a>, 2024. 

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>van der Laan et al.(2026)van der Laan,
Meyer Forsting, Réthoré</label><mixed-citation>
      
van der Laan, M. P., Meyer Forsting, A., and Réthoré, P.-E.: Python script for RANS surrogate model, accepted in Wind Energy Science: A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability,  Zenodo [code], <a href="https://doi.org/10.5281/zenodo.21338574" target="_blank">https://doi.org/10.5281/zenodo.21338574</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><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>
