<?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-10-1303-2025</article-id><title-group><article-title>COFLEX: a novel set point optimiser and feedforward–feedback control scheme for large, flexible wind turbines</article-title><alt-title>COFLEX: a novel set point optimiser and feedforward–feedback control scheme</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Lazzerini</surname><given-names>Guido</given-names></name>
          <email>g.lazzerini@tudelft.nl</email>
        <ext-link>https://orcid.org/0000-0002-7123-7190</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Deleuran Grunnet</surname><given-names>Jacob</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Gybel Hovgaard</surname><given-names>Tobias</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Caponetti</surname><given-names>Fabio</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff2">
          <name><surname>Datta Madireddi</surname><given-names>Vasu</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff3">
          <name><surname>De Tavernier</surname><given-names>Delphine</given-names></name>
          
        <ext-link>https://orcid.org/0000-0002-8678-8198</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Mulders</surname><given-names>Sebastiaan Paul</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-4689-257X</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Delft Center for Systems and Control, Faculty of Mechanical Engineering, Delft University of Technology, Delft, the Netherlands</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Shanghai Electric Wind Power Group European Innovation Center, Aarhus, Denmark</institution>
        </aff>
        <aff id="aff3"><label>3</label><institution>Department of Flow Physics and Technology, Faculty of Aerospace Engineering, Delft University of Technology, Delft, the Netherlands</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Guido Lazzerini (g.lazzerini@tudelft.nl)</corresp></author-notes><pub-date><day>10</day><month>July</month><year>2025</year></pub-date>
      
      <volume>10</volume>
      <issue>7</issue>
      <fpage>1303</fpage><lpage>1327</lpage>
      <history>
        <date date-type="received"><day>8</day><month>November</month><year>2024</year></date>
           <date date-type="rev-request"><day>20</day><month>November</month><year>2024</year></date>
           <date date-type="rev-recd"><day>21</day><month>March</month><year>2025</year></date>
           <date date-type="accepted"><day>3</day><month>April</month><year>2025</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2025 Guido Lazzerini et al.</copyright-statement>
        <copyright-year>2025</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/10/1303/2025/wes-10-1303-2025.html">This article is available from https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e154">Large-scale wind turbines offer higher power output but present design challenges as increased blade flexibility affects aerodynamic performance and loading under varying conditions. Although flexible structures are considered in terms of (periodic) load control and aerodynamic stability, the impact of flexibility on the aerodynamic response of the blades is currently not fully addressed in conventional control strategies. The current state-of-the-art control strategy is the tip-speed ratio tracking scheme, which aims to maximise power production in the partial-load region by maintaining a constant ratio between blade velocity and wind speed. However, this approach fails under large deformations, where the deflection and structural twist of the blade impact aerodynamic performance. This work aims to redefine the state-of-the-art wind turbine control with the COntrol scheme for FLEXible wind turbines (COFLEX): a novel feedforward–feedback control scheme that leverages optimal operational set points computed by COFLEXOpt, which is a set point optimiser considering the effects of blade deformations on  aerodynamic performance and turbine loading. The proposed combined strategy consists of two key modules. The first module, COFLEXOpt, is an optimisation framework that provides controller set points while allowing constraints to be imposed on various operational, structural, and load properties, such as blade deflection and other structural loads. Set points obtained using COFLEXOpt are agnostic to operating regions, meaning that the operating region boundaries are optimised rather than prescribed. The second module is a feedforward–feedback controller and uses the set point mappings generated with COFLEXOpt, scheduled on wind speed estimates, to evaluate feedforward inputs and feedback to correct modelling inaccuracies and ensure closed-loop stability. A set point smoothing technique enables smooth transitions from partial- to full-load operations. The IEA 15 MW turbine is used as an exemplary case to show the effectiveness of COFLEX in maximising rotor aerodynamic efficiency while imposing blade out-of-plane tip displacement constraints. An analysis of the steady-state optimisation results shows that accounting for blade flexibility leads to variable optimal tip-speed ratio operating points in the partial-load region, and the collective pitch angle can be used to counteract blade torsion, maximising power coefficient while complying with imposed constraints. The established controller, tailored to track these optimised set points and operating points, was evaluated through time-marching mid-fidelity HAWC2 simulations across the entire operational range of the IEA 15 MW reference wind turbine (RWT). These simulations, performed under uniform and turbulent wind inflows, demonstrate excellent agreement between optimised steady states and median values obtained from HAWC2 simulations. Furthermore, the generator power shows an increase of up to 5 % in the partial-load region compared to the reference scheme while maintaining blade deflection at a similar level.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e166">While the European and international renewable energy targets for 2030 and 2050 provide an important framework for the future development of wind energy <xref ref-type="bibr" rid="bib1.bibx15" id="paren.1"/>, the drive for larger, multi-megawatt wind turbines is primarily motivated by the ongoing efforts to reduce the cost of energy. This push is especially pronounced in the offshore wind sector, where the high costs associated with installation favour the selection of larger turbines <xref ref-type="bibr" rid="bib1.bibx21" id="paren.2"/>. However, enlarging components while simultaneously aiming to keep costs low presents a significant challenge for wind turbine designers and manufacturers <xref ref-type="bibr" rid="bib1.bibx18" id="paren.3"/>. Cost-effective large structures become highly flexible, and turbines with higher power ratings are inherently subject to higher loads <xref ref-type="bibr" rid="bib1.bibx38" id="paren.4"/>, coming from wind, inertia, and even sea waves in offshore installations <xref ref-type="bibr" rid="bib1.bibx41" id="paren.5"/>. These loads deform the structures, such as the turbine tower, but in particular the blades. In contrast to stiffer, smaller-scale turbines, blade flexibility heavily impacts aerodynamic and mechanical performance and results in complex system dynamics <xref ref-type="bibr" rid="bib1.bibx28" id="paren.6"/>. Passive design techniques, such as pre-coning, pre-bending, and bend–twist coupling, can mitigate some of these effects by modifying the geometrical and structural properties of the rotor. For instance, while pre-coning and pre-bending can increase blade-to-tower clearance and increase the maximum swept area when the turbine is operating at its rated condition, bend–twist coupling can be used to reduce aerodynamic loading passively <xref ref-type="bibr" rid="bib1.bibx34" id="paren.7"/>. Nonetheless, these structural measures remain complementary to advanced active control, which can further optimise energy capture and help decrease loads <xref ref-type="bibr" rid="bib1.bibx3" id="paren.8"/>. Extensive studies on aeroelastic interactions have led to structurally feasible designs <xref ref-type="bibr" rid="bib1.bibx44 bib1.bibx32 bib1.bibx8" id="paren.9"/>, and the commercialisation of large wind turbines with rated power reaching up to 20 MW <xref ref-type="bibr" rid="bib1.bibx10 bib1.bibx43 bib1.bibx37 bib1.bibx25" id="paren.10"/> has demonstrated that scaling-up challenges can be successfully addressed. Concurrently, joint research teams have designed bleeding-edge reference wind turbines (RWTs) for the wind energy community, pushing the rated power up to 22 MW <xref ref-type="bibr" rid="bib1.bibx47" id="paren.11"/>.</p>
      <p id="d2e203">Conventional turbine controller designs drive the system to <italic>optimal</italic> operating points derived from steady-state calculations, which, in the partial-load region, often assume an optimal constant tip-speed ratio and a fixed collective pitch angle set point to maximise power production <xref ref-type="bibr" rid="bib1.bibx12 bib1.bibx7" id="paren.12"/>. An example of this approach is implemented in the ROSCO controller, which employs tip-speed ratio tracking for generator torque control, aiming to maximise power capture in the partial-load region <xref ref-type="bibr" rid="bib1.bibx1" id="paren.13"/>. An even simpler approach is represented by the <inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> controller, which sets the generator torque in the partial-load region proportional to the square root of the rotor speed via a constant gain <inline-formula><mml:math id="M2" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> <xref ref-type="bibr" rid="bib1.bibx29" id="paren.14"/>. This approach, while still effective for present-day wind turbines <xref ref-type="bibr" rid="bib1.bibx7" id="paren.15"/>, is also limited by its dependence on an assumed power coefficient curve.</p>
      <p id="d2e242">In fact, flexible blades of large wind turbines are subjected to heavy loads and undergo significant deformations, causing blade sections to deflect and twist from their unloaded positions <xref ref-type="bibr" rid="bib1.bibx40" id="paren.16"/>. These structural changes alter the relative angle of attack experienced by the individual blade sections, which in turn affects the aerodynamic performance of the rotor.</p>
      <p id="d2e248">While TSR tracking and <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> control schemes have been successful in research and industrial turbines over the past few decades, our work proposes a novel and combined set point optimisation and feedforward–feedback controller strategy to address the increased structural flexibility of next-generation turbines. Since the tip-speed ratio is the ratio between the blade tip speed and incoming wind speed, the same value for the tip-speed ratio can result from different combinations of wind speed and rotational speed, each producing different loading conditions. Hence, the effects of deformations are not captured when performance is parameterised solely by this quantity. Therefore, when considering the performance of larger, more flexible wind turbines, control strategies based on constant tip-speed ratio should be reconsidered. Instead, rotor and wind speed, which compose the tip-speed ratio, should be treated as independent variables in future control strategies. Moving away from constant tip-speed ratio assumptions allows us to explore control in a three-dimensional space, where rotor speed, wind speed, and collective pitch angle are considered independently to better account for flexible behaviour of the turbine.</p>
      <p id="d2e265">To determine the optimised set point schedules, this work follows the emerging trend of calculating operating points by formulating the definition of steady-state set points as a nonlinear optimisation problem, with rotational speed and collective pitch angle as decision variables scheduled on wind speed <xref ref-type="bibr" rid="bib1.bibx31" id="paren.17"/>. Another example of implementing a variable steady-state schedule for the collective pitch angle in the partial-load region was demonstrated in the recently published IEA 22 MW RWT design report <xref ref-type="bibr" rid="bib1.bibx47" id="paren.18"/>. In the IEA 22 MW RWT, the controller adjusts collective pitch angle set points in the partial-load region with the two-fold objective of maximising the aerodynamic performance of the blades and ensuring peak shaving of thrust. However, the concept of a variable optimal tip-speed ratio is not addressed, and details of the framework used to calculate the schedules have yet to be disclosed. An earlier example of deriving schedules for the steady-state operating points was provided by <xref ref-type="bibr" rid="bib1.bibx5" id="text.19"/>. Set points were optimised for a representative 3 MW turbine to constrain the blade tip speed in the near-rated region, and an LQR controller was employed to perform power tracking. More recently, <xref ref-type="bibr" rid="bib1.bibx30" id="text.20"/> demonstrated that an optimal control employing online updates of power reference set points could be designed on top of a conventional controller to alleviate loads.</p>
      <p id="d2e280">In this work, we advance state-of-the-art control for large-scale wind turbines by introducing the COFLEX scheme, which optimises turbine performance across the entire operational range while accounting for blade flexibility. Unlike conventional approaches that assume a unique <italic>optimal</italic> tip-speed ratio and fixed collective pitch angle, COFLEX leverages a set point optimisation framework (COFLEXOpt) to calculate schedules for the desired rotor speed and collective pitch for every wind speed, according to a constrained optimisation problem. This approach eliminates the need to predefine operating points for transitions between partial- and full-load regions, as the boundary between regions is optimised rather than fixed. Furthermore, COFLEXOpt enables the formulation of a constrained optimisation problem, allowing for the inclusion of specific constraints on various quantities, such as blade deflection and other structural properties.</p>
      <p id="d2e286">Finally, we developed a feedforward–feedback controller to track the optimised set points. We based our performance calculations on representations of performance in a three-dimensional space where the rotational speed, the wind speed, and the collective pitch angle are the independent variables. The implications and efficacy of the COFLEX scheme are demonstrated on the highly flexible IEA 15 MW RWT <xref ref-type="bibr" rid="bib1.bibx9" id="paren.21"/>, where it achieves improved rotor power capture compared to the baseline control strategy while ensuring compliance with load and deflection limits to maintain structural integrity.</p>
      <p id="d2e292">Thereby, the key novelties and contributions of this paper are as follows: <list list-type="bullet"><list-item>
      <p id="d2e297">providing a set point optimisation scheme called COFLEXOpt to calculate set points over the complete turbine operating range using one optimisation problem and adhering to operational and structural load constraints,  without the need for explicit definition of the partial- to full-load transition point;</p></list-item><list-item>
      <p id="d2e301">improving the accuracy of rotor effective wind speed estimation by decomposing the dependency of power coefficient information from the tip-speed ratio to rotor speed and wind speed;</p></list-item><list-item>
      <p id="d2e305">proposing a feedforward–feedback controller using and tracking the COFLEXOpt-optimised set points, thus satisfying and adhering to the constrained optimisation objective(s);</p></list-item><list-item>
      <p id="d2e309">demonstrating the capabilities and performance advantages of the proposed COFLEX in a higher-fidelity simulation environment using realistic wind conditions;</p></list-item><list-item>
      <p id="d2e313">sharing COFLEX in a publicly available and freely accessible online repository <xref ref-type="bibr" rid="bib1.bibx20" id="paren.22"/>.</p></list-item></list> This paper is organised as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> presents an overview of COFLEX. Section <xref ref-type="sec" rid="Ch1.S3"/> provides the flexible-model calculations used in the controller and a comparison with rigid-model calculations to highlight the effects of flexibility on performance and to understand the importance of considering flexibility in the control problem. Section <xref ref-type="sec" rid="Ch1.S4"/> defines the set point optimisation framework, named COFLEXOpt, with results of steady-state calculations. Section <xref ref-type="sec" rid="Ch1.S5"/> reveals the improvements to the wind speed estimator scheme and the details of the novel controller scheme, and Sect. <xref ref-type="sec" rid="Ch1.S6"/> demonstrates the capabilities of the novel control scheme in step response and realistic wind conditions through time-domain simulations. Finally, conclusions and possible future developments are outlined in Sect. <xref ref-type="sec" rid="Ch1.S7"/>.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Overview of COFLEX</title>
      <p id="d2e341">This section provides a comprehensive overview of the novel control scheme. We briefly introduce the key elements of the control architecture, describing how each component contributes to the overall scheme. Figure <xref ref-type="fig" rid="F1"/> offers a graphical representation of the paper’s structure and main components of the control scheme.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e348">Schematic representation of the development of COFLEX, with indications of the main topics for each section of this paper. The steady-state calculation (Sect. <xref ref-type="sec" rid="Ch1.S3"/>) of performance is used as inputs to COFLEXOpt (Sect. <xref ref-type="sec" rid="Ch1.S4"/>). The optimised set points are tracked through a controller scheme (Sect. <xref ref-type="sec" rid="Ch1.S5"/>), which was validated with time-domain simulations (Sect. <xref ref-type="sec" rid="Ch1.S6"/>).</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f01.png"/>

      </fig>

      <p id="d2e365">As seen in Fig. <xref ref-type="fig" rid="F1"/>, we start by calculating the steady states of wind turbine operating points in a three-dimensional space. The steady-state operating points need to be expressed as functions in a three-dimensional space, in the form “<inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>”, where <inline-formula><mml:math id="M5" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is the rotational speed, <inline-formula><mml:math id="M6" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> is the wind speed, and <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> is the collective pitch angle.</p>
      <p id="d2e412">For this purpose, we use a flexible IEA 15 MW RWT model in HAWCStab2; this turbine was selected for its present-day relevance to modern commercially available turbines <xref ref-type="bibr" rid="bib1.bibx10 bib1.bibx43" id="paren.23"/> and because it is deemed to have a representative level of blade flexibility of such turbines. HAWCStab2 is an aeroelastic tool, which solves the linearised dynamic equations of blade element momentum theory (BEMT) to calculate aerodynamic loads and implements an iterative process to account for deformed structures <xref ref-type="bibr" rid="bib1.bibx11" id="paren.24"/>. This tool was chosen for different reasons: first, it can take into account large deformations of blades and structural couplings, such as bend–twist, in the load calculations <xref ref-type="bibr" rid="bib1.bibx39" id="paren.25"/>. Second, it provides a very fast computational time, which is crucial for evaluating performance across thousands of operating points that result from the combination of the three independent variables: rotational speed, wind speed, and collective pitch angle, with sufficiently fine resolution. Hence, this tool offers a good trade-off between calculation accuracy and computational cost for operating point evaluations.</p>
      <p id="d2e424">Next, the post-processed performance data from the steady-state calculations serve as input to our set point optimisation framework. This framework operates within the MATLAB-CasADi environment <xref ref-type="bibr" rid="bib1.bibx2" id="paren.26"/>, which implements the formulation and manipulation of symbolic functions and optimisation algorithms. Three-dimensional B-spline function interpolators of turbine performance metrics were used in the optimisation problem. COFLEXOpt is able to solve a constrained optimisation problem in the entire operating range of a wind turbine, providing optimised set points without prescribing operating regions. The constraints can be set to reflect design requirements.</p>
      <p id="d2e430">Once the set points are obtained by solving a numerical optimisation problem for the entire operating range of a wind turbine, they are used as inputs to the controller. We  developed a novel feedforward–feedback controller that utilises both generator torque and collective pitch angle to track the set points. The feedforward contributions, derived from COFLEXOpt mappings, are functions of the estimated wind speed. The feedforward control is implemented to accelerate the achievement of the prescribed steady states such that the controller relies less on feedback to attain the desired operating point.</p>
      <p id="d2e433">The feedback control component uses proportional–integral (PI) controllers to correct deviations from the optimised set points. A switching logic is implemented to allow for the alternate activation of the generator torque controller (active in the partial-load region) and the collective pitch angle controller (active in the full-load region) based on a set point smoothing technique adapted from the works of <xref ref-type="bibr" rid="bib1.bibx36" id="text.27"/> and <xref ref-type="bibr" rid="bib1.bibx48" id="text.28"/>. This technique forces the inactive controller to reach its saturation limit, preventing interference with the active controller and ensuring smooth operation under varying wind conditions.</p>
      <p id="d2e442">A critical aspect of the feedforward control is its reliance on accurate wind speed estimation (<xref ref-type="bibr" rid="bib1.bibx35" id="altparen.29"/>, uses lidar measurements for feedforward control). In our work, the control system continuously estimates the wind speed to update the feedforward contributions accordingly. The wind speed estimator (WSE) used here is a modification of the immersion and invariance (II) estimator, first introduced in <xref ref-type="bibr" rid="bib1.bibx27" id="text.30"/> and further developed in <xref ref-type="bibr" rid="bib1.bibx23" id="text.31"/> and <xref ref-type="bibr" rid="bib1.bibx6" id="text.32"/>.</p>
      <p id="d2e457">We demonstrate the effectiveness of the control strategy on the IEA 15 MW RWT through a series of time-domain simulations carried out in the mid-fidelity aeroelastic code HAWC2 <xref ref-type="bibr" rid="bib1.bibx19" id="paren.33"/>. These simulations, including both uniform wind steps and realistic turbulent wind conditions, demonstrate the control strategy's working principles, robustness, and efficacy in accurately tracking predefined operating points.</p>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Effects of flexibility on steady-state performance of the IEA 15 MW RWT</title>
      <p id="d2e472">In this section, we show how flexibility affects the steady-state power and thrust coefficients of the IEA 15 MW RWT. In Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/>, we establish quantities to represent the wind turbine performance, which is the foundation of conventional controllers and – in an extended form –  the novel scheme. Section <xref ref-type="sec" rid="Ch1.S3.SS2"/> presents the limitations of conventional tip-speed ratio tracking, which fails to account for structural deformations. Finally, we compare different performance metrics evaluated with rigid- and flexible-blade models, highlighting the significant performance variations induced by structural flexibility and the need for an optimised control scheme that incorporates these effects.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Fundamental wind turbine relations</title>
      <p id="d2e486">First, we define the non-dimensional mechanical power coefficient as

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M8" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>P</mml:mi><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:msup><mml:mi>V</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mi mathvariant="italic">π</mml:mi><mml:msup><mml:mi>R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M9" display="inline"><mml:mi>P</mml:mi></mml:math></inline-formula> is the rotor mechanical power  (W), <inline-formula><mml:math id="M10" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> is the rotor-averaged wind speed  (m s<sup>−1</sup>), <inline-formula><mml:math id="M12" display="inline"><mml:mi>R</mml:mi></mml:math></inline-formula> is the blade radius  (m),  and <inline-formula><mml:math id="M13" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the air density  (kg m<sup>−3</sup>). Note that we refer to the wind speed here as the spatial average of the longitudinal component of the atmospheric wind field at the rotor plane when unaffected by the presence of the wind turbine <xref ref-type="bibr" rid="bib1.bibx19" id="paren.34"><named-content content-type="pre">see definition in</named-content></xref>. In wind turbine design and analysis, non-dimensional parameters like <inline-formula><mml:math id="M15" 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> are essential in evaluating wind turbine performance, as they provide a universal metric for comparing different turbines operating under various conditions.</p>
      <p id="d2e599">We also introduce the torque coefficient as

            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M16" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>Q</mml:mi><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:msup><mml:mi>V</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="italic">π</mml:mi><mml:msup><mml:mi>R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M17" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula> is the torque exerted on the rotor by the wind. The tip-speed ratio (TSR) is defined as the ratio between the tangential speed at the tip of the blade and the wind speed:

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M18" display="block"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mi>R</mml:mi></mml:mrow><mml:mi>V</mml:mi></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          calculated from the rotational speed of the rotor <inline-formula><mml:math id="M19" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>. From Eqs. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) and (<xref ref-type="disp-formula" rid="Ch1.E2"/>), we get the proportionality between the power and torque coefficients as follows:

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M20" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Finally, we define the thrust coefficient to represent the force perpendicular to the rotor plane:

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M21" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>T</mml:mi><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:msup><mml:mi>V</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="italic">π</mml:mi><mml:msup><mml:mi>R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M22" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> is commonly known as thrust.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Decomposing the tip-speed ratio</title>
      <p id="d2e763">In conventional controllers, the WSE and most gain-scheduling and peak-shaving routines are dependent and often calibrated using performance information, where each entry is a function of <inline-formula><mml:math id="M23" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> and the collective pitch angle <inline-formula><mml:math id="M24" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, i.e. functions in the form “<inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>”.</p>
      <p id="d2e798">Moreover, optimal tip-speed ratio tracking control schemes are based on a constant <inline-formula><mml:math id="M26" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> set point in the partial-load region, which, to date, has been deemed to lead to optimal power extraction. The tip-speed ratio has effectively been used to define the aerodynamic state of reasonably rigid wind turbines. In fact, the aerodynamic performance is determined by the geometry of blade sections and angle of attack distribution, assuming Reynolds and Mach number variations are negligible (i.e. ignoring viscosity and compressibility effects on section aerodynamics). For a rigorous explanation, the reader is referred to the results of BEMT <xref ref-type="bibr" rid="bib1.bibx13" id="paren.35"/>.</p>
      <p id="d2e811">However, when loads deform the blade shape and, consequently, the geometry of the sections, aerodynamic performance is altered. This variation is not captured by the tip-speed ratio alone because the same value of the tip-speed ratio may correspond to different combinations of <inline-formula><mml:math id="M27" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M28" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>. Due to blade flexibility, the traditional use of tip-speed ratio to parameterise the performance of wind turbines becomes inadequate. Consequently, it is necessary to parameterise the aerodynamic performance coefficients using three arguments, i.e. decomposing <inline-formula><mml:math id="M29" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> into its components <inline-formula><mml:math id="M30" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M31" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula>.</p>
      <p id="d2e849">Two discrepancies with the actual aeroelastic behaviour of wind turbines arise when using aerodynamic performance coefficients parameterised on the tip-speed ratio for the design of conventional controllers: <list list-type="order"><list-item>
      <p id="d2e854">The tools used for performance calculations may not account for structural flexibility primarily in the form of blade deformations, neglecting the effects of such deformations on aerodynamic behaviour, as already noted in <xref ref-type="bibr" rid="bib1.bibx1" id="text.36"/>.</p></list-item><list-item>
      <p id="d2e861">The <inline-formula><mml:math id="M32" 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> look-up tables are often calculated by fixing the wind speed to a reference value <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, representing the <italic>average</italic> or <italic>rated</italic> atmospheric condition for the turbine, and varying the rotational speed, resulting in a <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">ref</mml:mi></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> surface. This assumes that the wind turbine performance is unaffected by variations in loading and Reynolds number, which can change with different wind speeds. As suggested in <xref ref-type="bibr" rid="bib1.bibx5" id="text.37"/>, a possible solution is to incorporate a third dimension when calculating <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> look-up tables.</p></list-item></list></p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Aerodynamic performance evaluation using rigid- and flexible-blade models</title>
      <p id="d2e946">To illustrate the discrepancies mentioned above, we compare <inline-formula><mml:math id="M36" 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="M37" 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> coefficients of the IEA 15 MW RWT using a rigid- and flexible-blade model. To balance computational effort and accuracy, the spacing in our grid is variable: it is refined in regions of particular interest – such as near the rated wind speed, where loads have a pronounced effect – and is coarser in less critical regions. We then use HAWCStab2 to obtain the steady-state coefficients over a three-dimensional grid with 27 000 operating points spanning various combinations of rotational speeds, wind speeds, and pitch angles. Specifically, the grid consists of the following: <list list-type="bullet"><list-item>
      <p id="d2e973">20 rotor speeds <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> (from <inline-formula><mml:math id="M39" display="inline"><mml:mn mathvariant="normal">2</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</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> in <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</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> steps, from <inline-formula><mml:math id="M42" display="inline"><mml:mn mathvariant="normal">5</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:mn mathvariant="normal">9.5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</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> in <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</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> increments, and from <inline-formula><mml:math id="M45" display="inline"><mml:mn mathvariant="normal">10</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:mn mathvariant="normal">16</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</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> in <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</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> steps)</p></list-item><list-item>
      <p id="d2e1108">30 wind speeds <inline-formula><mml:math id="M48" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula> (from <inline-formula><mml:math id="M49" display="inline"><mml:mn mathvariant="normal">2</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> steps, from <inline-formula><mml:math id="M52" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:mn mathvariant="normal">12.5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> increments, and from <inline-formula><mml:math id="M55" display="inline"><mml:mn mathvariant="normal">13</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:mn mathvariant="normal">26</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> in <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> steps)</p></list-item><list-item>
      <p id="d2e1261">45 pitch angles <inline-formula><mml:math id="M58" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> (from <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:math></inline-formula> to <inline-formula><mml:math id="M60" display="inline"><mml:mn mathvariant="normal">4.5</mml:mn></mml:math></inline-formula>° in <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> increments and from <inline-formula><mml:math id="M62" display="inline"><mml:mn mathvariant="normal">6</mml:mn></mml:math></inline-formula> to <inline-formula><mml:math id="M63" display="inline"><mml:mn mathvariant="normal">30</mml:mn></mml:math></inline-formula>° in <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="italic">°</mml:mi></mml:mrow></mml:math></inline-formula> increments).</p></list-item></list></p>
      <p id="d2e1323">No wind shear is considered here – i.e. we assume a spatially uniform inflow. This uniform inflow assumption arises from a limitation of HAWCStab2. In principle, it would be possible to incorporate wind shear by generating performance tables with a time-domain-based simulation tool such as HAWC2. However, creating such a large number of required operating points would be computationally infeasible.</p>
      <p id="d2e1326">The rigid model assumes infinitely stiff structures, while the flexible model considers fully flexible structures, where all linear and rotational deformation degrees of freedom are active. In the flexible model, each blade is divided into 20 sub-bodies using Timoshenko beam elements. These sub-bodies consist of two nodes with 6 degrees of freedom and coupled structural cross-sectional stiffness matrices <xref ref-type="bibr" rid="bib1.bibx39" id="paren.38"/>, allowing for large deformations and modelling of bend–twist coupling <xref ref-type="bibr" rid="bib1.bibx24" id="paren.39"/>. Table <xref ref-type="table" rid="T1"/> provides an overview of the models and settings used in HAWCStab2.</p>

<table-wrap id="T1" specific-use="star"><label>Table 1</label><caption><p id="d2e1341">IEA 15 MW RWT data and HAWCStab2 calculation settings. To obtain the HAWCStab2 rigid model from the original flexible model described in <xref ref-type="bibr" rid="bib1.bibx9" id="text.40"/>, the elements of the stiffness matrices of the blades are increased by several orders of magnitude.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="center"/>
     <oasis:colspec colnum="4" colname="col4" align="center"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col2">Key characteristics of IEA 15 MW </oasis:entry>
         <oasis:entry namest="col3" nameend="col4"/>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Installation</oasis:entry>
         <oasis:entry namest="col3" nameend="col4">Onshore </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Tower height</oasis:entry>
         <oasis:entry namest="col3" nameend="col4">130 m </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Hub height</oasis:entry>
         <oasis:entry namest="col3" nameend="col4">150 m </oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Rotor diameter</oasis:entry>
         <oasis:entry namest="col3" nameend="col4">240 m </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Rotor and tower design</oasis:entry>
         <oasis:entry namest="col3" nameend="col4">See <xref ref-type="bibr" rid="bib1.bibx9" id="text.41"/></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry namest="col1" nameend="col2">HAWCStab2 calculations settings. </oasis:entry>
         <oasis:entry colname="col3">Rigid model</oasis:entry>
         <oasis:entry colname="col4">Flexible model</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Tower</oasis:entry>
         <oasis:entry colname="col3">Stiff Timoshenko beam</oasis:entry>
         <oasis:entry colname="col4">Flexible Timoshenko beam – 10 sections</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">Blades</oasis:entry>
         <oasis:entry colname="col3">Stiff Timoshenko beam</oasis:entry>
         <oasis:entry colname="col4">Flexible Timoshenko beam – 20 sections</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e1475">Power coefficient <bold>(a)</bold> and thrust coefficient <bold>(b)</bold> contour surfaces obtained by varying rotational speed and wind speed for <inline-formula><mml:math id="M65" 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> in HAWCStab2 using the rigid model. Constant values can be found for both quantities along the iso-<inline-formula><mml:math id="M66" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> lines (grey lines), indicating that for rigid blades and fixed collective pitch angle, the performance is <italic>uniquely</italic> dependent on <inline-formula><mml:math id="M67" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula>. The rated operating point (white star) was obtained from <xref ref-type="bibr" rid="bib1.bibx9" id="text.42"/>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f02.png"/>

        </fig>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e1527">Power coefficient <bold>(a)</bold> and thrust coefficient <bold>(b)</bold> contour surfaces obtained by varying the rotational speed and wind speed for a constant collective pitch angle <inline-formula><mml:math id="M68" 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> in HAWCStab2 using the flexible model. Very different values can be found for both quantities along the iso-<inline-formula><mml:math id="M69" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> lines (grey lines), indicating that for flexible blades and fixed collective pitch angle, the performance is dependent on the <italic>exact combination</italic> of <inline-formula><mml:math id="M70" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M71" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula>. The rated operating point (white star) may not match the maximum power coefficient for this collective pitch angle configuration.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f03.png"/>

        </fig>

      <p id="d2e1581">Figures <xref ref-type="fig" rid="F2"/> and <xref ref-type="fig" rid="F3"/> show the power coefficient (<inline-formula><mml:math id="M72" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula>) and thrust coefficient (<inline-formula><mml:math id="M73" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>) values, obtained by fixing the pitch angle (<inline-formula><mml:math id="M74" 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>) and varying the wind speed (from 2 to 27 <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>) and rotational speed (from 2 to 16 <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="normal">min</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>) for a total of 600 combinations. The results are interpolated linearly on a finer grid for smoother variations in the analysed region. As expected from the discussion on tip-speed ratio, the rigid model (Fig. <xref ref-type="fig" rid="F2"/>) exhibits <inline-formula><mml:math id="M77" 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="M78" 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 that remain constant on constant tip-speed ratio lines. The results shown in Fig. <xref ref-type="fig" rid="F2"/> confirm that performance depends solely on the tip-speed ratio when using a purely aerodynamic solver (i.e. without the effects of deformations of blades) and neglecting Reynolds number variations along the blades.</p>
      <p id="d2e1674">Figure <xref ref-type="fig" rid="F3"/> presents the power coefficient (<inline-formula><mml:math id="M79" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula>) and thrust coefficient (<inline-formula><mml:math id="M80" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>) values obtained with the flexible model. In contrast to the observations from the rigid model, values exhibit nonlinear, decreasing trends along iso-<inline-formula><mml:math id="M81" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> lines. These differences stem from the coupled aerodynamic and structural response occurring in flexible blades: structural deformations introduce changes in the local angle of attack and in the relative wind velocity at the blade sections, causing deviations from the rigid-model predictions. The varying trends along the iso-<inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> lines in the flexible model highlight how flexibility-induced deformations impact both aerodynamic efficiency and loading. These effects become particularly pronounced at higher wind speeds and rotor speeds, where structural deformation is more significant. The trend is noticeable along all the iso-<inline-formula><mml:math id="M83" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> lines, including the iso-<inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula> line, which represents the partial-load operational tip-speed ratio of the IEA 15 MW RWT.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e1730">Comparison of performance, deformations, and load characteristics of the two models at steady state, obtained by varying wind speed and rotational speed along a constant tip-speed ratio line, corresponding to the value <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula>. All quantities were calculated using HAWCStab2.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f04.png"/>

        </fig>

      <p id="d2e1751">In Fig. <xref ref-type="fig" rid="F4"/>, the power coefficient (<inline-formula><mml:math id="M86" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula>) and thrust coefficient (<inline-formula><mml:math id="M87" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula>) are plotted against the wind speed along iso-<inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula> lines for both the rigid and the flexible models to showcase the relative discrepancies at the same tip-speed ratio. Figure <xref ref-type="fig" rid="F4"/> shows that both <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are constant when flexibility is neglected (blue line), whereas the fully flexible model (orange line) displays a substantial drop in power performance starting from <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">7.5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, with a more than 10 % reduction in  <inline-formula><mml:math id="M92" 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> compared to the rigid model's corresponding value at <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e1886">To illustrate how the structure of the blades changes, causing the reported reduction in power performance, two quantities representing structural deformations are shown: tip torsion in Fig. <xref ref-type="fig" rid="F4"/>c, indicating the structural twist of the blade tip section (positive when the structural twist decreases the angle of attack), and the out-of-plane (OoP) tip displacement in Fig.<xref ref-type="fig" rid="F4"/>d, which represents the distance of the blade tip section mid-chord point from the rotor plane, positive in the wind direction. From <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">7.5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> onwards, both these metrics exhibit significant differences compared to the values calculated with the rigid model.</p>
      <p id="d2e1917">The corresponding loads exerted on the rotor blades are shown in Fig. <xref ref-type="fig" rid="F4"/>e and f in the form of the flapwise bending moment at the root of the blades and the thrust force, respectively. When wind speed and rotational speed combinations produce rotor thrusts that exceed the peak value <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2750</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">kN</mml:mi></mml:mrow></mml:math></inline-formula> (as indicated in <xref ref-type="bibr" rid="bib1.bibx9" id="altparen.43"/>), the loads and deformations display highly nonlinear trends and influence one another. Under such conditions, large torsional deflections occur and, in turn, degrade performance while reducing loads. However, these operating points, corresponding to rotational speeds above <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:mn mathvariant="normal">9</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and wind speeds above <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:mn mathvariant="normal">13</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, lie well outside the normal steady-state operating conditions of the  IEA 15 MW RWT. Consequently, these extreme deformations are not expected during typical turbine operation and are therefore considered unrealistic.</p>
      <p id="d2e1980">The findings in this section on the coupling between blade loading, structural flexibility, and the aerodynamic performance of the rotor suggest that constant tip-speed ratio tracking, a common control strategy for smaller and more rigid turbines, may no longer be sufficient to control large, flexible wind turbines optimally. These results indicate that there is room to optimise the power coefficient by accounting for blade flexibility early in the process of control design. They also show that flexible-turbine calculations provide the opportunity for the incorporation of structural constraints once the set points are defined in a three-dimensional space of rotational speed <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, wind speed <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>V</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and pitch angle <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. Based on the results and conclusions drawn in this section, we develop a new control scheme aimed at maximising energy capture while limiting excessive structural deformations.</p>
      <p id="d2e2019">The first model of the new scheme is a set point optimisation framework named COFLEXOpt, providing optimal (constrained) control set points and control inputs used to create steady-state mappings for the feedforward and feedback modules of the control scheme. The next section elaborates on the set point optimiser.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>COFLEXOpt: control set point optimiser</title>
      <p id="d2e2031">This section introduces the COFLEXOpt set point optimiser, which determines optimal operational points for large, flexible wind turbines. In Sect. <xref ref-type="sec" rid="Ch1.S4.SS1"/>, we formulate the optimisation problem for selecting set points based on turbine performance metrics and then explain the structure and implementation of the solver. Then, in Sect. <xref ref-type="sec" rid="Ch1.S4.SS2"/>, we show an illustrative example of the solution of the optimisation problem for two different wind speeds. Finally, in Sect. <xref ref-type="sec" rid="Ch1.S4.SS3"/>, we carry out set point optimisation for different control strategies.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Optimisation problem definition</title>
      <p id="d2e2047">Recently, <xref ref-type="bibr" rid="bib1.bibx31" id="text.44"/> demonstrated a method for obtaining optimised operating points for wind turbines by solving an optimisation problem. In their study, steady-state set points were optimised by varying constraints, objective functions, and decision variables across different operating regions. As a consequence, the rated wind speed and operating regions were predefined. To simplify the optimisation setup and problem and possibly result in even more optimal solutions, our proposed framework solves the same optimisation problem to determine the set points, using a convex objective function over the entire operating range of a wind turbine – so in both partial- and full-load conditions. Notably, the decision variables in the optimisation problem remain unchanged over the entire range of operations. Hence, the subdivision of operating conditions into <italic>regions</italic> becomes irrelevant to the controller design. In addition, this optimiser allows us to impose constraints on various structural and operational quantities, such as thrust, blade deflection, tip-speed ratio, power output, and rotational speed, while still ensuring that an optimal solution is returned for each set of imposed constraints.</p>
      <p id="d2e2056">The general nonlinear optimisation problem can be written as follows:

            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M101" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:munder><mml:mtext>min</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:munder></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">obj</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">cut</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">in</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:mi mathvariant="normal">cut</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">out</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>.</mml:mo><mml:mi mathvariant="normal">t</mml:mi><mml:mo>.</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mi mathvariant="italic">&amp;</mml:mi><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">iq</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">eq</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M102" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> represents a wind speed within the operating range <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mtext>cut-in</mml:mtext></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:mi>V</mml:mi><mml:mtext>cut-out</mml:mtext></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">obj</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a suitable objective function; <inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are box constraints on the decision variables; and <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">iq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">eq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are inequality and equality vector constraints, respectively. The decision variables are the rotational speed <inline-formula><mml:math id="M111" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> and the collective pitch angle <inline-formula><mml:math id="M112" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>, as the performance of the wind turbine, including flexibility effects, can be expressed as functions of these variables and the wind speed. The versatility of this framework lies in the wide range of possible definitions for <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">obj</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">eq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">iq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. In particular, <inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">eq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">C</mml:mi><mml:mi mathvariant="normal">iq</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can include any metrics representable in the <inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> space. Since the tip-speed ratio is decomposed into two separate variables, one can incorporate nonlinear constraints dependent on actual operating conditions. Examples include structural deflections, peak thrust (as in peak-shaving strategies), load-alleviation targets (e.g. bounding the root flapwise bending moment), or blade-span-dependent quantities (e.g. limiting angle of attack or relative velocities). Regarding the objective function  <inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">obj</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, its formulation must yield unique and optimal solutions <inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> across the entire operating range. The primary objective is to maximise power capture (i.e. the power coefficient). The power output will also naturally be subject to an inequality constraint, ensuring the rated power is not exceeded. However, once the rated power limit is reached in the full-load region (i.e. <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">rated</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), infinitely many <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> combinations yield the power coefficient to produce the rated power, and the maximisation of the power coefficient is not sufficient to produce unique solutions.</p>
      <p id="d2e2535">To address this, we introduce a secondary term in the objective function, resolving the non-uniqueness of the solution. This technique, also suggested in <xref ref-type="bibr" rid="bib1.bibx17" id="text.45"/>, selects one point along the power coefficient isolines based on the minimisation of a secondary term in the objective function, resolving the non-uniqueness of the solution. In particular, this secondary term can have physical meaning: for example, if one selects the thrust coefficient, an increase in rotor loading is penalised in the optimal solution. Alternatively, one can penalise the torque coefficient, which ensures that the optimiser seeks the solution that yields the lowest rotor torque within the feasible region – helping to mitigate drivetrain loading. If the weight on this secondary term is kept sufficiently small, it effectively acts as a regularisation term while still retaining power maximisation as the primary objective. In our case, having defined custom inequality constraints that can include loads and structural deformations, we can directly target load alleviation through the imposition of limit (steady-state) values. As a result, we include only a small regularisation term in the objective function to ensure a limited impact on partial-load solutions. Hence, we propose maximising the power coefficient with a penalisation on the rotor torque coefficient for each wind speed <inline-formula><mml:math id="M123" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> as follows:

            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M124" display="block"><mml:mrow><mml:msub><mml:mi>f</mml:mi><mml:mi mathvariant="normal">obj</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Here, the first objective has a unity weight, and the selection of <inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> remains the only tuning variable. Tuning parameters such as the weight <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is not a straightforward task. A similar challenge is reported in the work of <xref ref-type="bibr" rid="bib1.bibx14" id="text.46"/>, where multiple tuning parameters were required to balance competing goals in the objective function of a model predictive control scheme for wind turbines. This highlights the difficulty in tuning such parameters, which often involves trial and error to achieve the desired system behaviour. In our case, the torque term regularises the objective function in the full-load region. In the selection of <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, we should consider that increasing <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> decreases the power coefficient in the partial-load region and is therefore chosen to be small. In the remainder of this work, we set <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.01</mml:mn></mml:mrow></mml:math></inline-formula>. Because the power coefficient surface is relatively flat around its maximum in partial-load conditions, this small weighting factor has a negligible impact on the optimal set points in that region. However, it is sufficient to ensure unique solutions in the full-load region by regularising the objective function.</p>
      <p id="d2e2696">The formulation and solution of the optimisation problem in the set point optimiser framework are shown in Fig. <xref ref-type="fig" rid="F5"/>. This figure illustrates the sequential steps in the optimisation process, starting from the initial calculation of performance metrics on a three-dimensional grid (upper-left block), followed by the generation of multi-variate B-splines to ensure smooth, continuous performance functions (upper-right block). These interpolated functions are then used to formulate the nonlinear programming (NLP) problem (lower-left block), which incorporates design constraints. The process concludes with the solution of this NLP, yielding optimised operating points for the entire turbine operating range (lower-right block). We implement the NLP process defined in Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) using CasADi and solve it with the IPOPT nonlinear solver <xref ref-type="bibr" rid="bib1.bibx46" id="paren.47"/>. The most general optimisation problem for determining set points across the entire operating range of a wind turbine is defined as in Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) with the objective function of Eq. (<xref ref-type="disp-formula" rid="Ch1.E7"/>), with the following constraints:

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M130" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the rated power, and <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">max</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the maximum admissible generator torque. The solution to this problem is represented by combinations of optimal values <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> for each wind speed <inline-formula><mml:math id="M134" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, gathered in set point mappings, which are then used in the feedback component of the controller.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e2860">Block diagram of COFLEXOpt. The framework begins with the calculation of steady-state wind turbine performance over a large and fine grid of operating points defined by combinations of rotational speed, wind speed, and collective pitch angle. These performance values are interpolated using multi-variate B-splines to create continuous and differentiable functions, which are then used in the NLP optimisation process. The NLP is solved for each wind speed under the imposed objective function and constraints and defines the control set points across the entire operating range of the wind turbine.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f05.png"/>

        </fig>

</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Illustrative example: optimisation working principles</title>
      <p id="d2e2877">Figure <xref ref-type="fig" rid="F6"/> illustrates the results of the optimisation process for two specific wind speeds, 10 and 11 <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, chosen to represent partial- and full-load operating conditions. This figure visually demonstrates how the optimiser finds the best operating points while satisfying the required constraints in the different operating regions of a wind turbine, as we remark that COFLEXOpt is agnostic to regions. In each case, the power coefficient and torque coefficient are plotted against rotational speed and collective pitch angle. Optimal solutions found by COFLEXOpt are represented with red stars.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e2901">Visualisation of the solutions obtained from the NLP optimisation described by Eq. (<xref ref-type="disp-formula" rid="Ch1.E8"/>) for <inline-formula><mml:math id="M136" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn mathvariant="normal">11</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The plots show the power coefficient (<inline-formula><mml:math id="M139" 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 torque coefficient (<inline-formula><mml:math id="M140" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) as functions of rotational speed (<inline-formula><mml:math id="M141" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>) and collective pitch angle (<inline-formula><mml:math id="M142" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>). The optimal solutions, <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, are marked with red stars, indicating the points that maximise <inline-formula><mml:math id="M144" 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> while satisfying the constraints. The grey-shaded areas represent regions that are infeasible due to these constraints. In subplot <bold>(c)</bold>, the feasible solution space is bounded by the red line, where <inline-formula><mml:math id="M145" 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> equals the rated power coefficient.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f06.png"/>

        </fig>

      <p id="d2e3056">The grey regions in each plot represent infeasible zones where one or more constraints are violated, such as limits on power or torque. These areas indicate combinations of <inline-formula><mml:math id="M146" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M147" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> that the optimiser cannot select, helping to emphasise the feasible solution space. The difference between plots (a) and (c) versus (b) and (d) lies in the objective for each wind speed condition. In partial load (10 <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>), the optimisation focuses on maximising the power coefficient, as seen in plot (a). However, in the full-load region, the rated power constraint leads to an infinite number of <inline-formula><mml:math id="M149" display="inline"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> combinations along the red line highlighted in Fig. <xref ref-type="fig" rid="F6"/>c. The objective function becomes strictly convex due to the <italic>small</italic> contribution given by the torque coefficient term, as demonstrated by the isocontours in Fig. <xref ref-type="fig" rid="F6"/>d. These figures highlight the different sensitivities of power and torque coefficients to variations in rotational speed and collective pitch angle, which is exploited to find unique solutions to the optimisation problem over the entire operating range of a wind turbine. The optimal solution, which minimises <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, is found at the upper boundary of the rotational speed <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. This is because, in the NLP solved in this work, constraints on rotational speed and generator torque were chosen according to values from <xref ref-type="bibr" rid="bib1.bibx9" id="text.48"/> to avoid major differences from the baseline controller design. For other applications of COFLEXOpt, such as optimising set points during the preliminary design of a wind turbine, relaxing these constraints is possible without sacrificing convergence capabilities.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Constrained set point optimisation for the IEA 15 MW turbine</title>
      <p id="d2e3146">In this section, we use COFLEXOpt to calculate set points for four different strategies, as summarised in Table <xref ref-type="table" rid="T2"/>. The first strategy corresponds to the <italic>reference</italic> approach, adopted for the IEA 15 MW RWT <xref ref-type="bibr" rid="bib1.bibx9" id="paren.49"/>, and is commonly referred to as <italic>optimal TSR tracking</italic>, where a fixed optimal TSR value <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>*</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> is prescribed for the partial-load region. The collective pitch angle is set to a minimum of 0°, and the following formulation of the optimisation problem is used to obtain rotational speed set points:

            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M153" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:munder><mml:mtext>min</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:munder></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mn mathvariant="normal">25</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>.</mml:mo><mml:mi mathvariant="normal">t</mml:mi><mml:mo>.</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mn mathvariant="normal">5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">7.55</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="italic">&amp;</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>∀</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi>V</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:mi>V</mml:mi><mml:mi mathvariant="normal">rated</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">15</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">MW</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">21.1</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">MN</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          Note that this <italic>fine-pitch</italic> optimisation is only able to increase the power coefficient when the tip-speed ratio is constrained by the minimum rotational speed in the partial-load region, with positive collective pitch angles. Under these assumptions, this strategy is not able to compensate for the flexibility effects illustrated in the previous section.</p>

<table-wrap id="T2" specific-use="star"><label>Table 2</label><caption><p id="d2e3486">Summary of the set point optimisation strategies analysed in this work. The reference strategy is the conventional TSR tracking scheme. The other strategies aim to maximise power production in the partial-load region while complying with increasingly tighter constraints on the blade out-of-plane tip displacement.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:colspec colnum="5" colname="col5" align="left"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">Strategy</oasis:entry>
         <oasis:entry colname="col2">Objective</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M154" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M155" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">β</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M156" display="inline"><mml:mrow><mml:mi mathvariant="normal">OoPtipdisp</mml:mi><mml:msub><mml:mo>.</mml:mo><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3">in partial load</oasis:entry>
         <oasis:entry colname="col4">in partial load</oasis:entry>
         <oasis:entry colname="col5"/>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Reference</oasis:entry>
         <oasis:entry colname="col2">See <xref ref-type="bibr" rid="bib1.bibx9" id="text.50"/></oasis:entry>
         <oasis:entry colname="col3">Fixed</oasis:entry>
         <oasis:entry colname="col4">Fixed</oasis:entry>
         <oasis:entry colname="col5">Free</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Case 1</oasis:entry>
         <oasis:entry colname="col2">Optimise <inline-formula><mml:math id="M157" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> with no constraints</oasis:entry>
         <oasis:entry colname="col3">Free</oasis:entry>
         <oasis:entry colname="col4">Free</oasis:entry>
         <oasis:entry colname="col5">Free</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Case 2</oasis:entry>
         <oasis:entry colname="col2">Constraint on blade tip disp. set to reference maximum</oasis:entry>
         <oasis:entry colname="col3">Free</oasis:entry>
         <oasis:entry colname="col4">Free</oasis:entry>
         <oasis:entry colname="col5">13.6 m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Case 3</oasis:entry>
         <oasis:entry colname="col2">Tighter constraint on blade tip disp.</oasis:entry>
         <oasis:entry colname="col3">Free</oasis:entry>
         <oasis:entry colname="col4">Free</oasis:entry>
         <oasis:entry colname="col5">10.0 m</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e3676">Case 1 optimises the power coefficient in the partial-load region without using a prescribed optimal tip-speed ratio and with no structural design constraints. The minimum collective pitch angle is set to <inline-formula><mml:math id="M158" display="inline"><mml:mo>-</mml:mo></mml:math></inline-formula>5°. Case 2 and Case 3 include upper limits on the OoP tip displacement at 13.6  and 10 m, respectively. The first value was chosen based on the maximum value observed in the reference strategy, while the tighter constraint was introduced to evaluate the performance of the framework. To our knowledge, no previous studies or proposed frameworks have the capability to constrain steady-state structural properties directly in the optimisation problem, such as OoP blade tip deflection, and this presents a significant contribution to COFLEXOpt. This quantity is relevant for the design of flexible wind turbines due to the risk of tower strikes. It showcases the implementation of a critical structural performance constraint in our set point optimiser <xref ref-type="bibr" rid="bib1.bibx45" id="paren.51"/>.</p>
      <p id="d2e3690">Figure <xref ref-type="fig" rid="F7"/> shows the resulting optimised set points (rotational speed, collective pitch angle, tip-speed ratio) and the corresponding steady states for generator torque, blade OoP tip displacement, and generator power for the four different strategies. While  the TSR values match for all cases (third plot) in the cut-in and full-load region, we observe that the optimal <inline-formula><mml:math id="M159" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> from COFLEXOpt varies across the partial-load region for all three cases. This again demonstrates that variable-<inline-formula><mml:math id="M160" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> regulations lead to improved performance, a tendency that is expected to intensify for more flexible rotors. The operating points of the collective pitch angle for Cases 1, 2, and 3 deviate from the reference values up to rated conditions. The optimisation framework allows pitching to stall, counteracting the effects of structural torsion on the blade and increasing the power output in the partial-load region, as shown in the generator power plot. A different trend is observed in the constrained strategies, where the blades pitch to feather to relieve thrust force and facilitate the decrease in OoP tip displacement. The wind turbine performance output with the current recalculated optimised operating points returns higher power, with gains up to 10 % for Case 1 and a consequent decrement of the rated wind speed.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e3711">Comparison of optimised operating points for rotational speed (<inline-formula><mml:math id="M161" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>), collective pitch angle (<inline-formula><mml:math id="M162" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>), tip-speed ratio (<inline-formula><mml:math id="M163" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula>), generator torque (<inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), out-of-plane tip displacement, and  power output (<inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>),  as obtained through the COFLEXOpt framework for different strategies (see Table 2). The plots cover wind speeds ranging from 5 to 15 m s<sup>−1</sup>. Each strategy reflects different optimisation priorities, with Case 1 focusing on maximising power output without constraints, Case 2 imposing a constraint on OoP tip displacement to match deflection levels of the reference strategy, and Case 3 imposing even more conservative load constraints. The percentage differences in power output are shown relative to the reference strategy, highlighting consistent improvements in power generation for Case 1 and Case 2. Case 2 is particularly interesting for achieving higher power output while maintaining similar blade deflection levels compared to the reference.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f07.png"/>

        </fig>

      <p id="d2e3776">Interestingly, the rated wind speed of Cases 1 and 3 assumes different values with respect to the reference one, a direct result of the optimisation problem and imposed constraints, and is not predefined. This shows the major capability of the framework to arrive at the optimal solution and sets a new standard for deriving operating strategies for flexible turbines.</p>
      <p id="d2e3779">We notice an interesting effect on the operating points when the OoP tip displacement limit is active in the partial-load region. Unlike a fixed tip-speed ratio strategy, COFLEXOpt allows for concurrent changes in the rotational speed and pitch angle to find the optimal compromise between reducing loads and maximising the power coefficient. In this case, our approach takes advantage of the different sensitivities of the power coefficient and thrust coefficient to variations in pitch and rotor speed. In Case 3, the OoP tip displacement is effectively constrained to 10 m, though this leads to power losses compared to the reference strategy. To correctly track the set points of the optimised strategies obtained with COFLEXOpt, we introduce a novel control scheme in the next section.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Feedforward–feedback control strategy</title>
      <p id="d2e3792">In this section, we describe the COFLEX control scheme. The diagram in Fig. <xref ref-type="fig" rid="F8"/> retraces the main components of the control strategy, consisting of an improved wind speed estimator for flexible turbines, a set point smoother, and a combined feedforward–feedback tracking control strategy.</p>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e3799">Block diagram of the control system architecture, illustrating the integration of the wind speed estimator, set point smoothing technique, and  feedforward–feedback controller. The diagram shows how the estimated wind speed (<inline-formula><mml:math id="M167" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>) is used in conjunction with COFLEXOpt look-up tables (LUTs) to determine the optimal set points for generator torque and collective pitch angle. The set point smoothing technique is employed to ensure smooth transitions between control modes, with the rotational speed set point bias (<inline-formula><mml:math id="M168" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) being a key element in smoothing the control signals. This figure provides an overview of the components and their interactions within the control system.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f08.png"/>

      </fig>

      <p id="d2e3831">In Sect. <xref ref-type="sec" rid="Ch1.S5.SS1"/> we show a methodology to estimate the wind speed. Section <xref ref-type="sec" rid="Ch1.S5.SS2"/> describes the generator torque and collective pitch angle controllers, discussing how the feedforward set point strategies listed in Table <xref ref-type="table" rid="T2"/> are tracked and how feedback terms correct deviations. Finally, Sect. <xref ref-type="sec" rid="Ch1.S5.SS3"/> introduces the set point smoothing technique that manages transitions between control regions.</p>
<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>Wind speed estimator</title>
      <p id="d2e3850">The wind speed estimator (WSE) employed in this work is part of the torque balance estimator class <xref ref-type="bibr" rid="bib1.bibx49 bib1.bibx27 bib1.bibx23" id="paren.52"/>. Under the assumptions of measurable generator torque and rotational speed and a known power coefficient performance of the turbine, an estimate of the aerodynamic torque (or also rotor torque <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) is used to derive an estimate of the rotor effective wind speed. The scheme used in this work is from <xref ref-type="bibr" rid="bib1.bibx23" id="text.53"/> and employs the dynamic balance of rotor and generator torque at the rotor shaft, with a feedback loop for providing the rotor effective wind speed. The WSE illustrated in the block diagram of Fig. <xref ref-type="fig" rid="F9"/> is structurally identical to that shown in <xref ref-type="bibr" rid="bib1.bibx23" id="text.54"/> and <xref ref-type="bibr" rid="bib1.bibx6" id="text.55"/>. We refer the reader to these works for the full derivation and details on this WSE.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e3881">Detailed block diagram of the wind speed estimator (WSE) used in this study, based on modifications to the scheme presented by <xref ref-type="bibr" rid="bib1.bibx7" id="text.56"/>. The WSE estimates the aerodynamic torque and wind speed by balancing rotor and generator torques, using a three-dimensional power coefficient table that accounts for blade flexibility.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f09.png"/>

        </fig>

      <p id="d2e3893">As demonstrated by <xref ref-type="bibr" rid="bib1.bibx6" id="text.57"/>, the accuracy of wind speed estimates at steady state depends largely on the uncertainty in the power coefficient table, which is usually a function of <inline-formula><mml:math id="M170" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M171" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>. As already demonstrated in Sect. <xref ref-type="sec" rid="Ch1.S3"/>, more accurate results can be obtained by using a flexible aeroelastic solver and removing the fixed tip-speed ratio approach to obtain a three-dimensional function for the power coefficient table, particularly when considering large and flexible wind turbines such as the  IEA 15 MW RWT. To increase the accuracy of the estimated rotor torque for large, flexible rotors, we implement a modification to the schemes found in the literature by using the newly obtained power coefficient tables <inline-formula><mml:math id="M172" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. To the authors' knowledge, this is the first effort to improve the accuracy of a torque-balance-based WSE with a three-dimensional power coefficient table. Now, the system equations of the wind speed estimator are given as

                <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M173" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mfenced open="{" close=""><mml:mtable class="cases" rowspacing="0.2ex" columnspacing="1em" columnalign="left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msup><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mi mathvariant="italic">π</mml:mi><mml:msup><mml:mi>R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>J</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow><mml:mi>J</mml:mi></mml:mfrac></mml:mstyle><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">P</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">I</mml:mi></mml:mrow></mml:msub><mml:mo movablelimits="false">∫</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mi>d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          where a constant value <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represents the mechanical efficiency between the rotor and the generator, and <inline-formula><mml:math id="M175" display="inline"><mml:mi>J</mml:mi></mml:math></inline-formula> is the total of the rotational inertia of the rotor, drivetrain, and generator shaft (recall that the IEA 15 MW RWT employs direct-drive technology). The estimated rotational acceleration <inline-formula><mml:math id="M176" display="inline"><mml:mover accent="true"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula> is used to obtain an estimated rotational speed <inline-formula><mml:math id="M177" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ω</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula>. A feedback loop with proportional and integral gains <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">P</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">I</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>) is used to obtain an estimate of the wind speed <inline-formula><mml:math id="M180" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula>.</p>
      <p id="d2e4209">To verify the improved performance of the WSE with an additional power coefficient table dimension, three time-domain simulations of the  IEA 15 MW RWT were performed with uniform wind steps of <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> ranging from 3 to 11 <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, with each step lasting 300 s. To analyse the accuracy of the steady-state wind speed estimation, we implemented a <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> scheme, selecting the gain <inline-formula><mml:math id="M184" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> according to the method in <xref ref-type="bibr" rid="bib1.bibx29" id="text.58"/>. The constant <inline-formula><mml:math id="M185" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> was calculated based on the optimal tip-speed ratio and corresponding maximum power coefficient prescribed by the IEA 15 MW RWT baseline design, reverting to the standard constant optimal tip-speed ratio assumption. In doing so, the steady-state behaviour is fully specified by the gain <inline-formula><mml:math id="M186" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> so that the generator torque controller does not rely on wind speed estimates. This approach decouples the steady-state performance of the WSE from other control routines, allowing us to evaluate the estimator without interference from the control tuning parameters. The <inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:mi>K</mml:mi><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> controller used in this section serves only as a convenient means to assess the WSE steady-state performance. Three different schemes for the WSE were analysed, as summarised in Table <xref ref-type="table" rid="T3"/>: the first, named <italic>rigid</italic>, is a WSE in which the <inline-formula><mml:math id="M188" 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> table was calculated with a rigid model and parameterised on tip-speed ratio and collective pitch angle; in the <italic>flex. 1</italic> WSE, the <inline-formula><mml:math id="M189" 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> table was calculated taking into account flexibility and parameterised on tip-speed ratio and collective pitch angle; and in <italic>flex. 2</italic>, the <inline-formula><mml:math id="M190" 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> table was calculated with flexibility and parameterised on wind speed, rotational speed, and collective pitch angle. All <inline-formula><mml:math id="M191" 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> tables were obtained using HAWCStab2 with the same models described in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>

<table-wrap id="T3"><label>Table 3</label><caption><p id="d2e4367">Summary of the wind speed estimator (WSE) configurations analysed in this study, showing the model type, the parameterisation of the power coefficient table <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and the maximum steady-state error in estimated wind speed <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula>. The three cases include (1) a rigid model using <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> calculated at a reference wind speed; (2) a flexible model with <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> calculated at the same reference wind speed; and (3) an enhanced flexible model with <inline-formula><mml:math id="M196" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to improve accuracy by capturing the effects of rotational speed, wind speed, and pitch angle variations.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="left"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1">WSE case</oasis:entry>
         <oasis:entry colname="col2">Model</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M197" 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="col4"><inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:mi mathvariant="normal">Max</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mo>|</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:msub><mml:mo>|</mml:mo></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2"/>
         <oasis:entry colname="col3">table</oasis:entry>
         <oasis:entry colname="col4">at steady state</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Rigid</oasis:entry>
         <oasis:entry colname="col2">Rigid</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">3.5 %</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Flex. 1</oasis:entry>
         <oasis:entry colname="col2">Flexible</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mo>|</mml:mo><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">2.5 %</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Flex. 2</oasis:entry>
         <oasis:entry colname="col2">Flexible</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>V</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">0.5 %</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e4689">As shown in Table <xref ref-type="table" rid="T3"/> and Fig. <xref ref-type="fig" rid="F10"/>, the WSE with the three-dimensional <inline-formula><mml:math id="M202" 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> table flex. 2 outperforms the first two schemes in estimating the wind speed value in this operating region, with lower mean errors at steady state. As seen in Fig. <xref ref-type="fig" rid="F10"/>, the rigid WSE shows a small steady-state error for low-wind-speed cases up to 7 m s<sup>−1</sup>. Flex. 1 is only able to estimate the wind speed with a small error in the neighbourhood of the wind speed, which was chosen to calculate the <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">λ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> table (<inline-formula><mml:math id="M205" display="inline"><mml:mrow><mml:mi>V</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>). The novel, improved scheme flex. 2 is able to estimate the wind speed at a steady state with a significantly smaller error due to the improved match of the estimated rotor torque in the WSE model with the simulation model. The speed of convergence of the estimate to its steady-state value in all three cases analysed here is essentially related to the choice of the gains  <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">P</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">W</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">I</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. When the WSE is integrated into a controller scheme (i.e. <inline-formula><mml:math id="M208" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula> is used to compute inputs to the controller), tuning of the gains is needed as they become part of a dynamic feedback loop.</p>

      <fig id="F10"><label>Figure 10</label><caption><p id="d2e4815">Evaluation of wind speed estimation accuracy with different WSE configurations. Percentage error in estimated wind speed (<inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:msub></mml:mrow></mml:math></inline-formula>) as a function of actual wind speed during a simulation with uniform wind steps ranging from 3 to 11 m s<sup>−1</sup>. Data points represent the average of the final 100 s of each wind step after reaching steady state. The flex. 2 results, obtained using HAWC2 simulations for the IEA 15 MW RWT, demonstrate the improved accuracy of using the three-dimensional <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> table to reduce estimation errors in the partial-load region.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f10.png"/>

        </fig>

</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Generator torque and collective pitch angle controllers</title>
      <p id="d2e4886">The generator torque and collective pitch angle controllers developed in this work implement feedforward set points parameterised on the wind speed estimate and, following well-established methodologies to control wind turbines <xref ref-type="bibr" rid="bib1.bibx4 bib1.bibx29" id="paren.59"/>, include two PI feedback controllers to regulate the rotor speed. A set point smoothing technique allows us to switch between the two controllers by forcing the inactive controller to saturation. The scheme in Fig. <xref ref-type="fig" rid="F11"/> shows the controller implementation.</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e4896">Block diagram detailing the implementation of the feedforward–feedback controller developed in this study. The controller uses feedforward set points derived from COFLEXOpt set point mappings and adjusts the generator torque and collective pitch angle outputs based on the estimated wind speed. Feedback contributions are calculated from the rotational speed error with proportional–integral (PI) controllers to improve stability and prevent model mismatch errors.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f11.png"/>

        </fig>

      <p id="d2e4905">The following control laws are implemented for the generator torque (<inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) and collective pitch angle (<inline-formula><mml:math id="M213" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula>) command inputs to the system:

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M214" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E11"><mml:mtd><mml:mtext>11</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">FF</mml:mi></mml:mrow><mml:mo>*</mml:mo></mml:msubsup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">FB</mml:mi></mml:mrow></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E12"><mml:mtd><mml:mtext>12</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="italic">β</mml:mi><mml:mo>=</mml:mo><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">FF</mml:mi><mml:mo>*</mml:mo></mml:msubsup><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">FB</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where the feedforward contributions <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msubsup><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">FF</mml:mi></mml:mrow><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">FF</mml:mi><mml:mo>*</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> are calculated with COFLEXOpt and are extracted from set point mappings as a function of estimated wind speed <inline-formula><mml:math id="M217" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:math></inline-formula> (as indicated by the functions <inline-formula><mml:math id="M218" display="inline"><mml:mrow><mml:mi>f</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M219" display="inline"><mml:mrow><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> in Fig. <xref ref-type="fig" rid="F11"/>). These quantities represent the desired steady-state set points for the entire operating range of the wind turbine and depend on the design requirements and optimisation strategy.</p>
      <p id="d2e5084">The feedback terms are calculated based on the rotational speed error, which is calculated as follows:

            <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M220" display="block"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>*</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          
          Thus, the feedback contributions are given by

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M221" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E14"><mml:mtd><mml:mtext>14</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">FB</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub><mml:mo movablelimits="false">∫</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E15"><mml:mtd><mml:mtext>15</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">FB</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub><mml:mo movablelimits="false">∫</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where the two gains for the generator torque contribution <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> must be defined so that <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">FB</mml:mi></mml:mrow></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> leads to acceleration of the rotor rotational speed when <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, while <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M227" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> must be defined so that <inline-formula><mml:math id="M228" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">FB</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is negative (i.e. the blades pitch towards stall, increasing the aerodynamic torque of the turbine) when <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. To satisfy controller performance requirements, such as overshoot and rise time, proper tuning of the gains <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Q</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">P</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:mi mathvariant="normal">I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is necessary.</p>
      <p id="d2e5441">At the same time, a bias <inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is introduced to the inactive controller set point through a switching logic. This technique for smoothing the set point in the switching region is implemented similarly to in <xref ref-type="bibr" rid="bib1.bibx1" id="text.60"/> and is explained in further detail in the following section.</p>
</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>Set point smoothing technique</title>
      <p id="d2e5468">A set point smoothing technique is described here to ensure a continuous transition between partial- and full-load operations. To this aim, a bias is introduced into the reference set points of the two controllers. This set point bias is used to force one of the two PI controllers to saturate when the other is active. When the generator torque PI controller is active, i.e. in the partial-load region, the pitch controller should be forced to its lower saturation limit. Vice versa, in the full-load region, the generator torque should reach its upper saturation limit. The set point smoothing technique is represented by the block scheme in Fig. <xref ref-type="fig" rid="F12"/>.</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e5475">Schematic representation of the set point smoothing technique used to manage transitions between control regions. The technique applies a rotational speed set point bias to either the generator torque or the collective pitch angle PI controller, depending on the operational region of the turbine. The smoothing function ensures that one controller is always saturated while the other is active.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f12.png"/>

        </fig>

      <p id="d2e5484">The following equations are used to calculate the contributions for the rotational speed set point bias <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M233" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E16"><mml:mtd><mml:mtext>16</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>Q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E17"><mml:mtd><mml:mtext>17</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">β</mml:mi><mml:mo>-</mml:mo><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">β</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub></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 mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> represent the upper saturation limits of the generator torque and collective pitch angle, respectively. In contrast, the function <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> represents the lower varying saturation limit for the collective pitch angle. We developed a new methodology to obtain <inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This function is introduced to ensure that the collective pitch angle correctly saturates to the prescribed set points in the partial-load region while preventing aerodynamically unstable behaviour in the full-load region and is obtained by solving a nonlinear programme similar to Eq. (<xref ref-type="disp-formula" rid="Ch1.E9"/>):

            <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M238" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:munder><mml:mi mathvariant="normal">argmin</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:munder><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi>w</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mi>Q</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>∀</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mn mathvariant="normal">25</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">s</mml:mi><mml:mo>.</mml:mo><mml:mi mathvariant="normal">t</mml:mi><mml:mo>.</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mn mathvariant="normal">5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">7.55</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">min</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">and</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mo>≤</mml:mo><mml:mi mathvariant="italic">β</mml:mi><mml:mo>≤</mml:mo><mml:mn mathvariant="normal">30</mml:mn><mml:mi mathvariant="italic">°</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mtext>OoP tip disp.</mml:mtext><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mfenced><mml:mo>≤</mml:mo><mml:msub><mml:mtext>OoP tip disp.</mml:mtext><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          without constraints on the maximum power and torque but imposing the same maximum level on OoP tip displacement of the chosen set point strategy. A key motivation for deriving the lower pitch saturation limit from the “reduced” optimisation in Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>) is to systematically obtain minimum pitch schedules that comply with the constraints imposed in COFLEXOpt-optimised operating points and to avoid stall. By defining an objective function that maximises aerodynamic efficiency (i.e. the power coefficient) and retaining the OoP tip displacement constraint, we ensure that at full load, the minimal-pitch operating point (for any rotor speed–wind speed combination) remains above the stall onset value. This preserves aerodynamic stability and avoids stalled blades even if the turbine briefly operates at that minimal pitch. In contrast, simpler schedules (e.g. setting <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to the pitch angle under rated conditions) may produce stalled conditions or violate tip displacement limits for wind speeds in full-load operations.</p>
      <p id="d2e5953">By solving this NLP, we obtain the two mappings <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> over the wind speed interval. The function <inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is used to track the collective pitch angle set points in the partial-load region while being compliant with the design requirement and producing stable operating points for the wind turbine in the full-load region. This function was calculated for each set point strategy obtained with COFLEXOpt and is represented for illustrative purposes in Fig. <xref ref-type="fig" rid="F13"/> for Cases 1 and 2.</p>

      <fig id="F13"><label>Figure 13</label><caption><p id="d2e6011">Collective pitch angle set points, and functions <inline-formula><mml:math id="M243" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, representing the varying saturation limit. These functions ensure that the collective pitch angle correctly saturates to the prescribed set points in the partial-load region while maintaining stable operation in the full-load region. These functions were calculated for different set point optimisation strategies, and they are plotted here for Case 1 and Case 2.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f13.png"/>

        </fig>

      <p id="d2e6037">The contributions to the set point bias calculated in Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>) and Eq. (<xref ref-type="disp-formula" rid="Ch1.E17"/>) are normalised and weighted so that the final value can be calculated as

            <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M244" display="block"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">rated</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          in which the two gains <inline-formula><mml:math id="M245" display="inline"><mml:mrow><mml:mo mathvariant="italic">{</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mo>+</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> are similar to the ones introduced in <xref ref-type="bibr" rid="bib1.bibx1" id="text.61"/> and can be tuned to regulate the smoothness of the transition from one PI controller to the other. The signal <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is also low-pass filtered to prevent high-frequency oscillations. In particular, we used a discrete-time first-order filter with a cut-off frequency of <inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.2</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">rad</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The sign of this function depends on which one of the two controllers is saturated. In the partial-load region, <inline-formula><mml:math id="M248" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, while if the generator torque is saturated, <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. A switching logic, which applies a bias to the two different set point inputs to the PI controllers, can be implemented based on the sign of <inline-formula><mml:math id="M252" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

                <disp-formula id="Ch1.Ex1"><mml:math id="M253" display="block"><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mfenced open="{" close=""><mml:mtable class="cases" rowspacing="0.2ex" columnspacing="1em" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>→</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mrow><mml:mtext>in collective pitch angle PI controller</mml:mtext><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">else</mml:mi><mml:mspace width="1em" linebreak="nobreak"/><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>→</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mrow><mml:mtext>in generator torque PI controller</mml:mtext><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e6407">In this way, in the partial-load region, the collective pitch angle controller receives a biased, higher set point <inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:msup><mml:mi>e</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi mathvariant="italic">ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which pushes the blades to pitch to stall, forcing the controller to its lower saturation limit (i.e. the function <inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:mi>j</mml:mi><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>). In the full-load region, the generator torque reaches its upper saturation limit <inline-formula><mml:math id="M256" display="inline"><mml:mrow><mml:msub><mml:mi>Q</mml:mi><mml:mrow><mml:mi mathvariant="normal">g</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">rated</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M257" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> changes sign, becoming positive. The switching logic applies a negative bias <inline-formula><mml:math id="M258" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub><mml:mo>|</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> to the generator torque controller, which, in the attempt of trying to decelerate the rotor, is forced to its upper saturation limit, and the collective pitch angle controller becomes active. In the transition zone, the alternating activation of the controllers is smoothed by the presence of a low-pass filter in the rotational speed bias. To ensure a smooth transition, the gains <inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mrow><mml:msub><mml:mi mathvariant="normal">bias</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> were re-tuned with respect to the values that can be found in <xref ref-type="bibr" rid="bib1.bibx1" id="text.62"/>.</p>
</sec>
<sec id="Ch1.S5.SS4">
  <label>5.4</label><title>Integration of WSE, controllers, and set point smoother</title>
      <p id="d2e6535">The integration of the WSE, the set point smoothing technique, and the PI controllers leads to the novel control scheme for large, flexible wind turbines shown in Fig. <xref ref-type="fig" rid="F14"/>.</p>

      <fig id="F14" specific-use="star"><label>Figure 14</label><caption><p id="d2e6542">Block diagram of the novel control scheme for large, flexible wind turbines, showing the integration of the wind speed estimator, set point smoothing technique, and feedforward–feedback controllers.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f14.png"/>

        </fig>

      <p id="d2e6551">This control scheme leverages feedforward action to achieve the desired set points, while feedback loops work to enhance stability, correct (tracking) errors, and add resiliency to disturbances and noise. However, its overall tracking performance is dependent on the accuracy of the internal power coefficient table. The wind speed estimation relies on this table, so any bias in the power coefficient data propagates into the estimates. As demonstrated by <xref ref-type="bibr" rid="bib1.bibx6" id="text.63"/>, for the WSE-TSR tracking scheme, whenever the controller’s reference is scheduled based on wind speed estimates, the system converges to a steady state that reflects this bias. In other words, the controller is capable of tracking a reference, but the reference itself is shifted from the true optimal operating point. This is essentially the same phenomenon encountered in standard tip-speed ratio tracking, where the optimal set point is also calculated offline using nominal aerodynamic data; if the real performance deviates from these nominal data, the turbine will no longer operate at the true optimum. Our scheme will similarly be affected by inaccuracies in the internal power coefficient table, even though it maintains effective reference tracking. A potential mitigation of the bias introduced by modelling inaccuracies would be to schedule the feedforward input on an independent measurement of the rotor average wind speed – such as lidar measurements – or by combining such measurements with the estimated values. Alternatively, one can update the aerodynamic model (used in both the controller and the estimator) to represent the actual, possibly degraded aerodynamic properties of the wind turbine using online learning algorithms <xref ref-type="bibr" rid="bib1.bibx26" id="paren.64"/>.</p>
      <p id="d2e6561">The capabilities of this novel scheme to allow for a smooth transition between the two PI controllers are visualised in Fig. <xref ref-type="fig" rid="F15"/>, where the behaviour of the controller is analysed in a time-domain simulation. This analysis was performed using the characteristics of the flexible model described in Sect. <xref ref-type="sec" rid="Ch1.S2"/>, in the time-domain wind turbine aeroelastic simulator HAWC2. In this example, the controller tracks the optimised set point strategy defined by Case 2. The transition between the partial-load and full-load controllers is expected to occur at a wind speed of approximately 10.5 m s<sup>−1</sup> (see Fig. <xref ref-type="fig" rid="F7"/>). To observe this transition in detail, we extracted a 40 s segment from a 1000 s simulation carried out with a turbulent wind field and wind shear, capturing the moment when the rotor’s average wind speed crosses the rated wind speed.</p>

      <fig id="F15" specific-use="star"><label>Figure 15</label><caption><p id="d2e6584">Quantities extracted from a time-domain simulation of the IEA 15 MW RWT with turbulent wind and wind shear, performed in HAWC2 with the implementation of the novel control scheme, showing the behaviour of control inputs and set point smoothing technique values near the transition from partial load to full load. The vertical dashed line at <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">505</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>s</mml:mtext></mml:mrow></mml:math></inline-formula> marks the transition from generator torque control to collective pitch control in the full-load region. <bold>(a)</bold> Rotor average wind speed (light grey) and estimated wind speed (dark grey). <bold>(b)</bold> Ideal feedforward collective pitch angle scheduled on the actual rotor average wind speed (light grey), feedforward scheduled on the estimated wind speed (dark grey), and the controller pitch command (green).  <bold>(c)</bold> Ideal feedforward generator torque scheduled on the actual rotor average wind speed (light grey), feedforward input scheduled on the estimated wind speed (dark grey), and the actual generator torque command (green). <bold>(d)</bold> Rotational speed error <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msub><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (black), biased error <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:msubsup><mml:mi>e</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow></mml:math></inline-formula> (red), and the set point smoothing technique bias <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (blue).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f15.png"/>

        </fig>

      <p id="d2e6662">Figure <xref ref-type="fig" rid="F15"/>a compares the rotor average wind speed (light grey) with its corresponding estimate (dark grey). Overall, the two signals align well, though the estimated value shows some high-frequency oscillations that likely stem from noise in the WSE input signals and the calibration of the WSE. Brief discrepancies also occur (e.g. near <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">510</mml:mn></mml:mrow></mml:math></inline-formula> s), which may be attributed to dynamic effects or degrees of freedom not captured by the internal model used in the WSE. To prevent the high-frequency oscillations from directly exciting the actuators, we apply a first-order low-pass filter with a cut-off frequency of <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mn mathvariant="normal">0.5</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi mathvariant="normal">rad</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> to the feedforward inputs. Figures <xref ref-type="fig" rid="F15"/>b and c show the feedforward pitch and torque commands, respectively, scheduled on the true rotor average wind speed (light grey), the estimated wind speed (dark grey), and the actual controller outputs (green). Up to <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">505</mml:mn></mml:mrow></mml:math></inline-formula> s, the turbine remains in partial-load operation: the collective pitch angle closely follows the feedforward command, which in turn tracks the ideal feedforward value reasonably well. Near <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">505</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula>, the generator torque saturates (Fig. <xref ref-type="fig" rid="F15"/>c) to maintain rated power. At that moment, the estimated wind speed in Fig. <xref ref-type="fig" rid="F15"/>a reaches around <inline-formula><mml:math id="M270" display="inline"><mml:mn mathvariant="normal">10.7</mml:mn></mml:math></inline-formula> m s<sup>−1</sup>, matching the expected rated condition. Figure <xref ref-type="fig" rid="F15"/>d illustrates how the set point bias <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="normal">bias</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (blue) ensures a smooth transition from torque to pitch control. Before <inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">505</mml:mn></mml:mrow></mml:math></inline-formula> s, the bias is negative, keeping the collective pitch angle saturated at its lower limit and allowing the torque controller to be active. As the system approaches rated, the bias crosses zero and effectively drives the generator torque into saturation, activating the collective pitch controller. This gradual shift avoids abrupt changes in control action and demonstrates that the combined feedforward–feedback strategy can successfully handle transitions to full-load operation, even under turbulent inflow.  Finally, while the overall dynamic performance is satisfactory, further gain scheduling or fine-tuning of the WSE and PI loops could improve transient behaviour and reduce any remaining high-frequency pitch or torque activity.</p>
      <p id="d2e6782">The next section delves deeper into the validation of the proposed COFLEX control scheme through time-domain simulations with uniform wind step inputs and turbulent wind fields.</p>
</sec>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Results</title>
      <p id="d2e6794">In this section, we present the results of time-domain simulations carried out to verify the effectiveness and robustness of the newly developed control strategy for large, flexible wind turbines. In Sect. <xref ref-type="sec" rid="Ch1.S6.SS1"/>, we assess the COFLEX control scheme using uniform wind step simulations. Step responses are commonly used in controller design to evaluate dynamic transient response, particularly in terms of performance and stability. In our case, these tests serve multiple purposes: to verify the controller functionality of the controller across the full operating range – including partial- and full-load regions and the transition between them – and, most importantly, to confirm that the operational strategy defined by COFLEXOpt mappings is consistently maintained through the proposed control scheme, as evaluated with full aeroelastic HAWC2 simulations. Then, in Sect. <xref ref-type="sec" rid="Ch1.S6.SS2"/>, we analyse the simulations carried out with turbulent wind fields to test the controller under more realistic operating conditions for a wind turbine.</p>
      <p id="d2e6801">The following subsections  detail the specific simulation setups, the methods used to analyse the performance, and the comparisons made with reference values obtained from COFLEXOpt results shown in Fig. <xref ref-type="fig" rid="F7"/>. The model used for the time-domain simulations is equivalent to the flexible model described in Table <xref ref-type="table" rid="T1"/>. The tool used to perform the simulation is HAWC2, a mid-fidelity aeroelastic code capable of handling coupled structural deformations of the blades, which has already been employed to calculate the performance of the same wind turbine in <xref ref-type="bibr" rid="bib1.bibx32" id="text.65"/>.</p>
<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>Time-domain simulations: uniform wind cases</title>
      <p id="d2e6818">Four 2500 s simulations were carried out with incremental wind speed steps of 1 <inline-formula><mml:math id="M274" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> every 100 s, starting from an initial wind speed of 3 m s<sup>−1</sup> up to 25 m s<sup>−1</sup>, for each set point strategy. These simulations, which included an initialisation period of 200 s to settle down transient behaviour, were used to test the controller step response.</p>

      <fig id="F16" specific-use="star"><label>Figure 16</label><caption><p id="d2e6864">Time series of rotational speed, collective pitch angle, and tip-speed ratio for the four different strategies in time-domain simulations performed with HAWC2, with uniform wind steps. The plots demonstrate the control system’s ability to follow different set point strategies and maintain stable operation across varying wind speeds.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f16.png"/>

        </fig>

      <p id="d2e6873">The time series of rotational speed, collective pitch angle, and tip-speed ratio are shown in Fig. <xref ref-type="fig" rid="F16"/>, excluding the initialisation period. In the first 500 s, all control strategies correctly track the minimum rotational speed (<inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">min</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>), with relatively high overshoots (around 10 %), while the collective pitch angle is set to the same values to maximise the power coefficient. From <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">500</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">s</mml:mi></mml:mrow></mml:math></inline-formula> onwards, the four cases follow different set point strategies for both rotational speed and collective pitch angle. In all cases, varying trends on the overshoot and settling time values suggest that gain scheduling <xref ref-type="bibr" rid="bib1.bibx1" id="paren.66"><named-content content-type="pre">see</named-content></xref> could be employed to improve the dynamics of the controller and is devoted to future work. The focus of this paper is to establish a novel control strategy for flexible turbines, and, therefore, we are interested in analysing the trends in steady-state performance.</p>
      <p id="d2e6916">During the simulation, the final 10 s for each 100 s interval was used to calculate the steady states of selected variables. These steady states (dots), obtained using the FF–FB control scheme in HAWC2 simulations, are presented in Fig. <xref ref-type="fig" rid="F17"/> with respect to the input wind speeds (uniform and constant) in the same intervals and are compared to the prescribed operating points (lines) calculated through COFLEXOpt.</p>

      <fig id="F17" specific-use="star"><label>Figure 17</label><caption><p id="d2e6923">Comparison of steady states (dots) calculated from the time-domain HAWC2 simulation and prescribed operating points (lines) from COFLEXOpt based on HAWCStab2 linearisations for the four different strategies. Steady-state trends match the expected operating points, meaning that the novel controller is able to track the set points for the entire operating range of the  IEA 15 MW RWT.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f17.png"/>

        </fig>

      <p id="d2e6932">These results demonstrate that, in time-domain simulations, COFLEX accurately tracks the set points calculated with COFLEXOpt for all variables of interest. The trends observed in the mean values of control variables, including rotational speed, collective pitch angle, and generator torque, follow the strategies prescribed by COFLEXOpt. This novel approach, which uses a variable tip-speed ratio and collective pitch angle, allows for maximising power production while respecting the blade tip displacement constraint.</p>
      <p id="d2e6935">The generator torque reaches saturation above <inline-formula><mml:math id="M279" display="inline"><mml:mrow><mml:mn mathvariant="normal">11</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> for Cases 1 and 2 but not for Case 3, in which the tighter constraint on tip displacement increases the wind speed at which the rated power is produced up to <inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:mn mathvariant="normal">12</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The steady-state maximum values of tip displacement for Case 2 and Case 3 result in 14.1 m (<inline-formula><mml:math id="M281" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>3.5 %) and 10.6 m (<inline-formula><mml:math id="M282" display="inline"><mml:mo lspace="0mm">+</mml:mo></mml:math></inline-formula>6.0 %), respectively, showing a slight positive discrepancy. For all cases and each wind speed, the OoP tip displacement is slightly underestimated in the steady states calculated through COFLEXOpt. This small difference can be attributed to different factors: a discrepancy in the steady-state blade deflection calculation for HAWC2 and HAWCStab2, which was deemed small but not directly quantified in the comparison of the tools <xref ref-type="bibr" rid="bib1.bibx42" id="paren.67"/>, and nonlinear dynamic effects, which were only taken into account by HAWC2.</p>
      <p id="d2e6995">Some differences are also present in the generator torque and collective pitch angle set points (see e.g. Case 3 generator torque and Case 1 collective pitch angle at wind speeds near rated). These differences can be attributed to the activation of the switching logic and the resulting set point bias affecting the system behaviour. The potential of the new control scheme to track the optimised set points in realistic turbulent wind conditions is provided in the next section with the analysis of turbulent wind cases.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Time-domain simulations: turbulent wind cases</title>
      <p id="d2e7006">To evaluate the performance of the controller under more realistic operating conditions, turbulent wind cases were defined following the design load case (DLC) 1.1 as specified in IEC 61400-1 for wind class IB <xref ref-type="bibr" rid="bib1.bibx16" id="paren.68"/>. A series of 1000 s simulations was performed with mean wind speeds ranging from 3 to 25 m s<sup>−1</sup> (one simulation every metre per second) and turbulence intensity in accordance with IEC standards, using six different seeds for the turbulence box generator (for a total of 138 simulations for each control strategy). The turbulent wind fields were generated using the Mann turbulence box generator integrated within HAWC2. Additionally, a power‐law vertical wind shear was applied with an exponent of 0.2.</p>
      <p id="d2e7024">For each simulation, only the last 600 s was used in the analysis to eliminate initialisation dynamics. Simulations were grouped for each control strategy and subdivided into small time intervals of 10 s. Then, the means of the individual performance metrics were calculated in these intervals and binned with respect to the average wind speed of the rotor, with a uniform bin length of 1 <inline-formula><mml:math id="M284" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e7044">A statistical analysis was performed, and the distribution of selected performance metrics is shown for the control strategies Case 1 and Case 2 in Figs. <xref ref-type="fig" rid="F18"/> and  <xref ref-type="fig" rid="F19"/> within a wind speed range of 5 to 15 m s<sup>−1</sup>. In these figures, the dotted lines represent the prescribed operating points from COFLEXOpt for the same control strategy, calculated using the rotor average wind speed <inline-formula><mml:math id="M286" display="inline"><mml:mi>V</mml:mi></mml:math></inline-formula>, while the dashed grey lines (corresponding to the right <inline-formula><mml:math id="M287" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> axis) indicate the differences between the median values for each bin and the prescribed values at each bin's midpoint. The boxplots depict the distribution of the performance metrics averaged over 10 s intervals for each wind speed bin, with indications of quartiles (the filled boxes with a central line represent the 25 % quartile, the median, and the 75 % quartile), minimum and maximum values (whisker limits), and outliers (triangles).</p>

      <fig id="F18" specific-use="star"><label>Figure 18</label><caption><p id="d2e7080">Statistical analysis of performance metrics under turbulent wind conditions for the Case 1 control strategy. The boxplots represent the distribution of average performance metrics over 10 s intervals, categorised into wind speed bins of 1 <inline-formula><mml:math id="M288" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The filled boxes indicate the 25th, 50th (median), and 75th percentiles, with whiskers extending to the minimum and maximum values of the distribution and triangles marking outliers. The dotted lines correspond to the prescribed operating points from COFLEXOpt for the same control strategy, while the dashed grey lines (associated with the right <inline-formula><mml:math id="M289" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> axes) represent the errors between the median values and the optimiser's set points for each wind speed bin midpoint. Although a slight discrepancy in wind speed estimates is present, the deviations between median values and prescribed operating points remain minimal across other metrics.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f18.png"/>

        </fig>

      <fig id="F19" specific-use="star"><label>Figure 19</label><caption><p id="d2e7115">Statistical analysis of performance metrics under turbulent wind conditions for the Case 2 control strategy. The boxplots represent the distribution of average performance metrics over 10 s intervals, categorised into wind speed bins of 1 <inline-formula><mml:math id="M290" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. The filled boxes indicate the 25th, 50th (median), and 75th percentiles, with whiskers extending to the minimum and maximum values of the distribution and triangles marking outliers. The dotted lines correspond to the prescribed operating points from COFLEXOpt for the same control strategy, while the dashed grey  lines (associated with the right <inline-formula><mml:math id="M291" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> axes) represent the errors between the median values and the optimiser's set points for each wind speed bin midpoint. As demonstrated by the small deviations between median values and prescribed operating points in all control and output variables, COFLEX confirms its suitability for real-world scenarios, where compliance with constraints is essential.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f19.png"/>

        </fig>

      <p id="d2e7148">For both strategies, the median values of the estimated wind speed (<inline-formula><mml:math id="M292" display="inline"><mml:mover accent="true"><mml:mi>V</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover></mml:math></inline-formula>) are consistently higher than those of the actual wind speed. This discrepancy is around 10 % at very low wind speeds, decreases to approximately 5 % near the rated wind region, and then increases again linearly in the full-load region. This consistent, positive bias was not observed in previous analyses and is likely driven by local wind speed fluctuations due to wind shear and turbulence. Our wind speed estimator uses a torque balance approach, matching the measured generator torque to an estimated rotor torque, recalling the system of Eq. (<xref ref-type="disp-formula" rid="Ch1.E10"/>). Under wind shear and turbulence, the contribution of blade sections to the total torque depends on the local velocities. Hence, the effective wind speed, which produces the rotor torque, differs from the arithmetic mean across the rotor disc. As a result, the WSE estimates an effective wind speed that differs from the rotor average wind speed, which is used as a reference here. However, this bias does not degrade the performance of the controller. In a practical scenario, the controller must adapt to this effective wind speed; the control scheme of COFLEX still holds, as our set point mappings and feedforward inputs rely on precisely this torque-based wind speed estimate.</p>
      <p id="d2e7163">Both the collective pitch angle and the generator torque exhibit differences relative to the set points, with similar magnitudes and trends across the two analysed control strategies. These differences can  largely be attributed to the bias between the estimated wind speed and the rotor average wind speed resulting from the simulator used for binning. This directly impacts the feedforward component in the control loop, especially at low wind speeds. Despite these discrepancies, the median values of the OoP tip displacement closely follow the steady-state values calculated by the set point optimiser, with a high degree of accuracy (less than 10 % difference across the analysed operating range). In Case 2, the expected constraint on the median value of the OoP tip displacement is satisfied with a deviation of less than 1 %.</p>
      <p id="d2e7166">While constraining the steady-state OoP tip displacement helps reduce average deflection levels, more advanced control techniques remain necessary to mitigate the transient effects that drive the maximum values – and thus the tower‐strike risk. Consequently, imposing a strict limit on the maximum displacement would require a different control approach, such as online set point optimisation <xref ref-type="bibr" rid="bib1.bibx30" id="paren.69"/> or advanced individual pitch control <xref ref-type="bibr" rid="bib1.bibx22" id="paren.70"/>, which can explicitly predict and counteract such extremes. Nonetheless, to address the safety margin in a stochastic way, one could modify the constraint in COFLEXOpt by incorporating a precomputed variance around the median displacement. This would allow designers to ensure, a priori, that the probability of exceeding the maximum allowable OoP tip displacement remains within an acceptable margin.</p>
      <p id="d2e7176">The generator torque is correctly saturated in the full-load region for both strategies. Finally, we observe an interesting effect on the generator power median values in the partial-load region, where these values consistently exceed the prescribed operating points. These trends align with studies on the effects of turbulence intensity on the power production of wind turbines in the partial-load region <xref ref-type="bibr" rid="bib1.bibx33" id="paren.71"/>.</p>
      <p id="d2e7182">Figure <xref ref-type="fig" rid="F20"/> compares the median values of OoP tip displacement (top panel) and generator power (bottom panel), both normalised by the reference strategy, for the new strategies across wind speeds from 5 to 15 m s<sup>−1</sup>. For Case 1 and Case 2, we observe that the generator power increases by approximately 5 % relative to the reference, at the expense of higher tip displacements in the partial-load region. In particular, Case 1 shows OoP tip displacements as much as 30 % above the reference at rated wind speed, which aligns with the prescribed operating points. In Case 2, the displacement constraint is active around <inline-formula><mml:math id="M294" display="inline"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, as indicated by the orange bars converging toward unity in the top panel near <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mn mathvariant="normal">11</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Case 3 follows a similar pattern at lower wind speeds (below <inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>), but the tighter constraint on tip displacement results in values around 25 % below the reference near the rated wind speed and a corresponding lower power output in that range. All three cases behave similarly to the reference controller in full-load operations. Overall, these trends confirm that the set points derived via COFLEXOpt can be effectively tracked in turbulent inflow scenarios.</p>

      <fig id="F20"><label>Figure 20</label><caption><p id="d2e7261">Median out-of-plane tip displacement <bold>(a)</bold> and generator power <bold>(b)</bold>, both normalised by the values obtained with the reference strategy for each wind speed bin across wind speeds of 5 to 15 <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>. Bars represent 10 s median values obtained from six 600 s HAWC2 simulations under realistic turbulence, grouped into 1 <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> bins. The reference strategy values (unity) are shown in grey, while Case 1 (blue),  Case 2 (orange), and Case 3 (yellow) represent the values obtained with the new strategies. In Cases 1 and 2, power increases relative to the reference, but tip displacements rise by up to 30 % in partial-load operation. Case 3 exhibits a 25 % reduction in tip displacement near rated wind speed, associated with generally lower generator power.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/1303/2025/wes-10-1303-2025-f20.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S7">
  <label>7</label><title>Conclusions</title>
      <p id="d2e7319">This work introduces COFLEX: a novel set point optimisation and control strategy for large, flexible wind turbines, addressing the limitations of conventional methods. Unlike traditional strategies that rely on a fixed tip-speed ratio and fixed collective pitch angle, our approach optimises set points for varying rotational speed, pitch angle, and generator torque across the turbine’s full operational range without the need to predefine operating regions.</p>
      <p id="d2e7322">The first module of COFLEX, the set point optimiser COFLEXOpt, was used to obtain new control strategies for the  IEA 15 MW RWT turbine and compare them to the reference fixed tip-speed ratio tracking scheme. Using COFLEXOpt, we derived variable tip-speed ratio and collective pitch angle schedules for power maximisation, with and without constraints on blade out-of-plane tip displacement. In one of the analysed cases, we achieved  up to an 8 % increase in generator power across the partial-load region compared to the reference strategy. Additionally, we demonstrated the ability to incorporate constraints on structural and operational requirements in COFLEXOpt, such as limiting out-of-plane tip displacement. For the case where the blade deflection limit matched the maximum value from the reference strategy, we still observed an increase in generator power of about 5 %.</p>
      <p id="d2e7325">A feedforward–feedback controller was designed to track the optimised set points, relying on a new, more accurate wind speed estimator algorithm that uses three-dimensional <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> tables, parameterised on rotational speed, wind speed, and collective pitch angle. A set point smoothing technique was developed to allow for a seamless transition between the partial- and full-load operations of a wind turbine.</p>
      <p id="d2e7339">Time-domain simulations were employed to validate the capabilities of the controller under various wind conditions and in the transition region. The wind step response simulations indicated that the controller effectively reached the steady states prescribed by COFLEXOpt schedules across the entire operating range and that it was able to operate smoothly in the transition region. A statistical analysis of the performance of the control scheme under turbulent wind conditions was carried out to evaluate its robustness in more realistic operating scenarios. Selected performance metrics were analysed in the operating range with a mean wind speed from 5 to 15 m s<sup>−1</sup>. Despite a slight wind speed estimation bias, which may be attributed to the difference in the estimated effective wind speed and rotor average wind speed, the controller maintained tracking of rotor speed, generator torque, and collective pitch angle under turbulent conditions. The median values of rotor speed across different wind speeds were generally contained within a small margin (with an error of 5 %) with the desired set points. Generator torque and collective pitch angle outputs were similarly accurate, with small deviations.</p>
      <p id="d2e7355">Moreover, the controller effectively achieved the expected out-of-plane tip displacement and generator power steady states across different wind conditions. The analysis showed that the out-of-plane tip displacement and generator power closely tracked the optimised set points derived from COFLEXOpt. The ability to reach the desired steady states highlights the potential of the novel control scheme to enhance performance while complying with structural integrity in large, flexible wind turbines.</p>
      <p id="d2e7358">Looking forward, this framework could be leveraged for the co-design of large, flexible wind turbines, integrating structural and control variables from the earliest design stages. Additionally, the control scheme of COFLEX can be adapted to perform online set point optimisation to limit the maximum values reached in dynamic situations – such as wind gusts – that can suddenly increase out-of-plane tip displacement.</p>
</sec>

      
      </body>
    <back><notes notes-type="codedataavailability"><title>Code and data availability</title>

      <p id="d2e7365">Code and data are available in a public repository (<ext-link xlink:href="https://doi.org/10.5281/zenodo.11191546" ext-link-type="DOI">10.5281/zenodo.11191546</ext-link>, <xref ref-type="bibr" rid="bib1.bibx20" id="altparen.72"/>).</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e7377">GL, JDG, TGB, FC, and SPM conceptualised this research and established the methodology. GL, JDG, TGB, and SPM developed COFLEX and COFLEXOpt. GL ran all simulations. GL and VDM post-processed data from the simulations. DDT and SPM provided feedback on the methodology. GL prepared the original draft with contributions from all authors, which was then reviewed by all authors.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

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

      <p id="d2e7389">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. While Copernicus Publications makes every effort to include appropriate place names, the final responsibility lies with the authors.</p>
  </notes><notes notes-type="sistatement"><title>Special issue statement</title>

      <p id="d2e7395">This article is part of the special issue “NAWEA/WindTech 2024”. It is a result of the NAWEA/WindTech 2024, New Brunswick, United States, 30 October–1 November 2024.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e7402">The authors acknowledge the contribution to the development of COFLEX by Markel Meseguer San Martin and Ebbe Nielsen from the European Innovation Center under the Shanghai Electric Wind Power Group.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e7407">This research has been supported by the TKI Wind op Zee (grant no. TKITOE WOZ  2309 TUDELFT COCOFLEX).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e7413">This paper was edited by Amir R. Nejad and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Abbas et al.(2022)Abbas, Zalkind, Pao, and Wright</label><mixed-citation>Abbas, N. J., Zalkind, D. S., Pao, L., and Wright, A.: A reference open-source controller for fixed and floating offshore wind turbines, Wind Energ. Sci., 7, 53–73, <ext-link xlink:href="https://doi.org/10.5194/wes-7-53-2022" ext-link-type="DOI">10.5194/wes-7-53-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Andersson et al.(2019)Andersson, Gillis, Horn, Rawlings, and Diehl</label><mixed-citation>Andersson, J. A. E., Gillis, J., Horn, G., Rawlings, J. B., and Diehl, M.: CasADi – A software framework for nonlinear optimization and optimal control, Mathematical Programming Computation, 11, 1–36, <ext-link xlink:href="https://doi.org/10.1007/s12532-018-0139-4" ext-link-type="DOI">10.1007/s12532-018-0139-4</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bortolotti et al.(2019)Bortolotti, Bottasso, Croce, and Sartori</label><mixed-citation>Bortolotti, P., Bottasso, C. L., Croce, A., and Sartori, L.: Integration of multiple passive load mitigation technologies by automated design optimization – The case study of a medium-size onshore wind turbine, Wind Energy, 22, 65–79, <ext-link xlink:href="https://doi.org/10.1002/we.2270" ext-link-type="DOI">10.1002/we.2270</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Bossanyi(2003)</label><mixed-citation>Bossanyi, E. A.: Wind Turbine Control for Load Reduction, Wind Energy, 6, 229–244, <ext-link xlink:href="https://doi.org/10.1002/we.95" ext-link-type="DOI">10.1002/we.95</ext-link>, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bottasso et al.(2012)Bottasso, Croce, Nam, and Riboldi</label><mixed-citation>Bottasso, C., Croce, A., Nam, Y., and Riboldi, C.: Power curve tracking in the presence of a tip speed constraint, Renew. Energ., 40, 1–12, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2011.07.045" ext-link-type="DOI">10.1016/j.renene.2011.07.045</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Brandetti et al.(2022)Brandetti, Liu, Mulders, Ferreira, Watson, and van Wingerden</label><mixed-citation>Brandetti, L., Liu, Y., Mulders, S. P., Ferreira, C., Watson, S., and van Wingerden, J. W.: On the ill-conditioning of the combined wind speed estimator and tip-speed ratio tracking control scheme, J. Phys. Conf. Ser., 2265, 032085, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/3/032085" ext-link-type="DOI">10.1088/1742-6596/2265/3/032085</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Brandetti et al.(2023)Brandetti, Mulders, Liu, Watson, and van Wingerden</label><mixed-citation>Brandetti, L., Mulders, S. P., Liu, Y., Watson, S., and van Wingerden, J.-W.: Analysis and multi-objective optimisation of wind turbine torque control strategies, Wind Energ. Sci., 8, 1553–1573, <ext-link xlink:href="https://doi.org/10.5194/wes-8-1553-2023" ext-link-type="DOI">10.5194/wes-8-1553-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Escalera Mendoza et al.(2023)Escalera Mendoza, Griffith, Jeong, Qin, Loth, Phadnis, Pao, and Selig</label><mixed-citation>Escalera Mendoza, A. S., Griffith, D. T., Jeong, M., Qin, C., Loth, E., Phadnis, M., Pao, L., and Selig, M. S.: Aero-structural rapid screening of new design concepts for offshore wind turbines, Renew. Energ., 219, 119519, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2023.119519" ext-link-type="DOI">10.1016/j.renene.2023.119519</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Gaertner et al.(2020)Gaertner, Rinker, Sethuraman, Zahle, Anderson, Barter, Abbas, Meng, Bortolotti, Skrzypinski, Scott, Feil, Bredmose, Dykes, Shields, Allen, and Viselli</label><mixed-citation>Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter, G., Abbas, N., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G., Feil, R., Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.: Definition of the IEA Wind 15-Megawatt Offshore Reference Wind Turbine Technical Report, <uri>https://www.nrel.gov/docs/fy20osti/75698.pdf</uri>  (last access: 21 October 2024), 2020.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>GE Renewable Energy(2024)</label><mixed-citation>GE Renewable Energy: Haliade-X Offshore wind turbine, <uri>https://www.ge.com/renewableenergy/wind-energy/offshore-wind/haliade-x-offshore-turbine</uri>, (last access: 21 October 2024), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Hansen(2011)</label><mixed-citation>Hansen, M.: Aeroelastic Properties of Backward Swept Blades,   49th AIAA Aerospace Sciences Meeting including the New Horizons Forum and Aerospace Exposition, Orlando, Florida, 4–7 January 2011, <ext-link xlink:href="https://doi.org/10.2514/6.2011-260" ext-link-type="DOI">10.2514/6.2011-260</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Hansen and Henriksen(2013)</label><mixed-citation> Hansen, M. H. and Henriksen, L. C.: Basic DTU Wind Energy controller, no. 0028 in DTU Wind Energy E, Report, DTU Wind Energy, Denmark, ISBN 9788792896278, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Hansen(2010)</label><mixed-citation> Hansen, M. O. L.: Aerodynamics of wind turbines, Earthscan, 2nd repr. edn., ISBN 9781844074389, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Hovgaard et al.(2014)Hovgaard, Boyd, and Jørgensen</label><mixed-citation>Hovgaard, T. G., Boyd, S., and Jørgensen, J. B.: Model predictive control for wind power gradients: MPC for wind power gradients, Wind Energy, 18, 991–1006, <ext-link xlink:href="https://doi.org/10.1002/we.1742" ext-link-type="DOI">10.1002/we.1742</ext-link>, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>IEA(2023)</label><mixed-citation>IEA: World Energy Outlook 2023, <uri>https://www.iea.org/reports/world-energy-outlook-2023</uri> (last access: 21 October 2024), 2023.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>International Electrotechnical Commission(2019)</label><mixed-citation> International Electrotechnical Commission: IEC 61400-1:2019: Wind energy generation systems – Part 1: Design requirements, Technical Standard,  IEC, ISBN 9782832279724, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Iori et al.(2022)Iori, McWilliam, and Stolpe</label><mixed-citation>Iori, J., McWilliam, M., and Stolpe, M.: Including the power regulation strategy in aerodynamic optimization of wind turbines for increased design freedom, Wind Energy, 25, 1791–1811, <ext-link xlink:href="https://doi.org/10.1002/we.2769" ext-link-type="DOI">10.1002/we.2769</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Janipour(2023)</label><mixed-citation>Janipour, Z.: The Bottlenecks Challenging Growth in the EU Offshore Wind Supply   Chain, <ext-link xlink:href="https://www.rabobank.com/knowledge/d011354306-the-bottlenecks-challenging-growth-in-the-eu-offshore-wind-supply-chain">https://www.rabobank.com/knowledge/d011354306-the-bottlenecks-challenging-growth-in-the-eu-offshore-wind-supply-chain</ext-link> (last access: 21 October 2024), 2023.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Larsen and Hansen(2007)</label><mixed-citation> Larsen, T. J. and Hansen, A. M.: How 2 HAWC2, the user's manual, Risø, Risø National Laboratory, ISBN 9788755035836, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Lazzerini et al.(2024)Lazzerini, Deleuran Grunnet, Hovgaard Gybel, Caponetti, Datta Madireddi, De Tavernier, and Mulders</label><mixed-citation>Lazzerini, G., Deleuran Grunnet, J., Hovgaard Gybel, T., Caponetti, F., Datta Madireddi, V., De Tavernier, D., and Mulders, S. P.: TUDelft-DataDrivenControl/COFLEX: COFLEX first release (v1-alpha), Zenodo [data set] and [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.11191546" ext-link-type="DOI">10.5281/zenodo.11191546</ext-link>, 2024</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Liang et al.(2021)Liang, Ma, Wang, Mesbahi, Jeong, and Zhou</label><mixed-citation>Liang, Y., Ma, Y., Wang, H., Mesbahi, A., Jeong, B., and Zhou, P.: Levelised cost of energy analysis for offshore wind farms – A case study of the New York State development, Ocean Eng., 239, 109923, <ext-link xlink:href="https://doi.org/10.1016/j.oceaneng.2021.109923" ext-link-type="DOI">10.1016/j.oceaneng.2021.109923</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Liu et al.(2022a)Liu, Ferrari, and van Wingerden</label><mixed-citation>Liu, Y., Ferrari, R., and van Wingerden, J.-W.: Load reduction for wind turbines: an output-constrained, subspace predictive repetitive control approach, Wind Energ. Sci., 7, 523–537, <ext-link xlink:href="https://doi.org/10.5194/wes-7-523-2022" ext-link-type="DOI">10.5194/wes-7-523-2022</ext-link>, 2022a.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Liu et al.(2022b)Liu, Pamososuryo, Ferrari, and van Wingerden</label><mixed-citation>Liu, Y., Pamososuryo, A. K., Ferrari, R. M. G., and van Wingerden, J. W.: The Immersion and Invariance Wind Speed Estimator Revisited and New Results, IEEE Control Systems Letters, 6, 361–366, <ext-link xlink:href="https://doi.org/10.1109/lcsys.2021.3076040" ext-link-type="DOI">10.1109/lcsys.2021.3076040</ext-link>, 2022b.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Lobitz and Veers(2002)</label><mixed-citation>Lobitz, D. W. and Veers, P. S.: Load Mitigation with Bending/Twist‐coupled Blades on Rotors using Modern Control Strategies, Wind Energy, 6, 105–117, <ext-link xlink:href="https://doi.org/10.1002/we.74" ext-link-type="DOI">10.1002/we.74</ext-link>, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Memija(2024)</label><mixed-citation>Memija, A.: Mingyang's 20 MW Offshore Wind Turbine Stands Complete, <uri>https://www.offshorewind.biz/2024/08/29/mingyangs-20-mw-offshore-wind-turbine-stands-complete/</uri> (last access: 15 October 2024), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Mulders et al.(2023)Mulders, Liu, Spagnolo, Christensen, and van Wingerden</label><mixed-citation>Mulders, S. P., Liu, Y., Spagnolo, F., Christensen, P. B., and van Wingerden, J. W.: An iterative data-driven learning algorithm for calibration of the internal model in advanced wind turbine controllers, IFAC-PapersOnLine, 56, 8406–8413, <ext-link xlink:href="https://doi.org/10.1016/j.ifacol.2023.10.1035" ext-link-type="DOI">10.1016/j.ifacol.2023.10.1035</ext-link>,  2023.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Ortega et al.(2011)Ortega, Mancilla-David, and Jaramillo</label><mixed-citation>Ortega, R., Mancilla-David, F., and Jaramillo, F.: A globally convergent wind speed estimator for windmill systems, in: IEEE Conference on Decision and Control and European Control Conference, IEEE, Orlando, FL, USA, 12–15 December 2011, <ext-link xlink:href="https://doi.org/10.1109/cdc.2011.6160544" ext-link-type="DOI">10.1109/cdc.2011.6160544</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Pagamonci et al.(2023)Pagamonci, Papi, Balduzzi, Xie, Sadique, Scienza, and Bianchini</label><mixed-citation>Pagamonci, L., Papi, F., Balduzzi, F., Xie, S., Sadique, J., Scienza, P., and Bianchini, A.: To What Extent Is Aeroelasticity Impacting Multi-Megawatt Wind Turbine Upscaling? A Critical Assessment, J. Phys. Conf. Ser., 2648, 012005, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2648/1/012005" ext-link-type="DOI">10.1088/1742-6596/2648/1/012005</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Pao and Johnson(2011)</label><mixed-citation>Pao, L. Y. and Johnson, K. E.: Control of Wind Turbines: Approaches, challenges, and recent developments, IEEE Control Systems, 31, 44–62, <ext-link xlink:href="https://doi.org/10.1109/MCS.2010.939962" ext-link-type="DOI">10.1109/MCS.2010.939962</ext-link>, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Petrović and Bottasso(2017)</label><mixed-citation>Petrović, V. and Bottasso, C. L.: Wind turbine envelope protection control over the full wind speed range, Renew. Energ., 111, 836–848, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2017.04.021" ext-link-type="DOI">10.1016/j.renene.2017.04.021</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Pusch et al.(2023)Pusch, Stockhouse, Abbas, Phadnis, and Pao</label><mixed-citation>Pusch, M., Stockhouse, D., Abbas, N., Phadnis, M., and Pao, L.: Optimal operating points for wind turbine control and co‐design, Wind Energy, 27,  1286–1301, <ext-link xlink:href="https://doi.org/10.1002/we.2879" ext-link-type="DOI">10.1002/we.2879</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Rinker et al.(2020)Rinker, Gaertner, Zahle, Skrzypiński, Abbas, Bredmose, Barter, and Dykes</label><mixed-citation>Rinker, J., Gaertner, E., Zahle, F., Skrzypiński, W., Abbas, N., Bredmose, H., Barter, G., and Dykes, K.: Comparison of loads from HAWC2 and OpenFAST for the IEA Wind 15 MW Reference Wind Turbine, J. Phys. Conf. Ser., 1618, 052052, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1618/5/052052" ext-link-type="DOI">10.1088/1742-6596/1618/5/052052</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Saint-Drenan et al.(2020)Saint-Drenan, Besseau, Jansen, Staffell, Troccoli, Dubus, Schmidt, Gruber, Simões, and Heier</label><mixed-citation>Saint-Drenan, Y.-M., Besseau, R., Jansen, M., Staffell, I., Troccoli, A., Dubus, L., Schmidt, J., Gruber, K., Simões, S. G., and Heier, S.: A parametric model for wind turbine power curves incorporating environmental conditions, Renew. Energ., 157, 754–768, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2020.04.123" ext-link-type="DOI">10.1016/j.renene.2020.04.123</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Sartori et al.(2018)Sartori, Bellini, Croce, and Bottasso</label><mixed-citation>Sartori, L., Bellini, F., Croce, A., and Bottasso, C. L.: Preliminary design and optimization of a 20MW reference wind turbine, J. Phys.  Conf. Series, 1037, 042003, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1037/4/042003" ext-link-type="DOI">10.1088/1742-6596/1037/4/042003</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Schlipf(2016)</label><mixed-citation>Schlipf, D.: Prospects of multivariable feedforward control of wind turbines using lidar, in: 2016 American Control Conference (ACC), IEEE,  Boston, MA, USA, 6–8 July 2016, <ext-link xlink:href="https://doi.org/10.1109/acc.2016.7525112" ext-link-type="DOI">10.1109/acc.2016.7525112</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Schlipf(2021)</label><mixed-citation>Schlipf, D.: Set-Point-Fading for Wind Turbine Control, Zenodo, <ext-link xlink:href="https://doi.org/10.5281/zenodo.5567358" ext-link-type="DOI">10.5281/zenodo.5567358</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Siemens Gamesa(2024)</label><mixed-citation>Siemens Gamesa: SG 14-236 DD Offshore wind turbine, <uri>https://www.siemensgamesa.com/global/en/home/products-and-services/offshore/wind-turbine-sg-14-236-dd.html</uri> (last access: 7 June 2025), 2024. </mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Sieros et al.(2012)Sieros, Chaviaropoulos, Sørensen, Bulder, and Jamieson</label><mixed-citation>Sieros, G., Chaviaropoulos, P., Sørensen, J. D., Bulder, B. H., and Jamieson, P.: Upscaling wind turbines: theoretical and practical aspects and their impact on the cost of energy, Wind Energy, 15, 3–17, <ext-link xlink:href="https://doi.org/10.1002/we.527" ext-link-type="DOI">10.1002/we.527</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Stäblein et al.(2017)Stäblein, Hansen, and Verelst</label><mixed-citation>Stäblein, A. R., Hansen, M. H., and Verelst, D. R.: Modal properties and stability of bend–twist coupled wind turbine blades, Wind Energ. Sci., 2, 343–360, <ext-link xlink:href="https://doi.org/10.5194/wes-2-343-2017" ext-link-type="DOI">10.5194/wes-2-343-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Trigaux et al.(2024)Trigaux, Chatelain, and Winckelmans</label><mixed-citation>Trigaux, F., Chatelain, P., and Winckelmans, G.: Investigation of blade flexibility effects on the loads and wake of a 15 MW wind turbine using a flexible actuator line method, Wind Energ. Sci., 9, 1765–1789, <ext-link xlink:href="https://doi.org/10.5194/wes-9-1765-2024" ext-link-type="DOI">10.5194/wes-9-1765-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Veers et al.(2023)Veers, Bottasso, Manuel, Naughton, Pao, Paquette, Robertson, Robinson, Ananthan, Barlas, Bianchini, Bredmose, Horcas, Keller, Madsen, Manwell, Moriarty, Nolet, and Rinker</label><mixed-citation>Veers, P., Bottasso, C. L., Manuel, L., Naughton, J., Pao, L., Paquette, J., Robertson, A., Robinson, M., Ananthan, S., Barlas, T., Bianchini, A., Bredmose, H., Horcas, S. G., Keller, J., Madsen, H. A., Manwell, J., Moriarty, P., Nolet, S., and Rinker, J.: Grand challenges in the design, manufacture, and operation of future wind turbine systems, Wind Energ. Sci., 8, 1071–1131, <ext-link xlink:href="https://doi.org/10.5194/wes-8-1071-2023" ext-link-type="DOI">10.5194/wes-8-1071-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Verelst et al.(2024)Verelst, Pirrung, and Riva</label><mixed-citation>Verelst, D. R., Pirrung, G., and Riva, R.: HAWC2 v13.1 and HAWCStab2 v2.16 Comparison, Report, Technical University of Denmark, <ext-link xlink:href="https://doi.org/10.11581/DTU.00000323" ext-link-type="DOI">10.11581/DTU.00000323</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Vestas(2024)</label><mixed-citation>Vestas: V236-15.0 MW™, <uri>https://www.vestas.com/en/products/offshore/V236-15MW</uri> (last access: 21 October 2024), 2024.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Wang et al.(2016)Wang, Liu, and Kolios</label><mixed-citation>Wang, L., Liu, X., and Kolios, A.: State of the art in the aeroelasticity of wind turbine blades: Aeroelastic modelling, Renew. Sust. Energ. Rev., 64, 195–210, <ext-link xlink:href="https://doi.org/10.1016/j.rser.2016.06.007" ext-link-type="DOI">10.1016/j.rser.2016.06.007</ext-link>, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Wang et al.(2023)Wang, Ren, Cai, Lin, Zhang, and Bian</label><mixed-citation>Wang, Y., Ren, L., Cai, X., Lin, S., Zhang, Y., and Bian, S.: Numerical and experimental analysis of blade-tower clearance for large-scale wind turbines, Sustainable Energy Technologies and Assessments, 60, 103559, <ext-link xlink:href="https://doi.org/10.1016/j.seta.2023.103559" ext-link-type="DOI">10.1016/j.seta.2023.103559</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Wächter and Biegler(2005)</label><mixed-citation>Wächter, A. and Biegler, L. T.: On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming, Math. Program., 106, 25–57, <ext-link xlink:href="https://doi.org/10.1007/s10107-004-0559-y" ext-link-type="DOI">10.1007/s10107-004-0559-y</ext-link>, 2005.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Zahle et al.(2024)Zahle, Barlas, Loenbaek, Bortolotti, Zalkind, Wang, Labuschagne, Sethuraman, and Barter</label><mixed-citation>Zahle, F., Barlas, A., Loenbaek, K., Bortolotti, P., Zalkind, D., Wang, L., Labuschagne, C., Sethuraman, L., and Barter, G.: Definition of the IEA Wind 22-Megawatt Offshore Reference Wind Turbine, Report, Technical University of Denmark, <ext-link xlink:href="https://doi.org/10.11581/DTU.00000317" ext-link-type="DOI">10.11581/DTU.00000317</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Zalkind et al.(2021)Zalkind, Nicotra, and Pao</label><mixed-citation>Zalkind, D. S., Nicotra, M. M., and Pao, L. Y.: Constrained power reference control for wind turbines, Wind Energy, 25, 914–934, <ext-link xlink:href="https://doi.org/10.1002/we.2705" ext-link-type="DOI">10.1002/we.2705</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Østergaard et al.(2007)Østergaard, Brath, and Stoustrup</label><mixed-citation>Østergaard, K. Z., Brath, P., and Stoustrup, J.: Estimation of effective wind speed, J. Phys. Conf. Ser., 75, 012082, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/75/1/012082" ext-link-type="DOI">10.1088/1742-6596/75/1/012082</ext-link>, 2007.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>COFLEX: a novel set point optimiser and feedforward–feedback control scheme for large, flexible wind turbines</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Abbas et al.(2022)Abbas, Zalkind, Pao, and Wright</label><mixed-citation>
      
Abbas, N. J., Zalkind, D. S., Pao, L., and Wright, A.: A reference open-source controller for fixed and floating offshore wind turbines, Wind Energ. Sci., 7, 53–73, <a href="https://doi.org/10.5194/wes-7-53-2022" target="_blank">https://doi.org/10.5194/wes-7-53-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Andersson et al.(2019)Andersson, Gillis, Horn, Rawlings, and
Diehl</label><mixed-citation>
      
Andersson, J. A. E., Gillis, J., Horn, G., Rawlings, J. B., and Diehl, M.:
CasADi – A software framework for nonlinear optimization and optimal
control, Mathematical Programming Computation, 11, 1–36,
<a href="https://doi.org/10.1007/s12532-018-0139-4" target="_blank">https://doi.org/10.1007/s12532-018-0139-4</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bortolotti et al.(2019)Bortolotti, Bottasso, Croce, and
Sartori</label><mixed-citation>
      
Bortolotti, P., Bottasso, C. L., Croce, A., and Sartori, L.: Integration of
multiple passive load mitigation technologies by automated design
optimization – The case study of a medium-size onshore wind turbine, Wind
Energy, 22, 65–79, <a href="https://doi.org/10.1002/we.2270" target="_blank">https://doi.org/10.1002/we.2270</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Bossanyi(2003)</label><mixed-citation>
      
Bossanyi, E. A.: Wind Turbine Control for Load Reduction, Wind Energy, 6,
229–244, <a href="https://doi.org/10.1002/we.95" target="_blank">https://doi.org/10.1002/we.95</a>, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bottasso et al.(2012)Bottasso, Croce, Nam, and
Riboldi</label><mixed-citation>
      
Bottasso, C., Croce, A., Nam, Y., and Riboldi, C.: Power curve tracking in the
presence of a tip speed constraint, Renew. Energ., 40, 1–12,
<a href="https://doi.org/10.1016/j.renene.2011.07.045" target="_blank">https://doi.org/10.1016/j.renene.2011.07.045</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Brandetti et al.(2022)Brandetti, Liu, Mulders, Ferreira, Watson, and
van Wingerden</label><mixed-citation>
      
Brandetti, L., Liu, Y., Mulders, S. P., Ferreira, C., Watson, S., and van
Wingerden, J. W.: On the ill-conditioning of the combined wind speed
estimator and tip-speed ratio tracking control scheme, J. Phys.
Conf. Ser., 2265, 032085, <a href="https://doi.org/10.1088/1742-6596/2265/3/032085" target="_blank">https://doi.org/10.1088/1742-6596/2265/3/032085</a>,
2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Brandetti et al.(2023)Brandetti, Mulders, Liu, Watson, and van
Wingerden</label><mixed-citation>
      
Brandetti, L., Mulders, S. P., Liu, Y., Watson, S., and van Wingerden, J.-W.: Analysis and multi-objective optimisation of wind turbine torque control strategies, Wind Energ. Sci., 8, 1553–1573, <a href="https://doi.org/10.5194/wes-8-1553-2023" target="_blank">https://doi.org/10.5194/wes-8-1553-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Escalera Mendoza et al.(2023)Escalera Mendoza, Griffith, Jeong, Qin,
Loth, Phadnis, Pao, and Selig</label><mixed-citation>
      
Escalera Mendoza, A. S., Griffith, D. T., Jeong, M., Qin, C., Loth, E.,
Phadnis, M., Pao, L., and Selig, M. S.: Aero-structural rapid screening of
new design concepts for offshore wind turbines, Renew. Energ., 219,
119519, <a href="https://doi.org/10.1016/j.renene.2023.119519" target="_blank">https://doi.org/10.1016/j.renene.2023.119519</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Gaertner et al.(2020)Gaertner, Rinker, Sethuraman, Zahle, Anderson,
Barter, Abbas, Meng, Bortolotti, Skrzypinski, Scott, Feil, Bredmose, Dykes,
Shields, Allen, and Viselli</label><mixed-citation>
      
Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter, G.,
Abbas, N., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G., Feil, R.,
Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.: Definition
of the IEA Wind 15-Megawatt Offshore Reference Wind Turbine Technical Report,
<a href="https://www.nrel.gov/docs/fy20osti/75698.pdf" target="_blank"/>  (last access: 21 October 2024),
2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>GE Renewable Energy(2024)</label><mixed-citation>
      
GE Renewable Energy: Haliade-X Offshore wind turbine,
<a href="https://www.ge.com/renewableenergy/wind-energy/offshore-wind/haliade-x-offshore-turbine" target="_blank"/>,
(last access: 21 October 2024), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Hansen(2011)</label><mixed-citation>
      
Hansen, M.: Aeroelastic Properties of Backward Swept Blades,   49th AIAA Aerospace Sciences Meeting including the New Horizons Forum and Aerospace Exposition, Orlando, Florida,
4–7 January 2011,
<a href="https://doi.org/10.2514/6.2011-260" target="_blank">https://doi.org/10.2514/6.2011-260</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Hansen and Henriksen(2013)</label><mixed-citation>
      
Hansen, M. H. and Henriksen, L. C.: Basic DTU Wind Energy controller, no. 0028
in DTU Wind Energy E, Report, DTU Wind Energy, Denmark, ISBN 9788792896278, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Hansen(2010)</label><mixed-citation>
      
Hansen, M. O. L.: Aerodynamics of wind turbines, Earthscan, 2nd repr. edn.,
ISBN 9781844074389, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Hovgaard et al.(2014)Hovgaard, Boyd, and Jørgensen</label><mixed-citation>
      
Hovgaard, T. G., Boyd, S., and Jørgensen, J. B.: Model predictive control for
wind power gradients: MPC for wind power gradients, Wind Energy, 18,
991–1006, <a href="https://doi.org/10.1002/we.1742" target="_blank">https://doi.org/10.1002/we.1742</a>, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>IEA(2023)</label><mixed-citation>
      
IEA: World Energy Outlook 2023,
<a href="https://www.iea.org/reports/world-energy-outlook-2023" target="_blank"/> (last access:
21 October 2024), 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>International Electrotechnical Commission(2019)</label><mixed-citation>
      
International Electrotechnical Commission: IEC 61400-1:2019: Wind energy
generation systems – Part 1: Design requirements, Technical Standard,  IEC, ISBN 9782832279724, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Iori et al.(2022)Iori, McWilliam, and Stolpe</label><mixed-citation>
      
Iori, J., McWilliam, M., and Stolpe, M.: Including the power regulation
strategy in aerodynamic optimization of wind turbines for increased design
freedom, Wind Energy, 25, 1791–1811, <a href="https://doi.org/10.1002/we.2769" target="_blank">https://doi.org/10.1002/we.2769</a>,
2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Janipour(2023)</label><mixed-citation>
      
Janipour, Z.: The Bottlenecks Challenging Growth in the EU Offshore Wind Supply   Chain,
<a href="https://www.rabobank.com/knowledge/d011354306-the-bottlenecks-challenging-growth-in-the-eu-offshore-wind-supply-chain" target="_blank">https://www.rabobank.com/knowledge/d011354306-the-bottlenecks-challenging-growth-in-the-eu-offshore-wind-supply-chain</a>
(last access: 21 October 2024), 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Larsen and Hansen(2007)</label><mixed-citation>
      
Larsen, T. J. and Hansen, A. M.: How 2 HAWC2, the user's manual, Risø, Risø
National Laboratory, ISBN 9788755035836, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Lazzerini et al.(2024)Lazzerini, Deleuran Grunnet, Hovgaard Gybel,
Caponetti, Datta Madireddi, De Tavernier, and Mulders</label><mixed-citation>
      
Lazzerini, G., Deleuran Grunnet, J., Hovgaard Gybel, T., Caponetti, F., Datta Madireddi, V., De Tavernier, D., and Mulders, S. P.: TUDelft-DataDrivenControl/COFLEX: COFLEX first release (v1-alpha), Zenodo [data set] and [code], <a href="https://doi.org/10.5281/zenodo.11191546" target="_blank">https://doi.org/10.5281/zenodo.11191546</a>, 2024

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Liang et al.(2021)Liang, Ma, Wang, Mesbahi, Jeong, and
Zhou</label><mixed-citation>
      
Liang, Y., Ma, Y., Wang, H., Mesbahi, A., Jeong, B., and Zhou, P.: Levelised
cost of energy analysis for offshore wind farms – A case study of the New
York State development, Ocean Eng., 239, 109923,
<a href="https://doi.org/10.1016/j.oceaneng.2021.109923" target="_blank">https://doi.org/10.1016/j.oceaneng.2021.109923</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Liu et al.(2022a)Liu, Ferrari, and van
Wingerden</label><mixed-citation>
      
Liu, Y., Ferrari, R., and van Wingerden, J.-W.: Load reduction for wind turbines: an output-constrained, subspace predictive repetitive control approach, Wind Energ. Sci., 7, 523–537, <a href="https://doi.org/10.5194/wes-7-523-2022" target="_blank">https://doi.org/10.5194/wes-7-523-2022</a>, 2022a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Liu et al.(2022b)Liu, Pamososuryo, Ferrari, and van
Wingerden</label><mixed-citation>
      
Liu, Y., Pamososuryo, A. K., Ferrari, R. M. G., and van Wingerden, J. W.: The
Immersion and Invariance Wind Speed Estimator Revisited and New Results, IEEE
Control Systems Letters, 6, 361–366, <a href="https://doi.org/10.1109/lcsys.2021.3076040" target="_blank">https://doi.org/10.1109/lcsys.2021.3076040</a>,
2022b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Lobitz and Veers(2002)</label><mixed-citation>
      
Lobitz, D. W. and Veers, P. S.: Load Mitigation with Bending/Twist‐coupled
Blades on Rotors using Modern Control Strategies, Wind Energy, 6, 105–117,
<a href="https://doi.org/10.1002/we.74" target="_blank">https://doi.org/10.1002/we.74</a>, 2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Memija(2024)</label><mixed-citation>
      
Memija, A.: Mingyang's 20 MW Offshore Wind Turbine Stands
Complete,
<a href="https://www.offshorewind.biz/2024/08/29/mingyangs-20-mw-offshore-wind-turbine-stands-complete/" target="_blank"/>
(last access: 15 October 2024), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Mulders et al.(2023)Mulders, Liu, Spagnolo, Christensen, and van
Wingerden</label><mixed-citation>
      
Mulders, S. P., Liu, Y., Spagnolo, F., Christensen, P. B., and van Wingerden,
J. W.: An iterative data-driven learning algorithm for calibration of the
internal model in advanced wind turbine controllers, IFAC-PapersOnLine, 56,
8406–8413, <a href="https://doi.org/10.1016/j.ifacol.2023.10.1035" target="_blank">https://doi.org/10.1016/j.ifacol.2023.10.1035</a>,  2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Ortega et al.(2011)Ortega, Mancilla-David, and
Jaramillo</label><mixed-citation>
      
Ortega, R., Mancilla-David, F., and Jaramillo, F.: A globally convergent wind
speed estimator for windmill systems, in: IEEE Conference on Decision and
Control and European Control Conference, IEEE, Orlando, FL, USA, 12–15 December 2011,
<a href="https://doi.org/10.1109/cdc.2011.6160544" target="_blank">https://doi.org/10.1109/cdc.2011.6160544</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Pagamonci et al.(2023)Pagamonci, Papi, Balduzzi, Xie, Sadique,
Scienza, and Bianchini</label><mixed-citation>
      
Pagamonci, L., Papi, F., Balduzzi, F., Xie, S., Sadique, J., Scienza, P., and
Bianchini, A.: To What Extent Is Aeroelasticity Impacting Multi-Megawatt Wind
Turbine Upscaling? A Critical Assessment, J. Phys. Conf.
Ser., 2648, 012005, <a href="https://doi.org/10.1088/1742-6596/2648/1/012005" target="_blank">https://doi.org/10.1088/1742-6596/2648/1/012005</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Pao and Johnson(2011)</label><mixed-citation>
      
Pao, L. Y. and Johnson, K. E.: Control of Wind Turbines: Approaches,
challenges, and recent developments, IEEE Control Systems, 31, 44–62,
<a href="https://doi.org/10.1109/MCS.2010.939962" target="_blank">https://doi.org/10.1109/MCS.2010.939962</a>, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Petrović and Bottasso(2017)</label><mixed-citation>
      
Petrović, V. and Bottasso, C. L.: Wind turbine envelope protection control
over the full wind speed range, Renew. Energ., 111, 836–848,
<a href="https://doi.org/10.1016/j.renene.2017.04.021" target="_blank">https://doi.org/10.1016/j.renene.2017.04.021</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Pusch et al.(2023)Pusch, Stockhouse, Abbas, Phadnis, and
Pao</label><mixed-citation>
      
Pusch, M., Stockhouse, D., Abbas, N., Phadnis, M., and Pao, L.: Optimal
operating points for wind turbine control and co‐design, Wind Energy, 27,  1286–1301,
<a href="https://doi.org/10.1002/we.2879" target="_blank">https://doi.org/10.1002/we.2879</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Rinker et al.(2020)Rinker, Gaertner, Zahle, Skrzypiński, Abbas,
Bredmose, Barter, and Dykes</label><mixed-citation>
      
Rinker, J., Gaertner, E., Zahle, F., Skrzypiński, W., Abbas, N., Bredmose, H.,
Barter, G., and Dykes, K.: Comparison of loads from HAWC2 and OpenFAST for
the IEA Wind 15&thinsp;MW Reference Wind Turbine, J. Phys. Conf.
Ser., 1618, 052052, <a href="https://doi.org/10.1088/1742-6596/1618/5/052052" target="_blank">https://doi.org/10.1088/1742-6596/1618/5/052052</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Saint-Drenan et al.(2020)Saint-Drenan, Besseau, Jansen, Staffell,
Troccoli, Dubus, Schmidt, Gruber, Simões, and Heier</label><mixed-citation>
      
Saint-Drenan, Y.-M., Besseau, R., Jansen, M., Staffell, I., Troccoli, A.,
Dubus, L., Schmidt, J., Gruber, K., Simões, S. G., and Heier, S.: A
parametric model for wind turbine power curves incorporating environmental
conditions, Renew. Energ., 157, 754–768,
<a href="https://doi.org/10.1016/j.renene.2020.04.123" target="_blank">https://doi.org/10.1016/j.renene.2020.04.123</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Sartori et al.(2018)Sartori, Bellini, Croce, and
Bottasso</label><mixed-citation>
      
Sartori, L., Bellini, F., Croce, A., and Bottasso, C. L.: Preliminary design
and optimization of a 20MW reference wind turbine, J. Phys.  Conf. Series, 1037, 042003, <a href="https://doi.org/10.1088/1742-6596/1037/4/042003" target="_blank">https://doi.org/10.1088/1742-6596/1037/4/042003</a>,
2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Schlipf(2016)</label><mixed-citation>
      
Schlipf, D.: Prospects of multivariable feedforward control of wind turbines
using lidar, in: 2016 American Control Conference (ACC), IEEE,  Boston, MA, USA, 6–8 July 2016,
<a href="https://doi.org/10.1109/acc.2016.7525112" target="_blank">https://doi.org/10.1109/acc.2016.7525112</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Schlipf(2021)</label><mixed-citation>
      
Schlipf, D.: Set-Point-Fading for Wind Turbine Control, Zenodo,
<a href="https://doi.org/10.5281/zenodo.5567358" target="_blank">https://doi.org/10.5281/zenodo.5567358</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Siemens Gamesa(2024)</label><mixed-citation>
      
Siemens Gamesa: SG 14-236 DD Offshore wind turbine,
<a href="https://www.siemensgamesa.com/global/en/home/products-and-services/offshore/wind-turbine-sg-14-236-dd.html" target="_blank"/> (last access: 7 June 2025),
2024.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Sieros et al.(2012)Sieros, Chaviaropoulos, Sørensen, Bulder, and
Jamieson</label><mixed-citation>
      
Sieros, G., Chaviaropoulos, P., Sørensen, J. D., Bulder, B. H., and Jamieson,
P.: Upscaling wind turbines: theoretical and practical aspects and their
impact on the cost of energy, Wind Energy, 15, 3–17,
<a href="https://doi.org/10.1002/we.527" target="_blank">https://doi.org/10.1002/we.527</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Stäblein et al.(2017)Stäblein, Hansen, and Verelst</label><mixed-citation>
      
Stäblein, A. R., Hansen, M. H., and Verelst, D. R.: Modal properties and stability of bend–twist coupled wind turbine blades, Wind Energ. Sci., 2, 343–360, <a href="https://doi.org/10.5194/wes-2-343-2017" target="_blank">https://doi.org/10.5194/wes-2-343-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Trigaux et al.(2024)Trigaux, Chatelain, and
Winckelmans</label><mixed-citation>
      
Trigaux, F., Chatelain, P., and Winckelmans, G.: Investigation of blade flexibility effects on the loads and wake of a 15 MW wind turbine using a flexible actuator line method, Wind Energ. Sci., 9, 1765–1789, <a href="https://doi.org/10.5194/wes-9-1765-2024" target="_blank">https://doi.org/10.5194/wes-9-1765-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Veers et al.(2023)Veers, Bottasso, Manuel, Naughton, Pao, Paquette,
Robertson, Robinson, Ananthan, Barlas, Bianchini, Bredmose, Horcas, Keller,
Madsen, Manwell, Moriarty, Nolet, and Rinker</label><mixed-citation>
      
Veers, P., Bottasso, C. L., Manuel, L., Naughton, J., Pao, L., Paquette, J., Robertson, A., Robinson, M., Ananthan, S., Barlas, T., Bianchini, A., Bredmose, H., Horcas, S. G., Keller, J., Madsen, H. A., Manwell, J., Moriarty, P., Nolet, S., and Rinker, J.: Grand challenges in the design, manufacture, and operation of future wind turbine systems, Wind Energ. Sci., 8, 1071–1131, <a href="https://doi.org/10.5194/wes-8-1071-2023" target="_blank">https://doi.org/10.5194/wes-8-1071-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Verelst et al.(2024)Verelst, Pirrung, and Riva</label><mixed-citation>
      
Verelst, D. R., Pirrung, G., and Riva, R.: HAWC2 v13.1 and HAWCStab2 v2.16
Comparison, Report, Technical University of Denmark, <a href="https://doi.org/10.11581/DTU.00000323" target="_blank">https://doi.org/10.11581/DTU.00000323</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Vestas(2024)</label><mixed-citation>
      
Vestas: V236-15.0 MW™,
<a href="https://www.vestas.com/en/products/offshore/V236-15MW" target="_blank"/> (last access:
21 October 2024), 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Wang et al.(2016)Wang, Liu, and Kolios</label><mixed-citation>
      
Wang, L., Liu, X., and Kolios, A.: State of the art in the aeroelasticity of
wind turbine blades: Aeroelastic modelling, Renew. Sust. Energ. Rev., 64, 195–210, <a href="https://doi.org/10.1016/j.rser.2016.06.007" target="_blank">https://doi.org/10.1016/j.rser.2016.06.007</a>, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Wang et al.(2023)Wang, Ren, Cai, Lin, Zhang, and Bian</label><mixed-citation>
      
Wang, Y., Ren, L., Cai, X., Lin, S., Zhang, Y., and Bian, S.: Numerical and
experimental analysis of blade-tower clearance for large-scale wind turbines,
Sustainable Energy Technologies and Assessments, 60, 103559,
<a href="https://doi.org/10.1016/j.seta.2023.103559" target="_blank">https://doi.org/10.1016/j.seta.2023.103559</a>, 2023.

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

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Zahle et al.(2024)Zahle, Barlas, Loenbaek, Bortolotti, Zalkind, Wang,
Labuschagne, Sethuraman, and Barter</label><mixed-citation>
      
Zahle, F., Barlas, A., Loenbaek, K., Bortolotti, P., Zalkind, D., Wang, L.,
Labuschagne, C., Sethuraman, L., and Barter, G.: Definition of the IEA Wind
22-Megawatt Offshore Reference Wind Turbine, Report, Technical University of Denmark, <a href="https://doi.org/10.11581/DTU.00000317" target="_blank">https://doi.org/10.11581/DTU.00000317</a>,
2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Zalkind et al.(2021)Zalkind, Nicotra, and Pao</label><mixed-citation>
      
Zalkind, D. S., Nicotra, M. M., and Pao, L. Y.: Constrained power reference
control for wind turbines, Wind Energy, 25, 914–934, <a href="https://doi.org/10.1002/we.2705" target="_blank">https://doi.org/10.1002/we.2705</a>,
2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Østergaard et al.(2007)Østergaard, Brath, and
Stoustrup</label><mixed-citation>
      
Østergaard, K. Z., Brath, P., and Stoustrup, J.: Estimation of effective wind
speed, J. Phys. Conf. Ser., 75, 012082,
<a href="https://doi.org/10.1088/1742-6596/75/1/012082" target="_blank">https://doi.org/10.1088/1742-6596/75/1/012082</a>, 2007.

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