<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">WES</journal-id><journal-title-group>
    <journal-title>Wind Energy Science</journal-title>
    <abbrev-journal-title abbrev-type="publisher">WES</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Wind Energ. Sci.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">2366-7451</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/wes-10-3027-2025</article-id><title-group><article-title>Frequency-domain modeling of floating wind arrays with shared mooring lines</article-title><alt-title>Frequency-domain modeling of shared mooring systems</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Hall</surname><given-names>Matthew</given-names></name>
          <email>matthew.hall@nrel.gov</email>
        <ext-link>https://orcid.org/0000-0002-0398-8320</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Carmo</surname><given-names>Lucas</given-names></name>
          
        <ext-link>https://orcid.org/0000-0001-8744-1391</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Lozon</surname><given-names>Ericka</given-names></name>
          
        </contrib>
        <aff id="aff1"><label>1</label><institution>National Renewable Energy Laboratory, Golden, Colorado, United States</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Matthew Hall (matthew.hall@nrel.gov)</corresp></author-notes><pub-date><day>19</day><month>December</month><year>2025</year></pub-date>
      
      <volume>10</volume>
      <issue>12</issue>
      <fpage>3027</fpage><lpage>3043</lpage>
      <history>
        <date date-type="received"><day>2</day><month>April</month><year>2025</year></date>
           <date date-type="rev-request"><day>11</day><month>June</month><year>2025</year></date>
           <date date-type="rev-recd"><day>7</day><month>August</month><year>2025</year></date>
           <date date-type="accepted"><day>1</day><month>October</month><year>2025</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2025 Matthew Hall et al.</copyright-statement>
        <copyright-year>2025</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025.html">This article is available from https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025.html</self-uri><self-uri xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025.pdf">The full text article is available as a PDF file from https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e97">A frequency-domain model for floating wind turbine dynamics has been extended to model floating wind farms with couplings from shared mooring systems. The model, called RAFT, could previously calculate the mean offsets and wave-induced response spectra for single floating wind turbines. Now, the model supports multiple floating wind turbines, each with their own properties and responses, along with mooring lines that run directly between floating wind turbines in the array, meaning that shared mooring lines or fully suspended dynamic power cables can be included. This capability is achieved by setting up an array-level solution of the system mean offsets and assembling the full system matrices for solving the dynamic response. The quasi-static mooring model MoorPy is used to linearize the mooring system properties. To compute the floating wind turbine relative motions, phase offsets are applied to each turbine's response as a function of wave frequency based on the wavelength and relative positions in the array. These differential motions are then applied to mooring system tension Jacobians to compute the tension loads in the shared mooring lines. Overall, the capability provides a frequency-domain analog to the modeling capabilities of the floating support structure in FAST.Farm. Mean offsets and power spectral density plots of responses are compared between RAFT and FAST.Farm to verify the implementation. The results indicate good agreement within the expectations of a frequency-domain modeling approach and suggest correct implementation of the shared mooring aspects. Additionally, a unique comb-like frequency response in the shared mooring line tensions has been observed. This phenomenon has a clear physical basis and may be an important design consideration for future shared mooring systems.</p>
  </abstract>
    </article-meta>
  </front>
<body>
      

<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e109">As floating wind turbines begin to be deployed at the gigawatt scale in farms of many units, array-level design considerations become increasingly important. These considerations include wake effects, platform motions, mooring design variations at different water depths, possible couplings from shared mooring systems, and more. Many of the considerations are interdependent. Some mid-fidelity engineering models can model the time-domain coupled dynamics of a floating wind farm including these array-level considerations, but the computational expense is burdensome for larger arrays. Meanwhile, more efficient low-fidelity models have not previously had the ability to model the array-level design considerations in combination. Comprehensive but computationally efficient floating wind array models are needed.</p>
      <p id="d2e112">The most common method for efficiently evaluating a floating system's dynamic response is frequency-domain modeling. Frequency-domain models use a linearized steady-state approximation of the system dynamics, which allows the system's responses to be described as linear combinations of mean values and harmonic oscillations across a range of frequencies. The mean values and each frequency-dependent amplitude component can therefore be solved independently, with no computationally expensive time stepping required. Frequency-domain models have been extensively used for the design of floating structures in the oil and gas industry <xref ref-type="bibr" rid="bib1.bibx8 bib1.bibx3" id="paren.1"/>. They have also been increasingly applied to model floating wind turbines, using a variety of approaches to account for the turbine atop the floating substructure. The first frequency-domain floating wind turbine models used constant stiffness, damping, and added mass terms to account for the effects of the turbine (e.g., <xref ref-type="bibr" rid="bib1.bibx27 bib1.bibx14" id="altparen.2"/>). These models were followed by more refined approaches that included frequency-dependent aerodynamic effects <xref ref-type="bibr" rid="bib1.bibx26 bib1.bibx23 bib1.bibx18 bib1.bibx29" id="paren.3"/>. Some frequency-domain floating wind turbine models can also support structural flexibility and multiple bodies <xref ref-type="bibr" rid="bib1.bibx19 bib1.bibx5" id="paren.4"/>.</p>
      <p id="d2e127">In recent years, an open-source frequency-domain model called RAFT (Response Amplitudes of Floating Turbines) has been developed to efficiently model all parts of a floating wind turbine in a general way that can support many different types of designs <xref ref-type="bibr" rid="bib1.bibx15" id="paren.5"/>. RAFT accounts for strip theory and potential flow hydrodynamics, blade–element–momentum aerodynamics, linear turbine control, and quasi-static mooring system reactions. None of these parts of the model require time-domain preprocessing, making RAFT efficient even when changing design characteristics in an optimization loop. RAFT can model a wide range of platform designs, and its open-source availability promotes widespread use and contributions from the floating wind research community. RAFT is the model we develop further in this paper.</p>
      <p id="d2e133">If there is no connection between floating wind turbines in an array, then individual simulations of each turbine would suffice for informing array design. However, in practice, couplings exist between turbines through their wakes and any shared mooring lines or suspended dynamic cable components. The most intensive of these potential couplings is shared mooring lines, which attach floating wind turbine platforms to each other rather than anchoring to the seafloor. Shared mooring systems can potentially reduce the total length of mooring lines and the quantity of anchors, but they create a strong dynamic coupling between the turbines. This paper focuses on enhancing RAFT to support floating arrays with shared mooring lines.</p>
      <p id="d2e137">Previous research has investigated various modeling techniques for shared mooring systems. <xref ref-type="bibr" rid="bib1.bibx10" id="text.6"/> used simplified frequency- and time-domain models with reduced degrees of freedom to explore the dynamics of several types of floating wind arrays with shared mooring lines. <xref ref-type="bibr" rid="bib1.bibx13" id="text.7"/> simulated a square, four-turbine shared mooring array by coupling multiple instances of the time-domain floating wind turbine model FAST with the mooring dynamics model MoorDyn for all the mooring lines in the array. These simulations included all degrees of freedom typically used in FAST and added structural coupling of the mooring system but did not account for wind turbine wake effects. <xref ref-type="bibr" rid="bib1.bibx7" id="text.8"/> simulated a square, nine-turbine array of floating wind turbines with shared mooring lines with the commercial simulator AQWA, accounting for the rigid-body motions of each platform under wave excitation with steady wind forces. Simpler quasi-static models have been used for studying design options. <xref ref-type="bibr" rid="bib1.bibx6" id="text.9"/> studied several shared mooring array configurations over a range of water depths using a 3-D nonlinear quasi-static mooring system representation. <xref ref-type="bibr" rid="bib1.bibx28" id="text.10"/> developed a linearized 2-D model of the coupled force-displacement behavior of shared mooring systems that is calibrated with nonlinear models and facilitates the optimization of shared mooring system design.</p>
      <p id="d2e155">More recent examples of time-domain modeling of shared mooring systems have used a variety of simulation tools. <xref ref-type="bibr" rid="bib1.bibx20" id="text.11"/> studied a system of two spar floating wind turbines with a shared catenary mooring line, using a quasi-static model for the shared line and comparing the results with finite-element modeling from the marine simulation tool SIMA. <xref ref-type="bibr" rid="bib1.bibx25" id="text.12"/> studied a system of two semisubmersible floating wind turbines connected by a shared line in SIMA. <xref ref-type="bibr" rid="bib1.bibx11" id="text.13"/> studied the dynamics of two spar floating wind turbines connected by a mooring line that has a vertical tether to an anchor at its midpoint – a hybrid between a shared mooring line and a shared anchor – using the floating wind turbine simulator HAWC2. Demonstrating simulation of larger and more complex shared mooring systems and the inclusion of wake effects, <xref ref-type="bibr" rid="bib1.bibx21" id="text.14"/> studied the coupled dynamics of an optimized 10-turbine shared mooring floating wind array <xref ref-type="bibr" rid="bib1.bibx16" id="paren.15"/>. This work extended FAST.Farm – which consists of multiple instances of the time-domain floating wind turbine simulator OpenFAST and a wake model – to account for shared mooring lines between platforms and the proper phasing of wave loads across an interconnected array.</p>
      <p id="d2e173">This paper focuses on expanding capabilities for modeling shared mooring floating wind arrays at a fidelity level lower than most of the examples previously referenced. We present a method to model full floating wind turbine arrays with shared mooring lines in the frequency domain, then verify it against results from well-established time-domain methods. Section 2 describes the RAFT frequency-domain model that is the basis for the approach, and we expanded it to enable shared mooring array simulation, including the theory behind new capabilities for arrays and shared mooring lines. Section 3 presents the results produced by the new simulation method and a comparison against FAST.Farm results to verify its accuracy. Section 4 discusses an unexpected phenomenon found in the results, and Sect. 5 provides conclusions and thoughts on future work.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Frequency-domain modeling methodology</title>
      <p id="d2e184">The modeling approach for floating wind farms including shared mooring lines is based on RAFT (Hall et al., 2025), an existing frequency-domain model. This section first introduces RAFT's underlying formulation and then details the additional features that were added to support the simulation of arrays and the effects of shared mooring lines.</p>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Frequency-domain model for individual floating wind turbines</title>
      <p id="d2e195">RAFT uses a linear, frequency-dependent formulation to solve for the steady-state dynamic response of a floating system <xref ref-type="bibr" rid="bib1.bibx15" id="paren.16"/>. It also uses a nonlinear quasi-static formulation to find the system's mean response or offsets. External forces are modeled as a linear superposition of a mean force <inline-formula><mml:math id="M1" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover></mml:math></inline-formula> and a Fourier series of complex amplitudes <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, which represent both magnitude and phase at each frequency <inline-formula><mml:math id="M3" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula>. Because RAFT assumes a linear dynamic response, the harmonic response at each frequency can be solved independently, and then the total system response can be formed by summing the mean response <inline-formula><mml:math id="M4" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover></mml:math></inline-formula> and the frequency-dependent complex amplitudes <inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e263">The complex amplitudes are obtained by solving the frequency-dependent equation of motion:

            <disp-formula id="Ch1.E1" content-type="numbered"><label>1</label><mml:math id="M6" display="block"><mml:mrow><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mo>(</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mtext>struc</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mtext>hydro</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mtext>aero</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>]</mml:mo><mml:mo>+</mml:mo><mml:mi>i</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>[</mml:mo><mml:msub><mml:mi mathvariant="bold">B</mml:mi><mml:mtext>hydro</mml:mtext></mml:msub><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:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">B</mml:mi><mml:mtext>aero</mml:mtext></mml:msub><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:mi mathvariant="bold">C</mml:mi><mml:mtext>struc</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>hydro</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>moor</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="bold">M</mml:mi></mml:math></inline-formula> is the inertia matrix of the floating structure, <inline-formula><mml:math id="M8" display="inline"><mml:mi mathvariant="bold">A</mml:mi></mml:math></inline-formula> is added mass, <inline-formula><mml:math id="M9" display="inline"><mml:mi mathvariant="bold">B</mml:mi></mml:math></inline-formula> is damping, <inline-formula><mml:math id="M10" display="inline"><mml:mi mathvariant="bold">C</mml:mi></mml:math></inline-formula> is stiffness, and <inline-formula><mml:math id="M11" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the excitation due to wind or waves. The matrix subscripts correspond to contributions from the structure, hydrodynamics and hydrostatics, aerodynamics, and mooring system. Although not explicitly indicated, some of the coefficients in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) are obtained from the linearization of inherently nonlinear phenomena, introducing a nonlinear dependence on <inline-formula><mml:math id="M12" display="inline"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ξ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> that is handled iteratively.</p>
      <p id="d2e479">The system's dynamic response, as described by Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>), is solved about a mean equilibrium point that corresponds to the mean response of the system for a given load case. This mean response is obtained by solving the static equilibrium of the system:

            <disp-formula id="Ch1.E2" content-type="numbered"><label>2</label><mml:math id="M13" display="block"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>hydro</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>struc</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>aero</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>hydro</mml:mtext></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>moor</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M14" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover></mml:math></inline-formula> is a six-component vector with the mean displacements of the platform along its 6 rigid-body degrees of freedom (surge, sway, heave, roll, pitch, and yaw), <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>hydro</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the hydrostatic stiffness matrix without the contribution of weight, <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>struc</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the weight contribution to the hydrostatic stiffness matrix (the hydrostatic matrix is given by two separate components to correspond to RAFT variable names), <inline-formula><mml:math id="M17" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">aero</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the mean aerodynamic load, <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>hydro</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the mean hydrodynamic load (due to waves and current), and <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>moor</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the nonlinear reaction force due to the moorings (including the effective mooring stiffness).</p>
      <p id="d2e638">The way that RAFT models the floating platform hydrodynamics is important to how the wave loads are represented in the context of an array with shared mooring lines. RAFT represents a floating platform as a combination of circular or rectangular cylinders, called members <xref ref-type="bibr" rid="bib1.bibx15" id="paren.17"/>. It includes a strip theory formulation that discretizes each member axially and uses Morison's equation <xref ref-type="bibr" rid="bib1.bibx24" id="paren.18"/> to model the hydrodynamic loads at each strip based on the local fluid kinematics and structure motion.</p>
      <p id="d2e648">In this strip theory formulation, RAFT computes a local added mass matrix <inline-formula><mml:math id="M20" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> for each strip based on its orientation and volume:

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M21" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn><mml:mi>T</mml:mi></mml:msubsup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M22" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is the fluid density, <inline-formula><mml:math id="M23" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> is the strip's volume, <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are the orthogonal unit vectors that are transverse to the axis of the member, and <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are added mass coefficients along <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>. For rectangular cross-sections, the coefficients <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> can be specified independently to allow for different added mass in the two orthogonal directions. RAFT sums the added mass matrices of all strips, accounting for strip position and orientation, to obtain the total added mass matrix of the floating substructure <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">A</mml:mi><mml:mi mathvariant="normal">sub</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e876">RAFT uses the same factors to compute the inertial excitation forces on each strip based on the frequency-dependent local fluid acceleration <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:mi>i</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> as follows:

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M34" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mi>I</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">L</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mfenced close="" open="["><mml:mrow><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced open="" close="]"><mml:mrow><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>)</mml:mo><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn><mml:mi>T</mml:mi></mml:msubsup></mml:mrow></mml:mfenced><mml:mi>i</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          Here, <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> is the complex amplitude of wave velocity vector, which contains the wave <inline-formula><mml:math id="M36" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M37" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M38" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> complex velocity components:

            <disp-formula id="Ch1.E5" content-type="numbered"><label>5</label><mml:math id="M39" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><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:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mfrac><mml:mrow><mml:mi>cosh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>+</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>sinh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>cosh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>+</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>sinh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi>i</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi>sinh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>+</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo><mml:mo>)</mml:mo></mml:mrow><mml:mrow><mml:mi>sinh⁡</mml:mi><mml:mo>(</mml:mo><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mi>h</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M40" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> is the wave elevation at the horizontal position <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M42" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> is the vertical coordinate, <inline-formula><mml:math id="M43" display="inline"><mml:mi>h</mml:mi></mml:math></inline-formula> is the water depth, <inline-formula><mml:math id="M44" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is the wave number, and <inline-formula><mml:math id="M45" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> is the wave heading.</p>
      <p id="d2e1364">Axial added mass and inertial excitation forces are computed using similar expressions as their transverse counterparts but adopting a reference volume based on a hollow hemisphere with the same inner and outer diameters as the axial exposed area of each strip. The reference axial volume for a strip is

            <disp-formula id="Ch1.E6" content-type="numbered"><label>6</label><mml:math id="M46" display="block"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>q</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">π</mml:mi><mml:mn mathvariant="normal">12</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced close="|" open="|"><mml:mrow><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>d</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup><mml:mo>-</mml:mo><mml:mo>(</mml:mo><mml:mi>d</mml:mi><mml:mo>-</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>d</mml:mi><mml:msup><mml:mo>)</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M47" display="inline"><mml:mi>d</mml:mi></mml:math></inline-formula> is the diameter at the midpoint of the strip and <inline-formula><mml:math id="M48" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:math></inline-formula> is the diameter change over the strip length. This formulation also works for member ends, in which case it represents a solid hemisphere. For rectangular members, the diameters in Eq. (<xref ref-type="disp-formula" rid="Ch1.E6"/>) are approximated from the average of the two side lengths.</p>
      <p id="d2e1442">Dynamic pressure loads are calculated based on the axial exposed area,

            <disp-formula id="Ch1.E7" content-type="numbered"><label>7</label><mml:math id="M49" display="block"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">end</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">π</mml:mi><mml:mi>d</mml:mi><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>d</mml:mi></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          RAFT approximates the quadratic drag term in Morison's equation using a linearization procedure that results in a damping term and a viscous wave excitation force. Both terms involve the computation of a local damping matrix that depends on the relative fluid velocity at each strip:

            <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M50" 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">B</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mo>/</mml:mo><mml:mi mathvariant="italic">π</mml:mi></mml:mrow></mml:msqrt><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:mfenced open="[" close=""><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn><mml:mi>T</mml:mi></mml:msubsup></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mrow><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mo>,</mml:mo><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:msubsup><mml:mi mathvariant="bold">p</mml:mi><mml:mn mathvariant="normal">2</mml:mn><mml:mi>T</mml:mi></mml:msubsup><mml:mo>+</mml:mo><mml:mfenced open="(" close=""><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mi>q</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>q</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mfenced close="]" open=""><mml:mrow><mml:mfenced open="" close=")"><mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mrow><mml:mi>u</mml:mi><mml:mo>,</mml:mo><mml:mi>q</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">end</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 mathvariant="normal">end</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:msup><mml:mi mathvariant="bold">qq</mml:mi><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M51" display="inline"><mml:mi mathvariant="bold">q</mml:mi></mml:math></inline-formula> is the axial unit vector of the member, <inline-formula><mml:math id="M52" display="inline"><mml:mi>a</mml:mi></mml:math></inline-formula> is the effective area of the strip (in the respective direction), <inline-formula><mml:math id="M53" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the drag coefficient (in the respective direction), and <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">σ</mml:mi><mml:mi>u</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the standard deviation of the relative water velocity (which depends on the local fluid kinematics and their phase relative to the platform motions). The term with <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>q</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> refers to the surface area of the strip side, representing a skin friction drag effect, while the term with <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi mathvariant="normal">end</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> refers to drag that depends on axial exposed area. Similar to the added mass matrix, the damping matrix of each strip is added to the system damping matrix after accounting for the position and orientation of the strip.</p>
      <p id="d2e1730">The complex amplitude of the viscous wave excitation force acting on each node is computed as follows:

            <disp-formula id="Ch1.E9" content-type="numbered"><label>9</label><mml:math id="M57" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">f</mml:mi><mml:mrow><mml:mi mathvariant="normal">D</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">L</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">B</mml:mi><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">u</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">L</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The way the strip theory formulation considers the wave kinematics at the specific location of each node on the substructure is an important aspect for array-level hydrodynamic features that will be discussed later.</p>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Describing arrays of multiple floating wind turbines</title>
      <p id="d2e1786">To support multiple floating offshore wind turbines (FOWTs), RAFT makes multiples of the logic it uses for representing individual FOWTs through its FOWT class (Fig. <xref ref-type="fig" rid="F1"/>). Each FOWT object constructs its own <inline-formula><mml:math id="M58" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> matrices. These matrices are then combined into an array-level <inline-formula><mml:math id="M59" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:mi>n</mml:mi><mml:mo>×</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> matrix so that the full system response can be solved for in a coupled fashion.</p>

      <fig id="F1" specific-use="star"><label>Figure 1</label><caption><p id="d2e1821">Model structure for arrays including shared mooring lines: <bold>(a)</bold> matrix organization, <bold>(b)</bold> object structure.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f01.png"/>

        </fig>

      <p id="d2e1836">To relate individual FOWT properties to the full array, each FOWT object is given <inline-formula><mml:math id="M60" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M61" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> reference coordinates in the vector <inline-formula><mml:math id="M62" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mtext>ref</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> that describe its undisplaced position relative to the global origin (Fig. <xref ref-type="fig" rid="F2"/>). The calculation of each FOWT's response is relative to its reference position. For example, from the mean offset <inline-formula><mml:math id="M63" display="inline"><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover></mml:math></inline-formula>, a FOWT's mean position in global coordinates <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mtext>global</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> can be found by

            <disp-formula id="Ch1.E10" content-type="numbered"><label>10</label><mml:math id="M65" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mtext>global</mml:mtext></mml:msub><mml:mo>=</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mtext>ref</mml:mtext></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e1917">Array and local coordinates.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f02.png"/>

        </fig>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e1928">Array-level equilibrium solution process.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f03.png"/>

        </fig>

      <p id="d2e1937">For array applications, RAFT uses a two-level mooring system structure similar to FAST.Farm. Each FOWT can have its own independent system modeled by an individual MoorPy instance. In addition, the entire array can have an array-level mooring system that can include shared mooring lines or power cables running between FOWTs. Accordingly, for an array of <inline-formula><mml:math id="M66" display="inline"><mml:mi>n</mml:mi></mml:math></inline-formula> FOWTs, RAFT can have <inline-formula><mml:math id="M67" display="inline"><mml:mrow><mml:mi>n</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> MoorPy instances. Each of these instances is optional – the only requirement is that each FOWT has mooring line attachments to provide station keeping. For example, Fig. <xref ref-type="fig" rid="F1"/> shows a case of two turbines with a shared mooring line in which RAFT could have three MoorPy instances: one for each of the two FOWT's independent mooring lines and one array-level instance for the shared mooring line between the FOWTs. Alternatively, all the mooring lines could be represented in the array-level instance.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Equilibrium solution process</title>
      <p id="d2e1970">To account for potential couplings between FOWTs, the process for finding equilibrium in RAFT has been revised. The equilibrium solution is now determined at the array level in RAFT rather than by MoorPy. This allows for the use of multiple MoorPy instances for the mooring systems in the array and will allow other system properties such as hydrostatic forces or wake effects to be updated in future work.</p>
      <p id="d2e1973">The equilibrium solution process uses an iterative Newton's method solver to determine the values of the <inline-formula><mml:math id="M68" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:mi>n</mml:mi></mml:mrow></mml:math></inline-formula> system degrees of freedom that equilibrate the forces and moments on the FOWTs. During each iteration, the positions and orientations of all FOWTs in the array are set based on the array's combined degrees-of-freedom vector <inline-formula><mml:math id="M69" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold-italic">r</mml:mi><mml:mi mathvariant="normal">array</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>. Next, the forces and stiffnesses on each FOWT are updated based on the new positions and orientations, and the position adjustment is computed for the next iteration. This process can take either a linear or nonlinear approach, as outlined in Fig. <xref ref-type="fig" rid="F3"/>.</p>
      <p id="d2e1999">The linear approach creates a hydrostatic stiffness matrix for each FOWT (<inline-formula><mml:math id="M70" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mi mathvariant="normal">hs</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>) up front and then uses that same matrix to compute updated hydrostatic forces with each iteration:

            <disp-formula id="Ch1.E11" content-type="numbered"><label>11</label><mml:math id="M71" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">hs</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mi mathvariant="normal">hs</mml:mi></mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The nonlinear approach recomputes the hydrostatic forces of each FOWT based on the instantaneous position and orientation:

            <disp-formula id="Ch1.E12" content-type="numbered"><label>12</label><mml:math id="M72" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">hs</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>struc</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>hydro</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M73" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>struc</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the structure weight and <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>hydro</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula> is the buoyancy. This new approach provides better support for unconventional platform geometries with nonlinear hydrostatics and, in the future, highly flexible substructures.</p>
      <p id="d2e2142">Similarly, the mean environmental loads from wind and currents (<inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>env</mml:mtext></mml:msub></mml:mrow></mml:math></inline-formula>) can either be calculated once and kept constant or updated every iteration based on how changes in the platform position or orientation affect the loads:

            <disp-formula id="Ch1.E13" content-type="numbered"><label>13</label><mml:math id="M76" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>env</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>wind</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>current</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          The calculation of these mean force components is described in previous work <xref ref-type="bibr" rid="bib1.bibx15 bib1.bibx17" id="paren.19"/>. This approach would account for the reduction in turbine thrust force when the platform and turbine are pitched. It could also be used when including wake effects that depend on how much turbines offset into or out of each other's wakes (a phenomenon explored with RAFT in <xref ref-type="bibr" rid="bib1.bibx22" id="altparen.20"/>).</p>
      <p id="d2e2230">Because mooring systems are highly nonlinear, the mooring loads are always computed in a way that accounts for their nonlinearity. First, the mooring forces and moments of each FOWT's mooring system (if it exists) is computed directly from MoorPy:

            <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M77" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mtext>moor</mml:mtext><mml:mo>,</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mtext>MoorPy</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where the introduced subscript <inline-formula><mml:math id="M78" display="inline"><mml:mi>i</mml:mi></mml:math></inline-formula> identifies a specific turbine in the array. Next, the mooring forces on each FOWT from the array-level MoorPy instance (if it exists) are calculated:

            <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M79" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>moor,array</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">all</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mtext>MoorPy</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>all</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where the subscript “all” denotes the combined force or position vector of all turbines in the array.</p>
      <p id="d2e2333">Finally, the whole system's mean force vector is computed by combining the above terms:

            <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M80" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>net</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>all</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><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:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">hs</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><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:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mi mathvariant="normal">hs</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msub><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:mtable></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:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mtext>env</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><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:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mtext>env</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msub><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:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><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:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mtext>moor</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><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:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mrow><mml:mtext>moor</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msub><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:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold">f</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>moor,array</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>all</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          For efficiency, the solution process uses analytic Jacobians (or stiffness matrices) rather than finite differencing. Stiffness contributions are computed at the same time as each of the force contributions described above. The hydrostatic and mooring stiffness computations are inherently available in the MoorPy <xref ref-type="bibr" rid="bib1.bibx12" id="paren.21"/> and RAFT calculation methods. Stiffness effects from environmental loadings acting at changing positions or orientations are currently neglected to avoid the need for numerical gradient calculations, since these terms are significantly smaller and unnecessary for convergence to the equilibrium. The stiffness terms from each FOWT and the array-level mooring system are combined in the equivalent format to the force combination process, Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>), as follows:

            <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M81" 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">C</mml:mi><mml:mtext>array</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mtext>all</mml:mtext></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi mathvariant="normal">hs</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mi mathvariant="normal">hs</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mi mathvariant="normal">…</mml:mi></mml:mtd></mml:mtr></mml:mtable></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:mtable class="matrix" columnalign="center center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mtext>moor</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mrow><mml:mtext>moor</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mi mathvariant="normal">…</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mtext>moor,array</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal">¯</mml:mo></mml:mover><mml:mi mathvariant="normal">all</mml:mi></mml:msub><mml:mo>)</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

          where the hydrostatic stiffnesses can be kept constant or recomputed as a function of displacement, corresponding to Eqs. (<xref ref-type="disp-formula" rid="Ch1.E11"/>) and (<xref ref-type="disp-formula" rid="Ch1.E12"/>), respectively.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Wave headings and phases</title>
      <p id="d2e2791">In the present work, the environmental forces on each FOWT are computed independently; no array-level hydrodynamic interactions or wake effects are considered. This paper primarily focuses on shared mooring systems, which is discussed more in the next section.</p>
      <p id="d2e2794">The main dynamic excitation affecting shared mooring lines is the phasing of wave loads between different turbines because the relative FOWT motions play a large role in the shared mooring system loads. Out-of-phase excitation from wind turbulence can also play a role, but wind turbulence is not considered in the present work. The relative phasing of wave loads on floating platforms in an array depends on the wave velocities and the platform's relative positions so the propagation of waves through the array needs to be accounted for.</p>
      <p id="d2e2797">We updated RAFT so that the wave loads for each platform are adjusted based on the mean platform positions and the wavelength vectors of each wave-frequency component. The wave phasing takes two forms according to whether hydrodynamics are modeled with strip theory or potential flow theory. For potential flow theory, a simple phase adjustment is applied to the wave excitation forces based on the FOWT's mean position, as follows:

            <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M82" display="block"><mml:mrow><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>i</mml:mi><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>(</mml:mo><mml:mi>x</mml:mi><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>+</mml:mo><mml:mi>y</mml:mi><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M83" display="inline"><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover></mml:math></inline-formula> is the Fourier transform of the wave elevation at the platform's mean position (<inline-formula><mml:math id="M84" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M85" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>), <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the wave elevation at the farm origin, <inline-formula><mml:math id="M87" display="inline"><mml:mi mathvariant="italic">ω</mml:mi></mml:math></inline-formula> is wave frequency, <inline-formula><mml:math id="M88" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> is wave number, and <inline-formula><mml:math id="M89" display="inline"><mml:mi mathvariant="italic">β</mml:mi></mml:math></inline-formula> is wave heading.</p>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e2942">Wave propagation across the array.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f04.png"/>

        </fig>

      <p id="d2e2951">For strip theory hydrodynamics, the proper wave phasing is achieved by using the existing formulation described in Sect. <xref ref-type="sec" rid="Ch1.S2.SS1"/> but providing the global coordinates when computing the local wave kinematics acting on the substructure. In other words, the wave kinematics of Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>) are computed using a phase-shifted wave elevation as in Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>), which inherently captures the proper phasing based on the position in the array.</p>
      <p id="d2e2960">Because RAFT does not resolve absolute phases, wave phase differences between turbines is only a relative phenomenon in RAFT. As a result, the implication of these phase differences is only for phenomena that are excited by relative motion, such as the loads felt by shared mooring lines, shared anchors, or fully suspended intra-array dynamic power cables.</p>
      <p id="d2e2963">Wave headings are handled directly by the strip theory approach, which is formulated in a 3-D way. For potential flow (linear) hydrodynamics, the frequency-dependent wave-excitation forces and moments can be computed by PyHAMS (through a built-in process in RAFT) or a priori with any preprocessor that produces excitation output files in the WAMIT format. Excitation data can be produced at a user-specified range of wave headings (such as at every 10°). Internally, RAFT interpolates the data to each wave heading that is being simulated.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e2968">RAFT array-level dynamic response solution process.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f05.png"/>

        </fig>


</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>Coupled dynamic response</title>
      <p id="d2e2987">Calculating the dynamic response for arrays of floating wind turbines with possible couplings, outlined in Fig. <xref ref-type="fig" rid="F5"/>, is considerably more complex than RAFT's original method for individual FOWTs <xref ref-type="bibr" rid="bib1.bibx15" id="paren.22"/>. First, RAFT computes the first-order response of each FOWT to wave excitation, including linearization of quadratic drag loads. This is done on a per-turbine basis and does not include the contribution of the array-level mooring system. In this way, the most computationally demanding step – the iterations when linearizing quadratic drag – is done on small system matrices for computational efficiency. For mooring systems that have a large influence on wave-frequency response, such as tension-leg platforms, the mooring system should be included in the FOWT-level MoorPy instance.</p>
      <p id="d2e2995">Once each FOWT response to wave excitation has been iteratively solved, the corresponding impedance matrix for each FOWT is saved:

            <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M90" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Z</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">ω</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:msub><mml:mi mathvariant="bold">M</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:mi>i</mml:mi><mml:mi mathvariant="italic">ω</mml:mi><mml:msub><mml:mi mathvariant="bold">B</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">C</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This matrix represents the combined effects from all reaction-force phenomena acting on the FOWT (mass, hydrodynamics, hydrostatics, aerodynamic damping, etc.).</p>
      <p id="d2e3069">Next, a system-level impedance matrix is constructed by combining the FOWT-level impedance matrices, along with the stiffness terms of the array-level MoorPy instance if it exists:

            <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M91" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="bold">Z</mml:mi><mml:mtext>array</mml:mtext></mml:msub><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 center center" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">Z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="bold">Z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mi mathvariant="normal">…</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="bold">K</mml:mi><mml:mtext>moor,array</mml:mtext></mml:msub><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          This final impedance matrix can then be used with the array-level excitation vector to solve for the coupled dynamic response of all FOWTs in the array to all sources of excitation, including different sea states as well as wind excitation. Each source of excitation is assumed to be uncorrelated, so the system response is computed independently for each source. The squares of the frequency-dependent response magnitudes from each excitation source are then summed to compute the overall response statistics. For efficiency, the effect of shared mooring lines are neglected when computing each FOWT's motion amplitudes during the iterative drag linearization. Afterward, when computing the final full system response, all coupling effects are included.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Mooring tension response and shared mooring effects</title>
      <p id="d2e3160">Mooring system tensions in RAFT are modeled by superimposing mean tensions, which are computed directly by MoorPy, with tension amplitudes. The tension amplitudes are complex frequency-dependent values found by multiplying the FOWT response amplitudes by mooring tension Jacobians, which are computed at the mean mooring system state. The mooring tension Jacobian is the variation in mooring line end tension relative to the platform's degrees of freedom:

            <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M92" display="block"><mml:mrow><mml:mi mathvariant="bold">J</mml:mi><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">τ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">ξ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M93" display="inline"><mml:mi mathvariant="bold-italic">τ</mml:mi></mml:math></inline-formula> is the vector of mooring line end tensions. This is calculated for each MoorPy instance, whether at the FOWT level or the array level.</p>

      <fig id="F6" specific-use="star"><label>Figure 6</label><caption><p id="d2e3196">The two-turbine shared mooring floating wind turbine array used for the verification.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f06.png"/>

        </fig>

      <p id="d2e3205">Mooring line tension amplitudes are then computed for each mooring line based on the solved system response amplitudes:

            <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M94" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">J</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></disp-formula>

          and

            <disp-formula id="Ch1.E23" content-type="numbered"><label>23</label><mml:math id="M95" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">τ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mtext>array</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="bold">J</mml:mi><mml:mtext>array</mml:mtext></mml:msub><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mi mathvariant="normal">all</mml:mi></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

          Because each FOWT's entries in <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">ξ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mtext>all</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> include the relative phase information based on each FOWT's position in the wave field, the tension responses of shared lines inherently capture the effect of relative motions between FOWTs.</p>

<table-wrap id="T1"><label>Table 1</label><caption><p id="d2e3316">Mooring parameters for shared mooring test case.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">Value</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Water depth (m)</oasis:entry>
         <oasis:entry colname="col2">600</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Anchoring radius (m)</oasis:entry>
         <oasis:entry colname="col2">1131.4</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Fairlead radius (m)</oasis:entry>
         <oasis:entry colname="col2">58</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Fairlead depth (m)</oasis:entry>
         <oasis:entry colname="col2">14</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Anchor line length (m)</oasis:entry>
         <oasis:entry colname="col2">1200</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Total shared line length (m)</oasis:entry>
         <oasis:entry colname="col2">1468</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Shared line length above clump weight (m)</oasis:entry>
         <oasis:entry colname="col2">150</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Clump weight (kg)</oasis:entry>
         <oasis:entry colname="col2">100 000</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

<table-wrap id="T2"><label>Table 2</label><caption><p id="d2e3419">Mooring line properties for shared mooring test case.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="2">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:thead>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Parameter</oasis:entry>
         <oasis:entry colname="col2">Mooring line type</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">Material</oasis:entry>
         <oasis:entry colname="col2">Polyester</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Nominal diameter (mm)</oasis:entry>
         <oasis:entry colname="col2">150</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Volume-equivalent diameter (m)</oasis:entry>
         <oasis:entry colname="col2">0.119</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Linear mass (kg m<sup>−1</sup>)</oasis:entry>
         <oasis:entry colname="col2">15.3</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Stiffness coefficient, EA (MN)</oasis:entry>
         <oasis:entry colname="col2">97</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Transverse drag coefficient, <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1.2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Axial drag coefficient, <inline-formula><mml:math id="M99" 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:mi mathvariant="normal">ax</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Transverse added mass coefficient, <inline-formula><mml:math id="M100" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mi mathvariant="normal">a</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">1.0</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">Axial added mass coefficient, <inline-formula><mml:math id="M101" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mrow><mml:mi mathvariant="normal">a</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">ax</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col2">0.0</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F7"><label>Figure 7</label><caption><p id="d2e3592">Wave heading directions for verification.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f07.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Demonstration and verification</title>
      <p id="d2e3610">The new array-level RAFT capabilities can be demonstrated by comparing with results from OpenFAST (Jonkman et al., 2024), which has a similar scope but significantly more fidelity. OpenFAST has been verified and validated in many prior studies and was used to verify RAFT's modeling for individual floating turbines in <xref ref-type="bibr" rid="bib1.bibx15" id="text.23"/>. Verifying new array-level features in RAFT requires the array equivalent of OpenFAST, FAST.Farm.</p>

<table-wrap id="T3" specific-use="star"><label>Table 3</label><caption><p id="d2e3619">Mean values predicted by RAFT and FAST.Farm for different wind and wave directions.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right" colsep="1"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center" colsep="1">RAFT </oasis:entry>
         <oasis:entry rowsep="1" namest="col5" nameend="col7" align="center">FAST.Farm </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Channel</oasis:entry>
         <oasis:entry colname="col2">0°</oasis:entry>
         <oasis:entry colname="col3">45°</oasis:entry>
         <oasis:entry colname="col4">90°</oasis:entry>
         <oasis:entry colname="col5">0°</oasis:entry>
         <oasis:entry colname="col6">45°</oasis:entry>
         <oasis:entry colname="col7">90°</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">T1 Surge (m)</oasis:entry>
         <oasis:entry colname="col2">20.19</oasis:entry>
         <oasis:entry colname="col3">14.20</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M102" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.29</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">20.44</oasis:entry>
         <oasis:entry colname="col6">14.86</oasis:entry>
         <oasis:entry colname="col7">0.93</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Sway (m)</oasis:entry>
         <oasis:entry colname="col2">0.36</oasis:entry>
         <oasis:entry colname="col3">15.84</oasis:entry>
         <oasis:entry colname="col4">22.38</oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M103" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.18</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6">14.94</oasis:entry>
         <oasis:entry colname="col7">22.36</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Heave (m)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M104" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.64</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M105" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.58</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.43</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M107" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.69</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M108" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.63</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M109" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.48</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Roll (°)</oasis:entry>
         <oasis:entry colname="col2">0.17</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.32</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M111" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.04</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">0.26</oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.27</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M113" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.07</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Pitch (°)</oasis:entry>
         <oasis:entry colname="col2">2.39</oasis:entry>
         <oasis:entry colname="col3">1.77</oasis:entry>
         <oasis:entry colname="col4">0.20</oasis:entry>
         <oasis:entry colname="col5">2.42</oasis:entry>
         <oasis:entry colname="col6">1.89</oasis:entry>
         <oasis:entry colname="col7">0.23</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">T1 Yaw (°)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.08</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.62</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4.44</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">0.30</oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.07</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M118" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4.0</mml:mn></mml:mrow></mml:math></inline-formula>1</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Surge (m)</oasis:entry>
         <oasis:entry colname="col2">20.70</oasis:entry>
         <oasis:entry colname="col3">14.56</oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M119" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.24</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">20.95</oasis:entry>
         <oasis:entry colname="col6">14.29</oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M120" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.61</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Sway (m)</oasis:entry>
         <oasis:entry colname="col2">0.32</oasis:entry>
         <oasis:entry colname="col3">16.54</oasis:entry>
         <oasis:entry colname="col4">22.32</oasis:entry>
         <oasis:entry colname="col5">0.14</oasis:entry>
         <oasis:entry colname="col6">17.83</oasis:entry>
         <oasis:entry colname="col7">22.67</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Heave (m)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.21</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.28</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M123" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.43</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5"><inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M125" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.32</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.48</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Roll (°)</oasis:entry>
         <oasis:entry colname="col2">0.18</oasis:entry>
         <oasis:entry colname="col3"><inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.33</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col4"><inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.04</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col5">0.28</oasis:entry>
         <oasis:entry colname="col6"><inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1.24</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col7"><inline-formula><mml:math id="M130" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2.04</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Pitch (°)</oasis:entry>
         <oasis:entry colname="col2">2.38</oasis:entry>
         <oasis:entry colname="col3">1.86</oasis:entry>
         <oasis:entry colname="col4">0.12</oasis:entry>
         <oasis:entry colname="col5">2.41</oasis:entry>
         <oasis:entry colname="col6">1.89</oasis:entry>
         <oasis:entry colname="col7">0.29</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">T2 Yaw (°)</oasis:entry>
         <oasis:entry colname="col2"><inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.02</mml:mn></mml:mrow></mml:math></inline-formula></oasis:entry>
         <oasis:entry colname="col3">3.86</oasis:entry>
         <oasis:entry colname="col4">4.29</oasis:entry>
         <oasis:entry colname="col5">0.42</oasis:entry>
         <oasis:entry colname="col6">4.68</oasis:entry>
         <oasis:entry colname="col7">4.64</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Shared line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">2708</oasis:entry>
         <oasis:entry colname="col3">2709</oasis:entry>
         <oasis:entry colname="col4">2707</oasis:entry>
         <oasis:entry colname="col5">2709</oasis:entry>
         <oasis:entry colname="col6">2684</oasis:entry>
         <oasis:entry colname="col7">2658</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Shared line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">2715</oasis:entry>
         <oasis:entry colname="col3">2714</oasis:entry>
         <oasis:entry colname="col4">2708</oasis:entry>
         <oasis:entry colname="col5">2716</oasis:entry>
         <oasis:entry colname="col6">2690</oasis:entry>
         <oasis:entry colname="col7">2659</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 N anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">3029</oasis:entry>
         <oasis:entry colname="col3">1985</oasis:entry>
         <oasis:entry colname="col4">949</oasis:entry>
         <oasis:entry colname="col5">3062</oasis:entry>
         <oasis:entry colname="col6">2050</oasis:entry>
         <oasis:entry colname="col7">999</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 S anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">3053</oasis:entry>
         <oasis:entry colname="col3">3497</oasis:entry>
         <oasis:entry colname="col4">3075</oasis:entry>
         <oasis:entry colname="col5">3043</oasis:entry>
         <oasis:entry colname="col6">3493</oasis:entry>
         <oasis:entry colname="col7">3140</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 N anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">938</oasis:entry>
         <oasis:entry colname="col3">517</oasis:entry>
         <oasis:entry colname="col4">974</oasis:entry>
         <oasis:entry colname="col5">943</oasis:entry>
         <oasis:entry colname="col6">491</oasis:entry>
         <oasis:entry colname="col7">982</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 S anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">963</oasis:entry>
         <oasis:entry colname="col3">2048</oasis:entry>
         <oasis:entry colname="col4">3097</oasis:entry>
         <oasis:entry colname="col5">930</oasis:entry>
         <oasis:entry colname="col6">2112</oasis:entry>
         <oasis:entry colname="col7">3125</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F8" specific-use="star"><label>Figure 8</label><caption><p id="d2e4380">Mean values obtained with RAFT and FAST.Farm for different wind and wave directions.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f08.png"/>

      </fig>

      <p id="d2e4390">We present a verification that considers a simple two-turbine shared mooring array under wave excitation from multiple headings. The array consists of two FOWTs spaced 1600 m apart in 600 m water depth. Each FOWT is a VolturnUS-S semisubmersible floating platform <xref ref-type="bibr" rid="bib1.bibx2" id="paren.24"/> supporting the IEA Wind 15 MW reference turbine <xref ref-type="bibr" rid="bib1.bibx9" id="paren.25"/>. There is one shared mooring line with two clump weights connecting the turbines. Each turbine also has two anchored mooring lines spread 90° apart. The mooring lines are polyester, and the configurations and dimensions are loosely based on the shared mooring design developed previously in <xref ref-type="bibr" rid="bib1.bibx16" id="text.26"/>, except the line stiffness has increased and the design has been adjusted accordingly. Figure <xref ref-type="fig" rid="F6"/> shows the design as plotted from RAFT. The shared mooring system design is summarized in Table <xref ref-type="table" rid="T1"/>, and the mooring line properties are shown in Table <xref ref-type="table" rid="T2"/>, including the hydrodynamic coefficients used in the MoorDyn model in FAST.Farm. The clump weights were modeled as a point mass with no volume or hydrodynamic properties.</p>
      <p id="d2e4409">A load case with steady wind and irregular waves is used to test the new RAFT features, since array effects from aerodynamics are left for future work. The case has an 8 m s<sup>−1</sup> steady wind and a JONSWAP wave spectrum with a 12 s peak period and a 6 m significant wave height. Three wave headings are used: 0, 45, and 90° (Fig. <xref ref-type="fig" rid="F7"/>). These three headings help to test that the array-level wave phase relationships are implemented properly. For simplicity, the wind is aligned with the waves in each case.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Mean offsets and tensions</title>
      <p id="d2e4433">Table <xref ref-type="table" rid="T3"/> and Fig. <xref ref-type="fig" rid="F8"/> present the mean offsets and fairlead tensions calculated by RAFT and FAST.Farm. Mean tensions are included in RAFT's mean offset solution process. Figure <xref ref-type="fig" rid="F7"/> explains the nomenclature used for identifying the turbines and mooring lines in these results. The results show that RAFT matches the displacements and mooring line tensions computed by OpenFAST well, as would be expected considering that the model formulations are very similar for steady-state operation. This good level of agreement in both surge and pitch – and sway and roll for nonzero wind headings – indicates that the thrust force, the hydrostatic stiffness, and the mooring system stiffness are all in good agreement between models. The largest differences correspond to platform yaw, and they are still within the level of agreement expected from a low-fidelity model such as RAFT.</p>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Dynamic response</title>
      <p id="d2e4451">The dynamic response of the coupled shared mooring floating array depends on the phasing of wave excitation on each platform and both the absolute and relative wave-induced motions. Figure <xref ref-type="fig" rid="F9"/> compares the power spectral density (PSD) of wave elevation between RAFT and FAST.Farm to confirm that the realization of the sea state is similar between models. The level of agreement is good, as expected, because both models set up the spectrum in a way that ensures the overall energy of the spectrum will match the targeted significant wave height.</p>

      <fig id="F9"><label>Figure 9</label><caption><p id="d2e4458">Wave elevation spectra generated in RAFT and FAST.Farm.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f09.png"/>

        </fig>

      <p id="d2e4467">Figure <xref ref-type="fig" rid="F10"/> shows the PSDs of the 6 platform degrees of freedom for the first turbine from both RAFT and FAST.Farm. The figure shows generally good agreement, similar to what was seen in previous studies with a single turbine. The differences observed in roll and pitch can be explained by the strip theory hydrodynamic model in RAFT, which neglects wave radiation and wave scattering effects. These effects are included in FAST.Farm by using precomputed hydrodynamic coefficients obtained with WAMIT. RAFT can also use precomputed hydrodynamic coefficients, and the results shown from RAFT with WAMIT coefficients illustrate the closer agreement in the vertical degrees of freedom (heave, roll, and pitch) when including the wave radiation and wave scattering effects from WAMIT.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e4475">Platform motion PSD for the first turbine in the array obtained with RAFT and FAST.Farm for <bold>(a)</bold> 0°, <bold>(b)</bold> 45°, and <bold>(c)</bold> 90° wind and wave headings.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f10.png"/>

        </fig>

      <p id="d2e4493">Figure <xref ref-type="fig" rid="F11"/> shows the PSDs of the mooring line tension at the six attachment points to the floating platforms. The results show generally good agreement in both magnitude and frequency distribution, except for well-understood differences caused by RAFT's quasi-static model not accounting for mooring dynamics. Specifically, RAFT's tension predictions have less high-frequency content than OpenFAST's because MoorPy neglects hydrodynamic drag. Also, the RAFT results do not have shared mooring line excitation for the perpendicular wave direction because the distance between the turbines stays constant, and hydrodynamic drag on the mooring line is neglected. The level of agreement in the mooring line tensions is better than was seen previously in verification with the normal VolturnUS-S mooring system, which has a catenary chain at 200 m water depth. The better agreement is likely due to the large water depth and use of synthetic ropes, which generally have less dynamic effects and can therefore be better predicted by the quasi-static mooring model used in RAFT.</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e4500">Mooring tension PSD for each mooring fairlead obtained with RAFT and FAST.Farm for <bold>(a)</bold> 0°, <bold>(b)</bold> 45°, and <bold>(c)</bold> 90° wind and wave heading.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f11.png"/>

        </fig>

      <p id="d2e4518">The good agreement in the shared mooring line tension PSDs at lower frequencies (around 0.06 Hz) suggests that the new shared mooring capabilities in RAFT are modeled correctly. The shared mooring line tensions in the 0 and 45° cases have a distinct comb-like frequency response, which we explore more in Sect. <xref ref-type="sec" rid="Ch1.S4"/>. Comparing the wind and wave headings in Fig. <xref ref-type="fig" rid="F11"/>, the differences can be explained as follows: <list list-type="bullet"><list-item>
      <p id="d2e4527">In the 0° case, the waves are in line with the turbine arrangement, which results in relative motions in all excited degrees of freedom. This also results in strong excitation of the shared mooring line because it extends in the same direction as the relative motion.</p></list-item><list-item>
      <p id="d2e4531">In the 90° case, the waves are perpendicular to the turbine arrangement, so the turbines experience identical excitation (except for opposite directions of small yaw and pitch coupling effects because of the symmetry in their platform and mooring orientations), and the motion is perpendicular to the shared mooring line direction. Therefore, the shared line excitation is minimal except for the already discussed dynamic drag effects in the OpenFAST case.</p></list-item><list-item>
      <p id="d2e4535">In the 45° case, the motion in line with the shared mooring line is reduced, whereas new relative motions arise in sway and roll because the angled wave heading excites these degrees of freedom while also causing a phase difference in the excitation forces. The relative motions of the FOWTs are moderate in all the degrees of freedom, and the resulting shared line excitation is also moderate.</p></list-item></list> The dynamic response predictions can also be considered in terms of standard deviations, which are shown in Table <xref ref-type="table" rid="T4"/> and Fig. <xref ref-type="fig" rid="F12"/>. The FAST.Farm results are taken directly from FAST.Farm output time series, neglecting the first 20 min for startup transients, after which there was 1 h of simulation time. A single time-domain realization was used for each case for the purpose of making comparisons with frequency-domain results. The RAFT results are statistical calculations based on the predicted PSDs, using the strip theory hydrodynamic method. Consistent with the PSD results already presented, the standard deviation values agree fairly well between RAFT and OpenFAST. The largest relative differences are in the shared line tension results, an effect that was also present in the PSD results and attributed to the dynamic effects missing from MoorPy. There is also a notable difference in the turbine pitch response for the 0° case, especially for Turbine 1. This aligns with the PSD difference shown in Fig. <xref ref-type="fig" rid="F10"/>, which is attributed to the use of strip theory in the RAFT results. The lesser difference in Turbine 2 pitch may be due to the effect of the shared line dynamics, but deeper investigation is beyond the present focus. Overall, the standard deviation results are within expectations considering the different model fidelity levels.</p>

<table-wrap id="T4" specific-use="star"><label>Table 4</label><caption><p id="d2e4549">Standard deviation predicted by RAFT and FAST.Farm for different wind and wave directions.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="7">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right" colsep="1"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:colspec colnum="6" colname="col6" align="right"/>
     <oasis:colspec colnum="7" colname="col7" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry rowsep="1" namest="col2" nameend="col4" align="center" colsep="1">RAFT </oasis:entry>
         <oasis:entry rowsep="1" namest="col5" nameend="col7" align="center">FAST.Farm </oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">Channel</oasis:entry>
         <oasis:entry colname="col2">0°</oasis:entry>
         <oasis:entry colname="col3">45°</oasis:entry>
         <oasis:entry colname="col4">90°</oasis:entry>
         <oasis:entry colname="col5">0°</oasis:entry>
         <oasis:entry colname="col6">45°</oasis:entry>
         <oasis:entry colname="col7">90°</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">T1 Surge (m)</oasis:entry>
         <oasis:entry colname="col2">0.63</oasis:entry>
         <oasis:entry colname="col3">0.43</oasis:entry>
         <oasis:entry colname="col4">0.01</oasis:entry>
         <oasis:entry colname="col5">0.66</oasis:entry>
         <oasis:entry colname="col6">0.44</oasis:entry>
         <oasis:entry colname="col7">0.21</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Sway (m)</oasis:entry>
         <oasis:entry colname="col2">0.00</oasis:entry>
         <oasis:entry colname="col3">0.43</oasis:entry>
         <oasis:entry colname="col4">0.60</oasis:entry>
         <oasis:entry colname="col5">0.04</oasis:entry>
         <oasis:entry colname="col6">0.48</oasis:entry>
         <oasis:entry colname="col7">0.63</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Heave (m)</oasis:entry>
         <oasis:entry colname="col2">0.55</oasis:entry>
         <oasis:entry colname="col3">0.55</oasis:entry>
         <oasis:entry colname="col4">0.55</oasis:entry>
         <oasis:entry colname="col5">0.62</oasis:entry>
         <oasis:entry colname="col6">0.61</oasis:entry>
         <oasis:entry colname="col7">0.61</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Roll (°)</oasis:entry>
         <oasis:entry colname="col2">0.00</oasis:entry>
         <oasis:entry colname="col3">0.21</oasis:entry>
         <oasis:entry colname="col4">0.25</oasis:entry>
         <oasis:entry colname="col5">0.02</oasis:entry>
         <oasis:entry colname="col6">0.25</oasis:entry>
         <oasis:entry colname="col7">0.31</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Pitch (°)</oasis:entry>
         <oasis:entry colname="col2">0.24</oasis:entry>
         <oasis:entry colname="col3">0.18</oasis:entry>
         <oasis:entry colname="col4">0.08</oasis:entry>
         <oasis:entry colname="col5">0.32</oasis:entry>
         <oasis:entry colname="col6">0.21</oasis:entry>
         <oasis:entry colname="col7">0.11</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">T1 Yaw (°)</oasis:entry>
         <oasis:entry colname="col2">0.00</oasis:entry>
         <oasis:entry colname="col3">0.26</oasis:entry>
         <oasis:entry colname="col4">0.40</oasis:entry>
         <oasis:entry colname="col5">0.00</oasis:entry>
         <oasis:entry colname="col6">0.29</oasis:entry>
         <oasis:entry colname="col7">0.40</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Surge (m)</oasis:entry>
         <oasis:entry colname="col2">0.62</oasis:entry>
         <oasis:entry colname="col3">0.43</oasis:entry>
         <oasis:entry colname="col4">0.01</oasis:entry>
         <oasis:entry colname="col5">0.67</oasis:entry>
         <oasis:entry colname="col6">0.44</oasis:entry>
         <oasis:entry colname="col7">0.20</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Sway (m)</oasis:entry>
         <oasis:entry colname="col2">0.00</oasis:entry>
         <oasis:entry colname="col3">0.43</oasis:entry>
         <oasis:entry colname="col4">0.60</oasis:entry>
         <oasis:entry colname="col5">0.03</oasis:entry>
         <oasis:entry colname="col6">0.45</oasis:entry>
         <oasis:entry colname="col7">0.63</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Heave (m)</oasis:entry>
         <oasis:entry colname="col2">0.56</oasis:entry>
         <oasis:entry colname="col3">0.56</oasis:entry>
         <oasis:entry colname="col4">0.55</oasis:entry>
         <oasis:entry colname="col5">0.61</oasis:entry>
         <oasis:entry colname="col6">0.62</oasis:entry>
         <oasis:entry colname="col7">0.61</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Roll (°)</oasis:entry>
         <oasis:entry colname="col2">0.00</oasis:entry>
         <oasis:entry colname="col3">0.17</oasis:entry>
         <oasis:entry colname="col4">0.25</oasis:entry>
         <oasis:entry colname="col5">0.02</oasis:entry>
         <oasis:entry colname="col6">0.21</oasis:entry>
         <oasis:entry colname="col7">0.31</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Pitch (°)</oasis:entry>
         <oasis:entry colname="col2">0.29</oasis:entry>
         <oasis:entry colname="col3">0.20</oasis:entry>
         <oasis:entry colname="col4">0.08</oasis:entry>
         <oasis:entry colname="col5">0.32</oasis:entry>
         <oasis:entry colname="col6">0.24</oasis:entry>
         <oasis:entry colname="col7">0.11</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1">T2 Yaw (°)</oasis:entry>
         <oasis:entry colname="col2">0.01</oasis:entry>
         <oasis:entry colname="col3">0.35</oasis:entry>
         <oasis:entry colname="col4">0.40</oasis:entry>
         <oasis:entry colname="col5">0.02</oasis:entry>
         <oasis:entry colname="col6">0.28</oasis:entry>
         <oasis:entry colname="col7">0.40</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 Shared line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">29.01</oasis:entry>
         <oasis:entry colname="col3">20.26</oasis:entry>
         <oasis:entry colname="col4">2.43</oasis:entry>
         <oasis:entry colname="col5">58.98</oasis:entry>
         <oasis:entry colname="col6">35.72</oasis:entry>
         <oasis:entry colname="col7">50.54</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 Shared line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">28.94</oasis:entry>
         <oasis:entry colname="col3">20.12</oasis:entry>
         <oasis:entry colname="col4">2.43</oasis:entry>
         <oasis:entry colname="col5">66.39</oasis:entry>
         <oasis:entry colname="col6">42.73</oasis:entry>
         <oasis:entry colname="col7">50.61</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 N anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">41.59</oasis:entry>
         <oasis:entry colname="col3">22.22</oasis:entry>
         <oasis:entry colname="col4">36.72</oasis:entry>
         <oasis:entry colname="col5">34.07</oasis:entry>
         <oasis:entry colname="col6">23.02</oasis:entry>
         <oasis:entry colname="col7">37.37</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T1 S anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">41.46</oasis:entry>
         <oasis:entry colname="col3">41.62</oasis:entry>
         <oasis:entry colname="col4">37.29</oasis:entry>
         <oasis:entry colname="col5">34.57</oasis:entry>
         <oasis:entry colname="col6">51.69</oasis:entry>
         <oasis:entry colname="col7">37.29</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 N anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">39.05</oasis:entry>
         <oasis:entry colname="col3">36.26</oasis:entry>
         <oasis:entry colname="col4">37.11</oasis:entry>
         <oasis:entry colname="col5">36.42</oasis:entry>
         <oasis:entry colname="col6">55.12</oasis:entry>
         <oasis:entry colname="col7">38.25</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">T2 S anchor line tension (kN)</oasis:entry>
         <oasis:entry colname="col2">39.01</oasis:entry>
         <oasis:entry colname="col3">23.32</oasis:entry>
         <oasis:entry colname="col4">37.39</oasis:entry>
         <oasis:entry colname="col5">36.52</oasis:entry>
         <oasis:entry colname="col6">23.26</oasis:entry>
         <oasis:entry colname="col7">36.66</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

      <fig id="F12" specific-use="star"><label>Figure 12</label><caption><p id="d2e5070">Standard deviation obtained with RAFT and FAST.Farm for different wind and wave directions.</p></caption>
          <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f12.png"/>

        </fig>

</sec>
</sec>
<sec id="Ch1.S4">
  <label>4</label><title>Discussion on relative response</title>
      <p id="d2e5088">In addition to verifying RAFT's ability to model a shared mooring floating wind array's response, the results illuminate a phenomenon not previously discussed in the literature: a comb-like frequency response in the shared mooring line tensions. As visible in Fig. <xref ref-type="fig" rid="F11"/>, this comb-like response is most noticeable in the results from RAFT, but it is also present in the OpenFAST results. The phenomenon can be understood by considering the relative motions of the floating platforms, which are the main driver of the shared mooring line tensions. Figure <xref ref-type="fig" rid="F13"/> plots the PSDs of the relative motions between the two platforms, along with the relative difference in wave elevations experienced by the two platforms. The comb-like response is visible in the PSD of relative wave elevation <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:mtext>PSD</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mtext>rel</mml:mtext></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mtext>PSD</mml:mtext><mml:mo>(</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>)</mml:mo></mml:mrow></mml:math></inline-formula> for the 0 and 45° wave headings. This can be explained mathematically by considering Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>) and deriving the relative difference in wave elevation between two arbitrary locations:

          <disp-formula id="Ch1.E24" content-type="numbered"><label>24</label><mml:math id="M134" display="block"><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mtext>rel</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">2</mml:mn></mml:msub><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:mtd><mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>i</mml:mi><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>[</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>⋅</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>i</mml:mi><mml:mi>k</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:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>+</mml:mo><mml:mo>(</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mi>sin⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi><mml:mo>]</mml:mo></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>

        The term within parentheses acts as an amplitude modulation, thus resulting in the comb-like PSD shown in Fig. <xref ref-type="fig" rid="F13"/>. For the verification case discussed in this work, <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:mo>(</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:mo>(</mml:mo><mml:mn mathvariant="normal">0</mml:mn><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="M136" display="inline"><mml:mrow><mml:msub><mml:mi>y</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, and the expression becomes

          <disp-formula id="Ch1.E25" content-type="numbered"><label>25</label><mml:math id="M137" display="block"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo mathvariant="normal" stretchy="false">̃</mml:mo></mml:mover><mml:mtext>rel</mml:mtext></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo stretchy="false" mathvariant="normal">̃</mml:mo></mml:mover><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>i</mml:mi><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo></mml:mrow></mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>-</mml:mo><mml:msup><mml:mi>e</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mi>i</mml:mi><mml:mi>k</mml:mi><mml:mo>(</mml:mo><mml:mi mathvariant="italic">ω</mml:mi><mml:mo>)</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mi>cos⁡</mml:mi><mml:mi mathvariant="italic">β</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>

        There is no amplitude modulation when the waves propagate perpendicularly to the turbine arrangement (wave heading of 90°) because the term within the parentheses becomes zero.</p>

      <fig id="F13" specific-use="star"><label>Figure 13</label><caption><p id="d2e5470">PSDs of relative wave elevation and relative motions between T1 and T2 obtained with RAFT and FAST.Farm for <bold>(a)</bold> 0°, <bold>(b)</bold> 45°, and <bold>(c)</bold> 90° wind and wave headings.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f13.png"/>

      </fig>

      <p id="d2e5488">To further illustrate the origins of the behavior, Fig. <xref ref-type="fig" rid="F14"/> plots the wave elevation at the origin, the surge motion of each turbine, and the shared mooring line tension complex amplitudes versus frequency. The complex amplitudes provide a raw view of what RAFT is calculating because they also contain phase information. The phases can be inferred from the real and imaginary components, which are included in the plots. For simplicity, RAFT assumes that every frequency component of the wave elevation is at zero phase offset at the wind farm origin. Turbine 1 has a reference position at the origin, resulting in wave elevations with close to zero phase offset (the wave complex amplitudes have close to zero imaginary component). There is a phase lag in its surge response (appearing as a negative imaginary component in the complex amplitude) because of the phase lag inherent in the fluid–structure interaction. Turbine 2 has a similar fluid–structure response, but it also experiences a phase shift in the wave elevations because of its offset location. The phase shift is approximately proportional to frequency. Because of the large spacing relative to the wavelengths, the phase shift “wraps around” approximately 10 times within the wave excitation frequency range, which is shown by the number of peaks in the real component curve in the T2 surge plot in Fig. <xref ref-type="fig" rid="F14"/>a, b.</p>

      <fig id="F14" specific-use="star"><label>Figure 14</label><caption><p id="d2e5498">Complex response amplitudes predicted by RAFT for <bold>(a)</bold> 0°, <bold>(b)</bold> 45°, and <bold>(c)</bold> 90° wave headings.</p></caption>
        <graphic xlink:href="https://wes.copernicus.org/articles/10/3027/2025/wes-10-3027-2025-f14.png"/>

      </fig>

      <p id="d2e5516">Excitation of tensions in the shared mooring line depends primarily on relative motion between the floating platforms. Because Turbine 2 has a phase shift that wraps around many times, the relative phase between Turbines 1 and 2 has a similar wrap-around behavior, meaning that the turbines alternate between moving in phase and out of phase with each other across the frequency range. As a result, the shared mooring line tension spectrum alternates between zero (at frequencies where the turbines surge in phase) and a peak (at frequencies where the turbines surge out of phase). The positions of the zero-magnitude values in the shared mooring line tension plot correspond to the wavelengths that are multiples of the distance between T1 and T2.</p>
      <p id="d2e5519">This result is reasonable in theory and perhaps important as a design consideration in certain scenarios that are expected to result in primarily out-of-phase motions. This behavior is expected to be less pronounced under short-crested waves due to directional spreading, but it is probably noticeable in highly directional seas such as swells. The result is less distinct in the FAST.Farm results because of the increased broadband excitation and nonlinearities in the time-domain simulations. Further exploration of this comb-like shared line excitation phenomenon using both modeling approaches could be helpful to better understand its implications for design. The phenomenon would be equally applicable to assessing the loads on shared anchors, since the net horizontal loads are also affected by relative motions of the attached FOWTs.</p>
</sec>
<sec id="Ch1.S5" sec-type="conclusions">
  <label>5</label><title>Conclusions</title>
      <p id="d2e5531">The RAFT frequency-domain dynamics model for floating wind turbines was expanded to simulate arrays of floating wind turbines with the possibility of shared mooring lines. An approach to capture phase differences in the wave loadings of each floating wind turbine, along with the resulting differences in their responses, makes it possible to accurately predict the tension dynamics of shared mooring lines running between turbines.</p>
      <p id="d2e5534">The capability was verified by comparing against FAST.Farm simulation results for a simple two-turbine case with a single shared mooring line. The results show generally good agreement. The results in shared mooring line tension agree particularly well between models, except for well-understood limitations of the quasi-static mooring model that is used by RAFT. Improved mooring tension agreement compared to previous single-turbine comparisons is likely due to the use of a taut mooring system in the present study, which reduces the importance of dynamic effects compared to catenary mooring systems.</p>
      <p id="d2e5537">In addition to verifying the new array-level modeling features, the results illuminated a previously unknown phenomenon in which shared mooring lines are excited at a comb-like frequency response. This occurs because of the nature of relative motion between adjacent platforms that experience wave excitation phase shifts. The phenomenon is more obscured in time-domain results and warrants further exploration using a range of modeling methods to better understand its implications for design.</p>
      <p id="d2e5540">The present study focused on first-order wave excitation and did not consider excitation from second-order wave loads or from wind turbulence. These are important areas for future work. Second-order wave excitation capabilities have been recently added to RAFT <xref ref-type="bibr" rid="bib1.bibx4" id="paren.27"/> and could be extended to work for array scenarios. Turbulent wind excitation is an ongoing development effort for RAFT but will likely be an important source of excitation and array-level interactions. In addition, the potential to account for mooring system dynamics in the frequency domain, as recently developed by <xref ref-type="bibr" rid="bib1.bibx1" id="text.28"/>, could reduce the modeling differences between the frequency- and time-domain approaches and shed further light on the underlying dynamic phenomena in shared mooring systems.</p>
</sec>

      
      </body>
    <back><notes notes-type="codeavailability"><title>Code availability</title>

      <p id="d2e5553">The RAFT and OpenFAST modeling codes used in this work are both open-source and available through public repositories hosted on GitHub. For RAFT, see Hall et al. (2025). For OpenFAST, see Jonkman et al. (2024).</p>
  </notes><notes notes-type="dataavailability"><title>Data availability</title>

      <p id="d2e5559">The reference floating wind turbine design used in this study has input data publicly available in several locations. The central repository of the design is at <uri>https://github.com/IEAWindSystems/IEA-15-240-RWT</uri>. The input files for RAFT are included in the RAFT repository (Hall et al., 2025). The two-turbine shared mooring configuration is fully described in this paper, and any questions can be sent to the corresponding author.</p>
  </notes><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e5568">MH conceived the original concept and obtained the funding for the research. MH and LC developed the modeling methods. All authors ran the simulations and analyzed the results. All authors contributed to the writing and jointly finalized the paper.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

      <p id="d2e5574">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="d2e5580">The views expressed in the article do not necessarily represent the views of the DOE or the U.S. Government.Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. While Copernicus Publications makes every effort to include appropriate place names, the final responsibility lies with the authors. 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="d2e5589">This work was authored by NREL for the US Department of Energy (DOE) under contract no. DE-AC36-08GO28308. The US Government retains and the publisher, by accepting the article for publication, acknowledges that the US Government retains a nonexclusive paid-up irrevocable worldwide license to publish or reproduce the published form of this work, or allow others to do so, for US Government purposes.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e5594">Funding for this study has been provided by the DOE Office of Energy Efficiency and Renewable Energy Wind Energy Technologies Office through the Floating Wind Array Design project.</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e5600">This paper was edited by Erin Bachynski-Polić and reviewed by three anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Abdelmoteleb and Bachynski-Polić(2025)</label><mixed-citation>Abdelmoteleb, S.-E. and Bachynski-Polić, E. E.: A frequency-domain optimization procedure for catenary and semi-taut mooring systems of floating wind turbines, Marine Structures, 101, 103768, <ext-link xlink:href="https://doi.org/10.1016/j.marstruc.2024.103768" ext-link-type="DOI">10.1016/j.marstruc.2024.103768</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Allen et al.(2020)</label><mixed-citation>Allen, C., Viselli, A., Dagher, H., Goupee, A., Gaertner, E., Abbas, N., Hall, M., and Barter, G.: Definition of the UMaine VolturnUS-S reference platform developed for the IEA Wind 15-Megawatt offshore reference wind turbine, Tech. Rep. NREL/TP-5000-76773, National Renewable Energy Laboratory, <ext-link xlink:href="https://doi.org/10.2172/1660012" ext-link-type="DOI">10.2172/1660012</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Barltrop(1998)</label><mixed-citation> Barltrop, N. (Ed.): Floating structures: a guide for design and analysis, Oilfield Publications Limited (OPL), Ledbury, England, ISBN: 978-1-87055-3353, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Carmo and Hall(2025)</label><mixed-citation>Carmo, L. and Hall, M.: Slender-body approach for computing second-order wave loads in the frequency domain, Ocean Engineering, 322, <ext-link xlink:href="https://doi.org/10.1016/j.oceaneng.2025.120558" ext-link-type="DOI">10.1016/j.oceaneng.2025.120558</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Chen et al.(2025)</label><mixed-citation>Chen, P., Cheng, Z., Deng, S., Hu, Z., and Moan, T.: A frequency domain method for fully coupled modelling and dynamic analysis of floating wind turbines, Marine Structures, 99, 103715, <ext-link xlink:href="https://doi.org/10.1016/j.marstruc.2024.103715" ext-link-type="DOI">10.1016/j.marstruc.2024.103715</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Connolly and Hall(2019)</label><mixed-citation>Connolly, P. and Hall, M.: Comparison of pilot-scale floating offshore wind farms with shared moorings, Ocean Engineering, 171, 172–180, <ext-link xlink:href="https://doi.org/10.1016/j.oceaneng.2018.08.040" ext-link-type="DOI">10.1016/j.oceaneng.2018.08.040</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Ding et al.(2018)</label><mixed-citation>Ding, Q., Li, C., Yu, N., Hao, W., and Ji, J.: Numerical and experimental investigation into the dynamic response of a floating wind turbine spar array platform, Journal of Mechanical Science and Technology, 32, 1106–1116, <ext-link xlink:href="https://doi.org/10.1007/s12206-018-0213-x" ext-link-type="DOI">10.1007/s12206-018-0213-x</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Faltinsen(1993)</label><mixed-citation> Faltinsen, O.: Sea loads on ships and offshore structures, Cambridge University press, ISBN: 9780521458702, 1993.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Gaertner et al.(2020)</label><mixed-citation>Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter, G. E., Abbas, N. J., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G. N., Feil, R., Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.: IEA Wind TCP Task 37: Definition of the IEA 15-Megawatt offshore reference wind turbine, Tech. Rep. NREL/TP-5000-75698, National Renewable Energy Laboratory, <ext-link xlink:href="https://doi.org/10.2172/1603478" ext-link-type="DOI">10.2172/1603478</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Goldschmidt and Muskulus(2015)</label><mixed-citation>Goldschmidt, M. and Muskulus, M.: Coupled mooring systems for floating wind farms, Energy Procedia, 80, 255–262, <ext-link xlink:href="https://doi.org/10.1016/j.egypro.2015.11.429" ext-link-type="DOI">10.1016/j.egypro.2015.11.429</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Gözcü et al.(2022)</label><mixed-citation>Gözcü, O., Kontos, S., and Bredmose, H.: Dynamics of two floating wind turbines with shared anchor and mooring lines, Journal of Physics: Conference Series, 2265, 042026, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/4/042026" ext-link-type="DOI">10.1088/1742-6596/2265/4/042026</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Hall(2024)</label><mixed-citation>Hall, M.: Generalized quasi-static mooring system modeling with analytic jacobians, Energies, 17, 3155, <ext-link xlink:href="https://doi.org/10.3390/en17133155" ext-link-type="DOI">10.3390/en17133155</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Hall and Connolly(2018)</label><mixed-citation>Hall, M. and Connolly, P.: Coupled dynamics modelling of a floating wind farm with shared moorings, in: Proceedings of the ASME 2018 37th International Conference on Ocean, Offshore and Arctic Engineering, ASME, Madrid, Spain, <ext-link xlink:href="https://doi.org/10.1115/OMAE2018-78489" ext-link-type="DOI">10.1115/OMAE2018-78489</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Hall et al.(2013)</label><mixed-citation>Hall, M., Buckham, B., and Crawford, C.: Evolving offshore wind: Genetic algorithm-based optimization of floating wind turbine platforms, in: MTS/IEEE Oceans'13, Bergen, Norway, 2013,  1–10, <ext-link xlink:href="https://doi.org/10.1109/OCEANS-Bergen.2013.6608173" ext-link-type="DOI">10.1109/OCEANS-Bergen.2013.6608173</ext-link>, 2013.</mixed-citation></ref>
      <ref id="bib1.bib1"><label>1</label><mixed-citation>Hall, M., Carmo, L., Housner, S., Zalkind, D., and Barter, G.: RAFT: v1.5, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.17808357" ext-link-type="DOI">10.5281/zenodo.17808357</ext-link>, 2025.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Hall et al.(2022a)</label><mixed-citation>Hall, M., Housner, S., Zalkind, D., Bortolotti, P., Ogden, D., and Barter, G.: An open-source frequency-domain model for floating wind turbine design optimization, Journal of Physics: Conference Series, 2265, 042020, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2265/4/042020" ext-link-type="DOI">10.1088/1742-6596/2265/4/042020</ext-link>, 2022a.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Hall et al.(2022b)</label><mixed-citation>Hall, M., Lozon, E., Housner, S., and Sirnivas, S.: Design and analysis of a ten-turbine floating wind farm with shared mooring lines, Journal of Physics: Conference Series, 2362, 012016, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2362/1/012016" ext-link-type="DOI">10.1088/1742-6596/2362/1/012016</ext-link>, 2022b.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Hall et al.(2024)</label><mixed-citation>Hall, M., West, W., Housner, S., and Lozon, E.: Efficient modeling of floating wind arrays including current loads and seabed bathymetry, in: Proceedings of the ASME 2023 5th International Offshore Wind Technical Conference,  18–19 December 2023, Exeter, UK, <ext-link xlink:href="https://doi.org/10.1115/IOWTC2023-119447" ext-link-type="DOI">10.1115/IOWTC2023-119447</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Hegseth et al.(2020)</label><mixed-citation>Hegseth, J. M., Bachynski, E. E., and Martins, J. R. R. A.: Integrated design optimization of spar floating wind turbines, Marine Structures, 72, <ext-link xlink:href="https://doi.org/10.1016/j.marstruc.2020.102771" ext-link-type="DOI">10.1016/j.marstruc.2020.102771</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bib2"><label>2</label><mixed-citation> Jonkman, B., Platt, A., Mudafort, R., Branlard, E., Sprague, M., Ross, H., Slaughter, D., Jonkman, J., Hayman, G., cortadocodes3, Hall, M., Vijayakumar, G., Buhl, M., Russell9798, Bortolotti, P., Davies, R., reos-rcrozier, Ananthan, S., Michael, S., Rood, J., Damiani, R., Mendoza, N., sinolonghai, pschuenemann, Chetan, M., Sharma, A., Shaler, K., Housner, S., Wang, L., and psakievich: OpenFAST/openfast: v4.0.0, Zenodo [code], https://doi.org/10.5281/zenodo.14553563, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Lemmer et al.(2020)</label><mixed-citation>Lemmer, F., Yu, W., Luhmann, B., Schlipf, D., and Cheng, P. W.: Multibody modeling for concept-level floating offshore wind turbine design, Multibody System Dynamics, 49, 203–236, <ext-link xlink:href="https://doi.org/10.1007/s11044-020-09729-x" ext-link-type="DOI">10.1007/s11044-020-09729-x</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Liang et al.(2020)</label><mixed-citation>Liang, G., Merz, K., and Jiang, Z.: Modeling of a shared mooring system for a dual-spar configuration, in: Proceedings of the ASME 2020 39th International Conference on Ocean, Offshore and Arctic Engineering, 3–7 August 2020, virtual conference, <ext-link xlink:href="https://doi.org/10.1115/OMAE2020-18467" ext-link-type="DOI">10.1115/OMAE2020-18467</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Lozon and Hall(2023)</label><mixed-citation>Lozon, E. and Hall, M.: Coupled loads analysis of a novel shared-mooring floating wind farm, Applied Energy, 332, 120513, <ext-link xlink:href="https://doi.org/10.1016/j.apenergy.2022.120513" ext-link-type="DOI">10.1016/j.apenergy.2022.120513</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Lozon et al.(2024)</label><mixed-citation>Lozon, E., Hall, M., and Mahfouz, M. Y.: Coupled modeling of wake steering and platform offsets for floating wind arrays, Journal of Physics: Conference Series, 2767, 062035, <ext-link xlink:href="https://doi.org/10.1088/1742-6596/2767/6/062035" ext-link-type="DOI">10.1088/1742-6596/2767/6/062035</ext-link>, 2024.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Lupton and Langley(2019)</label><mixed-citation>Lupton, R. C. and Langley, R. S.: Improved linearised models of wind turbine aerodynamics and control system dynamics using harmonic linearisation, Renew. Energy, 135, <ext-link xlink:href="https://doi.org/10.1016/j.renene.2018.11.067" ext-link-type="DOI">10.1016/j.renene.2018.11.067</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Morison et al.(1950)</label><mixed-citation>Morison, J., O'Brien, M., Johnson, J., and Schaaf, S.: The force exerted by surface waves on piles, Journal of Petroleum Technology, 2, 149–154, <ext-link xlink:href="https://doi.org/10.2118/950149-G" ext-link-type="DOI">10.2118/950149-G</ext-link>, 1950. </mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Munir et al.(2021)</label><mixed-citation>Munir, H., Lee, C. F., and Ong, M. C.: Global analysis of floating offshore wind turbines with shared mooring system, IOP Conference Series: Materials Science and Engineering, 1201, 012024, <ext-link xlink:href="https://doi.org/10.1088/1757-899x/1201/1/012024" ext-link-type="DOI">10.1088/1757-899x/1201/1/012024</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Pegalajar-Jurado et al.(2018)</label><mixed-citation>Pegalajar-Jurado, A., Borg, M., and Bredmose, H.: An efficient frequency-domain model for quick load analysis of floating offshore wind turbines, Wind Energ. Sci., 3, 693–712, <ext-link xlink:href="https://doi.org/10.5194/wes-3-693-2018" ext-link-type="DOI">10.5194/wes-3-693-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Wayman(2006)</label><mixed-citation>Wayman, E.: Coupled dynamics and economic analysis of floating wind turbine systems, Masters thesis, MIT, Massachusetts Institute of Technology, <uri>http://hdl.handle.net/1721.1/35650</uri> (last access: 23 February 2016), 2006.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Wilson et al.(2021)</label><mixed-citation>Wilson, S., Hall, M., Housner, S., and Sirnivas, S.: Linearized modeling and optimization of shared mooring systems, Ocean Engineering, 241, 110009, <ext-link xlink:href="https://doi.org/10.1016/j.oceaneng.2021.110009" ext-link-type="DOI">10.1016/j.oceaneng.2021.110009</ext-link>, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Yang et al.(2023)</label><mixed-citation>Yang, C., Xiao, L., Chen, P., Cheng, Z., Liu, M., and Liu, L.: An analytical frequency-domain model of aerodynamic mass and damping of floating wind turbines, Wind Energy, 26, 1140–1164, <ext-link xlink:href="https://doi.org/10.1002/we.2861" ext-link-type="DOI">10.1002/we.2861</ext-link>, 2023.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>Frequency-domain modeling of floating wind arrays with shared mooring lines</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Abdelmoteleb and
Bachynski-Polić(2025)</label><mixed-citation>
      
Abdelmoteleb, S.-E. and Bachynski-Polić, E. E.: A frequency-domain
optimization procedure for catenary and semi-taut mooring systems of floating
wind turbines, Marine Structures, 101, 103768,
<a href="https://doi.org/10.1016/j.marstruc.2024.103768" target="_blank">https://doi.org/10.1016/j.marstruc.2024.103768</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Allen et al.(2020)</label><mixed-citation>
      
Allen, C., Viselli, A., Dagher, H., Goupee, A., Gaertner, E., Abbas, N., Hall,
M., and Barter, G.: Definition of the UMaine VolturnUS-S reference
platform developed for the IEA Wind 15-Megawatt offshore reference wind
turbine, Tech. Rep. NREL/TP-5000-76773, National Renewable Energy
Laboratory, <a href="https://doi.org/10.2172/1660012" target="_blank">https://doi.org/10.2172/1660012</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Barltrop(1998)</label><mixed-citation>
      
Barltrop, N. (Ed.): Floating structures: a guide for design and analysis, Oilfield Publications Limited (OPL), Ledbury, England, ISBN: 978-1-87055-3353, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Carmo and Hall(2025)</label><mixed-citation>
      
Carmo, L. and Hall, M.: Slender-body approach for computing second-order wave
loads in the frequency domain, Ocean Engineering, 322,
<a href="https://doi.org/10.1016/j.oceaneng.2025.120558" target="_blank">https://doi.org/10.1016/j.oceaneng.2025.120558</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Chen et al.(2025)</label><mixed-citation>
      
Chen, P., Cheng, Z., Deng, S., Hu, Z., and Moan, T.: A frequency domain method
for fully coupled modelling and dynamic analysis of floating wind turbines,
Marine Structures, 99, 103715, <a href="https://doi.org/10.1016/j.marstruc.2024.103715" target="_blank">https://doi.org/10.1016/j.marstruc.2024.103715</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Connolly and Hall(2019)</label><mixed-citation>
      
Connolly, P. and Hall, M.: Comparison of pilot-scale floating offshore wind
farms with shared moorings, Ocean Engineering, 171, 172–180,
<a href="https://doi.org/10.1016/j.oceaneng.2018.08.040" target="_blank">https://doi.org/10.1016/j.oceaneng.2018.08.040</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Ding et al.(2018)</label><mixed-citation>
      
Ding, Q., Li, C., Yu, N., Hao, W., and Ji, J.: Numerical and experimental
investigation into the dynamic response of a floating wind turbine spar array
platform, Journal of Mechanical Science and Technology, 32, 1106–1116,
<a href="https://doi.org/10.1007/s12206-018-0213-x" target="_blank">https://doi.org/10.1007/s12206-018-0213-x</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Faltinsen(1993)</label><mixed-citation>
      
Faltinsen, O.: Sea loads on ships and offshore structures, Cambridge
University press, ISBN: 9780521458702, 1993.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Gaertner et al.(2020)</label><mixed-citation>
      
Gaertner, E., Rinker, J., Sethuraman, L., Zahle, F., Anderson, B., Barter,
G. E., Abbas, N. J., Meng, F., Bortolotti, P., Skrzypinski, W., Scott, G. N.,
Feil, R., Bredmose, H., Dykes, K., Shields, M., Allen, C., and Viselli, A.:
IEA Wind TCP Task 37: Definition of the IEA 15-Megawatt offshore reference
wind turbine, Tech. Rep. NREL/TP-5000-75698, National Renewable Energy
Laboratory, <a href="https://doi.org/10.2172/1603478" target="_blank">https://doi.org/10.2172/1603478</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Goldschmidt and Muskulus(2015)</label><mixed-citation>
      
Goldschmidt, M. and Muskulus, M.: Coupled mooring systems for floating wind
farms, Energy Procedia, 80, 255–262, <a href="https://doi.org/10.1016/j.egypro.2015.11.429" target="_blank">https://doi.org/10.1016/j.egypro.2015.11.429</a>,
2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Gözcü et al.(2022)</label><mixed-citation>
      
Gözcü, O., Kontos, S., and Bredmose, H.: Dynamics of two floating wind
turbines with shared anchor and mooring lines, Journal of Physics: Conference
Series, 2265, 042026, <a href="https://doi.org/10.1088/1742-6596/2265/4/042026" target="_blank">https://doi.org/10.1088/1742-6596/2265/4/042026</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Hall(2024)</label><mixed-citation>
      
Hall, M.: Generalized quasi-static mooring system modeling with analytic
jacobians, Energies, 17, 3155, <a href="https://doi.org/10.3390/en17133155" target="_blank">https://doi.org/10.3390/en17133155</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Hall and Connolly(2018)</label><mixed-citation>
      
Hall, M. and Connolly, P.: Coupled dynamics modelling of a floating wind farm
with shared moorings, in: Proceedings of the ASME 2018 37th International
Conference on Ocean, Offshore and Arctic Engineering, ASME, Madrid, Spain,
<a href="https://doi.org/10.1115/OMAE2018-78489" target="_blank">https://doi.org/10.1115/OMAE2018-78489</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Hall et al.(2013)</label><mixed-citation>
      
Hall, M., Buckham, B., and Crawford, C.: Evolving offshore wind: Genetic
algorithm-based optimization of floating wind turbine platforms, in:
MTS/IEEE Oceans'13, Bergen, Norway, 2013,  1–10, <a href="https://doi.org/10.1109/OCEANS-Bergen.2013.6608173" target="_blank">https://doi.org/10.1109/OCEANS-Bergen.2013.6608173</a>, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>1</label><mixed-citation>
      
Hall, M., Carmo, L., Housner, S., Zalkind, D., and Barter, G.: RAFT: v1.5, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.17808357" target="_blank">https://doi.org/10.5281/zenodo.17808357</a>, 2025.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Hall et al.(2022a)</label><mixed-citation>
      
Hall, M., Housner, S., Zalkind, D., Bortolotti, P., Ogden, D., and Barter, G.:
An open-source frequency-domain model for floating wind turbine design
optimization, Journal of Physics: Conference Series, 2265, 042020,
<a href="https://doi.org/10.1088/1742-6596/2265/4/042020" target="_blank">https://doi.org/10.1088/1742-6596/2265/4/042020</a>,
2022a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Hall et al.(2022b)</label><mixed-citation>
      
Hall, M., Lozon, E., Housner, S., and Sirnivas, S.: Design and analysis of a
ten-turbine floating wind farm with shared mooring lines, Journal of Physics:
Conference Series, 2362, 012016, <a href="https://doi.org/10.1088/1742-6596/2362/1/012016" target="_blank">https://doi.org/10.1088/1742-6596/2362/1/012016</a>, 2022b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Hall et al.(2024)</label><mixed-citation>
      
Hall, M., West, W., Housner, S., and Lozon, E.: Efficient modeling of floating
wind arrays including current loads and seabed bathymetry, in: Proceedings of
the ASME 2023 5th International Offshore Wind Technical Conference,  18–19 December 2023,
Exeter, UK,
<a href="https://doi.org/10.1115/IOWTC2023-119447" target="_blank">https://doi.org/10.1115/IOWTC2023-119447</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Hegseth et al.(2020)</label><mixed-citation>
      
Hegseth, J. M., Bachynski, E. E., and Martins, J. R. R. A.: Integrated design
optimization of spar floating wind turbines, Marine Structures, 72,
<a href="https://doi.org/10.1016/j.marstruc.2020.102771" target="_blank">https://doi.org/10.1016/j.marstruc.2020.102771</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>2</label><mixed-citation>
      
Jonkman, B., Platt, A., Mudafort, R., Branlard, E., Sprague, M., Ross, H., Slaughter, D., Jonkman, J., Hayman, G., cortadocodes3, Hall, M., Vijayakumar, G., Buhl, M., Russell9798, Bortolotti, P., Davies, R., reos-rcrozier, Ananthan, S., Michael, S., Rood, J., Damiani, R., Mendoza, N., sinolonghai, pschuenemann, Chetan, M., Sharma, A., Shaler, K., Housner, S., Wang, L., and psakievich: OpenFAST/openfast: v4.0.0, Zenodo [code], https://doi.org/10.5281/zenodo.14553563, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Lemmer et al.(2020)</label><mixed-citation>
      
Lemmer, F., Yu, W., Luhmann, B., Schlipf, D., and Cheng, P. W.: Multibody
modeling for concept-level floating offshore wind turbine design, Multibody
System Dynamics, 49, 203–236, <a href="https://doi.org/10.1007/s11044-020-09729-x" target="_blank">https://doi.org/10.1007/s11044-020-09729-x</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Liang et al.(2020)</label><mixed-citation>
      
Liang, G., Merz, K., and Jiang, Z.: Modeling of a shared mooring system for a
dual-spar configuration, in: Proceedings of the ASME 2020 39th
International Conference on Ocean, Offshore and Arctic Engineering, 3–7 August 2020, virtual
conference, <a href="https://doi.org/10.1115/OMAE2020-18467" target="_blank">https://doi.org/10.1115/OMAE2020-18467</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Lozon and Hall(2023)</label><mixed-citation>
      
Lozon, E. and Hall, M.: Coupled loads analysis of a novel shared-mooring
floating wind farm, Applied Energy, 332, 120513,
<a href="https://doi.org/10.1016/j.apenergy.2022.120513" target="_blank">https://doi.org/10.1016/j.apenergy.2022.120513</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Lozon et al.(2024)</label><mixed-citation>
      
Lozon, E., Hall, M., and Mahfouz, M. Y.: Coupled modeling of wake steering and
platform offsets for floating wind arrays, Journal of Physics: Conference
Series, 2767, 062035, <a href="https://doi.org/10.1088/1742-6596/2767/6/062035" target="_blank">https://doi.org/10.1088/1742-6596/2767/6/062035</a>, 2024.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Lupton and Langley(2019)</label><mixed-citation>
      
Lupton, R. C. and Langley, R. S.: Improved linearised models of wind turbine
aerodynamics and control system dynamics using harmonic linearisation, Renew.
Energy, 135, <a href="https://doi.org/10.1016/j.renene.2018.11.067" target="_blank">https://doi.org/10.1016/j.renene.2018.11.067</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Morison et al.(1950)</label><mixed-citation>
      
Morison, J., O'Brien, M., Johnson, J., and Schaaf, S.: The force exerted by
surface waves on piles, Journal of Petroleum Technology, 2, 149–154,
<a href="https://doi.org/10.2118/950149-G" target="_blank">https://doi.org/10.2118/950149-G</a>, 1950.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Munir et al.(2021)</label><mixed-citation>
      
Munir, H., Lee, C. F., and Ong, M. C.: Global analysis of floating offshore
wind turbines with shared mooring system, IOP Conference Series: Materials
Science and Engineering, 1201, 012024,
<a href="https://doi.org/10.1088/1757-899x/1201/1/012024" target="_blank">https://doi.org/10.1088/1757-899x/1201/1/012024</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Pegalajar-Jurado et al.(2018)</label><mixed-citation>
      
Pegalajar-Jurado, A., Borg, M., and Bredmose, H.: An efficient frequency-domain model for quick load analysis of floating offshore wind turbines, Wind Energ. Sci., 3, 693–712, <a href="https://doi.org/10.5194/wes-3-693-2018" target="_blank">https://doi.org/10.5194/wes-3-693-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Wayman(2006)</label><mixed-citation>
      
Wayman, E.: Coupled dynamics and economic analysis of floating wind turbine
systems, Masters thesis, MIT, Massachusetts Institute of Technology, <a href="http://hdl.handle.net/1721.1/35650" target="_blank"/> (last access: 23 February 2016), 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Wilson et al.(2021)</label><mixed-citation>
      
Wilson, S., Hall, M., Housner, S., and Sirnivas, S.: Linearized modeling and
optimization of shared mooring systems, Ocean Engineering, 241, 110009,
<a href="https://doi.org/10.1016/j.oceaneng.2021.110009" target="_blank">https://doi.org/10.1016/j.oceaneng.2021.110009</a>, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Yang et al.(2023)</label><mixed-citation>
      
Yang, C., Xiao, L., Chen, P., Cheng, Z., Liu, M., and Liu, L.: An analytical
frequency-domain model of aerodynamic mass and damping of floating wind
turbines, Wind Energy, 26, 1140–1164, <a href="https://doi.org/10.1002/we.2861" target="_blank">https://doi.org/10.1002/we.2861</a>, 2023.

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