<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">WES</journal-id><journal-title-group>
    <journal-title>Wind Energy Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2366-7451</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-11-1751-2026</article-id><title-group><article-title>Optimal control of crosswind kite systems with an engineering wake model based on vortex loops and dipoles</article-title><alt-title>Optimal control of crosswind kite systems with an engineering wake model</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>De Schutter</surname><given-names>Jochem</given-names></name>
          <email>jochem_de_schutter@hotmail.com</email>
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Mühleck</surname><given-names>Antonia</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Leuthold</surname><given-names>Rachel</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="yes" rid="aff1 aff2">
          <name><surname>Diehl</surname><given-names>Moritz</given-names></name>
          <email>moritz.diehl@imtek.uni-freiburg.de</email>
        </contrib>
        <aff id="aff1"><label>1</label><institution>Department of Microsystems Engineering, University of Freiburg, Georges-Köhler-Allee 102, 79108 Freiburg, Germany</institution>
        </aff>
        <aff id="aff2"><label>2</label><institution>Department of Mathematics, University of Freiburg, Ernst-Zermelo-Straße 1, 79104 Freiburg, Germany</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Jochem De Schutter (jochem_de_schutter@hotmail.com) and Moritz Diehl (moritz.diehl@imtek.uni-freiburg.de)</corresp></author-notes><pub-date><day>19</day><month>May</month><year>2026</year></pub-date>
      
      <volume>11</volume>
      <issue>5</issue>
      <fpage>1751</fpage><lpage>1770</lpage>
      <history>
        <date date-type="received"><day>13</day><month>December</month><year>2025</year></date>
           <date date-type="rev-request"><day>16</day><month>January</month><year>2026</year></date>
           <date date-type="rev-recd"><day>11</day><month>April</month><year>2026</year></date>
           <date date-type="accepted"><day>29</day><month>April</month><year>2026</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2026 Jochem De Schutter et al.</copyright-statement>
        <copyright-year>2026</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026.html">This article is available from https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e117">Modern crosswind kite systems provide a technological means to exert large aerodynamic forces in wind fields above the reach of conventional wind turbines, with applications such as airborne wind energy (AWE) generation and ship towing. A central challenge in kite system optimization is to both accurately and efficiently model self-induction effects on system design, performance, and operation. Vortex-based models are a natural candidate for this task as they provide a wake resolution that allows us to consistently capture kite-specific operating conditions. Existing vortex-based approaches have been developed under the assumption of static, axisymmetric flight, which is typically violated in practice. Therefore, we propose a vortex-based continuous-time wake model for simulation and optimal control of crosswind kites that is capable of capturing the unsteady, non-axisymmetric flight conditions induced by skewed inflow and gravity. The model represents the shed vorticity as a hybrid distribution of infinitesimal vortex loops and dipole elements and shows good agreement with simulation results obtained with the free-vortex solver DUST, with the remaining discrepancies largely due to convection-velocity selection. As a second contribution, we introduce a transcription strategy to efficiently incorporate the new model into periodic optimal control problems (OCPs). In a numerical case study based on a dual-kite system, we examine the sensitivity of the OCP optimal cost (average tether force) and design to the key transcription parameters. Based on this sensitivity analysis, we find an efficient transcription that solves the problem at three times the computational cost of the OCP without any wake model while still retaining accuracy (in terms of combined error of optimal cost and design) within 5 % compared to a highly resolved transcription of the wake-aware problem. In contrast, the solution of the no-wake problem deviates by 145 % compared to this highly resolved reference solution. Overall, the framework enables the efficient and wake-aware optimal control of crosswind kite systems and can be readily applied to industry-relevant applications such as single-kite airborne wind energy systems.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Deutsche Forschungsgemeinschaft</funding-source>
<award-id>525018088</award-id>
</award-group>
</funding-group>
</article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e129">Kite systems have a millennia-long history in human civilization, with significant roles in culture, science, and technology <xref ref-type="bibr" rid="bib1.bibx19" id="paren.1"/>. In recent decades, advances in computing and materials science have reignited interest in these systems, motivating researchers and engineers to develop a new class of high-performance kite-based technologies. As envisaged by <xref ref-type="bibr" rid="bib1.bibx31" id="text.2"/>, most of these technologies rely on soft or rigid tethered wings performing fast crosswind manoeuvers to generate substantial aerodynamic forces, which can be harnessed for various applications such as ship towing <xref ref-type="bibr" rid="bib1.bibx12" id="paren.3"/> or electricity generation through airborne wind energy (AWE) systems <xref ref-type="bibr" rid="bib1.bibx11" id="paren.4"/>. A further, yet unrealized, concept is that of airborne atmospheric actuators. Here, kite systems (without their own generation capability and thus with low complexity) could be installed strategically between wind turbines in an offshore wind farm, possibly only using existing infrastructure. By flying above the wind farm, they would be able to redirect airflow from the unaffected boundary layer into the wake of wind farms to enhance their overall efficiency through wake re-energizing. Initial simulation studies indicate that a wind farm performance boost of several percentage points could be attainable <xref ref-type="bibr" rid="bib1.bibx37 bib1.bibx26 bib1.bibx42" id="paren.5"/>.</p>
      <p id="d2e147">One central engineering challenge for crosswind kite systems is the optimal co-design of the dynamic flight path of the kite together with its design parameters. Optimal control is a natural candidate tool for this task due to its inherent ability to deal with nonlinear constrained systems with multiple in- and outputs, which has resulted in widespread use, mainly in research <xref ref-type="bibr" rid="bib1.bibx43" id="paren.6"/> but also in industry <xref ref-type="bibr" rid="bib1.bibx36" id="paren.7"/>. Optimal control comes with the drawback of a high computational cost and implementation effort. However, after more than a decade of research on efficient formulations and solution strategies <xref ref-type="bibr" rid="bib1.bibx21 bib1.bibx16 bib1.bibx32 bib1.bibx39" id="paren.8"/> as well as open-source software developments <xref ref-type="bibr" rid="bib1.bibx9" id="paren.9"/>, it is safe to say that efficient numerical optimal control of crosswind kite systems based on high-fidelity flight mechanics is readily available for control experts and non-experts alike.</p>
      <p id="d2e162">In consequence, most current research in this field focuses on improving the fidelity of the optimization models, e.g. by incorporating more realistic and flexible tether representations <xref ref-type="bibr" rid="bib1.bibx20" id="paren.10"/> or by improving upscaling models <xref ref-type="bibr" rid="bib1.bibx23" id="paren.11"/>. Another major modelling challenge concerns the self-induction of the kite system. Analogous to conventional wind turbines, the aerodynamic loading of crosswind kites generates a wake that is advected downstream. This wake, in turn, induces a local wind speed deficit at the kite position, thereby diminishing the available wind power. For horizontal-axis wind turbines, this self-blockage effect has been extensively studied and establishes a theoretical upper bound on the extractable wind power, widely known as the Betz limit <xref ref-type="bibr" rid="bib1.bibx34" id="paren.12"/>.</p>
      <p id="d2e174">Well-established induction modelling methods for horizontal-axis wind turbines are derived from momentum balance principles. However, these approaches cannot be directly applied to kite systems, as the fundamental assumptions that they rely on are typically violated. First, kite systems interact with the airflow over an annular rather than a full-disc region. Second, the aerodynamic loading is inherently non-uniform throughout a single crosswind loop. Third, the generated aerodynamic forces are often significantly misaligned with the freestream wind direction, a necessary condition to compensate for gravitational forces.</p>
      <p id="d2e178">Therefore, in current engineering practice, self-induction effects are often neglected. Such a simplification is justified for existing small-scale prototypes, where relatively low aerodynamic loads act over large airborne areas. However, as system size and loading increase, and as flight trajectories are compacted to maximize power density, self-induction will become increasingly significant <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx25 bib1.bibx17 bib1.bibx8" id="paren.13"/>. This effect is particularly pronounced in multi-kite configurations, where two or more wings fly tight crosswind loops around a shared main tether <xref ref-type="bibr" rid="bib1.bibx46" id="paren.14"/>.</p>
      <p id="d2e187">Moreover, kite systems possess many degrees of freedom, and their high controllability allows them to adjust their flight path so as to avoid wake effects in consecutive flight loops, thereby boosting performance, provided that this information is incorporated in the optimization model. In conclusion, the accurate performance assessment of utility-scale kite systems requires the development of optimization-friendly engineering wake models capable of capturing self-induction effects.</p>
      <p id="d2e190">Initial research efforts have primarily focused on extending momentum-based models to the kite system context by deriving analytical formulations under various simplifying assumptions: steady, axisymmetric flight <xref ref-type="bibr" rid="bib1.bibx5 bib1.bibx25 bib1.bibx24" id="paren.15"/>; steady, non-axisymmetric flight <xref ref-type="bibr" rid="bib1.bibx1" id="paren.16"/>; and (unvalidated) unsteady non-axisymmetric flight conditions <xref ref-type="bibr" rid="bib1.bibx46 bib1.bibx29 bib1.bibx7 bib1.bibx8" id="paren.17"/>. However, there is currently no validated momentum-based approach available that accurately accounts for all relevant kite operating conditions. Moreover, as noted by <xref ref-type="bibr" rid="bib1.bibx13" id="text.18"/>, when using the 3D polar of the kite wing, these generalizations are physically inconsistent, leading to a double-counting of the contribution of the wake directly trailing the wing. If one would alternatively resort to a momentum approach using the 2D polar of the kite, application-specific root and tip corrections would need to be developed.</p>
      <p id="d2e205">To address this last issue of consistency, <xref ref-type="bibr" rid="bib1.bibx13" id="text.19"/>, and subsequently <xref ref-type="bibr" rid="bib1.bibx40" id="text.20"/>, developed physically consistent self-induction models for the steady, axisymmetric case. Their approach employed vortex methods as outlined by <xref ref-type="bibr" rid="bib1.bibx3" id="text.21"/> and demonstrated good agreement with higher-fidelity free-vortex wake simulations. A more versatile but numerically more expensive approach is offered by adding a discrete lifting-line vortex model in the transcription process of a general, unsteady AWE optimal control problem (OCP) <xref ref-type="bibr" rid="bib1.bibx30" id="paren.22"/>. In the aforementioned work, reasonable agreement of the vortex model with existing large-eddy simulation (LES) results from the literature is reported. However, the computational cost of the OCP currently scales unfavourably with the number of vortex elements included, which might result in a prohibitive numerical expense in certain scenarios.</p>
      <p id="d2e220">In parallel, high-fidelity approaches have been developed based on coupling the full kite flight dynamics to virtual wind environments based on LES frameworks (in some cases combined with Reynolds-averaged Navier–Stokes methods) <xref ref-type="bibr" rid="bib1.bibx18 bib1.bibx4 bib1.bibx38" id="paren.23"/>. While the computational expense of these methods is prohibitive for use in optimal control, the wake effects are captured implicitly through the flow solver and can be studied in great detail. In this sense, they provide the high-fidelity basis for a systematic validation of cheaper, lower-fidelity approaches, which is an interesting direction for the future. One current limitation of these methods is that they rely on flight trajectories that are generated without a wake model. This further highlights the need for reduced-order, optimization-friendly wake models that consistently account for self-induction effects.</p>
      <p id="d2e226">The contribution of this paper is the formulation of a new optimization-friendly, vortex-based self-induction wake model that is capable of capturing the inherently unsteady and non-axisymmetric operating conditions of kite systems. Rather than deriving a simplified analytical approximation or employing a discrete vortex model, we represent the coupled dynamics of the kite system and its wake continuously through a combined differential-algebraic equation (DAE) and partial differential equation (PDE) framework. The resulting continuous model is validated in relevant conditions against the higher-fidelity free-vortex wake solver DUST. Finally, we demonstrate how the DAE- and PDE-based OCP can be efficiently transcribed into a standard continuous-time OCP formulation and analyse the sensitivity of the resulting problem to key transcription parameters.</p>
      <p id="d2e230">To limit the scope of this paper, we consider a kite system with fixed tether length, thereby excluding pumping-style AWE systems, which rely on tether reeling. The kite system is also not equipped with on-board power generators, acting purely as an actuator. However, the developed methods in this paper can be directly applied to pumping- or fly-gen-type systems as well. In fact, due to their unsteady nature, these methods are particularly suited for capturing pumping wake patterns, including build-up during reel-out and reset due to reel-in. We focus here on a dual-kite system model to generate an interesting high-load scenario with significant induction effects. Similarly, application of the developed methods to single-kite systems is straightforward.</p>
      <p id="d2e233">The remainder of this paper is organized as follows. Section <xref ref-type="sec" rid="Ch1.S2"/> introduces the DAE model of a multi-kite system as described in the literature. Section <xref ref-type="sec" rid="Ch1.S3"/> presents the vortex-based continuous wake model and its associated PDE dynamics. In Sect. <xref ref-type="sec" rid="Ch1.S4"/>, we present validation results by comparing model simulations with those from the free-vortex simulation framework DUST. Section <xref ref-type="sec" rid="Ch1.S5"/> then formulates the coupled DAE–PDE OCP and discusses its efficient transcription into a continuous-time OCP form. Section <xref ref-type="sec" rid="Ch1.S6"/> presents the results of a representative numerical case study. Finally, Sect. <xref ref-type="sec" rid="Ch1.S7"/> provides a conclusion and outlines possible directions for future research.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e251">Illustration of the dual-wing crosswind kite system considered in this paper.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f01.png"/>

      </fig>

</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Kite system model</title>
      <p id="d2e268">In this section, we present the flight dynamics model of a dual-kite system as shown in Fig. <xref ref-type="fig" rid="F1"/>. The model is largely synthesized from the literature. As argued by <xref ref-type="bibr" rid="bib1.bibx14" id="text.24"/>, for optimal control applications, it is beneficial to model the flight dynamics of tethered airfoils by an index-1 DAE such as

          <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M1" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        with states <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, controls <inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, algebraic variables <inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, and design parameters <inline-formula><mml:math id="M5" display="inline"><mml:mi mathvariant="bold-italic">θ</mml:mi></mml:math></inline-formula>. Here, we introduce the wake representation <inline-formula><mml:math id="M6" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as a new element.</p>
      <p id="d2e437">The full wake state <inline-formula><mml:math id="M7" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> represents the overall spatial vorticity distribution (e.g. structure, orientation, strength) that has resulted from the flight trajectory up until the current physical time <inline-formula><mml:math id="M8" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. The wake state <inline-formula><mml:math id="M9" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> then represents an infinitesimal segment of this distribution, which has an age (or convection time) <inline-formula><mml:math id="M10" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><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>, which represents the time elapsed since that portion of the wake was generated at the boundary <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. The evolution of the wake is described by the inhomogeneous transport equation

          <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M12" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        with the boundary condition

          <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M13" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>∀</mml:mo><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        Thus, overall, the kite system dynamics are described by a coupled DAE–PDE system. In this section, we focus solely on the DAE part of the dynamics. Section <xref ref-type="sec" rid="Ch1.S3"/> then later describes  the wake parameterization <inline-formula><mml:math id="M14" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, source term function <inline-formula><mml:math id="M15" display="inline"><mml:mi mathvariant="bold-italic">f</mml:mi></mml:math></inline-formula>, and boundary condition function <inline-formula><mml:math id="M16" display="inline"><mml:mi mathvariant="bold-italic">g</mml:mi></mml:math></inline-formula> in detail.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Dual-wing flight dynamics</title>
      <p id="d2e722">While high-fidelity 6DOF aircraft models are available in the literature and open-source software, we limit ourselves here to the more simple point-mass model as proposed by <xref ref-type="bibr" rid="bib1.bibx45" id="text.25"/>. The state, control, and algebraic variables are defined as

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M17" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>C</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>:=</mml:mo><mml:mi mathvariant="bold-italic">λ</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">9</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> are the positions of the centre point and the two wings, and <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> are the lift coefficients and <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> the roll angles of the two wings. The algebraic variables <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">λ</mml:mi><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> are the Lagrange multipliers associated with the holonomic constraints

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M22" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn><mml:mo>⊤</mml:mo></mml:msubsup><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msubsup><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mo>⊤</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mo>⊤</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which impose that the node positions are consistent with the tether lengths <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula> of the main and secondary tethers, respectively. These parameters, together with the corresponding tether diameters <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula>, can be optimized  and are summarized in the parameter vector

            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M27" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Using the Lagrangian mechanics with index reduction approach proposed by <xref ref-type="bibr" rid="bib1.bibx14" id="text.26"/> and implemented by <xref ref-type="bibr" rid="bib1.bibx9" id="text.27"/>, we can derive the following equations of motion:

                <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M28" display="block"><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mi mathvariant="bold">M</mml:mi></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold-italic">q</mml:mi></mml:msub><mml:mi mathvariant="bold-italic">c</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mi mathvariant="bold-italic">q</mml:mi></mml:msub><mml:msup><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mo>⊤</mml:mo></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">¨</mml:mo></mml:mover></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="bold-italic">λ</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi mathvariant="normal">ext</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula>

          with the mass matrix

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M29" display="block"><mml:mrow><mml:mi mathvariant="bold">M</mml:mi><mml:mo>:=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><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:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><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:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><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:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><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:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the wing mass, and the terms <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are used to describe the inertia of the tether. The density per unit length of the tether lengths is a function of the tether diameter, i.e. <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">μ</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">s</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> being the material density.</p>
      <p id="d2e1507">The external force vector is given as

            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M36" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi mathvariant="normal">ext</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mfrac><mml:mn mathvariant="normal">3</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">3</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mi>g</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold">I</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mn mathvariant="normal">3</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle></mml:mstyle><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="normal">∇</mml:mi><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:msub><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">c</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>⊤</mml:mo></mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M37" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M38" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> being the aerodynamic forces. In the implementation, Baumgarte stabilization is added in the last element of this vector to ensure consistency of the solution in the context of periodic optimal control <xref ref-type="bibr" rid="bib1.bibx15" id="paren.28"/>.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Aerodynamics</title>
      <p id="d2e1727">To compute the aerodynamic forces, we assume a uniform free-stream wind speed <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> and constant density <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>∈</mml:mo><mml:mi mathvariant="double-struck">R</mml:mi></mml:mrow></mml:math></inline-formula>. Alternatively, realistic wind shear and density drop profiles can be incorporated as well in a straightforward fashion. Within the proposed framework of Sect. <xref ref-type="sec" rid="Ch1.S3"/>, the modelled wind shear would be taken into account automatically in the wake development. Within the scope of this paper, we limit ourselves to validating the model in uniform inflow conditions.</p>
      <p id="d2e1762">The wake state <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> induces a velocity field <inline-formula><mml:math id="M43" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> on top of the free-stream wind, resulting in a total wind field <inline-formula><mml:math id="M44" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which is evaluated at each of the wing positions <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for <inline-formula><mml:math id="M46" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>:

            <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M47" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          For an explicit definition of the induced velocity functions <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>, we refer to Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
      <p id="d2e2020">The apparent wind speed seen by each wing is then given by

            <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M49" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where, for notational simplicity, we further omit the explicit dependence on time.</p>
      <p id="d2e2119">Then, assuming no side-slip and direct control of the roll angle <inline-formula><mml:math id="M50" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of the wings, the resulting lift and drag forces are given by

                <disp-formula specific-use="align"><mml:math id="M51" display="block"><mml:mtable displaystyle="true"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:msup><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>(</mml:mo><mml:mi>cos⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>sin⁡</mml:mi><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">T</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          with the vectors <inline-formula><mml:math id="M52" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">T</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> defined by

            <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M54" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">T</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">r</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">r</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">T</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">T</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">r</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the tether direction

            <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M56" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">r</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The aerodynamic drag coefficient includes the induced-drag term of an elliptical wing in straight flight:

            <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M57" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi mathvariant="normal">AR</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> being the parasitic drag and <inline-formula><mml:math id="M59" display="inline"><mml:mi mathvariant="normal">AR</mml:mi></mml:math></inline-formula> the aspect ratio. Note that the induced-drag term approximates the effect of the velocities induced by the part of the wake directly trailing the wing. This will be taken into account in the wake model in Sect. <xref ref-type="sec" rid="Ch1.S3"/> so as to avoid double-counting, similar to <xref ref-type="bibr" rid="bib1.bibx40" id="text.29"/>.</p>
      <p id="d2e2664">The overall aerodynamic forces are given as

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M60" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E15"><mml:mtd><mml:mtext>15</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E16"><mml:mtd><mml:mtext>16</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M61" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> values are the tether drag forces, proportional to the tether lengths and diameters. For each tether, these forces are computed for the boundary nodes such that they produce resultant forces and moments equivalent to those obtained by numerically integrating the drag distribution along the tether. To simplify the exposition, we refer to <xref ref-type="bibr" rid="bib1.bibx9" id="text.30"><named-content content-type="post">Eq. 36</named-content></xref> for the explicit expressions.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Continuous wake modelling</title>
      <p id="d2e2803">We start our exposition of the continuous wake model by assuming that the two wings each have their own separate trailing wake described by the states <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M63" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mrow><mml:msub><mml:mi>n</mml:mi><mml:mi>y</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, respectively, which are combined to form a total wake state:

          <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M64" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        This wake state is the unique solution to the initial value problem defined by Eqs. (<xref ref-type="disp-formula" rid="Ch1.E2"/>) and (<xref ref-type="disp-formula" rid="Ch1.E3"/>). This solution can be explicitly expressed for each wake state <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula> in terms of the functions <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>:

          <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M68" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="italic">τ</mml:mi></mml:munderover><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e3083">The forcing terms <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> can be used to model the wake convection and effects such as viscous dissipation and radial expansion. Within the scope of this paper, we assume rigid convection with a velocity assigned at the moment of shedding. The functions <inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> model the vortex properties at the moment of shedding, which depend on the system state and on the entire vortex structure itself (via the induced velocities).</p>
      <p id="d2e3118">The induced velocity evaluated at the position of each wing <inline-formula><mml:math id="M71" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the superposition of the induced velocities of the individual wakes. These velocities are computed as an integral over the entire wake structure, assuming an infinitely long wake. For each wing, we ignore the induction of its own trailing wake less than a time <inline-formula><mml:math id="M72" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> away (“near” wake) and instead account for these near-wing effects through the induced-drag term. Accurately resolving this region would require a significantly finer representation of the vortex distribution close to the wing, increasing model complexity and computational cost. Beyond the time <inline-formula><mml:math id="M73" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> (“far” wake), we assume that the shed vorticity has rolled up into two trailing vortices. Therefore, we arrive at the following expression for the induced velocities for wing 1:

          <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M74" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mi>T</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        and vice versa for wing 2.</p>
      <p id="d2e3300">Thus, to define a wake model in this framework, one must define a wake state representation <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and the corresponding forcing and shedding functions <inline-formula><mml:math id="M76" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M77" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and then model the induced velocity with the function <inline-formula><mml:math id="M78" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Continuous vortex-loop model</title>
      <p id="d2e3355">We propose to model each wake structure <inline-formula><mml:math id="M79" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as a continuous trail of infinitely small vortex rectangles made up of infinitely thin vortex filaments with variable circulation strength <inline-formula><mml:math id="M80" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, as shown in Fig. <xref ref-type="fig" rid="F2"/> (left). The pair of chordwise vortex filaments with infinitesimal length <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:math></inline-formula> model the rolled-up wing tip vortices. The wake is shed with the apparent wind speed; hence the infinitesimal length can also be written as a function of <inline-formula><mml:math id="M82" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> as <inline-formula><mml:math id="M83" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>:=</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:math></inline-formula>. We assume that these chordwise filaments are located at a distance of <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi mathvariant="italic">π</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mi>b</mml:mi></mml:mrow></mml:math></inline-formula> from each other <xref ref-type="bibr" rid="bib1.bibx13" id="paren.31"/>, symmetric relative to the rectangle centre position <inline-formula><mml:math id="M85" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This distance equals the length of the pair of spanwise vortex filaments, which capture the shed vorticity caused by the variation in lift force over time. The orientation of the rectangles is determined by the normal unit vector <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">n</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and chordwise unit vector <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">c</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The wake states are then defined as

            <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M88" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">n</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">c</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e3675">For the forcing term, we assume rigid downstream convection with a velocity <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">conv</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula>. This assumption implies that the shed wake elements are transported without deformation or dissipation:

            <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M90" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">conv</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          In reality, the wake evolution results from complex vortex–vortex interactions and self-induced deformations, which are computationally prohibitive to resolve explicitly. To account for these effects in a tractable manner, Sect. <xref ref-type="sec" rid="Ch1.S4"/> introduces and compares three heuristic strategies for selecting the convection velocity.</p>
      <p id="d2e3809">The shedding laws <inline-formula><mml:math id="M91" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> are defined such that the shed rectangle centre positions <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> coincide with the wings' aerodynamic centre, here assumed equal to the centre of mass positions <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. The trailing vortex strength <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> follows from the Kutta–Joukowski theorem <xref ref-type="bibr" rid="bib1.bibx13 bib1.bibx40" id="paren.32"/> for elliptic wings, while the rectangle unit vectors <inline-formula><mml:math id="M95" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">n</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">c</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> are aligned with the lift force and apparent wind speed, respectively, which are orthogonal by definition:

            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M97" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi mathvariant="normal">AR</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e4149">Finally, the induced velocity at a position <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>∈</mml:mo><mml:msup><mml:mi mathvariant="double-struck">R</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> by an infinitesimally small rectangle per unit width <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:math></inline-formula> is given by

            <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M100" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mfenced open="" close="|"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">vl</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where the function <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">vl</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> computes the velocity induced by a rectangular vortex loop of chordwise extent <inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:math></inline-formula>, obtained from the Biot–Savart law applied to its four bounding vortex filaments, as written out in Appendix <xref ref-type="sec" rid="App1.Ch1.S1"/>.</p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e4378">Illustration of the continuous wake representation based on rectangular vortex loops with the infinitesimally small width <inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>s</mml:mi><mml:mo>:=</mml:mo><mml:mo>∥</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>∥</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:math></inline-formula> (left) and of the wake representation based on a continuous trail of vortex dipoles (right).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f02.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Continuous vortex dipole model</title>
      <p id="d2e4431">The symbolic complexity of Eq. (<xref ref-type="disp-formula" rid="Ch1.E23"/>) is relatively high, leading to expensive numerical derivatives and a high memory usage. This complexity can be reduced by applying a multi-pole expansion of the infinitesimal vortex loops and retaining only the leading non-vanishing term, which gives us a far-field approximation of the original induced velocity. This approximation can be interpreted as the induced velocity of a source dipole whose dipole moment is proportional to the enclosed area of the rectangular vortex loop.</p>
      <p id="d2e4436">Thus, we can also model the wake state as a continuous trail of vortex dipoles, visualized in Fig. <xref ref-type="fig" rid="F2"/> (right) as well, which can be conveniently written as a function of the vortex-loop state:

            <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M104" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          with the dipole moment per metre of trailing wake given by

            <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M105" display="block"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">n</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>
      <p id="d2e4607">The induced velocity function of the vortex dipole wake is given by the much simpler expression

            <disp-formula id="Ch1.E26" content-type="numbered"><label>26</label><mml:math id="M106" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>⋅</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">m</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mo>′</mml:mo></mml:msubsup><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>|</mml:mo><mml:msup><mml:mo>|</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>|</mml:mo><mml:msup><mml:mo>|</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>|</mml:mo><mml:mo>|</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          with

            <disp-formula id="Ch1.E27" content-type="numbered"><label>27</label><mml:math id="M107" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mo>:=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Note that the vortex dipole induced velocity is written explicitly as a function of the vortex-loop state <inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> so that the same state representation can be used for this model as well.</p>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Continuous hybrid vortex model</title>
      <p id="d2e4860">With these two modelling options on the table, it is intuitive to conceptualize a hybrid wake model, consisting on the one hand of a costly vortex-loop model that captures the induction of the closest wake segments in detail and, on the other hand, the numerically cheaper vortex dipole moment to include the influence of the wake segments further downstream, as illustrated by Fig. <xref ref-type="fig" rid="F3"/>.</p>

      <fig id="F3"><label>Figure 3</label><caption><p id="d2e4867">Illustration of the proposed hybrid rectangle–dipole model. The first half period of the trailing wake is modelled as a straight-flight wake. Then, a full period is modelled using the continuous vortex-loop model, and all remaining periods are modelled using the continuous dipole model.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f03.png"/>

        </fig>

      <p id="d2e4876">We devise the hybrid model by splitting the integrals in Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) at the location <inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the self-induced velocity of each wing and at location <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for the velocity induced by the wake of the other wing. For wing <inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, this gives

            <disp-formula id="Ch1.E28" content-type="numbered"><label>28</label><mml:math id="M112" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mi>T</mml:mi><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub></mml:mrow><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow><mml:mi mathvariant="normal">∞</mml:mi></mml:munderover><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where the induced velocity for wing <inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> is simply obtained by switching the wing indices for the variables <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</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">y</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. For each wing, we ignore the self-induced velocity for the first time interval with length <inline-formula><mml:math id="M116" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>.</p>
      <p id="d2e5253">In this formulation, we can retrieve the full vortex-loop model (<inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:mrow></mml:math></inline-formula>), the full vortex dipole model (<inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>T</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), or any variant in between.</p>
</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Continuous wake model validation</title>
      <p id="d2e5313">To validate the new continuous wake formulation, we compare the model with the higher-fidelity, free-vortex software tool DUST <xref ref-type="bibr" rid="bib1.bibx41" id="paren.33"/>, an open-source, mid-fidelity aerodynamic solver specifically designed for analysing complex and non-conventional aircraft configurations. The software features a lifting-line method to compute the aerodynamic loads, coupled to a highly resolved simulation of the wake using a vortex particle method that allows it to capture the complex vortex-to-vortex interactions that are largely ignored in the proposed optimization model.</p>
<sec id="Ch1.S4.SS1">
  <label>4.1</label><title>Wing geometry and wake simulation in DUST</title>
      <p id="d2e5326">Two near-elliptic wings are generated using a parametric mesh with 40 discrete spanwise sections of the NACA 4421 airfoil. The discretization introduces deviations from an ideal elliptical planform, leading to reduced aerodynamic efficiency. To account for this, a span efficiency factor <inline-formula><mml:math id="M119" display="inline"><mml:mi>e</mml:mi></mml:math></inline-formula> is incorporated into the induced-drag model (Eq. <xref ref-type="disp-formula" rid="Ch1.E14"/>):

            <disp-formula id="Ch1.E29" content-type="numbered"><label>29</label><mml:math id="M120" display="block"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msubsup><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup></mml:mrow><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi mathvariant="normal">AR</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and the corresponding trailing vortex strength in Eq. (<xref ref-type="disp-formula" rid="Ch1.E22"/>) is scaled accordingly:

            <disp-formula id="Ch1.E30" content-type="numbered"><label>30</label><mml:math id="M121" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Γ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi mathvariant="normal">AR</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>∥</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>∥</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The efficiency factor, <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mi>e</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">0.75</mml:mn></mml:mrow></mml:math></inline-formula>, is identified from a series of straight-flight DUST simulations across varying angles of attack. Inflow speeds are chosen to match the apparent wind conditions of the validation flight trajectory, ensuring consistency in Reynolds number. The factor <inline-formula><mml:math id="M123" display="inline"><mml:mi>e</mml:mi></mml:math></inline-formula> is then obtained by fitting Eq. (<xref ref-type="disp-formula" rid="Ch1.E29"/>) to the simulated drag polar.</p>
      <p id="d2e5494">To simulate the wake in DUST, we must prescribe a kinematic flight trajectory for the wings. To obtain a representative trajectory, we feed into DUST the optimal periodic wing position trajectories and orientations obtained by solving the optimization problem defined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E59"/>) from Sect. 5. The rationale behind the dual-kite set-up is to generate an extremely high-load scenario with a small convection distance between the wings and the trailing vorticity structure. This constitutes a worst-case test for the ability of the vortex-loop model to accurately represent the induced velocity close to the wake structure. Lower-load scenarios (e.g. with a medium-scale single-wing system) are expected to be less demanding and to be representable with at least comparable, if not improved, accuracy.</p>
      <p id="d2e5499">One remaining problem is that the angle of attack is not explicitly modelled in the optimal orientation trajectory, since the optimization model assumes direct lift coefficient control. Therefore, in a preprocessing step, we apply a pitch correction to impose the angle of attack that would produce the same lift coefficient under the same conditions (including the induction effects predicted by the wake model), using the simulated 3D lift polar.</p>

      <fig id="F4" specific-use="star"><label>Figure 4</label><caption><p id="d2e5505">DUST wake simulation result over 6.5 flight loops as visualized in Paraview. The flight trajectory is visualized in green.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f04.png"/>

        </fig>

      <p id="d2e5514">The simulation is initialized in a vortex-free state, with vortex particles being shed during the simulation. We run the DUST simulation for 6.5 periods of the optimal state trajectory to allow for the wake build-up to reach a steady state. Figure <xref ref-type="fig" rid="F4"/> visualizes the simulation result, showing a distinct helicoidal wake structure in the first part of the wake, followed by an increasing break-up of this structure due to the vortex-to-vortex interactions. In postprocessing, we can retrieve the vortex particle trajectories, the induced velocity field at all time steps, and the aerodynamic loads obtained from the lifting-line approach. The toolchain to generate the necessary DUST input files as well as the input data and more detailed simulation settings (e.g. particle size) are made publicly available.</p>
</sec>
<sec id="Ch1.S4.SS2">
  <label>4.2</label><title>Wake convection comparison</title>
      <p id="d2e5527">To compare the DUST wake simulation with the proposed wake model, we evaluate the wake using the analytic solution defined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>) and compute the induced velocities via Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) using a high-accuracy numerical integration scheme, running the integral up to 6.5 periods in the past. For the forcing term in Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>), describing the wake convection, we consider three different convection velocity variants. For each variant, we obtain a different wake solution and a different time-dependent induced velocity field, which can be used to correct the aerodynamic loads obtained in the prescribed flight trajectory.</p>
      <p id="d2e5536">The first variant (“free”) assumes no vortex-to-vortex interaction at all and prescribes convection with the free-stream wind velocity:

            <disp-formula id="Ch1.E31" content-type="numbered"><label>31</label><mml:math id="M124" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">conv</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The second variant (“far”) assumes convection with reduced velocity due to far-wake induction at the time of shedding; i.e.

            <disp-formula id="Ch1.E32" content-type="numbered"><label>32</label><mml:math id="M125" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">conv</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The third variant (“near”) assumes convection with reduced velocity due to “near-wake” self-induction, as proposed by <xref ref-type="bibr" rid="bib1.bibx40" id="text.34"/>; i.e.

            <disp-formula id="Ch1.E33" content-type="numbered"><label>33</label><mml:math id="M126" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">conv</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>∥</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>∥</mml:mo></mml:mrow><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi mathvariant="normal">AR</mml:mi><mml:mi>e</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>

      <fig id="F5"><label>Figure 5</label><caption><p id="d2e5782">Comparison of snapshots of the vortex-loop wake position and orientation for the three convection velocity variants plotted against the DUST simulation, for fully developed wakes of 6.5 periods and at the intersections with the <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> plane. The snapshots focus on the top part of the wake. The trajectory of wing 1 is included, as well as the position and orientation of wing 1 at the time of the snapshot. The blue arrows represent the normal unit vectors <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">n</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> of the vortex loops. The red dots visualize the boundaries of the vortex loops which should coincide with the location of the rolled-up tip vortices.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f05.png"/>

        </fig>

      <p id="d2e5818">Figure <xref ref-type="fig" rid="F5"/> shows the position in the <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:math></inline-formula> plane of the DUST vortex particles for the upper part of the wake. We compare this result with the predicted vortex-loop wake trajectory and orientation as they cross this plane, for each of the three variants. Firstly, it is visible that in the first, most influential part of the wake, the wake orientation and the distance between the tip vortices match well with the DUST simulation, although the bottom DUST tip vortex is convected slightly downwards. Further downstream, the models start to diverge due to wake deformation and expansion.</p>
      <p id="d2e5833">We can now assess the convection velocity fit by comparing the locations of the tip vortices predicted by both models. The “free” variant strongly overestimates the convection velocity, as the consecutive DUST tip vortices pop up much sooner and closer to the wing trajectory. For the “near” variant, the opposite is true: it provides a strong underestimation. The “far” variant provides the best fit, although some overestimation remains. In the remainder of this work, we apply the latter variant and delegate further improvements to future work.</p>
</sec>
<sec id="Ch1.S4.SS3">
  <label>4.3</label><title>Comparison of the induced velocity at the wing and the aerodynamic loads</title>
      <p id="d2e5844">For the purpose of optimal control, we are primarily interested in the induced velocity evaluated <italic>at the wing position</italic> and its effect on the aerodynamic loads. However, the DUST model does not differentiate between the induced velocity by the “far”-wake structure and the local circulation around the wing that produces lift, as we do in the optimization model. Thus, to eliminate the local circulation effect around the wing, we probe the wind field by means of an imaginary pitot tube of length <inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.9</mml:mn><mml:mi>b</mml:mi></mml:mrow></mml:math></inline-formula> pointing forward in the chord direction. For the vortex-loop model, we evaluate the induced velocity at the same location:

            <disp-formula id="Ch1.E34" content-type="numbered"><label>34</label><mml:math id="M131" display="block"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi>i</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">c</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M132" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mrow><mml:mi mathvariant="normal">c</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> being the pitch-corrected chordwise body frame vector.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e5973">Comparison of the induced velocity (left) and aerodynamic force (right) components corresponding to the continuous vortex-loop and DUST simulations. Note that the vortex-loop profiles are periodic and correspond to a developed wake of 6.5 periods, whereas the DUST simulation starts with no wake history, and thus we can observe the wake build-up.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f06.png"/>

        </fig>

      <p id="d2e5982">Figure <xref ref-type="fig" rid="F6"/> (left) shows the component-wise comparison of the measured induced velocity, normalized with the free-stream wind speed. For the first half rotation, the DUST induced velocity is almost zero, as the wake has not developed yet. After that, the magnitude of the induced velocity increases rotation after rotation as the wake builds up until it reaches a steady state. When comparing the induced velocities at the end of the DUST simulation with those from the periodic vortex-loop simulation, we see  very good agreement between the <inline-formula><mml:math id="M133" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M134" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> components. Also for the <inline-formula><mml:math id="M135" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> component, the vortex-loop model captures the unsteady nature of the wake very well. However, due to the overestimation in convection velocity, the vortex-loop model underestimates the induced velocity by up to 25 % in the dominant <inline-formula><mml:math id="M136" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction.</p>
      <p id="d2e6016">Figure <xref ref-type="fig" rid="F6"/> (right) shows the effect of this mismatch on the different components of the aerodynamic loads <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>. Again, we have  very good agreement in the <inline-formula><mml:math id="M138" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M139" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions. In the <inline-formula><mml:math id="M140" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction, the induced velocity mismatch leads to an overestimation of the angle of attack and consequently an overestimation of the loads up to 5 %.</p>
      <p id="d2e6080">In summary, the vortex-loop model provides a strong match with the DUST benchmark. The <inline-formula><mml:math id="M141" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M142" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> components of the induced velocities are captured with high accuracy. In the dominant <inline-formula><mml:math id="M143" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction there is a moderate mismatch, mainly resulting from the limitations of the convection model. Nevertheless, it is important to note that the model reproduces the unsteady and non-axisymmetric nature of the wake, which conventional approaches fail to represent, very well.</p>

      <fig id="F7"><label>Figure 7</label><caption><p id="d2e6106">Snapshot of the axial induction factor fields (<inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>x</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">∞</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>) in the <inline-formula><mml:math id="M145" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi>y</mml:mi><mml:mo mathvariant="normal" stretchy="false">^</mml:mo></mml:mover><mml:mover accent="true"><mml:mi>z</mml:mi><mml:mo stretchy="false" mathvariant="normal">^</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula> plane perpendicular to the average main tether direction, located at the average wing position (top row), in the plane defined by <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> (middle row) and  the vertical induction factor <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>z</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mrow><mml:mi mathvariant="normal">∞</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:math></inline-formula>) in the plane defined by <inline-formula><mml:math id="M148" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. Note that we include the “near-wake” part of the vortex <inline-formula><mml:math id="M149" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-loop induction; i.e. the first integral in Eq. (<xref ref-type="disp-formula" rid="Ch1.E19"/>) starts at <inline-formula><mml:math id="M150" display="inline"><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. The wing trajectories are included in green (wing 1) and purple (wing 2). The wings are drawn at their position and with their orientation at the moment of the snapshot.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f07.png"/>

        </fig>

</sec>
<sec id="Ch1.S4.SS4">
  <label>4.4</label><title>Comparison of the induced velocity field in the neighbourhood of the wing</title>
      <p id="d2e6294">For optimization purposes, it is important to have a good model for the induced velocity evaluated not only at the wing position, but also in its surrounding neighbourhood. Therefore, we also compare the induced velocity field of the vortex-loop model with that of DUST in the region around the optimal trajectory. Figure <xref ref-type="fig" rid="F7"/> (top row) shows a snapshot of the wake at the same time point <inline-formula><mml:math id="M151" display="inline"><mml:mrow><mml:msup><mml:mi>t</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> as in Fig. <xref ref-type="fig" rid="F5"/>. It shows the induction factor <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> in the <inline-formula><mml:math id="M153" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction in a plane perpendicular to the average main tether direction, located at the average wings' position. The induction factor is computed taking into account the contribution of the entire wake. Figures <xref ref-type="fig" rid="F7"/> (middle row) and <xref ref-type="fig" rid="F7"/> (bottom row) plot the induction factor in the <inline-formula><mml:math id="M154" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M155" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions. In accordance with the findings in the previous section, we can discern a slight overall underestimation of the induced velocities in front of the wake. Nevertheless, the qualitative fit is very good in all directions.</p>
</sec>
</sec>
<sec id="Ch1.S5">
  <label>5</label><title>Efficient problem formulation</title>
      <p id="d2e6359">After the validation of the proposed wake model in the previous section, the goal of this section is to use this model in optimal control problem (OCP) formulations and outline the transcription and approximation steps taken to arrive at an efficient implementation. Therefore we first formulate the envisaged PDE-based optimal control problem in continuous time. Then we propose a wake discretization strategy using auxiliary wake states. This approach transcribes the PDE optimization problem into a standard continuous-time OCP with state jump constraints for the wake states. Finally, we introduce further simplifications to render the final OCP numerically tractable.</p>
<sec id="Ch1.S5.SS1">
  <label>5.1</label><title>PDE optimal control problem</title>
      <p id="d2e6369">For all types of crosswind kite systems, the challenge is to compute periodic flight orbits that maximize a certain averaged performance index. In the AWE case, the performance index is typically the power output. For the atmospheric airborne actuator case, as well as for the ship-towing case, the tether-pulling force is to be maximized. For the airborne actuator case, this metric is used as a proxy for the amount of momentum that it can redirect into the wind farm:

            <disp-formula id="Ch1.E35" content-type="numbered"><label>35</label><mml:math id="M156" display="block"><mml:mrow><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi>F</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">λ</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/></mml:mrow></mml:math></disp-formula>

          while satisfying the following constraints:

            <disp-formula id="Ch1.E36" content-type="numbered"><label>36</label><mml:math id="M157" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:msubsup><mml:mi>d</mml:mi><mml:mi mathvariant="normal">t</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msubsup><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:msub><mml:mi>F</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">2.2</mml:mn><mml:mi>b</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msup><mml:mo>)</mml:mo><mml:mo>⊤</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">ν</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which impose a maximum tether stress constraint, an anticollision constraint, and the bounds on the variables <inline-formula><mml:math id="M158" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e6654">Further, since the optimal state trajectory will be periodic, the wake state will be periodic in <inline-formula><mml:math id="M159" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> as well. Therefore we can reformulate the wake transport equation as

            <disp-formula id="Ch1.E37" content-type="numbered"><label>37</label><mml:math id="M160" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mo>[</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>]</mml:mo><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with the modulo operator <inline-formula><mml:math id="M161" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mi>t</mml:mi><mml:mo>]</mml:mo><mml:mo>:=</mml:mo><mml:mi>t</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mtext>mod</mml:mtext><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula> so that the wake state only needs to be tracked for <inline-formula><mml:math id="M162" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>. Using this reformulation, we can formulate the following continuous and periodic PDE optimal control problem:

            <disp-formula id="Ch1.Ex3"><mml:math id="M163" display="block"><mml:mrow><mml:mtable class="array" columnalign="left"><mml:mtr><mml:mtd><mml:mtext>minimize</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi>T</mml:mi></mml:munderover><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></disp-formula>

          subject to

            <disp-formula id="Ch1.E38" content-type="numbered"><label>38</label><mml:math id="M164" display="block"><mml:mtable class="array" rowspacing="5.690551pt 5.690551pt 5.690551pt 5.690551pt 5.690551pt" columnalign="right left left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="bold-italic">y</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mo>[</mml:mo><mml:mi>t</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>]</mml:mo><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="italic">τ</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">∞</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd><mml:mtd/></mml:mtr></mml:mtable></mml:math></disp-formula>

          This problem is infinite-dimensional in both <inline-formula><mml:math id="M165" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M166" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> and numerically intractable. The first step is to transcribe the problem into a form that is only infinite-dimensional in <inline-formula><mml:math id="M167" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>.</p>
</sec>
<sec id="Ch1.S5.SS2">
  <label>5.2</label><title>Wake transcription</title>
      <p id="d2e7329">We propose  discretizing the wake on a uniform grid of <inline-formula><mml:math id="M168" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> points in the <inline-formula><mml:math id="M169" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> space:

            <disp-formula id="Ch1.E39" content-type="numbered"><label>39</label><mml:math id="M170" display="block"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>&lt;</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>M</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mi>T</mml:mi><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and introduce the periodic wake state on this grid

            <disp-formula id="Ch1.E40" content-type="numbered"><label>40</label><mml:math id="M171" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>≈</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          which approximately tracks the evolution of points <inline-formula><mml:math id="M172" display="inline"><mml:mi>j</mml:mi></mml:math></inline-formula> in the wake, originating at a time <inline-formula><mml:math id="M173" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>=</mml:mo><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, which are convected away as time progresses. We can derive that the derivative of this wake state should approximate the forcing term in Eq. (<xref ref-type="disp-formula" rid="Ch1.E37"/>):

            <disp-formula id="Ch1.E41" content-type="numbered"><label>41</label><mml:math id="M174" display="block"><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>≈</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and we model its origination as an impulsive event along its periodic trajectory:

            <disp-formula id="Ch1.E42" content-type="numbered"><label>42</label><mml:math id="M175" display="block"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>+</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>≈</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Note how in Eq. (<xref ref-type="disp-formula" rid="Ch1.E41"/>) the individual derivatives each depend on the entire wake history, which is counterproductive as it produces cross-couplings over different time instances. To arrive at a more classical state equation, we propose extending the wake states with these derivatives and collecting both in one overall wake state:

            <disp-formula id="Ch1.E43" content-type="numbered"><label>43</label><mml:math id="M176" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The state equation is trivially given by (assuming rigid convection)

            <disp-formula id="Ch1.E44" content-type="numbered"><label>44</label><mml:math id="M177" display="block"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi>Y</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi mathvariant="normal">⋮</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mi>M</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and the impulse effect can be written as

            <disp-formula id="Ch1.E45" content-type="numbered"><label>45</label><mml:math id="M178" display="block"><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>+</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">G</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with the impulse function defined as

            <disp-formula id="Ch1.E46" content-type="numbered"><label>46</label><mml:math id="M179" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">G</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Here, the functions <inline-formula><mml:math id="M180" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M181" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">g</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula> are defined by replacing the induced velocity expression in the functions <inline-formula><mml:math id="M182" display="inline"><mml:mi mathvariant="bold-italic">f</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M183" display="inline"><mml:mi mathvariant="bold-italic">g</mml:mi></mml:math></inline-formula> as follows:

            <disp-formula id="Ch1.E47" content-type="numbered"><label>47</label><mml:math id="M184" display="block"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>≈</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where the function <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula> is obtained via a numerical integration scheme based on the discretized wake state <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> (see below).</p>
      <p id="d2e8175">To simplify notation, we further only consider the hybrid model where each wing experiences its own induction through the dipole model only (<inline-formula><mml:math id="M187" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">A</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula>) and the induction caused by the other wing's wake only for one full rotation with the vortex-loop model (<inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>T</mml:mi></mml:mrow></mml:math></inline-formula>). As discussed later in Sect. <xref ref-type="sec" rid="Ch1.S6"/>, this model choice is sufficiently accurate compared to the full vortex-loop model. Nevertheless, the following developments can be worked out for all different hybrid variants as well.</p>
      <p id="d2e8212">The integrals in Eq. (<xref ref-type="disp-formula" rid="Ch1.E28"/>) extend over an infinite horizon in the <inline-formula><mml:math id="M189" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula> domain, whereas the wake state <inline-formula><mml:math id="M190" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> retains only a single period <inline-formula><mml:math id="M191" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> of past history. However, using the analytic wake solution formula (Eq. <xref ref-type="disp-formula" rid="Ch1.E18"/>) and exploiting the wake periodicity, we can look further in the past by introducing (e.g.  for a wing “<inline-formula><mml:math id="M192" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula>”, <italic>as seen by wing “1”</italic>) a finite number <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> of “duplicate” wake states <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, based on the tracked wake states <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which are convected downwind for <inline-formula><mml:math id="M196" display="inline"><mml:mi>d</mml:mi></mml:math></inline-formula> periods of duration <inline-formula><mml:math id="M197" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>:

            <disp-formula id="Ch1.E48" content-type="numbered"><label>48</label><mml:math id="M198" display="block"><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mi>i</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>+</mml:mo><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi>T</mml:mi><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi>i</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Note that we also introduced the “near-wake parameter”  <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which ensures that we only consider the duplicates of those wake states that are in the near-wake region at the current time point <inline-formula><mml:math id="M200" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>. Formally, this parameter is defined as (for <inline-formula><mml:math id="M201" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>):

            <disp-formula id="Ch1.E49" content-type="numbered"><label>49</label><mml:math id="M202" display="block"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="{" close=""><mml:mtable columnspacing="1em" rowspacing="0.2ex" class="cases" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>≥</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>&lt;</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          and

            <disp-formula id="Ch1.E50" content-type="numbered"><label>50</label><mml:math id="M203" display="block"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="{" close=""><mml:mtable columnspacing="1em" rowspacing="0.2ex" class="cases" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>≥</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>&lt;</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          and <inline-formula><mml:math id="M204" display="inline"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">21</mml:mn><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mi mathvariant="normal">n</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8692">Based on the introduced duplicate wake states, the induced velocity for wing 1, using the hybrid model, can be computed numerically as follows using the midpoint integration rule:

            <disp-formula id="Ch1.E51" content-type="numbered"><label>51</label><mml:math id="M205" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:mfenced close=")" open="("><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>d</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>M</mml:mi></mml:munderover><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>M</mml:mi></mml:munderover><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          The induced velocity <inline-formula><mml:math id="M206" display="inline"><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for wing 2 is simply obtained by a change of index.</p>
</sec>
<sec id="Ch1.S5.SS3">
  <label>5.3</label><title>Window of influence</title>
      <p id="d2e8968">At every time instance <inline-formula><mml:math id="M207" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, the induced velocities defined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E51"/>) depend on the entire wake state <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>. This results in a dense sensitivity structure for the dynamics, which ultimately leads to a high memory usage, and more time spent in the linear solver backend of the optimization solver. Experience showed that it is crucial to exploit the fact that the influence of each wake element at any given time depends on how close it is to the position of the wing at that time. Therefore, the contribution of more remote elements can be neglected at a low loss of accuracy. We implement this by assigning a moving <italic>window of influence</italic> to each wing.</p>
      <p id="d2e8997">To this end, we divide the time grid in <inline-formula><mml:math id="M209" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> equidistant intervals

            <disp-formula id="Ch1.E52" content-type="numbered"><label>52</label><mml:math id="M210" display="block"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>=</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>&lt;</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>&lt;</mml:mo><mml:mi mathvariant="normal">…</mml:mi><mml:mo>&lt;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>N</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi>T</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and as the wing passes through each interval, we only take into account the wake segments that originate from that particular interval and the neighbouring <inline-formula><mml:math id="M211" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> intervals, as illustrated by Fig. <xref ref-type="fig" rid="F8"/>.</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e9071">Illustration of the proposed fixed window of influence for a dual-kite system with a number of intervals <inline-formula><mml:math id="M212" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">16</mml:mn></mml:mrow></mml:math></inline-formula>, number of discrete vortex elements <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">32</mml:mn></mml:mrow></mml:math></inline-formula>, number of duplicates <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>, and number of neighbouring elements taken into account <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> by the window of influence.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f08.png"/>

        </fig>

      <p id="d2e9138">At a given time point <inline-formula><mml:math id="M216" display="inline"><mml:mi>t</mml:mi></mml:math></inline-formula>, we determine the current interval <inline-formula><mml:math id="M217" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> as

            <disp-formula id="Ch1.E53" content-type="numbered"><label>53</label><mml:math id="M218" display="block"><mml:mrow><mml:mi>k</mml:mi><mml:mo>:=</mml:mo><mml:mfenced open="⌊" close="⌋"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi>N</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mi>T</mml:mi></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          and the window that is taken into account in interval <inline-formula><mml:math id="M219" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is defined by the boundaries

                <disp-formula specific-use="align" content-type="numbered"><mml:math id="M220" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E54"><mml:mtd><mml:mtext>54</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:munder><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>:=</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>T</mml:mi><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E55"><mml:mtd><mml:mtext>55</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>:=</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi>T</mml:mi><mml:mi>N</mml:mi></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          We then introduce the “far-wake parameters”

            <disp-formula id="Ch1.E56" content-type="numbered"><label>56</label><mml:math id="M221" display="block"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" rowspacing="0.2ex" columnspacing="1em" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:munder><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>otherwise</mml:mtext><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          and

            <disp-formula id="Ch1.E57" content-type="numbered"><label>57</label><mml:math id="M222" display="block"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:mfenced open="{" close=""><mml:mtable rowspacing="0.2ex" class="cases" columnspacing="1em" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">1</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mi mathvariant="normal">if</mml:mi><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo mathvariant="italic">{</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo mathvariant="italic">}</mml:mo><mml:mo>∩</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:munder><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:munder><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi>T</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>≠</mml:mo><mml:mi mathvariant="normal">∅</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>otherwise</mml:mtext><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">21</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>=</mml:mo><mml:msubsup><mml:mi>p</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup></mml:mrow></mml:math></inline-formula>. This parameter is then used to switch the contribution of the individual wake elements on and off, e.g. for wing <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>,

            <disp-formula id="Ch1.E58" content-type="numbered"><label>58</label><mml:math id="M225" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:munderover><mml:mfenced open="(" close=")"><mml:mrow><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>d</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:munderover><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>M</mml:mi></mml:munderover><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">d</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfenced><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">τ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>j</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mi>M</mml:mi></mml:munderover><mml:msubsup><mml:mi>p</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi></mml:mrow><mml:mi mathvariant="normal">f</mml:mi></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mi>j</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msubsup><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">τ</mml:mi><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          The parameter <inline-formula><mml:math id="M226" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> can then be tuned in numerical experiments to achieve the best trade-off between accuracy and computation time.</p>
</sec>
<sec id="Ch1.S5.SS4">
  <label>5.4</label><title>Continuous-time OCP implementation</title>
      <p id="d2e9822">By transcribing the wake model as detailed above, we can reformulate the PDE optimal control problem from Eq. (<xref ref-type="disp-formula" rid="Ch1.E38"/>) into the more standard continuous-time formulation

            <disp-formula id="Ch1.Ex4"><mml:math id="M227" display="block"><mml:mrow><mml:mtable class="array" columnalign="left"><mml:mtr><mml:mtd><mml:mtext>minimize</mml:mtext></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mo>⋅</mml:mo><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>,</mml:mo><mml:mi>T</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:mfrac></mml:mstyle><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mi>T</mml:mi></mml:munderover><mml:mi>l</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:math></disp-formula>

          subject to

            <disp-formula id="Ch1.E59" content-type="numbered"><label>59</label><mml:math id="M228" display="block"><mml:mrow><mml:mtable class="array" rowspacing="5.690551pt 5.690551pt 5.690551pt 5.690551pt 5.690551pt" columnalign="right left left"><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">h</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">z</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mi>Y</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>t</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>T</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>+</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">G</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>(</mml:mo><mml:mo>(</mml:mo><mml:msup><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mo>-</mml:mo></mml:msup><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:msubsup><mml:mi mathvariant="double-struck">I</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi>M</mml:mi></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd><mml:mtd/></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">Y</mml:mi><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd><mml:mtd/></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          where the dynamics <inline-formula><mml:math id="M229" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">F</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover></mml:math></inline-formula> are obtained by inserting the induced velocity expression from Eq. (<xref ref-type="disp-formula" rid="Ch1.E58"/>) into the dynamics <inline-formula><mml:math id="M230" display="inline"><mml:mi mathvariant="bold-italic">F</mml:mi></mml:math></inline-formula>.</p>
      <p id="d2e10341">Because the system under consideration is not reeling, a solution consisting of a single periodic flight loop is of practical interest. Moreover, specifically for this dual-kite case, we can consider the relevant solution where both wings fly identical trajectories, phase shifted by half a period. In this case, while one wing flies, e.g. the downstroke part, the other one simultaneously flies the upstroke. After half a period, the roles are reversed, and the first wing flies the identical upstroke and the other one the identical downstroke. To avoid simulating the same upstroke and downstroke twice, we can instead integrate the dynamics over only half an orbit, and instead of enforcing periodicity on the wing states, we can implement the “role reversal” by matching the end state of each wing to the initial state of the other, as proposed by <xref ref-type="bibr" rid="bib1.bibx45" id="text.35"/>:

            <disp-formula id="Ch1.E60" content-type="numbered"><label>60</label><mml:math id="M231" display="block"><mml:mrow><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi>T</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          with <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">L</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="italic">ψ</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, for <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:math></inline-formula>. As a consequence, the variables <inline-formula><mml:math id="M234" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M236" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> can be reduced by a factor of 2 while still simulating the full flight loop and wake with identical accuracy. Only the number of duplicates should be doubled to retain the same wake history. The time variable <inline-formula><mml:math id="M237" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula> automatically becomes the desired half-rotation near-wake cut-off time period.</p>
      <p id="d2e10516">We then transcribe this problem into a nonlinear program (NLP) using a direct collocation approach. The OCP is discretized using <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">8</mml:mn></mml:mrow></mml:math></inline-formula> collocation intervals. Each interval consists of four RadauIIa collocation points, and the transcription includes a time transformation approach to deal with the variable time grid, as detailed by <xref ref-type="bibr" rid="bib1.bibx9" id="text.36"/>. Additionally, the computational performance benefits from  additional lifting of the induced velocities as algebraic variables to reduce nonlinearity and symbolic complexity. We implemented this problem in the open-source framework <monospace>AWEbox</monospace> <xref ref-type="bibr" rid="bib1.bibx9" id="paren.37"/>, which relies on the symbolic framework <monospace>CasADi</monospace> <xref ref-type="bibr" rid="bib1.bibx2" id="paren.38"/> for automatic differentiation and the interface to the NLP solver <monospace>IPOPT</monospace> <xref ref-type="bibr" rid="bib1.bibx44" id="paren.39"/>, using <monospace>MA57</monospace> <xref ref-type="bibr" rid="bib1.bibx22" id="paren.40"/> as the linear solver backend. The problem is solved on an Intel Core i7 2.5 Ghz, 16 GB RAM.</p>
</sec>
</sec>
<sec id="Ch1.S6">
  <label>6</label><title>Numerical example</title>
      <p id="d2e10568">In this section, we illustrate the proposed approach by means of a numerical case study where a highly resolved reference OCP with a wake model is solved, and the solution and computational expense are compared to those of a no-wake OCP. In a second step, we investigate the sensitivity of the OCP solution and its computational expense with respect to key transcription parameters.</p>

<table-wrap id="T1"><label>Table 1</label><caption><p id="d2e10574">Kite system model parameters used in the numerical example.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Description</oasis:entry>
         <oasis:entry colname="col2">Symbol</oasis:entry>
         <oasis:entry colname="col3">Value</oasis:entry>
         <oasis:entry colname="col4">Dim.</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Wing mass</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:msub><mml:mi>m</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">4000</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M240" display="inline"><mml:mi mathvariant="normal">kg</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wing area</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M241" display="inline"><mml:mrow><mml:msub><mml:mi>S</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">200</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M242" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Aspect ratio</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M243" display="inline"><mml:mi mathvariant="normal">AR</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">10</oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Wing span</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M244" display="inline"><mml:mi>b</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">44.72</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M245" display="inline"><mml:mi mathvariant="normal">m</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Tether material density</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1464.2</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M247" display="inline"><mml:mrow><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Air density</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M248" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.225</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M249" display="inline"><mml:mrow><mml:mi mathvariant="normal">kg</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Free-stream wind velocity</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M251" display="inline"><mml:mrow><mml:mo>[</mml:mo><mml:mn mathvariant="normal">12</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mn mathvariant="normal">0</mml:mn><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mn mathvariant="normal">0</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M252" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Max tether stress</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M253" 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></oasis:entry>
         <oasis:entry colname="col3">2.4</oasis:entry>
         <oasis:entry colname="col4">GPa</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="T2"><label>Table 2</label><caption><p id="d2e10876">System variable bounds.</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="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Description</oasis:entry>
         <oasis:entry colname="col2">Symbol</oasis:entry>
         <oasis:entry colname="col3">Min</oasis:entry>
         <oasis:entry colname="col4">Max</oasis:entry>
         <oasis:entry colname="col5">Units</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Tether length</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M254" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">10.0</oasis:entry>
         <oasis:entry colname="col4">700.0</oasis:entry>
         <oasis:entry colname="col5">m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Flight altitude</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M255" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">200.0</oasis:entry>
         <oasis:entry colname="col4">–</oasis:entry>
         <oasis:entry colname="col5">m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Time period</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M256" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.0</oasis:entry>
         <oasis:entry colname="col4">10.0</oasis:entry>
         <oasis:entry colname="col5">s</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Tether multiplier</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M257" display="inline"><mml:mi mathvariant="italic">λ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M258" display="inline"><mml:mi mathvariant="normal">∞</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M259" display="inline"><mml:mrow><mml:mi mathvariant="normal">N</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">m</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Lift coefficient</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M260" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0</oasis:entry>
         <oasis:entry colname="col4">1.0</oasis:entry>
         <oasis:entry colname="col5">–</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Lift coefficient rate</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>C</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5.0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">5.0</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Roll angle</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M264" display="inline"><mml:mi mathvariant="italic">ψ</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">30.0</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">30.0</oasis:entry>
         <oasis:entry colname="col5">°</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Roll angle rate</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M266" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ψ</mml:mi><mml:mo mathvariant="normal">˙</mml:mo></mml:mover></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5.7</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4">5.7</oasis:entry>
         <oasis:entry colname="col5">°<inline-formula><mml:math id="M268" display="inline"><mml:mrow><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></oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<sec id="Ch1.S6.SS1">
  <label>6.1</label><title>OCP solution comparison</title>
      <p id="d2e11204">To illustrate the proposed approach, we solve the OCP from Eq. (<xref ref-type="disp-formula" rid="Ch1.E59"/>) for a dual-kite system using the numerical parameters provided by Table <xref ref-type="table" rid="T1"/> and with the variable bounds <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mi mathvariant="normal">min</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">ν</mml:mi><mml:mi mathvariant="normal">max</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> summarized in Table <xref ref-type="table" rid="T2"/>. As mentioned in Sect. <xref ref-type="sec" rid="Ch1.S4"/>, the dual-kite set-up is chosen to generate an interesting scenario for the validation. The wing size is chosen to be in the large-scale range envisaged by e.g. <xref ref-type="bibr" rid="bib1.bibx27" id="text.41"/> to decrease the sensitivity of the solution to tether drag in favour of the induction effects. Other properties and bounds represent typical values from the AWE literature, e.g. for tether properties <xref ref-type="bibr" rid="bib1.bibx33" id="paren.42"/> and aerodynamic properties and mass scaling <xref ref-type="bibr" rid="bib1.bibx45" id="paren.43"/>. The induction effects are roughly invariant with respect to the chosen wind speed. However, since the wind speed is chosen relatively high (<inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">∞</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">12</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), the effect of the wing mass on the dynamic trajectory is rather small in this example.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e11284">Comparison of the total aerodynamic forces obtained in the OCP with reference transcription of the hybrid model, with those obtained using the vortex-loop model and DUST simulation using the same boundary condition.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f09.png"/>

        </fig>

      <p id="d2e11293">To generate a first reference solution, the wake discretization parameters are chosen so that a good fit with the post-ex analytic wake solution is achieved. Figure <xref ref-type="fig" rid="F9"/> shows the obtained total aerodynamic forces compared to the analytic vortex-loop and DUST simulations using the same boundary condition. The fit is very good, which validates not only the reference transcription, but also the hypothesis of the hybrid model: that only the initial part of the wake needs to be modelled with vortex loops but that the rest of it can be modelled accurately with vortex dipoles. Table <xref ref-type="table" rid="T3"/> summarizes the chosen parameters. Note that these parameters are valid for the half-periodic formulation of the OCP.</p>

<table-wrap id="T3" specific-use="star"><label>Table 3</label><caption><p id="d2e11304">Wake discretization parameters used in the half-periodic OCP formulation.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="4">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="left"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Description</oasis:entry>
         <oasis:entry colname="col2">Symbol</oasis:entry>
         <oasis:entry colname="col3">Ref. case</oasis:entry>
         <oasis:entry colname="col4">A case</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Number of NLP intervals</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M272" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">8</oasis:entry>
         <oasis:entry colname="col4">8</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Number of discrete wake elements</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M273" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">24</oasis:entry>
         <oasis:entry colname="col4">8</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Number of wake duplicates</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">3</oasis:entry>
         <oasis:entry colname="col4">2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Number of intervals for window approach</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">w</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">8</oasis:entry>
         <oasis:entry colname="col4">8</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Window of influence size</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">9</oasis:entry>
         <oasis:entry colname="col4">3</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e11462">Optimal flight trajectories corresponding to the solution of the OCP from Eq. (<xref ref-type="disp-formula" rid="Ch1.E59"/>), where the induction is discarded (left) and where the hybrid induction model is used (right).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f10.png"/>

        </fig>

      <p id="d2e11473">Figure <xref ref-type="fig" rid="F10"/> shows the resulting optimal flight trajectory in comparison to the case where no induction (NI) model is included. Note that the corresponding optimal wake state, induced velocities, and aerodynamic forces have already been discussed in Sect. <xref ref-type="sec" rid="Ch1.S3"/> and shown in Figs. <xref ref-type="fig" rid="F4"/> to <xref ref-type="fig" rid="F7"/>. Table <xref ref-type="table" rid="T4"/> summarizes the main results of the optimization. The chosen induction model parameterization increases the computation time per iteration <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">CPU</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> by a factor of 16 compared to the NI case.</p>

<table-wrap id="T4" specific-use="star"><label>Table 4</label><caption><p id="d2e11501">Optimal solution indicators and computation time.</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="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="left"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Description</oasis:entry>
         <oasis:entry colname="col2">Symbol</oasis:entry>
         <oasis:entry colname="col3">No induction</oasis:entry>
         <oasis:entry colname="col4">Hybrid induction</oasis:entry>
         <oasis:entry colname="col5">Dimension</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Average tether force</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">8822.8</oasis:entry>
         <oasis:entry colname="col4">3967.5</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M279" display="inline"><mml:mi mathvariant="normal">kN</mml:mi></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Average airspeed</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M280" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">189.8</oasis:entry>
         <oasis:entry colname="col4">132.1</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M281" display="inline"><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Half time period</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M282" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">1.0</oasis:entry>
         <oasis:entry colname="col4">4.4</oasis:entry>
         <oasis:entry colname="col5">s</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Main tether length</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M283" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">700.0</oasis:entry>
         <oasis:entry colname="col4">700.0</oasis:entry>
         <oasis:entry colname="col5">m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Secondary tether length</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:msub><mml:mi>l</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">113.5</oasis:entry>
         <oasis:entry colname="col4">439.3</oasis:entry>
         <oasis:entry colname="col5">m</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Main tether diameter</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M285" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">t</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">68.7</oasis:entry>
         <oasis:entry colname="col4">47.8</oasis:entry>
         <oasis:entry colname="col5">mm</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Secondary tether diameter</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:msub><mml:mi>d</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">53.0</oasis:entry>
         <oasis:entry colname="col4">35.1</oasis:entry>
         <oasis:entry colname="col5">mm</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">CPU time per iteration</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msub><mml:mi>t</mml:mi><mml:mi mathvariant="normal">CPU</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">0.15</oasis:entry>
         <oasis:entry colname="col4">2.35</oasis:entry>
         <oasis:entry colname="col5">s</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <p id="d2e11783">The optimizer increases the secondary tether lengths from 2.5 in the NI case to almost 10 wing spans. While this leads to higher tether drag losses, it allows the system to fly longer time periods <inline-formula><mml:math id="M288" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>, which creates a larger convection distance between the system and its wake. Hence, the induction losses are reduced up to the point where the tether drag becomes dominant.</p>
      <p id="d2e11794">Also, because the available wind speed is reduced, the wings fly more slowly and experience a 30 % lower airspeed compared to the NI case, and they produce 55 % less average tether force. As a result, the tether diameters can be dimensioned smaller, which helps to dampen the effect of the increased tether drag. In conclusion, both the optimal design and the performance of the considered system are highly sensitive to the inclusion of induction effects.</p>
      <p id="d2e11797">We note that in this example, the resulting average airspeed of <inline-formula><mml:math id="M289" display="inline"><mml:mrow><mml:mn mathvariant="normal">190</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mrow class="unit"><mml:mi mathvariant="normal">m</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msup><mml:mi mathvariant="normal">s</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mrow></mml:math></inline-formula> in combination with the small turning radius leads to immense and practically infeasible centrifugal accelerations. A more realistic trajectory could be attained by lowering the design wind speed. Nevertheless, induction effects are roughly invariant with respect to the wind speed, and similar validation and design trade-off results are therefore expected for lower design wind speeds with lower flight speeds and therefore a more reasonable flight envelope.</p>
      <p id="d2e11821">Another improvement would be to add a mass-scaling law that takes into account the effect of the loading of the wing. In this very high loading case, this would lead to a significantly higher wing mass and therefore  a different design trade-off possibly favouring even shorter tether lengths to minimize the upwards flight path length. However, in the dual-kite set-up considered here, where only one of the two wings flies upwards at a time, the effect of wing mass on the optimal trajectory is typically low <xref ref-type="bibr" rid="bib1.bibx6" id="paren.44"/>, and we omit this extension for simplicity.</p>
</sec>
<sec id="Ch1.S6.SS2">
  <label>6.2</label><title>Discretization sensitivity</title>
      <p id="d2e11835">To assess the trade-off between computational effort and solution accuracy, we evaluate the impact of coarser wake parameterizations relative to the reference case. Each discretization parameter (<inline-formula><mml:math id="M290" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M291" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) is independently reduced, while the others are held at their reference values. For each configuration, the optimal control problem is resolved, and the resulting computational cost and accuracy are compared against the reference solution. The error <inline-formula><mml:math id="M293" display="inline"><mml:mi>E</mml:mi></mml:math></inline-formula> is defined relative to the reference solution so as to capture both the accuracy of the cost and that of the optimal design:

            <disp-formula id="Ch1.E61" content-type="numbered"><label>61</label><mml:math id="M294" display="block"><mml:mrow><mml:mi>E</mml:mi><mml:mo>:=</mml:mo><mml:mfenced close="∥" open="∥"><mml:mfenced close="]" open="["><mml:mtable class="matrix" columnalign="center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">t</mml:mi><mml:mo>∗</mml:mo></mml:msubsup><mml:mo>-</mml:mo><mml:msubsup><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ref</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mover accent="true"><mml:mi>F</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">t</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ref</mml:mi></mml:mrow><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mo>∗</mml:mo></mml:msup><mml:mo>-</mml:mo><mml:msubsup><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mi mathvariant="normal">ref</mml:mi><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow><mml:mrow><mml:msubsup><mml:mi mathvariant="bold-italic">θ</mml:mi><mml:mi mathvariant="normal">ref</mml:mi><mml:mo>∗</mml:mo></mml:msubsup></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mfenced></mml:mrow></mml:math></disp-formula>

          Figure <xref ref-type="fig" rid="F11"/> shows the trade-off between computational cost and accuracy across the tested wake parameterizations, including the no-induction (NI) case.</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e11969">Comparison of CPU time vs. relative error <inline-formula><mml:math id="M295" display="inline"><mml:mi>E</mml:mi></mml:math></inline-formula> of different wake parameterizations compared to the reference parameterization (CPU time given by dashed black line).</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f11.png"/>

        </fig>

      <p id="d2e11985">As the number of wake duplicates is reduced (<inline-formula><mml:math id="M296" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>↓</mml:mo></mml:mrow></mml:math></inline-formula>), the solution accuracy is significantly affected. In particular, whether to include the first duplicate (<inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>) or not has a large influence. The computation time, on the other hand, is hardly affected, as the duplicates do not change the NLP dimensions or sparsity pattern. This suggests that the number of duplicates should be carefully selected but that they can be added at little additional computational cost.</p>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e12019">Time-resolved optimal far-wake induction profile (<inline-formula><mml:math id="M298" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> component), evaluated at wing 1, for different numbers of wake elements <inline-formula><mml:math id="M299" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula> compared with the exact vortex-loop solution evaluated for <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">24</mml:mn></mml:mrow></mml:math></inline-formula>.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/11/1751/2026/wes-11-1751-2026-f12.png"/>

        </fig>

      <p id="d2e12054">Reducing the window of influence size (<inline-formula><mml:math id="M301" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>↓</mml:mo></mml:mrow></mml:math></inline-formula>) significantly decreases computation time, as the resulting NLP becomes increasingly sparse. However, when the window is chosen too small (in this case, <inline-formula><mml:math id="M302" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>), solution accuracy deteriorates, and a spurious trajectory is obtained that performs even worse than the no-induced-wake (NI) case. These observations justify the introduction of a finite window of influence and highlight <inline-formula><mml:math id="M303" display="inline"><mml:mrow><mml:msub><mml:mi>N</mml:mi><mml:mi mathvariant="normal">f</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> as a key discretization parameter governing the balance between numerical efficiency and model fidelity.</p>
      <p id="d2e12096">Finally, reducing the number of wake elements (<inline-formula><mml:math id="M304" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>↓</mml:mo></mml:mrow></mml:math></inline-formula>) leads to a moderate decrease in both computation time and solution accuracy, indicating that relatively coarse discretizations can still yield meaningful results. However, for small <inline-formula><mml:math id="M305" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>, oscillations appear in the time-resolved profile of the induced velocity, as illustrated by Fig. <xref ref-type="fig" rid="F12"/>. This behaviour arises from the dependence of the induced velocity on the wing position: when the wing passes directly over a wake element, the induced velocity reaches a peak and subsequently drops to a minimum halfway to the next element. Consequently, the integration error in Eq. (<xref ref-type="disp-formula" rid="Ch1.E58"/>) is position dependent and sensitive to the choice of collocation grid in the time-continuous OCP (Eq. <xref ref-type="disp-formula" rid="Ch1.E59"/>). A potential remedy would be to implement a continuously moving window of influence that tracks the wing position, rather than the discrete interval-to-interval update scheme used here. While this would increase the computational complexity of the induced velocity evaluation, it could provide  consistent integration accuracy, especially for small values of <inline-formula><mml:math id="M306" display="inline"><mml:mi>M</mml:mi></mml:math></inline-formula>. Such an extension is left for future work.</p>
      <p id="d2e12130">Figure <xref ref-type="fig" rid="F12"/> also shows the induced velocity from the analytic vortex-loop solution evaluated at the optimal solution for <inline-formula><mml:math id="M307" display="inline"><mml:mrow><mml:mi>M</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">24</mml:mn></mml:mrow></mml:math></inline-formula>. The induced velocity computed using the hybrid wake representation (comprising a single layer of vortex loops followed by dipole elements) shows good agreement with the one obtained from the full vortex-loop formulation, thereby justifying the use of dipoles for far-convected wake elements in this case. For applications involving larger convection distances, as are likely to occur for the case of single-kite AWE systems, the accuracy of the hybrid approximation is expected to improve further.</p>
      <p id="d2e12147">Based on the sensitivity analysis above, a new parameterization, denoted as “A”, is selected by choosing for each discretization parameter the lowest value that still yields a relative error <inline-formula><mml:math id="M308" display="inline"><mml:mrow><mml:mi>E</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>. This configuration represents a Pareto-efficient trade-off between computational cost and model fidelity among the tested cases. At point A, it also holds that <inline-formula><mml:math id="M309" display="inline"><mml:mrow><mml:mi>E</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>, while the average computation time per iteration is now only a factor of 3 more expensive than the NI case, which comes with a value of <inline-formula><mml:math id="M310" display="inline"><mml:mrow><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">145</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mi mathvariant="italic">%</mml:mi></mml:mrow></mml:math></inline-formula>. In conclusion, when very high accuracy is not required – such as during design exploration or when other modelling errors are of comparable magnitude – there exist parameterizations that provide approximate solutions of the PDE OCP from Eq. (<xref ref-type="disp-formula" rid="Ch1.E38"/>) with only a moderate increase in computation time compared to the NI case.</p>
</sec>
</sec>
<sec id="Ch1.S7" sec-type="conclusions">
  <label>7</label><title>Conclusion and outlook</title>
      <p id="d2e12206">In this study, we introduced a novel continuous-time wake model for simulation and optimal control of crosswind kite systems. The new model is based on a hybrid combination of infinitesimal vortex-loop and dipole elements shed by the kites. Compared to existing vortex-based approaches, the model is capable of capturing the inherently unsteady and non-axisymmetric nature of how crosswind kite systems operate. Validation with the higher-fidelity free-vortex code DUST shows  good agreement between the two simulations. One remaining point of mismatch is the wake convection velocity. In this study, three different heuristics for selecting the convection velocity were compared, and the best candidate was selected. However, this candidate overestimates the convection velocity, resulting in a remaining  5 % overestimation of the aerodynamic forces produced in the validation simulations. The model is also  able to effectively capture the induced velocity field around the wing trajectory flown.</p>
      <p id="d2e12209">As a second contribution, we proposed a formulation that allows one to efficiently incorporate the new wake model into periodic optimal control problems. The formulation exploits the periodicity of the wake, and its efficacy particularly hinges on the introduction of a moving window of influence that only considers the part of the wake within a certain region around the flying wings' trajectory. Using an accurate reference parameterization of the wake model, the original (without wake) OCP cost is increased with a factor of 16. However, if we tolerate a loss of accuracy of  5 % compared to this accurate reference solution with a wake, we can achieve a modest slowdown of a factor of 3 compared to the original problem without a wake (which deviates from the reference solution with a wake with  145 %).</p>
      <p id="d2e12212">Apart from improving the model validity, future work should focus on improving the window of influence used in the OCP formulation. Ideally, this window would move continuously along with the wing and not just update as the wing passes from one interval to the next. Such an improvement would eliminate oscillations in the time-resolved induced velocity profile and result in  consistent integration accuracy for the induced velocity expression.</p>
      <p id="d2e12215">In this work, we applied the new model to a dual-kite system and optimized its flight trajectory, consisting of one single loop, for maximum pulling force. Future work could focus on expanding to the following applications. First, we could extend the current example to a multi-loop scenario, where the wings fly multiple (possibly differing) loops within one period. While  the wings cannot escape their own wake in the current one-loop example, in this new scenario, the wings would be able to adapt their trajectory during the subsequent loops to avoid the wake from the previous ones, thereby boosting performance. Second, future research could investigate the application to the single-wing airborne wind energy systems currently pursued by the AWE industry. While the flight trajectories of these systems are characterized by longer time periods as considered in the example of this paper, therefore necessitating a larger number of discrete wake elements, the wake model could still remain numerically tractable. Because of the long time period and long convection distance, it is likely that the initial vortex-loop part of the hybrid wake can be discarded in favour of the cheaper vortex dipole model, with less wake duplicates needed. This application would then enable one to compute wake-sensitive flight trajectories and provide an important stepping stone to realistically assess the achievable power density of these systems.</p>
</sec>

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

<app id="App1.Ch1.S1">
  <label>Appendix A</label><title>Induced velocity expression of a vortex-loop element with finite width</title>
      <p id="d2e12229">Consider a vortex-loop element as visualized in Fig. <xref ref-type="fig" rid="F2"/>, characterized by the state <inline-formula><mml:math id="M311" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>:=</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> and with a finite height <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mi mathvariant="italic">π</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mi>b</mml:mi></mml:mrow></mml:math></inline-formula> and width <inline-formula><mml:math id="M313" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:math></inline-formula>. The velocity induced by this element at a position <inline-formula><mml:math id="M314" display="inline"><mml:mi mathvariant="bold-italic">q</mml:mi></mml:math></inline-formula> is given by applying the Biot–Savart law to all four finite vortex filaments of the vortex loop

          <disp-formula id="App1.Ch1.S1.E62" content-type="numbered"><label>A1</label><mml:math id="M315" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">vl</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">y</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi><mml:mo>)</mml:mo><mml:mo>:=</mml:mo><mml:munderover><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:munderover><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

        with

              <disp-formula specific-use="align" content-type="numbered"><mml:math id="M316" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E63"><mml:mtd><mml:mtext>A2</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">bs</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E64"><mml:mtd><mml:mtext>A3</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">bs</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E65"><mml:mtd><mml:mtext>A4</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">bs</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">4</mml:mn></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E66"><mml:mtd><mml:mtext>A5</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">bs</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>)</mml:mo><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

        where <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">b</mml:mi></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">n</mml:mi></mml:msub><mml:mo>×</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and where the four corners (anticlockwise) are

              <disp-formula specific-use="align" content-type="numbered"><mml:math id="M318" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="App1.Ch1.S1.E67"><mml:mtd><mml:mtext>A6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">8</mml:mn></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E68"><mml:mtd><mml:mtext>A7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">8</mml:mn></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E69"><mml:mtd><mml:mtext>A8</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">8</mml:mn></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="App1.Ch1.S1.E70"><mml:mtd><mml:mtext>A9</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:msub><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mn mathvariant="normal">4</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mspace width="0.125em" linebreak="nobreak"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>c</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">π</mml:mi><mml:mi>b</mml:mi></mml:mrow><mml:mn mathvariant="normal">8</mml:mn></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.125em"/><mml:msub><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mi>b</mml:mi></mml:msub><mml:mspace linebreak="nobreak" width="0.33em"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

        and with the Biot–Savart evaluation function

          <disp-formula id="App1.Ch1.S1.E71" content-type="numbered"><label>A10</label><mml:math id="M319" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mrow><mml:mi mathvariant="normal">f</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">bs</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">p</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Γ</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>:=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="normal">Γ</mml:mi><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mi mathvariant="italic">π</mml:mi><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>×</mml:mo><mml:mi mathvariant="bold-italic">e</mml:mi><mml:msup><mml:mo>‖</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>×</mml:mo><mml:mi mathvariant="bold-italic">e</mml:mi></mml:mrow></mml:mfenced></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:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>‖</mml:mo></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="bold-italic">e</mml:mi><mml:mo>⋅</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>‖</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>‖</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mspace width="0.33em" linebreak="nobreak"/><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        where <inline-formula><mml:math id="M320" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>:=</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="bold-italic">p</mml:mi></mml:mrow></mml:math></inline-formula>  and <inline-formula><mml:math id="M321" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>:=</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mi mathvariant="bold-italic">e</mml:mi></mml:mrow></mml:math></inline-formula>, with <inline-formula><mml:math id="M322" display="inline"><mml:mi mathvariant="normal">ℓ</mml:mi></mml:math></inline-formula> being the vortex filament length and <inline-formula><mml:math id="M323" display="inline"><mml:mi mathvariant="bold-italic">e</mml:mi></mml:math></inline-formula> its unit direction vector. The linearization <inline-formula><mml:math id="M324" display="inline"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mi mathvariant="normal">vl</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>s</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:math></inline-formula> used in Eq. (<xref ref-type="disp-formula" rid="Ch1.E23"/>) is finally obtained through algorithmic differentiation using <monospace>CasADi</monospace>.</p>
</app>
  </app-group><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d2e13133">The code used to formulate and solve the optimal control problems is available as part of the <monospace>AWEbox</monospace> toolbox at <ext-link xlink:href="https://doi.org/10.5281/zenodo.20208710" ext-link-type="DOI">10.5281/zenodo.20208710</ext-link> <xref ref-type="bibr" rid="bib1.bibx10" id="paren.45"/>. The toolchain that generates DUST input files from <monospace>AWEbox</monospace> results (including those obtained in this paper) is available under the name <monospace>AWEWA</monospace> at <ext-link xlink:href="https://doi.org/10.5281/zenodo.20238024" ext-link-type="DOI">10.5281/zenodo.20238024</ext-link> <xref ref-type="bibr" rid="bib1.bibx35" id="paren.46"/>. <monospace>DUST</monospace> is open source and available online at <uri>https://www.dust.polimi.it/</uri> (last access: 25 November 2025).</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e13167">Methodology, JDS, AM, RL, MD; formal analysis, JDS, AM; project administration, JDS, MD; resources, MD; supervision, JDS, MD; writing – original draft, JDS; writing – review and editing, AM, RL, MD; funding acquisition, JDS, MD.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e13173">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="d2e13179">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e13186">The authors would like to thank Gianni Cassoni and the DUST developers for their support in setting up the DUST simulations. The authors used ChatGPT to improve the flow and writing quality of the scientific text in some places. The authors reviewed and edited the content as needed and take full responsibility for the content of the publication.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e13191">This research was supported by DFG via the project 525018088 (MAWERO).This open-access publication was funded  by the University of Freiburg.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

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

      <ref id="bib1.bibx1"><label>Akberali et al.(2021)</label><mixed-citation>Akberali, A., Kheiri, M., and Bourgault, F.: Generalized aerodynamic models for crosswind kite power systems, J. Wind Eng. Ind. Aerod., 215, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2021.104664" ext-link-type="DOI">10.1016/j.jweia.2021.104664</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Andersson et al.(2019)</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>Branlard(2017)</label><mixed-citation>Branlard, E.: Wind Turbine Aerodynamics and Vorticity-Based Methods, Springer-Cham, <ext-link xlink:href="https://doi.org/10.1007/978-3-319-55164-7" ext-link-type="DOI">10.1007/978-3-319-55164-7</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Crismer et al.(2026)</label><mixed-citation>Crismer, J.-B., Haas, T., Duponcheel, M., and Winckelmans, G.: Large eddy simulation of airborne wind energy systems flying in turbulent wind using model predictive control, Wind Energ. Sci. Discuss. [preprint], <ext-link xlink:href="https://doi.org/10.5194/wes-2025-288" ext-link-type="DOI">10.5194/wes-2025-288</ext-link>, in review, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>De Lellis et al.(2018)</label><mixed-citation>De Lellis, M., Reginatto, R., Saraiva, R., and Trofino, A.: The Betz limit applied to Airborne Wind Energy, Renewable Energy, 127, 32–40, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2018.04.034" ext-link-type="DOI">10.1016/j.renene.2018.04.034</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>De Schutter(2024)</label><mixed-citation>De Schutter, J.: Periodic optimal control methods for nonlinear energy conversion systems, Ph.D. thesis, University of Freiburg, <ext-link xlink:href="https://doi.org/10.6094/UNIFR/248910" ext-link-type="DOI">10.6094/UNIFR/248910</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>De Schutter et al.(2018)</label><mixed-citation>De Schutter, J., Leuthold, R., and Diehl, M.: Optimal Control of a Rigid-Wing Rotary Kite System for Airborne Wind Energy, in: Proceedings of the European Control Conference (ECC), <ext-link xlink:href="https://doi.org/10.23919/ECC.2018.8550383" ext-link-type="DOI">10.23919/ECC.2018.8550383</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>De Schutter et al.(2023a)</label><mixed-citation>De Schutter, J., Harzer, J., and Diehl, M.: Vertical Airborne Wind Energy Farms with High Power Density per Ground Area based on Multi-Aircraft Systems, Eur. J. Control, 74, 100867, <ext-link xlink:href="https://doi.org/10.1016/j.ejcon.2023.100867" ext-link-type="DOI">10.1016/j.ejcon.2023.100867</ext-link>, 2023a.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>De Schutter et al.(2023b)</label><mixed-citation>De Schutter, J., Leuthold, R., Bronnenmeyer, T., Malz, E., Gros, S., and Diehl, M.: AWEbox: An Optimal Control Framework for Single- and Multi-Aircraft Airborne Wind Energy Systems, Energies, 16, 1900, <ext-link xlink:href="https://doi.org/10.3390/en16041900" ext-link-type="DOI">10.3390/en16041900</ext-link>, 2023b.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>De Schutter et al.(2026)</label><mixed-citation>De Schutter, J., Leuthold, R., and Bronnenmeyer, T.: Code release for “Optimal Control of Crosswind Kite Systems with an Engineering Wake Model based on Vortex Loops and Dipoles” (Wind Energy Science, 2026) (v1.0.0-wes-2026), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20208710" ext-link-type="DOI">10.5281/zenodo.20208710</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Fagiano et al.(2022)</label><mixed-citation>Fagiano, L., Quack, M., Bauer, F., Carnel, L., and Oland, E.: Autonomous Airborne Wind Energy Systems: Accomplishments and Challenges, Annual Review of Control, Robotics, and Autonomous Systems, 5, 603–631, <ext-link xlink:href="https://doi.org/10.1146/annurev-control-042820-124658" ext-link-type="DOI">10.1146/annurev-control-042820-124658</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Fritz(2013)</label><mixed-citation>Fritz, F.: Airborne Wind Energy, chap. Application of an Automated Kite System for Ship Propulsion and Power Generation,  391–411, Springer-Verlag Berlin Heidelberg, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-39965-7_20" ext-link-type="DOI">10.1007/978-3-642-39965-7_20</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Gaunaa et al.(2020)</label><mixed-citation>Gaunaa, M., Forsting, A. M., and Trevisi, F.: An engineering model for the induction of crosswind kite power systems, J. Phys. Conf. Ser., 1618, 032010, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1618/3/032010" ext-link-type="DOI">10.1088/1742-6596/1618/3/032010</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Gros and Diehl(2013)</label><mixed-citation>Gros, S. and Diehl, M.: Modeling of Airborne Wind Energy Systems in Natural Coordinates, in: Airborne Wind Energy, Springer-Verlag Berlin Heidelberg, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-39965-7_10" ext-link-type="DOI">10.1007/978-3-642-39965-7_10</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Gros and Zanon(2018)</label><mixed-citation>Gros, S. and Zanon, M.: Numerical Optimal Control with Periodicity Constraints in the Presence of Invariants, IEEE T. Automat. Contr., 63, 2818–2832, <ext-link xlink:href="https://doi.org/10.1109/TAC.2017.2772039" ext-link-type="DOI">10.1109/TAC.2017.2772039</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Gros et al.(2013)</label><mixed-citation>Gros, S., Zanon, M., and Diehl, M.: A Relaxation Strategy for the Optimization of Airborne Wind Energy Systems, in: Proceedings of the European Control Conference (ECC),  1011–1016, <ext-link xlink:href="https://doi.org/10.23919/ECC.2013.6669670" ext-link-type="DOI">10.23919/ECC.2013.6669670</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Haas et al.(2019)</label><mixed-citation>Haas, T., De Schutter, J., Diehl, M., and Meyers, J.: Wake characteristics of pumping mode airborne wind energy systems, J. Phys. Conf. Ser., 1256, 012016, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/1256/1/012016" ext-link-type="DOI">10.1088/1742-6596/1256/1/012016</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Haas et al.(2022)</label><mixed-citation>Haas, T., De Schutter, J., Diehl, M., and Meyers, J.: Large-eddy simulation of airborne wind energy farms, Wind Energ. Sci., 7, 1093–1135, <ext-link xlink:href="https://doi.org/10.5194/wes-7-1093-2022" ext-link-type="DOI">10.5194/wes-7-1093-2022</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Hart(1982)</label><mixed-citation> Hart, C.: Kites: a Historical Survey, Paul P. Appel Publisher, 1982.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Heydarnia et al.(2025)</label><mixed-citation>Heydarnia, O., Wauters, J., Lefebvre, T., and Crevecoeur, G.: Optimal Path Planning of Airborne Wind Energy Systems with a Flexible Tether, Journal of Guidance, Control and Dynamics, 48, 1–8, <ext-link xlink:href="https://doi.org/10.2514/1.G008967" ext-link-type="DOI">10.2514/1.G008967</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Horn et al.(2013)</label><mixed-citation>Horn, G., Gros, S., and Diehl, M.: Numerical Trajectory Optimization for Airborne Wind Energy Systems Described by High Fidelity Aircraft Models, in: Airborne Wind Energy, Springer-Verlag Berlin Heidelberg, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-39965-7_11" ext-link-type="DOI">10.1007/978-3-642-39965-7_11</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>HSL(2011)</label><mixed-citation>HSL: A collection of Fortran codes for large scale scientific computation, <uri>http://www.hsl.rl.ac.uk</uri> (last access: 25 November 2025), 2011.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Joshi et al.(2024)</label><mixed-citation>Joshi, R., Schmehl, R., and Kruijff, M.: Power curve modelling and scaling of fixed-wing ground-generation airborne wind energy systems, Wind Energ. Sci., 9, 2195–2215, <ext-link xlink:href="https://doi.org/10.5194/wes-9-2195-2024" ext-link-type="DOI">10.5194/wes-9-2195-2024</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Kaufman-Martin et al.(2022)</label><mixed-citation>Kaufman-Martin, S., Naclerio, N., May, P., and Luzzatto-Fegiz, P.: An entrainment-based model for annular wakes, with applications to airborne wind energy, Wind Energy, 25, 419–431, <ext-link xlink:href="https://doi.org/10.1002/we.2679" ext-link-type="DOI">10.1002/we.2679</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Kheiri et al.(2019)</label><mixed-citation>Kheiri, M., Nasrabad, V. S., and Bourgault, F.: A new perspective on the aerodynamic performance and power limit of crosswind kite systems, J. Wind Eng. Ind. Aerod., 190, 190–199, <ext-link xlink:href="https://doi.org/10.1016/j.jweia.2019.04.010" ext-link-type="DOI">10.1016/j.jweia.2019.04.010</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Kokkedee(2022)</label><mixed-citation> Kokkedee, J.: Wind farm wake flow recovery with the use of kites, Master's thesis, Delft University of Technology, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Kruijff and Ruiterkamp(2018)</label><mixed-citation>Kruijff, M. and Ruiterkamp, R.: A roadmap towards airborne wind energy in the utility sector, in: Airborne Wind Energy: Advances in Technology Development and Research, Springer, Singapore, <ext-link xlink:href="https://doi.org/10.1007/978-981-10-1947-0_26" ext-link-type="DOI">10.1007/978-981-10-1947-0_26</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Leuthold et al.(2017)</label><mixed-citation>Leuthold, R., Gros, S., and Diehl, M.: Induction in Optimal Control of Multiple-Kite Airborne Wind Energy Systems, in: Proceedings of 20th IFAC World Congress, Toulouse, France, <ext-link xlink:href="https://doi.org/10.1016/j.ifacol.2017.08.026" ext-link-type="DOI">10.1016/j.ifacol.2017.08.026</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Leuthold et al.(2018)</label><mixed-citation>Leuthold, R., De Schutter, J., Malz, E. C., Licitra, G., Gros, S., and Diehl, M.: Operational Regions of a Multi-Kite AWE System, in: European Control Conference (ECC), <ext-link xlink:href="https://doi.org/10.23919/ECC.2018.8550199" ext-link-type="DOI">10.23919/ECC.2018.8550199</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Leuthold et al.(2024)</label><mixed-citation>Leuthold, R., De Schutter, J., Crawford, C., Gros, S., and Diehl, M.: Rigid-Wake Lifting-Line Vortex Modeling in a Single-Kite AWE Optimal Control Problem, in: Book of Abstracts of the Airborne Wind Energy Conference 2024, edited by: Sánchez-Arriaga, G., Thoms, S., and Schmehl, R., Delft University of Technology, <ext-link xlink:href="https://doi.org/10.4233/uuid:85fd0eb1-83ec-4e34-9ac8-be6b32082a52" ext-link-type="DOI">10.4233/uuid:85fd0eb1-83ec-4e34-9ac8-be6b32082a52</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Loyd(1980)</label><mixed-citation>Loyd, M.: Crosswind Kite Power, J. Energ., 4, 106–111, <ext-link xlink:href="https://doi.org/10.2514/3.48021" ext-link-type="DOI">10.2514/3.48021</ext-link>, 1980.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Malz et al.(2020)</label><mixed-citation>Malz, E., Verendel, V., and Gros, S.: Computing the Power Profiles for an Airborne Wind Energy System based on Large-Scale Wind Data, Renewable Energy, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2020.06.056" ext-link-type="DOI">10.1016/j.renene.2020.06.056</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Malz et al.(2019)</label><mixed-citation>Malz, E. C., Koenemann, J., Sieberling, S., and Gros, S.: A Reference Model for Airborne Wind Energy Systems for Optimization and Control, Renewable Energy, 140, 1004–1011, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2019.03.111" ext-link-type="DOI">10.1016/j.renene.2019.03.111</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Manwell et al.(2009)</label><mixed-citation>Manwell, J. F., McGowan, J. G., and Rogers, A. L.: Wind Energy Explained: Theory, Design and Application, Second Edition, John Wiley &amp; Sons, Ltd, Chichester, UK, <ext-link xlink:href="https://doi.org/10.1002/9781119994367" ext-link-type="DOI">10.1002/9781119994367</ext-link>, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Mühleck and De Schutter(2026)</label><mixed-citation>Mühleck, A. and De Schutter, J.: Toni2412/AWEWA: Code release for Section 4 “Optimal Control of Crosswind Kite Systems with an Engineering Wake Model based on Vortex Loops and Dipoles” (Wind Energy Science, 2026) (v1.0.0), Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.20238024" ext-link-type="DOI">10.5281/zenodo.20238024</ext-link>, 2026.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Noga et al.(2024)</label><mixed-citation>Noga, R., Paulig, X., Schmidt, L., Karg, B., Quack, M., and Soliman, M.: Optimization of 3-D flight trajectory of variable trim kites for airborne wind energy production, Industrial Abstract accepted to the Europan Control Conference (ECC) 2024, arXiv,  <ext-link xlink:href="https://doi.org/10.48550/arXiv.2403.00382" ext-link-type="DOI">10.48550/arXiv.2403.00382</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Ploumakis and Bierbooms(2018)</label><mixed-citation>Ploumakis, E. and Bierbooms, W.: Enhanced Kinetic Energy Entrainment in Wind Farm Wakes: Large Eddy Simulation Study of a Wind Turbine Array with Kites, 165–185, Springer Singapore, Singapore, ISBN 978-981-10-1947-0, <ext-link xlink:href="https://doi.org/10.1007/978-981-10-1947-0_8" ext-link-type="DOI">10.1007/978-981-10-1947-0_8</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Pynaert et al.(2025)</label><mixed-citation>Pynaert, N., Haas, T., Wauters, J., Crevecoeur, G., and Degroote, J.: Aero-servo simulations of an airborne wind energy system using geometry-resolved computational fluid dynamics, Wind Energ. Sci., 10, 2663–2684, <ext-link xlink:href="https://doi.org/10.5194/wes-10-2663-2025" ext-link-type="DOI">10.5194/wes-10-2663-2025</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Trevisi et al.(2022)</label><mixed-citation>Trevisi, F., Castro-Fernández, I., Pasquinelli, G., Riboldi, C. E. D., and Croce, A.: Flight trajectory optimization of Fly-Gen airborne wind energy systems through a harmonic balance method, Wind Energ. Sci., 7, 2039–2058, <ext-link xlink:href="https://doi.org/10.5194/wes-7-2039-2022" ext-link-type="DOI">10.5194/wes-7-2039-2022</ext-link>, 2022. </mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Trevisi et al.(2023)</label><mixed-citation>Trevisi, F., Riboldi, C. E. D., and Croce, A.: Vortex model of the aerodynamic wake of airborne wind energy systems, Wind Energ. Sci., 8, 999–1016, <ext-link xlink:href="https://doi.org/10.5194/wes-8-999-2023" ext-link-type="DOI">10.5194/wes-8-999-2023</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Tugnoli et al.(2021)</label><mixed-citation>Tugnoli, D., Montagnani, D., Syal, M., Droandi, G., and Zanotti, A.: Mid-fidelity approach to aerodynamic simulations of unconventional VTOL aircraft configurations, Aerosp. Sci. Technol., 115, 106804, <ext-link xlink:href="https://doi.org/10.1016/j.ast.2021.106804" ext-link-type="DOI">10.1016/j.ast.2021.106804</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Van Niekerk(2025)</label><mixed-citation> Van Niekerk, T.: Enhancing Wind Farm Wake Recovery Through Kite-Induced Vertical Entrainment, Master's thesis, Delft University of Technology, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Vermillion et al.(2021)</label><mixed-citation>Vermillion, C., Cobb, M., Fagiano, L., Leuthold, R., Diehl, M., Smith, R. S., Wood, T. A., Rapp, S., Schmehl, R., Olinger, D., and Demetriou, M.: Electricity in the air: Insights from two decades of advanced control research and experimental flight testing of airborne wind energy systems, Annu. Rev. Control, 52, 330–357, <ext-link xlink:href="https://doi.org/10.1016/j.arcontrol.2021.03.002" ext-link-type="DOI">10.1016/j.arcontrol.2021.03.002</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Wächter and Biegler(2006)</label><mixed-citation>Wächter, A. and Biegler, L. T.: On the implementation of an interior-point filter line-search algorithm for large-scale nonlinear programming, Math. Program., 106, 25–57, <ext-link xlink:href="https://doi.org/10.1007/s10107-004-0559-y" ext-link-type="DOI">10.1007/s10107-004-0559-y</ext-link>, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Zanon et al.(2013)</label><mixed-citation>Zanon, M., Gros, S., Andersson, J., and Diehl, M.: Airborne Wind Energy Based on Dual Airfoils, IEEE T. Contr. Syst. T., 21, 1215–1222, <ext-link xlink:href="https://doi.org/10.1109/TCST.2013.2257781" ext-link-type="DOI">10.1109/TCST.2013.2257781</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Zanon et al.(2014)</label><mixed-citation>Zanon, M., Gros, S., Meyers, J., and Diehl, M.: Airborne Wind Energy: Airfoil-Airmass Interaction, in: Proceedings of the IFAC World Congress, 5814–5819, <ext-link xlink:href="https://doi.org/10.3182/20140824-6-ZA-1003.00258" ext-link-type="DOI">10.3182/20140824-6-ZA-1003.00258</ext-link>, 2014.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Optimal control of crosswind kite systems with an engineering wake model based on vortex loops and dipoles</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Akberali et al.(2021)</label><mixed-citation>
      
Akberali, A., Kheiri, M., and Bourgault, F.: Generalized aerodynamic models for
crosswind kite power systems, J. Wind Eng. Ind.
Aerod., 215, <a href="https://doi.org/10.1016/j.jweia.2021.104664" target="_blank">https://doi.org/10.1016/j.jweia.2021.104664</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Andersson et al.(2019)</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>Branlard(2017)</label><mixed-citation>
      
Branlard, E.: Wind Turbine Aerodynamics and Vorticity-Based Methods,
Springer-Cham, <a href="https://doi.org/10.1007/978-3-319-55164-7" target="_blank">https://doi.org/10.1007/978-3-319-55164-7</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Crismer et al.(2026)</label><mixed-citation>
      
Crismer, J.-B., Haas, T., Duponcheel, M., and Winckelmans, G.: Large eddy simulation of airborne wind energy systems flying in turbulent wind using model predictive control, Wind Energ. Sci. Discuss. [preprint], <a href="https://doi.org/10.5194/wes-2025-288" target="_blank">https://doi.org/10.5194/wes-2025-288</a>, in review, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>De Lellis et al.(2018)</label><mixed-citation>
      
De Lellis, M., Reginatto, R., Saraiva, R., and Trofino, A.: The Betz limit
applied to Airborne Wind Energy, Renewable Energy, 127, 32–40,
<a href="https://doi.org/10.1016/j.renene.2018.04.034" target="_blank">https://doi.org/10.1016/j.renene.2018.04.034</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>De Schutter(2024)</label><mixed-citation>
      
De Schutter, J.: Periodic optimal control methods for nonlinear energy
conversion systems, Ph.D. thesis, University of Freiburg,
<a href="https://doi.org/10.6094/UNIFR/248910" target="_blank">https://doi.org/10.6094/UNIFR/248910</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>De Schutter et al.(2018)</label><mixed-citation>
      
De Schutter, J., Leuthold, R., and Diehl, M.: Optimal Control of a Rigid-Wing
Rotary Kite System for Airborne Wind Energy, in: Proceedings of the European
Control Conference (ECC), <a href="https://doi.org/10.23919/ECC.2018.8550383" target="_blank">https://doi.org/10.23919/ECC.2018.8550383</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>De Schutter et al.(2023a)</label><mixed-citation>
      
De Schutter, J., Harzer, J., and Diehl, M.: Vertical Airborne Wind Energy Farms
with High Power Density per Ground Area based on Multi-Aircraft Systems,
Eur. J. Control, 74, 100867, <a href="https://doi.org/10.1016/j.ejcon.2023.100867" target="_blank">https://doi.org/10.1016/j.ejcon.2023.100867</a>,
2023a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>De Schutter et al.(2023b)</label><mixed-citation>
      
De Schutter, J., Leuthold, R., Bronnenmeyer, T., Malz, E., Gros, S., and Diehl,
M.: AWEbox: An Optimal Control Framework for Single- and Multi-Aircraft
Airborne Wind Energy Systems, Energies, 16, 1900, <a href="https://doi.org/10.3390/en16041900" target="_blank">https://doi.org/10.3390/en16041900</a>,
2023b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>De Schutter et al.(2026)</label><mixed-citation>
      
De Schutter, J., Leuthold, R., and Bronnenmeyer, T.: Code release for “Optimal Control of Crosswind Kite Systems with an Engineering Wake Model based on Vortex Loops and Dipoles” (Wind Energy Science, 2026) (v1.0.0-wes-2026), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.20208710" target="_blank">https://doi.org/10.5281/zenodo.20208710</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Fagiano et al.(2022)</label><mixed-citation>
      
Fagiano, L., Quack, M., Bauer, F., Carnel, L., and Oland, E.: Autonomous
Airborne Wind Energy Systems: Accomplishments and Challenges, Annual Review
of Control, Robotics, and Autonomous Systems, 5, 603–631,
<a href="https://doi.org/10.1146/annurev-control-042820-124658" target="_blank">https://doi.org/10.1146/annurev-control-042820-124658</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Fritz(2013)</label><mixed-citation>
      
Fritz, F.: Airborne Wind Energy, chap. Application of an Automated Kite System
for Ship Propulsion and Power Generation,  391–411, Springer-Verlag
Berlin Heidelberg, <a href="https://doi.org/10.1007/978-3-642-39965-7_20" target="_blank">https://doi.org/10.1007/978-3-642-39965-7_20</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Gaunaa et al.(2020)</label><mixed-citation>
      
Gaunaa, M., Forsting, A. M., and Trevisi, F.: An engineering model for the
induction of crosswind kite power systems, J. Phys. Conf.
Ser., 1618, 032010, <a href="https://doi.org/10.1088/1742-6596/1618/3/032010" target="_blank">https://doi.org/10.1088/1742-6596/1618/3/032010</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Gros and Diehl(2013)</label><mixed-citation>
      
Gros, S. and Diehl, M.: Modeling of Airborne Wind Energy Systems in Natural
Coordinates, in: Airborne Wind Energy, Springer-Verlag Berlin Heidelberg,
<a href="https://doi.org/10.1007/978-3-642-39965-7_10" target="_blank">https://doi.org/10.1007/978-3-642-39965-7_10</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Gros and Zanon(2018)</label><mixed-citation>
      
Gros, S. and Zanon, M.: Numerical Optimal Control with Periodicity Constraints
in the Presence of Invariants, IEEE T. Automat. Contr., 63,
2818–2832, <a href="https://doi.org/10.1109/TAC.2017.2772039" target="_blank">https://doi.org/10.1109/TAC.2017.2772039</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Gros et al.(2013)</label><mixed-citation>
      
Gros, S., Zanon, M., and Diehl, M.: A Relaxation Strategy for the Optimization
of Airborne Wind Energy Systems, in: Proceedings of the European Control
Conference (ECC),  1011–1016, <a href="https://doi.org/10.23919/ECC.2013.6669670" target="_blank">https://doi.org/10.23919/ECC.2013.6669670</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Haas et al.(2019)</label><mixed-citation>
      
Haas, T., De Schutter, J., Diehl, M., and Meyers, J.: Wake characteristics of
pumping mode airborne wind energy systems, J. Phys. Conf.
Ser., 1256, 012016, <a href="https://doi.org/10.1088/1742-6596/1256/1/012016" target="_blank">https://doi.org/10.1088/1742-6596/1256/1/012016</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Haas et al.(2022)</label><mixed-citation>
      
Haas, T., De Schutter, J., Diehl, M., and Meyers, J.: Large-eddy simulation of airborne wind energy farms, Wind Energ. Sci., 7, 1093–1135, <a href="https://doi.org/10.5194/wes-7-1093-2022" target="_blank">https://doi.org/10.5194/wes-7-1093-2022</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Hart(1982)</label><mixed-citation>
      
Hart, C.: Kites: a Historical Survey, Paul P. Appel Publisher, 1982.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Heydarnia et al.(2025)</label><mixed-citation>
      
Heydarnia, O., Wauters, J., Lefebvre, T., and Crevecoeur, G.: Optimal Path
Planning of Airborne Wind Energy Systems with a Flexible Tether, Journal of
Guidance, Control and Dynamics, 48, 1–8, <a href="https://doi.org/10.2514/1.G008967" target="_blank">https://doi.org/10.2514/1.G008967</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Horn et al.(2013)</label><mixed-citation>
      
Horn, G., Gros, S., and Diehl, M.: Numerical Trajectory Optimization for
Airborne Wind Energy Systems Described by High Fidelity Aircraft Models, in:
Airborne Wind Energy, Springer-Verlag Berlin Heidelberg,
<a href="https://doi.org/10.1007/978-3-642-39965-7_11" target="_blank">https://doi.org/10.1007/978-3-642-39965-7_11</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>HSL(2011)</label><mixed-citation>
      
HSL: A collection of Fortran codes for large scale scientific
computation, <a href="http://www.hsl.rl.ac.uk" target="_blank"/> (last access: 25 November 2025), 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Joshi et al.(2024)</label><mixed-citation>
      
Joshi, R., Schmehl, R., and Kruijff, M.: Power curve modelling and scaling of fixed-wing ground-generation airborne wind energy systems, Wind Energ. Sci., 9, 2195–2215, <a href="https://doi.org/10.5194/wes-9-2195-2024" target="_blank">https://doi.org/10.5194/wes-9-2195-2024</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Kaufman-Martin et al.(2022)</label><mixed-citation>
      
Kaufman-Martin, S., Naclerio, N., May, P., and Luzzatto-Fegiz, P.: An
entrainment-based model for annular wakes, with applications to airborne wind
energy, Wind Energy, 25, 419–431, <a href="https://doi.org/10.1002/we.2679" target="_blank">https://doi.org/10.1002/we.2679</a>,
2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Kheiri et al.(2019)</label><mixed-citation>
      
Kheiri, M., Nasrabad, V. S., and Bourgault, F.: A new perspective on the
aerodynamic performance and power limit of crosswind kite systems, J.
Wind Eng. Ind. Aerod., 190, 190–199,
<a href="https://doi.org/10.1016/j.jweia.2019.04.010" target="_blank">https://doi.org/10.1016/j.jweia.2019.04.010</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Kokkedee(2022)</label><mixed-citation>
      
Kokkedee, J.: Wind farm wake flow recovery with the use of kites, Master's
thesis, Delft University of Technology, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Kruijff and Ruiterkamp(2018)</label><mixed-citation>
      
Kruijff, M. and Ruiterkamp, R.: A roadmap towards airborne wind energy in the
utility sector, in: Airborne Wind Energy: Advances in Technology Development
and Research, Springer, Singapore, <a href="https://doi.org/10.1007/978-981-10-1947-0_26" target="_blank">https://doi.org/10.1007/978-981-10-1947-0_26</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Leuthold et al.(2017)</label><mixed-citation>
      
Leuthold, R., Gros, S., and Diehl, M.: Induction in Optimal Control of
Multiple-Kite Airborne Wind Energy Systems, in: Proceedings of 20th IFAC
World Congress, Toulouse, France, <a href="https://doi.org/10.1016/j.ifacol.2017.08.026" target="_blank">https://doi.org/10.1016/j.ifacol.2017.08.026</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Leuthold et al.(2018)</label><mixed-citation>
      
Leuthold, R., De Schutter, J., Malz, E. C., Licitra, G., Gros, S., and Diehl,
M.: Operational Regions of a Multi-Kite AWE System, in: European Control
Conference (ECC), <a href="https://doi.org/10.23919/ECC.2018.8550199" target="_blank">https://doi.org/10.23919/ECC.2018.8550199</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Leuthold et al.(2024)</label><mixed-citation>
      
Leuthold, R., De Schutter, J., Crawford, C., Gros, S., and Diehl, M.:
Rigid-Wake Lifting-Line Vortex Modeling in a Single-Kite AWE Optimal Control
Problem, in: Book of Abstracts of the Airborne Wind Energy Conference 2024, edited by: Sánchez-Arriaga, G., Thoms, S., and Schmehl, R., Delft University of Technology, <a href="https://doi.org/10.4233/uuid:85fd0eb1-83ec-4e34-9ac8-be6b32082a52" target="_blank">https://doi.org/10.4233/uuid:85fd0eb1-83ec-4e34-9ac8-be6b32082a52</a>,
2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Loyd(1980)</label><mixed-citation>
      
Loyd, M.: Crosswind Kite Power, J. Energ., 4, 106–111,
<a href="https://doi.org/10.2514/3.48021" target="_blank">https://doi.org/10.2514/3.48021</a>, 1980.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Malz et al.(2020)</label><mixed-citation>
      
Malz, E., Verendel, V., and Gros, S.: Computing the Power Profiles for an
Airborne Wind Energy System based on Large-Scale Wind Data, Renewable Energy,
<a href="https://doi.org/10.1016/j.renene.2020.06.056" target="_blank">https://doi.org/10.1016/j.renene.2020.06.056</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Malz et al.(2019)</label><mixed-citation>
      
Malz, E. C., Koenemann, J., Sieberling, S., and Gros, S.: A Reference Model for
Airborne Wind Energy Systems for Optimization and Control, Renewable Energy,
140, 1004–1011, <a href="https://doi.org/10.1016/j.renene.2019.03.111" target="_blank">https://doi.org/10.1016/j.renene.2019.03.111</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Manwell et al.(2009)</label><mixed-citation>
      
Manwell, J. F., McGowan, J. G., and Rogers, A. L.: Wind Energy Explained:
Theory, Design and Application, Second Edition, John Wiley &amp; Sons, Ltd,
Chichester, UK, <a href="https://doi.org/10.1002/9781119994367" target="_blank">https://doi.org/10.1002/9781119994367</a>, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Mühleck and De Schutter(2026)</label><mixed-citation>
      
Mühleck, A. and De Schutter, J.: Toni2412/AWEWA: Code release for Section 4 “Optimal Control of Crosswind Kite Systems with an Engineering Wake Model based on Vortex Loops and Dipoles” (Wind Energy Science, 2026) (v1.0.0), Zenodo [code], <a href="https://doi.org/10.5281/zenodo.20238024" target="_blank">https://doi.org/10.5281/zenodo.20238024</a>, 2026.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Noga et al.(2024)</label><mixed-citation>
      
Noga, R., Paulig, X., Schmidt, L., Karg, B., Quack, M., and Soliman, M.: Optimization of 3-D flight trajectory of variable trim kites for airborne wind energy production, Industrial Abstract accepted to the Europan Control Conference (ECC) 2024, arXiv,  <a href="https://doi.org/10.48550/arXiv.2403.00382" target="_blank">https://doi.org/10.48550/arXiv.2403.00382</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Ploumakis and Bierbooms(2018)</label><mixed-citation>
      
Ploumakis, E. and Bierbooms, W.: Enhanced Kinetic Energy Entrainment in Wind
Farm Wakes: Large Eddy Simulation Study of a Wind Turbine Array with Kites,
165–185, Springer Singapore, Singapore, ISBN 978-981-10-1947-0,
<a href="https://doi.org/10.1007/978-981-10-1947-0_8" target="_blank">https://doi.org/10.1007/978-981-10-1947-0_8</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Pynaert et al.(2025)</label><mixed-citation>
      
Pynaert, N., Haas, T., Wauters, J., Crevecoeur, G., and Degroote, J.: Aero-servo simulations of an airborne wind energy system using geometry-resolved computational fluid dynamics, Wind Energ. Sci., 10, 2663–2684, <a href="https://doi.org/10.5194/wes-10-2663-2025" target="_blank">https://doi.org/10.5194/wes-10-2663-2025</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Trevisi et al.(2022)</label><mixed-citation>
      
Trevisi, F., Castro-Fernández, I., Pasquinelli, G., Riboldi, C. E. D., and Croce, A.: Flight trajectory optimization of Fly-Gen airborne wind energy systems through a harmonic balance method, Wind Energ. Sci., 7, 2039–2058, <a href="https://doi.org/10.5194/wes-7-2039-2022" target="_blank">https://doi.org/10.5194/wes-7-2039-2022</a>, 2022.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Trevisi et al.(2023)</label><mixed-citation>
      
Trevisi, F., Riboldi, C. E. D., and Croce, A.: Vortex model of the aerodynamic wake of airborne wind energy systems, Wind Energ. Sci., 8, 999–1016, <a href="https://doi.org/10.5194/wes-8-999-2023" target="_blank">https://doi.org/10.5194/wes-8-999-2023</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Tugnoli et al.(2021)</label><mixed-citation>
      
Tugnoli, D., Montagnani, D., Syal, M., Droandi, G., and Zanotti, A.:
Mid-fidelity approach to aerodynamic simulations of unconventional VTOL
aircraft configurations, Aerosp. Sci. Technol., 115, 106804,
<a href="https://doi.org/10.1016/j.ast.2021.106804" target="_blank">https://doi.org/10.1016/j.ast.2021.106804</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Van Niekerk(2025)</label><mixed-citation>
      
Van Niekerk, T.: Enhancing Wind Farm Wake Recovery Through Kite-Induced
Vertical Entrainment, Master's thesis, Delft University of Technology, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Vermillion et al.(2021)</label><mixed-citation>
      
Vermillion, C., Cobb, M., Fagiano, L., Leuthold, R., Diehl, M., Smith, R. S.,
Wood, T. A., Rapp, S., Schmehl, R., Olinger, D., and Demetriou, M.:
Electricity in the air: Insights from two decades of advanced control
research and experimental flight testing of airborne wind energy systems,
Annu. Rev. Control, 52, 330–357,
<a href="https://doi.org/10.1016/j.arcontrol.2021.03.002" target="_blank">https://doi.org/10.1016/j.arcontrol.2021.03.002</a>, 2021.

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

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Zanon et al.(2013)</label><mixed-citation>
      
Zanon, M., Gros, S., Andersson, J., and Diehl, M.: Airborne Wind Energy Based
on Dual Airfoils, IEEE T. Contr. Syst. T., 21,
1215–1222, <a href="https://doi.org/10.1109/TCST.2013.2257781" target="_blank">https://doi.org/10.1109/TCST.2013.2257781</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Zanon et al.(2014)</label><mixed-citation>
      
Zanon, M., Gros, S., Meyers, J., and Diehl, M.: Airborne Wind Energy:
Airfoil-Airmass Interaction, in: Proceedings of the IFAC World Congress, 5814–5819, <a href="https://doi.org/10.3182/20140824-6-ZA-1003.00258" target="_blank">https://doi.org/10.3182/20140824-6-ZA-1003.00258</a>, 2014.

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