<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Archiving and Interchange DTD v2.3 20070202//EN" "archivearticle.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="methods-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Clim.</journal-id>
<journal-title>Frontiers in Climate</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Clim.</abbrev-journal-title>
<issn pub-type="epub">2624-9553</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fclim.2021.609688</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Climate</subject>
<subj-group>
<subject>Methods</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Hurricane Irma Simulation at South Florida Using the Parallel CEST Model</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Li</surname> <given-names>Yuepeng</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1011758/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Chen</surname> <given-names>Qiang</given-names></name>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1232287/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Kelly</surname> <given-names>Dave M.</given-names></name>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
</contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname> <given-names>Keqi</given-names></name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/1098100/overview"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>International Hurricane Research Center, Florida International University</institution>, <addr-line>Miami, FL</addr-line>, <country>United States</country></aff>
<aff id="aff2"><sup>2</sup><institution>Department of Earth &#x00026; Environment, Florida International University</institution>, <addr-line>Miami, FL</addr-line>, <country>United States</country></aff>
<aff id="aff3"><sup>3</sup><institution>Centre for Environment, Fisheries and Aquaculture (CEFAS)</institution>, <addr-line>Lowestoft</addr-line>, <country>United Kingdom</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Hatim O. Sharif, University of Texas at San Antonio, United States</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Muhammad Akbar, Tennessee State University, United States; Steven Cocke, Florida State University, United States</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Yuepeng Li <email>yuepli&#x00040;fiu.edu</email></corresp>
<fn fn-type="other" id="fn001"><p>This article was submitted to Climate Risk Management, a section of the journal Frontiers in Climate</p></fn></author-notes>
<pub-date pub-type="epub">
<day>05</day>
<month>08</month>
<year>2021</year>
</pub-date>
<pub-date pub-type="collection">
<year>2021</year>
</pub-date>
<volume>3</volume>
<elocation-id>609688</elocation-id>
<history>
<date date-type="received">
<day>24</day>
<month>09</month>
<year>2021</year>
</date>
<date date-type="accepted">
<day>02</day>
<month>07</month>
<year>2021</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2021 Li, Chen, Kelly and Zhang.</copyright-statement>
<copyright-year>2021</copyright-year>
<copyright-holder>Li, Chen, Kelly and Zhang</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>In this study, a parallel extension of the Coastal and Estuarine Storm Tide (CEST) model is developed and applied to simulate the storm surge tide at South Florida induced by hurricane Irma occurred in 2017. An improvement is also made to the existing advection algorithm in CEST. This is achieved through the introduction of high-order, monotone Semi-Lagrangian advection. Distributed memory parallelization is developed via the Message Passing Interface (MPI) library. The parallel CEST model can therefore be run efficiently on machines ranging from multicore laptops to massively High Performance Computing (HPC) system. The principle advantage of being able to run the CEST model on multiple cores is that relatively low run-time is possible for real world storm surge simulations on grids with high resolution, especially in the locality where the hurricane makes landfall. The computational time is critical for storm surge model forecast to finish simulations in 30 min, and results are available to users before the arrival of the next advisory. In this study, simulation of hurricane Irma induced storm surge was approximately 22 min for 4 day simulation, with the results validated by field measurements. Further efficiency analysis reveals that the parallel CEST model can achieve linear speedup when the number of processors is not very large.</p></abstract>
<kwd-group>
<kwd>CEST</kwd>
<kwd>hurricane</kwd>
<kwd>parallelization</kwd>
<kwd>SLOSH</kwd>
<kwd>storm surge</kwd>
<kwd>advection</kwd>
<kwd>open MPI</kwd>
</kwd-group>
<counts>
<fig-count count="11"/>
<table-count count="0"/>
<equation-count count="23"/>
<ref-count count="23"/>
<page-count count="12"/>
<word-count count="5646"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<p>The Coastal and Estuarine Storm Tide (CEST) numerical model was developed at the International Hurricane Research Center (IHRC), based at Florida International University (FIU) in Miami, around a decade ago. The purpose of the model is to simulate the storm surge due to the combined action of (anti)cylonic winds and astronomical tides. Although the CEST model has both 2D and 3D variants, in this paper we are concerned with the 2D version that is based on the depth&#x02013;averaged, primitive variable, non&#x02013;linear shallow water (NLSW) equations expressed on orthogonal curvilinear coordinates. These governing equations are solved via an algorithm that is based on the semi&#x02013;implicit finite&#x02013;difference (FD) approach (Casulli, <xref ref-type="bibr" rid="B3">1990</xref>). CEST differs from the approach presented in Casulli (<xref ref-type="bibr" rid="B3">1990</xref>) as it employs a straightforward explicit Eulerian advection scheme (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>). The CEST model allows for forcing by winds, atmospheric pressure and astronomical tides, and is thus capable of simulating storm tides as well as the wind&#x02013;driven circulation at estuaries and coasts. As described in Zhang et al. (<xref ref-type="bibr" rid="B23">2008</xref>) the CEST model incorporates a novel wetting&#x02013;drying algorithm that is based on an accumulated water volume approach for dry cells.</p>
<p>Compared to the US operational SLOSH (Sea, Lake, and Overland Surge from Hurricane) model employed by the National Hurricane Center (NHC), CEST has demonstrated favorable results over the hindcast of storm surge induced by Camille (1969), Hugo (1989), Andrew (1992), Wilma (2005), Zhang et al. (<xref ref-type="bibr" rid="B23">2008</xref>), and Zhang et al. (<xref ref-type="bibr" rid="B22">2012</xref>). The performance and stability of CEST were also examined by conducting simulations for more than 100,000 synthetic hurricanes for nine SLOSH basins covering the Florida coast and Lake Okeechobee (Zhang et al., <xref ref-type="bibr" rid="B21">2013</xref>). It is demonstrated that CEST has the potential to be used for operational forecasts of storm surge.</p>
<p>Recently, NHC has developed several high resolution basins along East Coast and Gulf of Mexico with 100 m grid resolution along the coastal region. South Florida Basin is the one of the basins with about 640,000 computational cells. It takes 1&#x02013;2 h to finish 4-days simulation by SLOSH or CEST with one CPU. For the storm surge forecast, the P-Surge model is used to compute the ranges of inundation magnitudes and extents (Taylor and Glahn, <xref ref-type="bibr" rid="B19">2008</xref>). Real-time storm surge simulations are required to produce P-Surge products in 20&#x02013;30 min because the NHC updates the hurricane forecast/advisory every 6 h (Zhang et al., <xref ref-type="bibr" rid="B21">2013</xref>). Therefore, improved algorithm and simple parallelization via the message passing interface (MPI) approach have to be employed to CEST model in order to satisfy the forecast requirement.</p>
<p>In this paper we present a modified version of the CEST model that includes an improved advection algorithm and a simple parallelization via the message passing interface (MPI) library. MPI allows for distributed memory parallelization ensuring that CEST is not limited to the amount of memory on a single machine or the number of processes available on that machine. The new parallel version of CEST can therefore be run on machines ranging from multi-core desktops to massively parallel supercomputers.</p>
<p>The paper is structured as follows in section 2 we detail the governing equations including the transformation to orthogonal curvilinear coordinates. ection 3 gives an overview of the numerical algorithm used to solve the equations with emphasis on improvements and changes made to the original CEST model. This section also includes details on the treatment of wetting&#x02013;drying fronts and parallelization. A test case result is presented in section 4 which includes a comparison of the CPU time with the original series CEST code. Finally, in section 5, conclusions are drawn.</p>
</sec>
<sec id="s2">
<title>2. Governing equations</title>
<p>The CEST model employs a non&#x02013;conservation, primitive variable, form of the 2D NLSW equations in orthogonal curvilinear co&#x02013;ordinates (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>). Flow variables are considered to be depth uniform; i.e. the velocities are averaged over the water depth and there is no vertical velocity variation. The curvilinear co&#x02013;ordinate system used follows that introduced by Blumberg and Herring (<xref ref-type="bibr" rid="B2">1987</xref>) and comprises horizontal co&#x02013;ordinates (&#x003BE;, &#x003B7;) and a vertical co&#x02013;ordinate (<italic>z</italic>), see <xref ref-type="fig" rid="F1">Figure 1</xref>. Metric coefficients, <italic>h</italic><sub>1</sub> and <italic>h</italic><sub>2</sub>, are introduced such that a distance increment satisfies the relation</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>d</mml:mi><mml:msup><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>h</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:mi>d</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003BE;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msubsup><mml:mi>d</mml:mi><mml:msup><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M2"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>{</mml:mo> <mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup></mml:mrow> <mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>{</mml:mo> <mml:mrow><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>y</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mn>2</mml:mn></mml:msup></mml:mrow> <mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:mfrac></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The differential arc lengths at point <italic>P</italic> in <xref ref-type="fig" rid="F1">Figure 1</xref> are given by</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M3"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mi>d</mml:mi><mml:mi>&#x003BE;</mml:mi><mml:mtext class="textrm" mathvariant="normal">,&#x000A0;</mml:mtext><mml:mi>d</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mi>d</mml:mi><mml:mi>&#x003B7;</mml:mi><mml:mtext class="textrm" mathvariant="normal">.</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Thus, the <italic>u</italic> and <italic>v</italic> components of the depth&#x02013;averaged velocity are given by</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M4"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>&#x003BE;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mtext class="textrm" mathvariant="normal">,&#x000A0;</mml:mtext><mml:mi>v</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mfrac><mml:mrow><mml:mi>d</mml:mi><mml:mi>&#x003B7;</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>With &#x003B6; &#x0003D; &#x003B6;(&#x003BE;, &#x003B7;, <italic>t</italic>) denoting the free surface disturbance measured from the undisturbed water level <italic>h</italic> &#x0003D; <italic>h</italic>(&#x003BE;, &#x003B7;). The depth&#x02013;averaged velocity components are denoted by <italic>u</italic> &#x0003D; <italic>u</italic>(&#x003BE;, &#x003B7;, <italic>t</italic>) and <italic>v</italic> &#x0003D; <italic>v</italic>(&#x003BE;, &#x003B7;, <italic>t</italic>) for the &#x003BE; and &#x003B7; directions, see <xref ref-type="fig" rid="F2">Figure 2</xref>, respectively.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Schematic showing the &#x003BE; &#x02212; &#x003B7; orthogonal curvilinear co&#x02013;ordinate system employed in the IHRC CEST model.</p></caption>
<graphic xlink:href="fclim-03-609688-g0001.tif"/>
</fig>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p>Schematic showing a computational cell on the &#x003BE; &#x02212; &#x003B7; orthogonal curvilinear FD grid.</p></caption>
<graphic xlink:href="fclim-03-609688-g0002.tif"/>
</fig>
<p>In the orthogonal curvilinear co&#x02013;ordinate system the continuity equation is then given by</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>[</mml:mo> <mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mi>H</mml:mi><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mi>u</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:mi>H</mml:mi><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mi>v</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow> <mml:mo>]</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The momentum equations are</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M6"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>[</mml:mo> <mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:msup><mml:mi>u</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mi>u</mml:mi><mml:mi>v</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow> <mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mo>=</mml:mo><mml:mi>f</mml:mi><mml:mi>v</mml:mi><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mi>u</mml:mi><mml:mi>v</mml:mi><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mi>g</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:mo>&#x02202;</mml:mo><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x00394;</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x003C1;</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mi>&#x003C4;</mml:mi><mml:mi>B</mml:mi><mml:mi>&#x003BE;</mml:mi></mml:msubsup></mml:mrow><mml:mi>H</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mi>&#x003C4;</mml:mi><mml:mi>W</mml:mi><mml:mi>&#x003BE;</mml:mi></mml:msubsup></mml:mrow><mml:mi>H</mml:mi></mml:mfrac></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtable columnalign='left'><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:msup><mml:mo>&#x02202;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msup><mml:mi>&#x003BE;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mn>2</mml:mn><mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:msup><mml:mo>&#x02202;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>and</p>
<disp-formula id="E8"><label>(7)</label><mml:math id="M8"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>[</mml:mo> <mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mi>u</mml:mi><mml:mi>v</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msup><mml:mi>v</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac></mml:mrow> <mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>f</mml:mi><mml:mi>u</mml:mi><mml:mo>+</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn>2</mml:mn></mml:msup><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x02212;</mml:mo><mml:mi>u</mml:mi><mml:mi>v</mml:mi><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr><mml:mtr columnalign='left'><mml:mtd columnalign='left'><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mi>g</mml:mi><mml:mrow><mml:msub><mml:mi>h</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mfrac><mml:mo>&#x02202;</mml:mo><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:mfrac><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mi>&#x003B6;</mml:mi><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x00394;</mml:mo><mml:msub><mml:mi>P</mml:mi><mml:mi>a</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x003C1;</mml:mi><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mi>&#x003C4;</mml:mi><mml:mi>B</mml:mi><mml:mi>&#x003B7;</mml:mi></mml:msubsup></mml:mrow><mml:mi>H</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mi>&#x003C4;</mml:mi><mml:mi>W</mml:mi><mml:mi>&#x003B7;</mml:mi></mml:msubsup></mml:mrow><mml:mi>H</mml:mi></mml:mfrac><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mn>1</mml:mn><mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:msup><mml:mo>&#x02202;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msup><mml:mi>&#x003BE;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>A</mml:mi><mml:mi>h</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msubsup><mml:mi>h</mml:mi><mml:mn>2</mml:mn><mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:mfrac><mml:mfrac><mml:mrow><mml:msup><mml:mo>&#x02202;</mml:mo><mml:mn>2</mml:mn></mml:msup><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msup><mml:mi>&#x003B7;</mml:mi><mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mfrac><mml:mtext>.</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here <italic>H</italic>(&#x003BE;, &#x003B7;, <italic>t</italic>) &#x0003D; <italic>h</italic>(&#x003BE;, &#x003B7;, <italic>t</italic>) &#x0002B; &#x003B6;(&#x003BE;, &#x003B7;, <italic>t</italic>) is the total water depth. The gravitational acceleration is denoted by <italic>g</italic>, &#x003C1; is the water density, &#x00394;<italic>P</italic><sub><italic>a</italic></sub> is the air pressure drop and <italic>f</italic> is the Coriolis parameter. The bottom shear stress is denoted by &#x003C4;<sub><italic>B</italic></sub> and the wind shear stress by &#x003C4;<sub><italic>W</italic></sub>. Closure for the bottom shear stress is obtained using a quadratic law:</p>
<disp-formula id="E10"><label>(8)</label><mml:math id="M10"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>B</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003BE;</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>H</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>&#x0039B;</mml:mo><mml:mi>u</mml:mi><mml:mtext class="textrm" mathvariant="normal">,</mml:mtext><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C4;</mml:mi></mml:mrow><mml:mrow><mml:mi>B</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x003B7;</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mi>H</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mo>&#x0039B;</mml:mo><mml:mi>v</mml:mi><mml:mtext class="textrm" mathvariant="normal">, with&#x000A0;</mml:mtext><mml:mo>&#x0039B;</mml:mo><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>&#x003C1;</mml:mi><mml:mi>n</mml:mi><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:msup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mn>4</mml:mn></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mrow></mml:mfrac><mml:msup><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup><mml:mo>&#x0002B;</mml:mo><mml:msup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow></mml:msup></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with <italic>n</italic> being Manning&#x00027;s coefficient. The wind shear is parametrized using the wind velocities from a wind forcing model coupled to the flow via a drag coefficient based on the Large and Pond (<xref ref-type="bibr" rid="B11">1981</xref>) or Garratt (<xref ref-type="bibr" rid="B7">1977</xref>) formulation; full details can be found in (Zhang et al., <xref ref-type="bibr" rid="B22">2012</xref>). Importantly, it is noted that, without explicit shock fitting of the type discussed in Pandolfi and Zannetti (<xref ref-type="bibr" rid="B15">1977</xref>), these equations are unsuitable for modeling flows that contain or develop discontinuities (shock waves). CEST is capable of using internal parametric wind models such as the Holland model (Holland, <xref ref-type="bibr" rid="B8">1980</xref>) or the Myers and Malkin (<xref ref-type="bibr" rid="B13">1961</xref>) that is employed by SLOSH. CEST is also capable of using external wind field time&#x02013;series generated by the Hurricane Research Division of the US National Oceanic and Atmospheric Administration (NOAA) based on field measurements (H*Wind) (Powell et al., <xref ref-type="bibr" rid="B16">1998</xref>). For Hurricane Irma simulation presented in this paper we use the Myers and Malkin (<xref ref-type="bibr" rid="B13">1961</xref>) parametric wind model which parameterizes the wind and atmospheric pressure fields using both the atmospheric pressure drop and radius of maximum wind speed (RMW). Pressure, wind speed, and wind direction are computed assuming a stationary, circularly symmetric, storm. The set up used here for Hurricane Irma is essentially the same as that described in Zhang et al. (<xref ref-type="bibr" rid="B23">2008</xref>).</p>
</sec>
<sec sec-type="methods" id="s3">
<title>3. Methods</title>
<p>The numerical solution is effected on a staggered, Arakawa C&#x02013;type, grid using finite differences. Elevation points are defined at the centers of grid cells, while the <italic>u</italic> and <italic>v</italic> velocity components are defined on their respective cell boundaries.</p>
<p>When values of dependent variables are required at non&#x02013;computation points they are obtained using piecewise linear reconstruction, i.e. <inline-formula><mml:math id="M11"><mml:msub><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. The model employs the method of fractional steps (Yanenko, <xref ref-type="bibr" rid="B20">1971</xref>) in order to march forward in time. This means that the overall temporal accuracy in CEST is <inline-formula><mml:math id="M12"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<sec>
<title>3.1. Modified Advection Algorithm</title>
<p>In its original incarnation CEST (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>, <xref ref-type="bibr" rid="B22">2012</xref>) handled advection via a straightforward, fully explicit, Eulerian finite difference scheme. This approach often leads to a prohibitive restriction on the size of the time&#x02013;step that the original CEST model can employ. This is because, for numerical stability, the time&#x02013;step used for the entire model must be chosen such that advection satisfies the well-known CFL condition (Courant et al., <xref ref-type="bibr" rid="B5">1967</xref>). Here, in the spirit of Casulli&#x00027;s original approach (Casulli, <xref ref-type="bibr" rid="B3">1990</xref>), we employ a semi&#x02013;Lagrangian (SL) methodology for the velocity advection. Importantly, however, we extend the approach to high&#x02013;order accuracy in both space and time by employing second&#x02013;order Runge Kutta time integration and monotonic cubic spline interpolation in space. In theory, this type of advection is unconditionally stable. When computing the velocity advection, we work purely on the computational (image) grid; working on the curvilinear (physical) grid adds complexity as scales vary arbitrarily between cells and grid curvature is not necessarily constant. In order to effect the interpolation, and limiting, the two&#x02013;dimensional processes are broken down into a sequence of one&#x02013;dimensional processes along each co&#x02013;ordinate axis. This is possible because the computational (image) grid is a regular Cartesian grid. Thus, without loss of generality, when discussing the base point interpolation we need only consider the 1D case. For the spatial interpolation we use Hermite cubic interpolation made monotone by use of the limiter proposed by Nair et al. (<xref ref-type="bibr" rid="B14">1999</xref>); from hereonin we shall refer to this as the NCS99 limiter. The NCS99 limiter is applied in each spatial dimensional in turn and works as follows: first find the local maximum and minimum surrounding the particle path base point <italic>x</italic><sub><italic>b</italic></sub></p>
<disp-formula id="E11"><label>(9)</label><mml:math id="M13"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002B;</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo class="qopname">max</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mo class="qopname">min</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Next, reset the interpolated value (obtained using Hermite cubic interpolation) at the base point <italic>f</italic>|<sub><italic>x</italic> &#x0003D;<sub><italic>x</italic></sub><sub><italic>b</italic></sub></sub> &#x0003D; <italic>f</italic><sub><italic>b</italic></sub> such that</p>
<disp-formula id="E12"><label>(10)</label><mml:math id="M14"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mtext class="textrm" mathvariant="normal">if</mml:mtext><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0003C;</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo></mml:mrow></mml:msup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002B;</mml:mo></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mtext class="textrm" mathvariant="normal">if</mml:mtext><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0003E;</mml:mo><mml:msup><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002B;</mml:mo></mml:mrow></mml:msup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Note that this amounts to a simple clamping operation and can lead to the suppression of certain genuine physical waves. For this reason the NCS99 limiter includes additional checks for monotonicity that must be satisfied before the limiter is applied. First NCS99 introduce the global minimum and global maximum of <italic>f</italic> denoted by <italic>f</italic><sub>min</sub> and <italic>f</italic><sub>max</sub>, respectively. Thus, if all of the following four inequalities hold the limiter should not be applied</p>
<disp-formula id="E13"><label>(11)</label><mml:math id="M15"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mtable style="text-align:axis;" equalrows="false" columnlines="none" equalcolumns="false" class="array"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">min</mml:mtext></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02264;</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mtext class="textrm" mathvariant="normal">max</mml:mtext></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0003E;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0003C;</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>3</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0003E;</mml:mo><mml:mn>0</mml:mn><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This stipulates that the signal contains only one extremum in a five&#x02013;mesh&#x02013;length interval (therefore suppressing the Gibbs phenomenon). We have found this limiter to be particularly robust when compared with alternative formulations such as that proposed in Fedkiw et al. (<xref ref-type="bibr" rid="B6">2001</xref>). <xref ref-type="fig" rid="F3">Figure 3</xref> shows a comparison of SL advection, using a variety of base point interpolation schemes, for the advection of a 1D function with compound waves in a uniform velocity field. The 1D function comprises a combined Gaussian, triangle and square wave. Results are plotted after 100 time&#x02013;steps for a grid comprising 500 points; clearly Hermite cubic interpolation with the NCS99 limiter gives the best performance in this complex case. Whilst this high&#x02013;order accurate advection scheme is monotone, it is unsuitable for flows that contain or develop discontinuities as it is not conservative. Moreover, CEST is only suitable for smooth flows as the governing equations are themselves not in a (divergence) form that permits discontinuities. Thus, unless explicit shock fitting is utilized (Moretti, <xref ref-type="bibr" rid="B12">2002</xref>), flow discontinuities cannot be expected to propagate at the correct strength or speed. We mention that, when using SL advection, in wet areas close to dry land, care should be taken to ensure that the particle path is not allowed to project too far back into an area that is completely dry. If this is allowed to happen then the velocity advection can cause a false zeroing of the velocity field in such cells. This issue can be avoided through the use of locally controlled time&#x02013;stepping.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Advection of a complex function in uniform velocity field. The results for <bold>(A)</bold> Linear interpolation, <bold>(B)</bold> Hermite cubic interpolation (no limiter), <bold>(C)</bold> Hermite cubic interpolation with Fedkiew et al. limiter, <bold>(D)</bold> Hermite cubic interpolation with NCS99 limiter, are shown for 500 grid points after 100 time steps. The analytical solution is the blue line and the numerical approximation is the red line.</p></caption>
<graphic xlink:href="fclim-03-609688-g0003.tif"/>
</fig>
</sec>
<sec>
<title>3.2. Additional Terms and Free Surface Evolution</title>
<p>The physical diffusion terms are treated using a simple forward&#x02013;in&#x02013;time centered&#x02013;in&#x02013;space (FTCS) scheme (Press et al., <xref ref-type="bibr" rid="B17">1992</xref>). We note that the use of a simple explicit scheme for diffusion introduces its own stability requirements; however, these are far less stringent than those associated with the advective terms. The Coriolis and wind stress terms are updated using first&#x02013;order explicit Euler time integration and the bottom friction term is treated implicitly in the manner detailed in Kelly et al. (<xref ref-type="bibr" rid="B9">2015</xref>). After the velocities have been updated using the method of fractional steps the free surface can be updated. The operator that updates both <italic>u</italic> and <italic>v</italic> by SL advection and explicit diffusion, evaluation of curvature terms, pressure drop, wind forcing and finally an implicit bed friction update is denoted by <inline-formula><mml:math id="M16"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:math></inline-formula>. Thus, we have</p>
<disp-formula id="E14"><label>(12)</label><mml:math id="M17"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>/</mml:mo><mml:mn>2</mml:mn></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Evolution of the free surface requires solution of Equation (5). This is achieved using an implicit scheme which results in the following 5&#x02013;diagonal linear system of equations:</p>
<disp-formula id="E15"><label>(13)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>&#x0002B;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>-</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where</p>
<disp-formula id="E16"><label>(14)</label><mml:math id="M19"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x00394;</mml:mo><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x000B7;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mo>&#x0039B;</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<disp-formula id="E17"><label>(15)</label><mml:math id="M20"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mi>g</mml:mi><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x00394;</mml:mo><mml:msup><mml:mrow><mml:mi>t</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x000B7;</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mo>&#x0039B;</mml:mo></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>and</p>
<disp-formula id="E18"><label>(16)</label><mml:math id="M21"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>z</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>A</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The right hand side of Equation (13) is given by</p>
<disp-formula id="E19"><label>(17)</label><mml:math id="M22"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>b</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msubsup><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy="true">(</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:msubsup><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow><mml:msubsup><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msub><mml:mo stretchy="true">)</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Finally, after the free surface has been updated, the final velocity update is performed using the pressure gradient. Use is made of the staggered grid to obtain second&#x02013;order accuracy for the spatial gradient of the free surface in this step.</p>
</sec>
<sec>
<title>3.3. Wetting/Drying Fronts</title>
<p>CEST employs a straightforward wetting&#x02013;drying algorithm that is based on an accumulated water volume (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>). Free surface elevation and water depth at both the cell center and its four boundaries are all used to calculate the accumulated water volume. At the beginning of a model timestep, cells are assigned as being either wet or dry based on whether the water depth at the cell center is above or below a threshold depth <italic>H</italic><sub><italic>TOL</italic></sub>. During wetting, if the free surface elevation at the center of a wet cell is higher than that at an adjacent dry cell, and the water depth at the shared boundary between these two cells <italic>H</italic><sub><italic>k</italic></sub> (obtained by linear interpolation) is greater than a predefined threshold, the water is allowed to flow from the wet cell into the dry cell and accumulate there. The flux of water crosses a maximum of four shared boundaries between a dry cell, and any wet neighbors. The water interchange velocities (<italic>u</italic><sub><italic>k</italic></sub>, where <italic>k</italic> &#x0003D; 1...4 represents the four cell boundaries) are approximated by solving a simplified 1D momentum equation which ignores the contribution of advection, Coriolis force, air pressure drop and wind shear giving</p>
<disp-formula id="E21"><label>(18)</label><mml:math id="M24"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mi>g</mml:mi><mml:mfrac><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>&#x003B6;</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>&#x02202;</mml:mi><mml:msub><mml:mrow><mml:mi>x</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mo>&#x0002B;</mml:mo><mml:mo>&#x0039B;</mml:mo><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>with <italic>x</italic><sub><italic>k</italic></sub> being the direction of <italic>u</italic><sub><italic>k</italic></sub> and &#x003B6;<sub><italic>k</italic></sub> is a linear reconstruction of the free surface elevation at the <italic>k</italic>th cell interface. The accumulated water volume &#x00394;<italic>Q</italic> in dry cells is computed as</p>
<disp-formula id="E22"><label>(19)</label><mml:math id="M25"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mo>&#x00394;</mml:mo><mml:msubsup><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msubsup><mml:mo>=</mml:mo><mml:mo>&#x00394;</mml:mo><mml:msubsup><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mo>&#x00394;</mml:mo></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mrow><mml:mi>H</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:msub><mml:mrow><mml:mi>u</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x000B7;</mml:mo><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M26"><mml:mo>&#x00394;</mml:mo><mml:msubsup><mml:mrow><mml:mi>Q</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>n</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is the accumulated volume from the previous time step and &#x00394;<sub><italic>k</italic></sub> denotes the cell length (which is &#x00394;&#x003BE; or &#x00394;&#x003B7; depending on the value of <italic>k</italic>). If the water depth, obtained from the accumulated volume, in a dry cell exceeds <italic>H</italic><sub><italic>TOL</italic></sub> the cell is reflagged as being wet. During drying a cell is set to be dry if the water depth at the cell center falls below <italic>H</italic><sub><italic>TOL</italic></sub>. Note that, if the water depth at a cell boundary is less than <italic>H</italic><sub><italic>TOL</italic></sub>, water will stop flowing across this boundary even before the cell itself is completely dry. Also, if it is the case that the linearly reconstructed water depths at all four boundaries of a cell are less than <italic>H</italic><sub><italic>TOL</italic></sub> then the cell is set to be dry. This simple algorithm conserves water mass, but not momentum. The approach has proven extremely robust in a huge number of storm surge simulations carried out at the IHRC over the last decade.</p>
</sec>
<sec>
<title>3.4. MPI Parallelization and Domain Decomposition</title>
<p>Parallelization of the CEST model is achieved using the Message Passing Interface (MPI) library, see: <ext-link ext-link-type="uri" xlink:href="https://www.open-mpi.org/">https://www.open-mpi.org/</ext-link>. To achieve parallelization a horizontal strip&#x02013;type domain decomposition on the computational (image) grid is employed. The computational domain is split into a number of horizontal strips and strips are allocated to each process on a single strip per process basis. Two layers of halo regions (ghost cells) is employed to transfer information between processes. It should be noted that no load balancing, or process optimization, is currently implemented.</p>
<p><xref ref-type="fig" rid="F4">Figure 4</xref> shows a schematic representation of the domain decomposition employed by CEST. Assuming a domain that runs from <monospace>y</monospace><sub><italic>min</italic></sub> to <monospace>y</monospace><sub><italic>max</italic></sub> and comprises <monospace>im</monospace> &#x000D7; <monospace>jm</monospace> cells, only <italic>J</italic> index is split to save on computational time and simplify the domain decomposition. In other words, the computational domain is split vertically among all available processes <monospace>np</monospace>, including the root process <monospace>p=0</monospace>, according to Algorithm 1. The horizontal direction, <italic>I</italic> index for each process keeps same.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Example of a CEST curvilinear computational grid (shown in physical space) and the strip&#x02013;type domain decomposition. The shaded strips show the ghost cells (GC) used for inter&#x02013;process communication. The plot shows the NOAA (NHC) basin used for simulations of hurricane such as Andrew (1992).</p></caption>
<graphic xlink:href="fclim-03-609688-g0004.tif"/>
</fig>
<p>Whilst the parallelization of the <inline-formula><mml:math id="M27"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">F</mml:mi></mml:mrow></mml:math></inline-formula> operator is straightforwards, solution of the implicit equation for the free surface (Equation 13) is not. To facilitate the paralellization of the code, and avoid the need for multicoloring, the pre&#x02013;conditioned conjugate gradient (PCCG) method employed to solve the continuity equation for the free surface (Equation 13) in CEST is replaced with simple Jacobi iteration. This allows for a straightforward parallelization of the implicit part of Casulli&#x00027;s algorithm. Whilst this approach leads to slower convergence this is more than offset by the ability to employ multiple processes (and the associated decrease in the linear system size that each process is required to solve).</p>
<table-wrap position="float">
<label>Algorithm 1</label>
<caption><p>Strip&#x02013;Type Domain Decomposition Used in Parallel CEST.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;1: &#x000A0;<bold>procedure</bold> S<sc>trip</sc>D<sc>ecomp</sc> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;2: &#x000A0;&#x000A0;&#x000A0; &#x003F5; &#x0003D; 1 &#x000D7;10<sup>&#x02212;4</sup> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;3: &#x000A0;&#x000A0;&#x000A0; <italic>dl</italic> &#x0003D; (2. &#x0002A; &#x003F5; &#x0002B; <italic>jm</italic> &#x02212; 1.)/<italic>dble</italic>(<italic>np</italic>) </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;4: &#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>p</italic> &#x0003D; 0, <italic>np</italic> <bold>do</bold> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;5: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>y</italic><sub><italic>min</italic></sub> &#x0003D; 1. &#x0002B; <italic>dble</italic>(<italic>p</italic>&#x0002A;<italic>dl</italic>) &#x02212; &#x003F5; </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;6: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>y</italic><sub><italic>max</italic></sub> &#x0003D; <italic>y</italic><sub><italic>min</italic></sub> &#x0002B; <italic>dl</italic> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;7: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>j</italic> &#x0003D; 1, <italic>jm</italic> <bold>do</bold> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;8: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>if</bold> <italic>y</italic><sub><italic>min</italic></sub> &#x02264; <italic>j &#x00026; j</italic> &#x0003C; <italic>y</italic><sub><italic>max</italic></sub> <bold>then</bold> </td></tr>
<tr><td align="left" valign="top"> &#x000A0;&#x000A0;9: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>proc</italic>[<italic>j</italic>] &#x0003D; <italic>p</italic> </td></tr>
<tr><td align="left" valign="top"> 10: &#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>p</italic> = 0, <italic>np</italic> <bold>do</bold> </td></tr>
<tr><td align="left" valign="top"> 11: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>j</italic> = 1, <italic>jm</italic> <bold>do</bold> </td></tr>
<tr><td align="left" valign="top"> 12: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>if</bold> <italic>proc</italic>[<italic>j</italic>] &#x0003D; <italic>p</italic> <bold>break</bold> </td></tr>
<tr><td align="left" valign="top"> 13: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>j</italic><italic><sub>min</sub></italic> [<italic>p</italic>] = <italic>j</italic>  </td></tr>
<tr><td align="left" valign="top"> 14: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>for</bold> <italic>j</italic> = <italic>jm</italic>, 1 <bold>do</bold></td> </tr>
<tr><td align="left" valign="top"> 15: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <bold>if</bold> <italic>proc</italic>[<italic>j</italic>] &#x0003D; <italic>p</italic> <bold>break</bold> </td></tr>
<tr><td align="left" valign="top"> 16: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0; <italic>j</italic><italic><sub>max</sub></italic> [<italic>p</italic>] = <italic>j</italic>  </td></tr>
</tbody>
</table>
</table-wrap>
</sec>
</sec>
<sec sec-type="results" id="s4">
<title>4. Results</title>
<p>For the verification purpose, a test case with 4-day simulation of Hurricane Irma (2017) is conducted. Following (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>) we consider both the storm surge and the tidal component. The simulation starts at 00:00 UTC on 8 September 2017 and ends at 00:00 UTC on 12 September, with a time step of 10 s. In what follows, the detailed setup of the simulation and the results are discussed.</p>
<sec>
<title>4.1. Model Domain</title>
<p><xref ref-type="fig" rid="F5">Figure 5</xref> shows the model domain and the measurement locations for Hurricane Irma (2017), including tide gauges from NOAA, High Water Marks (HWMs) from US Geological Survey (USGS), and river gauges from USGS. We employ a very high&#x02013;resolution curvilinear grid that comprises approximately 640,000 computational cells. The cell size at the open ocean area is approximately 1,470 &#x000D7; 1,470 m, which gradually reduces to 200 &#x000D7; 200 m at the shoreline areas and further smaller inland. It should be noted that, for display purposes, the grid lines are not shown in <xref ref-type="fig" rid="F5">Figure 5</xref>. All model boundaries that lie in water are specified as open; details of the boundary conditions can be found in the section below.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>The study area, computational domain, Irma track, and measurement locations.</p></caption>
<graphic xlink:href="fclim-03-609688-g0005.tif"/>
</fig>
</sec>
<sec>
<title>4.2. Topographic and Bathymetric Data and Calculation of Grid Cell Elevation</title>
<p>The bathymetric and topographic data are required for calculating the water depths and elevations of the grid cells in a model basin. The topographic data used in this study mainly come from USGS, and the bathymetric data come from NOAA. Water depths for grid cells at the open ocean were calculated based on the ETOPO1 global relief dataset from NOAA, which has a resolution of 1 arc minute ( 1.8 km). Water depths for grid cells in coastal areas were interpolated from the U.S. coastal relief dataset from NOAA with a resolution of 3 arc second ( 90 m) (<ext-link ext-link-type="uri" xlink:href="https://www.ngdc.noaa.gov/mgg/bathymetry/relief.html">https://www.ngdc.noaa.gov/mgg/bathymetry/relief.html</ext-link>). The USGS 90, 30, 10, and 3 m digital elevation models (DEM) were used to calculate the elevation of grid cells on the land (<ext-link ext-link-type="uri" xlink:href="http://viewer.nationalmap.gov/viewer/">http://viewer.nationalmap.gov/viewer/</ext-link>).</p>
</sec>
<sec>
<title>4.3. Boundary Conditions</title>
<p>At the open boundaries the model is forced using a nine&#x02013;component tide comprising the <italic>M</italic><sub>2</sub>, <italic>S</italic><sub>2</sub>, <italic>K</italic><sub>1</sub>, <italic>O</italic><sub>1</sub>, <italic>Q</italic><sub>1</sub>, <italic>K</italic><sub>2</sub>, <italic>N</italic><sub>2</sub>, <italic>M</italic><sub>4</sub>, and <italic>M</italic><sub>6</sub> components. These constituents were obtained from the ADvanced CIRCulation model (ADCIRC) Tidal Databases East Coast 2015 database of tidal constituents (Szpilka et al., <xref ref-type="bibr" rid="B18">2016</xref>). An inverse pressure adjustment is made to the water surface specification at the tidal boundaries. The inverse pressure approach partially accounts for the meteorological forcing at the boundary by imposing the inverted barometer effect (Blain et al., <xref ref-type="bibr" rid="B1">1994</xref>). Thus, the free surface at the open boundaries is modified by the amount <inline-formula><mml:math id="M28"><mml:mo>&#x00394;</mml:mo><mml:mi>&#x003B7;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:msubsup><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mi>t</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>&#x003C1;</mml:mi></mml:mrow><mml:mrow><mml:mi>w</mml:mi></mml:mrow></mml:msub><mml:mi>g</mml:mi></mml:mrow></mml:mfrac></mml:math></inline-formula> where <inline-formula><mml:math id="M29"><mml:msubsup><mml:mrow><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02032;</mml:mi></mml:mrow></mml:msubsup></mml:math></inline-formula> is an atmospheric pressure change and &#x003C1;<sub><italic>w</italic></sub> is the sea water density.</p>
</sec>
<sec>
<title>4.4. Bottom Friction Coefficient</title>
<p>A spatially varying value of Manning&#x00027;s <italic>n</italic> is employed. <xref ref-type="fig" rid="F6">Figure 6</xref> shows the spatial distribution of the Manning&#x00027;s coefficient used in this paper. This coefficient map was generated based on the national land cover dataset (NLCD) created by USGS in 2001, using the approach proposed in Zhang et al. (<xref ref-type="bibr" rid="B22">2012</xref>), where details can be found. Note that for the open ocean area, a constant coefficient <italic>n</italic> = 0.02 was employed.</p>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>The Manning&#x00027;s coefficient map for the entire computational domain.</p></caption>
<graphic xlink:href="fclim-03-609688-g0006.tif"/>
</fig>
</sec>
<sec>
<title>4.5. Comparison of Model Predictions and Observations</title>
<p><xref ref-type="fig" rid="F7">Figure 7</xref> shows a comparison for the data at the NOAA tide gauges (<xref ref-type="fig" rid="F5">Figure 5</xref>). The parallel CEST model in general captures the major trend of the tide and the storm surge induced by Irma (2017). At Naples, Fort Myers, and Mckay Bay Entrance, the surface elevations were relatively well predicted by CEST, while at Virginia Key, St Petersburg, and Old Port Tampa, CEST tends to underestimate the surface elevation variation.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Comparison between the computed and the measured surface elevations at the various NOAA tide gauges.</p></caption>
<graphic xlink:href="fclim-03-609688-g0007.tif"/>
</fig>
<p><xref ref-type="fig" rid="F8">Figure 8</xref> presents the comparison for the HWM data. The CEST predictions have a root mean square error (RMSE) of approximately 0.69 m against the observations. This error is contributed significantly by the underprediction of the HWMs at Florida Keys and the South Florida mangrove zones (where the USGS gauges were marked, see <xref ref-type="fig" rid="F5">Figure 5</xref>). A reason for this underprediction may be that these areas are close to the domain boundary, hence there is a limited fetch for wind to push water in.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Comparison between the computed and the measured HWMs at the various USGS stations. The green dashed lines represent the perfect simulation&#x000D7;(100 &#x000B1; 20%). Note that only those measurement stations inundated by the simulated storm surge were used.</p></caption>
<graphic xlink:href="fclim-03-609688-g0008.tif"/>
</fig>
<p><xref ref-type="fig" rid="F9">Figure 9</xref> presents the computed maximum storm surge height across the entire computational domain. It can be seen that the most severe storm surge inundation occurs at the right hand side of the track near the landfall location, where the area is known as the South Florida mangrove zone. The computed maximum storm surge height is over 3 m, but the overall inundation is kept within the mangrove zone due to the resistance of mangrove trees (Zhang et al., <xref ref-type="bibr" rid="B22">2012</xref>). <xref ref-type="fig" rid="F10">Figure 10</xref> further shows the computed maximum storm surge profile along the four profiles depicted in <xref ref-type="fig" rid="F9">Figure 9b</xref>. The maximum storm surge height gradually reduces as it moves inland. The inundation extents are roughly around 10 km at Profiles 1 and 2, and approximately half of that at Profiles 3 and 4. It should be mentioned however that storm surge could move further upland in the rivers as seen in <xref ref-type="fig" rid="F9">Figure 9b</xref>. The overall maximum surge pattern is comparable with ADCIRC model results (Kowaleski et al., <xref ref-type="bibr" rid="B10">2020</xref>).</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>The computed maximum storm surge height in spatial distribution: <bold>(a)</bold> the entire domain, and <bold>(b)</bold> a zoomed-in domain centered at the South Florida mangrove zone. The data are referenced to the NAVD88 vertical datum. The locations of the four profiles for <xref ref-type="fig" rid="F10">Figure 10</xref> are also displayed.</p></caption>
<graphic xlink:href="fclim-03-609688-g0009.tif"/>
</fig>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p>The computed maximum storm surge profiles along the four profile lines depicted in <xref ref-type="fig" rid="F9">Figure 9</xref>. The data are referenced to the NAVD88 vertical datum.</p></caption>
<graphic xlink:href="fclim-03-609688-g0010.tif"/>
</fig>
</sec>
<sec>
<title>4.6. Computational Cost and Parallel Efficiency</title>
<p>The parallel performance of CEST on the 4-day simulation of Hurricane Irma (2017) was examined using the parallel efficiency (<italic>E</italic><sub><italic>p</italic></sub>) and speedup (<italic>S</italic><sub><italic>p</italic></sub>) coefficients. The coefficients are defined following Chen et al. (<xref ref-type="bibr" rid="B4">2018</xref>):</p>
<disp-formula id="E23"><label>(20)</label><mml:math id="M30"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>T</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac><mml:mtext class="textrm" mathvariant="normal">&#x000A0;and&#x000A0;</mml:mtext><mml:msub><mml:mrow><mml:mi>E</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:mfrac><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>T</italic><sub>1</sub> and <italic>T</italic><sub><italic>p</italic></sub> are the total CPU time when using 1 and <italic>p</italic> processors. The simulation presented in this paper were run on a 32-core i7 CPU (3.7GHz) workstation. <italic>T</italic><sub>1</sub> is approximately 150 min. The parallel efficiency and the speedup coefficients are plotted in <xref ref-type="fig" rid="F11">Figure 11</xref>. As can be seen, the parallel CEST model achieves linear and even super-linear speedup when the number of processors used are small (&#x02264; 4). When the number of processors increases the speedup increases but also becomes flattened and the parallel efficiency drops linearly. Despite that 4 processors appear to be the optimal number for the current simulation in terms of parallel efficiency, as many as 10 processors can be used to reduce the total CPU time of simulation as a priority. In the current case, <italic>T</italic><sub>10</sub> is approximately 22 min.</p>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p>The parallel efficiency and speedup of CEST at different number of processors for the simulation of Hurricane Irma (2017). The dashed line represents the linear speedup and is plotted for comparison purpose.</p></caption>
<graphic xlink:href="fclim-03-609688-g0011.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="discussion" id="s5">
<title>5. Discussion</title>
<p>This paper describes the parallelization of the IHRC&#x02013;CEST model using the Message Passing Interface (MPI) library. The MPI parallelization approach allows the CEST model to be run optimally on a wide variety of computer architectures ranging from multi&#x02013;core desktops to massively parallel supercomputers. Moreover, in the parallel CEST model simple Eulerian advection is replaced with high&#x02013;order, monotonic semi&#x02013;Lagrangian (SL) advection scheme. The high&#x02013;order SL advection enables to use a larger model time&#x02013;step,while maintaining numerical stability. The purpose of parallelizing the CEST model, and improving the advection efficiency, is to enable finer resolution ensemble forecasts to be undertaken at the IHRC on multi&#x02013;core desktop machines. This allows for the most detailed bathymetric data available to be employed in forecast&#x02013;mode surge simulations and thus facilitates the best possible representation of coastal topography. The use of finer computational grids for storm surge is known to improve predictions of the magnitudes and extent of storm surge flooding (Zhang et al., <xref ref-type="bibr" rid="B23">2008</xref>). Results presented in this paper show that the wall clock time can be dramatically reduced through the use of a multicore desktop.</p>
</sec>
<sec sec-type="data-availability-statement" id="s6">
<title>Data Availability Statement</title>
<p>The raw data supporting the conclusions of this article will be made available by the authors, without undue reservation.</p>
</sec>
<sec id="s7">
<title>Author Contributions</title>
<p>YL: conceptualization, methodology, validation, investigation, writing the original draft, visualization, and data curation. QC: software, validation, writing the review, editing, and data curation. DK: conceptualization, methodology, software, validation, investigation, and writing the original draft. KZ: supervision, conceptualization, and writing the review and editing. All authors contributed to the article and approved the submitted version.</p>
</sec>
<sec sec-type="COI-statement" id="conf1">
<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="s8">
<title>Publisher&#x00027;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> </body>
<back>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Blain</surname> <given-names>C. A.</given-names></name> <name><surname>Westerink</surname> <given-names>J. J.</given-names></name> <name><surname>Luettich</surname> <given-names>R. A.</given-names></name></person-group> (<year>1994</year>). <article-title>The influence of domain size on the response characteristics of a hurricane storm surge model</article-title>. <source>J. Geophys. Res. Oceans</source> <volume>99</volume>, <fpage>18467</fpage>&#x02013;<lpage>18479</lpage>. <pub-id pub-id-type="doi">10.1029/94JC01348</pub-id></citation></ref>
<ref id="B2">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Blumberg</surname> <given-names>A. F.</given-names></name> <name><surname>Herring</surname> <given-names>H. J.</given-names></name></person-group> (<year>1987</year>). <article-title>Circulation modeling using orthogonal curvilinear coordinates</article-title>, in <source>Three Dimensional Models of Marine and Estuarine Dynamics. Elsevier Oceanography Series</source>, eds J. Nihoul and B. Jamart, vol. 45 (<publisher-loc>Elsevier Science, Amsterdam</publisher-loc>), <fpage>55</fpage>&#x02013;<lpage>88</lpage>.</citation></ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Casulli</surname> <given-names>V.</given-names></name></person-group> (<year>1990</year>). <article-title>Semi-implicit finite difference methods for the two-dimensional shallow water equations</article-title>. <source>J. Comput. Phys</source>. <volume>86</volume>, <fpage>56</fpage>&#x02013;<lpage>74</lpage>. <pub-id pub-id-type="doi">10.1016/0021-9991(90)90091-E</pub-id></citation></ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname> <given-names>Q.</given-names></name> <name><surname>Zang</surname> <given-names>J.</given-names></name> <name><surname>Kelly</surname> <given-names>D. M.</given-names></name> <name><surname>Dimakopoulos</surname> <given-names>A. S.</given-names></name></person-group> (<year>2018</year>). <article-title>A 3D parallel Particle-In-Cell solver for wave interaction with vertical cylinders</article-title>. <source>Ocean Eng</source>. <volume>147</volume>, <fpage>165</fpage>&#x02013;<lpage>180</lpage>. <pub-id pub-id-type="doi">10.1016/j.oceaneng.2017.10.023</pub-id></citation></ref>
<ref id="B5">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Courant</surname> <given-names>R.</given-names></name> <name><surname>Friedrichs</surname> <given-names>K.</given-names></name> <name><surname>Lewy</surname> <given-names>H.</given-names></name></person-group> (<year>1967</year>). <article-title>On the partial difference equations of mathematical physics</article-title>. <source>IBM J. Res. Dev</source>. <volume>11</volume>, <fpage>215</fpage>&#x02013;<lpage>234</lpage>. <pub-id pub-id-type="doi">10.1147/rd.112.0215</pub-id></citation></ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Fedkiw</surname> <given-names>R.</given-names></name> <name><surname>Stam</surname> <given-names>J.</given-names></name> <name><surname>Jensen</surname> <given-names>H.</given-names></name></person-group> (<year>2001</year>). <article-title>Visual simulation of smoke</article-title>. <source>SIGGRAPH</source> <volume>28</volume>, <fpage>15</fpage>&#x02013;<lpage>22</lpage>. <pub-id pub-id-type="doi">10.1145/383259.383260</pub-id></citation></ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Garratt</surname> <given-names>J. R.</given-names></name></person-group> (<year>1977</year>). <article-title>Review of drag coefficients over oceans and continents</article-title>. <source>Month. Weather Rev</source>. <volume>105</volume>, <fpage>915</fpage>&#x02013;<lpage>929</lpage>. <pub-id pub-id-type="doi">10.1175/1520-0493(1977)105andlt;0915:RODCOOandgt;2.0.CO;2</pub-id></citation></ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Holland</surname> <given-names>G. J.</given-names></name></person-group> (<year>1980</year>). <article-title>An analytic model of the wind and pressure profiles in hurricanes</article-title>. <source>Month. Weather Rev</source>. <volume>108</volume>, <fpage>1212</fpage>&#x02013;<lpage>1218</lpage>. <pub-id pub-id-type="doi">10.1175/1520-0493(1980)108andlt;1212:AAMOTWandgt;2.0.CO;2</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kelly</surname> <given-names>D. M.</given-names></name> <name><surname>Teng</surname> <given-names>Y.-C.</given-names></name> <name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Zhang</surname> <given-names>K.</given-names></name></person-group> (<year>2015</year>). <article-title>A numerical model for storm surges that involve the inundation of complex landscapes</article-title>. <source>Coast. Eng. J</source>. <volume>57</volume>, <fpage>1</fpage>&#x02013;<lpage>30</lpage>. <pub-id pub-id-type="doi">10.1142/S0578563415500175</pub-id></citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kowaleski</surname> <given-names>A. M.</given-names></name> <name><surname>Morss</surname> <given-names>R. E.</given-names></name> <name><surname>Ahijevych</surname> <given-names>D.</given-names></name> <name><surname>Fossell</surname> <given-names>K. R.</given-names></name></person-group> (<year>2020</year>). <article-title>Using a WRF-ADCIRC ensemble and track clustering to investigate storm surge hazards and inundation scenarios associated with Hurricane Irma</article-title>. <source>Weather Forecast</source>. <volume>35</volume>, <fpage>1289</fpage>&#x02013;<lpage>1315</lpage>. <pub-id pub-id-type="doi">10.1175/WAF-D-19-0169.1</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Large</surname> <given-names>W. G.</given-names></name> <name><surname>Pond</surname> <given-names>S.</given-names></name></person-group> (<year>1981</year>). <article-title>Open ocean momentum flux measurements in moderate to strong winds</article-title>. <source>J. Phys. Oceanogr</source>. <volume>11</volume>, <fpage>324</fpage>&#x02013;<lpage>336</lpage>. <pub-id pub-id-type="doi">10.1175/1520-0485(1981)011andlt;0324:OOMFMIandgt;2.0.CO;2</pub-id></citation></ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moretti</surname> <given-names>G.</given-names></name></person-group> (<year>2002</year>). <article-title>Thirty-six years of shock fitting</article-title>. <source>Comput. Fluids</source> <volume>31</volume>:<fpage>719</fpage>&#x02013;<lpage>723</lpage>. <pub-id pub-id-type="doi">10.1016/S0045-7930(01)00072-X</pub-id></citation></ref>
<ref id="B13">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Myers</surname> <given-names>V.</given-names></name> <name><surname>Malkin</surname> <given-names>W.</given-names></name></person-group> (<year>1961</year>). <source>Some Properties of Hurricane Wind Fields as Deduced From Trajectories</source>. Technical Report National Hurricane Research Project No. 49, <publisher-loc>Weather Bureau, US Department of Commerce, Washington, DC</publisher-loc>.</citation></ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nair</surname> <given-names>R.</given-names></name> <name><surname>C&#x000F4;t&#x000E9;</surname> <given-names>J.</given-names></name> <name><surname>Staniforth</surname> <given-names>A.</given-names></name></person-group> (<year>1999</year>). <article-title>Monotonic cascade interpolation for semi-Lagrangian advection</article-title>. <source>Q. J. R. Meteorol. Soc</source>. <volume>125</volume>, <fpage>197</fpage>&#x02013;<lpage>212</lpage>. <pub-id pub-id-type="doi">10.1002/qj.49712555311</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Pandolfi</surname> <given-names>M.</given-names></name> <name><surname>Zannetti</surname> <given-names>L.</given-names></name></person-group> (<year>1977</year>). <article-title>Numerical investigations about the predictions of free surface shallow water motions</article-title>, in <source>Proceedings 6th Australasian Hydraulics and Fluid Mechanics Conference</source> (<publisher-loc>Adelaide, SA</publisher-loc>), <fpage>364</fpage>&#x02013;<lpage>368</lpage>.</citation></ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Powell</surname> <given-names>M. D.</given-names></name> <name><surname>Houston</surname> <given-names>S. H.</given-names></name> <name><surname>Amat</surname> <given-names>L. R.</given-names></name> <name><surname>Morisseau-Leroy</surname> <given-names>N.</given-names></name></person-group> (<year>1998</year>). <article-title>The HRD real-time hurricane wind analysis system</article-title>. <source>J. Wind Eng. Indust. Aerodyn</source>. 77&#x02013;<volume>78</volume>:<fpage>53</fpage>&#x02013;<lpage>64</lpage>. <pub-id pub-id-type="doi">10.1016/S0167-6105(98)00131-7</pub-id></citation></ref>
<ref id="B17">
<citation citation-type="book"><person-group person-group-type="author"><collab>Press W. Flannery B. Teukolsky S. Vetterling W.</collab></person-group> (<year>1992</year>). <source>Numerical Recipes: The Art of Scientific Computing, 2nd Edn</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</citation></ref>
<ref id="B18">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Szpilka</surname> <given-names>C.</given-names></name> <name><surname>Dresback</surname> <given-names>K.</given-names></name> <name><surname>Kolar</surname> <given-names>R.</given-names></name> <name><surname>Feyen</surname> <given-names>J.</given-names></name> <name><surname>Wang</surname> <given-names>J.</given-names></name></person-group> (<year>2016</year>). <article-title>Improvements for the Western North Atlantic, Caribbean and Gulf of Mexico ADCIRC Tidal Database (EC2015)</article-title>. <source>J. Mar. Sci. Eng</source>. 4, 72. <pub-id pub-id-type="doi">10.3390/jmse4040072</pub-id></citation></ref>
<ref id="B19">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Taylor</surname> <given-names>A.</given-names></name> <name><surname>Glahn</surname> <given-names>B.</given-names></name></person-group> (<year>2008</year>). <article-title>Probabilistic Guidance for Hurricane Storm Surge</article-title>, in <source>Preprints, 19th Conference on Probability and Statistics, 88th Amer. Meteor. Soc. Annual Meeting</source> (<publisher-loc>New Orleans, LA</publisher-loc>), <fpage>8</fpage>.</citation></ref>
<ref id="B20">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Yanenko</surname> <given-names>N. N.</given-names></name></person-group> (<year>1971</year>). <source>The Method of Fractional Steps: The Solution of Problems of Mathematical Physics in Several Variables</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>.</citation></ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>K.</given-names></name> <name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Rhome</surname> <given-names>J.</given-names></name> <name><surname>Forbes</surname> <given-names>C.</given-names></name></person-group> (<year>2013</year>). <article-title>Transition of the coastal and estuarine storm tide model to an operational storm surge forecast model: a case study of the Florida coast</article-title>. <source>Weather Forecast</source>. <volume>28</volume>, <fpage>1019</fpage>&#x02013;<lpage>1037</lpage>. <pub-id pub-id-type="doi">10.1175/WAF-D-12-00076.1</pub-id></citation></ref>
<ref id="B22">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>K.</given-names></name> <name><surname>Liu</surname> <given-names>H.</given-names></name> <name><surname>Li</surname> <given-names>Y.</given-names></name> <name><surname>Xu</surname> <given-names>H.</given-names></name> <name><surname>Shen</surname> <given-names>J.</given-names></name> <name><surname>Rhome</surname> <given-names>J.</given-names></name> <etal/></person-group>. (<year>2012</year>). <article-title>The role of mangroves in attenuating storm surges</article-title>. <source>Estuarine Coast. Shelf Sci</source>. 102&#x02013;<volume>103</volume>, <fpage>11</fpage>&#x02013;<lpage>23</lpage>. <pub-id pub-id-type="doi">10.1016/j.ecss.2012.02.021</pub-id></citation></ref>
<ref id="B23">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>K.</given-names></name> <name><surname>Xiao</surname> <given-names>C.</given-names></name> <name><surname>Shen</surname> <given-names>J.</given-names></name></person-group> (<year>2008</year>). <article-title>Comparison of the CEST and SLOSH models for storm surge flooding</article-title>. <source>J. Coast. Res</source>. <volume>24</volume>, <fpage>489</fpage>&#x02013;<lpage>499</lpage>. <pub-id pub-id-type="doi">10.2112/06-0709.1</pub-id></citation></ref>
</ref-list>
<fn-group>
<fn fn-type="financial-disclosure"><p><bold>Funding.</bold> This work was supported, in main, by Florida Public Hurricane Loss Model (FPHLM) project at International Hurricane Research Center of Florida International University.</p>
</fn>
</fn-group>
</back>
</article> 