<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing with OASIS Tables v3.0 20080202//EN" "https://jats.nlm.nih.gov/nlm-dtd/publishing/3.0/journalpub-oasis3.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:oasis="http://docs.oasis-open.org/ns/oasis-exchange/table" xml:lang="en" dtd-version="3.0" article-type="research-article">
  <front>
    <journal-meta><journal-id journal-id-type="publisher">GMD</journal-id><journal-title-group>
    <journal-title>Geoscientific Model Development</journal-title>
    <abbrev-journal-title abbrev-type="publisher">GMD</abbrev-journal-title><abbrev-journal-title abbrev-type="nlm-ta">Geosci. Model Dev.</abbrev-journal-title>
  </journal-title-group><issn pub-type="epub">1991-9603</issn><publisher>
    <publisher-name>Copernicus Publications</publisher-name>
    <publisher-loc>Göttingen, Germany</publisher-loc>
  </publisher></journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.5194/gmd-18-9605-2025</article-id><title-group><article-title>PortUrb: a performance portable, high-order, moist  atmospheric large eddy simulation model with  variable-friction immersed boundaries</article-title><alt-title>PortUrb: LES with immersed boundaries</alt-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author" corresp="yes" rid="aff1">
          <name><surname>Norman</surname><given-names>Matthew</given-names></name>
          <email>normanmr@ornl.gov</email>
        <ext-link>https://orcid.org/0000-0003-4764-3348</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Gopalakrishnan Meena</surname><given-names>Muralikrishnan</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-4048-4639</ext-link></contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Gottiparthi</surname><given-names>Kalyan</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Koukpaizan</surname><given-names>Nicholson</given-names></name>
          
        </contrib>
        <contrib contrib-type="author" corresp="no" rid="aff1">
          <name><surname>Nichols</surname><given-names>Stephen</given-names></name>
          
        <ext-link>https://orcid.org/0000-0003-3484-2735</ext-link></contrib>
        <aff id="aff1"><label>1</label><institution>Oak Ridge National Laboratory, 1 Bethel Valley Road, Oak Ridge, TN 37830, USA</institution>
        </aff>
      </contrib-group>
      <author-notes><corresp id="corr1">Matthew Norman (normanmr@ornl.gov)</corresp></author-notes><pub-date><day>4</day><month>December</month><year>2025</year></pub-date>
      
      <volume>18</volume>
      <issue>23</issue>
      <fpage>9605</fpage><lpage>9631</lpage>
      <history>
        <date date-type="received"><day>10</day><month>March</month><year>2025</year></date>
           <date date-type="rev-request"><day>31</day><month>March</month><year>2025</year></date>
           <date date-type="rev-recd"><day>22</day><month>October</month><year>2025</year></date>
           <date date-type="accepted"><day>17</day><month>November</month><year>2025</year></date>
      </history>
      <permissions>
        <copyright-statement>Copyright: © 2025 Matthew Norman et al.</copyright-statement>
        <copyright-year>2025</copyright-year>
      <license license-type="open-access"><license-p>This work is licensed under the Creative Commons Attribution 4.0 International License. To view a copy of this licence, visit <ext-link ext-link-type="uri" xlink:href="https://creativecommons.org/licenses/by/4.0/">https://creativecommons.org/licenses/by/4.0/</ext-link></license-p></license></permissions><self-uri xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025.html">This article is available from https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025.html</self-uri><self-uri xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025.pdf">The full text article is available as a PDF file from https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025.pdf</self-uri>
      <abstract><title>Abstract</title>

      <p id="d2e119">This paper introduces “portUrb”: a moist, compressible, non-hydrostatic atmospheric Large Eddy Simulation model that aims for portability, performance, accuracy, simplicity, readability, robustness, extensibility, and ensemble capabilities. Additionally, there is an emphasis on free-slip immersed boundaries with surface friction to account for urban building geometries. Coded in portable C<inline-formula><mml:math id="M1" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> with high-order Weighted Essentially Non-Oscillatory (WENO) numerics, this study investigates the behavior of portUrb under atmospheric boundary layer, supercell, and urban scenarios. PortUrb matches experimental observations and model comparisons closely under several test cases in mean and turbulent statistics. It also provides physically realizable flow through complex building geometries from a portion of Manhattan without needing to pre-process or smooth the building geometry.</p>
  </abstract>
    
<funding-group>
<award-group id="gs1">
<funding-source>Advanced Scientific Computing Research</funding-source>
<award-id>DE-AC05-00OR22725</award-id>
</award-group>
</funding-group>
</article-meta>
  <notes notes-type="copyrightstatement">
  
      <p id="d2e139">This manuscript has been authored by UT-Battelle, LLC, under contract DE-AC05-00OR22725 with the US Department of Energy (DOE). The US government retains and the publisher, by accepting the article for publication, acknowledges that the US government retains a nonexclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this manuscript, or allow others to do so, for US government purposes. DOE will provide public access to these results of federally sponsored research in accordance with the DOE Public Access Plan (<uri>http://energy.gov/downloads/doe-public-access-plan</uri>, last access: 1 December 2025).</p>
</notes></front>
<body>
      


<sec id="Ch1.S1" sec-type="intro">
  <label>1</label><title>Introduction</title>
      <p id="d2e153">Large Eddy Simulation (LES) has been an effective tool in simulating turbulent flows in complex scenarios for decades <xref ref-type="bibr" rid="bib1.bibx32 bib1.bibx24 bib1.bibx62" id="paren.1"/>. This study focuses on what would, atmospherically speaking, often be called “microscale” flow <xref ref-type="bibr" rid="bib1.bibx29 bib1.bibx71" id="paren.2"/>, resolving grid spacings in the range <inline-formula><mml:math id="M2" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> meters. This resolution is important for understanding very fine-scaled boundary layer flows with applications to wind energy <xref ref-type="bibr" rid="bib1.bibx33" id="paren.3"/>, urban flow <xref ref-type="bibr" rid="bib1.bibx25 bib1.bibx69" id="paren.4"/>, and vegetation canopy flows <xref ref-type="bibr" rid="bib1.bibx56 bib1.bibx12" id="paren.5"/> among other potential applications. It is a challenging scale to simulate due to the coupled effects of large-scale forcing such as incoming weather patterns as well as extremely small-scale forcing such as plant morphology and surface and building material roughness with complex geometries.</p>
      <p id="d2e186">There are a number of effective models in this type of regime in literature including the Weather Research and Forecasting (WRF) model's LES configuration <xref ref-type="bibr" rid="bib1.bibx60" id="paren.6"/>, the Parallelized Large-Eddy Simulation Model (PALM) <xref ref-type="bibr" rid="bib1.bibx31" id="paren.7"/>, the Dutch Atmospheric Large-Eddy Simulation (DALES) <xref ref-type="bibr" rid="bib1.bibx18" id="paren.8"/>, the System for Atmospheric Modeling (SAM) <xref ref-type="bibr" rid="bib1.bibx22 bib1.bibx30" id="paren.9"/>, the Cloud Model 1 (CM1) <xref ref-type="bibr" rid="bib1.bibx5" id="paren.10"/>, the Regional Atmospheric Modeling System (RAMS) <xref ref-type="bibr" rid="bib1.bibx9" id="paren.11"/>, The UCLA LES model <xref ref-type="bibr" rid="bib1.bibx61" id="paren.12"/>, the Advanced Regional Prediction System (ARPS) <xref ref-type="bibr" rid="bib1.bibx10" id="paren.13"/>, the Eulerian-Lagrangian (EULAG) model <xref ref-type="bibr" rid="bib1.bibx54" id="paren.14"/>, the MicroHH model <xref ref-type="bibr" rid="bib1.bibx65" id="paren.15"/>, the PyCLES model <xref ref-type="bibr" rid="bib1.bibx53" id="paren.16"/>, the Simulator fOr Wind Farm Applications (SOWFA) <xref ref-type="bibr" rid="bib1.bibx15" id="paren.17"/>, the FastEddy model <xref ref-type="bibr" rid="bib1.bibx55 bib1.bibx37 bib1.bibx38" id="paren.18"/>, OpenFOAM <xref ref-type="bibr" rid="bib1.bibx19" id="paren.19"/>, the UK Met Office NERC Cloud (MONC) model <xref ref-type="bibr" rid="bib1.bibx4" id="paren.20"/>, and the Energy Research and Forecasting (ERF) model <xref ref-type="bibr" rid="bib1.bibx1" id="paren.21"/>.</p>
      <p id="d2e239">Existing models cover a wide range of capabilities and applications including wildfires, urban flow, canopy flow, complex terrain flow, shallow and deep convection, complex boundary layers, windfarms, and pollutant dispersion. They cover a lot of different formulations including Eulerian and Lagrangian formulations, different thermodynamic formulations, moisture inclusion approaches, acoustic representations, immersed boundary approaches, numerical discretizations, gridding and variable staggering practices, and turbulent mixing approaches. There are also many different coding practices represented. Languages include Fortran, C<inline-formula><mml:math id="M3" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula>, and Python. Some are CPU-threaded with directives <xref ref-type="bibr" rid="bib1.bibx3" id="paren.22"/>. Some are accelerated for use on Graphics Processing Units (GPUs) with CUDA <xref ref-type="bibr" rid="bib1.bibx8" id="paren.23"/>, directives <xref ref-type="bibr" rid="bib1.bibx7 bib1.bibx3" id="paren.24"/>, or C<inline-formula><mml:math id="M4" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> portability layers <xref ref-type="bibr" rid="bib1.bibx64 bib1.bibx42 bib1.bibx72" id="paren.25"/>. Each comes with custom extensions such as advanced microphysics or radiation schemes and various parameterizations for added applications (wind turbines, urban roughness, fire, aerosol chemistry, etc.).</p>
      <p id="d2e275">The goal of this study is to introduce and investigate the properties of a very high-order-accurate moist atmospheric LES model. The model was implemented with an emphasis on simplicity, readability, portability, and extensibility. The desire is to create a model that: (1) runs portably and efficiently (in all parts of the code) on CPUs and accelerators such as GPUs in a manner extensible to future hardware by using the Kokkos C<inline-formula><mml:math id="M5" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> portability library; (2) emphasizes readability in all portions of the code for clarity and reliability (clear looping, clear array indexing, clear operations, etc.); (3) has a simple and unambiguous coupler state that is easily augmented with new modules; (4) has embedded boundaries that are simple, resilient, and able to impose roughness on tangential flow; (5) runs stably for any configuration; and (6) has an easy to use ensemble capability to enable running many different configurations simultaneously in a single executable. With these features in mind, the ultimate goal of this code is to create a rapid prototyping environment for creating surrogate models of different microscale atmospheric processes. The simplicity, portable GPU acceleration, and ensemble capabilities enable rapid prototyping. The additive representation of complex physics through modular processes (all tied to the coupler state) enables enough realism to create physically meaningful surrogate models.</p>
      <p id="d2e289">The pathway to producing the model investigated in this study, called “portUrb” (Portable Urban model), is mainly two-fold. First, a series of numerical discretization studies <xref ref-type="bibr" rid="bib1.bibx49 bib1.bibx45 bib1.bibx41 bib1.bibx47 bib1.bibx50" id="paren.26"/> has led to the current choice of discretization: a collocated, upwind (Riemann solver-based), high-order-accurate Finite-Volume method using Weighted Essentially Non-Oscillatory (WENO) limiting <xref ref-type="bibr" rid="bib1.bibx28 bib1.bibx14" id="paren.27"/> and a Strong Stability Preserving Runge–Kutta (SSPRK) discretization in time <xref ref-type="bibr" rid="bib1.bibx17" id="paren.28"/>. Also, progressive additions to a mini-application called “miniWeather” <xref ref-type="bibr" rid="bib1.bibx46" id="paren.29"><named-content content-type="post"><uri>https://github.com/mrnorman/miniWeather</uri>, last access: 1 December 2025</named-content></xref> intended for hands-on education in High Performance Computing (HPC) programming has eventually led to portUrb, which provides realistic simulations while retaining much of the simplicity.</p>
      <p id="d2e308">We wish to summarize the motivations for numerical discretizations chosen in this study. In doing so, we want to emphasize that discretizations form a very complex landscape with many tradeoffs, and we do not necessarily cast this study's choices as superior in any objective way. The use of a collocated grid simplifies the grid indexing and code layout, but it also introduces instabilities that would otherwise be ameliorated by different grid staggering choices. Therefore, upwind fluxes are used at cell edges in order to introduce dissipation that naturally scales with the accuracy of the reconstructions <xref ref-type="bibr" rid="bib1.bibx50" id="paren.30"/>. It was found in <xref ref-type="bibr" rid="bib1.bibx50" id="text.31"/> that this can be performed in an inexpensive manner by separating acoustic and advective concerns in the upwind calculations. WENO limiting, while certainly expensive, has an advantage on GPUs in the sense that the extra computations required are largely performed on-chip with memory that has already been fetched from Dynamic Random Access Memory (DRAM), reducing the relative cost on GPUs. It also reduces oscillations near immersed boundaries and sharp hydrometeor fronts in moist convective simulations.</p>
      <p id="d2e317">While fully-discrete Arbitrary DERivatives in space and time (ADER) time discretizations using Differential Transforms (DTs) have been investigated in the past <xref ref-type="bibr" rid="bib1.bibx48 bib1.bibx41 bib1.bibx43" id="paren.32"/>, this particular approach to ADER discretization is most economically applied in a fully dimensionally split manner. It has been found through experimentation that less dissipative results are obtained by using multi-stage integrators with dimensional splitting inside each stage. Therefore, a Runge-Kutta method is used here: specifically a SSPRK method that maintains the non-oscillatory properties of the underlying spatial operator. Finally, high-order reconstruction is desired for the same reason that WENO limiting is desired. On GPUs, the extra computational cost is ameliorated by the significant compute throughput of GPU devices, and most of the computations are performed on data that is already on-chip. While it increases overall runtime, it does so significantly less than the factor by which computations are increased.</p>
      <p id="d2e323">The present paper focuses on evaluating model behavior in test cases. The mathematical formulation and numerical discretizations are provided in Sect. <xref ref-type="sec" rid="Ch1.S2"/>; numerical experiments are described, performed, and discussed in Sect. <xref ref-type="sec" rid="Ch1.S3"/>; and conclusions are drawn with a discussion of future work in Sect. <xref ref-type="sec" rid="Ch1.S4"/>. The code used for this study is available in the Supplement.</p>
</sec>
<sec id="Ch1.S2">
  <label>2</label><title>Mathematical Formulation and Numerical Discretization</title>
<sec id="Ch1.S2.SS1">
  <label>2.1</label><title>Moist, Compressible Large Eddy Simulation Equations</title>
      <p id="d2e347">The atmospheric Large Eddy Simulation (LES) formulation is based on the moist, compressible, filtered Navier-Stokes equations of gas dynamics with non-hydrostatic buoyancy-driven motions. The gas is treated as a sum of ideal gases, dry air and water vapor – with immersed hydrometeors that contribute to mass but not to pressure. The sub-grid-scale dissipation is assumed to be dominated by eddies, and this model uses a common eddy viscosity formulation <xref ref-type="bibr" rid="bib1.bibx26 bib1.bibx27" id="paren.33"/>. The equations are cast in Cartesian geometry as follows: 

                <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M6" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E1"><mml:mtd><mml:mtext>1</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mi mathvariant="italic">ρ</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>K</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:mi>u</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">11</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:mi>v</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">21</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:mi>w</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">31</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:mi>K</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="1em"/><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mi>u</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">12</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mi>v</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">22</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mi>w</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">32</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:mi>K</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:mi>u</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">13</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:mi>v</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">23</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:mi>w</mml:mi><mml:mo>+</mml:mo><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">33</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:mi>K</mml:mi><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>w</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace linebreak="nobreak" width="1em"/><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mi>g</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E2"><mml:mtd><mml:mtext>2</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>p</mml:mi><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:msup><mml:mi>R</mml:mi><mml:mo>⋆</mml:mo></mml:msup><mml:mi>T</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">γ</mml:mi></mml:msup><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>T</mml:mi></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi>R</mml:mi><mml:mo>⋆</mml:mo></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msup><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mi>p</mml:mi></mml:mfrac></mml:mstyle></mml:mfenced><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:msup><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msup><mml:mi>R</mml:mi><mml:mo>⋆</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi></mml:mfrac></mml:mstyle><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

          where <inline-formula><mml:math id="M7" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula> is total density; <inline-formula><mml:math id="M8" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M9" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M10" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula> are wind velocities in the <inline-formula><mml:math id="M11" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M12" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M13" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, respectively; <inline-formula><mml:math id="M14" display="inline"><mml:mi mathvariant="italic">θ</mml:mi></mml:math></inline-formula> is a form of virtual potential temperature defined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>); <inline-formula><mml:math id="M15" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the wet water vapor mixing ratio (such that <inline-formula><mml:math id="M16" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the density of water vapor); <inline-formula><mml:math id="M17" display="inline"><mml:mi>K</mml:mi></mml:math></inline-formula> is unresolved, sub-grid-scale specific Turbulence Kinetic Energy (TKE); <inline-formula><mml:math id="M18" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a tracer quantity that contributes to mass but not to pressure; <inline-formula><mml:math id="M19" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="script">P</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is a passive tracer that is mass-weighted but contributes to neither mass nor pressure (e.g., mass-weighted number concentration for two-moment microphysics); <inline-formula><mml:math id="M20" display="inline"><mml:mi>p</mml:mi></mml:math></inline-formula> is total ideal gas pressure defined by Eq. (<xref ref-type="disp-formula" rid="Ch1.E2"/>), a sum of dry and water vapor pressures; <inline-formula><mml:math id="M21" display="inline"><mml:mrow><mml:msub><mml:mi>C</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfenced><mml:mrow><mml:mo>-</mml:mo><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:mi mathvariant="italic">γ</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> is a constant of proportionality; <inline-formula><mml:math id="M22" display="inline"><mml:mrow><mml:mi mathvariant="italic">γ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub><mml:mo>/</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the ratio of specific heats of dry air; <inline-formula><mml:math id="M23" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">p</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is specific heat of dry air at constant pressure; <inline-formula><mml:math id="M24" display="inline"><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is specific heat of dry air at constant volume; <inline-formula><mml:math id="M25" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is reference pressure; <inline-formula><mml:math id="M26" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the dry air ideal gas constant; <inline-formula><mml:math id="M27" display="inline"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the water vapor ideal gas constant; <inline-formula><mml:math id="M28" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is TKE shear production; <inline-formula><mml:math id="M29" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is TKE dissipation; <inline-formula><mml:math id="M30" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the TKE buoyancy source/sink; <inline-formula><mml:math id="M31" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>∀</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="}" open="{"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> is the unresolved eddy flux of wind momenta; <inline-formula><mml:math id="M32" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>∀</mml:mo><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="}" open="{"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> is eddy flux of potential temperature; <inline-formula><mml:math id="M33" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">v</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is eddy flux of water vapor; <inline-formula><mml:math id="M34" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is eddy flux of TKE (i.e., the “turbulence transport” terms for TKE); <inline-formula><mml:math id="M35" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the eddy flux of tracers that contribute to mass but not to pressure (e.g., hydrometeors); <inline-formula><mml:math id="M36" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="script">P</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the eddy flux of passive mass-weighted tracers contributing to neither mass nor pressure; and <inline-formula><mml:math id="M37" display="inline"><mml:mi>g</mml:mi></mml:math></inline-formula> is acceleration due to gravity. The total density, <inline-formula><mml:math id="M38" display="inline"><mml:mi mathvariant="italic">ρ</mml:mi></mml:math></inline-formula>, is defined as the sum of all mass-contributing densities: <inline-formula><mml:math id="M39" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mo>∑</mml:mo><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M40" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the density of dry air. The quantities in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>) are filtered quantities.</p>
      <p id="d2e1709">The perturbation pressure, <inline-formula><mml:math id="M41" display="inline"><mml:mrow><mml:msup><mml:mi>p</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi>p</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and perturbation density, <inline-formula><mml:math id="M42" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>=</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, are deviations from a dominant hydrostatic balance denoted by:

            <disp-formula id="Ch1.E3" content-type="numbered"><label>3</label><mml:math id="M43" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mi>p</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">H</mml:mi></mml:msub><mml:mi>g</mml:mi></mml:mrow></mml:math></disp-formula>

          which can be defined arbitrarily. In these simulations, the balance is obtained with either a vertical potential temperature profile or a combination of a vertical temperature profile and a vertical water vapor dry mixing ratio profile. The purpose of removing hydrostasis is to better resolve the perturbations, which form the primary means of forcing for buoyancy-driven atmospheric flow. Poor resolution of hydrostasis results in spurious vertical velocities, which can render the solution physically unrealizable.</p>
      <p id="d2e1788">Equation set (<xref ref-type="disp-formula" rid="Ch1.E1"/>) will also be expressed in places using a generic vector form of conservation laws:

            <disp-formula id="Ch1.E4" content-type="numbered"><label>4</label><mml:math id="M44" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">g</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">h</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi></mml:mrow></mml:math></disp-formula></p>
<sec id="Ch1.S2.SS1.SSS1">
  <label>2.1.1</label><title>Eddy Fluxes</title>
      <p id="d2e1863">In eddy viscosity models, particularly for the atmosphere, the molecular viscosity is so small as to be practically negligible in its direct dissipative influence. However, it leads to a cascade of eddies (only some of which are resolved) that eventually lead to dissipation at the larger scales. The basis of eddy viscosity models is to break the flow into resolved scales and unresolved perturbations. In this study, an “implicitly filtered” eddy viscosity model is used, meaning cell-averaged quantities from the Finite-Volume space-time discretization are considered to be resolved and all perturbations below the grid scale are considered unresolved.</p>
      <p id="d2e1866">Using averaging rules, the only quantities that remain after integration are products of resolved winds, <inline-formula><mml:math id="M45" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and averages of unresolved perturbation products such as <inline-formula><mml:math id="M46" display="inline"><mml:mover accent="true"><mml:mrow><mml:msubsup><mml:mi>u</mml:mi><mml:mi>i</mml:mi><mml:mo>′</mml:mo></mml:msubsup><mml:msubsup><mml:mi>u</mml:mi><mml:mi>j</mml:mi><mml:mo>′</mml:mo></mml:msubsup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, or correlations. We employ the commonly used gradient diffusion assumption, assuming isotropically scaled eddies in the three spatial directions. The eddy viscosity, <inline-formula><mml:math id="M47" display="inline"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, is considered to be a function of unresolved TKE and a stability-corrected length scale, giving an eddy flux of:

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M48" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E5"><mml:mtd><mml:mtext>5</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfenced><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mn mathvariant="normal">2</mml:mn><mml:mn mathvariant="normal">3</mml:mn></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">Pr</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="italic">Pr</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E6"><mml:mtd><mml:mtext>6</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>K</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ν</mml:mi></mml:mrow></mml:mfenced><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi>K</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi mathvariant="normal">ℓ</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="italic">Pr</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="italic">ν</mml:mi><mml:mi mathvariant="italic">Pr</mml:mi></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mfenced close=")" open="("><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">ℓ</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mo>;</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.1</mml:mn><mml:mi>L</mml:mi><mml:msqrt><mml:mi>K</mml:mi></mml:msqrt></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E7"><mml:mtd><mml:mtext>7</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant="italic">Pr</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>L</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>;</mml:mo><mml:mspace width="1em" linebreak="nobreak"/><mml:mi>L</mml:mi><mml:mo>=</mml:mo><mml:mo movablelimits="false">min⁡</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mn mathvariant="normal">0.76</mml:mn><mml:msqrt><mml:mi>K</mml:mi></mml:msqrt></mml:mrow><mml:mrow><mml:mi>N</mml:mi><mml:mo>+</mml:mo><mml:mi mathvariant="italic">ϵ</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>,</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi></mml:mrow></mml:mfenced><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfenced><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:msup><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi>N</mml:mi><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:msqrt><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>g</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow></mml:mfenced><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:msqrt></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if </mml:mtext><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi>z</mml:mi><mml:mo>&gt;</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd><mml:mtd><mml:mtext>otherwise</mml:mtext></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M49" display="inline"><mml:mrow><mml:mi mathvariant="italic">ϵ</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is a small number to avoid division by zero; <inline-formula><mml:math id="M50" display="inline"><mml:mi>N</mml:mi></mml:math></inline-formula> is the Brunt–Väisälä frequency, a measure of atmospheric stability; <inline-formula><mml:math id="M51" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">Pr</mml:mi><mml:mi mathvariant="normal">T</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the turbulent Prandtl number; <inline-formula><mml:math id="M52" display="inline"><mml:mi mathvariant="italic">Pr</mml:mi></mml:math></inline-formula> is the Prandtl number; <inline-formula><mml:math id="M53" display="inline"><mml:mi mathvariant="italic">ν</mml:mi></mml:math></inline-formula> is kinematic viscosity; <inline-formula><mml:math id="M54" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">δ</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is the Kronecker delta; <inline-formula><mml:math id="M55" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M56" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M57" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are the velocity components in the <inline-formula><mml:math id="M58" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M59" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M60" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions (i.e., <inline-formula><mml:math id="M61" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M62" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M63" display="inline"><mml:mi>w</mml:mi></mml:math></inline-formula>); and <inline-formula><mml:math id="M64" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M65" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M66" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> are the <inline-formula><mml:math id="M67" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M68" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M69" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions. In Eq. (<xref ref-type="disp-formula" rid="Ch1.E5"/>), the <inline-formula><mml:math id="M70" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> indices below are summed over the three indices for <inline-formula><mml:math id="M71" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula> (Einstein summation is implied). For the derivatives, second-order-accurate finite-differences valid at the appropriate cell faces for each individual flux are used.</p>
</sec>
<sec id="Ch1.S2.SS1.SSS2">
  <label>2.1.2</label><title>TKE Sources and Sinks</title>
      <p id="d2e2616">The TKE evolution equation contains advection and turbulent transport (diffusion) on the left-hand-side of Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>). The remaining processes resolved here are the sources and sinks that are, in general, not cast in conservation form. They are defined as:

              <disp-formula id="Ch1.E8" content-type="numbered"><label>8</label><mml:math id="M72" display="block"><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">S</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mo movablelimits="false">∑</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>∈</mml:mo><mml:mo mathvariant="italic">{</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mo mathvariant="italic">}</mml:mo></mml:mrow></mml:munder><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mfenced close=")" open="("><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mfenced open="(" close=")"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mfenced><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">D</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi mathvariant="italic">ρ</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">0.19</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.51</mml:mn><mml:mi>L</mml:mi><mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced><mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:msup><mml:mi>K</mml:mi><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msup><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msub><mml:mi>K</mml:mi><mml:mi mathvariant="normal">B</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>g</mml:mi><mml:msub><mml:mi>K</mml:mi><mml:mi>m</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="italic">θ</mml:mi><mml:mfenced open="(" close=")"><mml:mi mathvariant="italic">Pr</mml:mi></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula></p>
</sec>
<sec id="Ch1.S2.SS1.SSS3">
  <label>2.1.3</label><title>Surface Fluxes</title>
      <p id="d2e2861">Surface fluxes at the model surface and at immersed boundaries are enforced with Monin–Obukhov similarity theory <xref ref-type="bibr" rid="bib1.bibx35" id="paren.34"/>. For all surface cells, and for all cells adjacent to an immersed cell, surface fluxes in each direction are applied via the following flux terms in a corresponding manner as the eddy fluxes in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>):

                  <disp-formula specific-use="gather" content-type="numbered"><mml:math id="M73" display="block"><mml:mtable displaystyle="true"><mml:mlabeledtr id="Ch1.E9"><mml:mtd><mml:mtext>9</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mi>u</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>v</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>w</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>T</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">21</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">31</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">32</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mspace width="1em" linebreak="nobreak"/><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">13</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">23</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="[" close="]"><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn mathvariant="normal">0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E10"><mml:mtd><mml:mtext>10</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">21</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>v</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>;</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">31</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>w</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:msqrt><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ξ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E11"><mml:mtd><mml:mtext>11</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">12</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>u</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>;</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace width="0.25em" linebreak="nobreak"/><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">32</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>w</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>w</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">η</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E12"><mml:mtd><mml:mtext>12</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle displaystyle="true" class="stylechange"/><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">13</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>u</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>;</mml:mo><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mn mathvariant="normal">23</mml:mn><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi>v</mml:mi><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:msubsup><mml:mi mathvariant="italic">τ</mml:mi><mml:mrow><mml:mi>T</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:mrow><mml:mo>⋆</mml:mo></mml:msubsup><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mi mathvariant="italic">κ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>T</mml:mi><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:msqrt><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi>v</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:msup><mml:mi mathvariant="italic">ζ</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr><mml:mlabeledtr id="Ch1.E13"><mml:mtd><mml:mtext>13</mml:mtext></mml:mtd><mml:mtd><mml:mrow><mml:mstyle class="stylechange" displaystyle="true"/><mml:mtable rowspacing="0.2ex" class="split" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ξ</mml:mi><mml:mo>=</mml:mo><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mo>;</mml:mo><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi mathvariant="italic">η</mml:mi><mml:mo>=</mml:mo><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>y</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mo>;</mml:mo></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>=</mml:mo><mml:mi>ln⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>z</mml:mi></mml:mrow><mml:mn mathvariant="normal">2</mml:mn></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mlabeledtr></mml:mtable></mml:math></disp-formula>

            where <inline-formula><mml:math id="M74" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is the roughness length, and <inline-formula><mml:math id="M75" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">I</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is the temperature of the immersed cell. If a temperature is omitted, no forcing toward temperature is applied. One can also implement a heat flux, <inline-formula><mml:math id="M76" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> (analogous for <inline-formula><mml:math id="M77" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M78" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions), which is added as a flux from the material surface. Fluxes are applied to wind velocity and to temperature because this is implemented as a separate module in portUrb and operates directly on the coupler state. Since immersed material is forced toward the hydrostatic background potential temperature, thermally, the absolute temperature value, <inline-formula><mml:math id="M79" display="inline"><mml:mi>T</mml:mi></mml:math></inline-formula>, of immersed material will generally change with height for stratified flows when no direct temperature is specified.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS2">
  <label>2.2</label><title>Dimensionally Split Finite-Volume Discretization</title>
      <p id="d2e3797">Using the vector form of the LES equations in Eq. (<xref ref-type="disp-formula" rid="Ch1.E4"/>), we split the equations such that each dimension is handled separately, and the vector form equations become, in general:

            <disp-formula id="Ch1.E14" content-type="numbered"><label>14</label><mml:math id="M80" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi></mml:mrow></mml:math></disp-formula>

          This is integrated in space (semi-discretized) over domain-spanning cells of equal spacing, <inline-formula><mml:math id="M81" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, where <inline-formula><mml:math id="M82" display="inline"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>±</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>x</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>±</mml:mo><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula>. The divergence theorem is applied, and an upwind Riemann solver is used to give the form:

            <disp-formula id="Ch1.E15" content-type="numbered"><label>15</label><mml:math id="M83" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mo>∂</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>+</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mstyle scriptlevel="+1"><mml:mtable class="substack"><mml:mtr><mml:mtd><mml:mi mathvariant="script">R</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>+</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mo>-</mml:mo><mml:mi mathvariant="script">R</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>x</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mtd></mml:mtr></mml:mtable></mml:mstyle><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mi mathvariant="bold-italic">s</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></disp-formula>

          where <inline-formula><mml:math id="M84" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo stretchy="true" mathvariant="normal">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula> is a reconstruction of the variation of <inline-formula><mml:math id="M85" display="inline"><mml:mi mathvariant="bold-italic">q</mml:mi></mml:math></inline-formula> within the cell of domain <inline-formula><mml:math id="M86" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M87" display="inline"><mml:mrow><mml:mi mathvariant="script">R</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>-</mml:mo></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>+</mml:mo></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> is a Riemann solver that returns a flux vector, <inline-formula><mml:math id="M88" display="inline"><mml:mrow><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="bold-italic">q</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>, from multi-valued states at cell edges using the upwind state based on locally frozen characteristics (the flux Jacobian diagonalization: <inline-formula><mml:math id="M89" display="inline"><mml:mrow><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">f</mml:mi><mml:mo>/</mml:mo><mml:mo>∂</mml:mo><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>=</mml:mo><mml:msup><mml:mi mathvariant="bold">L</mml:mi><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:msup><mml:mi mathvariant="normal">Λ</mml:mi><mml:mi mathvariant="bold">L</mml:mi></mml:mrow></mml:math></inline-formula>). The state <inline-formula><mml:math id="M90" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>-</mml:mo></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo>+</mml:mo></mml:msup></mml:mrow></mml:mfenced><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> is used to compute the diagonalization for upwinding. For simplicity, a constant acoustic speed of 350 m s<sup>−1</sup> is assumed, and supersonic flow is not supported in the Riemann solver. This is the same approach used in <xref ref-type="bibr" rid="bib1.bibx50" id="text.35"/>.</p>
      <p id="d2e4234">While the gravity and eddy viscosity source term can be integrated with high-order discretizations, the hyperbolic dynamics use constant and uniform gravity, and the diffusive SGS dynamics do not benefit substantially from high-order accuracy. For the reconstruction, <inline-formula><mml:math id="M92" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal" stretchy="true">̃</mml:mo></mml:mover><mml:mi>i</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>x</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>, eleventh-order Weighted Essentially Non-Oscillatory (WENO) limiting <xref ref-type="bibr" rid="bib1.bibx28" id="paren.36"/> is used along with weight mapping <xref ref-type="bibr" rid="bib1.bibx14" id="paren.37"/>. When a cell is within ten cells of an immersed boundary in any direction, weight mapping is omitted to reduce oscillations because immersed boundaries essentially represent permanent contact discontinuities.</p>
</sec>
<sec id="Ch1.S2.SS3">
  <label>2.3</label><title>Strong Stability Preserving Runge-Kutta Time Discretization</title>
      <p id="d2e4268">The optimal, three-stage, third-order accurate Strong Stability Preserving Runge-Kutta (SSPRK3) time discretization is used to integrate the remaining temporal Ordinary Differential Equation resulting from the semi-discretization in Sect. <xref ref-type="sec" rid="Ch1.S2.SS2"/>. The authors experimented with different dimensional splitting approaches, and it was found that the least numerically diffused results came from splitting the dimsensions fully independently within each stage of the SSPRK3 time stepping. While this limited the maximum stable CFL value to roughly 0.7, it resulted in less numerical dissipation than using dimensional splitting techniques outside the SSPRK3 time stepping procedure. This approach with SSPRK3 also produced less numerical diffusion than attempts at using an ADER time discretization with Differential Transforms <xref ref-type="bibr" rid="bib1.bibx48 bib1.bibx43 bib1.bibx47" id="paren.38"/> with dimensional splitting outside the ADER computations. This approach to dimensional splitting within each RK stage has also been shown to reduce errors at singularities on non-orthogonal grids such as the cubed-sphere <xref ref-type="bibr" rid="bib1.bibx20" id="paren.39"/>.</p>
</sec>
<sec id="Ch1.S2.SS4">
  <label>2.4</label><title>Free-Slip Immersed Boundaries with Surface Friction</title>
<sec id="Ch1.S2.SS4.SSS1">
  <label>2.4.1</label><title>Modifying Variables on the Grid</title>
      <p id="d2e4294">Simplified immersed boundaries are implemented to represent solid surfaces embedded in the flow. These only represent the proportion of immersed material in a cell along with the roughness length of that immersed material as well as the temperature and/or heat flux. They are implemented similarly to how the solid wall boundaries are implemented at the bottom and top of the domain. Each cell will have an immersed “proportion”, <inline-formula><mml:math id="M93" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, which is the proportion of the cell that is immersed material. Before each Runge-Kutta stage, immersed boundaries are nudged toward hydrostatic values at rest according to the fifth power of the immersed proportion and a timescale, <inline-formula><mml:math id="M94" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>∈</mml:mo><mml:mfenced open="[" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>,</mml:mo><mml:mi mathvariant="normal">∞</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>:

              <disp-formula id="Ch1.E16" content-type="numbered"><label>16</label><mml:math id="M95" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">σ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow><mml:mrow><mml:msub><mml:mi mathvariant="script">T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>H</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M96" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="bold-italic">q</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>H</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mfenced open="[" close="]"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi mathvariant="italic">ρ</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>H</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:msub><mml:mover accent="true"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="italic">θ</mml:mi></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>H</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mfenced><mml:mo>⊤</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M97" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> means the cell is immediately set to its target value. <inline-formula><mml:math id="M98" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> is, in general, the time scale in terms of number of time steps for adjustment to a hydrostatic state at rest. The fifth power is obtained from numerical experiments, matching low resolution to high resolution solutions for a coarsely resolved sphere in Sect. <xref ref-type="sec" rid="Ch1.S3.SS5"/>.</p>
      <p id="d2e4598">The timescale, <inline-formula><mml:math id="M99" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="script">T</mml:mi><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula>, is <inline-formula><mml:math id="M100" display="inline"><mml:mn mathvariant="normal">8</mml:mn></mml:math></inline-formula>, <inline-formula><mml:math id="M101" display="inline"><mml:mn mathvariant="normal">4</mml:mn></mml:math></inline-formula>, and <inline-formula><mml:math id="M102" display="inline"><mml:mn mathvariant="normal">2</mml:mn></mml:math></inline-formula> if the cell is immersed and is within one, two, or three cells in all directions (including corners) of a non-immersed boundary. All other immersed cells have a timescale of <inline-formula><mml:math id="M103" display="inline"><mml:mn mathvariant="normal">1</mml:mn></mml:math></inline-formula>, meaning they are immediately set between every stage to the target immersed values. Essentially, this approach “softens” the immersed discontinuity slightly when the flow switches from non-immersed to immersed to reduce Runge oscillations in the presence of high-order reconstruction. This approach also ensures that all immersed boundaries get close to their targets each time step and that internal regions of larger immersed structures like buildings do not allow any flow through at all.</p>
      <p id="d2e4649">In general, when the user ingests building or terrain geometry, it can be quite sharp in its features. The use of WENO limiting, the avoidance of WENO weight mapping near immersed material, the use of an upwind Riemann solver, and the slight softening of immersed forcing time scale near the outside of structures appears to be enough to avoid visible Runge oscillations while simultaneously striving for a large amount of resolved turbulence and boundary resolution per degree of freedom.</p>
</sec>
<sec id="Ch1.S2.SS4.SSS2">
  <label>2.4.2</label><title>Special Treatment for Tangential Winds and Pressure</title>
      <p id="d2e4660">In a given direction, the normal wind velocity boundary condition is zero inside immersed boundaries. The tangential winds, however, need to be free-slip so that surface friction can later be applied to impose a roughness length on the tangential flow. To enable this, for transverse velocities relative to a given direction (recall the dynamics are implemented in a dimensionally split fashion), the moment an immersed proportion greater than zero is encountered, the value of the last non-immersed cell before an immersed boundary is replicated throughout the rest of that direction in a stencil. This, in effect, implements a zero derivative Neumann boundary for tangential wind velocities to create a free-slip solid wall boundary. This way, normal velocity is forced toward zero, but tangential velocity is not. This implementation is ad hoc to a dimensionally split implementation.</p>
      <p id="d2e4663">In this model, during the semi-discretized spatial discretization of the dynamics, pressure is treated as its own separate reconstructed variable. Pressure is given a zero derivative boundary condition with the same treatment used for the two tangential wind velocities in a given direction.</p>
</sec>
<sec id="Ch1.S2.SS4.SSS3">
  <label>2.4.3</label><title>Modifications to LES Closure and Surface Friction</title>
      <p id="d2e4674">Many of the modules in the model need to be changed to exhibit physical behavior in the presence of immersed boundaries, where mass and thermodynamics variables are set to hydrostatic values, and wind velocities and tracers are set to zero. The LES closure, for instance, cannot mix tangential zero velocity values in immersed cells with adjacent non-immersed cells, or it would essentially imply a surface friction term without consideration of roughness length or Monin-Obukhov similarity theory, which is in the territory of the surface friction scheme, not the LES closure. Therefore, the LES SGS closure sets SGS interface fluxes, <inline-formula><mml:math id="M104" display="inline"><mml:mi mathvariant="italic">τ</mml:mi></mml:math></inline-formula>, to zero whenever one of the two neighboring cells is immersed.</p>
      <p id="d2e4684">The surface friction scheme is modified to no longer only work at the surface but to impose fluxes on the tangential wind and temperature at any interface where one of the two adjacent cells is immersed. For already immersed cells, this has little to no effect because the cell is already being forced toward immersed target values (hydrostatic flow at rest) in the dynamical core. For non-immersed cells adjacent to an immersed cell, this imposes friction and thermal forcing according to immersed temperature, roughness length, or heat flux. Those three values along with the immersed proportion are defined at every cell in the domain so that one can customize the roughness, temperature, and heat flux of any immersed material in the domain. If one desires no-slip immersed boundaries, the immersed roughness can be set to a large value. If one desires fully free-slip, it can be set to a small value.</p>
</sec>
<sec id="Ch1.S2.SS4.SSS4">
  <label>2.4.4</label><title>Modifications to the WENO Reconstruction Approach</title>
      <p id="d2e4695">WENO reconstruction performs reconstruction over multiple sub-stencils within an overall stencil and uses the weighted sum of reconstructions. The higher the Total Variation (a measure of oscillation) of a sub-stencil, the lower its weight. Particularly for normal velocity in a given direction, the zero value in boundary ghost cells lead to all stencils containing those ghost cells having a permanent discontinuity. Thus, WENO limiting weights the stencil without ghost cells quite highly and essentially ignores the boundary conditions.</p>
      <p id="d2e4698">It is not immediately clear how this leads to artifacts in the solution, but two options are the most likely culprits. First, when this behavior occurs, boundary cells end up using fully one-sided reconstructions most of the time, which have lower stability than reconstructions containing cells on both sides of the reconstructed cell <xref ref-type="bibr" rid="bib1.bibx47" id="paren.40"/>. Second, when the edge flux is zero, but the reconstruction has no notion of the boundary conditions, this can lead to one cell face with large mass flux and the other cell face with zero mass flux. This can lead to creating higher pressures and, in turn, solution artifacts in cells adjacent to boundaries.</p>
      <p id="d2e4704">To avoid both of these possibilities, we alter the Total Variation (TV) of the stencil that <italic>does not</italic> contain the boundary ghost cells to have the maximum TV of the other stencils. This way, the stencil without ghost cells cannot consume the majority of the weighted sum of stencils, and at least one of the other stencils containing ghost cell information will have influence on the final WENO polynomial, injecting boundary information to the final reconstruction and ensuring the reconstruction is not fully one-sided most of the time. It also allows the WENO weighting procedure to generally choose the stencils with lowest TV – an essential component of non-oscillatory reconstruction.</p>
</sec>
</sec>
<sec id="Ch1.S2.SS5">
  <label>2.5</label><title>Variable Vertical Grid Spacing</title>
      <p id="d2e4720">The vertical grid in portUrb can be arbitrarily set by providing a set of monotonically increasing vertical interface levels. This is supported simply in the numerics by use of a metric transformation from the physical vertical coordinate, <inline-formula><mml:math id="M105" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula>, to an equally spaced reference coordinate: <inline-formula><mml:math id="M106" display="inline"><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi><mml:mfenced open="(" close=")"><mml:mi>z</mml:mi></mml:mfenced></mml:mrow></mml:math></inline-formula>. For convenience, the <inline-formula><mml:math id="M107" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> coordinate is simply set to be the vertical interface index such that the grid spacing in <inline-formula><mml:math id="M108" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> coordinates is always one. Before reconstruction, the cell average, <inline-formula><mml:math id="M109" display="inline"><mml:mover accent="true"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula>, is multiplied by the physical grid spacing, <inline-formula><mml:math id="M110" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:msub><mml:mi>z</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, to transform into <inline-formula><mml:math id="M111" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> coordinates (recalling that <inline-formula><mml:math id="M112" display="inline"><mml:mrow><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>≡</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula>). Then, after reconstruction in <inline-formula><mml:math id="M113" display="inline"><mml:mi mathvariant="italic">ζ</mml:mi></mml:math></inline-formula> coordinates, the cell-edge values are multiplied by the inverse of a high-order reconstruction of <inline-formula><mml:math id="M114" display="inline"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi><mml:mo>/</mml:mo><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi></mml:mrow></mml:math></inline-formula> at the cell edge in question to transform back into physical vertical coordinates.</p>
      <p id="d2e4827">The portUrb code has several convenience functions to generate a stretched vertical grid. There is a function to generate equal grid spacing. There is a function that generates exponentially increasing vertical grid spacing based on an input of the vertical domain extent and the desired number of vertical levels. The routine fits the constant multiple by which grid spacing increases between successive levels to those parameters. There is also a function that takes an input of a lower level grid spacing and a higher level grid spacing along with the vertical domain extent and the domain over which the grid spacing transitions between the two using smooth polynomial interpolation. This routine determines the number of vertical grid cells rather than having that value specified by the user.</p>
</sec>
<sec id="Ch1.S2.SS6">
  <label>2.6</label><title>Boundary Conditions</title>
      <p id="d2e4838">There are four different boundary conditions that can be specified in the dynamical core and SGS TKE closure routines: periodic, solid wall, open, and precursor forcing. The precursor boundary forcing is implemented by declaring one coupler object to be the concurrent precursor simulation. That simulation then saves the state in the domain's “ghost cells” for use by the forced simulation for each of the Runge-Kutta stages. Then, the saved ghost cells from the precursor simulation are copied into the forced simulation's ghost cells at each Runge-Kutta stage if the velocity normal to the boundary is flowing into the domain. An open boundary is used if the velocity normal to the boundary is flowing out of the domain.</p>
</sec>
<sec id="Ch1.S2.SS7">
  <label>2.7</label><title>Model Construction</title>
      <p id="d2e4849">The model is constructed with a “coupler” at the core. The coupled state is defined to be dry air density, wind velocities in all three directions, absolute temperature, and tracer densities. For each tracer, it is defined whether the tracer should remain positive, whether it contributes to mass, and whether it is diffused with the SGS closure. The only required tracers are water vapor density (for all simulations) and mass-weighted TKE (if the LES closure module is used). All tracers must be specified as mass-weighted or total density. This coupled state has the benefit of being non-ambiguous (whereas definitions of potential temperature and mixing ratios can be varied). A disadvantage computationally is that most parameterizations and dynamical cores use mixing ratios and potential temperature, meaning a conversion is needed before and after every module, typically. This cost is deemed acceptable to have a non-ambiguous coupler state.</p>
      <p id="d2e4852">A “module” is a self-contained action that changes the coupled state or produces output, and all model actions are implemented as modules. The coupler state is passed to a module along with the desired time step. Modules may sub-step to maintain stability as needed, but in the experiments in this study, the dynamical core imposes the smallest time step, and all modules are run at the dynamical core time step for now. The initial state, therefore, is implemented based on the coupler's state rather than the dynamical core state defined in Eq. (<xref ref-type="disp-formula" rid="Ch1.E1"/>).</p>
</sec>
<sec id="Ch1.S2.SS8">
  <label>2.8</label><title>Ensembles</title>
      <p id="d2e4865">Ensembles within a single executable are flexibly supported with a core module called an “Ensembler”, a class that manages ensembles. One can implement different “dimensions” of ensembles, specify how many tasks (relative to the smallest ensemble member) a given member needs, split the overall MPI communicator into sub-communicators (one for each ensemble member), and redirect the output of each member to its own file. This way, each ensemble member can do any arbitrary operation, read from any individual file, and output to any arbitrary file. With this approach, one can submit capability-class jobs (that is, jobs that use 20 % or more of the machine at a time) on supercomputers such as DOE Leadership Computing Facilities like the Oak Ridge Leadership Computing Facility or the Argonne Leadership Computing Facility. This capability is used in several of the numerical experiments in Sect. <xref ref-type="sec" rid="Ch1.S3"/>.</p>
</sec>
<sec id="Ch1.S2.SS9">
  <label>2.9</label><title>Portable C<inline-formula><mml:math id="M115" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> Approach</title>
      <p id="d2e4889">The model is coded in a portable C<inline-formula><mml:math id="M116" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> library called Yet Another Kernel Launcher (YAKL) <xref ref-type="bibr" rid="bib1.bibx42" id="paren.41"/>, which is based on the Kokkos portable C<inline-formula><mml:math id="M117" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> library <xref ref-type="bibr" rid="bib1.bibx64" id="paren.42"/>. The core of these libraries is to wrap kernel code (ostensibly the code inside a set of loops over the grid cells being operated on) in a class object. That object is then passed to a launcher that launches the code in parallel on a given architecture. For Nvidia, AMD, and Intel GPUs, the CUDA, HIP, and SYCL specifications are used to launch the code, respectively. There are other backends available as well such as OpenMP threading for multi-core CPUs. All modules in portUrb that operate on a set of grid cells are run on whatever “device” is available on a given machine (typically a GPU). Care has been taken to ensure all kernels run efficiently by streaming memory effectively from DRAM (ensuring higher GPU memory bandwidth is realized) <xref ref-type="bibr" rid="bib1.bibx44" id="paren.43"/> and keeping kernel resource usage low enough to use the entire GPU effectively (a concept known as “occupancy”) <xref ref-type="bibr" rid="bib1.bibx57" id="paren.44"/>.</p>
</sec>
</sec>
<sec id="Ch1.S3">
  <label>3</label><title>Numerical Experiments</title>
      <p id="d2e4935">The initial states for all experiments are implemented with 9-point Gauss Legendre Lobatto (GLL) quadrature in all directions within each cell. All experiments use a CFL value of 0.6 assuming a maximum wave speed of 450 m s<sup>−1</sup> (roughly 350 m s<sup>−1</sup> acoustic speed at the surface with up to 100 m s<sup>−1</sup> wind speeds). All experiments use equal grid spacings in all directions. An initial TKE of <inline-formula><mml:math id="M121" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> is initialized uniformly to seed initial unresolved TKE. This initial value appears to have little effect on the solution as it quickly resolves into an equilibrium state driven largely by pressure gradient or geostrophic forcing, shear production at immersed interfaces, and by buoyancy in some simulations.</p>
<sec id="Ch1.S3.SS1">
  <label>3.1</label><title>Neutral Atmospheric Boundary Layer</title>
<sec id="Ch1.S3.SS1.SSS1">
  <label>3.1.1</label><title>Specification</title>
      <p id="d2e5002">This experiment simulates a buoyantly neutral atmospheric boundary layer seeded by initial temperature perturbations and maintained by geostrophic forcing (described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS2"/>). A domain of <inline-formula><mml:math id="M122" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> km is used to simulate for ten model hours with 10 m grid spacing. This test case uses an initial potential temperature profile of:

              <disp-formula id="Ch1.E17" content-type="numbered"><label>17</label><mml:math id="M123" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">initial</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>z</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">300</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>z</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">500</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>m</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">300</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.08</mml:mn><mml:mfenced close=")" open="("><mml:mrow><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">500</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>z</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">500</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>m</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mtext>and</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow/></mml:mtd><mml:mtd><mml:mrow><mml:mi>z</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">650</mml:mn></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">300</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.08</mml:mn><mml:mfenced open="(" close=")"><mml:mn mathvariant="normal">150</mml:mn></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow/></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mspace width="1em" linebreak="nobreak"/><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.003</mml:mn><mml:mo>(</mml:mo><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">650</mml:mn><mml:mo>)</mml:mo></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>z</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">650</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>m</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            This creates a neutral environment in the lowest 500 m, a strong stable inversion between 500 and 650 m, and a weaker inversion above 650 m. An initial wind velocity of <inline-formula><mml:math id="M124" display="inline"><mml:mrow><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup> and <inline-formula><mml:math id="M126" display="inline"><mml:mrow><mml:mi>v</mml:mi><mml:mo>=</mml:mo><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> is specified. From this, an initial surface pressure of <inline-formula><mml:math id="M127" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> Pa along with hydrostasis and the equation of state define a hydrostatically balanced initial state that provides the density. Finally, cell-wise random uniform perturbations in the domain <inline-formula><mml:math id="M128" display="inline"><mml:mrow><mml:mfenced close="]" open="["><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> K are added to the temperature field. A surface roughness length of 0.1 m is used. Geostrophic forcing is used with <inline-formula><mml:math id="M129" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup>, <inline-formula><mml:math id="M131" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup>, and <inline-formula><mml:math id="M133" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">43.289</mml:mn></mml:mrow></mml:math></inline-formula>° (the exact value is the solution to <inline-formula><mml:math id="M134" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>) as described in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1.SSS2"/>.</p>
      <p id="d2e5319">This uses no surface heat flux, and the surface temperature is set to 300 K. Periodic boundary conditions are used in the horizontal directions, and solid no-slip solid walls are used in the vertical direction. Surface fluxes are only applied at the bottom boundary, and a sponge layer is implemented in the top 10 % of the model with a forcing scaling of <inline-formula><mml:math id="M135" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> to force the model variables to zero for everything except horizontal velocities, which are forced to the horizontal mean values at each respective vertical level.</p>
</sec>
<sec id="Ch1.S3.SS1.SSS2">
  <label>3.1.2</label><title>Geostrophic Forcing</title>
      <p id="d2e5341">The model is forced to an equilibrium state with geostrophic forcing, which imposes the following extra source term to the horizontal wind velocities:

              <disp-formula id="Ch1.E18" content-type="numbered"><label>18</label><mml:math id="M136" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            In Eq. (<xref ref-type="disp-formula" rid="Ch1.E18"/>), <inline-formula><mml:math id="M137" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M138" display="inline"><mml:mrow><mml:msub><mml:mover accent="true"><mml:mi>v</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> are the averages of <inline-formula><mml:math id="M139" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M140" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> over the global horizontal domain at the vertical level, <inline-formula><mml:math id="M141" display="inline"><mml:mi>k</mml:mi></mml:math></inline-formula>. Equation set (<xref ref-type="disp-formula" rid="Ch1.E18"/>) in continuous form as it would be applied to equation set (<xref ref-type="disp-formula" rid="Ch1.E1"/>) would appear as:

              <disp-formula id="Ch1.E19" content-type="numbered"><label>19</label><mml:math id="M142" display="block"><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mo>∂</mml:mo><mml:mrow><mml:mo>∂</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac></mml:mstyle><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>u</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi>v</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced close="]" open="["><mml:mtable class="array" columnalign="center"><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mfenced open="〈" close="〉"><mml:mi>v</mml:mi></mml:mfenced><mml:mi mathvariant="normal">horiz</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="italic">ρ</mml:mi><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>sin⁡</mml:mi><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mfenced open="〈" close="〉"><mml:mi>u</mml:mi></mml:mfenced><mml:mi mathvariant="normal">horiz</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M143" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mi>u</mml:mi><mml:msub><mml:mo>〉</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M144" display="inline"><mml:mrow><mml:mo>〈</mml:mo><mml:mi>v</mml:mi><mml:msub><mml:mo>〉</mml:mo><mml:mi mathvariant="normal">horiz</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> (both functions of <inline-formula><mml:math id="M145" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> and time) are the horizontal averages of <inline-formula><mml:math id="M146" display="inline"><mml:mrow><mml:mi>u</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M147" display="inline"><mml:mrow><mml:mi>v</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, respectively.</p>
</sec>
<sec id="Ch1.S3.SS1.SSS3">
  <label>3.1.3</label><title>Results</title>
      <p id="d2e5740">Figure <xref ref-type="fig" rid="F1"/> plots the wind magnitude for the neutral atmospheric boundary layer test case at ten model hours. The scale and angle of turbulent fluctuations as well as behavior near the inversion match that of Fig. 1 of <xref ref-type="bibr" rid="bib1.bibx55" id="text.45"/>. The supergeostrophic wind speed at the inversion is present as well <xref ref-type="bibr" rid="bib1.bibx52" id="paren.46"/>. Figure <xref ref-type="fig" rid="F2"/> plots vertical profiles of the domain mean <inline-formula><mml:math id="M148" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M149" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula> velocities as a function of height at 8 and 10 model hours. Also plotted are the vertical domain mean profiles from Fig. 2 of <xref ref-type="bibr" rid="bib1.bibx55" id="text.47"/> as comparison points. Both models show the supergeostrophic wind at the inversion and increase in wind speed from 8 to 10 model hours in both horizontal wind directions. However, the <inline-formula><mml:math id="M150" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-direction wind speed in portUrb is lower aloft and higher at the surface. The <inline-formula><mml:math id="M151" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity is quite similar between portUrb and FastEddy at <inline-formula><mml:math id="M152" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h, but portUrb has a smaller difference between 8 and 10 h of simulation. The potential temperature profile is also similar, showing a slight growth in the inversion height and smoothing of the initial inversion temperature discontinuity. The second potential temperature discontinuity at <inline-formula><mml:math id="M153" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">650</mml:mn></mml:mrow></mml:math></inline-formula> m is less diffused in portUrb than it is in FastEddy. The magnitudes of <inline-formula><mml:math id="M154" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity and <inline-formula><mml:math id="M155" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity are slightly lower in this study, possibly due to the use of a larger grid spacing, but the structure remains similar.</p>

      <fig id="F1"><label>Figure 1</label><caption><p id="d2e5826">Plots of wind magnitude in m s<sup>−1</sup> for the neutral ABL test case at ten model hours.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f01.jpg"/>

          </fig>

      <fig id="F2" specific-use="star"><label>Figure 2</label><caption><p id="d2e5849">Plots for the neutral ABL test case of horizontally-averaged <inline-formula><mml:math id="M157" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity (m s<sup>−1</sup>), <inline-formula><mml:math id="M159" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity (m s<sup>−1</sup>), and virtual potential temperature (K) at different times.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f02.png"/>

          </fig>

      <p id="d2e5897">Figure <xref ref-type="fig" rid="F3"/> shows plots of mean values, minimum to maximum ranges, and the first and third quartiles for wind speed, <inline-formula><mml:math id="M161" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> correlation, and total Turbulence Kinetic Energy (TKE). Also plotted are the mean data from Fig. 3 in <xref ref-type="bibr" rid="bib1.bibx55" id="text.48"/> for comparison. A sharp peak in TKE is observed near the surface, decaying toward zero aloft. The TKE for portUrb is in quite close agreement with FastEddy. A log profile of wind speed increase from the frictioned bottom boundary is shown in Fig. <xref ref-type="fig" rid="F3"/>a using reference height of 500 m and a reference wind speed of 10 m s<sup>−1</sup> for the log-law reference. The horizontal mean resolved <inline-formula><mml:math id="M163" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> correlation reaches a slightly larger peak magnitude in this study and does so more smoothly than observed in <xref ref-type="bibr" rid="bib1.bibx55" id="text.49"/>, possibly due to the use of WENO limiting, a fully upwind flux, or a coarser grid spacing. A plot of the wind speed spectra averaged among 1-D FFTs in the two horizontal directions at a height of <inline-formula><mml:math id="M164" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m are given in Fig. <xref ref-type="fig" rid="F4"/>, showing an effective resolution of about <inline-formula><mml:math id="M165" display="inline"><mml:mrow><mml:mn mathvariant="normal">8</mml:mn><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> and perhaps slightly higher. No accumulation of energy is observed at <inline-formula><mml:math id="M166" display="inline"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula> scales, demonstrating physically realizable dissipation of energy at the end of the 3-D cascade by the numerical discretization and SGS turbulence closure.</p>

      <fig id="F3" specific-use="star"><label>Figure 3</label><caption><p id="d2e6001">Plots for the neutral ABL test case at ten model hours of the mean (black line), first to third quartile range (dark blue shading), and minimum to maximum range (light blue shading) for various quantities. Perturbation quantities in this plot are deviations from the horizontal mean at a given vertical level. Resolved TKE is defined as <inline-formula><mml:math id="M167" display="inline"><mml:mrow><mml:mi mathvariant="italic">ρ</mml:mi><mml:mover accent="true"><mml:mrow><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced close=")" open="("><mml:mrow><mml:msup><mml:mi>v</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup><mml:mo>+</mml:mo><mml:msup><mml:mfenced open="(" close=")"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:mfenced><mml:mn mathvariant="normal">2</mml:mn></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:mrow></mml:math></inline-formula>, and unresolved SGS TKE is the quantity prognosed by the LES SGS closure. The log law in Fig. <xref ref-type="fig" rid="F3"/>a is based on a roughness length of 0.1 m, a reference velocity of 10 m s<sup>−1</sup>, and a reference height of 500 m.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f03.png"/>

          </fig>

      <fig id="F4"><label>Figure 4</label><caption><p id="d2e6072">Velocity magnitude spectra at <inline-formula><mml:math id="M169" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m and <inline-formula><mml:math id="M170" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h for the neutral ABL test case, computed as the squared absolute value of transformed complex FFT values averaged over 1-D sweeps in the <inline-formula><mml:math id="M171" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M172" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> directions.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f04.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S3.SS2">
  <label>3.2</label><title>Dry Convective Boundary Layer</title>
<sec id="Ch1.S3.SS2.SSS1">
  <label>3.2.1</label><title>Specification</title>
      <p id="d2e6135">This experiment simulates a dry convective boundary layer with an initially neutral boundary layer up to 600 m, an inversion above 600 m, and a positive heat flux at the model surface to mimic radiative heating emanating from the model surface. The potential temperature is initialized as:

              <disp-formula id="Ch1.E20" content-type="numbered"><label>20</label><mml:math id="M173" display="block"><mml:mrow><mml:msub><mml:mi mathvariant="italic">θ</mml:mi><mml:mi mathvariant="normal">initial</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mi>z</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mn mathvariant="normal">309</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>z</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">600</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>m</mml:mtext></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mn mathvariant="normal">309</mml:mn><mml:mo>+</mml:mo><mml:mn mathvariant="normal">0.004</mml:mn><mml:mfenced close=")" open="("><mml:mrow><mml:mi>z</mml:mi><mml:mo>-</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace width="0.25em" linebreak="nobreak"/><mml:mi>z</mml:mi><mml:mo>≥</mml:mo><mml:mn mathvariant="normal">600</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>m</mml:mtext></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            This is simulated over a domain of <inline-formula><mml:math id="M174" display="inline"><mml:mrow><mml:mn mathvariant="normal">6</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">6</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> km for a time of three model hours with 10 m grid spacing. The surface temperature is set to 309 K, but it is not continuously enforced via surface fluxes. Rather, a heat flux of 0.4 K m s<sup>−1</sup> is imposed at the bottom boundary to initiate convection. Wind is initialized as <inline-formula><mml:math id="M176" display="inline"><mml:mrow><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup> and <inline-formula><mml:math id="M178" display="inline"><mml:mrow><mml:mi>v</mml:mi><mml:mo>=</mml:mo><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>. A surface roughness length of 0.05 m is used, and geostrophic forcing is applied with <inline-formula><mml:math id="M179" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M180" display="inline"><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M181" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="italic">ϕ</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">33.5</mml:mn></mml:mrow></mml:math></inline-formula>°. Random uniform temperature perturbations are added to the lowest 400 m of the domain in the range of <inline-formula><mml:math id="M182" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0.25</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> K in the initial state. Periodic boundary conditions are used in the horizontal, and solid no-slip walls are used in the vertical. Surface fluxes are only applied at the bottom boundary, and the same sponge layer as used in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> is used in the top 10 % of this simulation as well.</p>
</sec>
<sec id="Ch1.S3.SS2.SSS2">
  <label>3.2.2</label><title>Results</title>
      <p id="d2e6345">Figure <xref ref-type="fig" rid="F5"/> plots the potential temperature and vertical velocity at <inline-formula><mml:math id="M183" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m as well as <inline-formula><mml:math id="M184" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> km at a time of <inline-formula><mml:math id="M185" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> h. Comparing this against Fig. 8 of <xref ref-type="bibr" rid="bib1.bibx55" id="text.50"/> and Fig. 3 of <xref ref-type="bibr" rid="bib1.bibx34" id="text.51"/>, the scale of structures are similar. The inversion height appears to be a bit more smoothed out and lower than WRF in <xref ref-type="bibr" rid="bib1.bibx34" id="text.52"/> and roughly the same as SOWFA and HiGrad. The inversion appears to have roughly the same smoothness as FastEddy <xref ref-type="bibr" rid="bib1.bibx55" id="paren.53"/> but is a bit lower in height. The magnitude of updrafts are similar to FastEddy in Fig. 8 of <xref ref-type="bibr" rid="bib1.bibx55" id="text.54"/>.</p>

      <fig id="F5" specific-use="star"><label>Figure 5</label><caption><p id="d2e6404">For the convective ABL test case, plots of potential temperature (K) at <inline-formula><mml:math id="M186" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m (top left); vertical velocity (m s<sup>−1</sup>) at <inline-formula><mml:math id="M188" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m (top right); potential temperature (K) at <inline-formula><mml:math id="M189" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> km (bottom left); and vertical velocity (m s<sup>−1</sup>) at <inline-formula><mml:math id="M191" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">3</mml:mn></mml:mrow></mml:math></inline-formula> km (bottom right) at <inline-formula><mml:math id="M192" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> h.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f05.jpg"/>

          </fig>

      <p id="d2e6498">Figure <xref ref-type="fig" rid="F6"/> shows the spectral power of FFTs of horizontal wind, vertical wind, and potential temperature at a height of <inline-formula><mml:math id="M193" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m at <inline-formula><mml:math id="M194" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> h. The resolution of potential temperature (treated quite similarly to tracers in the dynamics) is somewhat better than that of the horizontal and vertical velocities. This is likely due to differences in the diffusion where velocities use a stress tensor and tracers use a second-order diffusion operator. All of these quantities are resolved (from a spectra magnitude perspective) at a scale of roughly <inline-formula><mml:math id="M195" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>-</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mi mathvariant="normal">Δ</mml:mi><mml:mi>x</mml:mi></mml:mrow></mml:math></inline-formula>, keeping in mind that spectra do not always provide seemingly physically realizable results for physical reasons <xref ref-type="bibr" rid="bib1.bibx50" id="paren.55"/>. In this simulation, though, the flow is absent of Runge oscillations, grid point convection cells, and grid-scale energy accumulation.</p>

      <fig id="F6"><label>Figure 6</label><caption><p id="d2e6549">For the convective ABL test case, plot of spectral power as the squared absolute value of transformed complex FFT values as an average of 1-D sweeps in the <inline-formula><mml:math id="M196" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M197" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> directions for various quantities at <inline-formula><mml:math id="M198" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">75</mml:mn></mml:mrow></mml:math></inline-formula> m at <inline-formula><mml:math id="M199" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> h.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f06.png"/>

          </fig>

      <p id="d2e6596">Figure <xref ref-type="fig" rid="F7"/> plots mean velocity magnitude along with the mean range of one standard deviation (with regard to deviations in time), averaged between 2 and 3 h of simulation, for the portUrb simulation along with the mean and one standard deviation range of observations from the Sandia National Laboratories Scaled Wind Farm Technology (SWiFT) field experiment <xref ref-type="bibr" rid="bib1.bibx21" id="paren.56"/> and four model mean velocities for comparison: WRF, SOWFA, HiGrad <xref ref-type="bibr" rid="bib1.bibx34" id="paren.57"/>, and FastEddy <xref ref-type="bibr" rid="bib1.bibx55" id="paren.58"/>. The portUrb results are the closest to observations, though this is partly due to a quick tuning for geostrophic wind forcing and surface heat flux values (similar to the tuning procedure of <xref ref-type="bibr" rid="bib1.bibx34" id="text.59"/> in Table 2). Two different simulations were run for portUrb: (1) with <inline-formula><mml:math id="M200" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup> with 0.35 K m s<sup>−1</sup> heat flux; and (2) <inline-formula><mml:math id="M203" display="inline"><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi mathvariant="normal">G</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup> with 0.4 K m s<sup>−1</sup> heat flux. The latter option performed better, and those are the results shown here.</p>

      <fig id="F7" specific-use="star"><label>Figure 7</label><caption><p id="d2e6694">For the convective ABL test case, 2–3 h time-averaged velocity magnitude (m s<sup>−1</sup>) and the mean range of one standard deviation (in time) for portUrb (the model from this study) and observations <xref ref-type="bibr" rid="bib1.bibx21" id="paren.60"/>; as well as four other model means <xref ref-type="bibr" rid="bib1.bibx55 bib1.bibx34" id="paren.61"/> as references.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f07.png"/>

          </fig>

      <p id="d2e6721">Figure <xref ref-type="fig" rid="F8"/> plots time-averaged total TKE between 2 to 3 h as well as observed TKE and results from three other models. PortUrb gives very similar TKE results to the SOWFA code and is close to observations in <inline-formula><mml:math id="M207" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">10</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">50</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m. None of the LES models maintain a consistent TKE in <inline-formula><mml:math id="M208" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">50</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">250</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m as seen in the observations, however. This may simply be due to the observed boundary layer being more developed than the simulations' boundary layers.</p>

      <fig id="F8"><label>Figure 8</label><caption><p id="d2e6764">For the convective ABL test case, 2–3 h time-averaged total TKE for portUrb (the model from this study) and observations <xref ref-type="bibr" rid="bib1.bibx21" id="paren.62"/>; as well as three other model means <xref ref-type="bibr" rid="bib1.bibx34" id="paren.63"/> as references.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f08.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S3.SS3">
  <label>3.3</label><title>Supercell</title>
<sec id="Ch1.S3.SS3.SSS1">
  <label>3.3.1</label><title>Specification</title>
      <p id="d2e6795">The splitting supercell test case <xref ref-type="bibr" rid="bib1.bibx66 bib1.bibx11 bib1.bibx67 bib1.bibx36 bib1.bibx23 bib1.bibx70" id="paren.64"/> simulates a vertical profile with significant Convectively Available Potential Energy (CAPE), vertical shear, and veering with convection initiated by a positive temperature perturbation. The horizontal velocities as well as water vapor dry mixing ratio are initialized according to the sounding used by <xref ref-type="bibr" rid="bib1.bibx36" id="text.65"/> that is specified in the WRF 4.6.1 idealized test case titled “quarter_ss”. The horizontal velocities follow a “quarter circle” hodograph up to 2.3 km with a continued linear shear in the <inline-formula><mml:math id="M209" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-direction up to 7km. The total sheer length is 40 km. Different models commonly differ substantially in solutions as seen in the supercell inter-comparison between different microphysics choices <xref ref-type="bibr" rid="bib1.bibx36" id="paren.66"/> and supercell inter-comparison between dynamical cores with identical microphysics <xref ref-type="bibr" rid="bib1.bibx70" id="paren.67"/> on a reduced radius sphere. One important difference between this study and that of <xref ref-type="bibr" rid="bib1.bibx36" id="text.68"/> is that the time step size for microphysics in this study is about 10 <inline-formula><mml:math id="M210" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> smaller, meaning microphysics is called about 10 <inline-formula><mml:math id="M211" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> more frequently. The microphysics time step size is known to have a strong influence on the simulation. This study also uses much higher-order-accurate reconstructions in the Finite-Volume approach than what is used in <xref ref-type="bibr" rid="bib1.bibx36" id="text.69"/>. Also, it is unclear if the study in <xref ref-type="bibr" rid="bib1.bibx36" id="text.70"/> uses a sub-grid-scale turbulence closure similar to the one used in this study.</p>
      <p id="d2e6841">The initial potential temperature profile of <xref ref-type="bibr" rid="bib1.bibx23" id="text.71"/> used in the WRF idealized supercell test case essentially sets up a constant lapse rate from 300 K at the surface to 213 K at the tropopause. Since this model's coupler state is based on temperature, that constant lapse rate is used directly for simplicity:

              <disp-formula id="Ch1.E21" content-type="numbered"><label>21</label><mml:math id="M212" display="block"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">initial</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi>z</mml:mi></mml:mfenced><mml:mo>=</mml:mo><mml:mfenced open="{" close=""><mml:mtable class="cases" columnspacing="1em" rowspacing="0.2ex" columnalign="left left" framespacing="0em"><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mfenced close=")" open="("><mml:mstyle displaystyle="false"><mml:mstyle displaystyle="false"><mml:mfrac style="text"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mstyle></mml:mstyle></mml:mfenced><mml:mi>z</mml:mi></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>z</mml:mi><mml:mo>≤</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mtext>if</mml:mtext><mml:mspace linebreak="nobreak" width="0.25em"/><mml:mi>z</mml:mi><mml:mo>&gt;</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mfenced></mml:mrow></mml:math></disp-formula>

            where <inline-formula><mml:math id="M213" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">12</mml:mn></mml:mrow></mml:math></inline-formula> km, <inline-formula><mml:math id="M214" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">300</mml:mn></mml:mrow></mml:math></inline-formula> K, and <inline-formula><mml:math id="M215" display="inline"><mml:mrow><mml:msub><mml:mi>T</mml:mi><mml:mi mathvariant="normal">trop</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">213</mml:mn></mml:mrow></mml:math></inline-formula> K. Water vapor dry mixing ratio (<inline-formula><mml:math id="M216" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>), <inline-formula><mml:math id="M217" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity, and <inline-formula><mml:math id="M218" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity are all interpolated from a table provided by WRF 4.6.1, specifying the hodograph and moisture used in <xref ref-type="bibr" rid="bib1.bibx36" id="text.72"/>. With temperature and water vapor dry mixing ratio specified, the hydrostatic relationship and the moist equation of state are combined to form a hydrostatic integration of the full pressure as follows:

              <disp-formula id="Ch1.E22" content-type="numbered"><label>22</label><mml:math id="M219" display="block"><mml:mrow><mml:mtable class="split" rowspacing="0.2ex" displaystyle="true" columnalign="right left"><mml:mtr><mml:mtd><mml:mrow><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>ln⁡</mml:mi><mml:mi>p</mml:mi></mml:mrow><mml:mrow><mml:mi mathvariant="normal">d</mml:mi><mml:mi>z</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>T</mml:mi></mml:mrow></mml:mfrac></mml:mstyle></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd/><mml:mtd><mml:mrow><mml:mo>⇒</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mi>exp⁡</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:munderover><mml:mo movablelimits="false">∫</mml:mo><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:mi mathvariant="italic">ζ</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:munderover><mml:mstyle displaystyle="true"><mml:mfrac style="display"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">1</mml:mn><mml:mo>+</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mfenced open="(" close=")"><mml:mi mathvariant="italic">ζ</mml:mi></mml:mfenced></mml:mrow></mml:mfenced><mml:mi>g</mml:mi></mml:mrow><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">d</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub><mml:mfenced close=")" open="("><mml:mi mathvariant="italic">ζ</mml:mi></mml:mfenced><mml:msub><mml:mi>R</mml:mi><mml:mi mathvariant="normal">v</mml:mi></mml:msub></mml:mrow></mml:mfenced><mml:mi>T</mml:mi><mml:mfenced close=")" open="("><mml:mi mathvariant="italic">ζ</mml:mi></mml:mfenced></mml:mrow></mml:mfrac></mml:mstyle><mml:mi mathvariant="normal">d</mml:mi><mml:mi mathvariant="italic">ζ</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>

            Initialization uses 9-point GLL quadrature within each cell <inline-formula><mml:math id="M220" display="inline"><mml:mrow><mml:msub><mml:mi mathvariant="normal">Ω</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, and 9-point GLL quadrature is used to integrate the above hydrostatic relationship within the intervals created by the first set of nine GLL points within cells. Surface pressure is assumed to be <inline-formula><mml:math id="M221" display="inline"><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> Pa. This results in a hydrostatically balanced initial state. With pressure, temperature, and water vapor dry mixing ratio specified at GLL points within each cell, the dry air and vapor densities can be recovered, providing initialization of all model variables at GLL points within each cell.</p>
      <p id="d2e7208">A domain of <inline-formula><mml:math id="M222" display="inline"><mml:mrow><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">200</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula> km is used to simulate for two model hours at a grid spacing of 500 m in the vertical direction and 1 km in the horizontal directions, running the microphysics every dynamical core time step of 0.267 s (limited by an acoustic CFL value of 0.6). The portable C<inline-formula><mml:math id="M223" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> microphysics were ported from the Fortran Morrison 2-moment microphysics of WRF 4.6.1 with default settings. Run side-by-side in a supercell simulation, the accelerated physics on an Nvidia A100 GPU give a mean of <inline-formula><mml:math id="M224" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">9</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> relative differences per time step or less for all moist species, number concentrations, and temperature updates. All moist species and number concentrations are transported by the dynamical core. All mass-providing moist species were also added to the total density in the dynamical core for proper mass-loading in buoyant and advective dynamics. The “ihail” option is enabled in the code, meaning hail-like graupel parameters are used.</p>
      <p id="d2e7251">The top 2 % of the domain is a sponge layer nudging temperature and velocities toward initial values with a decay of <inline-formula><mml:math id="M225" display="inline"><mml:mrow><mml:msup><mml:mi>z</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> away from the top boundary. The top and bottom boundaries are free-slip solid walls with an isentropic thermal condition, and the horizontal boundaries are periodic. No surface fluxes are applied in this simulation. Output is performed every 60 model seconds.</p>
</sec>
<sec id="Ch1.S3.SS3.SSS2">
  <label>3.3.2</label><title>Results</title>
      <p id="d2e7273">Figure <xref ref-type="fig" rid="F9"/> plots iso-surfaces of different cloud and precipitation properties at 30, 60, 90, and 120 min of simulation. The initial warm thermal rises and begins to precipitate. As the storm evolves (asymmetrically due to the quarter circle hodograph), the initial thermal splits into two cells in the <inline-formula><mml:math id="M226" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>-direction.</p>

      <fig id="F9" specific-use="star"><label>Figure 9</label><caption><p id="d2e7287">For the supercell test case, iso-surfaces of the sum of cloud liquid, cloud ice, and cloud snow densities (white) at a value of 0.0005 kg m<sup>−3</sup>; and the sum of rain water and graupel densities (blue) at a value of 0.001 kg m<sup>−3</sup>.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f09.png"/>

          </fig>

      <p id="d2e7320">Figure <xref ref-type="fig" rid="F10"/> plots time traces of minimum surface potential temperature perturbation, <inline-formula><mml:math id="M229" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula>, defined as departure from the initial state; the portion of the surface inside the cold pool, defined as <inline-formula><mml:math id="M230" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:math></inline-formula> K; the accumulated surface precipitation; the maximum updraft velocity; and the minimum low-level downdraft (<inline-formula><mml:math id="M231" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>&lt;</mml:mo><mml:mn mathvariant="normal">3.5</mml:mn></mml:mrow></mml:math></inline-formula> km). The minimum <inline-formula><mml:math id="M232" display="inline"><mml:mrow><mml:msup><mml:mi mathvariant="italic">θ</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> is very similar to Fig. 6a of <xref ref-type="bibr" rid="bib1.bibx36" id="text.73"/> in terms of the trend and magnitude, and it is within the variability at 0, 60, and 120 min of simulation time plotted in light blue in Fig. <xref ref-type="fig" rid="F10"/>. While surface cold pool fraction is a bit lower than Fig. 6b in <xref ref-type="bibr" rid="bib1.bibx36" id="text.74"/>, it is in line with the variability of that study shown in light blue shading. The surface accumulated precipitation is also in line with the variability in <xref ref-type="bibr" rid="bib1.bibx36" id="text.75"/>. The minimum low-level downdraft and maximum global updraft over time is quite similar in both trend and magnitude to the MOR-BASE configuration of <xref ref-type="bibr" rid="bib1.bibx36" id="text.76"/> shown using dashed lines in Fig. <xref ref-type="fig" rid="F10"/>d.</p>

      <fig id="F10" specific-use="star"><label>Figure 10</label><caption><p id="d2e7394">For the supercell test case, traces of various quantities over the course of the two-hour simulation. In <bold>(a)</bold>, <bold>(b)</bold>, and <bold>(c)</bold>, the shaded region denotes the range over perturbations of different microphysics options in <xref ref-type="bibr" rid="bib1.bibx36" id="text.77"/>. In <bold>(d)</bold>, “Morr” represents the MOR-BASE data from <xref ref-type="bibr" rid="bib1.bibx36" id="text.78"/> since values were not given for each perturbation of microphysics options. </p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f10.png"/>

          </fig>

      <p id="d2e7422">Figure <xref ref-type="fig" rid="F11"/> shows horizontally averaged microphysics quantities after one and two hours of simulation along with reference plots of the MOR-BASE configuration of <xref ref-type="bibr" rid="bib1.bibx36" id="text.79"/> in dashed lines. The rain values, <inline-formula><mml:math id="M233" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, are quite similar to those of MOR-BASE. Cloud liquid, <inline-formula><mml:math id="M234" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula>, also has very similar structure and magnitude. In these simulations, the height to which cloud ice and precipitated species are forced is lower than shown in <xref ref-type="bibr" rid="bib1.bibx36" id="text.80"/>. Given the similar updraft speeds, this could be due to less diffusion of the temperature inversion in this study. Figure <xref ref-type="fig" rid="F2"/>c suggests at the second temperature discontinuity that the diffusion of features like this is low. In this study, the inversion height grows by quite a bit between one and two hours of simulation, while in <xref ref-type="bibr" rid="bib1.bibx36" id="text.81"/>, the inversion height doesn't appear to change significantly. This study has lower amounts of frozen species aloft, but the height of extrema in this study follow the same structure as those in <xref ref-type="bibr" rid="bib1.bibx36" id="text.82"/> shown using dashed lines in Fig. <xref ref-type="fig" rid="F11"/>.</p>

      <fig id="F11" specific-use="star"><label>Figure 11</label><caption><p id="d2e7468">For the supercell test case, horizontally averaged cloud and hydrometeor wet mixing ratios at one and two model hours. <inline-formula><mml:math id="M235" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">c</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is cloud liquid, <inline-formula><mml:math id="M236" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">r</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is precipitated rain, <inline-formula><mml:math id="M237" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">i</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is cloud ice, <inline-formula><mml:math id="M238" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">s</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is precipitated snow, and <inline-formula><mml:math id="M239" display="inline"><mml:mrow><mml:msub><mml:mi>q</mml:mi><mml:mi mathvariant="normal">g</mml:mi></mml:msub></mml:mrow></mml:math></inline-formula> is precipitated graupel. “Morr” comparison points denotes the values for the MOR-BASE simulations in <xref ref-type="bibr" rid="bib1.bibx36" id="text.83"/>.</p></caption>
            <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f11.png"/>

          </fig>

</sec>
</sec>
<sec id="Ch1.S3.SS4">
  <label>3.4</label><title>Staggered Surface-Mounted Cube Array</title>
      <p id="d2e7546">This test case compares LES solutions of flow past a large array of surface-mounted cubes against results from a wind tunnel experiment <xref ref-type="bibr" rid="bib1.bibx6 bib1.bibx63 bib1.bibx37" id="paren.84"/>. The simulation approximates conditions at the center of the cube array, where measurements were made, by using periodic horizontal boundary conditions with four staggered cubes. The cubes are of a length, width, and height of <inline-formula><mml:math id="M240" display="inline"><mml:mrow><mml:mi>h</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">20</mml:mn></mml:mrow></mml:math></inline-formula> mm. The domain is 4 h <inline-formula><mml:math id="M241" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 4 h <inline-formula><mml:math id="M242" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 10 h in the <inline-formula><mml:math id="M243" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M244" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M245" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, respectively. The bottom and top boundaries are free-slip solid walls with isentropic thermal conditions. A kinematic viscosity of <inline-formula><mml:math id="M246" display="inline"><mml:mrow><mml:mi mathvariant="italic">ν</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1.5</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m<sup>2</sup> s<sup>−1</sup> is used, and a grid spacing of 1 mm is used in all directions. Output is performed every 0.1 s, and the simulation is run for 5 s total.</p>

      <fig id="F12"><label>Figure 12</label><caption><p id="d2e7645">For the staggered surface-mounted cube array, iso-surfaces of the cube surfaces (white), and iso-surfaces of <inline-formula><mml:math id="M249" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>-criterion at a value of <inline-formula><mml:math id="M250" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> s<sup>−2</sup> with color shading coming from wind speed (m s<sup>−1</sup>).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f12.png"/>

        </fig>

      <p id="d2e7703">Gravity is not enabled for this simulation, initial pressure is <inline-formula><mml:math id="M253" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mn mathvariant="normal">5</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> Pa, initial temperature/potential temperature (they are the same in this case) is <inline-formula><mml:math id="M254" display="inline"><mml:mn mathvariant="normal">300</mml:mn></mml:math></inline-formula> K, and initial velocity is 10 m s<sup>−1</sup> in the <inline-formula><mml:math id="M256" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction and zero in the <inline-formula><mml:math id="M257" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M258" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions. A pressure gradient forcing is used to penalize deviations from 5.82 m s<sup>−1</sup> in the <inline-formula><mml:math id="M260" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction at a height of 0.043 m (the average of the observed velocities at the highest points above the ground) over a time scale of 100 time steps. A surface flux is applied with a roughness length of <inline-formula><mml:math id="M261" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m at the model surface and <inline-formula><mml:math id="M262" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m at cube surfaces. Surface roughness lengths in the set <inline-formula><mml:math id="M263" display="inline"><mml:mrow><mml:mfenced close="}" open="{"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">7</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">5</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> were tested, fully tensored in 9 experiments, for the model surface and cube surfaces using portUrb's ensemble capability.</p>
      <p id="d2e7842">The four cubes are placed on the following domains: (1) <inline-formula><mml:math id="M264" display="inline"><mml:mrow><mml:mfenced close="]" open="["><mml:mrow><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; (2) <inline-formula><mml:math id="M265" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; (3) <inline-formula><mml:math id="M266" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">5</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; and (4) <inline-formula><mml:math id="M267" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mo>∪</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">5</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">7</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">7</mml:mn><mml:mi>h</mml:mi><mml:mo>/</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">4</mml:mn><mml:mi>h</mml:mi></mml:mrow></mml:mfenced><mml:mo>×</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>. In the experiment, the flow is sampled at various vertical columns at four horizontal locations, each of which have four corresponding points of geometric similarity in the domain. The four point locations are: (1) <inline-formula><mml:math id="M268" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, which corresponds to the center of a cube location; (2) <inline-formula><mml:math id="M269" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">3</mml:mn><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; (3) <inline-formula><mml:math id="M270" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced open="(" close=")"><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; and (4) <inline-formula><mml:math id="M271" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>.</p>
      <p id="d2e8210">Given there are four cubes, each of these points have three other points that are geometrically identical inside the domain (due to periodic horizontal boundary conditions and symmetry of cube placement within the domain), creating four points total at which <inline-formula><mml:math id="M272" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M273" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, <inline-formula><mml:math id="M274" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M275" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> will be each be sampled – the results of which are averaged in order to compare against wind tunnel observations. These other three geometrically identical points correspond to shifts of <inline-formula><mml:math id="M276" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; <inline-formula><mml:math id="M277" display="inline"><mml:mrow><mml:mfenced open="(" close=")"><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>; and <inline-formula><mml:math id="M278" display="inline"><mml:mrow><mml:mfenced close=")" open="("><mml:mrow><mml:mn mathvariant="normal">2</mml:mn><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mo>-</mml:mo><mml:mi>h</mml:mi></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> – where periodic wrapping is used to remain in the domain. Where points lie on a domain boundary, the smallest location magnitude (zero) is used.</p>
      <p id="d2e8311">The time-averaged <inline-formula><mml:math id="M279" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity and <inline-formula><mml:math id="M280" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> outputs over intervals of 0.1s are all interpolated to observation locations and compared against observations to determine the best fits. The one second period with the best fit according to a relative <inline-formula><mml:math id="M281" display="inline"><mml:mrow><mml:msub><mml:mi>L</mml:mi><mml:mn mathvariant="normal">2</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> norm averaged among the six comparisons (four <inline-formula><mml:math id="M282" display="inline"><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> comparisons and two <inline-formula><mml:math id="M283" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> comparisons) is used to compared against observations. The time period <inline-formula><mml:math id="M284" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0.4</mml:mn><mml:mspace width="0.125em" linebreak="nobreak"/><mml:mtext>s</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>s</mml:mtext></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> is used for comparison.</p>
      <p id="d2e8401">Figure <xref ref-type="fig" rid="F12"/> shows the placement of cube isosurfaces as well as <inline-formula><mml:math id="M285" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>-criterion to visualize the vortices in the flow at <inline-formula><mml:math id="M286" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> s. Figure <xref ref-type="fig" rid="F13"/> plots these quantities against observations at each of the points. The perturbation quantities <inline-formula><mml:math id="M287" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M288" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> are temporal deviations from the current simulation-spanning temporal mean and are accrued at each grid cell and each time step. The time-averaged <inline-formula><mml:math id="M289" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula> velocity and <inline-formula><mml:math id="M290" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> correlations are both well captured by the LES simulation during the performance time period. The <inline-formula><mml:math id="M291" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> extrema above the cube surface at <inline-formula><mml:math id="M292" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is not well-captured in terms of scale (an error common to other LES simulations of this case as well), but the structure and existence of a local maximum is captured. The correlation at <inline-formula><mml:math id="M293" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> is very well captured up to 1.5 cube heights (particularly the slope up to the maximum and the maximum magnitude as well), but it is underestimated above that height. In summary, comparison against anemometry data shows that the LES model, the immersed boundary implementation, and the surface friction implementation are well formulated for capturing realistic turbulent dynamics around obstacles.</p>

      <fig id="F13" specific-use="star"><label>Figure 13</label><caption><p id="d2e8519">For the staggered surface-mounted cube array test case, plots of time-averaged <inline-formula><mml:math id="M294" display="inline"><mml:mover accent="true"><mml:mi>u</mml:mi><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> over the time domain <inline-formula><mml:math id="M295" display="inline"><mml:mrow><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0.4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>s</mml:mtext><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1.4</mml:mn><mml:mspace linebreak="nobreak" width="0.125em"/><mml:mtext>s</mml:mtext></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> at all four points, time-averaged <inline-formula><mml:math id="M296" display="inline"><mml:mover accent="true"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow><mml:mo mathvariant="normal">‾</mml:mo></mml:mover></mml:math></inline-formula> at points <inline-formula><mml:math id="M297" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">1</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M298" display="inline"><mml:mrow><mml:msub><mml:mi>P</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msub></mml:mrow></mml:math></inline-formula>, and experimental results. Perturbations <inline-formula><mml:math id="M299" display="inline"><mml:mrow><mml:msup><mml:mi>u</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M300" display="inline"><mml:mrow><mml:msup><mml:mi>w</mml:mi><mml:mo>′</mml:mo></mml:msup></mml:mrow></mml:math></inline-formula> are deviations from the current temporal average at a given instance in the simulation. </p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f13.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS5">
  <label>3.5</label><title>Coarsely Resolved Sphere</title>
      <p id="d2e8630">In order to tune the immersed boundary approach for partially immersed cells, a sphere is placed in a domain with periodic conditions in the <inline-formula><mml:math id="M301" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M302" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions with specified laminar inflow/outflow boundaries in the <inline-formula><mml:math id="M303" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction and the gravity term (and hence thermal and mass stratification) turned off. The domain is 2 km <inline-formula><mml:math id="M304" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 km <inline-formula><mml:math id="M305" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1 km in the <inline-formula><mml:math id="M306" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M307" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M308" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, respectively. The sphere center is located at 0.4 km in the <inline-formula><mml:math id="M309" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula> direction and is centered in the <inline-formula><mml:math id="M310" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula> and <inline-formula><mml:math id="M311" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions with a radius of 100 m. A wind velocity of <inline-formula><mml:math id="M312" display="inline"><mml:mrow><mml:mi>u</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> m s<sup>−1</sup>, <inline-formula><mml:math id="M314" display="inline"><mml:mrow><mml:mi>v</mml:mi><mml:mo>=</mml:mo><mml:mi>w</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0</mml:mn></mml:mrow></mml:math></inline-formula> is specified at <inline-formula><mml:math id="M315" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>-direction boundaries through a horizontal sponge layer over 2 % of the domain length with a decay of <inline-formula><mml:math id="M316" display="inline"><mml:mrow><mml:msup><mml:mi>x</mml:mi><mml:mn mathvariant="normal">3</mml:mn></mml:msup></mml:mrow></mml:math></inline-formula> to serve as inflow and outflow non-reflecting boundaries.</p>

      <fig id="F14" specific-use="star"><label>Figure 14</label><caption><p id="d2e8772">For the flow past a sphere test case, stream tubes are plotted in a <inline-formula><mml:math id="M317" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> grid of points flowing past the sphere at high resolution and at low resolution, colored by the velocity magnitude. The sphere is represented with isosurfaces in white at a threshold of 0.5 immersed proportion. </p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f14.png"/>

        </fig>

      <p id="d2e8793">A high resolution reference solution is performed at 10 m grid spacing (20 cells across the sphere diameter), and low resolution runs are performed at 50 m grid spacing (4 cells across the sphere diameter) to test different exponents to the immersed proportion in Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>). Testing integer increments of the exponent in Eq. (<xref ref-type="disp-formula" rid="Ch1.E16"/>), the value of five was demonstrated to give the lowest errors relative to the high resolution time-averaged solution coarsened to the low resolution grid. The time average is taken between 15 and 60 min of a 60 min simulation. The sum of differences for each individual time-averaged velocity component is used for the comparison between high and resolution solutions.</p>
      <p id="d2e8802">A plot of stream tubes flowing past the sphere at high and low resolution is given in Fig. <xref ref-type="fig" rid="F14"/>. The low resolution solution has lower velocities because the cells near the sphere are coarser and have partially immersed material in them, slowing down the flow near the sphere. The flow slightly further away from the sphere is also averaging in lower wind speeds in the coarser-scale cells.</p>
</sec>
<sec id="Ch1.S3.SS6">
  <label>3.6</label><title>Flow Through Manhattan Buildings</title>
      <p id="d2e8815">To observe the character of the flow through realistic buildings and the influences of building friction, this test case performs flow through a subset of buildings in Manhattan southwest of Central Park, rotated by 29° (to achieve a roughly North-South orientation of the buildings) over a domain of 1.31 <inline-formula><mml:math id="M318" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1.716 <inline-formula><mml:math id="M319" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 0.572 km in the <inline-formula><mml:math id="M320" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M321" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M322" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> dimensions. There are two primary goals of these simulations: (1) to understand if the code is well-posed for this kind of flow, free from significant numerical artifacts, and giving physically realizable results; and (2) to demonstrate the influences of different building roughness lengths on flow through and above the buildings. Eleveth-order WENO interpolation is used for this simulations with no modifications from the other simulations in this study.</p>
      <p id="d2e8853">To ingest building geometry, the Blosm (<uri>https://github.com/vvoovv/blosm</uri>, last access: 1 December 2025) plugin to the application Blender (<uri>https://www.blender.org/</uri>, last access: 1 December 2025) is used to bring in 3-D building geometry from OpenStreetMap (<uri>https://www.openstreetmap.org/</uri>, last access: 1 December 2025; <uri>https://openstreetmap.org/copyright</uri>, last access: 1 December 2025) (the data from which is available under the Open Database License or ODbL), which automatically transforms WGS84 latitude-longitude coordinates into local East-North-Up (ENU) Cartesian coordinates in units of meters. Buildings outside the rectangular horizontal area of interest are removed, and the file is saved as a triangulated Wavefront “obj” file (meaning only triangles are allowed as surfaces rather than generic polygons). The triangulated mesh is then read into portable C<inline-formula><mml:math id="M323" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> using custom code, ignoring material properties and vertex normals – essentially only storing a set of triangular faces, each defined by three vertices in 3-D space.</p>
      <p id="d2e8878">Finally, for each horizontal point over a 9 <inline-formula><mml:math id="M324" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 9 point Gauss-Legendre-Lobatto (GLL) grid of points within each horizontal cell, the maximum height of any intersecting mesh triangle at a given point is computed and stored. During initialization, anything below that maximum point is declared to be embedded, and the proportion of embedded material in each cell is computed with GLL quadrature in all dimensions. While this process could potentially be improved by doing raycasting to determine non-monotonically embedded regions in the vertical, this requires a well-posed mesh to avoid incorrect detection of which portions of the vertical are immersed and which portions are not. Because of the extra mesh requirements and reliance on external tools to create these meshes, this is left for future research. The extension is straightforward, however, as raycasting is a relatively cheap and simple process.</p>
      <p id="d2e8888">A 20 m padding is added to the horizontal direction – roughly the mean distance between blocks of buildings in this domain, and a 100 m padding is added above the highest building in the domain, which is 470 m. A neutrally buoyant atmosphere is specified throughout the vertical domain with a sponge layer applied to the top 2 % of the domain to absorb waves that would otherwise reflect. A wind speed of 20 m s<sup>−1</sup> from the West (rotated by 29° to account for rotated building geometry) is initialized everywhere except in immersed cells. Deviations from a horizontal mean of 20 m s<sup>−1</sup> flow from the West at a height of 500 m are penalized to enforce a consistent wind speed throughout the course of the simulation (i.e., pressure gradient forcing). Periodic boundary conditions are applied in the horizontal direction to quickly spin up turbulence, essentially assuming infinite repetition of the city block geometrically. In the vertical direction, free-slip boundaries are applied with a surface friction at the bottom boundary specified by a roughness length of 0.05 m.</p>
      <p id="d2e8916">Three different building material roughness lengths are used (all sharing the same surface roughness length): <inline-formula><mml:math id="M327" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, 0.05, and 0.5 m. The value of <inline-formula><mml:math id="M328" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m is essentially free-slip when using a grid spacing of 2 m; <inline-formula><mml:math id="M329" display="inline"><mml:mn mathvariant="normal">0.05</mml:mn></mml:math></inline-formula> m is likely the roughly physical value (accounting for unresolved building features like window insets, bricks, etc.); and 0.5 m is likely unrealistically large. Simulations are performed for 100 min: a 10 min spin-up period followed by a 90 min simulation period for time-averaging and comparison between different building roughness lengths. On 120 Nvidia A100 GPUs, the 100 min simulations took about 24 h of walltime a piece to complete, with about 1.3 million cells per GPU (161 million cells total). 2.25 million time steps were required to simulate 100 min in model time.</p>
      <p id="d2e8954">Figure <xref ref-type="fig" rid="F15"/> gives iso-surface plots of the immersed proportion (i.e., buildings) in white, and <inline-formula><mml:math id="M330" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>-criterion in blue (shaded by velocity magnitude) at <inline-formula><mml:math id="M331" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> min of simulation using a building surface roughness of 0.05 m. Because <inline-formula><mml:math id="M332" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula> criterion is plotted at a positive iso-surface value, vortex-dominated flow is shown rather than shear-dominated flow – thus the gap between buildings and visualized vortices as sheared flow transitions to turbulent vortices on the lee side of buildings.</p>

      <fig id="F15" specific-use="star"><label>Figure 15</label><caption><p id="d2e8987">Iso-surface plots of flow through Manhattan buildings with 2 m grid spacing and a building surface roughness of <inline-formula><mml:math id="M333" display="inline"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn></mml:mrow></mml:math></inline-formula> m after 100 min of simulation. Immersed proportion iso-surfaces are given in white. <inline-formula><mml:math id="M334" display="inline"><mml:mi>Q</mml:mi></mml:math></inline-formula>-criterion iso-surfaces are at 1 s<sup>−2</sup>, colored by velocity magnitude (m s<sup>−1</sup>).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f15.jpg"/>

        </fig>

      <p id="d2e9042">Figure <xref ref-type="fig" rid="F16"/> plots, at <inline-formula><mml:math id="M337" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> m, the 90 min time-averaged velocity magnitude at a building surface roughness of <inline-formula><mml:math id="M338" display="inline"><mml:mrow><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula> m, (<inline-formula><mml:math id="M339" display="inline"><mml:mrow><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>), where discontinuities are the most likely to show up in the velocity time average. It also plots the difference, <inline-formula><mml:math id="M340" display="inline"><mml:mrow><mml:mfenced close="|" open="|"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.05</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, as well as the difference, <inline-formula><mml:math id="M341" display="inline"><mml:mrow><mml:mfenced open="|" close="|"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced close=")" open="("><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mn mathvariant="normal">10</mml:mn><mml:mrow><mml:mo>-</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:msup></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced><mml:mo>-</mml:mo><mml:mfenced close="|" open="|"><mml:mrow><mml:mi mathvariant="bold-italic">u</mml:mi><mml:mfenced open="(" close=")"><mml:mrow><mml:msub><mml:mi>z</mml:mi><mml:mn mathvariant="normal">0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:mn mathvariant="normal">0.5</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula>, to show how much slower the flow through frictioned buildings is. This is also plotted for <inline-formula><mml:math id="M342" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">101</mml:mn></mml:mrow></mml:math></inline-formula> m in Fig. <xref ref-type="fig" rid="F17"/>. In these plots, there is no sense of any discontinuities present in the solution at either of the vertical levels. As the building friction increases, as expected, the flow becomes slower through the buildings, though not universally so (even in the 90 min time average) due to the turbulent nature of the flow. Also, as expected, the decrease in flow velocity is concentrated more highly at building edges and is more diffuse farther away from buildings.</p>

      <fig id="F16" specific-use="star"><label>Figure 16</label><caption><p id="d2e9205">For the flow through Manhattan buildings test case, plots of 90 min time-averaged wind speed magnitude and differences (m s<sup>−1</sup>) for different building roughness lengths at a height of <inline-formula><mml:math id="M344" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> m (the surface layer of cells) for flow through Manhattan buildings.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f16.png"/>

        </fig>

      <fig id="F17" specific-use="star"><label>Figure 17</label><caption><p id="d2e9241">For the flow through Manhattan buildings test case, plots of 90 min time-averaged wind speed magnitude and differences (m s<sup>−1</sup>) for different building roughness lengths at a height of <inline-formula><mml:math id="M346" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">101</mml:mn></mml:mrow></mml:math></inline-formula> m for flow through Manhattan buildings.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f17.png"/>

        </fig>

      <p id="d2e9274">Street canyon ventilation is generally greater with less frictioned buildings as expected, meaning pollutants and temperature extrema are likely more effectively mixed out of the surface layer. This is evidenced by the velocity magnitudes being larger with lower friction but also by the increased resolved and unresolved TKE shown in Figs. <xref ref-type="fig" rid="F18"/> and <xref ref-type="fig" rid="F19"/>, respectively. These plots indicate that fluctuations are also generally greater with lower building surface friction. There is a location at around <inline-formula><mml:math id="M347" display="inline"><mml:mrow><mml:mi>x</mml:mi><mml:mo>≈</mml:mo><mml:mn mathvariant="normal">260</mml:mn></mml:mrow></mml:math></inline-formula> m, <inline-formula><mml:math id="M348" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">500</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m, where the surface experiences significant mean velocity and fluctuations in the 90 min average, showing an interesting convergence from induced vertical flow through the buildings. It is not the only location of this nature, but it is the most significant, showing that mean surface-level flow can be quite intermittent spatially in urban environments both in mean values and in fluctuations.</p>

      <fig id="F18" specific-use="star"><label>Figure 18</label><caption><p id="d2e9313">For the flow through Manhattan buildings test case, plots of 90 min <italic>resolved</italic> TKE (perturbations are deviations from the time-average) and differences for different building roughness lengths at a height of <inline-formula><mml:math id="M349" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> m for flow through Manhattan buildings.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f18.png"/>

        </fig>

      <fig id="F19" specific-use="star"><label>Figure 19</label><caption><p id="d2e9339">For the flow through Manhattan buildings test case, plots of 90 min <italic>unresolved, sub-grid-scale</italic> TKE and differences for different building roughness lengths at a height of <inline-formula><mml:math id="M350" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1</mml:mn></mml:mrow></mml:math></inline-formula> m for flow through Manhattan buildings.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f19.png"/>

        </fig>

      <p id="d2e9363">While a realistic flow through urban settings would clearly require tuning the building and surface friction terms to match observed flow, this test case demonstrates physically realizable results coupled with expected outcomes regarding mean flow rate and fluctuations in an urban setting when perturbing the building surface friction settings with realistic geometry. Also, it appears that complex building geometry can be ingested directly into the model without any need for smoothing, pre-processing, or conditioning. The use of WENO limiting, an upwind Riemann solver, and slight softening of building edge immersed cells in terms of forcing time scale appear to be enough to handle any generic building geometry while avoiding visible artifacts in the solution.</p>
</sec>
<sec id="Ch1.S3.SS7">
  <label>3.7</label><title>City Flow Forced by Turbulent Precursor</title>
      <p id="d2e9374">This test case simulates the same building setup as Sect. <xref ref-type="sec" rid="Ch1.S3.SS6"/> except with a larger domain and the use of a concurrent turbulent precursor for forcing the inflow boundaries, open boundaries for outflow, and a stretched vertical grid reaching up to 1800 m. The city setup covers a domain of 1269 <inline-formula><mml:math id="M351" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 1675 m <inline-formula><mml:math id="M352" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 472 m in the <inline-formula><mml:math id="M353" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M354" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M355" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> dimensions, respectively. To allow for a well-posed turbulent precursor forcing, the domain size is doubled in the horizontal dimensions with the city placed in the center; and the vertical domain is extended to 1800 m in order to simulate the interaction of the city with the ABL inversion layer.</p>
      <p id="d2e9415">The horizontal grid spacing is set to 4 m. The vertical grid is stretched from approximately 4 m grid spacing in the domain <inline-formula><mml:math id="M356" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced open="[" close="]"><mml:mrow><mml:mn mathvariant="normal">0</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">480</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m to a grid spacing of 10 m in the domain <inline-formula><mml:math id="M357" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">600</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">1800</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m, where <inline-formula><mml:math id="M358" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">480</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m is the transition region. The transition region is over approximately 18 cells, and the grid spacing transition region is plotted in Fig. <xref ref-type="fig" rid="F20"/>. The same initial conditions in the neutral ABL test case in Sect. <xref ref-type="sec" rid="Ch1.S3.SS1"/> is used for this simulation as well including the geostrophic forcing to create an Ekman spiral. The simulation uses 137 million cells simulated over ten model hours to fully develop the ABL.</p>

      <fig id="F20"><label>Figure 20</label><caption><p id="d2e9478">Vertical grid spacing over the transition region in the city flow forced by turbulent precursor test case.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f20.png"/>

        </fig>

      <p id="d2e9488">Figure <xref ref-type="fig" rid="F21"/> plots the instantaneous horizontal wind speed at <inline-formula><mml:math id="M359" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h for the concurrent turbulent precursor simulation (left) and the forced simulation with the city included (right) at <inline-formula><mml:math id="M360" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> m (top) and at <inline-formula><mml:math id="M361" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1676</mml:mn></mml:mrow></mml:math></inline-formula> m (bottom). From these plots, it is clear that the precursor forcing is working correctly, as the same wind patterns are observed in the inflow at the left of the top and bottom plots. The open boundary conditions in the forced city simulation are also allowing the wind to flow outward without artifacts. As expected, the strongly stable ABL inversion remains intact in the precursor simulation, while it is mixed in the forced city simulation due to mechanically generated turbulence from the tall buildings, leading to gravity wave propagation in the stable layer above the inversion. Also, there is no evidence of artifacts arising from the stretched vertical grid in either the precursor or the forced simulations.</p>

      <fig id="F21" specific-use="star"><label>Figure 21</label><caption><p id="d2e9531">For the city flow forced by turbulent precursor test case, plot of instantaneous horizontal wind speed (m s<sup>−1</sup>) at <inline-formula><mml:math id="M363" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h for the concurrent turbulent precursor simulation (left) and the forced simulation with the city included (right) at <inline-formula><mml:math id="M364" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">100</mml:mn></mml:mrow></mml:math></inline-formula> m (top) and at <inline-formula><mml:math id="M365" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1676</mml:mn></mml:mrow></mml:math></inline-formula> m (bottom).</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f21.jpg"/>

        </fig>

      <p id="d2e9588">Figure <xref ref-type="fig" rid="F22"/> plots instantaneous potential temperature at <inline-formula><mml:math id="M366" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h for the concurrent turbulent precursor simulation (left) and the forced simulation with the city included (right) at <inline-formula><mml:math id="M367" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1676</mml:mn></mml:mrow></mml:math></inline-formula> m. From here, again, it is clear that the stable inversion remains intact in the precursor simulation and is mixed by turbulence generated by the buildings in the forced city simulation. Further, warmer potential temperature mixed downward from the stable boundary layer leads to slight warming in the leeward side of buildings where the vertical velocity is prone to descent.</p>

      <fig id="F22" specific-use="star"><label>Figure 22</label><caption><p id="d2e9619">For the city flow forced by turbulent precursor test case, plot of instantaneous potential temperature (K) at <inline-formula><mml:math id="M368" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">10</mml:mn></mml:mrow></mml:math></inline-formula> h for the concurrent turbulent precursor simulation (left) and the forced simulation with the city included (right) at <inline-formula><mml:math id="M369" display="inline"><mml:mrow><mml:mi>y</mml:mi><mml:mo>=</mml:mo><mml:mn mathvariant="normal">1676</mml:mn></mml:mrow></mml:math></inline-formula> m for the city forced by turbulent precursor simulation.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f22.png"/>

        </fig>

      <p id="d2e9652">Figure <xref ref-type="fig" rid="F23"/> plots the time-average over <inline-formula><mml:math id="M370" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> h of <inline-formula><mml:math id="M371" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity (left), <inline-formula><mml:math id="M372" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity (middle), and potential temperature (right) averaged over the city domain in the horizontal for precursor simulation and the city simulation forced by the precursor. From here, it is clear that the presence of the city leads to a reduction in wind speed in the atmospheric boundary layer as well as an increase in the potential temperature inversion height due to blocking and increased turbulence from the tall buildings. There is no indication of artifacts in these plots over the <inline-formula><mml:math id="M373" display="inline"><mml:mrow><mml:mi>z</mml:mi><mml:mo>∈</mml:mo><mml:mfenced close="]" open="["><mml:mrow><mml:mn mathvariant="normal">480</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">600</mml:mn></mml:mrow></mml:mfenced></mml:mrow></mml:math></inline-formula> m grid spacing transition region as well.</p>

      <fig id="F23" specific-use="star"><label>Figure 23</label><caption><p id="d2e9712">For the city flow forced by turbulent precursor test case, plot of the time-average over <inline-formula><mml:math id="M374" display="inline"><mml:mrow><mml:mi>t</mml:mi><mml:mo>∈</mml:mo><mml:mo>[</mml:mo><mml:mn mathvariant="normal">8</mml:mn><mml:mo>,</mml:mo><mml:mn mathvariant="normal">10</mml:mn><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula> h of <inline-formula><mml:math id="M375" display="inline"><mml:mi>u</mml:mi></mml:math></inline-formula>-velocity in m s<sup>−1</sup> (left), <inline-formula><mml:math id="M377" display="inline"><mml:mi>v</mml:mi></mml:math></inline-formula>-velocity in m s<sup>−1</sup> (middle), and potential temperature in K (right) averaged over the city domain in the horizontal for precursor simulation and the city simulation forced by the precursor.</p></caption>
          <graphic xlink:href="https://gmd.copernicus.org/articles/18/9605/2025/gmd-18-9605-2025-f23.png"/>

        </fig>

</sec>
<sec id="Ch1.S3.SS8">
  <label>3.8</label><title>Performance</title>
      <p id="d2e9787">To get a sense of the performance of portUrb on GPUs compared to a similar model, the convective ABL simulation is performed with 2048 <inline-formula><mml:math id="M379" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 2048 <inline-formula><mml:math id="M380" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 122 grid cells in the <inline-formula><mml:math id="M381" display="inline"><mml:mi>x</mml:mi></mml:math></inline-formula>, <inline-formula><mml:math id="M382" display="inline"><mml:mi>y</mml:mi></mml:math></inline-formula>, and <inline-formula><mml:math id="M383" display="inline"><mml:mi>z</mml:mi></mml:math></inline-formula> directions, respectively with a grid spacing of 20 m in all directions. The FastEddy model reports a performance of 7.3 time steps per wallclock second in <xref ref-type="bibr" rid="bib1.bibx55" id="text.85"/> using 32 Nvidia V100 GPUs. Since access to this model of GPU is no longer available to the current authors, portUrb is run on Nvidia A100 GPUs and AMD MI250X GPUs using a number of GPUs that roughly equates to the same aggregate memory bandwidth. One could also make the choice to equate the aggregate compute throughput in terms of floating point operations per second (flop s<sup>−1</sup>), but most GPU kernels in weather, climate, and LES models have relatively low arithmetic intensity. While the reconstruction kernels in portUrb are arithmetically intense, most other routines have the typical low arithmetic intensity of stencil-based fluids codes.</p>
      <p id="d2e9841">Each MI250X GPU is composed of two Graphics Compute Dies (GCDs), and therefore, the values for AMD MI250X GCDs will be used. The peak memory bandwidths of an Nvidia V100 GPU, an Nvidia A100 GPU, and an AMD MI250X GCD are 900, 1555, and 1638.4 GB s<sup>−1</sup>, respectively. While this would suggest using 18 A100 GPUs and 18 AMD MI250X GPUs to give the aggregate memory bandwidth of 32 Nvidia V100 GPUs, an MPI decomposition of <inline-formula><mml:math id="M386" display="inline"><mml:mrow><mml:mn mathvariant="normal">3</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">6</mml:mn></mml:mrow></mml:math></inline-formula> tasks is less advantageous in terms of parallel data transfers than an MPI decomposition of <inline-formula><mml:math id="M387" display="inline"><mml:mrow><mml:mn mathvariant="normal">4</mml:mn><mml:mo>×</mml:mo><mml:mn mathvariant="normal">4</mml:mn></mml:mrow></mml:math></inline-formula> tasks. Therefore, 16 GPUs are used as a comparison point in this study, even though the aggregate memory bandwidths are only 85 %–90 % of the 32 V100 GPUs, putting this study's results at a slight memory bandwidth disadvantage. GPU-aware MPI is used in all simulations so that GPUs on separate MPI tasks are communicating directly from GPU memory rather than moving data to and from host memory. For sake of readability and simplicity, no effort is made in portUrb to use constant memory, texture caches, or user-controlled L1 cache.</p>
      <p id="d2e9881">The performance of portUrb in terms of time steps per wallclock second for different model configurations (order of accuracy and use of a Weighted Essentially Non-Oscillatory limiter) are given in Table <xref ref-type="table" rid="T1"/>. The fifth-order-accurate configuration without the WENO limiter is likely the most comparable to the FastEddy code and gives comparable performance on Nvidia A100 GPUs using similar aggregate memory bandwidth. On A100 GPUs, 9th-order accuracy is 36 % more expensive than 5th-order accuracy without the WENO limiter and 53 % more expensive with the WENO limiter. The AMD MI250X GCD is generally about 40 % slower than the A100 using the same number of GCDs, even though the MI250X GCD has more memory bandwidth. This is likely due to the AMD HIP compiler showing higher register usage per kernel and having a small hardware managed L1 cache.</p>

<table-wrap id="T1"><label>Table 1</label><caption><p id="d2e9890">Number of time steps simulated per wallclock second for the convective ABL <italic>performance</italic> test case using 2048 <inline-formula><mml:math id="M388" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 2048 <inline-formula><mml:math id="M389" display="inline"><mml:mo>×</mml:mo></mml:math></inline-formula> 122 grid cells. “9th” and “5th” indicate ninth-order accuracy and fifth-order accuracy in the reconstructions, respectively. “WENO” and “nolim” indicate use and absence of the WENO limiter in reconstruction. The baseline comparison point is that FastEddy completed 7.3 time steps per wallclock second for this problem size on 32 Nvidia V100 GPUs.</p></caption><oasis:table frame="topbot"><oasis:tgroup cols="5">
     <oasis:colspec colnum="1" colname="col1" align="left"/>
     <oasis:colspec colnum="2" colname="col2" align="right"/>
     <oasis:colspec colnum="3" colname="col3" align="right"/>
     <oasis:colspec colnum="4" colname="col4" align="right"/>
     <oasis:colspec colnum="5" colname="col5" align="right"/>
     <oasis:thead>
       <oasis:row>
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">9th,</oasis:entry>
         <oasis:entry colname="col3">9th,</oasis:entry>
         <oasis:entry colname="col4">5th,</oasis:entry>
         <oasis:entry colname="col5">5th,</oasis:entry>
       </oasis:row>
       <oasis:row rowsep="1">
         <oasis:entry colname="col1"/>
         <oasis:entry colname="col2">WENO</oasis:entry>
         <oasis:entry colname="col3">nolim</oasis:entry>
         <oasis:entry colname="col4">WENO</oasis:entry>
         <oasis:entry colname="col5">nolim</oasis:entry>
       </oasis:row>
     </oasis:thead>
     <oasis:tbody>
       <oasis:row>
         <oasis:entry colname="col1">16 A100 GPUs</oasis:entry>
         <oasis:entry colname="col2">4.3</oasis:entry>
         <oasis:entry colname="col3">5.3</oasis:entry>
         <oasis:entry colname="col4">6.6</oasis:entry>
         <oasis:entry colname="col5">7.2</oasis:entry>
       </oasis:row>
       <oasis:row>
         <oasis:entry colname="col1">16 MI250X GCDs</oasis:entry>
         <oasis:entry colname="col2">3.2</oasis:entry>
         <oasis:entry colname="col3">3.5</oasis:entry>
         <oasis:entry colname="col4">4.8</oasis:entry>
         <oasis:entry colname="col5">5.2</oasis:entry>
       </oasis:row>
     </oasis:tbody>
   </oasis:tgroup></oasis:table></table-wrap>

</sec>
</sec>
<sec id="Ch1.S4" sec-type="conclusions">
  <label>4</label><title>Concluding Discussion and Future Directions</title>
      <p id="d2e10012">The portUrb code presented here aims toward portability, performance, accuracy, simplicity, readability, robustness, extensibility, and ensemble capabilities for moist, atmospheric Large Eddy Simulation workflows with an emphasis on free-slip immersed boundaries with surface friction to account for urban building geometries. The use of portable C<inline-formula><mml:math id="M390" display="inline"><mml:mrow><mml:mo>+</mml:mo><mml:mo>+</mml:mo></mml:mrow></mml:math></inline-formula> libraries enables portability and performance on CPUs as well as Nvidia, AMD, and Intel GPUs and future accelerated architectures. The use of eleventh-order Weighted Essentially Non-Oscillatory (WENO) interpolation enables accuracy and uses the compute capability of GPUs. The use of WENO limiting and upwind Riemann solvers improves robustness. The use of a simple and unambiguous coupler state definition eases extensibility. The inclusion of an ensemble capability that splits the MPI communicator and uses custom coupler settings for each ensemble member enables large ensemble groups within a single MPI program to more easily use Leadership Computing Facilities (LCFs) at capability scales. The model is currently cast in equal grid spacing Cartesian geometry with a variable vertical grid for simplicity and easy cell-finding with basic arithmetic. In all parts of the code, comments, clear looping structure, and clear operations seek to improve clarity and readability.</p>
      <p id="d2e10025">In Sect. <xref ref-type="sec" rid="Ch1.S3"/>, a number of numerical experiments investigate the behavior of this mathematical formulation and implementation in several contexts. Neutral and convective atmospheric boundary layers demonstrate accuracy of the dynamical core, surface fluxes, and turbulent closure scheme by comparison against other LES models and against observations (in the convective case). A splitting supercell test case validates the moist configuration of the model against other models and microphysics formulations. Flow through cubes validates the frictioned immersed boundary approach against wind tunnel observations of mean values and turbulent fluctuations. Flow past a sphere is used to tune the partially immersed parameters to give accurate results at low resolution compared to high-resolution simulations in the mean flow statistics. Finally, flow through a section of buildings in Manhattan is used to investigate the influence of building roughness lengths in the frictioned immersed boundary implementation. Those simulations demonstrate that even when directly ingesting complex building geometry from OpenStreetMap without smoothing or filtering, portUrb gives physically realizable results free of Runge oscillations and showing expected flow modifications associated with changing building surface friction.</p>
      <p id="d2e10030">The most obvious room for improvement in portUrb is the handling of acoustic wave speeds in the dynamics, since most wind speeds are much lower than the speed of sound at the surface of roughly 350 m s<sup>−1</sup>. The three most common possibilities for this are sub-cycling of acoustics at a smaller time step (“split-explicit”) <xref ref-type="bibr" rid="bib1.bibx58 bib1.bibx59" id="paren.86"/>, anelastic and pseudo-incompressible approximations <xref ref-type="bibr" rid="bib1.bibx2 bib1.bibx13 bib1.bibx51" id="paren.87"/>, and semi-implicit treatment of acoustics <xref ref-type="bibr" rid="bib1.bibx68 bib1.bibx16" id="paren.88"/>. Each of these options has multiple implementation choices, and therefore, this will be a significant effort to investigate the best fit. One challenge with infinite sound speed and time-implicit acoustic approximations is ensuring the immersed boundaries do not generate oscillations in the flow. This challenge is lower with acoustic sub-cycling, and therefore, that option will likely be investigated first.</p>
      <p id="d2e10054">There are other options being considered for future research as well. The current portUrb code does not support terrain-following vertical coordinates. A metric transformation could be a helpful addition for domains where there is significant terrain. While immersed cells can be used to represent terrain quite easily, if the terrain varies significantly, this might lead to significant wasted computational effort. Having a smooth metric transformation for terrain-following vertical coordinates would not increase model complexity too appreciably and would reduce wasted computations. Immersed boundaries can be used to represent variations on the smooth overall terrain change over a domain represented by a vertical metric transformation. Metric transformation of the horizontal directions is likely not as helpful since the domains of simulation are intended to be relatively small with portUrb, and horizontal transformations would make cell-finding and horizontal derivative calculation more complex. While a vertical metric transformation will likely be worth that trade-off, a horizontal metric transformation might not.</p>
      <p id="d2e10058">Another capability planned for future implementation is two-way grid nesting. There are many possible approaches to improving resolution over part of a domain, including adaptive mesh refinement <xref ref-type="bibr" rid="bib1.bibx1" id="paren.89"/> and stretched grids. These are all possibilities, but again, the complexity of the resulting model is of paramount consideration in a codebase mainly geared toward rapid prototyping of new model physics and generation of physics-based surrogate models. Nesting is a relatively low-overhead way to implement improved resolution, though it is certainly not without its challenges such as managing potentially different physics inside of nudged boundaries.</p>
      <p id="d2e10064">Intended applications of portUrb will make significant use of the ensemble and GPU acceleration capabilities to explore generation of training data for surrogate models of various atmospheric model processes like intra-cell microphysics, unresolved turbulence, super-resolution of coarse model results, and two-way communication of weather and urban models. The goal of future research with portUrb is to enable rapid prototyping of workflows for both offline and online training of Neural Network based surrogate models, efficient deployment of fine-grained surrogates, and understanding how surrogates behave when deployed in a model.</p>
</sec>

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

      <p id="d2e10071">The code is available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.15000787" ext-link-type="DOI">10.5281/zenodo.15000787</ext-link> <xref ref-type="bibr" rid="bib1.bibx39" id="paren.90"/>. Simulation results are available at <ext-link xlink:href="https://doi.org/10.5281/zenodo.15232629" ext-link-type="DOI">10.5281/zenodo.15232629</ext-link> <xref ref-type="bibr" rid="bib1.bibx40" id="paren.91"/>.</p>
  </notes><app-group>
        <supplementary-material position="anchor"><p id="d2e10086">The supplement related to this article is available online at <inline-supplementary-material xlink:href="https://doi.org/10.5194/gmd-18-9605-2025-supplement" xlink:title="zip">https://doi.org/10.5194/gmd-18-9605-2025-supplement</inline-supplementary-material>.</p></supplementary-material>
        </app-group><notes notes-type="authorcontribution"><title>Author contributions</title>

      <p id="d2e10095">Matthew R. Norman: Primary developer of portUrb and primary writer of this manuscript</p>

      <p id="d2e10098">Muralikrishnan Gopalakrishnan Meena: Co-developed the turbulence closure and surface friction scheme. Aided in creation of images. Aided in writing and editing the manuscript.</p>

      <p id="d2e10101">Kalyan Gottiparthi: Co-developed the turbulence closure and surface friction scheme. Aided in writing and editing the manuscript.</p>

      <p id="d2e10104">Nicholson Koukpaizan: Co-developed the turbulence closure and surface friction scheme. Co-developed the immersed boundary approach. Aided in writing and editing the manuscript.</p>

      <p id="d2e10107">Stephen Nichols: Co-developed the turbulence closure and surface friction scheme. Co-developed the immersed boundary approach. Aided in writing and editing the manuscript.</p>
  </notes><notes notes-type="competinginterests"><title>Competing interests</title>

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

      <p id="d2e10119">Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. While Copernicus Publications makes every effort to include appropriate place names, the final responsibility lies with the authors. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.</p>
  </notes><ack><title>Acknowledgements</title><p id="d2e10125">This research used resources of the Oak Ridge Leadership Computing Facility at the Oak Ridge National Laboratory, which is supported by the Office of Science of the U.S. Department of Energy under Contract No. DE-AC05-00OR22725.</p></ack><notes notes-type="financialsupport"><title>Financial support</title>

      <p id="d2e10130">This research has been supported by the Advanced Scientific Computing Research (grant no. DE-AC05-00OR22725).</p>
  </notes><notes notes-type="reviewstatement"><title>Review statement</title>

      <p id="d2e10136">This paper was edited by Chiel van Heerwaarden and reviewed by two anonymous referees.</p>
  </notes><ref-list>
    <title>References</title>

      <ref id="bib1.bibx1"><label>Almgren et al.(2023)Almgren, Lattanzi, Haque, Jha, Kosovic, Mirocha, Perry, Quon, Sanders, Wiersema et al.</label><mixed-citation>Almgren, A., Lattanzi, A., Haque, R., Jha, P., Kosovic, B., Mirocha, J., Perry, B., Quon, E., Sanders, M., Wiersema, D., Willcox, D., Yuan, X., and Zhang, W.: ERF: energy research and forecasting, The Journal of Open Source Software, 8, 5202, <ext-link xlink:href="https://doi.org/10.21105/joss.05202" ext-link-type="DOI">10.21105/joss.05202</ext-link>, 2023.</mixed-citation></ref>
      <ref id="bib1.bibx2"><label>Bannon(1996)</label><mixed-citation> Bannon, P. R.: On the anelastic approximation for a compressible atmosphere, Journal of the Atmospheric Sciences, 53, 3618–3628, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx3"><label>Bronevetsky and De Supinski(2007)</label><mixed-citation> Bronevetsky, G. and De Supinski, B. R.: Complete formal specification of the OpenMP memory model, International Journal of Parallel Programming, 35, 335–392, 2007.</mixed-citation></ref>
      <ref id="bib1.bibx4"><label>Brown et al.(2015)Brown, Lepper, Weiland, Hill, Shipway, and Maynard</label><mixed-citation>Brown, N., Lepper, A., Weiland, M., Hill, A., Shipway, B., and Maynard, C.: A directive based hybrid met office nerc cloud model, in: Proceedings of the Second Workshop on Accelerator Programming using Directives, 1–8, Association for Computing machinery (ACM), <ext-link xlink:href="https://doi.org/10.1145/2832105.2832115" ext-link-type="DOI">10.1145/2832105.2832115</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx5"><label>Bryan and Fritsch(2002)</label><mixed-citation> Bryan, G. H. and Fritsch, J. M.: A benchmark simulation for moist nonhydrostatic numerical models, Monthly Weather Review, 130, 2917–2928, 2002.</mixed-citation></ref>
      <ref id="bib1.bibx6"><label>Castro et al.(2006)Castro, Cheng, and Reynolds</label><mixed-citation> Castro, I. P., Cheng, H., and Reynolds, R.: Turbulence over urban-type roughness: deductions from wind-tunnel measurements, Boundary-Layer Meteorology, 118, 109–131, 2006.</mixed-citation></ref>
      <ref id="bib1.bibx7"><label>Chandrasekaran and Juckeland(2017)</label><mixed-citation>Chandrasekaran, S. and Juckeland, G.: OpenACC for programmers: concepts and strategies, Addison-Wesley Professional, <ext-link xlink:href="https://doi.org/10.5555/3175812" ext-link-type="DOI">10.5555/3175812</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx8"><label>Cook(2012)</label><mixed-citation>Cook, S.: CUDA programming: a developer's guide to parallel computing with GPUs, Newnes, <ext-link xlink:href="https://doi.org/10.5555/2430671" ext-link-type="DOI">10.5555/2430671</ext-link>, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx9"><label>Cotton et al.(2003)Cotton, Pielke Sr, Walko, Liston, Tremback, Jiang, McAnelly, Harrington, Nicholls, Carrio et al.</label><mixed-citation> Cotton, W. R., Pielke Sr, R. A., Walko, R. L., Liston, G. E., Tremback, C. J., Jiang, H., McAnelly, R. L., Harrington, J. Y., Nicholls, M. E., Carrio, G. G., and McFadden, J. P.: RAMS 2001: Current status and future directions, Meteorology and Atmospheric Physics, 82, 5–29, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx10"><label>Droegemeier(2003)</label><mixed-citation> Droegemeier, K. K.: The Advanced Regional Prediction System (ARPS), storm-scale numerical weather prediction and data assimilation, Meteorol Atmos Phys, 82, 139–170, 2003.</mixed-citation></ref>
      <ref id="bib1.bibx11"><label>Droegemeier et al.(1993)Droegemeier, Lazarus, and Davies-Jones</label><mixed-citation> Droegemeier, K. K., Lazarus, S. M., and Davies-Jones, R.: The influence of helicity on numerically simulated convective storms, Monthly weather review, 121, 2005–2029, 1993.</mixed-citation></ref>
      <ref id="bib1.bibx12"><label>Dupont and Brunet(2008)</label><mixed-citation> Dupont, S. and Brunet, Y.: Edge flow and canopy structure: a large-eddy simulation study, Boundary-Layer Meteorology, 126, 51–71, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx13"><label>Durran(1989)</label><mixed-citation> Durran, D. R.: Improving the anelastic approximation, Journal of the atmospheric sciences, 46, 1453–1461, 1989.</mixed-citation></ref>
      <ref id="bib1.bibx14"><label>Feng et al.(2012)Feng, Hu, and Wang</label><mixed-citation> Feng, H., Hu, F., and Wang, R.: A new mapped weighted essentially non-oscillatory scheme, Journal of Scientific Computing, 51, 449–473, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx15"><label>Fleming et al.(2014)Fleming, Gebraad, Lee, van Wingerden, Johnson, Churchfield, Michalakes, Spalart, and Moriarty</label><mixed-citation> Fleming, P. A., Gebraad, P. M., Lee, S., van Wingerden, J.-W., Johnson, K., Churchfield, M., Michalakes, J., Spalart, P., and Moriarty, P.: Evaluating techniques for redirecting turbine wakes using SOWFA, Renewable Energy, 70, 211–218, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx16"><label>Gardner et al.(2018)Gardner, Guerra, Hamon, Reynolds, Ullrich, and Woodward</label><mixed-citation>Gardner, D. J., Guerra, J. E., Hamon, F. P., Reynolds, D. R., Ullrich, P. A., and Woodward, C. S.: Implicit–explicit (IMEX) Runge–Kutta methods for non-hydrostatic atmospheric models, Geosci. Model Dev., 11, 1497–1515, <ext-link xlink:href="https://doi.org/10.5194/gmd-11-1497-2018" ext-link-type="DOI">10.5194/gmd-11-1497-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx17"><label>Gottlieb et al.(2009)Gottlieb, Ketcheson, and Shu</label><mixed-citation> Gottlieb, S., Ketcheson, D. I., and Shu, C.-W.: High order strong stability preserving time discretizations, Journal of Scientific Computing, 38, 251–289, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx18"><label>Heus et al.(2010)Heus, van Heerwaarden, Jonker, Pier Siebesma, Axelsen, Van Den Dries, Geoffroy, Moene, Pino, De Roode et al.</label><mixed-citation>Heus, T., van Heerwaarden, C. C., Jonker, H. J. J., Pier Siebesma, A., Axelsen, S., van den Dries, K., Geoffroy, O., Moene, A. F., Pino, D., de Roode, S. R., and Vilà-Guerau de Arellano, J.: Formulation of the Dutch Atmospheric Large-Eddy Simulation (DALES) and overview of its applications, Geosci. Model Dev., 3, 415–444, <ext-link xlink:href="https://doi.org/10.5194/gmd-3-415-2010" ext-link-type="DOI">10.5194/gmd-3-415-2010</ext-link>, 2010.</mixed-citation></ref>
      <ref id="bib1.bibx19"><label>Jasak et al.(2007)Jasak, Jemcov, and Tukovic</label><mixed-citation>Jasak, H., Jemcov, A., Tukovic, Ž.: OpenFOAM: A C++ library for complex physics simulations, in: International workshop on coupled methods in numerical dynamics, vol. 1000, 1–20, Dubrovnik, Croatia, <uri>https://www.croris.hr/crosbi/publikacija/prilog-skup/538019?lang=en</uri> (last access: 1 December 2025), 2007.</mixed-citation></ref>
      <ref id="bib1.bibx20"><label>Katta et al.(2015)Katta, Nair, and Kumar</label><mixed-citation> Katta, K. K., Nair, R. D., and Kumar, V.: High-order finite volume shallow water model on the cubed-sphere: 1D reconstruction scheme, Applied Mathematics and Computation, 266, 316–327, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx21"><label>Kelley and Ennis(2016)</label><mixed-citation> Kelley, C. L. and Ennis, B. L.: SWiFT site atmospheric characterization, Tech. rep., Sandia National Lab.(SNL-NM), Albuquerque, NM (United States), 2016.</mixed-citation></ref>
      <ref id="bib1.bibx22"><label>Khairoutdinov and Kogan(2000)</label><mixed-citation> Khairoutdinov, M. and Kogan, Y.: A new cloud physics parameterization in a large-eddy simulation model of marine stratocumulus, Monthly weather review, 128, 229–243, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx23"><label>Klemp et al.(2015)Klemp, Skamarock, and Park</label><mixed-citation> Klemp, J., Skamarock, W., and Park, S.-H.: Idealized global nonhydrostatic atmospheric test cases on a reduced-radius sphere, Journal of Advances in Modeling Earth Systems, 7, 1155–1177, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx24"><label>Lesieur and Metais(1996)</label><mixed-citation> Lesieur, M. and Metais, O.: New trends in large-eddy simulations of turbulence, Annual review of fluid mechanics, 28, 45–82, 1996.</mixed-citation></ref>
      <ref id="bib1.bibx25"><label>Letzel et al.(2008)Letzel, Krane, and Raasch</label><mixed-citation> Letzel, M. O., Krane, M., and Raasch, S.: High resolution urban large-eddy simulation studies from street canyon to neighbourhood scale, Atmospheric Environment, 42, 8770–8784, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx26"><label>Lilly(1966)</label><mixed-citation>Lilly, D. K.: On the application of the eddy viscosity concept in the inertial sub-range of turbulence, NCAR manuscript, 123, University Corporation for Atmospheric Research, UCAR, <ext-link xlink:href="https://doi.org/10.5065/D67H1GGQ" ext-link-type="DOI">10.5065/D67H1GGQ</ext-link>, 1966.</mixed-citation></ref>
      <ref id="bib1.bibx27"><label>Lilly(1967)</label><mixed-citation>Lilly, D. K.: The representation of small-scale turbulence in numerical simulation experiments, in: Proc. IBM Sci. Comput. Symp. on Environmental Science,  195–210, IBM Sci. Comput. Symp. on Environmental Science, <ext-link xlink:href="https://doi.org/10.5065/D62R3PMM" ext-link-type="DOI">10.5065/D62R3PMM</ext-link>, 1967.</mixed-citation></ref>
      <ref id="bib1.bibx28"><label>Liu et al.(1994)Liu, Osher, and Chan</label><mixed-citation> Liu, X.-D., Osher, S., and Chan, T.: Weighted essentially non-oscillatory schemes, Journal of computational physics, 115, 200–212, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx29"><label>Liu et al.(2012)Liu, Miao, Zhang, Cui, and Zhang</label><mixed-citation> Liu, Y., Miao, S., Zhang, C., Cui, G., and Zhang, Z.: Study on micro-atmospheric environment by coupling large eddy simulation with mesoscale model, Journal of Wind Engineering and Industrial Aerodynamics, 107, 106–117, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx30"><label>Lyngaas et al.(2022)Lyngaas, Norman, and Kim</label><mixed-citation> Lyngaas, I., Norman, M., and Kim, Y.: Sam++: Porting the e3sm-mmf cloud resolving model using a c++ portability library, The International Journal of High Performance Computing Applications, 36, 214–230, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx31"><label>Maronga et al.(2015)Maronga, Gryschka, Heinze, Hoffmann, Kanani-Sühring, Keck, Ketelsen, Letzel, Sühring, and Raasch</label><mixed-citation>Maronga, B., Gryschka, M., Heinze, R., Hoffmann, F., Kanani-Sühring, F., Keck, M., Ketelsen, K., Letzel, M. O., Sühring, M., and Raasch, S.: The Parallelized Large-Eddy Simulation Model (PALM) version 4.0 for atmospheric and oceanic flows: model formulation, recent developments, and future perspectives, Geosci. Model Dev., 8, 2515–2551, <ext-link xlink:href="https://doi.org/10.5194/gmd-8-2515-2015" ext-link-type="DOI">10.5194/gmd-8-2515-2015</ext-link>, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx32"><label>Mason(1994)</label><mixed-citation> Mason, P. J.: Large-eddy simulation: A critical review of the technique, Quarterly Journal of the Royal Meteorological Society, 120, 1–26, 1994.</mixed-citation></ref>
      <ref id="bib1.bibx33"><label>Mehta et al.(2014)Mehta, Van Zuijlen, Koren, Holierhoek, and Bijl</label><mixed-citation> Mehta, D., Van Zuijlen, A., Koren, B., Holierhoek, J., and Bijl, H.: Large Eddy Simulation of wind farm aerodynamics: A review, Journal of Wind Engineering and Industrial Aerodynamics, 133, 1–17, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx34"><label>Mirocha et al.(2018)Mirocha, Churchfield, Muñoz-Esparza, Rai, Feng, Kosović, Haupt, Brown, Ennis, Draxl et al.</label><mixed-citation>Mirocha, J. D., Churchfield, M. J., Muñoz-Esparza, D., Rai, R. K., Feng, Y., Kosović, B., Haupt, S. E., Brown, B., Ennis, B. L., Draxl, C., Sanz Rodrigo, J., Shaw, W. J., Berg, L. K., Moriarty, P. J., Linn, R. R., Kotamarthi, V. R., Balakrishnan, R., Cline, J. W., Robinson, M. C., and Ananthan, S.: Large-eddy simulation sensitivities to variations of configuration and forcing parameters in canonical boundary-layer flows for wind energy applications, Wind Energ. Sci., 3, 589–613, <ext-link xlink:href="https://doi.org/10.5194/wes-3-589-2018" ext-link-type="DOI">10.5194/wes-3-589-2018</ext-link>, 2018.</mixed-citation></ref>
      <ref id="bib1.bibx35"><label>Monin and Obukhov(1954)</label><mixed-citation> Monin, A. S. and Obukhov, A. M.: Basic laws of turbulent mixing in the surface layer of the atmosphere, Contrib. Geophys. Inst. Acad. Sci. USSR, 151, e187, 163–187, 1954.</mixed-citation></ref>
      <ref id="bib1.bibx36"><label>Morrison and Milbrandt(2011)</label><mixed-citation> Morrison, H. and Milbrandt, J.: Comparison of two-moment bulk microphysics schemes in idealized supercell thunderstorm simulations, Monthly Weather Review, 139, 1103–1130, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx37"><label>Muñoz-Esparza et al.(2020)Muñoz-Esparza, Sauer, Shin, Sharman, Kosović, Meech, García-Sánchez, Steiner, Knievel, Pinto et al.</label><mixed-citation>Muñoz-Esparza, D., Sauer, J. A., Shin, H. H., Sharman, R., Kosović, B., Meech, S., García-Sánchez, C., Steiner, M., Knievel, J., Pinto, J., and Swerdlin, S.: Inclusion of building-resolving capabilities into the FastEddy® GPU-LES model using an immersed body force method, Journal of Advances in Modeling Earth Systems, 12, e2020MS002141, <ext-link xlink:href="https://doi.org/10.1029/2020MS002141" ext-link-type="DOI">10.1029/2020MS002141</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx38"><label>Muñoz-Esparza et al.(2022)Muñoz-Esparza, Sauer, Jensen, Xue, and Grabowski</label><mixed-citation>Muñoz-Esparza, D., Sauer, J. A., Jensen, A. A., Xue, L., and Grabowski, W. W.: The FastEddy® resident-GPU accelerated large-eddy simulation framework: Moist dynamics extension, validation and sensitivities of modeling non-precipitating shallow cumulus clouds, Journal of Advances in Modeling Earth Systems, 14, e2021MS002904, <ext-link xlink:href="https://doi.org/10.1029/2021MS002904" ext-link-type="DOI">10.1029/2021MS002904</ext-link>, 2022.</mixed-citation></ref>
      <ref id="bib1.bibx39"><label>Norman(2025a)</label><mixed-citation>Norman, M.: portUrb code, Zenodo [code], <ext-link xlink:href="https://doi.org/10.5281/zenodo.15000787" ext-link-type="DOI">10.5281/zenodo.15000787</ext-link>, 2025a.</mixed-citation></ref>
      <ref id="bib1.bibx40"><label>Norman(2025b)</label><mixed-citation>Norman, M.: PortUrb: A Performance Portable, High-Order, Moist Atmospheric Large Eddy Simulation Model with Variable-Friction Immersed Boundaries – Dataset, Zenodo [data set], <ext-link xlink:href="https://doi.org/10.5281/zenodo.15232629" ext-link-type="DOI">10.5281/zenodo.15232629</ext-link>, 2025b.</mixed-citation></ref>
      <ref id="bib1.bibx41"><label>Norman and Larkin(2020)</label><mixed-citation> Norman, M. and Larkin, J.: A holistic algorithmic approach to improving accuracy, robustness, and computational efficiency for atmospheric dynamics, SIAM Journal on Scientific Computing, 42, B1302–B1327, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx42"><label>Norman et al.(2023a)Norman, Lyngaas, Bagusetty, and Berrill</label><mixed-citation> Norman, M., Lyngaas, I., Bagusetty, A., and Berrill, M.: Portable C++ code that can look and feel like Fortran code with Yet Another Kernel Launcher (YAKL), International Journal of Parallel Programming, 51, 209–230, 2023a.</mixed-citation></ref>
      <ref id="bib1.bibx43"><label>Norman(2013a)</label><mixed-citation> Norman, M. R.: Algorithmic improvements for schemes using the ADER time discretization, Journal of Computational Physics, 243, 176–178, 2013a.</mixed-citation></ref>
      <ref id="bib1.bibx44"><label>Norman(2013b)</label><mixed-citation>Norman, M. R.: Targeting atmospheric simulation algorithms for large, distributed-memory, GPU-accelerated computers, in: GPU Solutions to Multi-scale Problems in Science and Engineering,  271–282, Springer, <ext-link xlink:href="https://doi.org/10.1007/978-3-642-16405-7_17" ext-link-type="DOI">10.1007/978-3-642-16405-7_17</ext-link>, 2013b.</mixed-citation></ref>
      <ref id="bib1.bibx45"><label>Norman(2014)</label><mixed-citation> Norman, M. R.: A WENO-limited, ADER-DT, finite-volume scheme for efficient, robust, and communication-avoiding multi-dimensional transport, Journal of Computational Physics, 274, 1–18, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx46"><label>Norman(2020)</label><mixed-citation>Norman, M. R.: miniWeather, Tech. rep., Oak Ridge National Laboratory (ORNL), Oak Ridge, TN (United States), <ext-link xlink:href="https://doi.org/10.2172/1480685" ext-link-type="DOI">10.2172/1480685</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx47"><label>Norman(2021)</label><mixed-citation> Norman, M. R.: A high-order WENO-limited finite-volume algorithm for atmospheric flow using the ADER-differential transform time discretization, Quarterly Journal of the Royal Meteorological Society, 147, 1661–1690, 2021.</mixed-citation></ref>
      <ref id="bib1.bibx48"><label>Norman and Finkel(2012)</label><mixed-citation> Norman, M. R. and Finkel, H.: Multi-moment ADER-Taylor methods for systems of conservation laws with source terms in one dimension, Journal of Computational Physics, 231, 6622–6642, 2012.</mixed-citation></ref>
      <ref id="bib1.bibx49"><label>Norman et al.(2011)Norman, Nair, and Semazzi</label><mixed-citation> Norman, M. R., Nair, R. D., and Semazzi, F. H.: A low communication and large time step explicit finite-volume solver for non-hydrostatic atmospheric dynamics, Journal of Computational Physics, 230, 1567–1584, 2011.</mixed-citation></ref>
      <ref id="bib1.bibx50"><label>Norman et al.(2023b)Norman, Eldred, and Gopalakrishnan Meena</label><mixed-citation>Norman, M. R., Eldred, C., and Gopalakrishnan Meena, M.: Investigating Inherent Numerical Stabilization for the Moist, Compressible, Non-Hydrostatic Euler Equations on Collocated Grids, Journal of Advances in Modeling Earth Systems, 15, e2023MS003732, <ext-link xlink:href="https://doi.org/10.1029/2023MS003732" ext-link-type="DOI">10.1029/2023MS003732</ext-link>, 2023b.</mixed-citation></ref>
      <ref id="bib1.bibx51"><label>O'Neill and Klein(2014)</label><mixed-citation> O'Neill, W. and Klein, R.: A moist pseudo-incompressible model, Atmospheric research, 142, 133–141, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx52"><label>Pedersen et al.(2014)Pedersen, Gryning, and Kelly</label><mixed-citation> Pedersen, J. G., Gryning, S.-E., and Kelly, M.: On the structure and adjustment of inversion-capped neutral atmospheric boundary-layer flows: Large-eddy simulation study, Boundary-layer meteorology, 153, 43–62, 2014.</mixed-citation></ref>
      <ref id="bib1.bibx53"><label>Pressel et al.(2015)Pressel, Kaul, Schneider, Tan, and Mishra</label><mixed-citation> Pressel, K. G., Kaul, C. M., Schneider, T., Tan, Z., and Mishra, S.: Large-eddy simulation in an anelastic framework with closed water and entropy balances, Journal of Advances in Modeling Earth Systems, 7, 1425–1456, 2015.</mixed-citation></ref>
      <ref id="bib1.bibx54"><label>Prusa et al.(2008)Prusa, Smolarkiewicz, and Wyszogrodzki</label><mixed-citation> Prusa, J. M., Smolarkiewicz, P. K., and Wyszogrodzki, A. A.: EULAG, a computational model for multiscale flows, Computers &amp; Fluids, 37, 1193–1207, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx55"><label>Sauer and Muñoz-Esparza(2020)</label><mixed-citation>Sauer, J. A. and Muñoz-Esparza, D.: The FastEddy® resident-GPU accelerated large-eddy simulation framework: Model formulation, dynamical-core validation and performance benchmarks, Journal of Advances in Modeling Earth Systems, 12, e2020MS002100, <ext-link xlink:href="https://doi.org/10.1029/2020MS002100" ext-link-type="DOI">10.1029/2020MS002100</ext-link>, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx56"><label>Shaw and Schumann(1992)</label><mixed-citation> Shaw, R. H. and Schumann, U.: Large-eddy simulation of turbulent flow above and within a forest, Boundary-Layer Meteorology, 61, 47–64, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx57"><label>Shobaki et al.(2020)Shobaki, Kerbow, and Mekhanoshin</label><mixed-citation> Shobaki, G., Kerbow, A., and Mekhanoshin, S.: Optimizing occupancy and ILP on the GPU using a combinatorial approach, in: Proceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization, Association for Computing Machinery (ACM), 133–144, doi10.1145/3368826.3377918, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx58"><label>Skamarock and Klemp(1992)</label><mixed-citation> Skamarock, W. C. and Klemp, J. B.: The stability of time-split numerical methods for the hydrostatic and the nonhydrostatic elastic equations, Monthly Weather Review, 120, 2109–2127, 1992.</mixed-citation></ref>
      <ref id="bib1.bibx59"><label>Skamarock and Klemp(2008)</label><mixed-citation> Skamarock, W. C. and Klemp, J. B.: A time-split nonhydrostatic atmospheric model for weather research and forecasting applications, Journal of computational physics, 227, 3465–3485, 2008.</mixed-citation></ref>
      <ref id="bib1.bibx60"><label>Skamarock et al.(2019)Skamarock, Klemp, Dudhia, Gill, Liu, Berner, Wang, Powers, Duda, Barker et al.</label><mixed-citation>Skamarock, W. C., Klemp, J. B., Dudhia, J., Gill, D. O., Liu, Z., Berner, J., Wang, W., Powers, J. G., Duda, M. G., Barker, D. M., and Huang, X. Y.: A description of the advanced research WRF version 4, NCAR tech. note ncar/tn-556+ str, 145, University Corporation for Atmospheric Research (UCAR), <ext-link xlink:href="https://doi.org/10.5065/1dfh-6p97" ext-link-type="DOI">10.5065/1dfh-6p97</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx61"><label>Stevens et al.(1998)Stevens, Cotton, Feingold, and Moeng</label><mixed-citation> Stevens, B., Cotton, W. R., Feingold, G., and Moeng, C.-H.: Large-eddy simulations of strongly precipitating, shallow, stratocumulus-topped boundary layers, Journal of the atmospheric sciences, 55, 3616–3638, 1998.</mixed-citation></ref>
      <ref id="bib1.bibx62"><label>Stoll et al.(2020)Stoll, Gibbs, Salesky, Anderson, and Calaf</label><mixed-citation> Stoll, R., Gibbs, J. A., Salesky, S. T., Anderson, W., and Calaf, M.: Large-eddy simulation of the atmospheric boundary layer, Boundary-Layer Meteorology, 177, 541–581, 2020.</mixed-citation></ref>
      <ref id="bib1.bibx63"><label>Tomas et al.(2016)Tomas, Pourquie, and Jonker</label><mixed-citation> Tomas, J., Pourquie, M., and Jonker, H.: Stable stratification effects on flow and pollutant dispersion in boundary layers entering a generic urban environment, Boundary-Layer Meteorology, 159, 221–239, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx64"><label>Trott et al.(2021)Trott, Berger-Vergiat, Poliakoff, Rajamanickam, Lebrun-Grandie, Madsen, Al Awar, Gligoric, Shipman, and Womeldorff</label><mixed-citation>Trott, C., Berger-Vergiat, L., Poliakoff, D., Rajamanickam, S., Lebrun-Grandie, D., Madsen, J., Al Awar, N., Gligoric, M., Shipman, G., and Womeldorff, G.: The kokkos ecosystem: Comprehensive performance portability for high performance computing, Computing in Science &amp; Engineering, 23, 10–18, 2021.  </mixed-citation></ref>
      <ref id="bib1.bibx65"><label>Van Heerwaarden et al.(2017)Van Heerwaarden, Van Stratum, Heus, Gibbs, Fedorovich, and Mellado</label><mixed-citation>van Heerwaarden, C. C., van Stratum, B. J. H., Heus, T., Gibbs, J. A., Fedorovich, E., and Mellado, J. P.: MicroHH 1.0: a computational fluid dynamics code for direct numerical simulation and large-eddy simulation of atmospheric boundary layer flows, Geosci. Model Dev., 10, 3145–3165, <ext-link xlink:href="https://doi.org/10.5194/gmd-10-3145-2017" ext-link-type="DOI">10.5194/gmd-10-3145-2017</ext-link>, 2017.</mixed-citation></ref>
      <ref id="bib1.bibx66"><label>Weisman and Klemp(1982)</label><mixed-citation> Weisman, M. L. and Klemp, J. B.: The dependence of numerically simulated convective storms on vertical wind shear and buoyancy, Monthly Weather Review, 110, 504–520, 1982.</mixed-citation></ref>
      <ref id="bib1.bibx67"><label>Weisman and Rotunno(2000)</label><mixed-citation> Weisman, M. L. and Rotunno, R.: The use of vertical wind shear versus helicity in interpreting supercell dynamics, Journal of the atmospheric sciences, 57, 1452–1472, 2000.</mixed-citation></ref>
      <ref id="bib1.bibx68"><label>Weller et al.(2013)Weller, Lock, and Wood</label><mixed-citation> Weller, H., Lock, S.-J., and Wood, N.: Runge–Kutta IMEX schemes for the horizontally explicit/vertically implicit (HEVI) solution of wave equations, Journal of Computational Physics, 252, 365–381, 2013.</mixed-citation></ref>
      <ref id="bib1.bibx69"><label>Xie and Castro(2009)</label><mixed-citation> Xie, Z.-T. and Castro, I. P.: Large-eddy simulation for flow and dispersion in urban streets, Atmospheric Environment, 43, 2174–2185, 2009.</mixed-citation></ref>
      <ref id="bib1.bibx70"><label>Zarzycki et al.(2019)Zarzycki, Jablonowski, Kent, Lauritzen, Nair, Reed, Ullrich, Hall, Taylor, Dazlich et al.</label><mixed-citation>Zarzycki, C. M., Jablonowski, C., Kent, J., Lauritzen, P. H., Nair, R., Reed, K. A., Ullrich, P. A., Hall, D. M., Taylor, M. A., Dazlich, D., Heikes, R., Konor, C., Randall, D., Chen, X., Harris, L., Giorgetta, M., Reinert, D., Kühnlein, C., Walko, R., Lee, V., Qaddouri, A., Tanguay, M., Miura, H., Ohno, T., Yoshida, R., Park, S.-H., Klemp, J. B., and Skamarock, W. C.: DCMIP2016: the splitting supercell test case, Geosci. Model Dev., 12, 879–892, <ext-link xlink:href="https://doi.org/10.5194/gmd-12-879-2019" ext-link-type="DOI">10.5194/gmd-12-879-2019</ext-link>, 2019.</mixed-citation></ref>
      <ref id="bib1.bibx71"><label>Zhang et al.(2016)Zhang, Du, and Miao</label><mixed-citation> Zhang, N., Du, Y., and Miao, S.: A microscale model for air pollutant dispersion simulation in urban areas: Presentation of the model and performance over a single building, Advances in Atmospheric Sciences, 33, 184–192, 2016.</mixed-citation></ref>
      <ref id="bib1.bibx72"><label>Zhang et al.(2019)Zhang, Almgren, Beckner, Bell, Blaschke, Chan, Day, Friesen, Gott, Graves et al.</label><mixed-citation>Zhang, W., Almgren, A., Beckner, V., Bell, J., Blaschke, J., Chan, C. Y., Day, M., Friesen, B., Gott, K., Graves, D., Katz, M., Myers, A., Nguyen, T., Nonaka, A., Rosso, M., Williams, S., and Zingale, M.: AMReX: a framework for block-structured adaptive mesh refinement, The Journal of Open Source Software, 4, 1370, <ext-link xlink:href="https://doi.org/10.21105/joss.01370" ext-link-type="DOI">10.21105/joss.01370</ext-link>, 2019.</mixed-citation></ref>

  </ref-list></back>
    <!--<article-title-html>PortUrb: a performance portable, high-order, moist  atmospheric large eddy simulation model with  variable-friction immersed boundaries</article-title-html>
<abstract-html/>
<ref-html id="bib1.bib1"><label>Almgren et al.(2023)Almgren, Lattanzi, Haque, Jha, Kosovic, Mirocha,
Perry, Quon, Sanders, Wiersema et al.</label><mixed-citation>
      
Almgren, A., Lattanzi, A., Haque, R., Jha, P., Kosovic, B., Mirocha, J., Perry,
B., Quon, E., Sanders, M., Wiersema, D., Willcox, D., Yuan, X., and Zhang, W.: ERF: energy research and
forecasting, The Journal of Open Source Software, 8, 5202, <a href="https://doi.org/10.21105/joss.05202" target="_blank">https://doi.org/10.21105/joss.05202</a>, 2023.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib2"><label>Bannon(1996)</label><mixed-citation>
      
Bannon, P. R.: On the anelastic approximation for a compressible atmosphere,
Journal of the Atmospheric Sciences, 53, 3618–3628, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib3"><label>Bronevetsky and De Supinski(2007)</label><mixed-citation>
      
Bronevetsky, G. and De Supinski, B. R.: Complete formal specification of the
OpenMP memory model, International Journal of Parallel Programming, 35,
335–392, 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib4"><label>Brown et al.(2015)Brown, Lepper, Weiland, Hill, Shipway, and
Maynard</label><mixed-citation>
      
Brown, N., Lepper, A., Weiland, M., Hill, A., Shipway, B., and Maynard, C.: A
directive based hybrid met office nerc cloud model, in: Proceedings of the
Second Workshop on Accelerator Programming using Directives, 1–8, Association for Computing machinery (ACM), <a href="https://doi.org/10.1145/2832105.2832115" target="_blank">https://doi.org/10.1145/2832105.2832115</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib5"><label>Bryan and Fritsch(2002)</label><mixed-citation>
      
Bryan, G. H. and Fritsch, J. M.: A benchmark simulation for moist
nonhydrostatic numerical models, Monthly Weather Review, 130, 2917–2928,
2002.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib6"><label>Castro et al.(2006)Castro, Cheng, and
Reynolds</label><mixed-citation>
      
Castro, I. P., Cheng, H., and Reynolds, R.: Turbulence over urban-type
roughness: deductions from wind-tunnel measurements, Boundary-Layer
Meteorology, 118, 109–131, 2006.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib7"><label>Chandrasekaran and Juckeland(2017)</label><mixed-citation>
      
Chandrasekaran, S. and Juckeland, G.: OpenACC for programmers: concepts and
strategies, Addison-Wesley Professional, <a href="https://doi.org/10.5555/3175812" target="_blank">https://doi.org/10.5555/3175812</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib8"><label>Cook(2012)</label><mixed-citation>
      
Cook, S.: CUDA programming: a developer's guide to parallel computing with
GPUs, Newnes, <a href="https://doi.org/10.5555/2430671" target="_blank">https://doi.org/10.5555/2430671</a>, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib9"><label>Cotton et al.(2003)Cotton, Pielke Sr, Walko, Liston, Tremback, Jiang,
McAnelly, Harrington, Nicholls, Carrio et al.</label><mixed-citation>
      
Cotton, W. R., Pielke Sr, R. A., Walko, R. L., Liston, G. E., Tremback, C. J., Jiang, H.,
McAnelly, R. L., Harrington, J. Y., Nicholls, M. E., Carrio, G. G., and McFadden, J. P.: RAMS 2001:
Current status and future directions, Meteorology and Atmospheric Physics,
82, 5–29, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib10"><label>Droegemeier(2003)</label><mixed-citation>
      
Droegemeier, K. K.: The Advanced Regional Prediction System (ARPS), storm-scale
numerical weather prediction and data assimilation, Meteorol Atmos Phys, 82,
139–170, 2003.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib11"><label>Droegemeier et al.(1993)Droegemeier, Lazarus, and
Davies-Jones</label><mixed-citation>
      
Droegemeier, K. K., Lazarus, S. M., and Davies-Jones, R.: The influence of
helicity on numerically simulated convective storms, Monthly weather review,
121, 2005–2029, 1993.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib12"><label>Dupont and Brunet(2008)</label><mixed-citation>
      
Dupont, S. and Brunet, Y.: Edge flow and canopy structure: a large-eddy
simulation study, Boundary-Layer Meteorology, 126, 51–71, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib13"><label>Durran(1989)</label><mixed-citation>
      
Durran, D. R.: Improving the anelastic approximation, Journal of the
atmospheric sciences, 46, 1453–1461, 1989.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib14"><label>Feng et al.(2012)Feng, Hu, and Wang</label><mixed-citation>
      
Feng, H., Hu, F., and Wang, R.: A new mapped weighted essentially
non-oscillatory scheme, Journal of Scientific Computing, 51, 449–473, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib15"><label>Fleming et al.(2014)Fleming, Gebraad, Lee, van Wingerden, Johnson,
Churchfield, Michalakes, Spalart, and Moriarty</label><mixed-citation>
      
Fleming, P. A., Gebraad, P. M., Lee, S., van Wingerden, J.-W., Johnson, K.,
Churchfield, M., Michalakes, J., Spalart, P., and Moriarty, P.: Evaluating
techniques for redirecting turbine wakes using SOWFA, Renewable Energy, 70,
211–218, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib16"><label>Gardner et al.(2018)Gardner, Guerra, Hamon, Reynolds, Ullrich, and
Woodward</label><mixed-citation>
      
Gardner, D. J., Guerra, J. E., Hamon, F. P., Reynolds, D. R., Ullrich, P. A., and Woodward, C. S.: Implicit–explicit (IMEX) Runge–Kutta methods for non-hydrostatic atmospheric models, Geosci. Model Dev., 11, 1497–1515, <a href="https://doi.org/10.5194/gmd-11-1497-2018" target="_blank">https://doi.org/10.5194/gmd-11-1497-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib17"><label>Gottlieb et al.(2009)Gottlieb, Ketcheson, and Shu</label><mixed-citation>
      
Gottlieb, S., Ketcheson, D. I., and Shu, C.-W.: High order strong stability
preserving time discretizations, Journal of Scientific Computing, 38,
251–289, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib18"><label>Heus et al.(2010)Heus, van Heerwaarden, Jonker, Pier Siebesma,
Axelsen, Van Den Dries, Geoffroy, Moene, Pino, De Roode
et al.</label><mixed-citation>
      
Heus, T., van Heerwaarden, C. C., Jonker, H. J. J., Pier Siebesma, A., Axelsen, S., van den Dries, K., Geoffroy, O., Moene, A. F., Pino, D., de Roode, S. R., and Vilà-Guerau de Arellano, J.: Formulation of the Dutch Atmospheric Large-Eddy Simulation (DALES) and overview of its applications, Geosci. Model Dev., 3, 415–444, <a href="https://doi.org/10.5194/gmd-3-415-2010" target="_blank">https://doi.org/10.5194/gmd-3-415-2010</a>, 2010.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib19"><label>Jasak et al.(2007)Jasak, Jemcov, and Tukovic</label><mixed-citation>
      
Jasak, H., Jemcov, A., Tukovic, Ž.: OpenFOAM: A C++ library for complex
physics simulations, in: International workshop on coupled methods in
numerical dynamics, vol. 1000, 1–20, Dubrovnik, Croatia, <a href="https://www.croris.hr/crosbi/publikacija/prilog-skup/538019?lang=en" target="_blank"/> (last access: 1 December 2025), 2007.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib20"><label>Katta et al.(2015)Katta, Nair, and Kumar</label><mixed-citation>
      
Katta, K. K., Nair, R. D., and Kumar, V.: High-order finite volume shallow
water model on the cubed-sphere: 1D reconstruction scheme, Applied
Mathematics and Computation, 266, 316–327, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib21"><label>Kelley and Ennis(2016)</label><mixed-citation>
      
Kelley, C. L. and Ennis, B. L.: SWiFT site atmospheric characterization, Tech.
rep., Sandia National Lab.(SNL-NM), Albuquerque, NM (United States), 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib22"><label>Khairoutdinov and Kogan(2000)</label><mixed-citation>
      
Khairoutdinov, M. and Kogan, Y.: A new cloud physics parameterization in a
large-eddy simulation model of marine stratocumulus, Monthly weather review,
128, 229–243, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib23"><label>Klemp et al.(2015)Klemp, Skamarock, and Park</label><mixed-citation>
      
Klemp, J., Skamarock, W., and Park, S.-H.: Idealized global nonhydrostatic
atmospheric test cases on a reduced-radius sphere, Journal of Advances in
Modeling Earth Systems, 7, 1155–1177, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib24"><label>Lesieur and Metais(1996)</label><mixed-citation>
      
Lesieur, M. and Metais, O.: New trends in large-eddy simulations of turbulence,
Annual review of fluid mechanics, 28, 45–82, 1996.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib25"><label>Letzel et al.(2008)Letzel, Krane, and Raasch</label><mixed-citation>
      
Letzel, M. O., Krane, M., and Raasch, S.: High resolution urban large-eddy
simulation studies from street canyon to neighbourhood scale, Atmospheric
Environment, 42, 8770–8784, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib26"><label>Lilly(1966)</label><mixed-citation>
      
Lilly, D. K.: On the application of the eddy viscosity concept in the inertial
sub-range of turbulence, NCAR manuscript, 123, University Corporation for Atmospheric Research, UCAR, <a href="https://doi.org/10.5065/D67H1GGQ" target="_blank">https://doi.org/10.5065/D67H1GGQ</a>, 1966.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib27"><label>Lilly(1967)</label><mixed-citation>
      
Lilly, D. K.: The representation of small-scale turbulence in numerical
simulation experiments, in: Proc. IBM Sci. Comput. Symp. on Environmental
Science,  195–210, IBM Sci. Comput. Symp. on Environmental Science, <a href="https://doi.org/10.5065/D62R3PMM" target="_blank">https://doi.org/10.5065/D62R3PMM</a>, 1967.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib28"><label>Liu et al.(1994)Liu, Osher, and Chan</label><mixed-citation>
      
Liu, X.-D., Osher, S., and Chan, T.: Weighted essentially non-oscillatory
schemes, Journal of computational physics, 115, 200–212, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib29"><label>Liu et al.(2012)Liu, Miao, Zhang, Cui, and Zhang</label><mixed-citation>
      
Liu, Y., Miao, S., Zhang, C., Cui, G., and Zhang, Z.: Study on
micro-atmospheric environment by coupling large eddy simulation with
mesoscale model, Journal of Wind Engineering and Industrial Aerodynamics,
107, 106–117, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib30"><label>Lyngaas et al.(2022)Lyngaas, Norman, and Kim</label><mixed-citation>
      
Lyngaas, I., Norman, M., and Kim, Y.: Sam++: Porting the e3sm-mmf cloud
resolving model using a c++ portability library, The International Journal of
High Performance Computing Applications, 36, 214–230, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib31"><label>Maronga et al.(2015)Maronga, Gryschka, Heinze, Hoffmann,
Kanani-Sühring, Keck, Ketelsen, Letzel, Sühring, and
Raasch</label><mixed-citation>
      
Maronga, B., Gryschka, M., Heinze, R., Hoffmann, F., Kanani-Sühring, F., Keck, M., Ketelsen, K., Letzel, M. O., Sühring, M., and Raasch, S.: The Parallelized Large-Eddy Simulation Model (PALM) version 4.0 for atmospheric and oceanic flows: model formulation, recent developments, and future perspectives, Geosci. Model Dev., 8, 2515–2551, <a href="https://doi.org/10.5194/gmd-8-2515-2015" target="_blank">https://doi.org/10.5194/gmd-8-2515-2015</a>, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib32"><label>Mason(1994)</label><mixed-citation>
      
Mason, P. J.: Large-eddy simulation: A critical review of the technique,
Quarterly Journal of the Royal Meteorological Society, 120, 1–26, 1994.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib33"><label>Mehta et al.(2014)Mehta, Van Zuijlen, Koren, Holierhoek, and
Bijl</label><mixed-citation>
      
Mehta, D., Van Zuijlen, A., Koren, B., Holierhoek, J., and Bijl, H.: Large Eddy
Simulation of wind farm aerodynamics: A review, Journal of Wind Engineering
and Industrial Aerodynamics, 133, 1–17, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib34"><label>Mirocha et al.(2018)Mirocha, Churchfield, Muñoz-Esparza, Rai,
Feng, Kosović, Haupt, Brown, Ennis, Draxl et al.</label><mixed-citation>
      
Mirocha, J. D., Churchfield, M. J., Muñoz-Esparza, D., Rai, R. K., Feng, Y., Kosović, B., Haupt, S. E., Brown, B., Ennis, B. L., Draxl, C., Sanz Rodrigo, J., Shaw, W. J., Berg, L. K., Moriarty, P. J., Linn, R. R., Kotamarthi, V. R., Balakrishnan, R., Cline, J. W., Robinson, M. C., and Ananthan, S.: Large-eddy simulation sensitivities to variations of configuration and forcing parameters in canonical boundary-layer flows for wind energy applications, Wind Energ. Sci., 3, 589–613, <a href="https://doi.org/10.5194/wes-3-589-2018" target="_blank">https://doi.org/10.5194/wes-3-589-2018</a>, 2018.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib35"><label>Monin and Obukhov(1954)</label><mixed-citation>
      
Monin, A. S. and Obukhov, A. M.: Basic laws of turbulent mixing in the surface
layer of the atmosphere, Contrib. Geophys. Inst. Acad. Sci. USSR, 151, e187, 163–187,
1954.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib36"><label>Morrison and Milbrandt(2011)</label><mixed-citation>
      
Morrison, H. and Milbrandt, J.: Comparison of two-moment bulk microphysics
schemes in idealized supercell thunderstorm simulations, Monthly Weather
Review, 139, 1103–1130, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib37"><label>Muñoz-Esparza et al.(2020)Muñoz-Esparza, Sauer, Shin,
Sharman, Kosović, Meech, García-Sánchez, Steiner, Knievel, Pinto
et al.</label><mixed-citation>
      
Muñoz-Esparza, D., Sauer, J. A., Shin, H. H., Sharman, R., Kosović, B.,
Meech, S., García-Sánchez, C., Steiner, M., Knievel, J., Pinto, J.,
and Swerdlin, S.: Inclusion of building-resolving capabilities into the
FastEddy® GPU-LES model using an immersed body force method,
Journal of Advances in Modeling Earth Systems, 12, e2020MS002141, <a href="https://doi.org/10.1029/2020MS002141" target="_blank">https://doi.org/10.1029/2020MS002141</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib38"><label>Muñoz-Esparza et al.(2022)Muñoz-Esparza, Sauer, Jensen, Xue,
and Grabowski</label><mixed-citation>
      
Muñoz-Esparza, D., Sauer, J. A., Jensen, A. A., Xue, L., and Grabowski,
W. W.: The FastEddy® resident-GPU accelerated large-eddy
simulation framework: Moist dynamics extension, validation and sensitivities
of modeling non-precipitating shallow cumulus clouds, Journal of Advances in
Modeling Earth Systems, 14, e2021MS002904, <a href="https://doi.org/10.1029/2021MS002904" target="_blank">https://doi.org/10.1029/2021MS002904</a>, 2022.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib39"><label>Norman(2025a)</label><mixed-citation>
      
Norman, M.: portUrb code, Zenodo [code], <a href="https://doi.org/10.5281/zenodo.15000787" target="_blank">https://doi.org/10.5281/zenodo.15000787</a>, 2025a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib40"><label>Norman(2025b)</label><mixed-citation>
      
Norman, M.: PortUrb: A Performance Portable, High-Order, Moist Atmospheric
Large Eddy Simulation Model with Variable-Friction Immersed Boundaries –
Dataset, Zenodo [data set], <a href="https://doi.org/10.5281/zenodo.15232629" target="_blank">https://doi.org/10.5281/zenodo.15232629</a>, 2025b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib41"><label>Norman and Larkin(2020)</label><mixed-citation>
      
Norman, M. and Larkin, J.: A holistic algorithmic approach to improving
accuracy, robustness, and computational efficiency for atmospheric dynamics,
SIAM Journal on Scientific Computing, 42, B1302–B1327, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib42"><label>Norman et al.(2023a)Norman, Lyngaas, Bagusetty, and
Berrill</label><mixed-citation>
      
Norman, M., Lyngaas, I., Bagusetty, A., and Berrill, M.: Portable C++ code that
can look and feel like Fortran code with Yet Another Kernel Launcher (YAKL),
International Journal of Parallel Programming, 51, 209–230,
2023a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib43"><label>Norman(2013a)</label><mixed-citation>
      
Norman, M. R.: Algorithmic improvements for schemes using the ADER time
discretization, Journal of Computational Physics, 243, 176–178,
2013a.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib44"><label>Norman(2013b)</label><mixed-citation>
      
Norman, M. R.: Targeting atmospheric simulation algorithms for large,
distributed-memory, GPU-accelerated computers, in: GPU Solutions to
Multi-scale Problems in Science and Engineering,  271–282, Springer, <a href="https://doi.org/10.1007/978-3-642-16405-7_17" target="_blank">https://doi.org/10.1007/978-3-642-16405-7_17</a>,
2013b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib45"><label>Norman(2014)</label><mixed-citation>
      
Norman, M. R.: A WENO-limited, ADER-DT, finite-volume scheme for efficient,
robust, and communication-avoiding multi-dimensional transport, Journal of
Computational Physics, 274, 1–18, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib46"><label>Norman(2020)</label><mixed-citation>
      
Norman, M. R.: miniWeather, Tech. rep., Oak Ridge National Laboratory (ORNL),
Oak Ridge, TN (United States), <a href="https://doi.org/10.2172/1480685" target="_blank">https://doi.org/10.2172/1480685</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib47"><label>Norman(2021)</label><mixed-citation>
      
Norman, M. R.: A high-order WENO-limited finite-volume algorithm for
atmospheric flow using the ADER-differential transform time discretization,
Quarterly Journal of the Royal Meteorological Society, 147, 1661–1690, 2021.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib48"><label>Norman and Finkel(2012)</label><mixed-citation>
      
Norman, M. R. and Finkel, H.: Multi-moment ADER-Taylor methods for systems of
conservation laws with source terms in one dimension, Journal of
Computational Physics, 231, 6622–6642, 2012.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib49"><label>Norman et al.(2011)Norman, Nair, and Semazzi</label><mixed-citation>
      
Norman, M. R., Nair, R. D., and Semazzi, F. H.: A low communication and large
time step explicit finite-volume solver for non-hydrostatic atmospheric
dynamics, Journal of Computational Physics, 230, 1567–1584, 2011.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib50"><label>Norman et al.(2023b)Norman, Eldred, and
Gopalakrishnan Meena</label><mixed-citation>
      
Norman, M. R., Eldred, C., and Gopalakrishnan Meena, M.: Investigating Inherent
Numerical Stabilization for the Moist, Compressible, Non-Hydrostatic Euler
Equations on Collocated Grids, Journal of Advances in Modeling Earth Systems,
15, e2023MS003732, <a href="https://doi.org/10.1029/2023MS003732" target="_blank">https://doi.org/10.1029/2023MS003732</a>, 2023b.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib51"><label>O'Neill and Klein(2014)</label><mixed-citation>
      
O'Neill, W. and Klein, R.: A moist pseudo-incompressible model, Atmospheric
research, 142, 133–141, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib52"><label>Pedersen et al.(2014)Pedersen, Gryning, and
Kelly</label><mixed-citation>
      
Pedersen, J. G., Gryning, S.-E., and Kelly, M.: On the structure and adjustment
of inversion-capped neutral atmospheric boundary-layer flows: Large-eddy
simulation study, Boundary-layer meteorology, 153, 43–62, 2014.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib53"><label>Pressel et al.(2015)Pressel, Kaul, Schneider, Tan, and
Mishra</label><mixed-citation>
      
Pressel, K. G., Kaul, C. M., Schneider, T., Tan, Z., and Mishra, S.: Large-eddy
simulation in an anelastic framework with closed water and entropy balances,
Journal of Advances in Modeling Earth Systems, 7, 1425–1456, 2015.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib54"><label>Prusa et al.(2008)Prusa, Smolarkiewicz, and
Wyszogrodzki</label><mixed-citation>
      
Prusa, J. M., Smolarkiewicz, P. K., and Wyszogrodzki, A. A.: EULAG, a
computational model for multiscale flows, Computers &amp; Fluids, 37,
1193–1207, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib55"><label>Sauer and Muñoz-Esparza(2020)</label><mixed-citation>
      
Sauer, J. A. and Muñoz-Esparza, D.: The FastEddy®
resident-GPU accelerated large-eddy simulation framework: Model formulation,
dynamical-core validation and performance benchmarks, Journal of Advances in
Modeling Earth Systems, 12, e2020MS002100, <a href="https://doi.org/10.1029/2020MS002100" target="_blank">https://doi.org/10.1029/2020MS002100</a>, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib56"><label>Shaw and Schumann(1992)</label><mixed-citation>
      
Shaw, R. H. and Schumann, U.: Large-eddy simulation of turbulent flow above and
within a forest, Boundary-Layer Meteorology, 61, 47–64, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib57"><label>Shobaki et al.(2020)Shobaki, Kerbow, and
Mekhanoshin</label><mixed-citation>
      
Shobaki, G., Kerbow, A., and Mekhanoshin, S.: Optimizing occupancy and ILP on
the GPU using a combinatorial approach, in: Proceedings of the 18th ACM/IEEE
International Symposium on Code Generation and Optimization, Association for Computing Machinery (ACM), 133–144, doi10.1145/3368826.3377918,
2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib58"><label>Skamarock and Klemp(1992)</label><mixed-citation>
      
Skamarock, W. C. and Klemp, J. B.: The stability of time-split numerical
methods for the hydrostatic and the nonhydrostatic elastic equations, Monthly
Weather Review, 120, 2109–2127, 1992.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib59"><label>Skamarock and Klemp(2008)</label><mixed-citation>
      
Skamarock, W. C. and Klemp, J. B.: A time-split nonhydrostatic atmospheric
model for weather research and forecasting applications, Journal of
computational physics, 227, 3465–3485, 2008.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib60"><label>Skamarock et al.(2019)Skamarock, Klemp, Dudhia, Gill, Liu, Berner,
Wang, Powers, Duda, Barker et al.</label><mixed-citation>
      
Skamarock, W. C., Klemp, J. B., Dudhia, J., Gill, D. O., Liu, Z., Berner, J.,
Wang, W., Powers, J. G., Duda, M. G., Barker, D. M., and Huang, X. Y.: A description of
the advanced research WRF version 4, NCAR tech. note ncar/tn-556+ str, 145, University Corporation for Atmospheric Research (UCAR), <a href="https://doi.org/10.5065/1dfh-6p97" target="_blank">https://doi.org/10.5065/1dfh-6p97</a>,
2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib61"><label>Stevens et al.(1998)Stevens, Cotton, Feingold, and
Moeng</label><mixed-citation>
      
Stevens, B., Cotton, W. R., Feingold, G., and Moeng, C.-H.: Large-eddy
simulations of strongly precipitating, shallow, stratocumulus-topped boundary
layers, Journal of the atmospheric sciences, 55, 3616–3638, 1998.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib62"><label>Stoll et al.(2020)Stoll, Gibbs, Salesky, Anderson, and
Calaf</label><mixed-citation>
      
Stoll, R., Gibbs, J. A., Salesky, S. T., Anderson, W., and Calaf, M.:
Large-eddy simulation of the atmospheric boundary layer, Boundary-Layer
Meteorology, 177, 541–581, 2020.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib63"><label>Tomas et al.(2016)Tomas, Pourquie, and Jonker</label><mixed-citation>
      
Tomas, J., Pourquie, M., and Jonker, H.: Stable stratification effects on flow
and pollutant dispersion in boundary layers entering a generic urban
environment, Boundary-Layer Meteorology, 159, 221–239, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib64"><label>Trott et al.(2021)Trott, Berger-Vergiat, Poliakoff, Rajamanickam,
Lebrun-Grandie, Madsen, Al Awar, Gligoric, Shipman, and
Womeldorff</label><mixed-citation>
      
Trott, C., Berger-Vergiat, L., Poliakoff, D., Rajamanickam, S., Lebrun-Grandie,
D., Madsen, J., Al Awar, N., Gligoric, M., Shipman, G., and Womeldorff, G.:
The kokkos ecosystem: Comprehensive performance portability for high
performance computing, Computing in Science &amp; Engineering, 23, 10–18, 2021.


    </mixed-citation></ref-html>
<ref-html id="bib1.bib65"><label>Van Heerwaarden et al.(2017)Van Heerwaarden, Van Stratum, Heus,
Gibbs, Fedorovich, and Mellado</label><mixed-citation>
      
van Heerwaarden, C. C., van Stratum, B. J. H., Heus, T., Gibbs, J. A., Fedorovich, E., and Mellado, J. P.: MicroHH 1.0: a computational fluid dynamics code for direct numerical simulation and large-eddy simulation of atmospheric boundary layer flows, Geosci. Model Dev., 10, 3145–3165, <a href="https://doi.org/10.5194/gmd-10-3145-2017" target="_blank">https://doi.org/10.5194/gmd-10-3145-2017</a>, 2017.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib66"><label>Weisman and Klemp(1982)</label><mixed-citation>
      
Weisman, M. L. and Klemp, J. B.: The dependence of numerically simulated
convective storms on vertical wind shear and buoyancy, Monthly Weather
Review, 110, 504–520, 1982.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib67"><label>Weisman and Rotunno(2000)</label><mixed-citation>
      
Weisman, M. L. and Rotunno, R.: The use of vertical wind shear versus helicity
in interpreting supercell dynamics, Journal of the atmospheric sciences, 57,
1452–1472, 2000.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib68"><label>Weller et al.(2013)Weller, Lock, and Wood</label><mixed-citation>
      
Weller, H., Lock, S.-J., and Wood, N.: Runge–Kutta IMEX schemes for the
horizontally explicit/vertically implicit (HEVI) solution of wave equations,
Journal of Computational Physics, 252, 365–381, 2013.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib69"><label>Xie and Castro(2009)</label><mixed-citation>
      
Xie, Z.-T. and Castro, I. P.: Large-eddy simulation for flow and dispersion in
urban streets, Atmospheric Environment, 43, 2174–2185, 2009.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib70"><label>Zarzycki et al.(2019)Zarzycki, Jablonowski, Kent, Lauritzen, Nair,
Reed, Ullrich, Hall, Taylor, Dazlich et al.</label><mixed-citation>
      
Zarzycki, C. M., Jablonowski, C., Kent, J., Lauritzen, P. H., Nair, R., Reed, K. A., Ullrich, P. A., Hall, D. M., Taylor, M. A., Dazlich, D., Heikes, R., Konor, C., Randall, D., Chen, X., Harris, L., Giorgetta, M., Reinert, D., Kühnlein, C., Walko, R., Lee, V., Qaddouri, A., Tanguay, M., Miura, H., Ohno, T., Yoshida, R., Park, S.-H., Klemp, J. B., and Skamarock, W. C.: DCMIP2016: the splitting supercell test case, Geosci. Model Dev., 12, 879–892, <a href="https://doi.org/10.5194/gmd-12-879-2019" target="_blank">https://doi.org/10.5194/gmd-12-879-2019</a>, 2019.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib71"><label>Zhang et al.(2016)Zhang, Du, and Miao</label><mixed-citation>
      
Zhang, N., Du, Y., and Miao, S.: A microscale model for air pollutant
dispersion simulation in urban areas: Presentation of the model and
performance over a single building, Advances in Atmospheric Sciences, 33,
184–192, 2016.

    </mixed-citation></ref-html>
<ref-html id="bib1.bib72"><label>Zhang et al.(2019)Zhang, Almgren, Beckner, Bell, Blaschke, Chan, Day,
Friesen, Gott, Graves et al.</label><mixed-citation>
      
Zhang, W., Almgren, A., Beckner, V., Bell, J., Blaschke, J., Chan, C. Y., Day, M.,
Friesen, B., Gott, K., Graves, D., Katz, M., Myers, A., Nguyen, T., Nonaka, A., Rosso, M., Williams, S., and Zingale, M.: AMReX: a framework for
block-structured adaptive mesh refinement, The Journal of Open Source
Software, 4, 1370, <a href="https://doi.org/10.21105/joss.01370" target="_blank">https://doi.org/10.21105/joss.01370</a>, 2019.

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