<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Built Environ.</journal-id>
<journal-title>Frontiers in Built Environment</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Built Environ.</abbrev-journal-title>
<issn pub-type="epub">2297-3362</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1120518</article-id>
<article-id pub-id-type="doi">10.3389/fbuil.2023.1120518</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Built Environment</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Open-source simulation of strongly-coupled fluid-structure interaction between non-conformal interfaces</article-title>
<alt-title alt-title-type="left-running-head">Lewis et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/fbuil.2023.1120518">10.3389/fbuil.2023.1120518</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lewis</surname>
<given-names>Nicolette S.</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2100373/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Winter</surname>
<given-names>Andrew O.</given-names>
</name>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Bonus</surname>
<given-names>Justin</given-names>
</name>
<xref ref-type="aff" rid="aff3">
<sup>3</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Motley</surname>
<given-names>Michael R.</given-names>
</name>
<xref ref-type="aff" rid="aff4">
<sup>4</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2199582/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Eberhard</surname>
<given-names>Marc O.</given-names>
</name>
<xref ref-type="aff" rid="aff5">
<sup>5</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Arduino</surname>
<given-names>Pedro</given-names>
</name>
<xref ref-type="aff" rid="aff6">
<sup>6</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Lehman</surname>
<given-names>Dawn E.</given-names>
</name>
<xref ref-type="aff" rid="aff7">
<sup>7</sup>
</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>Ph.D. Candidate</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Affiliate Instructor</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<aff id="aff3">
<sup>3</sup>
<institution>Ph.D. Candidate</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <country>Italy</country>
</aff>
<aff id="aff4">
<sup>4</sup>
<institution>John R. Kiely Endowed Associate Professor</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<aff id="aff5">
<sup>5</sup>
<institution>Professor, Department of Civil &#x0026; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<aff id="aff6">
<sup>6</sup>
<institution>H.R. Berg Endowed Professor</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<aff id="aff7">
<sup>7</sup>
<institution>Testing Laboratory</institution>, <institution>Director of Large-Scale Structural Engineering</institution>, <institution>Department of Civil &#x26; Environmental Engineering</institution>, <institution>University of Washington</institution>, <addr-line>Seattle</addr-line>, <addr-line>WA</addr-line>, <country>United States</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/797672/overview">Julio Alfonso Ramirez</ext-link>, Purdue University, United States</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/635193/overview">Hoang Nam Phan</ext-link>, Roma Tre University, Italy</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/214828/overview">Andrew Brian Kennedy</ext-link>, University of Notre Dame, United States</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Nicolette S. Lewis, <email>nsaoirse@uw.edu</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Earthquake Engineering, a section of the journal Frontiers in Built Environment</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>22</day>
<month>03</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>9</volume>
<elocation-id>1120518</elocation-id>
<history>
<date date-type="received">
<day>10</day>
<month>12</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>28</day>
<month>02</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Lewis, Winter, Bonus, Motley, Eberhard, Arduino and Lehman.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Lewis, Winter, Bonus, Motley, Eberhard, Arduino and Lehman</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Design code-based &#x201c;life-safety&#x201d; requirements for structural earthquake and tsunami design offer reasonable guidelines to construct buildings that will remain standing during a tsunami or seismic event. Much less consideration has been given to assessing structural resilience during sequential earthquake and tsunami multi-hazard events. Such events present a series of extreme loading scenarios, where damage sustained during the earthquake influences structural performance during the subsequent inundation. Similar difficulties exist with respect to damage sustained during tropical events, as wind and fluid loading may vary with structural response or accumulated damage. To help ensure critical structures meet a &#x201c;life-safety&#x201d; level of performance during such multi-hazard events, analysis software capable of simulating simultaneous structural and fluid dynamics must be developed. To address this gap in understanding of non-linear fluid-structure-interaction (FSI), an open-source tool (FOAMySees) was developed for simulation of tsunami and wave impact analysis of post-earthquake non-linear structural response of buildings. The tool is comprised of the Open-source Field Operation And Manipulation software package and OpenSeesPy, a Python 3 interpreter of OpenSees. The programs are coupled <italic>via</italic> preCICE, a coupling library for partitioned multi-physics simulation. FOAMySees has been written to work in a Linux OS environment with HPC clusters in mind. The FOAMySees program offers a partitioned conventional-serial-staggered coupling scheme, with optional implicit iteration techniques to ensure a strongly-coupled two-way FSI solution. While FOAMySees was developed specifically for tsunami-resilience analysis, it may be utilized for other FSI applications with ease. With this coupled Computational Fluid Dynamics (CFD) and Finite Element Analysis (FEA) program, tsunami and earthquake simulations may be run sequentially or simultaneously, allowing for the evaluation of non-linear structural response to multi-hazard excitation.</p>
</abstract>
<kwd-group>
<kwd>fluid-structure interaction</kwd>
<kwd>computational fluid dynamics</kwd>
<kwd>finite element analysis</kwd>
<kwd>non-linear structural analysis</kwd>
<kwd>natural hazards</kwd>
<kwd>simulation</kwd>
</kwd-group>
<contract-num rid="cn001">CMMI-1726326 CMMI-1933184</contract-num>
<contract-sponsor id="cn001">National Science Foundation<named-content content-type="fundref-id">10.13039/100000001</named-content>
</contract-sponsor>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1 Introduction</title>
<p>Design code-based &#x201c;life-safety&#x201d; requirements for structural earthquake and tsunami design offer reasonable guidelines to construct buildings that will remain standing during a tsunami or seismic event. Much less consideration has been given to assessing structural resilience during sequential earthquake and tsunami multi-hazard events. Such events present a series of extreme loading scenarios, where damage sustained during the earthquake influences structural performance during the subsequent inundation. Similar difficulties exist with respect to damage sustained during tropical events, as wind and fluid loading may vary with structural response or accumulated damage. To help ensure critical structures meet a &#x201c;life-safety&#x201d; level of performance during such multi-hazard events, analysis software capable of simulating simultaneous structural and fluid dynamics must be developed. Additionally, such a program must not only account for initial earthquake damage, but also the interplay of fluid-induced forces and the motion of structures on which they act. This integrated approach of analysis of cascading hazards will allow engineers to better represent the physical conditions and expected conditions, enabling more resilient designs for critical structures.</p>
<p>To address this gap in understanding of non-linear fluid-structure-interaction (FSI), an open-source tool (FOAMySees) was developed for simulation of tsunami and wave impact analysis of post-earthquake non-linear structural response of buildings. The tool is comprised of the Open-source Field Operation And Manipulation (OpenFOAM, <xref ref-type="bibr" rid="B24">Weller et al., 1998</xref>) software package and OpenSeesPy (<xref ref-type="bibr" rid="B27">Zhu et al., 2018</xref>), a Python 3 interpreter of OpenSees (<xref ref-type="bibr" rid="B17">McKenna et al., 2010</xref>). The programs are coupled <italic>via</italic> preCICE (<xref ref-type="bibr" rid="B2">Bungartz et al., 2016</xref>), a coupling library for partitioned multi-physics simulation. FOAMySees has been written to work in a Linux OS environment with HPC clusters in mind. The FOAMySees program offers a partitioned conventional-serial-staggered coupling scheme, with optional implicit iteration techniques to ensure a strongly-coupled two-way FSI solution. While FOAMySees was developed specifically for tsunami-resilience analysis, it may be utilized for other FSI applications with ease. With this coupled Computational Fluid Dynamics (CFD) and Finite Element Analysis (FEA) program, tsunami and earthquake simulations may be run sequentially or simultaneously, allowing for the evaluation of non-linear structural response to multi-hazard excitation.</p>
<sec id="s1-1">
<title>1.1 Research motivation</title>
<sec id="s1-1-1">
<title>1.1.1 Numerical methods for fluid-structure interaction simulation</title>
<p>Several commercial packages with non-linear FSI capabilities are currently available, with a long-standing history of validation and community support (see LS-Dyna, STAR-CCM&#x2b;, ABAQUS, COMSOL, <italic>etc.</italic>). Though these programs have been shown to be capable of solving complicated multiphysics problems with various coupled-numerical methodologies, the large barriers to entry associated with these commercial packages make these programs undesirable for research purposes. These barriers to entry include costs of licensing of the commercial codes and overhead for pre-processing and post-processing software packages, inflexibility of the sub-routines making solution of specialized problems complicated, as well as lack of transparency of the source codes. While suitable for solution of a broad range of fluid-structure interaction problems and have been used extensively in numerical and experimental studies of civil engineering structures, these programs each have drawbacks and none of the programs listed have been specifically developed for the purposes of civil/structural engineering, making earthquake analysis a challenge with many of these codes. A list of commonly-utilized parallelized software programs for Civil/Structural engineering along with their capabilities is shown in <xref ref-type="table" rid="T1">Table 1</xref>.</p>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Simulation capabilities for various parallelized software programs utilized for non-linear computational continuum mechanics.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="left"/>
<th align="left">Simulation software properties</th>
<th align="left">Open-source</th>
<th align="left">Fluid dynamics modelling</th>
<th align="left">Turbulence modelling</th>
<th align="left">Structural dynamics modelling</th>
<th align="left">Comms. Between 1D and 3D meshes</th>
<th align="left">Known use in CEE</th>
<th align="left">Modular software</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td rowspan="7" align="left">Software</td>
<td align="left">
<bold>FOAMySees</bold>
</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
</tr>
<tr>
<td align="left">OpenFOAM</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
</tr>
<tr>
<td align="left">OpenSees</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
</tr>
<tr>
<td align="left">preCICE</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left"/>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
</tr>
<tr>
<td align="left">LS-Dyna</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left"/>
</tr>
<tr>
<td align="left">ABAQUS</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left"/>
</tr>
<tr>
<td align="left">COMSOL</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left">&#x2a;</td>
<td align="left"/>
<td align="left">&#x2a;</td>
<td align="left"/>
</tr>
</tbody>
</table>
</table-wrap>
<p>Methods currently exist to couple open-source finite element codes (Deal-II, CalculiX, FENiCs, <italic>etc.</italic>) with computational fluid dynamics codes (see preCICE, associated adapters), but none of the existing commercial structural mechanics solvers that have been coupled with a fluid dynamics solver allow for representation of three-dimensional geometries within the fluid domain with one-dimensional, 6 degree of freedom structural beam elements. Such methods are currently in development which utilize an unstructured polyhedral finite volume method for solution of the structural deformation of modelled structures within Solids4Foam, an open-source fluid-structure interaction toolkit available for OpenFOAM. Despite the finite volume method offering high accuracy in solution of structural mechanics problems, this is a developing field of research and the finite volume method (unlike the finite element method) has not been extensively validated for earthquake engineering purposes. While strongly-coupled software programs capable of performing non-linear fluid-structure interaction of deformable bodies along with turbulence modelling within the fluid domain exist currently, few are open-source, and of those that are open-source, all utilize structural analysis software programs, which are not commonly utilized for the purposes of non-linear time history analysis of civil engineering applications and/or are geared toward conjugate heat transfer analysis rather than non-linear fluid-structure interaction.</p>
</sec>
<sec id="s1-1-2">
<title>1.1.2 Impetus for research</title>
<p>It is assumed that for very small deformations without periodicity a CFD model with non-slip velocity boundary conditions will suffice in determining applied force from impinging fluids, but for cases where displacements involve resonant vibration of a structure or where a structure possesses insufficient stiffness in particular degrees of freedom to resist incoming forces, the change in structural position and velocity within a flow can have a much more noticeable effect on fluid behavior and forces. In the case of larger deflections, or in the case of fluid-excited structural vibrations, fluid forces and their direction of application can result in changes of the pitch or position of the surfaces upon which they impinge, possibly leading to changes in loading. For tall, slender structures or structures with long spans such as bridges or highways, small changes in rotation at connections can result in large displacements of components of the structure. For example, a wide bridge with a long span could experience twisting of the bridge deck along the axis of its span, changing the position of the leading edge of the bridge deck structure within a flow transverse to the bridge span and the angle of inclination of the deck with respect to the flow. Furthermore, frequency based interactions between the structure and loading from surrounding flows can result in resonance between the structure and the vortexes shed in the wake of the structure, leading to vortex induced vibration.</p>
<p>In order to determine actual forces and impulses imparted from tsunami inundation events upon structures post-earthquake, expanding the extents of numerical analyses to realistic length scales of design structures subjected to tsunamis is necessary to accurately simulate structural deformations due to wave impingement and periodic fluid forcing from post-impact inundation flow. Additionally, since the feasibility and costs of experimental methods are prohibitive at full scale, utilizing numerical methods such as CFD for the determination of tsunami demands on structures at full scales presents the most economical alternative as well. By validating numerical models of experiments conducted at a reduced scale, validated numerical models may be used to simulate events at full scale in order to assess the accuracy of design equations and make recommendations for improvements. Thus identifying compatible combinations of CFD and FEM software is crucial to realizing full-scale simulations of consecutive earthquake and tsunami multi-hazard events.</p>
<p>Bearing these considerations in mind, OpenSees and OpenFOAM were selected for this research as the FEM and CFD simulation software, respectively. OpenSees is commonly used for non-linear FEM analysis of structures, particularly for earthquake simulation and hysteretic analysis of structures. OpenSees has a long-standing history in the civil engineering field and has been validated against experimental results countless times, providing reasonable confidence in the accuracy of the program when utilizing it for non-linear structural mechanics and dynamics. Similarly, OpenFOAM is used within the civil engineering community for CFD simulation of wind and water hazards, and has been validated against experiments involving hydrodynamic impact with great accuracy (<xref ref-type="bibr" rid="B5">Douglas and Nistor, 2014</xref>; <xref ref-type="bibr" rid="B6">Douglas et al., 2015</xref>; <xref ref-type="bibr" rid="B18">Motley et al., 2016</xref>; <xref ref-type="bibr" rid="B26">Wong, 2015</xref>; <xref ref-type="bibr" rid="B21">Sarjamee et al., 2017a</xref>; <xref ref-type="bibr" rid="B22">Sarjamee et al., 2017b</xref>; <xref ref-type="bibr" rid="B20">Qin et al., 2018</xref>; <xref ref-type="bibr" rid="B19">Qin, 2019</xref>; <xref ref-type="bibr" rid="B25">Winter 2019</xref>; <xref ref-type="bibr" rid="B3">Croquer et al., 2022</xref>; <xref ref-type="bibr" rid="B7">Elsheikh et al., 2022a</xref>; <xref ref-type="bibr" rid="B8">Elsheikh et al., 2022b</xref>; <xref ref-type="bibr" rid="B15">Liu et al., 2022</xref>).</p>
<p>OpenFOAM and OpenSees are both free, scalable, and plenty of example cases exist for both codes, which allows engineers to utilize the tools handily and learn through trial and error. The proposed application programming interface that couples OpenFOAM and OpenSees will assist engineers in analysis of structures subject to cascading hazards by offering a methodology for determining earthquake and tsunami forces at realistic scales while accounting for accumulated damage and non-linear fluid-structure interaction; this is particularly of importance when testing prototypical structures is not feasible or when experimental results from small-scale tests cannot be extrapolated accurately beyond their test-scales. Thus, the intention of this research is to expand the current capabilities of these open-source modelling methodologies such that they may be utilized to simulate full-scale damaged-state structural responses to non-linear fluid loading, and to validate the program against analytical and experimental test cases.</p>
</sec>
<sec id="s1-1-3">
<title>1.1.3 Scope of research</title>
<p>FOAMySees, an application programming interface (API) to allow for strongly-coupled FSI between OpenFOAM and OpenSeesPy, was developed to address the gaps in simulation capability described in the previous section. FOAMySees shows strong correlation with other FSI simulation software when benchmarked against analytical test cases. FOAMySees allows for any element formulation within OpenSeesPy to be utilized and coupled with a CFD simulation for the purposes of two-way strong fluid-structure interaction. Furthermore, the capabilities of FOAMySees allow for either preliminary or concurrent simulation of seismic excitation of structures with the OpenFOAM simulation, opening the possibility of simulation of non-linear structural response to multi-hazard events. The API is written such that users may build and implement any OpenSeesPy model, utilizing it for FSI analysis, before, during, or after additional forcing time histories as defined by the user. The program capabilities are intended to be of use to the civil engineering community to assist in the understanding of multi-hazard analysis and design of resilient structures. In particular, the capabilities of the program support high-fidelity CFD analyses of tsunami bore impact and inundation loading applied to non-linear post-yield multiple degree of freedom finite element models, allowing for the investigation of non-linear structural system responses to extreme hydrodynamic loading.</p>
</sec>
</sec>
<sec id="s1-2">
<title>1.2 Computational mechanics methodologies</title>
<sec id="s1-2-1">
<title>1.2.1 Computational fluid dynamics&#x2014;OpenFOAM</title>
<p>Fluid modelling was completed using computational fluid dynamics (CFD) with the Open-source Field Operation And Manipulation (OpenFOAM) (<xref ref-type="bibr" rid="B24">Weller et al., 1998</xref>) software package, namely, OpenFOAM Foundation&#x2019;s OpenFOAM.org&#x2014;Version 8. OpenFOAM is a collection of C&#x2b;&#x2b; libraries that may be compiled to create individual applications, which are broadly categorized as either solvers or utilities. Cases examined here were simulated using the olaFlow solvers (<xref ref-type="bibr" rid="B9">Higuera, 2018</xref>), an open-source project developed within the OpenFOAM framework which solves the three-dimensional Volume Averaged Reynolds Averaged Navier Stokes equations (VARANS) using the finite volume discretization, allowing for the simulation of physically correct two-phase incompressible fluids. Additionally, olaFlow provides wave generation and active absorption functionality, which is useful for coastal engineering applications including tsunami-like wave generation. In cases when pure fluid phases are modeled where porosity is neglected, the VARANS equations utilized within olaFlow are reduced to the classical RANS equations utilized in the standard OpenFOAM application interFoam, from which the solvers for olaFlow were derived. Since porosity effects were not included in this study, similar CFD modelling procedures to those conducted by <xref ref-type="bibr" rid="B18">Motley et al. (2016)</xref> were performed for the following analytical correlation studies. OpenFOAM patch boundary conditions utilized in this study are listed in <xref ref-type="table" rid="T2">Table 2</xref>.</p>
<table-wrap id="T2" position="float">
<label>TABLE 2</label>
<caption>
<p>Model boundary conditions for all field variables.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Field</th>
<th align="center">Atmosphere</th>
<th align="center">Walls</th>
<th align="center">Flap</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">U</td>
<td align="center">pressureInletOutletVelocity</td>
<td align="center">noSlip</td>
<td align="center">movingWallVelocity</td>
</tr>
<tr>
<td align="center">p<sub>
<italic>rgh</italic>
</sub>
</td>
<td align="center">totalPressure</td>
<td align="center">fixedFluxPressure</td>
<td align="center">zeroGradient</td>
</tr>
<tr>
<td align="center">pointDisplacement</td>
<td align="center">fixedNormalSlip/fixedValue</td>
<td align="center">fixedNormalSlip/fixedValue</td>
<td align="center">fixedValue</td>
</tr>
<tr>
<td align="center">
<italic>&#x3bd;</italic>
<sub>
<italic>t</italic>
</sub>
</td>
<td align="center">calculated</td>
<td align="center">nutkWallFunction</td>
<td align="center">nutkWallFunction</td>
</tr>
<tr>
<td align="center">k</td>
<td align="center">inletOutlet</td>
<td align="center">kqRWallFunction</td>
<td align="center">kqRWallFunction</td>
</tr>
<tr>
<td align="center">
<italic>&#x3c9;</italic>
</td>
<td align="center">inletOutlet</td>
<td align="center">omegaWallFunction</td>
<td align="center">omegaWallFunction</td>
</tr>
<tr>
<td align="center">
<italic>&#x3f5;</italic>
</td>
<td align="center">inletOutlet</td>
<td align="center">epsilonWallFuction</td>
<td align="center">epsilonWallFuction</td>
</tr>
<tr>
<td align="center">
<italic>&#x3b1;</italic>
</td>
<td align="center">inletOutlet</td>
<td align="center">zeroGradient</td>
<td align="center">zeroGradient</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s1-2-2">
<title>1.2.2 Modelling of multi-phase air-water mixture</title>
<p>The two incompressible phases (water and air) are tracked using the Volume of Fluid (VOF) technique to represent complex free surface configurations <xref ref-type="bibr" rid="B10">Hirt and Nichols (1981)</xref>. An indicator function <italic>&#x3b1;</italic> is defined for the volume fraction of the two-phase fluid, which has a value of 1.0 corresponding to regions occupied by one phase, in this case water (<italic>&#x3c1;</italic> &#x3d; 1, 000&#xa0;<italic>kg</italic>/<italic>m</italic>
<sup>3</sup>, <italic>&#x3bd;</italic> &#x3d; 1.0 &#xd7; 10<sup>&#x2212;6</sup>
<italic>&#xa0;m</italic>/<italic>s</italic>
<sup>2</sup>), and a value of 0.0 for the other, in this case air (<italic>&#x3c1;</italic> &#x3d; 1.22 <italic>kg</italic>/<italic>m</italic>
<sup>3</sup>, <italic>&#x3bd;</italic> &#x3d; 1.48 &#xd7; 10<sup>&#x2212;5</sup>
<italic>&#xa0;m</italic>/<italic>s</italic>
<sup>2</sup>), where <italic>&#x3c1;</italic> &#x3d; mass density of the fluid; and <italic>&#x3bd;</italic> &#x3d; kinematic viscosity. Intermediate values indicate cells contain a mixture of water and air, where the free-surface between the fluids is not resolved explicitly. Where free-surface tracking was necessary in this study, a volume fraction of 0.5 was used to identify an approximate free-surface. The cell&#x2019;s fluid phase fraction is represented by a scalar field with the variable, <italic>&#x3b1;</italic>. Furthermore, the VOF method assumes the fluid phases are immiscible, where each phase remains largely separate from one another, which is reflected by the fact that a single set of continuity and momentum governing equations are solved for both fluids, as opposed to Eulerian Multiphase (EMP) methods, which fully resolve phase interactions by incorporating interaction models and solving separate sets of continuity and momentum equations for each fluid phase.</p>
</sec>
<sec id="s1-2-3">
<title>1.2.3 Mesh motion in openFOAM</title>
<p>Motion of FSI interfaces for the present study is handled within OpenFOAM by the displacementLaplacianFvMotionSolver Class, which calculates the near field cell displacements required to satisfy a Laplacian diffusivity scheme specified by the user. This allows for smooth motion and deformation of the entire mesh during movement of boundary patches. Many other options for solution of cell deformation exist within OpenFOAM; however, the current coupling methodology only utilizes displacementLaplacian based mesh motion. As such, a discussion of alternative mesh motion techniques within OpenFOAM are omitted here for brevity. The displacementLaplacian finite volume motion solver only requires the displacement field at the boundary patch be specified either in memory or within the case files. This is handled dynamically in memory by the proposed coupling method, allowing real-time updates of the patch deformation during coupled fluid-structural analysis. Explanation of the displacement Laplacian methodology for finite volume method mesh motion is available in the original paper by <xref ref-type="bibr" rid="B13">Jasak and Tukovic (2006)</xref>. For more detailed information on dynamic mesh capabilities within OpenFOAM, see <xref ref-type="bibr" rid="B12">Jasak (2009)</xref>.</p>
</sec>
<sec id="s1-2-4">
<title>1.2.4 Computational solid mechanics&#x2014;openSeesPy</title>
<p>OpenSeesPy (<xref ref-type="bibr" rid="B27">Zhu et al., 2018</xref>) is a Python language interpreter for the OpenSees (<xref ref-type="bibr" rid="B17">McKenna et al., 2010</xref>) finite element analysis framework. OpenSees is structured in a modular manner. Various industry standard non-linear solution algorithms are available, along with validated non-linear constitutive models and element formulations. Originally developed for the Pacific Earthquake Engineering Research (PEER) Center, OpenSees allows for the implementation of staged analyses of various types. Initial gravity and seismic analysis are conducted after creation of the finite element model within standard Python routines for OpenSeesPy. Due to the flexibility of OpenSees, sequential analysis of earthquake loading and tsunami loading to structures may be implemented readily. For implementation of a fluid-structure interaction analysis, particle finite element methods (PFEM) have been developed for OpenSees; however, PFEM in OpenSees is designed to solve fluid flow problems without considering turbulence modeling. Fluid-structure interaction within the present study is handled within OpenSees with an additional solution loop after initial analysis is complete, obtaining fluid forces from an OpenFOAM simulation running in parallel to the OpenSees simulation. This loop functions as a listener from the coupling driver, controlling the communication of nodal forces and displacements to and from the coupling interface software. Python module commands not included within the OpenSeesPy library are utilized for this loop, and are listed and explained in detail in Section &#x201c;Usage of preCICE Python Language Bindings.&#x201d;</p>
</sec>
<sec id="s1-2-5">
<title>1.2.5 Coupling methodology&#x2014;preCICE</title>
<p>preCICE (<xref ref-type="bibr" rid="B2">Bungartz et al., 2016</xref>) is a library developed for the purpose of coupling multiphysics simulations in a partitioned method, utilizing iteration to ensure interface acceleration convergence between coupled surfaces and maintain stability. The approach allows for recovery of the coupling solution as if the problem were to be solved wihtin a single program through use of a partitioned &#x201c;black box&#x201d; approach and running coupled applications in parallel. The library functions by transferring data arrays between coupling partners for serial or parallel computation of fully-coupled solutions between codes. Convergence measures, data transfer, timestep iteration, and surface-to-surface mapping between coupling partners are managed by the preCICE library. These surface-to-surface mappings are most generally handled with radial basis function (RBF) mesh interpolation from the source mesh to a destination mesh.</p>
</sec>
<sec id="s1-2-6">
<title>1.2.6 preCICE adapters</title>
<p>preCICE is structured in a modular manner, with applications interfacing with the preCICE library <italic>via</italic> API function calls, which allow access to the routines of the library. Applications may be &#x201c;plugged-in&#x201d; to the preCICE library coupling routines by means of a coupling &#x201c;adapter.&#x201d; These adapters interface with the coupled program, taking data from the program and passing it to the preCICE library routines to be utilized in a manner specified by the user through configuration files. preCICE offers many adapters for open-source finite element and finite volume codes; however, many of these codes have not been validated for civil/structural engineering applications, and are not optimized to allow for a structural engineer to pick up and readily utilize them for engineering design purposes.</p>
<p>The preCICE API function calls are available in many languages <italic>via</italic> bindings. These bindings allow for usage of the preCICE library within code written in the language shared by the bindings, and offer flexibility for users to implement their own scripts and code for dynamically or temporally assigning boundary conditions within a desired numerical simulation.</p>
</sec>
<sec id="s1-2-7">
<title>1.2.7 Usage of preCICE python language bindings</title>
<p>Calls to the preCICE API are managed through a <italic>precice.Interface()</italic> object. This object has various classes that control data communication and solver progression. The classes of precice.Interface utilized in FOAMySees include:<boxed-text id="dBox1">
<p>precice.Interface<list list-type="simple">
<list-item>
<p>&#x7c;&#x2212;&#x3e;.get_dimensions ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.initialize ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.initialize_data ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.is_read_data_available ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.is_coupling_ongoing ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.read_block_vector_data ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.write_block_vector_data ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.finalize ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.is_action_required ()</p>
</list-item>
<list-item>
<p>&#x7c;&#x2212;&#x3e;.mark_action_fulfilled ()</p>
</list-item>
</list>
</p>
<p>The latter two call upon the following preCICE action objects to return Boolean values:</p>
<p>action_write_initial_data ()</p>
<p>action_write_iteration_checkpoint ()</p>
<p>action_read_iteration_checkpoint ()</p>
</boxed-text>
</p>
<p>A simplified version of initialization routines for FOAMySees along with their associated preCICE python language binding commands are shown in <xref ref-type="fig" rid="F1">Figure 1A</xref>. The <italic>precice.Interface</italic> class and sub-classes are utilized within the main solution loop of FOAMySees to control the progression of the solution and manage iteration of OpenSeesPy until preCICE determines the coupling residual tolerance has been met. A simplified version of the main solution loop is shown schematically in <xref ref-type="fig" rid="F1">Figure 1B</xref>. Calls to preCICE API functions are highlighted in orange, whereas the functions themselves are shown in blue.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>
<bold>(A)</bold> preCICE commands utilized within FOAMySees initialization, <bold>(B)</bold> Diagram of preCICE subroutine calls within FOAMySees. This diagram is solely intended for informing about preCICE API function calls and where these calls are necessary, and is not indicative of the full coupling procedures for FOAMySees. For specific location of preCICE API function calls within FOAMySees, refer to the FOAMySees source code.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g001.tif"/>
</fig>
</sec>
</sec>
<sec id="s1-3">
<title>1.3 A new framework for open-source fluid-structure interaction&#x2014;FOAMySees</title>
<p>The proposed program, &#x201c;FOAMySees&#x201d;, a portmanteau of &#x201c;OpenFOAM&#x2019; and &#x201c;OpenSees,&#x201d; may be qualified as a coupling adapter for OpenSeesPy finite element models, structured within Python using preCICE&#x2019;s Python language API bindings. While it is specialized to work with OpenFOAM, other CFD and FEM solvers could be coupled with OpenSeesPy <italic>via</italic> FOAMySees. In addition to this, the possibility exists within preCICE to couple multiple model models of similar types together. This would allow multiple OpenSeesPy models to be coupled to a single OpenFOAM model, allowing for simultaneous FSI of ensembles of structures. It would also allow users to couple another solver to the OpenFOAM/OpenSeesPy coupling, such as a shallow water solver to apply CFD inlet boundary conditions.</p>
<sec id="s1-3-1">
<title>1.3.1 Theoretical background</title>
<p>The solution of complex turbulent fluid dynamics problems such as a tsunami inundation must be completed in three dimensions, due to the three-dimensional nature of turbulence. Since many structural finite element models utilize one-dimensional center-line and spring elements to represent three-dimensional structural components, additional steps must be taken to convert data such as rotations of structural nodes to displacements that accurately represent the rotation of the three-dimensional structural element modelled by elements along its center-line or mid-plane.</p>
<p>To account for this, volume must be generated in the coupled modelling space by extruding cross sectional shapes along the center-line elements. In FOAMySees, the cross sectional shape of the center-line elements is constructed by defining &#x201c;data communication branch nodes&#x201d; which exist solely outside the fluid solution and structural solution. &#x201c;Data communication branch nodes&#x201d; refer to the additional non-structural nodes which are utilized by FOAMySees and inaccessible to both solid and fluid solutions. These data communication branch nodes are radially centered relative to the FEM nodes and rotate rigidly about them.</p>
<p>Displacements of the finite element model are interpolated to these data communication branch nodes by the FEM node/branch node relationship described in Eq. <xref ref-type="disp-formula" rid="e1">1</xref> for each FEM-branch node group. The branch displacements from the FEM model at the completion of the current coupling timestep (<italic>t</italic>
<sup>
<italic>n</italic>
</sup>), are utilized for progression of the finite volume domain displacement and evolution of the fluid model during the next coupling timestep (<italic>t</italic>
<sup>
<italic>n</italic>&#x2b;1</sup>). In Eq. <xref ref-type="disp-formula" rid="e1">1</xref>, <italic>BranchRotation</italic> refers to rigid-body rotation of branch nodes about FEM nodes using rotation matrices.<disp-formula id="e1">
<mml:math id="m1">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>b</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:mi>B</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>R</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3d5;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c8;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mfenced open="[" close="]">
<mml:mrow>
<mml:mi>d</mml:mi>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>z</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>The mesh created by the collection of data communication branch nodes for all FEM nodes, the data communication mesh, is coupled by preCICE to the fluid mesh patch surfaces which represent the structure within the CFD model. Forces from the fluid model are conservatively applied to these branch nodes using radial basis function mapping from the CFD mesh patch nodes to the branch nodes. For all FEM nodes, the force vectors of the branch nodes associated with a given FEM node are summed to construct the force vector <inline-formula id="inf1">
<mml:math id="m2">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> at each timestep. More specifically, for a standard FOAMySees model FEM node with <bold>N</bold> branches, the force relationship between an FEM node and its branch nodes at any particular time is described in Eq. <xref ref-type="disp-formula" rid="e2">2</xref>. Summarily, each FEM nodes&#x2019; forces are a combination of the forces applied to all of its branches.<disp-formula id="e2">
<mml:math id="m3">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:munderover accentunder="false" accent="true">
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>N</mml:mi>
</mml:mrow>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>b</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(2)</label>
</disp-formula>
</p>
<p>Equilibrium at the <italic>i</italic>
<sup>
<italic>th</italic>
</sup> node of a finite element model is defined as the balance of structural resistance and kinetic motion forces with external applied forces. For equilibrium at an interface between a structural dynamics model and an external dynamic force field to be satisfied, input and output work for a period of time must be equal or within satisfaction of a tolerance for residual in force between two sources. This means externally applied work for each node <italic>i</italic> must be roughly balanced by the product of the displacement of the structure with the resistance of the motion of the structure, as given in Eq. <xref ref-type="disp-formula" rid="e3">3</xref>. For a single node within the structural dynamics model, acceleration in six degrees of freedom, <inline-formula id="inf2">
<mml:math id="m4">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, is integrated in time for the duration of a single timestep and converted to kinetic motion in the form of velocities, <inline-formula id="inf3">
<mml:math id="m5">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, and displacements, resulting in shape changes to the undeformed structural configuration, <inline-formula id="inf4">
<mml:math id="m6">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. The forces associated with each of these components of motion - inertial, damping, and internal structural forces - are calculated by finding the product of these components of motion with their respective coefficients within the characteristic equation of motion, mass (<italic>m</italic>
<sub>
<italic>i</italic>
</sub>), damping (<italic>c</italic>
<sub>
<italic>i</italic>
</sub>), and tangent stiffness (<italic>k</italic>
<sub>
<italic>i</italic>
</sub>), respectively. The effective resisting force of a given node is determined by summing these three contributions to internal force together as specified in Eq. <xref ref-type="disp-formula" rid="e3">3</xref>.<disp-formula id="e3">
<mml:math id="m7">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>I</mml:mi>
<mml:mi>N</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mo>&#x3d;</mml:mo>
</mml:mrow>
<mml:mo>&#x303;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x308;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>c</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo>&#x307;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(3)</label>
</disp-formula>
</p>
<p>Unbalanced forces as defined by Eq. <xref ref-type="disp-formula" rid="e4">4</xref> are calculated by subtracting the internal dynamic resistance force components of the structural motion and deformed configuration at the current time from the applied forces, denoted as <inline-formula id="inf5">
<mml:math id="m8">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula> in Eq. <xref ref-type="disp-formula" rid="e2">2</xref>.<disp-formula id="e4">
<mml:math id="m9">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>b</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>I</mml:mi>
<mml:mi>N</mml:mi>
<mml:mi>T</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
<p>These unbalanced forces are used at the end of the fluid model&#x2019;s progression to the next coupling checkpoint at <italic>t</italic>
<sup>
<italic>n</italic>&#x2b;1</sup> to unbalanced forces between the beginning (<italic>t</italic>
<sup>
<italic>n</italic>
</sup>) and end (<italic>t</italic>
<sup>
<italic>n</italic>&#x2b;1</sup>) of the current coupling timestep. This relationship is summarized in Eq. <xref ref-type="disp-formula" rid="e5">5</xref>. The unbalanced forces, <inline-formula id="inf6">
<mml:math id="m10">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>A</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</inline-formula>, between the current iteration of the progressed fluid model state (at t &#x3d; <italic>t</italic>
<sup>
<italic>n</italic>&#x2b;1</sup>) and the current iteration of the un-progressed structural model state (at t &#x3d; <italic>t</italic>
<sup>
<italic>n</italic>
</sup>) are applied to the structural dynamics model to be resolved into kinetic motion, damping resistance, and elastic and inelastic structural resistance over the FEM model&#x2019;s progression from the beginning (<italic>t</italic>
<sup>
<italic>n</italic>
</sup>) to the end (<italic>t</italic>
<sup>
<italic>n</italic>&#x2b;1</sup>) of the current coupling timestep.<disp-formula id="e5">
<mml:math id="m11">
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>A</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>P</mml:mi>
<mml:mi>L</mml:mi>
<mml:mi>I</mml:mi>
<mml:mi>E</mml:mi>
<mml:mi>D</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:mi>F</mml:mi>
</mml:mrow>
<mml:mo stretchy="false">&#x302;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>b</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>Depending on the coupling scheme, the solution process for each solver is completed serially or in parallel, and implicit or explicit; as such, these processes may occur in a different order than listed here, or may occur several times prior to progressing to the next timestep.</p>
</sec>
<sec id="s1-3-2">
<title>1.3.2 FOAMySees solution procedure</title>
<p>Prior to entering the solution procedure loop, FOAMySees initializes the OpenSeesPy model and FEM/branch node interpolator and sends FOAMySees data communication mesh (es) and initial values to preCICE for coupling to OpenFOAM. The following operations are then performed each timestep in sequence by FOAMySees components preCICE, OpenFOAM, and OpenSeesPy.<list list-type="simple">
<list-item>
<p>1. OpenFOAM: Reads data communication mesh displacements and integrates fluid dynamics model over time with mesh motion</p>
</list-item>
<list-item>
<p>2. preCICE: Calculates branch nodal forces at end of coupling timestep, and reads displacements and forces from both OpenFOAM and OpenSeesPy at end of OpenFOAM timestep to ensure residual convergence for implicit coupling schemes.</p>
</list-item>
<list-item>
<p>3. FOAMySees: Reads forces from preCICE, sums branch node forces from CFD analysis to FE model node locations, and calculates net nodal forces for OpenSeesPy timestep by subtracting nodal unbalanced forces and applies net nodal forces to OpenSeesPy nodes</p>
</list-item>
<list-item>
<p>4. OpenSeesPy: Integrates structural dynamics model over time and returns nodal displacements and unbalanced forces to FOAMySees</p>
</list-item>
<list-item>
<p>5. FOAMySees: Projects displacements from each FEM node to its associated branch nodes <italic>via</italic> rotation matrices</p>
</list-item>
<list-item>
<p>6. preCICE: Passes FOAMySees calculated data communication mesh displacement array to OpenFOAM for application of displacement boundary conditions during the next coupling timestep</p>
</list-item>
</list>
</p>
<p>A full description of the participants in the coupling process is shown in <xref ref-type="fig" rid="F2">Figure 2</xref>. Software participants are listed along the left hand side of the figure. The order of operations for both FOAMySees initialization and timestepping is diagrammatically shown as an initialization phase, two interior loops, one solution loop for fluid solution internal residuals and one for those of the structural solution internal residuals, and one exterior loop per timestep, ensuring satisfaction of tolerances for residuals of coupling variables between participants.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>Coupling procedure for FOAMySees (abridged).</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g002.tif"/>
</fig>
</sec>
<sec id="s1-3-3">
<title>1.3.3 Surface-to-structure coupling using preCICE and FOAMySees</title>
<p>After initialization of the structural model along with optional branch nodes, the data communication mesh is passed to preCICE by FOAMySees. preCICE then calculates the interpolation mapping for passing of force and displacement data between OpenFOAM surface patch nodes and data communication mesh nodes. preCICE calculates forces to be passed to OpenSeesPy by integrating surface pressures over the regions of patch surface mapped to each branch node during each timestep as shown in <xref ref-type="fig" rid="F3">Figures 3A, B</xref>. The process of calculating this mapping is routinely done by the use of RBF mapping, as depicted in <xref ref-type="fig" rid="F4">Figures 4A, B</xref>, which is handled by configuring settings within the <bold>precice-config.xml</bold> file. Any OpenSees structural element formulation may be used within the FOAMySees framework; however, automeshing routines use non-linear displacement-based elements for beams and shells by default, and linear 8 node brick elements for solid meshes. An example of how each type of element connects to neighboring fluid surfaces is shown in <xref ref-type="fig" rid="F5">Figures 5A&#x2013;C</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>
<bold>(A)</bold> OpenFOAM FSI Patch. <bold>(B)</bold> preCICE converts surface pressures along the FSI patch into nodal forces which may then be mapped to branch nodes.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g003.tif"/>
</fig>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>
<bold>(A)</bold> Radial Basis Function (RBF) mapping is calculated between branch node positions and CFD patch surface nodes: Isometric View of RBF Mapping from OpenFOAM surfaces to branch nodes to FEM nodes, <bold>(B)</bold> Elevation View of RBF Mapping from OpenFOAM surfaces to branch nodes to FEM nodes.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g004.tif"/>
</fig>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>
<bold>(A)</bold> Element Formulation Configuration W.R.T. Branch Nodes and FEM Nodes: FOAMySees utilizes branches as desired by the user&#x2014;it is necessary for beam elements, recommended for shell elements, and unnecessary and improper for solid elements, as solid element meshes should be body-fitted: Solid elements, <bold>(B)</bold> Beam elements, <bold>(C)</bold> Shell elements.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g005.tif"/>
</fig>
</sec>
<sec id="s1-3-4">
<title>1.3.4 Structural modeling and branch interpolation</title>
<p>During each timestep, after forces are mapped by preCICE <italic>via</italic> RBF to the FOAMySees branch nodes associated with each FEM structural node, branch node forces are summed and applied to the FEM nodes for evolution of the structural model during the next timestep or coupling iteration. The displacements of the FEM nodes are calculated using a user-specified numerical integration scheme at a maximum specified timestep, for a given number of sub-cycles. The branch node displacements are passed to preCICE at the end of the converged timestep. The displacements from FEM nodes are applied to the branch nodes associated with each FEM node <italic>via</italic> translation such that each of the <italic>n</italic> branch nodes per FEM node moves rigidly with the FEM node. The process of rigid-body rotation of branches about their FEM nodes is shown schematically in <xref ref-type="fig" rid="F6">Figure 6</xref>. The branch nodes are then rotated rigidly about the FEM nodes <italic>via</italic> rotation matrix transformation, according to each nodes&#x2019; calculated local slope. Using the locations of these branch nodes at the previous timestep with respect to the deformed position of the nodes along the surface patch within the OpenFOAM model, preCICE interpolates the displacements from the branch nodes to the CFD patch surface nodes using the RBF mapping used previously. This process is shown schematically in <xref ref-type="fig" rid="F7">Figure 7</xref>.</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Illustration of rotation of branch nodes completed by FOAMySees.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g006.tif"/>
</fig>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Conceptual evolution of branch node interpolation to FEM nodes and back. (1) Calculation of pressures (OpenFOAM). (2) Interpolation of surface pressures to branch nodal forces (preCICE). (3) 1D interpolation of branch forces for FEM nodes (FOAMySees). (4) Evolution of the structural model over one timestep (OpenSeesPy). (5) Interpolation of FEM nodal displacements and rotations to branch nodes (FOAMySees). (6) Interpolation of branch node displacements to CFD surface patch nodes (preCICE).</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g007.tif"/>
</fig>
</sec>
<sec id="s1-3-5">
<title>1.3.5 Time integration and time stepping</title>
<p>Time integration of the fluid model is completed with an Euler scheme. Stability of the fluid model requires a timestep small enough for satisfaction of Courant-Frederichs-Lewy cell fluid velocity criteria. The Newmark method with coefficients of <italic>&#x3b3;</italic> and <italic>&#x3b2;</italic> valued 0.5 and 0.25 respectively was utilized for time integration of the structural model. As such, the maximum timestep increment for the structural dynamics simulation is contingent on structural material wave propagation timestep requirements and minimum element eigenvalue. A timestep sufficiently small enough to meet all stability criteria for the numerical integration routines of both structural and fluid solvers is chosen as the timestep for both the exchange of coupling data and individual solver time progression.</p>
</sec>
<sec id="s1-3-6">
<title>1.3.6 Coupling scheme</title>
<p>An explicit time progression scheme for coupling data is used in the following validation cases. Sub-cycling for CFD and FEM solvers is possible; alternatively, iterative techniques for interface manifold acceleration convergence such as Aitken Under-Relaxation and Iterative-Quasi-Newton Inverse-Least-Squares (IQN-ILS, <xref ref-type="bibr" rid="B4">Degroote and Vierendeels, 2011</xref>) may be implemented. These techniques are used to reduce analysis duration by increasing timestep sizes and improve stability of the coupling and are recommended over solver sub-cycling. In general, very small timesteps are recommended for first-order time integration schemes, as numerical damping may be large for explicitly coupled simulations with large timesteps.</p>
</sec>
<sec id="s1-3-7">
<title>1.3.7 Computational cost</title>
<p>The relative times for each computational component will vary depending on the mesh size of each participant and the boundary/initial conditions of each model. For a small scale structure modelled in FOAMySees with realistic materials (concrete, steel) and small displacements, comprised of 300 elastic shell elements and 304 non-linear frame elements with a fiber based section, resulting in 659 FEM nodes with 9,960 branch nodes coupled to 35,960 CFD patch surface nodes within an OpenFOAM model with 4,061,836 points and 3,917,848 cells, the mapping and structural analysis routines comprise about 16 percent of total computational time. For an OpenFOAM model with 4,061,836 points and 3,917,848 cells, 1&#xa0;s of simulation time on 1 UW HYAK Klone HPC Node with 40 processors takes 1.57&#xa0;h of computational time. For an equivalent FOAMySees model utilizing the CFD model previously mentioned on the same computational resources, the same simulation with FSI boundary conditions from a finite element model with 659 FEM nodes, 305 of which were coupled to the CFD patch surface utilizing between 8 and 48 branch nodes for each FEM node with a total of 9,960 branch nodes, takes only 20 percent longer than the equivalent CFD model with a computational time of 1.87&#xa0;h.</p>
</sec>
</sec>
<sec id="s1-4">
<title>1.4 FOAMySees program structure</title>
<sec id="s1-4-1">
<title>1.4.1 FOAMySees object structure</title>
<p>The FOAMySees API is a collection of files which together form the object <bold>OpenSeesPyInstance</bold> and the main coupling solution loop for fluid-structure. The coupled solution is initialized by calling the Python routine within Solid1Solver.py, which creates an OpenSeesPyInstance object. This object contains the OpenSeesPy model and metadata about the model, as well as arrays through which data is transferred to and from OpenSeesPy at each timestep. In addition to this, there are sub-routines which write and read checkpoints (OpenSeesPyInstance.stepForward), iterate for a solution (OpenSeesPyInstance.iterate), and rotate branch nodes about their associated FEM nodes for branch mesh updates (OpenSeesPyInstance.RotateTreeBranch).</p>
<p>FOAMySees is structured in such a way that the definition of component OpenFOAM and OpenSeesPy models for coupled FSI analysis does not vary greatly from the definition of individual structural models with OpenSeesPy or individual fluid models within OpenFOAM. Users may define their OpenSeesPy model as usual within the file Solid/buildOpenSeesModelInThisFile.py. This model is coupled with the fluid model contained with the Fluid/subfolder. Model settings such as time-stepping settings and interface coupling options are controlled <italic>via</italic> files contained within the Solid/subfolder, particularly Solid/timeSettings.py and Solid/geometrySettings.py. Preliminary analysis such as gravity loading with dynamic relaxation or seismic non-linear time history analysis may be defined as usual within the file FOAMySees/prelimAnalysis.py. This sub-routine is called before the fluid-structure interaction analysis loop, and the final state of the OpenSeesPy model at the end of the preliminary analysis is utilized as the initial state within the FSI model, including damage represented by material model variable time-histories, initial stresses and deflections.</p>
</sec>
<sec id="s1-4-2">
<title>1.4.2 Coupled analysis file structure</title>
<p>FOAMySees maintains a standard OpenFOAM file structure for a CFD model with dynamic mesh capabilities. A few additional files besides the those required for a standard multiphase OpenFOAM simulation necessary for initializing connections to coupling routines in preCICE are also included. These files include <bold>preciceDict</bold>, which is stored within the OpenFOAM case subfolder <bold>Fluid/system/</bold>, and <bold>precice-config.xml</bold>. The preCICE coupling adapter for OpenFOAM, which reads and writes forces and displacements, is called <italic>via</italic> the function object <bold>preciceAdapterFunctionObject</bold> which is defined in the file <bold>Fluid/system/controlDict</bold>. This function object is available for use within OpenFOAM only after installing preCICE and the associated OpenFOAM adapter (available at <ext-link ext-link-type="uri" xlink:href="https://github.com/precice/openfoam-adapter">https://github.com/precice/openfoam-adapter</ext-link>. Note: for incompressible multi-phase OpenFOAM solvers, a modified adapter found at <ext-link ext-link-type="uri" xlink:href="https://github.com/moaxm/openfoam-adapter">https://github.com/moaxm/openfoam-adapter</ext-link> is recommended for proper calculation of interface forces, and was utilized in this study). Coupling settings are managed and defined in the file <bold>precice-config.xml</bold>, which includes the coupling timestep data and partners, residual convergence tolerances, coupling acceleration techniques (Aitken, Broyden, IQN-ILS, IQN-IMVJ), and data exchange mechanisms for coupling (sockets vs. mpi).</p>
<p>Initialization of coupling partners is completed by running a program batch script in bash on the Linux operating system. This script performs all necessary OpenFOAM pre-processing steps, decomposes the case amongst desired computational processors and nodes, and initializes the parallelized OpenFOAM case for coupling with the OpenSeesPy model. It then performs all pre-processing for the OpenSeesPy model, and initializes the OpenSeesPy model and FOAMySees interface for coupling with the existing OpenFOAM model. At this point, a preliminary OpenSeesPy analysis may be performed including any combination of gravity loading, preloading of structure with dead loads, and earthquake loading prior to initialization of the fluid-structure interaction simulation. The coupling between OpenSeesPy and OpenFOAM is controlled <italic>via</italic> the FOAMySees python class instance initialized at the beginning of the coupled analysis. This object also controls OpenSees configuration, model progression in time, and communication of displacement and force vectors.</p>
</sec>
</sec>
<sec id="s1-5">
<title>1.5 Test cases</title>
<sec id="s1-5-1">
<title>1.5.1 Hydrostatic Force FSI case</title>
<p>A quasi-static FSI case was developed using a beam with fixed-fixed end conditions. The domain was 10&#xa0;m in length, 1&#xa0;m in height, and 0.1&#xa0;m in thickness. Water was initialized at a depth of 0.5&#xa0;m, and the modulus of elasticity of the elastic beam was varied to verify expected forces are applied from OpenFOAM to the structural nodes within OpenSeesPy, and that correct displacements are returned from OpenSeesPy to OpenFOAM. The modulus of elasticity of the beam was deemed the least consequential variable to change with respect to other variables. Varying modulus of elasticity between cases allows for a consistent domain size, VOF phase-fraction, beam mass, beam element size, cell size, and beam cross section dimensions while providing a linear change in displacement with respect to the elastic modulus. A diagram of the case showing reduction of the fluid loading to a distributed load is shown in <xref ref-type="fig" rid="F8">Figure 8A</xref>.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>
<bold>(A)</bold> Beam with properties E, I, L, A, <italic>&#x3c1;</italic>
<sub>
<italic>B</italic>
</sub>, within a domain t m wide, topped with water h m deep, under uniform gravity loading g, <bold>(B)</bold> Change of loading contribution with displacement of beams under shifting water.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g008.tif"/>
</fig>
<p>The expected center span displacement for a fixed-fixed Euler-Bernoulli beam under a uniform distributed load is <italic>WL</italic>
<sup>4</sup>/384<italic>EI</italic>. With an equivalent distributed load of 490.5&#xa0;<italic>N</italic>/<italic>m</italic> (0.5 <italic>m</italic> &#xd7; 0.1 <italic>m</italic> &#xd7; 9.81 <italic>m</italic>/<italic>s</italic>
<sup>2</sup> &#xd7; 1000&#xa0;<italic>kg</italic>/<italic>m</italic>
<sup>3</sup>), a length of 10&#xa0;m, a moment of inertia of 100&#xa0;m<sup>4</sup>, and with elastic modulus of 5E&#x2b;09&#xa0;Pa, the center span displacement is 2.55469E-08&#xa0;m. Center span displacements for beams with softer moduluses of elasticity are shown in <xref ref-type="table" rid="T3">Table 3</xref>, along with the calculated center span displacement for the beam from an FSI model with identical properties.</p>
<table-wrap id="T3" position="float">
<label>TABLE 3</label>
<caption>
<p>Fixed Beam: Predicted [W<italic>L</italic>
<sup>4</sup>/384EI] vs. Simulated Displacements, W &#x3d; 490.5 [N/m], L &#x3d; 10 [m], I &#x3d; 100 [m<sup>4</sup>].</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">E [Pa]</th>
<th align="center">Theoretical &#x394;</th>
<th align="center">Simulated &#x394;</th>
<th align="center">Theoretical/Simulated</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="center">1.00E &#x2b; 09</td>
<td align="center">&#x2212;1.27E-07</td>
<td align="center">&#x2212;1.28E-07</td>
<td align="center">0.992</td>
</tr>
<tr>
<td align="center">5.00E &#x2b; 08</td>
<td align="center">&#x2212;2.55E-07</td>
<td align="center">&#x2212;2.56E-07</td>
<td align="center">0.996</td>
</tr>
<tr>
<td align="center">2.50E &#x2b; 08</td>
<td align="center">&#x2212;5.10E-07</td>
<td align="center">&#x2212;5.11E-07</td>
<td align="center">0.998</td>
</tr>
<tr>
<td align="center">1.25E &#x2b; 08</td>
<td align="center">&#x2212;1.02E-06</td>
<td align="center">&#x2212;1.02E-06</td>
<td align="center">1.000</td>
</tr>
<tr>
<td align="center">6.25E &#x2b; 07</td>
<td align="center">&#x2212;2.04E-06</td>
<td align="center">&#x2212;2.04E-06</td>
<td align="center">1.000</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec id="s1-5-2">
<title>1.5.2 Fixed-end frame under shifting hydrodynamic gravity loading</title>
<p>The same domain geometry as described in the Hydrostatic Force FSI Test Case section was utilized to examine the effect of large displacements upon the shifting of water sitting atop fixed-end frames. Frames for this test case possessed a moment of inertia of 8.33E-3 <italic>m</italic>
<sup>4</sup>, a length of 10&#xa0;m, a cross sectional area of 0.1 <italic>m</italic>
<sup>2</sup>, and elastic modulus ranging from 1E &#x2b; 08&#xa0;Pa to 1E &#x2b; 06&#xa0;Pa. These properties were chosen to amplify the effects of fluid pooling upon the deflection imparted against frame elements. As the deflection increases, the loading distribution becomes more concentrated near the beam mid-span, as fluid redistributes itself naturally to find a free surface that results in equilibrium between the internal structural forces and external fluid pressure. An illustration of this behavior is shown in <xref ref-type="fig" rid="F8">Figure 8B</xref>. Since the geometry, sections, materials, and loading chosen in this example result in large displacements, multiple phenomena contribute to the behavior of the frame elements, including frame rotational stiffening effects due to tension. OpenSees-only simulations were run with uniform distributed loads due to the fluid pressure in its initial configuration to assess the affects of axial load (i.e., tension stiffening) in this example case. The effect of axial force upon rotational stiffening is evident in <xref ref-type="fig" rid="F9">Figure 9A</xref>&#x2014;all calculated deflection curves, most notably the curve with &#x201c;static&#x201d; loading, tend to decrease in magnitude beyond a deflection to length ratio of 1:100 for this given case. For sections with different ratios of moment of inertia to area, this behavioral inflection point due to frame stiffening effects will also differ.</p>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold> FOAMySees solution: Center span displacement of beams under shifting water loading, <bold>(B)</bold> normalized by uniform Load deflection: FOAMySees solution for center span displacement of beams under shifting water loading.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g009.tif"/>
</fig>
<p>As the deflection to length ratio increases, so does the effect of the pooling of the water at the center of the frame upon the expected maximum deflection. A prediction loading function for determining quasi-static loading of beams under pooling water at various deflections was developed, as calculated by Eq. <xref ref-type="disp-formula" rid="e6">6</xref>. These loads were applied dynamically to frame elements in OpenSeesPy identical to those which were used in the FSI simulations, in efforts to provide an independent benchmark against which FOAMySees calculated loads and results could be compared. The prediction loading function estimates the fluid elevation required above a particular deformed frame shape to achieve quasi-static equilibrium between the beam in its deformed shape and the &#x201c;pooled&#x201d; water sitting atop the beam. This calculation is completed after every timestep within a dynamic analysis to account for the current deformed shape.<disp-formula id="e6">
<mml:math id="m12">
<mml:mi>F</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#xd7;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mo>&#x222b;</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mi>&#x3b4;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mspace width="0.17em"/>
<mml:mi mathvariant="normal">d</mml:mi>
<mml:mi>x</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mrow>
<mml:mi>L</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mfenced>
</mml:math>
<label>(6)</label>
</disp-formula>where<disp-formula id="equ1">
<mml:math id="m13">
<mml:mtable class="align-star" columnalign="left">
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>g</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>g</mml:mi>
<mml:mi>r</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>&#x3b4;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>p</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>t</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>c</mml:mi>
<mml:mi>k</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>s</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3c1;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>y</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>S</mml:mi>
<mml:mi>W</mml:mi>
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>s</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>l</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>w</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>r</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>v</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>l</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:mi>L</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>d</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>n</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>l</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>n</mml:mi>
<mml:mi>g</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>f</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mo>&#xa0;</mml:mo>
<mml:mi>v</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>u</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>e</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mi>W</mml:mi>
<mml:mi>L</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>L</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi>&#x3b4;</mml:mi>
<mml:mfenced open="(" close=")">
<mml:mrow>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfenced>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>t</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mi>L</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd columnalign="right"/>
<mml:mtd columnalign="left">
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>C</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>V</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>O</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:math>
</disp-formula>
</p>
<p>Results from this study are shown <italic>via</italic> curves termed &#x201c;OpenSeesPy, Shifting Load&#x201d;, shown in <xref ref-type="fig" rid="F9">Figures 9A, B</xref>. <xref ref-type="fig" rid="F9">Figure 9B</xref> is simply a normalized <xref ref-type="fig" rid="F9">Figure 9A</xref>&#x2014;each curve was normalized by the &#x201c;OpenSeesPy, Uniform Load&#x201d; results calculated in OpenSeesPy to isolate the effects of load redistribution due to fluid pooling upon the frame near the center of its span. A fluid with a higher density and a lower still water level was utilized to both simulate a case within FOAMySees and compare with the quasi-static load shape calculation described previously in this section. This case is labeled as &#x201c;OpenSeesPy, Shifting Load, H &#x3d; 0.1 m, <italic>&#x3c1;</italic>
<sub>
<italic>f</italic>
</sub> &#x3d; 3000&#xa0;<italic>kg</italic>/<italic>m</italic>
<sup>3</sup>&#x201d; in <xref ref-type="fig" rid="F9">Figure 9B</xref>. Results are compared with a solution provided by <xref ref-type="bibr" rid="B1">Bonus, 2023</xref>, which utilized Material Point Method (MPM) for simulation of both fluid and structure solutions. <xref ref-type="fig" rid="F9">Figures 9A, B</xref> both show strong agreement with the solutions provided by Bonus&#x2014;slight variations between both solutions exist due to the presence of structural shear deformation effects within the MPM solution for the beam.</p>
<p>To demonstrate the dynamic nature of the FOAMySees code, snapshots were selected from a case within this example, particularly the case with the largest displacements and therefore the largest displacement to length ratio. In <xref ref-type="fig" rid="F10">Figure 10A</xref>, four points in time during the simulation are marked as points A, B, C, and D respectively. In sub-figures <xref ref-type="fig" rid="F10">Figures 10B&#x2013;E</xref>, free surface elevation snapshots are displayed, showing the redistribution of water along the length of the frame and the settlement of the frame into a loading configuration that resulted in much larger deflections than what would occur for a uniform distributed load case.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>
<bold>(A)</bold> FOAMySees solution: Center span displacement of E &#x3d; 1E6 beam under shifting water loading, <bold>(B)</bold> point A (1.5&#xa0;s), <bold>(C)</bold> point B (2.2&#xa0;s), <bold>(D)</bold> point C (4.7&#xa0;s), <bold>(E)</bold> point D (25&#xa0;s).</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g010.tif"/>
</fig>
</sec>
<sec id="s1-5-3">
<title>1.5.3 Laminar multiphase hydrodynamic impact</title>
<p>
<xref ref-type="bibr" rid="B25">Winter, (2019)</xref> is an analytical FSI case comprised of a 2D multi-phase fluid dam break within a tank with initial conditions as shown in <xref ref-type="fig" rid="F11">Figure 11A</xref> which impinges upon a flexible flap affixed to the floor of the tank. The fluid properties correspond to water and air, so that <italic>&#x3c1;</italic>
<sub>1</sub> &#x3d; 1.0&#xa0;g/cm<sup>3</sup> (1000&#xa0;kg/m<sup>3</sup>) and <italic>&#x3bc;</italic>
<sub>1</sub> &#x3d; 0.01&#xa0;g/s/cm while <italic>&#x3c1;</italic>
<sub>2</sub> &#x3d; 0.001&#xa0;g/cm<sup>3</sup> (1&#xa0;kg/m<sup>3</sup>) and <italic>&#x3bc;</italic>
<sub>2</sub> &#x3d; 0.0001&#xa0;g/s/cm.The structure is elastic, 1.2&#xa0;cm wide by 8&#xa0;cm tall, with density <italic>&#x3c1;</italic>
<sub>0</sub> &#x3d; 2.5&#xa0;g/cm<sup>3</sup> (2500&#xa0;kg/m<sup>3</sup>), Young&#x2019;s modulus E &#x3d; 10<sup>7</sup>&#xa0;g/cm/s<sup>2</sup> (1&#xa0;MPa) and Poisson&#x2019;s ratio &#x3d; 0.3.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>
<bold>(A)</bold> Laminar multiphase hydrodynamic impact validation case setup, <bold>(B)</bold> Walhorn et al. Validation case: FOAMySees comparison to other solution, <bold>(C)</bold> Walhorn et al. fluid free surface comparison: left, grey background-Walhorn et al. Center-FOAMySees. Right, white background- STAR-CCM&#x2B;.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g011.tif"/>
</fig>
<p>Results show strong correlation between the coupled FEM&#x2014;CFD solution (FOAMySees) and historical results for the same geometry and initial conditions modelled with finite elements entirely or using the particle finite element method. The case was modelled in STAR-CCM &#x2b; using 8-node bricks with non-linear geometry model enabled to compare results with commercial software. The lateral displacement time history for the top left corner of the flap is shown in <xref ref-type="fig" rid="F11">Figure 11B</xref>. Results from <xref ref-type="bibr" rid="B16">Marti et al. (2006)</xref>; <xref ref-type="bibr" rid="B11">Idelsohn et al. (2008)</xref>; <xref ref-type="bibr" rid="B1">Bonus, 2023</xref> are shown as well, demonstrating large variability in the post-bore-impact phase from the dam break amongst various codes. Walhorn utilized a finite element solution for both structural and fluid dynamics. Idelson and Marti utilized particle finite element methods (PFEM) for the fluid solution coupled with finite elements for the structure. Bonus utilized Material Point Method (MPM) for simulation of both fluid and structure components of the solution. STAR-CCM &#x2b; utilized CFD for solution of the fluid motion and FEM for motion of the flexible flap. Free surface comparisons to results obtained from Walhorn et al. are shown in <xref ref-type="fig" rid="F11">Figure 11C</xref>. Snapshots from various points along the solution progression show good agreement with the original solution provided by Walhorn.</p>
</sec>
<sec id="s1-5-4">
<title>1.5.4 Post-earthquake laminar multiphase hydrodynamic impact</title>
<p>Identical domain geometry, fluid properties, and fluid initial conditions as described in the Laminar Multiphase Hydrodynamic Impact section were utilized to demonstrate the multi-hazard analysis capabilities of FOAMySees. A fiber section with &#x201c;non-linearBeamColumn&#x201d; formulation frame finite elements were used to represent the flap. Material properties of the flap were modified to allow for material yielding and hardening. The flap material chosen was the OpenSeesPy Uniaxial Hardening material, with Young&#x2019;s modulus E &#x3d; 10<sup>7</sup>&#xa0;g/cm/s<sup>2</sup> (1&#xa0;MPa), Yield Stress &#x3d; 10<sup>6</sup>&#xa0;g/cm/s<sup>2</sup> (100 Kpa), and hardening parameters <italic>H</italic>
<sub>
<italic>iso</italic>
</sub> &#x3d; 0.15 and <italic>H</italic>
<sub>
<italic>kin</italic>
</sub> &#x3d; 0.25.</p>
<p>The analysis case was run twice; first without a preliminary earthquake analysis to establish a baseline displacement time history with a non-linear material with which to compare, and again with a ground motion excitation preceding the fluid-structure interaction analysis. A plot of the horizontal acceleration over time and flap tip response to the excitation are shown in <xref ref-type="fig" rid="F12">Figures 12A, B</xref> respectively. Ground motion was stopped after 3&#xa0;s and free vibration of the flap was allowed until 15&#xa0;s. Numerical damping was utilized in the seismic analysis through the means of changing the Newmark integration coefficients to <italic>&#x3b3;</italic> &#x3d; 0.66 and <italic>&#x3b2;</italic> &#x3d; 0.33. The final deformed shape of the structure at the time of termination of the preliminary seismic analysis resulting in a flap tip displacement of &#x2212;0.0045&#xa0;m was utilized as the initial configuration of the structure within the fluid-structure analysis. Both cases are plotted alongside the original FOAMySees solution for the Walhorn validation case in <xref ref-type="fig" rid="F12">Figure 12C</xref>. The results show that in this case both material non-linearity and material history variables play a role in the flap tip displacement response to impact from the breaking dam.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>
<bold>(A)</bold> ground motion utilized in preliminary seismic analysis <bold>(B)</bold> flap tip displacement resulting from base ground motion excitation prior to fluid-structure analysis, <bold>(C)</bold> comparison between FOAMySees Laminar hydrodynamic impact solutions&#x2014;Demonstration of material hardening effects due to preliminary seismic loading upon flap tip displacement.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g012.tif"/>
</fig>
</sec>
<sec id="s1-5-5">
<title>1.5.5 Three dimensional structure under turbulent breaking solitary wave impingement with real structural sections and materials</title>
<p>In order to evaluate the efficacy of the force and displacement mapping routines for complex three dimensional geometries, a 1:5 full scale structure studied experimentally by <xref ref-type="bibr" rid="B23">Sullivan (2021)</xref> within the Large Wave Flume at Oregon State University O.H. Hinsdale Wave Research Laboratory was modelled in OpenFOAM and FOAMySees.</p>
<sec id="s1-5-5-1">
<title>1.5.5.1 Structural model description</title>
<p>The structure was 1.016&#xa0;m by 1.016&#xa0;m in plan from column center to column center, comprised of steel frame elements, steel gusset plates, and concrete filled steel tubes. HSS2 &#xd7; 2 &#xd7; 1/8 elements were framed horizontally between columns with their center-line at heights of 1.3208&#xa0;m, 1.8288&#xa0;m, and 2.3368&#xa0;m HSS1.5 &#xd7; 1.5 &#xd7; 1/4 elements were utilized for chevron bracing from 1.3208&#xa0;m to 1.8288&#xa0;m along all four sides of the structure. Panels spanned between HSS2 &#xd7; 2 elements forming diaphragms within the structural plan footprint. For exact material properties of the experimental specimen and exact structural dimensions, see <xref ref-type="bibr" rid="B23">Sullivan (2021)</xref>. Uni-axial material properties for structural steel (&#x201c;Steel02&#x201d; model, with a yield stress of 344.75&#xa0;MPa, initial elastic tangent of 200&#xa0;GPa, strain-hardening ratio of 0.1, and isotropic hardening parameters of a1, a2, and a3 of 18.0, 0.925, and 0.15, respectively) and concrete (&#x201c;Concrete02&#x201d; model, with concrete compressive strength at 28&#xa0;days of &#x2212;49.64&#xa0;MPa, concrete strain at maximum strength of &#x2212;0.00326, concrete crushing strength of &#x2212;9.93&#xa0;MPa, concrete strain at crushing strength of &#x2212;0.01631, ratio between unloading slope and initial slope of 0.1, tensile strength of 4.39&#xa0;MPa, and tension softening stiffness of 2&#xa0;GPa) respectively were chosen for modelling materials within OpenSeePy, and gusset plates were not modelled. EqualDOF commands were utilized for connection of structural elements of different formulations within OpenSeesPy. The structure was fixed at its base. Fiber sections with elastic uniaxial materials and 64 fibers each were utilized to represent the composite sections of the columns, which were standard 10.16&#xa0;cm (4 in) steel pipes with 1.27&#xa0;cm (1/2 in) thick walls filled with concrete. Elastic beam sections were utilized for the HSS components of the frame. Elastic MITC4 shell elements were utilized for the modelling of the panels spanning across each story, which were given a thickness of 12.7&#xa0;mm (1/2 in) and material properties of elastic steel. The model was given Rayleigh damping in OpenSeesPy with a value of 7.5% from the frequency of the first structural mode (<italic>f</italic>
<sub>1</sub>) to five times that frequency (5<italic>f</italic>
<sub>1</sub>) with Rayleigh mass coefficients of <italic>&#x3b1;</italic>
<sub>
<italic>mass</italic>
</sub> &#x3d; 0.0 and Rayleigh stiffness coefficients of <inline-formula id="inf7">
<mml:math id="m14">
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">tangent</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.0</mml:mn>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">initial</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mn>5</mml:mn>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi>&#x3b6;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi>&#x3c0;</mml:mi>
<mml:mo>&#x2a;</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>5</mml:mn>
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo>&#x2212;</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>f</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:math>
</inline-formula>, and <italic>&#x3b2;</italic>
<sub>
<italic>committed</italic>
</sub> &#x3d; 0.0.</p>
</sec>
<sec id="s1-5-5-2">
<title>1.5.5.2 Fluid model</title>
<p>The Large Wave Flume is 104.0&#xa0;m long, 3.7&#xa0;m wide, and 4.6&#xa0;m deep, with waves generated by a piston-type wavemaker on the upstream end of the flume. The model was initialized with a still water level (SWL) of 2.0&#xa0;m, and the structural model and CFD patch surfaces were positioned approximately 40.77&#xa0;m from the neutral position of the wave maker. A paddle-generated wave with a maximum crest height of 1.45&#xa0;m and a celerity (the velocity with which a wave advances) of 5.82&#xa0;m/s within a still water level of 2&#xa0;m was sent down the flume toward the structure. As the Oregon State University O.H. Hinsdale Wave Research Laboratory Large Wave Flume CFD model with paddle driven waves utilized in this study has been used previously and its information is available in literature, details are omitted here for brevity. See <xref ref-type="bibr" rid="B14">Lewis et al. (2022)</xref> for detailed information about the flume geometry and bathymetry, initial conditions of the water within the flume, location of the specimen in the flume, paddle driven wave properties, validation of wave height and velocity with experimental results, CFD boundary conditions utilized, turbulence model properties, and detailed OpenFOAM modelling procedures. The geometry of the structure (elevated structure rather than a concrete shear core) and mesh motion (pointDisplacement) boundary conditions were the only components changed in OpenFOAM between the model utilized in the previously cited study and the model utilized presently. For detailed information about OpenFOAM modelling procedures utilized for paddle generated waves and recommendations for CFD modelling of complex structures, see <xref ref-type="bibr" rid="B25">Winter (2019)</xref>.</p>
</sec>
<sec id="s1-5-5-3">
<title>1.5.5.3 Branch meshes</title>
<p>Two branch meshes of roughly 25,000 nodes each were utilized in this example. The first branch mesh was utilized for displacement transfer from FOAMySees to OpenFOAM, and consisted of a point cloud identical to that of the CFD surface patch nodal locations. The second branch mesh was utilized for force transfer from OpenFOAM to FOAMySees and consisted of a point cloud identical to that of the CFD patch surface face centers. The purpose of this was to ensure direct mapping of forces from their calculated locations (CFD patch surface face centers) to branch nodes with FOAMySees, and direct mapping of FOAMySees calculated branch displacements to the CFD surface patch nodes to demonstrate scalability of FOAMySees without the need for coupling mesh convergence studies for this example. FEM node to branch node relationships were generated automatically by means of a clustering algorithm, namely, the KDTree functions within the scipy Python package. The OpenFOAM patch surface node locations were loaded into FOAMySees as a point cloud, and were each clustered to the OpenSeesPy FEM node which was closest in absolute distance. This operation was also completed with the CFD patch surface face centers providing two branch groups for each FEM node, with each controlling either displacement or force transfer to preCICE for application to the OpenFOAM model. A select number of FEM nodes were chosen for coupling to CFD patch surfaces as the full geometry of the structure was not represented in OpenFOAM. The CFD patch surface utilized in this analysis with the OpenSeesPy model used in FOAMySees overlaid is shown in <xref ref-type="fig" rid="F13">Figure 13A</xref> and the displacement branch groupings utilized are shown in <xref ref-type="fig" rid="F13">Figure 13B</xref>.</p>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>
<bold>(A)</bold> OpenSeesPy model overlaid by OpenFOAM CFD patch surface, <bold>(B)</bold> Branch clusters utilized in analysis.</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g013.tif"/>
</fig>
</sec>
<sec id="s1-5-5-4">
<title>1.5.5.4 Computational cost</title>
<p>The model was run for 4&#xa0;s of simulation time at a timestep of 0.0005&#xa0;s on 1 UW HYAK Klone HPC Node with 40 processors for a total computational time of 14&#xa0;h. In comparison to a geometrically similar model utilized for benchmarking computational cost with respect to an equivalent CFD model (9,960 branch nodes coupled to 35,960 CFD patch surface nodes) the first second of the simulation with the present model (50,000 branch nodes coupled to 50,000 CFD patch nodes) took roughly 3.5&#xa0;h, which is nearly twice the computational time of the model described in <xref ref-type="sec" rid="s1-3-7">Section 1.3.7</xref> with nearly identical node and cell counts within the CFD models compared (4,034,512 points and 3,894,298 cells <italic>versus</italic> 4,061,836 points and 3,917,848 cells). For more information, see <xref ref-type="sec" rid="s1-3-7">Section 1.3.7</xref>.</p>
</sec>
<sec id="s1-5-5-5">
<title>1.5.5.5 Results</title>
<p>Mesh motion of OpenSeesPy, the FOAMySees displacement branch mesh, and OpenFOAM surface patches along with fluid free surface (isosurface at <italic>&#x3b1;</italic> &#x3d; 0.5) overlaid for selected times of the simulation are shown in <xref ref-type="fig" rid="F14">Figures 14A&#x2013;C</xref>. In <xref ref-type="fig" rid="F14">Figure 14D</xref> a time history of the displacement of the top left corner on the upstream face of the structure in OpenSeesPy and its associated location in OpenFOAM are plotted alongside each other to demonstrate proper transfer of displacement during the simulation. To demonstrate proper transfer of force between coupled models, the forces applied to the branch nodes within FOAMySees were output and summed for comparison with the force calculated within OpenFOAM <italic>via</italic> functionObjects. The streamwise force time histories for both OpenFOAM and FOAMySees are shown along with experimentally measured forces from <xref ref-type="bibr" rid="B23">Sullivan (2021)</xref> for the duration of wave impingement in <xref ref-type="fig" rid="F14">Figure 14E</xref>, and errors for force and impulse transfer across interfaces is shown in <xref ref-type="fig" rid="F14">Figure 14F</xref>.</p>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>(Continued).</p>
</caption>
<graphic xlink:href="fbuil-09-1120518-g014.tif"/>
</fig>
</sec>
</sec>
</sec>
</sec>
<sec sec-type="conclusion" id="s2">
<title>2 Conclusion</title>
<p>The presented work offers a highly scalable, versatile, open-source methodology for numerical simulation of non-linear fluid-structure interaction. By allowing for geometric discrepancies between structural and fluid solvers and compensating for this through the use of branch node data communication meshes, high-resolution reduced order center-line element and shell element comprised finite element models may be utilized to simulate the response of structures to fluid loading in three dimensions. This methodology has been validated through several static analysis cases, one high energy dam break case involving a flexible rubber flap placed within the path of flow, and a medium-scale case representing a 1:5 scale structure comprised of steel and concrete subject to breaking solitary wave impingement tested previously at Oregon State University. Additionally, the high energy dam break case was run with seismic excitation preceding the fluid-structure interaction simulation to demonstrate damage state coherence between termination of the preliminary structural analysis subroutines and the initial state of the fluid-structure analysis. More testing of the software and coupling methodology is necessary to determine rate of convergence of solution, memory usage, limits of the branch node data communication mesh method, and timestep stability regimes of the presented coupled solution technique with respect to limiting factors within both the finite element and computational fluid dynamics methodologies. This includes investigating feasibility and advantages of utilizing iterative techniques for interface manifold acceleration convergence such as Aitken Under-Relaxation and Iterative-Quasi-Newton Inverse-Least-Squares (IQN-ILS). Furthermore, more work must be done to validate the solution technique offered by the proposed API with experimental studies conducted at large scales. A detailed investigation of how turbulence modelling affects results was not considered in the present study, thus more research must be completed to assess the accuracy of results provided by FOAMySees when utilizing OpenFOAM fluid solvers which incorporate turbulence modelling.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s3">
<title>Data availability statement</title>
<p>The raw data supporting the conclusion of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s4">
<title>Author contributions</title>
<p>Conceptualization: NL, AW, MM, DL, ME, and PA. Visualization, Methodology, and Software: NL. Data Curation, Validation, and Investigation: NL, JB, and AW. Resources: NL, AW, JB, MM, PA, and DL. Writing&#x2014;Original Draft: NL and AW. Funding acquisition, Project administration, Supervision, Writing&#x2014;Review Editing: MM, DL, ME, and PA. (Nomenclature according to CRediT guidelines&#x2014;Contributor Roles Taxonomy).</p>
</sec>
<sec id="s5">
<title>Funding</title>
<p>The authors thank the NHERI Computational Modeling and Simulation Center (SimCenter), National Science Foundation (NSF) and Joy Pauschke (program manager) for their financial support of this project through Grants CMMI-1726326 and CMMI-1933184.</p>
</sec>
<ack>
<p>This work was facilitated through the use of advanced computational, storage, and networking infrastructure provided by the Hyak supercomputer system, supported in part by the University of Washington eScience Institute.</p>
</ack>
<sec sec-type="COI-statement" id="s6">
<title>Conflict of interest</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s7">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Bonus</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2023</year>). <source>Evaluation of Fluid-Driven Debris Impacts Using a Multi-GPU Material Point Method</source>. <comment>Ph.D. Thesis</comment>. <publisher-loc>Seattle, WA</publisher-loc>: <publisher-name>UW Digital Libraries</publisher-name>.</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bungartz</surname>
<given-names>H.-J.</given-names>
</name>
<name>
<surname>Lindner</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Gatzhammer</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Mehl</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Scheufele</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Shukaev</surname>
<given-names>A.</given-names>
</name>
<etal/>
</person-group> (<year>2016</year>). <article-title>Precice &#x2013; a fully parallel library for multi-physics surface coupling</article-title>. <source>Comput. Fluids</source> <volume>141</volume>, <fpage>250</fpage>, <pub-id pub-id-type="doi">10.1016/j.compfluid.2016.04.003</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Croquer</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Diaz-Carrasco</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Poncet</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Lacey</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Numerical benchmark for modelling wave impacts against vertical walls using openfoam</article-title>. <conf-name>Proceedings of the 39th IAHR World Congress From Snow to Sea</conf-name>, <conf-date>January 2022</conf-date>, <conf-loc>Spain</conf-loc>, <publisher-name>IAHR</publisher-name>, do<pub-id pub-id-type="doi">10.3850/IAHR-39WC2521716X2022201</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Degroote</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Vierendeels</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2011</year>). &#x201c;<article-title>A partitioned quasi-Newton solution technique for fluid-structure interaction problems using a coarsened grid to accelerate the convergence of the coupling iterations</article-title>,&#x201d; in <source>Computational methods for coupled problems in science and engineering IV</source>. Editors <person-group person-group-type="editor">
<name>
<surname>Papadrakakis</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>O&#xf1;ate</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Schrefler</surname>
<given-names>B.</given-names>
</name>
</person-group> (<publisher-loc>Oslo, Norway</publisher-loc>: <publisher-name>European Community on Computational Methods in Applied Sciences ECCOMAS</publisher-name>), <fpage>100</fpage>&#x2013;<lpage>111</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Douglas</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>On the effect of bed condition on the development of tsunami-induced loading on structures using openfoam</article-title>. <source>Nat. Hazards</source> <volume>76</volume>, <fpage>1335</fpage>, <pub-id pub-id-type="doi">10.1007/s11069-014-1552-2</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Douglas</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>St-Germain</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2015</year>). &#x201c;<article-title>3-d multi-phase numerical modelling of tsunami-induced hydrodynamic loading on nearshore structures</article-title>,&#x201d; in <conf-name>IAHR World Congress 2015At: The Hague</conf-name>, <conf-loc>Netherlands</conf-loc>, <conf-date>July 2015</conf-date> (<publisher-name>IAHR</publisher-name>).</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Elsheikh</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Azimi</surname>
<given-names>A. H.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Mohammadian</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2022a</year>). <article-title>Tsunami-induced bores propagating over a canal, part ii: Numerical experiments using the standard k-<italic>&#x25b;</italic> turbulence model</article-title>. <source>Fluids</source> <volume>7</volume>, <fpage>214</fpage>. <pub-id pub-id-type="doi">10.3390/fluids7070214</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Elsheikh</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Azimi</surname>
<given-names>A. H.</given-names>
</name>
<name>
<surname>Mohammadian</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2022b</year>). <article-title>Tsunami-induced bore propagating over a canal-part 1: Laboratory experiments and numerical validation</article-title>. <source>Fluids</source> <volume>7</volume>, <fpage>213</fpage>. <pub-id pub-id-type="doi">10.3390/fluids7070213</pub-id>
</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Higuera</surname>
<given-names>P.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>olaflow: Cfd for waves</article-title>. <source>J. Waterw.</source> <volume>144</volume>, <fpage>4</fpage>. <pub-id pub-id-type="doi">10.5281/zenodo.1297013</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hirt</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Nichols</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>1981</year>). <article-title>Volume of fluid (vof) method for the dynamics of free boundaries</article-title>. <source>J. Comput. Phys.</source> <volume>39</volume>, <fpage>201</fpage>. <pub-id pub-id-type="doi">10.1016/0021-9991(81)90145-5</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Idelsohn</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Marti</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Limache</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>O&#xf1;ate</surname>
<given-names>E.</given-names>
</name>
</person-group> (<year>2008</year>). <article-title>Unified Lagrangian formulation for elastic solids and incompressible fluids: Application to fluid-structure interaction problems via the pfem</article-title>. <source>Comput. Methods Appl. Mech. Eng.</source> <volume>197</volume>, <fpage>1762</fpage>. <pub-id pub-id-type="doi">10.1016/j.cma.2007.06.004</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Jasak</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2009</year>). <source>Dynamic mesh handling in openfoam</source>, <conf-name>47th AIAA Aerospace Sciences Meeting including The New Horizons Forum and Aerospace Exposition</conf-name>, <conf-loc>Orlando, Florida</conf-loc>, <conf-date>05 January&#x2013;08 January, 2009</conf-date>. <pub-id pub-id-type="doi">10.2514/6.2009-341</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jasak</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Tukovic</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2006</year>). <article-title>Automatic mesh motion for the unstructured Finite Volume Method</article-title>. <source>Trans. FAMENA</source> <volume>30</volume>, <fpage>1</fpage>&#x2013;<lpage>20</lpage>.</citation>
</ref>
<ref id="B14">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lewis</surname>
<given-names>N. S.</given-names>
</name>
<name>
<surname>Lehman</surname>
<given-names>D. E.</given-names>
</name>
<name>
<surname>Motley</surname>
<given-names>M. R.</given-names>
</name>
<name>
<surname>Arduino</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Roeder</surname>
<given-names>C. W.</given-names>
</name>
<name>
<surname>Pyke</surname>
<given-names>C. N.</given-names>
</name>
<etal/>
</person-group> (<year>2022</year>). <article-title>Integrated study of existing tsunami design standards</article-title>. <source>J. Struct. Eng.</source> <volume>148</volume>, <fpage>04022200</fpage>. <pub-id pub-id-type="doi">10.1061/(ASCE)ST.1943-541X.0003506</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Mohammadian</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Azimi</surname>
<given-names>A. H.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Experimental and numerical investigation of beach slope effects on the hydrodynamic loading of tsunami-like surges on a vertical wall</article-title>. <source>J. Mar. Sci. Eng.</source> <volume>10</volume>, <fpage>1580</fpage>. <pub-id pub-id-type="doi">10.3390/jmse10111580</pub-id>
</citation>
</ref>
<ref id="B16">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Marti</surname>
<given-names>J. M.</given-names>
</name>
<name>
<surname>Idelsohn</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Limache</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Calvo</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>D&#x2019;El&#xed;a</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2006</year>). <source>A fully coupled particle method for quasi-incompressible fluid-hypoelastic structure interactions</source>, <conf-name>ENIEF 2006 XV Congreso sobre M&#xE9;todos Num&#xE9;ricos y sus Aplicaciones</conf-name>, <conf-loc>Santa Fe</conf-loc>, <publisher-name>Fluid Structure Interaction</publisher-name> <volume>Volume XXV</volume> (<issue>9</issue>).</citation>
</ref>
<ref id="B17">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>McKenna</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Scott</surname>
<given-names>M. H.</given-names>
</name>
<name>
<surname>Fenves</surname>
<given-names>G. L.</given-names>
</name>
</person-group> (<year>2010</year>). <article-title>Nonlinear finite-element analysis software architecture using object composition</article-title>. <source>J. Comput. Civ. Eng.</source> <volume>24</volume>, <fpage>95</fpage>. <pub-id pub-id-type="doi">10.1061/(asce)cp.1943-5487.0000002</pub-id>
</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Motley</surname>
<given-names>M. R.</given-names>
</name>
<name>
<surname>Wong</surname>
<given-names>H. K.</given-names>
</name>
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Winter</surname>
<given-names>A. O.</given-names>
</name>
<name>
<surname>Eberhard</surname>
<given-names>M. O.</given-names>
</name>
</person-group> (<year>2016</year>). <article-title>Tsunami-induced forces on skewed bridges</article-title>. <source>J. Waterw. Port, Coast. Ocean Eng.</source> <volume>142</volume>, <fpage>1</fpage>. <pub-id pub-id-type="doi">10.1061/(ASCE)WW.1943-5460.0000328</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Efficient tsunami simulation at local and global scales</source>. <comment>Ph.D. Thesis</comment>, <publisher-loc>Seattle, WA</publisher-loc>: <publisher-name>UW Digital Libraries</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://hdl.handle.net/1773/44758">http://hdl.handle.net/1773/44758</ext-link>
</comment>.</citation>
</ref>
<ref id="B20">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Qin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Motley</surname>
<given-names>M. R.</given-names>
</name>
<name>
<surname>Marafi</surname>
<given-names>N. A.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Three-dimensional modeling of tsunami forces on coastal communities</article-title>. <source>Coast. Eng.</source> <volume>140</volume>, <fpage>43</fpage>. <pub-id pub-id-type="doi">10.1016/j.coastaleng.2018.06.008</pub-id>
</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sarjamee</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Mohammadian</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017a</year>). <article-title>Large eddy simulation of extreme hydrodynamic forces on structures with mitigation walls using openfoam</article-title>. <source>Nat. Hazards</source> <volume>85</volume>, <fpage>1689</fpage>. <pub-id pub-id-type="doi">10.1007/s11069-016-2658-5</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sarjamee</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Nistor</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Mohammadian</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2017b</year>). <article-title>Numerical investigation of the influence of extreme hydrodynamic forces on the geometry of structures using openfoam</article-title>, <source>Nat. Hazards</source> <volume>87</volume>, <fpage>213</fpage>. <pub-id pub-id-type="doi">10.1007/s11069-017-2760-3</pub-id>
</citation>
</ref>
<ref id="B23">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Sullivan</surname>
<given-names>K. P.</given-names>
</name>
</person-group> (<year>2021</year>). <source>Testing of a new composite framing system for vertical evacuation structures</source>. <comment>M.S. Thesis</comment>. <publisher-loc>Seattle, WA</publisher-loc>: <publisher-name>UW Digital Libraries</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://hdl.handle.net/1773/47026">http://hdl.handle.net/1773/47026</ext-link>
</comment>.</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Weller</surname>
<given-names>H. G.</given-names>
</name>
<name>
<surname>Tabor</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Jasak</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Fureby</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>1998</year>). <article-title>A tensorial approach to computational continuum mechanics using object-oriented techniques</article-title>. <source>Comput. Phys.</source> <volume>12</volume>, <fpage>620</fpage>. <pub-id pub-id-type="doi">10.1063/1.168744</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="thesis">
<person-group person-group-type="author">
<name>
<surname>Winter</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2019</year>). <source>Effects of flow shielding and channeling on tsunami-induced loading of coastal structures</source>. <comment>Ph.D. thesis</comment>. <publisher-loc>Seattle, WA</publisher-loc>: <publisher-name>UW Digital Libraries</publisher-name>. <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://hdl.handle.net/1773/45151">http://hdl.handle.net/1773/45151</ext-link>
</comment>.</citation>
</ref>
<ref id="B26">
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Wong</surname>
<given-names>H. K. W.</given-names>
</name>
</person-group> (<year>2015</year>). <article-title>Three-dimensional effects of tsunami impact on bridges</article-title>, <comment>Available at: <ext-link ext-link-type="uri" xlink:href="http://hdl.handle.net/1773/33666">http://hdl.handle.net/1773/33666</ext-link>
</comment>.</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhu</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Mckenna</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Scott</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2018</year>). <article-title>Openseespy: Python library for the opensees finite element framework</article-title>. <source>SoftwareX</source> <volume>7</volume>, <fpage>6</fpage>. <pub-id pub-id-type="doi">10.1016/j.softx.2017.10.009</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>