<?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-1607-2026</article-id><title-group><article-title>Scaled testing of maximum-reserve active power control</article-title><alt-title>Scaled testing of maximum-reserve active power control</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Tamaro</surname><given-names>Simone</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-9792-1863</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Bortolin</surname><given-names>Davide</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Campagnolo</surname><given-names>Filippo</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-3511-7981</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Mühle</surname><given-names>Franz V.</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-1316-3015</ext-link></contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Bottasso</surname><given-names>Carlo L.</given-names></name>
          <email>carlo.bottasso@tum.de</email>
        <ext-link>https://orcid.org/0000-0002-9931-4389</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Wind Energy Institute, Technical University of Munich, 85748 Garching b. München, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Carlo L. Bottasso (carlo.bottasso@tum.de)</corresp></author-notes><pub-date><day>8</day><month>May</month><year>2026</year></pub-date>
      
      <volume>11</volume>
      <issue>5</issue>
      <fpage>1607</fpage><lpage>1630</lpage>
      <history>
        <date date-type="received"><day>14</day><month>November</month><year>2025</year></date>
           <date date-type="rev-request"><day>8</day><month>December</month><year>2025</year></date>
           <date date-type="rev-recd"><day>11</day><month>March</month><year>2026</year></date>
           <date date-type="accepted"><day>8</day><month>April</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Simone Tamaro 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/1607/2026/wes-11-1607-2026.html">This article is available from https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e116">We present the scaled experimental validation of an active power control (APC) algorithm designed to optimize the tracking accuracy of a wind farm in the presence of turbulent wind lulls. This is obtained by maximizing the minimum local power availability (called reserve) across the farm. This method combines an offline-computed open-loop set-point scheduler aimed at the power reserves, with a fast closed-loop corrector tasked with enhancing tracking accuracy. The open-loop component is synthesized using an augmented engineering wake model, which captures the combined effects of yaw misalignment and power curtailment, wind-tunnel-specific inflow characteristics, and the influence of the chord-based Reynolds number (caused by the small size of the models) on the performance of the rotors.</p>

      <p id="d2e119">A preliminary simulation-based steady-state analysis indicates that the approach effectively enhances local power availability across the wind farm by leveraging both induction and wake steering control. The methodology is then experimentally demonstrated in a large boundary-layer wind tunnel with minimal blockage, in different scenarios, including dynamically varying wind direction conditions. Its performance is benchmarked against three alternative APC strategies sourced from the literature. During the experiments, the APC algorithms run in real time on a dedicated cabinet and communicate with the turbine controllers via a dedicated network. Dynamic wind direction changes are generated using a large turntable driven by a field-recorded wind direction time series, scaled to match the temporal dynamics of the wind tunnel.</p>

      <p id="d2e122">Results show that in both static and dynamic scenarios, the proposed control strategy outperforms the reference methods in power tracking accuracy, particularly under high power-demand conditions, while maintaining a limited impact on structural fatigue. Notably, the algorithm effectively manages wake interactions and redistributes local power demands to increase local power  reserves, thereby mitigating saturation effects and improving overall tracking performance.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Bundesministerium für Wirtschaft und Klimaschutz</funding-source>
<award-id>03EE2036A</award-id>
</award-group>
<award-group id="gs2">
<funding-source>Horizon 2020</funding-source>
<award-id>101122256</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="d2e134">Active power control (APC) is a key area of wind farm control that has attracted a growing interest in the context of the ongoing energy transition <xref ref-type="bibr" rid="bib1.bibx1 bib1.bibx22" id="paren.1"/>. In regions with high wind energy penetration, wind farms are increasingly required to contribute to grid stability <xref ref-type="bibr" rid="bib1.bibx10" id="paren.2"/>. This can be accomplished at different time scales that span from the order of seconds (inertia control and primary frequency control) to minutes (secondary frequency control). In the secondary frequency control regime, a wind farm must adjust its total power output according to the requests of the transmission system operator (TSO) <xref ref-type="bibr" rid="bib1.bibx1" id="paren.3"/>.</p>
      <p id="d2e146">In recent years, extensive research has focused on developing wind farm control strategies aimed at increasing the collective power output of turbines. Common approaches include wake redirection  (<xref ref-type="bibr" rid="bib1.bibx32" id="altparen.4"/>; <xref ref-type="bibr" rid="bib1.bibx14" id="altparen.5"/>; <xref ref-type="bibr" rid="bib1.bibx24" id="altparen.6"/>; <xref ref-type="bibr" rid="bib1.bibx21" id="altparen.7"/>; <xref ref-type="bibr" rid="bib1.bibx39" id="altparen.8"/>), static and dynamic induction control (<xref ref-type="bibr" rid="bib1.bibx38" id="altparen.9"/>; <xref ref-type="bibr" rid="bib1.bibx54" id="altparen.10"/>; <xref ref-type="bibr" rid="bib1.bibx26" id="altparen.11"/>; <xref ref-type="bibr" rid="bib1.bibx6" id="altparen.12"/>), and, more recently, wake mixing <xref ref-type="bibr" rid="bib1.bibx25 bib1.bibx37 bib1.bibx35" id="paren.13"/>.</p>
      <p id="d2e180">Wind farm active power control (APC), however, differs in a fundamental way from these power-boosting strategies. In fact, wind farms performing APC are  required to operate in curtailed mode, producing less than the maximum power that they could generate in the present ambient conditions. This mode of operation introduces new control challenges. For instance, how should a turbine be controlled to curtail its power output? How is its wake affected by power curtailment, and can turbines be controlled collectively to benefit power tracking accuracy? Is the effectiveness of wake redirection methods modified by off-rated operation? And what are the consequences in terms of structural fatigue?</p>
      <p id="d2e183">Some of these and other questions have already been addressed in the literature. For example, <xref ref-type="bibr" rid="bib1.bibx23" id="text.14"/> highlighted the limits of open-loop  APC methods for wind farms, and <xref ref-type="bibr" rid="bib1.bibx55" id="text.15"/> showed that a closed-loop control architecture can effectively reduce  power tracking errors. <xref ref-type="bibr" rid="bib1.bibx27" id="text.16"/> later extended this work and stressed the importance of addressing saturation events (i.e., conditions in which the local power demand exceeds the local power availability) to avoid negatively affecting power tracking accuracy. <xref ref-type="bibr" rid="bib1.bibx53" id="text.17"/> demonstrated the pairing of power tracking with a side goal and specifically with the limitation of structural fatigue. The authors achieved this result by adopting a special power-demand distribution across the farm and demonstrated their approach with actuator-disk large-eddy simulations (LESs). More recently, <xref ref-type="bibr" rid="bib1.bibx46" id="text.18"/> and <xref ref-type="bibr" rid="bib1.bibx41" id="text.19"/> have paired APC with wake steering, showing that the time scales required by wake redirection are compatible with secondary grid frequency regulation. However, these studies lack a comprehensive modeling of misaligned operation conditions – which are significantly affected by curtailment <xref ref-type="bibr" rid="bib1.bibx19 bib1.bibx29" id="paren.20"/> – and a dynamic analysis of wind direction variability.</p>
      <p id="d2e209">To the authors' knowledge, none of the APC methods developed so far directly accounts for the power reserve available at each turbine, defined as the difference between the demanded power and the locally available one. When this reserve becomes small, turbines are more likely to experience saturation events, which degrade the ability of the wind farm to track power references. To address the need to mitigate the onset of saturations, <xref ref-type="bibr" rid="bib1.bibx51" id="text.21"/> developed a maximum-reserve APC approach that  explicitly maximizes the minimum reserve across the wind farm, thereby improving its ability to track power references while limiting local saturation events. In particular, when combined with wake steering, the additional power unlocked by the redirection of wakes is strategically converted into a directly usable and controllable reserve, which enlarges the admissible operating region for accurate tracking. This is particularly relevant in industrial delta-control operation <xref ref-type="bibr" rid="bib1.bibx1" id="paren.22"/>, where power references and remuneration are defined relative to the greedy available power of the farm, so that increasing available power translates directly into increased reserve margins.</p>
      <p id="d2e218">The primary goal of this paper is to provide a thorough scaled experimental demonstration of the maximum-reserve APC method of <xref ref-type="bibr" rid="bib1.bibx51" id="text.23"/>, by considering the metrics of tracking performance, saturation events, turbine loading, and actuator duty cycle.</p>
      <p id="d2e224">In fact, so far, most work on APC has been carried out numerically, and the experimental demonstration of this important wind farm control technology is still lagging behind. Two instances of experimental APC tests  have been presented by <xref ref-type="bibr" rid="bib1.bibx42" id="text.24"/> and <xref ref-type="bibr" rid="bib1.bibx28" id="text.25"/>. <xref ref-type="bibr" rid="bib1.bibx42" id="text.26"/> considered a small cluster of two rotors in two wind direction scenarios. Their study demonstrated the strong effects played by the power share distribution on  tracking accuracy and structural fatigue, and by wake effects, especially in partial rotor overlap conditions. In their work, the flow was almost laminar and the turbines relied only on torque control to curtail their power output, which is not necessarily realistic. <xref ref-type="bibr" rid="bib1.bibx28" id="text.27"/> later considered a cluster of three turbines in full alignment conditions and tested two APC techniques. The authors showed the importance of saturation events in determining  tracking accuracy and highlighted the limits of load-balancing approaches in high power-demand conditions. The same paper  also investigated two distinct wind turbine control approaches for off-rated operation, resulting in different wake characteristics, which in turn affect the local power availability at downstream rotors.</p>
      <p id="d2e239">However, neither experimental nor numerical APC studies have yet accounted for wind direction variability. This is an important gap, as wind direction changes occur naturally at any wind farm site and heavily influence  wake–rotor interactions  <xref ref-type="bibr" rid="bib1.bibx43" id="paren.28"/>.</p>
      <p id="d2e245">It is yet another goal of this paper to experimentally characterize the method of <xref ref-type="bibr" rid="bib1.bibx51" id="text.29"/> in realistic stationary and dynamic wind direction conditions. We achieve this by using a cluster of scaled wind turbines operating in a large boundary-layer wind tunnel, where varying wind directions are used to replicate some of the dynamic effects happening in the field. By exploiting the fact that time flows much faster in a scaled experiment than at full scale <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx7" id="paren.30"/> – with a speed-up larger than 80 in the present case – this work overcomes  the limited duration of the simulations in our previous numerical study. The wind tunnel campaign presented in this work improves on some preliminary tests that we reported in <xref ref-type="bibr" rid="bib1.bibx49" id="text.31"/>. Compared to that work, here we have extended the operating conditions, refined the APC algorithms, and expanded the analysis of the results with additional metrics, which now include saturation events and structural fatigue.</p>
      <p id="d2e257">The paper is organized as follows: Sect. <xref ref-type="sec" rid="Ch1.S2"/> briefly reviews the formulation of the  maximum-reserve controller and of three additional APC methods  for performance comparisons, Sect. <xref ref-type="sec" rid="Ch1.S3"/> describes the experimental set-up, and Sect. <xref ref-type="sec" rid="Ch1.S4"/> details the steady-state simulation environment used to synthesize the controller set-points. Experimental results are reported and discussed in Sect. <xref ref-type="sec" rid="Ch1.S5"/> for scenarios with fixed wind directions, and in Sect. <xref ref-type="sec" rid="Ch1.S6"/> for dynamic wind direction conditions. Finally, Sect. <xref ref-type="sec" rid="Ch1.S7"/> draws conclusions and offers an outlook on future work.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Active power control formulation</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Closed-loop with maximum reserve (<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>)</title>
      <p id="d2e301">The maximum-reserve APC used in this work has been extensively described in <xref ref-type="bibr" rid="bib1.bibx51" id="text.32"/>, so here we only summarize its main features. The core of the wind farm control architecture is an open-loop model-based set-point optimal scheduler that determines the yaw misalignment and power demand of each turbine, given the power demand required by the TSO and the ambient conditions. Furthermore, a feedback loop serves the  purpose of correcting tracking errors that may arise from the open loop in real time. A sketch of the controller is shown in Fig. <xref ref-type="fig" rid="F1"/>.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e311">Schematic representation of the maximum-reserve APC controller, featuring an open-loop model-based optimizer and a closed-loop corrector.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f01.png"/>

        </fig>

      <p id="d2e320">The closed and open loops are executed at two distinct time rates, since their outputs involve physical phenomena characterized by different time scales. Specifically, the open loop updates the yaw set-points <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the power demand <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> at a slow pace, due to the time required by wakes to propagate downstream, whereas the closed-loop corrector acts at a rate that is 2 orders of magnitude  faster.</p>
<sec id="Ch1.S2.SS1.SSS1">
  <label>2.1.1</label><title>Open-loop set-point optimal scheduler</title>
      <p id="d2e353">The open-loop component of the algorithm provides the optimal set-points in terms of yaw misalignment and power share. These are computed by a gradient-based optimization that maximizes the smallest power reserve within the farm for a given overall power demand and ambient conditions.</p>
      <p id="d2e356">Given the total number of turbines <inline-formula><mml:math id="M4" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> in the farm, the power of the <inline-formula><mml:math id="M5" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th machine is noted as <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> indicates the  ambient conditions. Ambient conditions here are assumed to include freestream wind speed <inline-formula><mml:math id="M8" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, wind direction <inline-formula><mml:math id="M9" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>, vertical shear <inline-formula><mml:math id="M10" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>, and turbulence intensity (TI) <inline-formula><mml:math id="M11" display="inline"><mml:mi>I</mml:mi></mml:math></inline-formula>. The control inputs are noted as <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and they include the power share <inline-formula><mml:math id="M13" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></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:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and yaw misalignment <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e510">The maximum power that can be generated by turbine <inline-formula><mml:math id="M15" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> by adjusting its control set-points <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (while keeping the set-points of the other turbines fixed) in the ambient conditions <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is computed as

                  <disp-formula id="Ch1.Ex1"><mml:math id="M18" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:munder><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">ρ</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">π</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi>R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi>U</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M19" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the air density, <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the power coefficient, <inline-formula><mml:math id="M21" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> is the rotor radius, <inline-formula><mml:math id="M22" display="inline"><mml:mi>U</mml:mi></mml:math></inline-formula> is the local rotor-equivalent wind speed, and <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the power scaling factor used by <xref ref-type="bibr" rid="bib1.bibx48" id="text.33"/> to model power losses due to yaw <inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> and tilt <inline-formula><mml:math id="M25" display="inline"><mml:mi mathvariant="italic">δ</mml:mi></mml:math></inline-formula>. The local flow conditions at the rotor of a turbine, including <inline-formula><mml:math id="M26" display="inline"><mml:mi>U</mml:mi></mml:math></inline-formula>, are computed with an engineering flow model, here based on FLORIS <xref ref-type="bibr" rid="bib1.bibx40" id="paren.34"/>. The use of a steady-state flow model is justified by the fact that – as also shown later in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/> – the wind direction time scales targeted by the controller are 1 order of magnitude larger than the propagation time of wake effects.</p>
      <p id="d2e724">The power tracking method looks for the combination of set-points that produce the minimum possible maximum power ratio <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> across all <inline-formula><mml:math id="M28" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> turbines in the farm while satisfying the power demand of the TSO, <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. This tracking criterion can be expressed as
            

                  <disp-formula id="Ch1.E1" specific-use="align" content-type="subnumberedsingle"><mml:math id="M30" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1.2"><mml:mtd><mml:mtext>1a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:munder><mml:mo movablelimits="false">min⁡</mml:mo><mml:mi>u</mml:mi></mml:munder><mml:mspace width="0.125em" linebreak="nobreak"/><mml:munder><mml:mo movablelimits="false">max⁡</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi>N</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:munder><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E1.3"><mml:mtd><mml:mtext>1b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtext>such that</mml:mtext><mml:mspace width="0.125em" linebreak="nobreak"/><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            In fact, the smaller the power ratio <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, the larger the reserve <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> that is available to compensate against drops in the wind.</p>
      <p id="d2e920"><inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> improves tracking performance because it explicitly targets small reserves, which – when they are exhausted and generate saturations – are the main drivers of tracking deviations <xref ref-type="bibr" rid="bib1.bibx51" id="paren.35"/>. This formulation can be implemented by using induction control alone or in combination with wake steering, the latter case being considered here.</p>
      <p id="d2e937">Equation (<xref ref-type="disp-formula" rid="Ch1.E1"/>) represents a constrained optimization problem. The optimization does not need to be performed in real time during operation. Rather, it is executed offline for a set of ambient conditions and levels of wind farm curtailment. Results are collected in a lookup table (LUT), which is then interpolated at runtime, similarly to what is routinely done for power-boosting wind farm control <xref ref-type="bibr" rid="bib1.bibx36" id="paren.36"/>, so that
            

                  <disp-formula id="Ch1.E4" specific-use="align" content-type="subnumberedsingle"><mml:math id="M34" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E4.5"><mml:mtd><mml:mtext>2a</mml:mtext></mml:mtd><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>I</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E4.6"><mml:mtd><mml:mtext>2b</mml:mtext></mml:mtd><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>I</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S2.SS1.SSS2">
  <label>2.1.2</label><title>Closed-loop corrector</title>
      <p id="d2e1064">The closed-loop corrector is taken directly from the work of  <xref ref-type="bibr" rid="bib1.bibx55" id="text.37"/>. The corrector consists of a simple proportional-integral (PI) feedback loop that operates on the power tracking error, which arises from the open-loop component of the control structure. Its goal is to ensure that – as some turbines deviate from their respective  demands – the reference power tracking signal is promptly corrected.</p>
      <p id="d2e1070">The tracking error <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is defined as

                  <disp-formula id="Ch1.E7" content-type="numbered"><label>3</label><mml:math id="M36" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>-</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

            The control signal <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext><mml:mtext>PI</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula> at time instant <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> is defined as

                  <disp-formula id="Ch1.E8" content-type="numbered"><label>4</label><mml:math id="M39" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext><mml:mtext>PI</mml:mtext></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>P</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>I</mml:mi></mml:msubsup><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi mathvariant="italic">τ</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>P</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are the PI gains, and <inline-formula><mml:math id="M42" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula> is a time step counter. The wind farm is then required to track <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext><mml:mtext>PI</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e1266">The PI gains are obtained with a tuning procedure based on the simple <sc>Simulink</sc> <xref ref-type="bibr" rid="bib1.bibx52" id="paren.38"/> model described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>. The controller features an anti-windup element on the integrator when all turbines are saturated, i.e., when <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mi>S</mml:mi><mml:mo>=</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M45" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula> denotes the number of saturated rotors. Furthermore, the integrator is reset in certain conditions, as described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>. The gain scheduling based on the number of saturated turbines proposed by <xref ref-type="bibr" rid="bib1.bibx55" id="text.39"/> is not used due to the small size of the farm considered here, which causes abrupt variations in the gains that can lead to instabilities. Instead, when a turbine saturates, its local power tracking error is redistributed equally among the non-saturated ones as proposed by <xref ref-type="bibr" rid="bib1.bibx53" id="text.40"/> and described in more detail in Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Reference APC formulations for performance comparison</title>
      <p id="d2e1316">We rely on three reference wind farm APC controllers to compare the performance of the maximum-reserve method, namely: <list list-type="bullet"><list-item>
      <p id="d2e1321"><italic>Open-loop (OL).</italic> This simple approach assigns predetermined set-points <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> to each turbine, as fractions of the power demanded by the TSO, so that <inline-formula><mml:math id="M47" display="inline"><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:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. The set-points <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are scheduled with the instantaneous wind direction, so that <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to account for different local power availabilities induced by wake impingements. The values <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are computed with the FLORIS model <xref ref-type="bibr" rid="bib1.bibx40" id="paren.41"/>, as described in Sect. <xref ref-type="sec" rid="Ch1.S4"/>.</p></list-item><list-item>
      <p id="d2e1417"><italic>Closed-loop (CL).</italic> This method is the same as OL with the addition of the closed-loop PI corrector  described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1.SSS2"/>. Similarly to the OL method, the values <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are scheduled with the instantaneous wind direction based on predictions from FLORIS.</p></list-item><list-item>
      <p id="d2e1436"><italic>Closed-loop with load balance</italic> (<italic>CL</italic> <inline-formula><mml:math id="M52" display="inline"><mml:mo>+</mml:mo></mml:math></inline-formula> <italic>LB</italic>). This method consists of CL without the fixed scheduling of the power share set-points <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Instead, an additional PI loop is nested to distribute the set-points <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with the goal of balancing loads within the wind farm <xref ref-type="bibr" rid="bib1.bibx53" id="paren.42"/>. This coordinated load distribution (CLD) loop modifies the power share set-points to minimize the load-balancing error <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>L</mml:mi></mml:mrow></mml:math></inline-formula>, which is defined as<disp-formula id="Ch1.E9" content-type="numbered"><label>5</label><mml:math id="M56" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>L</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>where <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the load of the <inline-formula><mml:math id="M58" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th turbine and <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>L</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mi>N</mml:mi><mml:mo>-</mml:mo><mml:mi>S</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><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>N</mml:mi><mml:mo>-</mml:mo><mml:mi>S</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mi>L</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>non-sat.</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the average load in the farm. A PI power share distribution at time instant <inline-formula><mml:math id="M60" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> is computed as<disp-formula id="Ch1.E10" content-type="numbered"><label>6</label><mml:math id="M61" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>P</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>I</mml:mi></mml:msubsup><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi mathvariant="italic">τ</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>where <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>P</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>I</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> are the PI gains.</p>
      <p id="d2e1701">In this work, the tower-base fore-aft bending moment is chosen as the target load <inline-formula><mml:math id="M64" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula>. The PI gains of the CLD loop are tuned with the same <sc>Simulink</sc> model used for the APC loop, described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS4"/>. As proposed by <xref ref-type="bibr" rid="bib1.bibx27" id="text.43"/>, the mean load is computed considering only non-saturated turbines. Furthermore, the integrator is reset on all turbines in the event that all turbines reach saturation. In these conditions, the error <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is null – since it is computed only with non-saturated turbines – and the integrator component lies at zero, until at least one turbine recovers from saturation. An anti-windup is finally added to the integrator of each turbine whenever the power share <inline-formula><mml:math id="M66" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> exceeds unfeasible values.</p></list-item></list></p>
      <p id="d2e1743">It is important to mention that the set-points for <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> are computed using the same FLORIS version adopted for OL, CL, and <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>. This ensures that any discrepancy deriving from the steady-state model is present in each compared control approach. Furthermore, CL, <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> feature the same PI control block described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1.SSS2"/>, ensuring that the closed-loop element is also the same.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Wind turbine controller</title>
      <p id="d2e1804">The wind turbine controller is based on two regimes, namely <italic>below rated</italic> and <italic>rated</italic>. In  below-rated conditions,  blades lie at the optimal pitch angle, while the generator torque is scheduled with the rotor speed <inline-formula><mml:math id="M71" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> to ensure that the tip speed ratio <inline-formula><mml:math id="M72" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> yields the maximum <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The rated condition occurs when <inline-formula><mml:math id="M74" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula> exceeds its rated value <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. In this case, torque is fixed while  pitch angle increases from its optimal value to limit the power output to <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Turbines can track a given power demand <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (where <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) by adjusting <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and by setting <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e1934">In this control strategy, the blade pitch angle <inline-formula><mml:math id="M81" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> serves as an indicator of the operating reserve – or margin – for a curtailed wind turbine <xref ref-type="bibr" rid="bib1.bibx47" id="paren.44"/>. Typically, larger values of <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> suggest a greater margin, as the turbine is functioning below its optimal power coefficient. The minimum (so called “fine”) value for <inline-formula><mml:math id="M83" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> corresponds to the optimal pitch angle <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>opt</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, which achieves the maximum <inline-formula><mml:math id="M85" 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>.</p>
      <p id="d2e1984">This controller was selected here because it directly accepts a power-demand input and uses the blade pitch angle to accurately follow it. Alternative control strategies could also be implemented, although they might lead to different APC performance.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Identification and treatment of saturation conditions</title>
      <p id="d2e1995">Saturations are detected on one turbine when the blade pitch lies at its optimal value plus a tolerance, and the tracking error exceeds a given threshold as specified in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. When a wind turbine enters saturation, its power demand is set to  <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, which is the last value recorded before saturation, and its power share is computed as

                <disp-formula id="Ch1.E11" content-type="numbered"><label>7</label><mml:math id="M87" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext><mml:mtext>PI</mml:mtext></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Then its local tracking error is equally redistributed to non-saturated turbines in the form of an additional power demand, in order to ensure that <inline-formula><mml:math id="M88" display="inline"><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:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>. Notice that local isolated persistent saturation events do not necessarily introduce significant tracking errors as long as other turbines have enough margin to compensate.</p>
      <p id="d2e2086">Clearly, conditions in which all wind turbines are close to saturation are particularly harmful to the tracking accuracy, as a cascading effect can be triggered that may lead to all turbines being saturated. In this case, all wind turbines operate in greedy mode, and if the TSO demand drops, a large negative <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> will result. To avoid this situation, when the wind farm produces more than the instantaneous demand (with a threshold, as explained earlier), every saturation condition is forcibly reset.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Methods</title>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Experimental set-up</title>
      <p id="d2e2116">The wind tunnel experimental campaign is performed with a cluster of three G1 wind turbines <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx57" id="paren.45"/> – labeled <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (upstream), <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (center), and <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> (downstream) – longitudinally spaced by 5<inline-formula><mml:math id="M93" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>, where <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mi>D</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.1</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M95" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula> is the rotor diameter. The G1 scaled machine has a rated rotor speed <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of 850 rpm, a rated power <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of 46 <inline-formula><mml:math id="M98" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">W</mml:mi></mml:mrow></mml:math></inline-formula>, an optimal collective blade pitch angle <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>OPT</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> of 0.43°, and zero tilt. The time compression ratio is equal to about 80, which means that time flows much faster in the experiment than at full scale <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx7" id="paren.46"/>. Each G1 is controlled in real time by a dedicated Bachmann M1 PLC <xref ref-type="bibr" rid="bib1.bibx2" id="paren.47"/>, which executes the turbine-level controller described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/> every <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M101" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">ms</mml:mi></mml:mrow></mml:math></inline-formula>. The maximum yaw rate is equal to 20<inline-formula><mml:math id="M102" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">°</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>, corresponding to approximately 0.25<inline-formula><mml:math id="M103" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">°</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> at full scale, which is a realistic value <xref ref-type="bibr" rid="bib1.bibx33 bib1.bibx5" id="paren.48"/>.</p>
      <p id="d2e2293">Tests are performed in the atmospheric test section of the wind tunnel of the Politecnico di Milano <xref ref-type="bibr" rid="bib1.bibx9" id="paren.49"/> in moderate turbulence conditions, with a power-law shear exponent <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.14</mml:mn></mml:mrow></mml:math></inline-formula>, a <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mtext>TI</mml:mtext><mml:mo>=</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> at hub height, and an integral length scale of turbulence of 0.79<inline-formula><mml:math id="M106" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula>. These ambient conditions are representative of offshore scenarios under neutral atmospheric boundary-layer conditions. It is important to recall that even a fairly mild freestream turbulence intensity results in very large turbulent fluctuations at downstream turbines, especially in such closely spaced configurations; for example, Fig. 11 of <xref ref-type="bibr" rid="bib1.bibx51" id="text.50"/> shows wake-affected turbines experiencing TI values exceeding 30 <inline-formula><mml:math id="M107" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> for a freestream TI of 5.7 <inline-formula><mml:math id="M108" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>. Such high turbulence intensities create very challenging conditions for power tracking at downstream turbines.</p>
      <p id="d2e2354">The blockage ratio considering one G1 rotor is 1.8 <inline-formula><mml:math id="M109" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>, which is significantly smaller than previous APC wind tunnel studies <xref ref-type="bibr" rid="bib1.bibx42 bib1.bibx28" id="paren.51"/>. The three turbines are installed on a large turntable. The rotational speed of the wind tunnel fans is kept constant during the experiments. The resulting wind speed <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, measured by a pitot tube placed <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi>D</mml:mi></mml:mrow></mml:math></inline-formula> upstream of <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, is approximately equal to 5.5 <inline-formula><mml:math id="M113" display="inline"><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">ms</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>.</p>
      <p id="d2e2415">Two sets of experiments are conducted, respectively referred to in the following as “static” and “dynamic”.</p>
      <p id="d2e2419">In the static tests, the turntable is fixed at an angle <inline-formula><mml:math id="M114" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> to reproduce a specific wind direction. Two angles are considered, corresponding to partial rotor overlaps of 75 <inline-formula><mml:math id="M115" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>) and 50 <inline-formula><mml:math id="M117" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>), respectively. We define rotor overlap as the fraction (in percentage) of the diameter that two wind turbine rotors share when looking downstream. An overlap of <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mn mathvariant="normal">100</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> corresponds to perfectly aligned rotors (center-to-center), while <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mn mathvariant="normal">50</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula> overlap means that the downstream rotor is laterally displaced by half a rotor diameter. In the static wind direction scenarios, each test has a duration of approximately 30 <inline-formula><mml:math id="M121" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to about 4 <inline-formula><mml:math id="M122" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula> at full scale. Six repetitions are performed to reduce the uncertainties caused by the turbulent fluctuations of the flow.</p>
      <p id="d2e2514">In the dynamic tests, the turntable is rotated according to a predetermined time series, in order to dynamically vary the wind direction over the cluster of turbines. In this case, each test has a duration of 180 <inline-formula><mml:math id="M123" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, to match the overall duration of the static tests.</p>
      <p id="d2e2525">Figure <xref ref-type="fig" rid="F2"/> shows the wind tunnel set-up, while Fig. <xref ref-type="fig" rid="F3"/> shows the vertical profiles of the mean streamwise velocity and turbulence intensity measured at the location of the upstream turbine <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>  for <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e2559">Wind tunnel set-up <bold>(a)</bold> and close-up view of the control cabinets <bold>(b)</bold>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f02.jpg"/>

        </fig>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e2576">Wind tunnel inflow. Vertical wind speed profile <bold>(a)</bold>, vertical TI profile <bold>(b)</bold>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f03.png"/>

        </fig>

      <p id="d2e2592">The APC algorithms are implemented in MATLAB <sc>Simulink</sc> <xref ref-type="bibr" rid="bib1.bibx52" id="paren.52"/>, from which C++ codes are exported, and later compiled and loaded onto a Bachmann M1 PLC <xref ref-type="bibr" rid="bib1.bibx2" id="paren.53"/>. At every time step, the APC controller receives information on the current power demand and, for each  wind turbine, on its instantaneous power production, blade pitch angle, and tower-base fore-aft bending moment. Furthermore, the APC controller is also informed in real time about the current wind farm power demand <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> and the current wind direction <inline-formula><mml:math id="M127" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>. In one sampling period, the set-points of demanded power and nacelle yaw are computed by the APC controller and dispatched to each wind turbine. The direction of the wind relative to the farm is read from the turntable encoder. Therefore, its measurement can be considered exact up to the accuracy of this sensor. In the field, the knowledge of <inline-formula><mml:math id="M128" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> is definitively more uncertain, due to the typically limited accuracy of the onboard anemometry system and the yaw encoder. The effects of wind direction uncertainties on wake steering performance were experimentally investigated by <xref ref-type="bibr" rid="bib1.bibx15" id="text.54"/>, using a very similar set-up as the one considered here.</p>
      <p id="d2e2633">The control cabinets executing the wind turbine and APC controllers are connected to a PC in the control room via the Ethernet. This PC is used to monitor the wind turbine sensors through a graphical user interface, to install and uninstall applications, to activate the wind farm controller, and to modify its settings as necessary. The Modbus communication protocol is used to start simultaneous data acquisitions, due to its compatibility with MATLAB. Communication between the APC and the wind turbine controllers is instead accomplished with Ethernet cables through the Profinet protocol <xref ref-type="bibr" rid="bib1.bibx44" id="paren.55"/>. This system was chosen due to its relatively fast communication capabilities and integration with the existing set-up. The APC algorithms are executed with a time step of 4 <inline-formula><mml:math id="M129" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">ms</mml:mi></mml:mrow></mml:math></inline-formula> (equivalent to approximately 0.3 <inline-formula><mml:math id="M130" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> at full scale) to match the time step of the wind turbine controllers. In <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, the open-loop scheduler is updated 100 times slower, i.e., every 0.4 <inline-formula><mml:math id="M132" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to approximately 30 <inline-formula><mml:math id="M133" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> at full scale. A sketch of the connections among the various components of the system is shown in Fig. <xref ref-type="fig" rid="F4"/>.</p>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e2688">Sketch of the wiring connections among wind turbines, APC, and PC.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f04.png"/>

        </fig>

      <p id="d2e2697">Local saturation conditions are indicated by a flag that is raised when both of the following conditions are simultaneously verified: <list list-type="bullet"><list-item>
      <p id="d2e2702">The tracking error of a turbine exceeds 1 <inline-formula><mml:math id="M134" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of the rated power <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, i.e., 0.46 <inline-formula><mml:math id="M136" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">W</mml:mi></mml:mrow></mml:math></inline-formula>, and</p></list-item><list-item>
      <p id="d2e2733">Its blade pitch angle is lower than <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>OPT</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.37</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>.</p></list-item></list></p>
      <p id="d2e2753">Saturation conditions are also used to control the integral part of the APC PI controller. As discussed in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1.SSS2"/>, the integrator in the APC loop includes an anti-windup element that is activated when all turbines in the wind farm become saturated. This mechanism quickly reduces the integral term by applying to it a gain of 0.99  at each time step.</p>
      <p id="d2e2759">All saturation flags are reset when the wind farm power output exceeds <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> by more than <inline-formula><mml:math id="M139" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi mathvariant="italic">%</mml:mi><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.38</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M140" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">W</mml:mi></mml:mrow></mml:math></inline-formula>. This mechanism addresses the situation in which all turbines become saturated. In such cases, the rotors are commanded to follow <inline-formula><mml:math id="M141" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula>, i.e., the last demanded power value prior to saturation, as described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS4"/>. However, when all turbines are saturated, the system is unable to detect changes in <inline-formula><mml:math id="M142" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. Consequently, the machines would continue tracking <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> even if <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> decreases. To avoid this situation, the APC integrator and all saturations are reset whenever <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi mathvariant="italic">%</mml:mi><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. In the CLD PI controller, the integrator is reset either when all turbines become saturated or when this condition ends.</p>
      <p id="d2e2897">The control algorithms rely on multiple first-order filters. Cut-off frequencies are normalized using the rated rotor speed <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which  allows for a straightforward conversion to the full-scale case. For all controllers described in Sect. <xref ref-type="sec" rid="Ch1.S2"/>, the  power generated by each turbine is low-pass filtered using a first-order transfer function with a cut-off frequency of 5 <inline-formula><mml:math id="M147" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.35</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), before  inputting it in the farm-level controller.  A first-order filter is chosen here to limit the time delay associated with higher-order filters, which would hinder tracking accuracy. A cut-off frequency of 1.57 <inline-formula><mml:math id="M149" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.11</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) is used to update the power set-points, while a lower cut-off of 0.72 <inline-formula><mml:math id="M151" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) is employed for the power demand. These different cut-off frequencies are selected to ensure that the power-demand signal remains smooth while minimizing delays in the set-points.</p>
      <p id="d2e2991">For <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, fore-aft bending moments are filtered using a moving average with a fundamental frequency of 1 <inline-formula><mml:math id="M154" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.07</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>). This value is 1 order of magnitude smaller than the turbine first fore-aft mode at 16 <inline-formula><mml:math id="M156" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula>, thereby ensuring that the controller detects only mean loads and does not react to structural vibrations.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Turntable control</title>
      <p id="d2e3051">The wind tunnel turntable has a diameter of 13 <inline-formula><mml:math id="M157" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi></mml:mrow></mml:math></inline-formula>, and it can be rotated to follow a prescribed time history <xref ref-type="bibr" rid="bib1.bibx15" id="paren.56"/>. The time series has been sampled at 1 <inline-formula><mml:math id="M158" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula> at an onshore test site in northern Germany <xref ref-type="bibr" rid="bib1.bibx13" id="paren.57"/> and scaled by the speed-up factor of the experiment. <xref ref-type="bibr" rid="bib1.bibx15" id="text.58"/> have extensively discussed this set-up, showing a good agreement between the wind direction dynamics in the field and in the lab. Figure <xref ref-type="fig" rid="F5"/> reports the tunnel-scaled direction time history <inline-formula><mml:math id="M159" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F5"><label>Figure 5</label><caption><p id="d2e3098">Time history of wind direction <inline-formula><mml:math id="M160" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Full rotor alignments (<inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>) are highlighted.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f05.png"/>

        </fig>

      <p id="d2e3135">The figure shows that the scaled time history mainly consists of fluctuations characterized by slow frequencies <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="italic">ψ</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M163" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Hz</mml:mi></mml:mrow></mml:math></inline-formula>. These correspond to time scales longer than 20 <inline-formula><mml:math id="M164" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, which are 1 order of magnitude larger than the 1–2 <inline-formula><mml:math id="M165" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> characterizing the propagation time of wake effects. Clearly, the same conclusions would apply at full scale. This also justifies the adoption of a steady-state wake model for the synthesis of the controller.</p>
      <p id="d2e3180">Throughout the experiment, the wind direction changes sign five times. This condition is particularly challenging when performing double-sided wake steering since it requires a sudden, large yaw angle variation to change the side where wakes are deflected.</p>
      <p id="d2e3183">Figure <xref ref-type="fig" rid="F6"/>a presents the measured available farm power as a function of  wind direction <inline-formula><mml:math id="M166" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>, while Fig. <xref ref-type="fig" rid="F6"/>b shows the measured variation of local power share as a function of  <inline-formula><mml:math id="M167" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> in the absence of wind farm control (i.e., in standard greedy mode).</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e3206"><bold>(a)</bold> Non-dimensional available power <inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as a function of wind direction <inline-formula><mml:math id="M169" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>. <bold>(b)</bold> Local power set-points as functions of <inline-formula><mml:math id="M170" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> in greedy mode. When <inline-formula><mml:math id="M171" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, the wind turbines are fully aligned.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f06.png"/>

        </fig>

      <p id="d2e3280">Figure <xref ref-type="fig" rid="F6"/>a highlights the strong effect of wake impingement on power production. The minimum available power is visible in correspondence with <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>. The lack of symmetry with respect to <inline-formula><mml:math id="M173" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> is due to a lateral inhomogeneity of the flow within the wind tunnel <xref ref-type="bibr" rid="bib1.bibx15" id="paren.59"/>. Overall, <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> appears to be suffering the most significant power losses, as in fact it produces only 15 <inline-formula><mml:math id="M175" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of the wind farm power when <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M177" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> presents a slightly higher power due to the high turbulence in the two wakes that impinge on it, which speeds up their recovery.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Reference power-demand signal</title>
      <p id="d2e3363">A dynamic reference power signal typical of automatic generation control (AGC) is used as an input signal to the farm-level tracking controllers. AGC is the secondary response regime of grid frequency control, and it consists of dynamically adjusting the power output of a plant according to the request of the TSO <xref ref-type="bibr" rid="bib1.bibx1" id="paren.60"/>. A similar signal has been considered by other authors <xref ref-type="bibr" rid="bib1.bibx23 bib1.bibx55 bib1.bibx53 bib1.bibx45 bib1.bibx4" id="paren.61"/>. The signal is defined as

                <disp-formula id="Ch1.E12" content-type="numbered"><label>8</label><mml:math id="M178" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>P</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>b</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>+</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi>c</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is a normalized  time-dependent test signal, <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the available power of the wind farm in greedy aligned conditions at a specific wind direction <inline-formula><mml:math id="M181" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M182" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M183" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula> are two parameters that respectively shift and scale <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e3503">Due to  the small size of the models, the original signal is accelerated in time by a factor of 81.73 <xref ref-type="bibr" rid="bib1.bibx7" id="paren.62"/>. Figure <xref ref-type="fig" rid="F7"/>a shows <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula> as a function of time. In the tests with the dynamic turntable, the reference power signal in Fig. <xref ref-type="fig" rid="F7"/>a is looped multiple times for a total length of 3 <inline-formula><mml:math id="M186" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">min</mml:mi></mml:mrow></mml:math></inline-formula>. In this case, the instantaneous available wind farm power  <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> depends on the instantaneous wind direction <inline-formula><mml:math id="M188" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> as shown in Fig. <xref ref-type="fig" rid="F6"/>a. Figure <xref ref-type="fig" rid="F7"/>b shows the time history of <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo><mml:mo>/</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, where both the full-scale (top <inline-formula><mml:math id="M190" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis) and wind tunnel (bottom <inline-formula><mml:math id="M191" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis) time scales are reported.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e3626">Time series of the reference test signal <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula> <bold>(a)</bold> and of the normalized power reference used in the dynamic turntable experiments <bold>(b)</bold>. The additional <inline-formula><mml:math id="M193" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis on the top part of the plot indicates full-scale time.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f07.png"/>

        </fig>

      <p id="d2e3662">The reference power signal is initialized with a rising ramp to reduce the effects of initial transients. Notice how a 4 <inline-formula><mml:math id="M194" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">h</mml:mi></mml:mrow></mml:math></inline-formula> long test in the field is replicated in the significantly shorter time of 180 <inline-formula><mml:math id="M195" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> in the wind tunnel. It is important to notice that the test time of 3 <inline-formula><mml:math id="M196" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">min</mml:mi></mml:mrow></mml:math></inline-formula> covers 24 full-scale 10 <inline-formula><mml:math id="M197" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">min</mml:mi></mml:mrow></mml:math></inline-formula> turbulent realizations, which ensures the statistical convergence of results <xref ref-type="bibr" rid="bib1.bibx34" id="paren.63"/>.</p>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Tuning procedure of the PI gains</title>
      <p id="d2e3708">The gains used in the APC controllers and the cut-off frequencies of the filters are tuned using a digital twin of the wind tunnel set-up. This model of the experiment is implemented in <sc>Simulink</sc> <xref ref-type="bibr" rid="bib1.bibx52" id="paren.64"/> and includes three blocks representing the wind turbines, each running the same controller used in the wind tunnel tests. The drivetrain dynamics are modeled as described in <xref ref-type="bibr" rid="bib1.bibx16" id="text.65"/>, while rotor aerodynamics are represented using LUTs computed offline with a blade element momentum (BEM) model of the G1 <xref ref-type="bibr" rid="bib1.bibx56" id="paren.66"/>. The LUTs schedule rotor thrust and torque as functions of turbine operating conditions. Tower dynamics are modeled with a second-order system.</p>
      <p id="d2e3723">The Jensen wake model <xref ref-type="bibr" rid="bib1.bibx31" id="paren.67"/>, combined with the instantaneous thrust coefficient <inline-formula><mml:math id="M198" 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 used to estimate the wake deficit for downstream turbines. A  delay is used to simulate the time required for wake effects to propagate downstream. The same <sc>CL</sc> and <sc><inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo mathvariant="normal">+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula></sc> controllers used in the wind tunnel experiments are included in the digital twin. To improve the robustness of gain tuning, zero-mean white noise with a variance of 0.25 <inline-formula><mml:math id="M200" display="inline"><mml:mrow class="unit"><mml:msup><mml:mi mathvariant="normal">W</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> is added to the measured input power.</p>
      <p id="d2e3767">Gain optimization is performed with the goal of reducing the influence of saturation events, using a gradient-based interior-point algorithm with a power-demand signal characterized by <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">55</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M202" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">W</mml:mi></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:mi>c</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e3817">For the <sc><inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo mathvariant="normal">+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula></sc> controller, the cost function is defined as

                <disp-formula id="Ch1.E13" content-type="numbered"><label>9</label><mml:math id="M206" display="block"><mml:mstyle displaystyle="true" class="stylechange"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi>J</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.75</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mover accent="true"><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>P</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>N</mml:mi></mml:munderover><mml:msub><mml:mover accent="true"><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which represents a weighted sum of the non-dimensional tracking error <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the non-dimensional load-balancing error <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. Both quantities are scaled to lie in the interval <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e3937">The resulting gains for the APC loop are

                <disp-formula specific-use="align"><mml:math id="M210" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle class="stylechange" displaystyle="true"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>P</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.3127</mml:mn><mml:mtext> [–] </mml:mtext><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:msubsup><mml:mi>K</mml:mi><mml:mtext>APC</mml:mtext><mml:mi>I</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">14.9253</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><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:mo>=</mml:mo><mml:mn mathvariant="normal">1.05</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          For the CLD loop, the gains are

                <disp-formula specific-use="align"><mml:math id="M211" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mstyle displaystyle="true" class="stylechange"/></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>P</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.03427</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:mtext>Nm</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.52</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msubsup><mml:mi>L</mml:mi><mml:mi>R</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><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:msubsup><mml:mi>K</mml:mi><mml:mtext>CLD</mml:mtext><mml:mi>I</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.07959</mml:mn><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msup><mml:mtext>Nm</mml:mtext><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><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:mo>=</mml:mo><mml:mn mathvariant="normal">0.09</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msubsup><mml:mi>L</mml:mi><mml:mi>R</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msubsup><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mi>R</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">15.2</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M213" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">Nm</mml:mi></mml:mrow></mml:math></inline-formula> is the tower-base fore-aft bending moment of the G1 turbine at rated wind speed.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Steady-state performance characterization</title>
      <p id="d2e4143">The engineering farm flow model FLORIS v3 <xref ref-type="bibr" rid="bib1.bibx40" id="paren.68"/> is used here to perform a steady-state characterization of the performance of the various controllers, before entering the wind tunnel. The same model is also used to synthesize the open-loop part of the controller, yielding the control LUTs.</p>
      <p id="d2e4149">The wake deficit and deflection models proposed by <xref ref-type="bibr" rid="bib1.bibx3" id="text.69"/> are employed, along with the turbulence model by <xref ref-type="bibr" rid="bib1.bibx20" id="text.70"/>. In both cases, the model parameters are fine-tuned to replicate wind tunnel conditions, as summarized in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.</p>
      <p id="d2e4160">FLORIS is also augmented with a heterogeneous wind map that replicates the asymmetric inflow of the wind tunnel shown in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/> <xref ref-type="bibr" rid="bib1.bibx17" id="paren.71"/>, following the procedure proposed by <xref ref-type="bibr" rid="bib1.bibx11" id="text.72"/>. In OL and CL, the same engineering flow model is used to assign the power share set-points <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as functions of <inline-formula><mml:math id="M215" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>, given the ambient conditions of the experiments.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Set-points for <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>: combining wake steering with off-rated operation</title>
      <p id="d2e4209">In <inline-formula><mml:math id="M217" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>,  wind turbines are subjected to induction control and simultaneously perform wake steering. To model this combined off-rated and misaligned operation,  LUTs of power coefficient <inline-formula><mml:math id="M218" 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 thrust coefficient <inline-formula><mml:math id="M219" 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> are computed via an analytical model <xref ref-type="bibr" rid="bib1.bibx48" id="paren.73"/>. The adoption of such a model is motivated by the fact that off-rated operation spans a wide range of <inline-formula><mml:math id="M220" 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 – and misaligned operation is strongly dependent on <inline-formula><mml:math id="M221" 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> <xref ref-type="bibr" rid="bib1.bibx19 bib1.bibx29" id="paren.74"/>.</p>
      <p id="d2e4275">Another important aspect typical of scaled wind turbine models is the effect of the chord-based Reynolds number on the aerodynamic performance of the rotor <xref ref-type="bibr" rid="bib1.bibx7" id="paren.75"/>. This is relevant since with the controller described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>, turbines operating in off-rated conditions experience low rotational speeds. These effects were taken into account by using a BEM model of the G1 that includes a dependency on the chord-based Reynolds number <xref ref-type="bibr" rid="bib1.bibx56" id="paren.76"/>. Figures <xref ref-type="fig" rid="F8"/> and <xref ref-type="fig" rid="F9"/> show examples of LUTs for <inline-formula><mml:math id="M222" 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="M223" 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>, where the auxiliary factor <inline-formula><mml:math id="M224" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula> has been introduced to quantify the level of derating, with <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> corresponding to the greedy power mode.</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e4334">LUTs for <bold>(a)</bold> power coefficient <inline-formula><mml:math id="M226" 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 <bold>(b)</bold> thrust coefficient <inline-formula><mml:math id="M227" 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  functions of wind speed for the G1 turbine. Results corresponds to a power scaling factor <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, (i.e., no curtailment) and different yaw angles <inline-formula><mml:math id="M229" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f08.png"/>

        </fig>

      <fig id="F9"><label>Figure 9</label><caption><p id="d2e4398">LUTs for <bold>(a)</bold> power coefficient <inline-formula><mml:math id="M230" 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 <bold>(b)</bold> thrust coefficient <inline-formula><mml:math id="M231" 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 functions of wind speed for the G1 turbine. Results correspond to a yaw angle <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and different power scaling factors <inline-formula><mml:math id="M233" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula>, representing the level of power curtailment.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f09.png"/>

        </fig>

      <p id="d2e4457">Since both power demand and wind direction vary, the LUTs for <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are two-dimensional. Other model inputs, such as TI and inflow shear, are fixed as described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>. To generate the LUTs, different optimizations are solved for each wind direction and wind farm power demand. When the optimization converges, the resulting power share set-points are computed as <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></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:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and they are stored together with the yaw set-points. The optimization problem is solved with the gradient-based sequential quadratic programming (SQP) method <xref ref-type="bibr" rid="bib1.bibx12" id="paren.77"/>. With the aim of avoiding entrapment in local minima, the optimization for the first power-demand level is carried out using various random perturbations of the power-boosting solution as initial guesses. After this first solution, the wind farm power demand is progressively lowered and the result of the previous optimization is used as a starting guess for the next curtailment level. The minimum curtailment levels is limited to 40 <inline-formula><mml:math id="M237" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> of the maximum wind farm power, which is sufficient to cover the APC scenarios described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS3"/>. Results are shown in Figs. <xref ref-type="fig" rid="F10"/> and <xref ref-type="fig" rid="F11"/> for the yaw and power set-points, respectively.</p>

      <fig id="F10"><label>Figure 10</label><caption><p id="d2e4567">Optimal yaw set-points <inline-formula><mml:math id="M238" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula> that maximize the minimum power reserve for the experimental set-up, plotted against the power demanded to the wind farm in percentage of the maximum power, and the inflow wind direction <inline-formula><mml:math id="M239" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>. <bold>(a)</bold> <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(b)</bold> <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f10.png"/>

        </fig>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e4621">Optimal power set-points <inline-formula><mml:math id="M242" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula> that maximize the minimum power reserve for the experimental set-up, plotted against the power demanded  to the wind farm in percentage of the maximum power, and the inflow wind direction <inline-formula><mml:math id="M243" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>. <bold>(a)</bold> <inline-formula><mml:math id="M244" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(b)</bold> <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(c)</bold> <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f11.png"/>

        </fig>

      <p id="d2e4687">In the figures, <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> represents a condition of precise alignment and therefore full wake impingement. Conversely, when <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>&lt;</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>|</mml:mo><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">11.3</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, partial wake impingement occurs. The yaw set-points present, in fact, a maximum absolute value in full waking, where steering is heavily used to increase  power reserves. As <inline-formula><mml:math id="M249" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> increases, the power set-points start converging toward an equal power dispatch, i.e., <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mi>N</mml:mi></mml:mrow></mml:math></inline-formula>, while the yaw misalignment is progressively reduced. In fact, as <inline-formula><mml:math id="M251" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> deviates away from <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, wake impingement is less prominent, and all turbines perceive similar local inflow conditions.</p>
      <p id="d2e4773">The treatment of the <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> condition is particularly relevant: under dynamic wind direction variations, when <inline-formula><mml:math id="M254" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> switches sign, the upstream wind turbines must change their yaw set-point by more than <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">40</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>. Delays in following this demand – which are expected due to the necessarily limited speed of the yaw actuation system – could result in relevant power losses, since the wake may be temporarily deflected toward downstream rotors, instead of away from them. To avoid this situation, no optimal wake steering is performed between <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>&lt;</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, but instead, the set-points are interpolated from the values at <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mo>±</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> to ensure a smooth transition when <inline-formula><mml:math id="M258" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula> switches sign. This solution should not result in a hindrance to the overall effectiveness of wake steering, since deflecting wakes is more effective in partial than in full impingement <xref ref-type="bibr" rid="bib1.bibx30" id="paren.78"/>.</p>
      <p id="d2e4854">During operation, <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are linearly interpolated from the LUTs in Figs. <xref ref-type="fig" rid="F10"/> and <xref ref-type="fig" rid="F11"/> based on the average power demand and wind direction computed over the previous 0.4 <inline-formula><mml:math id="M261" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>. Clipping to the last available value of the LUT is used to avoid extrapolating.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Estimation of the power margins</title>
      <p id="d2e4901">The power reserves for <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> are compared to those of OL in steady-state conditions, using the simulation environment described earlier. The comparison considers the difference between the power-produced <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the available power <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> for each turbine. Figure <xref ref-type="fig" rid="F12"/> shows the locally available power and the minimum power (last column) in the farm for two wind directions, i.e., <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to partial rotor overlaps of 75 <inline-formula><mml:math id="M267" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> and 50 <inline-formula><mml:math id="M268" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>, respectively.</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e4986">Locally available power  normalized with the rated power <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, obtained with a purely inductive wind farm control (labeled OL) and with the maximum-reserve strategy (labeled <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>) for <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>. <bold>(a)</bold> <inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(b)</bold> <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(c)</bold> <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <bold>(d)</bold> minimum value in the wind farm. On the <inline-formula><mml:math id="M276" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> axis, the wind farm power is normalized with its maximum value without wake steering. Red circles indicate the classical maximum power solution.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f12.png"/>

        </fig>

      <p id="d2e5100">Results show that the largest wind farm power gain is obtained for <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">18</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>), followed by <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> (<inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:mo>≈</mml:mo><mml:mo>+</mml:mo><mml:mn mathvariant="normal">14</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>), confirming that wake steering is particularly beneficial in partial wake impingement conditions <xref ref-type="bibr" rid="bib1.bibx30" id="paren.79"/>. As a result of the higher wind farm power, a significant gain in power reserve is achieved with <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> relative to OL, in particular for the front turbine <inline-formula><mml:math id="M282" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. This is favorable, since <inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is often required to compensate for the saturations that may affect waked rotors. For these downstream turbines, the benefit of <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> becomes evident at severe power demands, i.e., <inline-formula><mml:math id="M285" display="inline"><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:mi>N</mml:mi></mml:msubsup><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>OL</mml:mtext></mml:mrow></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">95</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:mrow></mml:math></inline-formula>, and it gradually decreases as <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mo>∑</mml:mo><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>OL</mml:mtext></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is reduced because of the loss of effectiveness of wake steering due to the lower operational <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of upstream rotors. This, in fact, implies a lower velocity deficit in the wake and a less prominent deflection. Overall, <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> yields a distribution of power reserves across the turbines that is more uniform than when using the OL method, consistently with the goal of the optimization.</p>
      <p id="d2e5298">The last two plots on the right in Fig. <xref ref-type="fig" rid="F12"/> show the worst power reserve in each cluster across the range of wind farm power demands for the two considered wind directions. For OL, <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the most critical rotor. Under curtailment, its power reserve increases linearly, albeit at a slower rate than that of the downstream rotors, which exhibit a non-linear increase (as shown in the corresponding plots, appearing  in the second and third column of the figure), likely due to wake effects. In contrast, for <inline-formula><mml:math id="M290" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, the worst power reserve shifts from <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> as the rotors adjust their yaw alignment, in turn resulting in consistently larger margins than in the OL case.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Static wind direction experiments</title>
      <p id="d2e5358">In this section, we present the wind tunnel results for two fixed wind direction values equal to <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to partial rotor overlaps of 75 <inline-formula><mml:math id="M295" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> and 50 <inline-formula><mml:math id="M296" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula>, respectively.</p>
<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>Power tracking accuracy</title>
<sec id="Ch1.S5.SS1.SSS1">
  <label>5.1.1</label><title>Wind farm tracking errors</title>
      <p id="d2e5413">Figures <xref ref-type="fig" rid="F13"/> and <xref ref-type="fig" rid="F14"/> present the root mean square (RMS) of the power tracking error recorded at the three power request levels <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M298" display="inline"><mml:mn mathvariant="normal">0.85</mml:mn></mml:math></inline-formula>, <inline-formula><mml:math id="M299" display="inline"><mml:mn mathvariant="normal">0.9</mml:mn></mml:math></inline-formula>, by each APC algorithm in the wind tunnel experiments. For each controller, six measurements are shown, indicating six repetitions, and whiskers indicate the mean RMS error and its uncertainty considering a 95 <inline-formula><mml:math id="M300" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence level. Figure <xref ref-type="fig" rid="F13"/> presents the RMS of tracking error obtained for <inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, while Fig. <xref ref-type="fig" rid="F14"/> refers to the case <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>.</p>

      <fig id="F13" specific-use="star"><label>Figure 13</label><caption><p id="d2e5489">RMS of wind farm power tracking errors measured for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M303" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Static experiment with fixed wind direction <inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 75 <inline-formula><mml:math id="M305" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. The results from six repetitions are reported with bars for each APC algorithm and power demand. Whiskers indicate 95 <inline-formula><mml:math id="M306" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f13.png"/>

          </fig>

      <fig id="F14" specific-use="star"><label>Figure 14</label><caption><p id="d2e5537">RMS of wind farm power tracking errors measured for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M307" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Static experiment with fixed wind direction <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 50 <inline-formula><mml:math id="M309" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. The results from six repetitions are reported with bars  for each APC algorithm and power demand. Whiskers indicate 95 <inline-formula><mml:math id="M310" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f14.png"/>

          </fig>

      <p id="d2e5584">The plots show that the tracking error grows with the power request determined by  parameter <inline-formula><mml:math id="M311" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Closed-loop methods reduce the tracking error consistently, with a generally larger effectiveness for <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, i.e., for the higher rotor overlap case. Interestingly, the variability of the results increases significantly as  parameter <inline-formula><mml:math id="M313" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula> grows in all cases except for <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>. The smaller variability observed for <inline-formula><mml:math id="M315" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> is likely due to larger power reserves, which reduce the likelihood of simultaneous saturation events that can dramatically affect  tracking accuracy.</p>
</sec>
<sec id="Ch1.S5.SS1.SSS2">
  <label>5.1.2</label><title>Wind turbine tracking errors</title>
      <p id="d2e5647">Figures <xref ref-type="fig" rid="F15"/> and <xref ref-type="fig" rid="F16"/> show the tracking  RMS error of each wind turbine for various power-demand levels, for <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, respectively.</p>

      <fig id="F15" specific-use="star"><label>Figure 15</label><caption><p id="d2e5684">RMS of local power tracking errors for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M318" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Static experiment with fixed wind direction <inline-formula><mml:math id="M319" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 75 <inline-formula><mml:math id="M320" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M321" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f15.png"/>

          </fig>

      <fig id="F16" specific-use="star"><label>Figure 16</label><caption><p id="d2e5732">RMS of local power tracking errors for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M322" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Static experiment with fixed wind direction <inline-formula><mml:math id="M323" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 50 <inline-formula><mml:math id="M324" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M325" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f16.png"/>

          </fig>

      <p id="d2e5779">In the OL and <inline-formula><mml:math id="M326" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> cases, waked rotors present the highest tracking error. In both cases, this is due to the generally low power reserves of waked rotors, which is exacerbated by the lack of a closed loop for OL and by the coordinated load distribution for <inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>. Compared to OL, CL increases the tracking errors of <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> because it calls this front turbine that is operating in freestream to compensate for the saturation of the waked turbines further downstream. <inline-formula><mml:math id="M329" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> presents a consistently balanced error distribution. This is likely due to the rather uniform distribution of power reserves, which implies that all turbines have a similar likelihood of not being able to follow a local demand.</p>
      <p id="d2e5830">It should be remarked that for all methods except for OL, a saturated turbine will experience significant tracking errors. This does not necessarily imply a low wind farm tracking accuracy but only as long as other turbines are able compensate. Therefore, it is important to ensure that local power reserves are not exhausted, which is precisely what the maximum-reserve formulation tries to accomplish.</p>

      <fig id="F17" specific-use="star"><label>Figure 17</label><caption><p id="d2e5835">Local average blade pitch angle <inline-formula><mml:math id="M330" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> from the static turntable experiment for wind direction <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to a 75 <inline-formula><mml:math id="M332" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M333" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals. Results are presented for three power-demand levels <inline-formula><mml:math id="M334" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f17.png"/>

          </fig>

      <fig id="F18" specific-use="star"><label>Figure 18</label><caption><p id="d2e5893">Local average blade pitch angle <inline-formula><mml:math id="M335" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> from the static turntable experiment with wind direction <inline-formula><mml:math id="M336" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to a 50 <inline-formula><mml:math id="M337" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M338" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals. Results are presented for three power-demand levels  <inline-formula><mml:math id="M339" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
            <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f18.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Power reserve distribution</title>
      <p id="d2e5958">To quantify the mean power reserve of each turbine, we analyze the average collective blade pitch angle <inline-formula><mml:math id="M340" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>. With the controller described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS3"/>, the closer <inline-formula><mml:math id="M341" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> is to the optimal pitch <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>OPT</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>, the less power reserve is available. Figures <xref ref-type="fig" rid="F17"/> and <xref ref-type="fig" rid="F18"/> show the local mean collective blade pitch angle for <inline-formula><mml:math id="M343" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, respectively.</p>
      <p id="d2e6027">Consistently with the tracking error analysis, <inline-formula><mml:math id="M345" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> appears to decrease as the power demand increases. OL and <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> present a power reserve distribution that is significantly unbalanced toward <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. In particular, <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> presents the highest values of <inline-formula><mml:math id="M349" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, but at the same time it also always yields low values of <inline-formula><mml:math id="M351" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for waked rotors. CL remarkably improves the balancing of power reserves compared to OL, especially for <inline-formula><mml:math id="M352" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and for low values of <inline-formula><mml:math id="M353" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. <inline-formula><mml:math id="M354" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> presents a rather uniform distribution of the power reserves, favoring especially the most waked rotor, i.e., <inline-formula><mml:math id="M355" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. This directly confirms the effectiveness of wake steering, which, by laterally moving upstream wakes, improves the power reserve of the most downstream rotor.</p>
</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>Loads and fatigue</title>
      <p id="d2e6159">In the following loads and fatigue analysis, we only display  data for the 75 <inline-formula><mml:math id="M356" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap scenario, since results for <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> (50 <inline-formula><mml:math id="M358" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap) are similar (and reported, for completeness,  in Appendix <xref ref-type="sec" rid="App1.Ch1.S3"/>).</p>
      <p id="d2e6194">The mean local load-balancing error of each rotor is shown in Fig. <xref ref-type="fig" rid="F19"/>.</p>

      <fig id="F19" specific-use="star"><label>Figure 19</label><caption><p id="d2e6201">Mean local load-balancing error for the tower-base fore-aft bending moment for the static turntable experiment with wind direction <inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to a 75 <inline-formula><mml:math id="M360" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. <inline-formula><mml:math id="M361" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> is normalized by <inline-formula><mml:math id="M362" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msubsup><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>. Positive values indicate loading above the wind farm average. Whiskers indicate the mean error over six repetitions and its uncertainty considering a 95 <inline-formula><mml:math id="M363" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence level. Results are presented for three power-demand levels <inline-formula><mml:math id="M364" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f19.png"/>

        </fig>

      <p id="d2e6277">Results show that for OL and CL,  loading is maximum on <inline-formula><mml:math id="M365" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and decreases when moving downstream. <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> effectively balances  loads in the wind farm, with remarkable effectiveness for <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. When <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>, the significant increase in saturation events is such that  loads cannot be balanced anymore, since  power tracking accuracy is prioritized. This shows the limit of the load-balancing strategy that, in some cases,  is unable to achieve the goals for which it has been formulated.</p>

      <fig id="F20" specific-use="star"><label>Figure 20</label><caption><p id="d2e6330">Normalized tower-base fore-aft DELs from the static turntable experiment for a wind direction <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 75 <inline-formula><mml:math id="M370" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate the mean DEL over six repetitions and its uncertainty considering a 95 <inline-formula><mml:math id="M371" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence level. Results are presented for three power-demand levels  <inline-formula><mml:math id="M372" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f20.png"/>

        </fig>

      <p id="d2e6376">Next, damage equivalent loads (DELs) at tower base are presented in Fig. <xref ref-type="fig" rid="F20"/>.</p>
      <p id="d2e6381">Results show that waked turbines generally suffer more damage than those operating in freestream conditions, with <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> being consistently the most damaged. This is likely due to the highly turbulent local inflow and the partial wake impingement that introduce numerous load cycles on these machines. OL generally presents a rather low level of fatigue, which is due to the limited pitch actuation deriving from the lack of a closed-loop correction. At the same time, <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> yields the highest damage for <inline-formula><mml:math id="M375" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. In contrast to OL, this is caused by the more frequent blade pitch actuation that follows the occurrence of saturation events happening downstream. <inline-formula><mml:math id="M376" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> reduces the fatigue of <inline-formula><mml:math id="M377" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> in almost all instances, because  wake steering applied to <inline-formula><mml:math id="M378" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> mitigates  partial wake overlap effects. <inline-formula><mml:math id="M379" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> also reduces the fatigue of <inline-formula><mml:math id="M380" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, likely because fewer saturation events occur at downstream rotors, which <inline-formula><mml:math id="M381" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> would otherwise have to compensate for through additional blade pitch activity. The analysis of blade pitch actuator duty cycle is reported in Appendix <xref ref-type="sec" rid="App1.Ch1.S2"/>.</p>
      <p id="d2e6489">Overall, the results shown here are consistent with the numerical findings by <xref ref-type="bibr" rid="bib1.bibx51" id="text.80"/>, but they differ from those reported by <xref ref-type="bibr" rid="bib1.bibx53" id="text.81"/>, who observed significant fatigue reductions for downstream rotors when applying a load-balancing APC strategy. One possible explanation for this discrepancy is the substantially larger wind farm considered by <xref ref-type="bibr" rid="bib1.bibx53" id="text.82"/>. A larger array facilitates spatial averaging of power and load fluctuations across multiple turbines, which may enhance the effectiveness of <inline-formula><mml:math id="M382" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>. In contrast, the present study considers a limited number of turbines, where farm-level averaging effects are inherently reduced. While this difference may influence the achievable fatigue mitigation, particularly for downstream machines that are generally more prone to saturations, the analysis of small clusters appears to be less forgiving and hence can more clearly highlight the effects of difficult situations on tracking performance.</p>
</sec>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Dynamic wind direction experiments</title>
      <p id="d2e6522">The time series of the experiments conducted  while moving the turntable are shown in Fig. <xref ref-type="fig" rid="F21"/> for the power requests <inline-formula><mml:math id="M383" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M384" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.85</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M385" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. In the plots, the expected available wind farm power <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is displayed in gray in the background. <inline-formula><mml:math id="M387" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>greedy</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> has been obtained with the turbines operating in greedy mode and fully aligned with the inflow, as discussed in Sect. <xref ref-type="sec" rid="Ch1.S3.SS2"/>.</p>

      <fig id="F21" specific-use="star"><label>Figure 21</label><caption><p id="d2e6590">Time series of a power tracking experiment with dynamic wind direction variation, for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M388" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. The expected available wind farm power in greedy mode – based on the instantaneous wind direction – is shown in the background in gray.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f21.png"/>

      </fig>

      <p id="d2e6606">From a first qualitative impression, all methods seem to follow the reference signal accurately. It is clear that OL and CL share the same power share set-points <inline-formula><mml:math id="M389" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, since <inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M391" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M392" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are similar. In CL, however, some saturations can be seen, for instance when <inline-formula><mml:math id="M393" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M394" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M395" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. <inline-formula><mml:math id="M396" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> presents a very different distribution of power shares, and it appears that the individual power outputs <inline-formula><mml:math id="M397" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> of the three turbines are often similar, possibly to balance the loads in conditions of low wake impingement. The power share distribution of <inline-formula><mml:math id="M398" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> resembles that of OL, although <inline-formula><mml:math id="M399" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is generally lower and <inline-formula><mml:math id="M400" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> higher due to wake steering.</p>
      <p id="d2e6775">Overall, the plots clearly show that, as the power demand is increased, the power request <inline-formula><mml:math id="M401" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> approaches the greedy power, and more saturation events arise, as indicated by the flat lines of <inline-formula><mml:math id="M402" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> in CL, <inline-formula><mml:math id="M403" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M404" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e6829">In the zoomed windows of the plot, an example is highlighted where OL presents a significant deviation from <inline-formula><mml:math id="M405" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> at the wind farm level, because of a saturation of <inline-formula><mml:math id="M406" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> lasting approximately 10 <inline-formula><mml:math id="M407" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>.  This same problem also occurs for CL. However, the wind farm tracking error is clearly reduced because <inline-formula><mml:math id="M408" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M409" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are able to compensate. Quite differently, <inline-formula><mml:math id="M410" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M411" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> show excellent tracking performance in the same scenario. This similar performance is, however, achieved in different ways: in <inline-formula><mml:math id="M412" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, both <inline-formula><mml:math id="M413" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M414" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are saturated and therefore operate in greedy mode, while <inline-formula><mml:math id="M415" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is fully responsible for tracking <inline-formula><mml:math id="M416" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. In <inline-formula><mml:math id="M417" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, no saturation events are visible, which indicates generally larger power reserves for all turbines.</p>
      <p id="d2e6978">To present a more complete picture of the performance of the various algorithms, Appendix <xref ref-type="sec" rid="App1.Ch1.S4"/> reports additional zoomed segments of the plots shown in Fig. <xref ref-type="fig" rid="F21"/>.</p>
<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>Power tracking accuracy</title>
      <p id="d2e6992">The  RMS of the tracking error is shown in Fig. <xref ref-type="fig" rid="F22"/>.</p>

      <fig id="F22"><label>Figure 22</label><caption><p id="d2e6999">RMS of power tracking errors for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M418" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Experiment with dynamic wind direction variations.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f22.png"/>

        </fig>

      <p id="d2e7015">Consistently with the static wind direction results, OL shows the worst performance of all APC methods. At moderate power demands, for <inline-formula><mml:math id="M419" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0.85</mml:mn></mml:mrow></mml:math></inline-formula>, CL and <inline-formula><mml:math id="M420" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> exhibit the best performance. For <inline-formula><mml:math id="M421" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M422" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> provides the lowest RMS <inline-formula><mml:math id="M423" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. The relative improvements achieved by <inline-formula><mml:math id="M424" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> are less pronounced in the dynamic tests than in the static ones, as the effects of wake steering are less beneficial at large turntable misalignments where wake interactions are much reduced.</p>
      <p id="d2e7091">Figure <xref ref-type="fig" rid="F23"/> shows how the errors are distributed across the three turbines. It is important to mention that saturated turbines will display extreme error values <inline-formula><mml:math id="M425" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, although this does not necessarily imply a large wind farm tracking error <inline-formula><mml:math id="M426" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, since (except than for OL) non-saturated rotors can compensate for their error.</p>

      <fig id="F23" specific-use="star"><label>Figure 23</label><caption><p id="d2e7125">Local RMS of power tracking errors for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M427" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Experiment with dynamic wind direction variations.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f23.png"/>

        </fig>

      <p id="d2e7141">The figure shows relatively large tracking errors for OL, because of a lack of feedback capable of handling  saturation conditions. Significant tracking errors can be observed for waked rotors in the case <inline-formula><mml:math id="M428" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, indicating persistent saturations, as seen in the zoomed regions of Fig. <xref ref-type="fig" rid="F21"/>.</p>

      <fig id="F24" specific-use="star"><label>Figure 24</label><caption><p id="d2e7160">Mean collective blade pitch angle <inline-formula><mml:math id="M429" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M430" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. Experiment with dynamic wind direction variations.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f24.png"/>

        </fig>

      <p id="d2e7186">Figure <xref ref-type="fig" rid="F24"/> supports this analysis by presenting the mean collective blade pitch angles of the turbines during the experiment. As mentioned in the static direction study, <inline-formula><mml:math id="M431" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can be seen as an indirect measure of the power reserve for the <inline-formula><mml:math id="M432" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>th turbine.</p>
      <p id="d2e7213">Results show that <inline-formula><mml:math id="M433" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> presents a significantly unbalanced power reserve distribution, shifted toward the upstream rotor, possibly as a result of the CLD loop. This is in agreement with the other quantities presented and discussed earlier in this section. As expected, <inline-formula><mml:math id="M434" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> presents a rather large power reserve for all rotors, especially for <inline-formula><mml:math id="M435" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, thanks to  wake steering, but also for <inline-formula><mml:math id="M436" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, which is remarkable since this upstream turbine is often misaligned.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Loads and fatigue</title>
      <p id="d2e7270">Figure <xref ref-type="fig" rid="F25"/> presents the mean load-balancing error for the dynamic turntable experiment.</p>

      <fig id="F25" specific-use="star"><label>Figure 25</label><caption><p id="d2e7277">Mean local load-balancing error for tower-base fore-aft bending for the four APC algorithms and three power-demand levels  <inline-formula><mml:math id="M437" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. The error is normalized by <inline-formula><mml:math id="M438" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msubsup><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>. Positive values indicate loading above the wind farm average. Experiment with dynamic wind direction variations.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f25.png"/>

        </fig>

      <fig id="F26" specific-use="star"><label>Figure 26</label><caption><p id="d2e7316">Tower-base fore-aft DELs for the four APC algorithms and three power-demand levels <inline-formula><mml:math id="M439" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. DELs are normalized by <inline-formula><mml:math id="M440" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msubsup><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>. Experiment with dynamic wind direction variations.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f26.png"/>

        </fig>

      <p id="d2e7354">For OL and CL, the front turbine <inline-formula><mml:math id="M441" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> exhibits the highest loading, which progressively diminishes for rotors located further downstream. As seen already in the static cases, <inline-formula><mml:math id="M442" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> effectively balances the loads. Its effectiveness is excellent at <inline-formula><mml:math id="M443" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula> but – importantly – gradually deteriorates  as <inline-formula><mml:math id="M444" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula> increases since more saturation events arise that modify the power share distribution to prioritize  tracking accuracy. <inline-formula><mml:math id="M445" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> displays the second-best performance for the lower <inline-formula><mml:math id="M446" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula> values but ultimately outperforms <inline-formula><mml:math id="M447" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M448" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. This shows the importance of controlling saturations and the limits of a purely load-balancing strategy.</p>
      <p id="d2e7443">Figure <xref ref-type="fig" rid="F26"/> reports the normalized tower-base fore-aft DELs.</p>
      <p id="d2e7449">These results generally indicate a higher fatigue for <inline-formula><mml:math id="M449" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, followed by <inline-formula><mml:math id="M450" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M451" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, which is the least-affected turbine. <inline-formula><mml:math id="M452" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is also  the rotor that generally has the smallest power margin in the farm, as shown in Fig. <xref ref-type="fig" rid="F24"/>. This result is consistent with the findings of <xref ref-type="bibr" rid="bib1.bibx51" id="text.83"/>, which showed  that fatigue is driven by the low-frequency load cycles that occur because of saturation events. OL generally exhibits the lowest fatigue, due to the smoother control of the rotors. The proposed <inline-formula><mml:math id="M453" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> method reduces <inline-formula><mml:math id="M454" display="inline"><mml:mover accent="true"><mml:mrow><mml:mtext>DEL</mml:mtext><mml:mo>(</mml:mo><mml:mi>L</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> for <inline-formula><mml:math id="M455" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M456" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> compared to other methods featuring a closed loop, while it increases it for <inline-formula><mml:math id="M457" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, possibly due to a lower power margin deriving from the <inline-formula><mml:math id="M458" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">α</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M459" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">γ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> LUTs.</p>
</sec>
</sec>
<sec id="Ch1.S7" sec-type="conclusions">
  <label>7</label><title>Conclusions</title>
      <p id="d2e7596">A maximum-reserve approach for robust wind farm power tracking that combines wake steering and induction control has been tested experimentally in a wind tunnel. The objective of the algorithm is to enhance power reserves across the wind farm to mitigate the effects of wind lulls, thereby generating a more accurate tracking of the desired power signal.</p>
      <p id="d2e7599">To support the experimental work, a steady-state model was developed, based on a modified version of <sc>FLORIS</sc>. This model accounts for the aerodynamic interactions resulting from simultaneous yaw misalignment and curtailed operation, as well as specific wind tunnel inflow characteristics and chord-based Reynolds number effects caused by the small scale of the turbines.</p>
      <p id="d2e7605">The experiments were conducted in a large boundary-layer wind tunnel using a small cluster of three scaled rotors with minimal blockage. The first set of experiments considered two wind farm layouts to replicate varying levels of wake impingement. A second unprecedented set of APC experiments involved dynamically varying the wind direction using a large turntable.</p>
      <p id="d2e7609">The maximum-reserve method was compared with three alternative APC algorithms sourced from the recent literature. All controllers were implemented on a dedicated  cabinet, enabling real-time communication to and from the controllers running on the individual turbines. The performance of the various controllers was evaluated in terms of power tracking accuracy, power reserves, structural loads, and fatigue.</p>
      <p id="d2e7613">The main findings of this study are as follows: <list list-type="bullet"><list-item>
      <p id="d2e7618">A steady-state analysis confirms that wake impingement reduces the power reserves of downstream rotors. The combined use of wake steering and induction control effectively enhances local power reserves, thereby improving overall power tracking accuracy.</p></list-item><list-item>
      <p id="d2e7622">The treatment of saturation conditions significantly affects power tracking performance. The open-loop algorithm showed the poorest performance in most cases. However, introducing a simple feedback loop and a compensation strategy for saturated rotors led to substantial improvements.</p></list-item><list-item>
      <p id="d2e7626">Results from the dynamic wind direction experiments corroborated the findings from the fixed-direction runs, highlighting the strong potential of wake control in APC applications.</p></list-item><list-item>
      <p id="d2e7630">Dispatching power set-points to balance loads proved effective in reducing fatigue compared to both open-loop and closed-loop controllers with fixed set-points. However, load-balancing set-points may lead to localized saturation, particularly at high power-demand levels, which in turn negatively affects loading.</p></list-item></list></p>
      <p id="d2e7633">Future work may extend this study by investigating the role of curtailment strategies on power tracking performance. Another area of investigation that should be pursued is the direct inclusion of loads in the maximum-reserve formulation because, as seen here, the correct management of reserves can have major implications on loading.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Floris wake parameters</title>
      <p id="d2e7648">Tables <xref ref-type="table" rid="TA1"/>–<xref ref-type="table" rid="TA3"/> present the values of the parameters of the wake deflection, turbulence, and wake deficit models, respectively.</p>

<table-wrap id="TA1"><label>Table A1</label><caption><p id="d2e7658">Values of the parameters of the deflection model  <xref ref-type="bibr" rid="bib1.bibx3" id="paren.84"/>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="8">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:colspec colnum="8" colname="col8" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><inline-formula><mml:math id="M460" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M461" display="inline"><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mi>d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M462" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M463" display="inline"><mml:mi>B</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M464" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M465" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M466" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col8"><inline-formula><mml:math id="M467" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mtext>gain</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">0</oasis:entry>
         <oasis:entry colname="col2">0</oasis:entry>
         <oasis:entry colname="col3">0.58</oasis:entry>
         <oasis:entry colname="col4">0.077</oasis:entry>
         <oasis:entry colname="col5">0.38</oasis:entry>
         <oasis:entry colname="col6">0.004</oasis:entry>
         <oasis:entry colname="col7">1</oasis:entry>
         <oasis:entry colname="col8">0.2</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="TA2"><label>Table A2</label><caption><p id="d2e7815">Values of the parameters of the turbulence model <xref ref-type="bibr" rid="bib1.bibx20" id="paren.85"/>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Initial</oasis:entry>
         <oasis:entry colname="col2">Constant</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M468" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">Downstream</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">0.1057</oasis:entry>
         <oasis:entry colname="col2">0.3401</oasis:entry>
         <oasis:entry colname="col3">0.9558</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M469" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>0.3562</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="TA3"><label>Table A3</label><caption><p id="d2e7890">Values of the parameters of the Gauss deficit model  <xref ref-type="bibr" rid="bib1.bibx3" id="paren.86"/>.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"><inline-formula><mml:math id="M470" display="inline"><mml:mi>A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M471" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M472" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M473" display="inline"><mml:mrow><mml:msub><mml:mi>k</mml:mi><mml:mi>b</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">0.8647</oasis:entry>
         <oasis:entry colname="col2">0.1226</oasis:entry>
         <oasis:entry colname="col3">0.4783</oasis:entry>
         <oasis:entry colname="col4">0.0044</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</app>

<app id="App1.Ch1.S2">
  <label>Appendix B</label><title>Blade pitch actuator duty cycle</title>
      <p id="d2e7982">The actuator duty cycle (ADC) of blade pitch is shown for the static turntable experiments in Figs. <xref ref-type="fig" rid="FB1"/> and <xref ref-type="fig" rid="FB2"/> for <inline-formula><mml:math id="M474" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M475" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, respectively. ADC for the blade pitch angle <inline-formula><mml:math id="M476" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> is defined as <xref ref-type="bibr" rid="bib1.bibx8" id="paren.87"/>

              <disp-formula id="App1.Ch1.S2.E14" content-type="numbered"><label>B1</label><mml:math id="M477" display="block"><mml:mstyle class="stylechange" displaystyle="true"/><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mtext>ADC</mml:mtext><mml:mi mathvariant="italic">θ</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi>T</mml:mi></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>max⁡</mml:mo></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        where <inline-formula><mml:math id="M478" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">θ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula> is the pitch rate.</p>
      <p id="d2e8096">Results appear to be strongly dependent on the power-demand level <inline-formula><mml:math id="M479" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>. When <inline-formula><mml:math id="M480" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>, waked turbines show a higher pitch activity than the upstream turbine <inline-formula><mml:math id="M481" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. This condition persists for OL and <inline-formula><mml:math id="M482" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> in most  of the other <inline-formula><mml:math id="M483" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula> scenarios and for both wind directions <inline-formula><mml:math id="M484" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula>. For CL and <inline-formula><mml:math id="M485" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, on the contrary, for <inline-formula><mml:math id="M486" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>, it is the front turbine <inline-formula><mml:math id="M487" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> that displays the highest pitch activity, due to the need to compensate for saturation events occurring at the downstream waked turbines. It should also be noted that when a turbine saturates, its pitch lies at <inline-formula><mml:math id="M488" display="inline"><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mtext>OPT</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> until the saturation criteria are not met anymore, and this automatically reduces ADC.</p><fig id="FB1"><label>Figure B1</label><caption><p id="d2e8208">Blade pitch ADC for the static turntable experiment with wind direction <inline-formula><mml:math id="M489" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2.8</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 75 <inline-formula><mml:math id="M490" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M491" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals. Results are presented for three power-demand requests <inline-formula><mml:math id="M492" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f27.png"/>

      </fig>

      <fig id="FB2"><label>Figure B2</label><caption><p id="d2e8259">Blade pitch ADC for the static turntable experiment with wind direction <inline-formula><mml:math id="M493" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 50 <inline-formula><mml:math id="M494" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. Whiskers indicate 95 <inline-formula><mml:math id="M495" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> confidence intervals. Results are presented for three power-demand requests <inline-formula><mml:math id="M496" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f28.png"/>

      </fig>

</app>

<app id="App1.Ch1.S3">
  <label>Appendix C</label><title>Load-balancing error</title>
      <p id="d2e8315">For completeness, Fig. <xref ref-type="fig" rid="FC1"/> reports the mean local load-balancing error for the case <inline-formula><mml:math id="M497" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> (50 <inline-formula><mml:math id="M498" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap). The case <inline-formula><mml:math id="M499" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> (75 <inline-formula><mml:math id="M500" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap) was shown earlier in Fig. <xref ref-type="fig" rid="F19"/>.</p>

      <fig id="FC1"><label>Figure C1</label><caption><p id="d2e8369">Mean local load-balancing error for the tower-base fore-aft bending moment for the static turntable experiment with wind direction <inline-formula><mml:math id="M501" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula>, corresponding to 75 <inline-formula><mml:math id="M502" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">%</mml:mi></mml:mrow></mml:math></inline-formula> rotor overlap. <inline-formula><mml:math id="M503" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula> is normalized with <inline-formula><mml:math id="M504" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msubsup><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:math></inline-formula>. Positive values indicate loading above the wind farm average. Results are presented for three power-demand requests <inline-formula><mml:math id="M505" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f29.png"/>

      </fig>


</app>

<app id="App1.Ch1.S4">
  <label>Appendix D</label><title>Zoomed segments of Fig. 21 (power tracking time series under dynamic wind direction conditions)</title>
      <p id="d2e8447">This Appendix reports zoomed segments of the power tracking time series shown in Fig. <xref ref-type="fig" rid="F21"/>, which were obtained under dynamic wind direction conditions.</p>

      <fig id="FD1"><label>Figure D1</label><caption><p id="d2e8454">Enlarged segment of time series of a power tracking experiment with dynamic wind direction variation for a power-demand level <inline-formula><mml:math id="M506" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>. The wind farm control strategies are OL <bold>(a)</bold>, CL <bold>(b)</bold>, <inline-formula><mml:math id="M507" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(c)</bold>, and <inline-formula><mml:math id="M508" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(d)</bold>.  The expected available wind farm power in greedy mode – based on the instantaneous wind direction – is shown in the background in gray.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f30.png"/>

      </fig>

      <fig id="FD2"><label>Figure D2</label><caption><p id="d2e8516">Enlarged segment of time series of a power tracking experiment with dynamic wind direction variation, for a power-demand level <inline-formula><mml:math id="M509" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.85</mml:mn></mml:mrow></mml:math></inline-formula>. The wind farm control strategies are OL <bold>(a)</bold>, CL <bold>(b)</bold>, <inline-formula><mml:math id="M510" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(c)</bold>, and <inline-formula><mml:math id="M511" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(d)</bold>. The expected available wind farm power in greedy mode – based on the instantaneous wind direction – is shown in the background in gray.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f31.png"/>

      </fig>

      <fig id="FD3"><label>Figure D3</label><caption><p id="d2e8579">Enlarged segment of time series of a power tracking experiment with dynamic wind direction variation, for a power-demand level <inline-formula><mml:math id="M512" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. The wind farm control strategies are OL <bold>(a)</bold>, CL <bold>(b)</bold>, <inline-formula><mml:math id="M513" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(c)</bold>, and <inline-formula><mml:math id="M514" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> <bold>(d)</bold>. The expected available wind farm power in greedy mode – based on the instantaneous wind direction – is shown in the background in gray.</p></caption>
        
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1607/2026/wes-11-1607-2026-f32.png"/>

      </fig>

      <p id="d2e8639">Figure <xref ref-type="fig" rid="FD1"/> presents the first 20 <inline-formula><mml:math id="M515" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> of the experiment for a low average power-demand level <inline-formula><mml:math id="M516" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.8</mml:mn></mml:mrow></mml:math></inline-formula>. The plots highlight the similar power share distributions of OL and CL. OL presents a slight deviation from <inline-formula><mml:math id="M517" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M518" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M519" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, which is improved in CL thanks to the closed-loop correction that it implements. Figure <xref ref-type="fig" rid="FD1"/>c shows that the power share distribution is equal among the rotors for <inline-formula><mml:math id="M520" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>. Although a saturation of <inline-formula><mml:math id="M521" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> occurs at <inline-formula><mml:math id="M522" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M523" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, it does not affect the power tracking accuracy, because <inline-formula><mml:math id="M524" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M525" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> adjust their power demand to compensate. Finally, Fig. <xref ref-type="fig" rid="FD1"/>d shows that the power share distribution generated by <inline-formula><mml:math id="M526" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> is significantly different from the other cases, with <inline-formula><mml:math id="M527" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> producing the most power as a result of the wake steering performed by the upstream turbines. The power outputs of the turbines also appear to be much smoother than in the other cases.</p>
      <p id="d2e8790">Next, Fig. <xref ref-type="fig" rid="FD2"/> presents 8 <inline-formula><mml:math id="M528" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> from  experiments conducted with a larger average power-demand level equal to <inline-formula><mml:math id="M529" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.85</mml:mn></mml:mrow></mml:math></inline-formula>. Figure <xref ref-type="fig" rid="FD2"/>a clearly shows the difficulty of the OL controller in tracking <inline-formula><mml:math id="M530" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M531" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">60</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M532" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>. In particular, <inline-formula><mml:math id="M533" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> exhibits significant deviations from <inline-formula><mml:math id="M534" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. The figure shows also that CL and <inline-formula><mml:math id="M535" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula> are able to improve the power tracking accuracy; however, even in these cases, <inline-formula><mml:math id="M536" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> struggles to follow its demand, leading to saturations – for instance at <inline-formula><mml:math id="M537" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">62</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M538" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>. In <inline-formula><mml:math id="M539" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula>, the load-balancing loop tends to equalize the power shares, but this results in a reduced power reserve for <inline-formula><mml:math id="M540" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, which in fact saturates at <inline-formula><mml:math id="M541" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">62</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M542" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8963">Finally, Fig. <xref ref-type="fig" rid="FD3"/> focuses on 20 <inline-formula><mml:math id="M543" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> toward the end of the experiments for a high average power-demand level <inline-formula><mml:math id="M544" display="inline"><mml:mrow><mml:mi>b</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn></mml:mrow></mml:math></inline-formula>. The plots clearly show that both OL and CL exhibit critical tracking errors at <inline-formula><mml:math id="M545" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">164</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M546" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M547" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> being responsible for the error in both cases. In CL, this leads to its saturation. It is also clearly visible that, as <inline-formula><mml:math id="M548" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is increased due to the saturation of <inline-formula><mml:math id="M549" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M550" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> saturates as well. Figure <xref ref-type="fig" rid="FD3"/>c shows that the load-balancing algorithm attempts to increase the power share of <inline-formula><mml:math id="M551" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M552" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> at <inline-formula><mml:math id="M553" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">155</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M554" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>. However, this is incompatible with their local power reserves and results in the saturation of both rotors for <inline-formula><mml:math id="M555" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">160</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M556" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>. Nevertheless, the local power tracking errors of <inline-formula><mml:math id="M557" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M558" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are redistributed to <inline-formula><mml:math id="M559" display="inline"><mml:mrow><mml:msub><mml:mtext>WT</mml:mtext><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, which is able to ensure good tracking of <inline-formula><mml:math id="M560" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>. For <inline-formula><mml:math id="M561" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula>, the turbine power outputs are smoother and free from saturations.</p>
</app>

<app id="App1.Ch1.S5">
  <label>Appendix E</label><title>Nomenclature</title>

        <table-wrap position="anchor"><oasis:table><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="justify" colwidth="75mm"/>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M562" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Ambient conditions</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M563" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Shift of normalized power-demand signal (i.e., average power-demand level)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M564" 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></oasis:entry>
         <oasis:entry colname="col2">Power coefficient</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M565" 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="col2">Thrust coefficient</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M566" display="inline"><mml:mi>c</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Amplitude of normalized power-demand signal</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M567" display="inline"><mml:mi>D</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rotor diameter</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M568" display="inline"><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mi>I</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Control gain (integral)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M569" display="inline"><mml:mrow><mml:msup><mml:mi>K</mml:mi><mml:mi>P</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Control gain (proportional)</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M570" display="inline"><mml:mi>L</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Tower-base fore-aft bending moment</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M571" display="inline"><mml:mi>m</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Power reserve</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M572" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Total number of wind turbines</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M573" display="inline"><mml:mrow><mml:msubsup><mml:mi>n</mml:mi><mml:mi>k</mml:mi><mml:mtext>AGC</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Normalized power-demand signal</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M574" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind turbine power</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M575" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi>D</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind turbine power demand</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M576" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rated power</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M577" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Reference power signal</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M578" display="inline"><mml:mrow><mml:msubsup><mml:mi>P</mml:mi><mml:mtext>ref</mml:mtext><mml:mtext>PI</mml:mtext></mml:msubsup></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Closed-loop APC control output</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M579" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rotor radius</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M580" display="inline"><mml:mi>S</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Number of saturated rotors</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M581" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Time</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M582" display="inline"><mml:mi>U</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rotor-equivalent wind speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M583" display="inline"><mml:mrow><mml:msub><mml:mi>U</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Freestream wind speed measured at hub height</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M584" display="inline"><mml:mi mathvariant="bold-italic">u</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Control inputs</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M585" display="inline"><mml:mi mathvariant="italic">α</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Power share set-point</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M586" display="inline"><mml:mi mathvariant="italic">γ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Misalignment angle</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M587" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Load-balancing error</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M588" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Power tracking error</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M589" display="inline"><mml:mi mathvariant="italic">ϵ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Auxiliary power scaling factor</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M590" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">η</mml:mi><mml:mi>P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Power loss factor</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M591" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Blade pitch angle</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M592" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Tip speed ratio</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M593" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Air density</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M594" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Time instant index</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M595" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Wind direction</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M596" display="inline"><mml:mi mathvariant="normal">Ω</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rotor angular speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M597" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>R</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Rated rotor angular speed</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">AGC</oasis:entry>
         <oasis:entry colname="col2">Automatic generation control</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">APC</oasis:entry>
         <oasis:entry colname="col2">Active power control</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CL</oasis:entry>
         <oasis:entry colname="col2">Closed loop</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CLD</oasis:entry>
         <oasis:entry colname="col2">Coordinated load distribution</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M598" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>LB</mml:mtext></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Closed loop with load balancing</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"><inline-formula><mml:math id="M599" display="inline"><mml:mrow><mml:mtext>CL</mml:mtext><mml:mo>+</mml:mo><mml:mtext>MR</mml:mtext></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">Closed loop with maximum reserve</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">DEL</oasis:entry>
         <oasis:entry colname="col2">Damage equivalent load</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">LUT</oasis:entry>
         <oasis:entry colname="col2">Lookup table</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">FLORIS</oasis:entry>
         <oasis:entry colname="col2">FLOw Redirection and Induction in Steady State</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">OL</oasis:entry>
         <oasis:entry colname="col2">Open loop</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">PI</oasis:entry>
         <oasis:entry colname="col2">Proportional – integral</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">RMS</oasis:entry>
         <oasis:entry colname="col2">Root mean square</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">TI</oasis:entry>
         <oasis:entry colname="col2">Turbulence intensity</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">TSO</oasis:entry>
         <oasis:entry colname="col2">Transmission system operator</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">WF</oasis:entry>
         <oasis:entry colname="col2">Wind farm</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">WT</oasis:entry>
         <oasis:entry colname="col2">Wind turbine</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

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

      <p id="d2e9943">The <sc>Simulink</sc> models of the APC controllers, and the C++ codes generated from them, are accessible in the European open repository Zenodo at <ext-link xlink:href="https://doi.org/10.5281/zenodo.17551525" ext-link-type="DOI">10.5281/zenodo.17551525</ext-link> <xref ref-type="bibr" rid="bib1.bibx50" id="paren.88"/>. A video of one of the experiments is available at <uri>https://youtu.be/CIfaI2VKz2g</uri> (last access: 17 April 2026).</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e9961">CLB developed the formulation of the maximum-reserve APC method and supervised the overall research. ST implemented the model, performed the experiments, and conducted the steady-state analyses with FLORIS. FC coordinated the experimental campaign, and supported the development and implementation of the controllers. DB and FVM contributed to the wind tunnel campaign. All authors contributed to the interpretation of the results. CLB and ST wrote the paper, with contributions from FC. All authors provided important input to this research work through discussions and feedback, and improved the article.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e9967">At least one of the (co-)authors is a member of the editorial board of <italic>Wind Energy Science</italic>. The peer-review process was guided by an independent editor, and the authors also have no other competing interests to declare.</p>
  </notes><notes notes-type="disclaimer"><title>Disclaimer</title>

      <p id="d2e9976">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="d2e9983">The authors express their gratitude to the wind tunnel team at Politecnico di Milano for providing assistance in the experiments.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e9988">This work has been supported in part by the PowerTracker project, which receives funding from the German Federal Ministry for Economic Affairs and Climate Action (FKZ: 03EE2036A). This work has also been partially supported by the SUDOCO project, which receives funding from the European Union's Horizon Europe Programme under grant agreement no. 101122256.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Aho et al.(2012)</label><mixed-citation>Aho, J., Buckspan, A., Laks, J., Fleming, P., Jeong, Y., Dunne, F., Churchfield, M., Pao, L., and Johnson, K.: A tutorial of wind turbine control for supporting grid frequency through active power control, in: 2012 American Control Conference (ACC), <ext-link xlink:href="https://doi.org/10.1109/ACC.2012.6315180" ext-link-type="DOI">10.1109/ACC.2012.6315180</ext-link>, 3120–3131, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Bachmann electronic GmbH(2017)</label><mixed-citation> Bachmann electronic GmbH: System Overview, Bachmann electronic GmbH, Feldkirch, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bastankhah and Porté-Agel(2014)</label><mixed-citation>Bastankhah, M. and Porté-Agel, F.: A new analytical model for wind-turbine wakes, Renew. Energ., 70, 116–123, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2014.01.002" ext-link-type="DOI">10.1016/j.renene.2014.01.002</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Boersma et al.(2018)</label><mixed-citation>Boersma, S., Rostampour, V., Doekemeijer, B., van Geest, W., and van Wingerden, J.-W.: A constrained model predictive wind farm controller providing active power control: an LES study, J. Phys. Conf. Ser., 1037, 032023, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/3/032023" ext-link-type="DOI">10.1088/1742-6596/1037/3/032023</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bortolotti et al.(2019)</label><mixed-citation>Bortolotti, P., Tarres, H. C., Dykes, K. L., Merz, K., Sethuraman, L., Verelst, D., and Zahle, F.: IEA Wind TCP Task 37: Systems Engineering in Wind Energy – WP2.1 Reference Wind Turbines, Tech. rep., National Renewable Energy Lab. (NREL), <ext-link xlink:href="https://doi.org/10.2172/1529216" ext-link-type="DOI">10.2172/1529216</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Bossanyi and Ruisi(2021)</label><mixed-citation>Bossanyi, E. and Ruisi, R.: Axial induction controller field test at Sedini wind farm, Wind Energ. Sci., 6, 389–408, <ext-link xlink:href="https://doi.org/10.5194/wes-6-389-2021" ext-link-type="DOI">10.5194/wes-6-389-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Bottasso and Campagnolo(2022)</label><mixed-citation>Bottasso, C. L. and Campagnolo, F.: Wind tunnel testing of wind turbines and farms, in: Handbook of Wind Energy Aerodynamics, edited by: Stoevesandt, B., Schepers, G., Fuglsang, P., and Sun, Y., Springer International Publishing, Cham, <ext-link xlink:href="https://doi.org/10.1007/978-3-030-31307-4_54" ext-link-type="DOI">10.1007/978-3-030-31307-4_54</ext-link>, 1077–1126, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Bottasso et al.(2013)</label><mixed-citation>Bottasso, C., Campagnolo, F., Croce, A., and Tibaldi, C.: Optimization-based study of bend–twist coupled rotor blades for passive and integrated passive/active load alleviation, Wind Energy, 16, 1149–1166, <ext-link xlink:href="https://doi.org/10.1002/we.1543" ext-link-type="DOI">10.1002/we.1543</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Bottasso et al.(2014)</label><mixed-citation>Bottasso, C. L., Campagnolo, F., and Petrović, V.: Wind tunnel testing of scaled wind turbine models: beyond aerodynamics, J. Wind Eng. Ind. Aerod., 127,  11–28, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2014.01.009" ext-link-type="DOI">10.1016/j.jweia.2014.01.009</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Boyle and Littler(2024)</label><mixed-citation>Boyle, J. and Littler, T.: A review of frequency-control techniques for wind power stations to enable higher penetration of renewables onto the Irish power system, Energy Reports, 12, 5567–5581, <ext-link xlink:href="https://doi.org/10.1016/j.egyr.2024.11.031" ext-link-type="DOI">10.1016/j.egyr.2024.11.031</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Braunbehrens et al.(2023)</label><mixed-citation>Braunbehrens, R., Vad, A., and Bottasso, C. L.: The wind farm as a sensor: learning and explaining orographic and plant-induced flow heterogeneities from operational data, Wind Energ. Sci., 8, 691–723, <ext-link xlink:href="https://doi.org/10.5194/wes-8-691-2023" ext-link-type="DOI">10.5194/wes-8-691-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Brayton et al.(1979)</label><mixed-citation>Brayton, R., Director, S., Hachtel, G., and Vidigal, L.: A new algorithm for statistical circuit design based on quasi-Newton methods and function splitting, IEEE T. Circuits Syst., 26, 784–794, <ext-link xlink:href="https://doi.org/10.1109/TCS.1979.1084701" ext-link-type="DOI">10.1109/TCS.1979.1084701</ext-link>, 1979.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Bromm et al.(2018)</label><mixed-citation>Bromm, M., Rott, A., Beck, H., Vollmer, L., Steinfeld, G., and Kühn, M.: Field investigation on the influence of yaw misalignment on the propagation of wind turbine wakes, Wind Energy, 21, 1011–1028, <ext-link xlink:href="https://doi.org/10.1002/we.2210" ext-link-type="DOI">10.1002/we.2210</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Campagnolo et al.(2016)</label><mixed-citation>Campagnolo, F., Petrović, V., Schreiber, J., Nanos, E. M., Croce, A., and Bottasso, C. L.: Wind tunnel testing of a closed-loop wake deflection controller for wind farm power maximization, J. Phys. Conf. Ser., 753, 032006, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/753/3/032006" ext-link-type="DOI">10.1088/1742-6596/753/3/032006</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Campagnolo et al.(2020)</label><mixed-citation>Campagnolo, F., Weber, R., Schreiber, J., and Bottasso, C. L.: Wind tunnel testing of wake steering with dynamic wind direction changes, Wind Energ. Sci., 5, 1273–1295, <ext-link xlink:href="https://doi.org/10.5194/wes-5-1273-2020" ext-link-type="DOI">10.5194/wes-5-1273-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Campagnolo et al.(2022a)</label><mixed-citation>Campagnolo, F., Castellani, F., Natili, F., Astolfi, D., and Mühle, F.: Wind tunnel testing of yaw by individual pitch control applied to wake steering, Frontiers in Energy Research, 10, <ext-link xlink:href="https://doi.org/10.3389/fenrg.2022.883889" ext-link-type="DOI">10.3389/fenrg.2022.883889</ext-link>, 2022a.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Campagnolo et al.(2022b)</label><mixed-citation>Campagnolo, F., Imširović, L., von Braunbehrens, R., and Bottasso, C. L.: Further calibration and validation of FLORIS with wind tunnel data, J. Phys. Conf. Ser., 2265, 022019, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/2/022019" ext-link-type="DOI">10.1088/1742-6596/2265/2/022019</ext-link>, 2022b.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Canet et al.(2021)</label><mixed-citation>Canet, H., Bortolotti, P., and Bottasso, C. L.: On the scaling of wind turbine rotors, Wind Energ. Sci., 6, 601–626, <ext-link xlink:href="https://doi.org/10.5194/wes-6-601-2021" ext-link-type="DOI">10.5194/wes-6-601-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Cossu(2021)</label><mixed-citation>Cossu, C.: Wake redirection at higher axial induction, Wind Energ. Sci., 6, 377–388, <ext-link xlink:href="https://doi.org/10.5194/wes-6-377-2021" ext-link-type="DOI">10.5194/wes-6-377-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Crespo and Hernàndez(1996)</label><mixed-citation>Crespo, A. and Hernàndez, J.: Turbulence characteristics in wind-turbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, <ext-link xlink:href="https://doi.org/10.1016/0167-6105(95)00033-X" ext-link-type="DOI">10.1016/0167-6105(95)00033-X</ext-link>, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Doekemeijer et al.(2021)</label><mixed-citation>Doekemeijer, B. M., Kern, S., Maturu, S., Kanev, S., Salbert, B., Schreiber, J., Campagnolo, F., Bottasso, C. L., Schuler, S., Wilts, F., Neumann, T., Potenza, G., Calabretta, F., Fioretti, F., and van Wingerden, J.-W.: Field experiment for open-loop yaw-based wake steering at a commercial onshore wind farm in Italy, Wind Energ. Sci., 6, 159–176, <ext-link xlink:href="https://doi.org/10.5194/wes-6-159-2021" ext-link-type="DOI">10.5194/wes-6-159-2021</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Ela et al.(2014)</label><mixed-citation>Ela, E., Gevorgian, V., Fleming, P., Zhang, Y. C., Singh, M., Muljadi, E., Scholbrook, A., Aho, J., Buckspan, A., Pao, L., Singhvi, V., Tuohy, A., Pourbeik, P., Brooks, D., and Bhatt, N.: Active power controls from wind power: bridging the gaps, Tech. Rep. NREL/TP-5D00-60574, National Renewable Energy Lab. (NREL), <ext-link xlink:href="https://doi.org/10.2172/1117060" ext-link-type="DOI">10.2172/1117060</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Fleming et al.(2016)</label><mixed-citation>Fleming, P., Aho, J., Gebraad, P., Pao, L., and Zhang, Y.: Computational fluid dynamics simulation study of active power control in wind plants, in: 2016 American Control Conference (ACC), <ext-link xlink:href="https://doi.org/10.1109/ACC.2016.7525115" ext-link-type="DOI">10.1109/ACC.2016.7525115</ext-link>, 1413–1420, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Fleming et al.(2019)</label><mixed-citation>Fleming, P., King, J., Dykes, K., Simley, E., Roadman, J., Scholbrock, A., Murphy, P., Lundquist, J. K., Moriarty, P., Fleming, K., van Dam, J., Bay, C., Mudafort, R., Lopez, H., Skopek, J., Scott, M., Ryan, B., Guernsey, C., and Brake, D.: Initial results from a field campaign of wake steering applied at a commercial wind farm – Part 1, Wind Energ. Sci., 4, 273–285, <ext-link xlink:href="https://doi.org/10.5194/wes-4-273-2019" ext-link-type="DOI">10.5194/wes-4-273-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Frederik et al.(2020a)</label><mixed-citation>Frederik, J. A., Doekemeijer, B. M., Mulders, S. P., and van Wingerden, J.-W.: The helix approach: using dynamic individual pitch control to enhance wake mixing in wind farms, Wind Energy, 23, 1739–1751, <ext-link xlink:href="https://doi.org/10.1002/we.2513" ext-link-type="DOI">10.1002/we.2513</ext-link>, 2020a.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Frederik et al.(2020b)</label><mixed-citation>Frederik, J. A., Weber, R., Cacciola, S., Campagnolo, F., Croce, A., Bottasso, C., and van Wingerden, J.-W.: Periodic dynamic induction control of wind farms: proving the potential in simulations and wind tunnel experiments, Wind Energ. Sci., 5, 245–257, <ext-link xlink:href="https://doi.org/10.5194/wes-5-245-2020" ext-link-type="DOI">10.5194/wes-5-245-2020</ext-link>, 2020b.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Gonzalez Silva et al.(2022)</label><mixed-citation>Gonzalez Silva, J., Doekemeijer, B. M., Ferrari, R., and van Wingerden, J.-W.: Active power control of wind farms: an instantaneous approach on waked conditions, J. Phys. Conf. Ser., 2265, 022056, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/2/022056" ext-link-type="DOI">10.1088/1742-6596/2265/2/022056</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Gonzalez Silva et al.(2024)</label><mixed-citation>Gonzalez Silva, J., van der Hoek, D., Ferrari, R., and van Wingerden, J. W.: Wind tunnel testing of wind turbine and wind farm control strategies for active power regulation, J. Renew. Sustain. Ener., 16, 053302, <ext-link xlink:href="https://doi.org/10.1063/5.0215493" ext-link-type="DOI">10.1063/5.0215493</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Heck et al.(2023)</label><mixed-citation>Heck, K., Johlas, H., and Howland, M.: Modelling the induction, thrust and power of a yaw-misaligned actuator disk, J. Fluid Mech., 959, A9, <ext-link xlink:href="https://doi.org/10.1017/jfm.2023.129" ext-link-type="DOI">10.1017/jfm.2023.129</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Howland et al.(2019)</label><mixed-citation>Howland, M. F., Lele, S. K., and Dabiri, J. O.: Wind farm power optimization through wake steering, P. Natl. Acad. Sci. USA, 116, 14495–14500, <ext-link xlink:href="https://doi.org/10.1073/pnas.1903680116" ext-link-type="DOI">10.1073/pnas.1903680116</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Jensen(1983)</label><mixed-citation> Jensen, N.: A note on wind generator interaction, no. 2411 in Risø-M, Risø National Laboratory, ISBN 87-550-0971-9, 1983.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Jiménez et al.(2010)</label><mixed-citation>Jiménez, A., Crespo, A., and Migoya, E.: Application of a LES technique to characterize the wake deflection of a wind turbine in yaw, Wind Energy, 13, 559–572, <ext-link xlink:href="https://doi.org/10.1002/we.380" ext-link-type="DOI">10.1002/we.380</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Jonkman et al.(2009)</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, <ext-link xlink:href="https://doi.org/10.2172/947422" ext-link-type="DOI">10.2172/947422</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Liew and Larsen(2022)</label><mixed-citation>Liew, J. and Larsen, G. C.: How does the quantity, resolution, and scaling of turbulence boxes affect aeroelastic simulation convergence?, J. Phys. Conf. Ser., 2265, 032049, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/3/032049" ext-link-type="DOI">10.1088/1742-6596/2265/3/032049</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Lin and Porté-Agel(2024)</label><mixed-citation>Lin, M. and Porté-Agel, F.: Wake meandering of wind turbines under dynamic yaw control and impacts on power and fatigue, Renew. Energ., 223, 120003, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2024.120003" ext-link-type="DOI">10.1016/j.renene.2024.120003</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Meyers et al.(2022)</label><mixed-citation>Meyers, J., Bottasso, C., Dykes, K., Fleming, P., Gebraad, P., Giebel, G., Göçmen, T., and van Wingerden, J.-W.: Wind farm flow control: prospects and challenges, Wind Energ. Sci., 7, 2271–2306, <ext-link xlink:href="https://doi.org/10.5194/wes-7-2271-2022" ext-link-type="DOI">10.5194/wes-7-2271-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Mühle et al.(2024)</label><mixed-citation>Mühle, F. V., Heckmeier, F. M., Campagnolo, F., and Breitsamter, C.: Wind tunnel investigations of an individual pitch control strategy for wind farm power optimization, Wind Energ. Sci., 9, 1251–1271, <ext-link xlink:href="https://doi.org/10.5194/wes-9-1251-2024" ext-link-type="DOI">10.5194/wes-9-1251-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Munters and Meyers(2018)</label><mixed-citation>Munters, W. and Meyers, J.: Towards practical dynamic induction control of wind farms: analysis of optimally controlled wind-farm boundary layers and sinusoidal induction control of first-row turbines, Wind Energ. Sci., 3, 409–425, <ext-link xlink:href="https://doi.org/10.5194/wes-3-409-2018" ext-link-type="DOI">10.5194/wes-3-409-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Nanos et al.(2022)</label><mixed-citation>Nanos, E. M., Bottasso, C. L., Tamaro, S., Manolas, D. I., and Riziotis, V. A.: Vertical wake deflection for floating wind turbines by differential ballast control, Wind Energ. Sci., 7, 1641–1660, <ext-link xlink:href="https://doi.org/10.5194/wes-7-1641-2022" ext-link-type="DOI">10.5194/wes-7-1641-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>National Renewable Energy Laboratory(2022)</label><mixed-citation>National Renewable Energy Laboratory: NREL/floris: v3.0, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.6320841" ext-link-type="DOI">10.5281/zenodo.6320841</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Oudich et al.(2023)</label><mixed-citation>Oudich, Y., Gyselinck, J., De Belie, F., and Kinnaert, M.: Providing power reserve for secondary grid frequency regulation of offshore wind farms through yaw control, Wind Energy, 26, 850–873, <ext-link xlink:href="https://doi.org/10.1002/we.2845" ext-link-type="DOI">10.1002/we.2845</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Petrović et al.(2018)</label><mixed-citation>Petrović, V., Schottler, J., Neunaber, I., Hölling, M., and Kühn, M.: Wind tunnel validation of a closed loop active power control for wind farms, J. Phys. Conf. Ser., 1037, 032020, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/3/032020" ext-link-type="DOI">10.1088/1742-6596/1037/3/032020</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Porté-Agel et al.(2013)</label><mixed-citation>Porté-Agel, F., Wu, Y.-T., and Chen, C.-H.: A numerical study of the effects of wind direction on turbine wakes and power losses in a large wind farm, Energies, 6, 5297–5313, <ext-link xlink:href="https://doi.org/10.3390/en6105297" ext-link-type="DOI">10.3390/en6105297</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Profibus Nutzerorganisation e.V. (PNO)(2018)</label><mixed-citation> Profibus Nutzerorganisation e.V. (PNO): Profinet System – Description Technology and Application, Profibus &amp; Profinet International (PI), Haid-und-Neu-Str. 7, 76131 Karlsruhe, Germany, 4th edn., 2018.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Shapiro et al.(2017)</label><mixed-citation>Shapiro, C. R., Bauweraerts, P., Meyers, J., Meneveau, C., and Gayme, D. F.: Model-based receding horizon control of wind farms for secondary frequency regulation, Wind Energy, 20, 1261–1275, <ext-link xlink:href="https://doi.org/10.1002/we.2093" ext-link-type="DOI">10.1002/we.2093</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Starke et al.(2023)</label><mixed-citation>Starke, G. M., Meneveau, C., King, J., and Gayme, D. F.: Yaw-augmented control for wind farm power tracking, in: 2023 American Control Conference (ACC), <ext-link xlink:href="https://doi.org/10.23919/ACC55779.2023.10156444" ext-link-type="DOI">10.23919/ACC55779.2023.10156444</ext-link>, 184–191, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Tamaro and Bottasso(2023)</label><mixed-citation>Tamaro, S. and Bottasso, C. L.: A new wind farm active power control strategy to boost tracking margins in high-demand scenarios, in: 2023 American Control Conference (ACC), <ext-link xlink:href="https://doi.org/10.23919/ACC55779.2023.10156275" ext-link-type="DOI">10.23919/ACC55779.2023.10156275</ext-link>, 192–197, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Tamaro et al.(2024a)</label><mixed-citation>Tamaro, S., Campagnolo, F., and Bottasso, C. L.: On the power and control of a misaligned rotor – beyond the cosine law, Wind Energ. Sci., 9, 1547–1575, <ext-link xlink:href="https://doi.org/10.5194/wes-9-1547-2024" ext-link-type="DOI">10.5194/wes-9-1547-2024</ext-link>, 2024a.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Tamaro et al.(2024b)</label><mixed-citation>Tamaro, S., Guilloré, A., Anand, A., Mühle, F. V., Campagnolo, F., and Bottasso, C. L.: Validation of induction/steering reserve-boosting active power control by a wind tunnel experiment with dynamic wind direction changes, J. Phys. Conf. Ser., 2767, 092067, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2767/9/092067" ext-link-type="DOI">10.1088/1742-6596/2767/9/092067</ext-link>, 2024b.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Tamaro et al.(2025a)</label><mixed-citation>Tamaro, S., Bortolin, D., CAMPAGNOLO, F., Mühle, F. V., and Bottasso, C. L.: Scaled testing of maximum-reserve active power control, Zenodo [data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17551525" ext-link-type="DOI">10.5281/zenodo.17551525</ext-link>, 2025a.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>Tamaro et al.(2025b)</label><mixed-citation>Tamaro, S., Campagnolo, F., and Bottasso, C. L.: A robust active power control algorithm to maximize wind farm power tracking margins in waked conditions, Wind Energ. Sci., 10, 2705–2728, <ext-link xlink:href="https://doi.org/10.5194/wes-10-2705-2025" ext-link-type="DOI">10.5194/wes-10-2705-2025</ext-link>, 2025b. </mixed-citation></ref>
      <ref id="bib1.bibx52"><label>The MathWorks, Inc.(2022)</label><mixed-citation>The MathWorks, Inc.: MATLAB, Version 9.13.0 (R2022b), <uri>https://www.mathworks.com</uri> (last access:  17 April 2026), 2022.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Vali et al.(2019)</label><mixed-citation>Vali, M., Petrović, V., Steinfeld, G., Y. Pao, L., and Kühn, M.: An active power control approach for wake-induced load alleviation in a fully developed wind farm boundary layer, Wind Energ. Sci., 4, 139–161, <ext-link xlink:href="https://doi.org/10.5194/wes-4-139-2019" ext-link-type="DOI">10.5194/wes-4-139-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>van der Hoek et al.(2019)</label><mixed-citation>van der Hoek, D., Kanev, S., Allin, J., Bieniek, D., and Mittelmeier, N.: Effects of axial induction control on wind farm energy production – a field test, Renew. Energ., 140, 994–1003, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2019.03.117" ext-link-type="DOI">10.1016/j.renene.2019.03.117</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>van Wingerden et al.(2017)</label><mixed-citation>van Wingerden, J.-W., Pao, L., Aho, J., and Fleming, P.: Active power control of waked wind farms, IFAC PapersOnLine, 50, 4484–4491, <ext-link xlink:href="https://doi.org/10.1016/j.ifacol.2017.08.378" ext-link-type="DOI">10.1016/j.ifacol.2017.08.378</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Wang et al.(2020)</label><mixed-citation>Wang, C., Campagnolo, F., and Bottasso, C. L.: Identification of airfoil polars from uncertain experimental measurements, Wind Energ. Sci., 5, 1537–1550, <ext-link xlink:href="https://doi.org/10.5194/wes-5-1537-2020" ext-link-type="DOI">10.5194/wes-5-1537-2020</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Wang et al.(2021)</label><mixed-citation>Wang, C., Campagnolo, F., Canet, H., Barreiro, D. J., and Bottasso, C. L.: How realistic are the wakes of scaled wind turbine models?, Wind Energ. Sci., 6, 961–981, <ext-link xlink:href="https://doi.org/10.5194/wes-6-961-2021" ext-link-type="DOI">10.5194/wes-6-961-2021</ext-link>, 2021.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Scaled testing of maximum-reserve active power control</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Aho et al.(2012)</label><mixed-citation>
       Aho, J., Buckspan, A., Laks, J., Fleming, P.,
Jeong, Y., Dunne, F., Churchfield, M., Pao, L., and Johnson, K.: A tutorial of
wind turbine control for supporting grid frequency through active power
control, in: 2012 American Control Conference (ACC),
<a href="https://doi.org/10.1109/ACC.2012.6315180" target="_blank">https://doi.org/10.1109/ACC.2012.6315180</a>, 3120–3131, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Bachmann electronic GmbH(2017)</label><mixed-citation>
       Bachmann electronic GmbH: System Overview, Bachmann electronic GmbH, Feldkirch, 2017.

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

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Boersma et al.(2018)</label><mixed-citation>
       Boersma, S., Rostampour, V., Doekemeijer, B., van Geest, W., and van Wingerden, J.-W.: A constrained model predictive wind farm controller providing active power control: an LES study, J. Phys. Conf. Ser., 1037, 032023, <a href="https://doi.org/10.1088/1742-6596/1037/3/032023" target="_blank">https://doi.org/10.1088/1742-6596/1037/3/032023</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bortolotti et al.(2019)</label><mixed-citation>
       Bortolotti, P., Tarres, H. C., Dykes, K. L., Merz, K., Sethuraman, L., Verelst, D., and Zahle, F.: IEA Wind TCP Task 37: Systems Engineering in Wind Energy – WP2.1 Reference Wind Turbines, Tech. rep., National Renewable Energy Lab. (NREL), <a href="https://doi.org/10.2172/1529216" target="_blank">https://doi.org/10.2172/1529216</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Bossanyi and Ruisi(2021)</label><mixed-citation>
       Bossanyi, E. and Ruisi, R.: Axial induction controller field test at Sedini wind farm, Wind Energ. Sci., 6, 389–408, <a href="https://doi.org/10.5194/wes-6-389-2021" target="_blank">https://doi.org/10.5194/wes-6-389-2021</a>, 2021. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Bottasso and Campagnolo(2022)</label><mixed-citation>
       Bottasso, C. L. and Campagnolo, F.: Wind tunnel testing of wind turbines and farms, in: Handbook of Wind Energy Aerodynamics, edited by: Stoevesandt, B., Schepers, G., Fuglsang, P., and Sun, Y., Springer International Publishing, Cham, <a href="https://doi.org/10.1007/978-3-030-31307-4_54" target="_blank">https://doi.org/10.1007/978-3-030-31307-4_54</a>, 1077–1126, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Bottasso et al.(2013)</label><mixed-citation>
       Bottasso, C., Campagnolo, F., Croce, A., and Tibaldi, C.: Optimization-based study of bend–twist coupled rotor blades for passive and integrated passive/active load alleviation, Wind Energy, 16, 1149–1166, <a href="https://doi.org/10.1002/we.1543" target="_blank">https://doi.org/10.1002/we.1543</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Bottasso et al.(2014)</label><mixed-citation>
       Bottasso, C. L., Campagnolo, F., and Petrović, V.: Wind tunnel testing of scaled wind turbine models: beyond aerodynamics, J. Wind Eng. Ind. Aerod., 127,  11–28, <a href="https://doi.org/10.1016/j.jweia.2014.01.009" target="_blank">https://doi.org/10.1016/j.jweia.2014.01.009</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Boyle and Littler(2024)</label><mixed-citation>
       Boyle, J. and Littler, T.: A review of frequency-control techniques for wind power stations to enable higher penetration of renewables onto the Irish power system, Energy Reports, 12, 5567–5581, <a href="https://doi.org/10.1016/j.egyr.2024.11.031" target="_blank">https://doi.org/10.1016/j.egyr.2024.11.031</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Braunbehrens et al.(2023)</label><mixed-citation>
       Braunbehrens, R., Vad, A., and Bottasso, C. L.: The wind farm as a sensor: learning and explaining orographic and plant-induced flow heterogeneities from operational data, Wind Energ. Sci., 8, 691–723, <a href="https://doi.org/10.5194/wes-8-691-2023" target="_blank">https://doi.org/10.5194/wes-8-691-2023</a>, 2023. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Brayton et al.(1979)</label><mixed-citation>
       Brayton, R., Director, S., Hachtel, G., and Vidigal, L.: A new algorithm for statistical circuit design based on quasi-Newton methods and function splitting, IEEE T. Circuits Syst., 26, 784–794, <a href="https://doi.org/10.1109/TCS.1979.1084701" target="_blank">https://doi.org/10.1109/TCS.1979.1084701</a>, 1979.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Bromm et al.(2018)</label><mixed-citation>
       Bromm, M., Rott, A., Beck, H., Vollmer, L., Steinfeld, G., and Kühn, M.: Field investigation on the influence of yaw misalignment on the propagation of wind turbine wakes, Wind Energy, 21, 1011–1028, <a href="https://doi.org/10.1002/we.2210" target="_blank">https://doi.org/10.1002/we.2210</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Campagnolo et al.(2016)</label><mixed-citation>
       Campagnolo, F., Petrović, V., Schreiber, J., Nanos, E. M., Croce, A., and Bottasso, C. L.: Wind tunnel testing of a closed-loop wake deflection controller for wind farm power maximization, J. Phys. Conf. Ser., 753, 032006, <a href="https://doi.org/10.1088/1742-6596/753/3/032006" target="_blank">https://doi.org/10.1088/1742-6596/753/3/032006</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Campagnolo et al.(2020)</label><mixed-citation>
       Campagnolo, F., Weber, R., Schreiber, J., and Bottasso, C. L.: Wind tunnel testing of wake steering with dynamic wind direction changes, Wind Energ. Sci., 5, 1273–1295, <a href="https://doi.org/10.5194/wes-5-1273-2020" target="_blank">https://doi.org/10.5194/wes-5-1273-2020</a>, 2020. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Campagnolo et al.(2022a)</label><mixed-citation>
       Campagnolo, F., Castellani, F., Natili, F., Astolfi, D., and Mühle, F.: Wind tunnel testing of yaw by individual pitch control applied to wake steering, Frontiers in Energy Research, 10, <a href="https://doi.org/10.3389/fenrg.2022.883889" target="_blank">https://doi.org/10.3389/fenrg.2022.883889</a>, 2022a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Campagnolo et al.(2022b)</label><mixed-citation>
       Campagnolo, F., Imširović, L., von Braunbehrens, R., and Bottasso, C. L.: Further calibration and validation of FLORIS with wind tunnel data, J. Phys. Conf. Ser., 2265, 022019, <a href="https://doi.org/10.1088/1742-6596/2265/2/022019" target="_blank">https://doi.org/10.1088/1742-6596/2265/2/022019</a>, 2022b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Canet et al.(2021)</label><mixed-citation>
       Canet, H., Bortolotti, P., and Bottasso, C. L.: On the scaling of wind turbine rotors, Wind Energ. Sci., 6, 601–626, <a href="https://doi.org/10.5194/wes-6-601-2021" target="_blank">https://doi.org/10.5194/wes-6-601-2021</a>, 2021. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Cossu(2021)</label><mixed-citation>
       Cossu, C.: Wake redirection at higher axial induction, Wind Energ. Sci., 6, 377–388, <a href="https://doi.org/10.5194/wes-6-377-2021" target="_blank">https://doi.org/10.5194/wes-6-377-2021</a>, 2021. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Crespo and Hernàndez(1996)</label><mixed-citation>
       Crespo, A. and Hernàndez, J.: Turbulence characteristics in wind-turbine wakes, J. Wind Eng. Ind. Aerod., 61, 71–85, <a href="https://doi.org/10.1016/0167-6105(95)00033-X" target="_blank">https://doi.org/10.1016/0167-6105(95)00033-X</a>, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Doekemeijer et al.(2021)</label><mixed-citation>
       Doekemeijer, B. M., Kern, S., Maturu, S., Kanev, S., Salbert, B., Schreiber, J., Campagnolo, F., Bottasso, C. L., Schuler, S., Wilts, F., Neumann, T., Potenza, G., Calabretta, F., Fioretti, F., and van Wingerden, J.-W.: Field experiment for open-loop yaw-based wake steering at a commercial onshore wind farm in Italy, Wind Energ. Sci., 6, 159–176, <a href="https://doi.org/10.5194/wes-6-159-2021" target="_blank">https://doi.org/10.5194/wes-6-159-2021</a>, 2021. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Ela et al.(2014)</label><mixed-citation>
       Ela, E., Gevorgian, V., Fleming, P., Zhang, Y. C., Singh, M., Muljadi, E., Scholbrook, A., Aho, J., Buckspan, A., Pao, L., Singhvi, V., Tuohy, A., Pourbeik, P., Brooks, D., and Bhatt, N.: Active power controls from wind power: bridging the gaps, Tech. Rep. NREL/TP-5D00-60574, National Renewable Energy Lab. (NREL), <a href="https://doi.org/10.2172/1117060" target="_blank">https://doi.org/10.2172/1117060</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Fleming et al.(2016)</label><mixed-citation>
       Fleming, P., Aho, J., Gebraad, P., Pao, L., and Zhang, Y.: Computational fluid dynamics simulation study of active power control in wind plants, in: 2016 American Control Conference (ACC), <a href="https://doi.org/10.1109/ACC.2016.7525115" target="_blank">https://doi.org/10.1109/ACC.2016.7525115</a>, 1413–1420, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Fleming et al.(2019)</label><mixed-citation>
       Fleming, P., King, J., Dykes, K., Simley, E., Roadman, J., Scholbrock, A., Murphy, P., Lundquist, J. K., Moriarty, P., Fleming, K., van Dam, J., Bay, C., Mudafort, R., Lopez, H., Skopek, J., Scott, M., Ryan, B., Guernsey, C., and Brake, D.: Initial results from a field campaign of wake steering applied at a commercial wind farm – Part 1, Wind Energ. Sci., 4, 273–285, <a href="https://doi.org/10.5194/wes-4-273-2019" target="_blank">https://doi.org/10.5194/wes-4-273-2019</a>, 2019. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Frederik et al.(2020a)</label><mixed-citation>
       Frederik, J. A., Doekemeijer, B. M., Mulders, S. P., and van Wingerden, J.-W.: The helix approach: using dynamic individual pitch control to enhance wake mixing in wind farms, Wind Energy, 23, 1739–1751, <a href="https://doi.org/10.1002/we.2513" target="_blank">https://doi.org/10.1002/we.2513</a>, 2020a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Frederik et al.(2020b)</label><mixed-citation>
       Frederik, J. A., Weber, R., Cacciola, S., Campagnolo, F., Croce, A., Bottasso, C., and van Wingerden, J.-W.: Periodic dynamic induction control of wind farms: proving the potential in simulations and wind tunnel experiments, Wind Energ. Sci., 5, 245–257, <a href="https://doi.org/10.5194/wes-5-245-2020" target="_blank">https://doi.org/10.5194/wes-5-245-2020</a>, 2020b. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Gonzalez Silva et al.(2022)</label><mixed-citation>
       Gonzalez Silva, J., Doekemeijer, B. M., Ferrari, R., and van Wingerden, J.-W.: Active power control of wind farms: an instantaneous approach on waked conditions, J. Phys. Conf. Ser., 2265, 022056, <a href="https://doi.org/10.1088/1742-6596/2265/2/022056" target="_blank">https://doi.org/10.1088/1742-6596/2265/2/022056</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Gonzalez Silva et al.(2024)</label><mixed-citation>
       Gonzalez Silva, J., van der Hoek, D., Ferrari, R., and van Wingerden, J. W.: Wind tunnel testing of wind turbine and wind farm control strategies for active power regulation, J. Renew. Sustain. Ener., 16, 053302, <a href="https://doi.org/10.1063/5.0215493" target="_blank">https://doi.org/10.1063/5.0215493</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Heck et al.(2023)</label><mixed-citation>
       Heck, K., Johlas, H., and Howland, M.: Modelling the induction, thrust and power of a yaw-misaligned actuator disk, J. Fluid Mech., 959, A9, <a href="https://doi.org/10.1017/jfm.2023.129" target="_blank">https://doi.org/10.1017/jfm.2023.129</a>, 2023.

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

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

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Jiménez et al.(2010)</label><mixed-citation>
       Jiménez, A., Crespo, A., and Migoya, E.: Application of a LES technique to characterize the wake deflection of a wind turbine in yaw, Wind Energy, 13, 559–572, <a href="https://doi.org/10.1002/we.380" target="_blank">https://doi.org/10.1002/we.380</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Jonkman et al.(2009)</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://doi.org/10.2172/947422" target="_blank">https://doi.org/10.2172/947422</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Liew and Larsen(2022)</label><mixed-citation>
       Liew, J. and Larsen, G. C.: How does the quantity, resolution, and scaling of turbulence boxes affect aeroelastic simulation convergence?, J. Phys. Conf. Ser., 2265, 032049, <a href="https://doi.org/10.1088/1742-6596/2265/3/032049" target="_blank">https://doi.org/10.1088/1742-6596/2265/3/032049</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Lin and Porté-Agel(2024)</label><mixed-citation>
       Lin, M. and Porté-Agel, F.: Wake meandering of wind turbines under dynamic yaw control and impacts on power and fatigue, Renew. Energ., 223, 120003, <a href="https://doi.org/10.1016/j.renene.2024.120003" target="_blank">https://doi.org/10.1016/j.renene.2024.120003</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Meyers et al.(2022)</label><mixed-citation>
       Meyers, J., Bottasso, C.,
Dykes, K., Fleming, P., Gebraad, P., Giebel, G., Göçmen, T., and van
Wingerden, J.-W.: Wind farm flow control: prospects and challenges, Wind
Energ. Sci., 7, 2271–2306, <a href="https://doi.org/10.5194/wes-7-2271-2022" target="_blank">https://doi.org/10.5194/wes-7-2271-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Mühle et al.(2024)</label><mixed-citation>
       Mühle, F. V., Heckmeier, F. M., Campagnolo, F., and Breitsamter, C.: Wind tunnel investigations of an individual pitch control strategy for wind farm power optimization, Wind Energ. Sci., 9, 1251–1271, <a href="https://doi.org/10.5194/wes-9-1251-2024" target="_blank">https://doi.org/10.5194/wes-9-1251-2024</a>, 2024. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Munters and Meyers(2018)</label><mixed-citation>
       Munters, W. and Meyers, J.: Towards practical dynamic induction control of wind farms: analysis of optimally controlled wind-farm boundary layers and sinusoidal induction control of first-row turbines, Wind Energ. Sci., 3, 409–425, <a href="https://doi.org/10.5194/wes-3-409-2018" target="_blank">https://doi.org/10.5194/wes-3-409-2018</a>, 2018. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Nanos et al.(2022)</label><mixed-citation>
       Nanos, E. M., Bottasso, C. L., Tamaro, S., Manolas, D. I., and Riziotis, V. A.: Vertical wake deflection for floating wind turbines by differential ballast control, Wind Energ. Sci., 7, 1641–1660, <a href="https://doi.org/10.5194/wes-7-1641-2022" target="_blank">https://doi.org/10.5194/wes-7-1641-2022</a>, 2022. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>National Renewable Energy
Laboratory(2022)</label><mixed-citation>
       National Renewable Energy
Laboratory: NREL/floris: v3.0, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.6320841" target="_blank">https://doi.org/10.5281/zenodo.6320841</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Oudich et al.(2023)</label><mixed-citation>
       Oudich, Y., Gyselinck, J., De Belie, F., and Kinnaert, M.: Providing power reserve for secondary grid frequency regulation of offshore wind farms through yaw control, Wind Energy, 26, 850–873, <a href="https://doi.org/10.1002/we.2845" target="_blank">https://doi.org/10.1002/we.2845</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Petrović et al.(2018)</label><mixed-citation>
       Petrović, V., Schottler, J., Neunaber, I., Hölling, M., and Kühn, M.: Wind tunnel validation of a closed loop active power control for wind farms, J. Phys. Conf. Ser., 1037, 032020, <a href="https://doi.org/10.1088/1742-6596/1037/3/032020" target="_blank">https://doi.org/10.1088/1742-6596/1037/3/032020</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Porté-Agel et al.(2013)</label><mixed-citation>
       Porté-Agel, F., Wu, Y.-T., and Chen, C.-H.: A numerical study of the effects of wind direction on turbine wakes and power losses in a large wind farm, Energies, 6, 5297–5313, <a href="https://doi.org/10.3390/en6105297" target="_blank">https://doi.org/10.3390/en6105297</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Profibus Nutzerorganisation e.V. (PNO)(2018)</label><mixed-citation>
       Profibus Nutzerorganisation e.V. (PNO): Profinet System – Description Technology and Application, Profibus &amp; Profinet International (PI), Haid-und-Neu-Str. 7, 76131 Karlsruhe, Germany, 4th edn., 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Shapiro et al.(2017)</label><mixed-citation>
       Shapiro, C. R., Bauweraerts, P., Meyers, J., Meneveau, C., and Gayme, D. F.: Model-based receding horizon control of wind farms for secondary frequency regulation, Wind Energy, 20, 1261–1275, <a href="https://doi.org/10.1002/we.2093" target="_blank">https://doi.org/10.1002/we.2093</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Starke et al.(2023)</label><mixed-citation>
       Starke, G. M., Meneveau, C., King, J., and Gayme, D. F.: Yaw-augmented control for wind farm power tracking, in: 2023 American Control Conference (ACC), <a href="https://doi.org/10.23919/ACC55779.2023.10156444" target="_blank">https://doi.org/10.23919/ACC55779.2023.10156444</a>, 184–191, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Tamaro and Bottasso(2023)</label><mixed-citation>
       Tamaro, S. and Bottasso, C. L.: A new wind farm active power control strategy to boost tracking margins in high-demand scenarios, in: 2023 American Control Conference (ACC), <a href="https://doi.org/10.23919/ACC55779.2023.10156275" target="_blank">https://doi.org/10.23919/ACC55779.2023.10156275</a>, 192–197, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Tamaro et al.(2024a)</label><mixed-citation>
       Tamaro, S., Campagnolo, F., and Bottasso, C. L.: On the power and control of a misaligned rotor – beyond the cosine law, Wind Energ. Sci., 9, 1547–1575, <a href="https://doi.org/10.5194/wes-9-1547-2024" target="_blank">https://doi.org/10.5194/wes-9-1547-2024</a>, 2024a. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Tamaro et al.(2024b)</label><mixed-citation>
       Tamaro, S., Guilloré, A., Anand, A., Mühle, F. V., Campagnolo, F., and Bottasso, C. L.: Validation of induction/steering reserve-boosting active power control by a wind tunnel experiment with dynamic wind direction changes, J. Phys. Conf. Ser., 2767, 092067, <a href="https://doi.org/10.1088/1742-6596/2767/9/092067" target="_blank">https://doi.org/10.1088/1742-6596/2767/9/092067</a>, 2024b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Tamaro et al.(2025a)</label><mixed-citation>
      
Tamaro, S., Bortolin, D., CAMPAGNOLO, F., Mühle, F. V., and Bottasso, C. L.: Scaled testing of maximum-reserve active power control, Zenodo [data set], <a href="https://doi.org/10.5281/zenodo.17551525" target="_blank">https://doi.org/10.5281/zenodo.17551525</a>, 2025a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>Tamaro et al.(2025b)</label><mixed-citation>
       Tamaro, S., Campagnolo, F., and Bottasso, C. L.: A robust active power control algorithm to maximize wind farm power tracking margins in waked conditions, Wind Energ. Sci., 10, 2705–2728, <a href="https://doi.org/10.5194/wes-10-2705-2025" target="_blank">https://doi.org/10.5194/wes-10-2705-2025</a>, 2025b. 

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>The MathWorks, Inc.(2022)</label><mixed-citation>
       The MathWorks, Inc.: MATLAB, Version 9.13.0 (R2022b), <a href="https://www.mathworks.com" target="_blank"/> (last access:  17 April 2026), 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Vali et al.(2019)</label><mixed-citation>
       Vali, M., Petrović, V., Steinfeld, G., Y. Pao, L., and Kühn, M.: An active power control approach for wake-induced load alleviation in a fully developed wind farm boundary layer, Wind Energ. Sci., 4, 139–161, <a href="https://doi.org/10.5194/wes-4-139-2019" target="_blank">https://doi.org/10.5194/wes-4-139-2019</a>, 2019. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>van der Hoek et al.(2019)</label><mixed-citation>
       van der Hoek, D., Kanev, S., Allin, J., Bieniek, D., and Mittelmeier, N.: Effects of axial induction control on wind farm energy production – a field test, Renew. Energ., 140, 994–1003, <a href="https://doi.org/10.1016/j.renene.2019.03.117" target="_blank">https://doi.org/10.1016/j.renene.2019.03.117</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>van Wingerden et al.(2017)</label><mixed-citation>
       van
Wingerden, J.-W., Pao, L., Aho, J., and Fleming, P.: Active power control of
waked wind farms, IFAC PapersOnLine, 50, 4484–4491, <a href="https://doi.org/10.1016/j.ifacol.2017.08.378" target="_blank">https://doi.org/10.1016/j.ifacol.2017.08.378</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Wang et al.(2020)</label><mixed-citation>
       Wang, C., Campagnolo, F., and Bottasso, C. L.: Identification of airfoil polars from uncertain experimental measurements, Wind Energ. Sci., 5, 1537–1550, <a href="https://doi.org/10.5194/wes-5-1537-2020" target="_blank">https://doi.org/10.5194/wes-5-1537-2020</a>, 2020. 
    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Wang et al.(2021)</label><mixed-citation>
       Wang, C., Campagnolo, F., Canet, H., Barreiro, D. J., and Bottasso, C. L.: How realistic are the wakes of scaled wind turbine models?, Wind Energ. Sci., 6, 961–981, <a href="https://doi.org/10.5194/wes-6-961-2021" target="_blank">https://doi.org/10.5194/wes-6-961-2021</a>, 2021. 
    </mixed-citation></ref-html>--></article>
